|
0 / 0 / 0
Регистрация: 18.03.2019
Сообщений: 689
|
|
Разработать программу лексического анализа для языка программирования04.09.2020, 21:20. Показов 3705. Ответов 4
Метки нет (Все метки)
Подскажите, пожалуйста, как делать вообще данное задание на С++?
Необходимо разработать программу по выполнению лексического анализа для языка программирования, удовлетворяющего ниже перечисленным требованиям. Упрощенный язык программирования должен обязательно включать: 1. Оператор присваивания "=" и только одну из следующих арифметических операций: + ( сложение ), - ( вычитание ), * ( умножение ), / ( деление ), ++ ( логическое сложение ), ** ( логическое умножение), %% ( сложение по модулю 2). 2. Один из следующих операторов: • оператор цикла, построенный в соответствии с предложенным синтаксисом конструкции: FOR <имя параметра цикла>=m TO n <тело цикла> NEXT; • оператор цикла, построенный в соответствии с предложенным синтаксисом конструкции: FOR <имя параметра цикла>=m TO n DO BEGIN <тело цикла> END; • условный оператор, построенный в соответствии с предложенным синтаксисом конструкции: IF <условие> THEN BEGIN <операторы> END; здесь <условие> задается одной из форм: a<b, либо a=b, либо a>b; • оператор процедуры, построенный в соответствии с предложенным синтаксисом конструкции: PROCEDURE <имя процедуры> BEGIN <тело процедуры> END для вызова процедуры используется оператор CALL <имя процедуры>; 3. Оператор вывода переменных WRITE ( <список переменных через запятую> ); 4. Программа языка имеет структуру VAR <список переменных через запятую >: INTEGER BEGIN <операторы программы> END
0
|
|
| 04.09.2020, 21:20 | |
|
Ответы с готовыми решениями:
4
ЛЕКСИЧЕСКОГО АНАЛИЗА ТРАНСЛЯТОРОВ ЯЗЫКОВ ПРОГРАММИРОВАНИЯ Написать программу – оконное приложение, реализующее функцию лексического анализа Разработать программу для сравнительного графического анализа алгоритмов сортировки и поиска |
|
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
|
||||||
| 05.09.2020, 00:06 | ||||||
|
Задачка довольно интересная. Я бы сказал, даже со * звездочкой.
Могу предложить базовый пример парсера из книги Язык С++ ПРОГРАММИРОВАНИЯ Bjarne Stroustrup. На его основе можно добиться выполнения Ваших задач. Поставляется КАК ЕСТЬ . code : Кликните здесь для просмотра всего текста
пример входного файла и результат : input.txt : Кликните здесь для просмотра всего текста
r=2.5 area = pi*r*r; bad_line=45)123 el=45+345.12354; t=5/0; result.txt : Кликните здесь для просмотра всего текста
1: 2.5 2: 19.635 error: bad token. At line : 3 4: 390.124 error: Zero Divided. At line : 5 Искренне желаю удачи.
0
|
||||||
|
Модератор
|
|||||||||||
| 05.09.2020, 04:53 | |||||||||||
|
Катя6, лексический анализ - это выделение в тексте лексем ( "слов" ) языка,
и определение, к кому классу лексем ( "части речи" ) они относятся. Пропуск ( игнорирование ) ничего не обозначающих последовотельностей букв и знаков ( например, комментариев и цепочек пробелов ). А также диагностика ошибок, выявление последовательностей символов, которые не могут быть правильными словами языка ( содержат недопустимые символы или недопустимые последовательности допустимых букв ). ( К "словам" языков программирования относятся и таки "составные" знаки, как ++, :=, -> и т.п. ) В приведённом SmallEvil, примере это приблизительно то, чем занимается Lexer.Например лексический анализатор с++ мог бы выделить в следующем тексте
Но для начала нужно уточнить правила языка, который Вы будете разбирать. Определиться с алфавитом языка : допустимы в нём смайлики или нет ? А если допустимы, то можно ли их использовать в именах параметров циклов и процедур. Ещё желательно уточнить, по какому курсу это задание. Это просто упражнение по c++ или предполагается дальнейшее развитие проекта на основе выполненного лексического анализатора?
0
|
|||||||||||
|
0 / 0 / 0
Регистрация: 18.03.2019
Сообщений: 689
|
|
| 05.09.2020, 21:06 [ТС] | |
|
politoto, Ну я думаю, что про смайлики не нужно ничего придумывать в этом задании, потому что там нет об этом ничего. Задание это по курсу "Теория автоматов, формальных языков и транляции". И да, это просто упражнение по с++ из лабораторной работы
0
|
|
|
Модератор
|
|||||||
| 06.09.2020, 12:40 | |||||||
|
Если курс "формальных языков и транляции", а не просто программирования на с++, то за этой работой могут последовать работа по синтаксическому анализу, а за ней другая, и вся серия лабораторных работ может завершиться курсовой работой по разработке упрощённого компилятора или интерпретатора упрощённого языка.
Поэтому к этой работе есть смысл подготовиться с учётом возможного продолжения.
<операторы программы>, <список переменных через запятую >, <тело процедуры>, <операторы>, тело цикла>, <имя параметра цикла>,<имя процедуры>.А для реализации класса лексического анализатора нужно, как минимум, знать, какие лексемы могут встретиться в этих конструкциях. Так, из требования 4 очевидно, что в языке есть лексемы VAR, INTEGER, BEGIN, END, :, а также все те лексемы, которые могут встретиться в конструкциях <список переменных через запятую > и <операторы программы>.Кратко, но полно описав правила языка, для удобства отладки и тестирования можно написать несколько примерных программ на упрощенном языке так, чтобы в них использовались все правила языка. И несколько программ, в которых эти Например, такую тестовую программку:
0
|
|||||||
| 06.09.2020, 12:40 | |
|
Помогаю со студенческими работами здесь
5
Разработать имитационную программу для анализа работы склада в течение календарного года Друзья, подскажите где найти исходник лексического анализатора для языка C++! С помощью языка программирования С++ разработать тестовую оболочку
Приемы лексического анализа введенного текста Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной записи. . .
|
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений.
9TO2GP2bpX4
a42b81fb172ffc12ca589c7898261ccb/
https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/
Слева синяя линия -. . .
|
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. .
Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
|
Контроль уникальности заводского номера - вариант №2
Maks 24.03.2026
В отличие от предыдущего варианта добавлено прерывание циклов, также добавлены новые переменные для сохранения контекста ошибки перед прерыванием цикла:
Процедура ПередЗаписью(Отказ, РежимЗаписи,. . .
|
|
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога
Финальные проекты на Си и на C++:
finish-text-sdl3-c. zip
finish-text-sdl3-cpp. zip
|
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
|
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo
Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло.
Но на выплатах по больничным это. . .
|
Контроль уникальности заводского номера - вариант №1
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере документа выдачи шин для спецтехники с табличной частью в конфигурации КА2. Данные берутся из регистра сведений, по. . .
|