![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы
![]() |
Поиск в этой теме
![]() |
![]() |
#1 |
Регистрация: 28.06.2013
Сообщений: 3
|
![]()
Помогите доработать программу. Вот рабочая:
Программа microPascal.pas иллюстрирует организацию компилятора для грамматического разбора и генерации кода для языка арифметических выражений. В файле microPascal.exe компилятор представлен в готовом виде (Delphi). Грамматика F -> I | ( E ) Фактор T -> F { * F } Терм E -> T { + T } Выражение P -> E = Программа I -> L { L | D } Идентификатор L - прописная или строчная буква лат. алфавита. D - десятичная цифра. Идентификаторы различаются по первым восьми литерам. Распознавание идентификаторов выполняется средствами лексического анализатора. Грамматический разбор Грамматический разбор выполняется по методу рекурсивного спуска. В результате строится семантическое дерево арифметического выражения. Генерация кода Код строится по семантическому дереву. Код:
c1 * (data + X) = output.txt c1 * (data + X) = Success compilation. Semantic tree: pt = 2 2 * 1 4 1 c1 4 + 3 5 3 data 5 X Program: LDA c1 STA @1 LDA data STA @2 LDA X ADD @2 MUL @1 |
![]() |
![]() |
![]() |
#2 |
Регистрация: 28.06.2013
Сообщений: 3
|
![]()
А теперь надо расширить функционал программы добавив:
1. Возможность использовать целые числа b*(a+1) - (без знака) 2. Включить понятие "оператор присвоения" A -> I = E ; 3. Заменить понятие "программа" на: P -> { A } # Короче говоря в результате должно быть: в файле input.txt записываем a = 4; b = ( a + 1 ) * 3; # после компиляции, а потом запуска microPascal.exe, в файле output.txt должны увидеть: a = 4; b = ( a + 1 ) * 3; # Success compilation. Semantic tree: (тут должно построиться семантическое дерево) Program: LDA #1 STA a LDA a ADD #1 MUL #3 STA b HLT |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Нужно доработать программу на Delphi | pauk25 | Фриланс | 1 | 23.05.2013 23:02 |
Нужно доработать программу на qt. | slipokorn | Qt и кроссплатформенное программирование С/С++ | 2 | 26.03.2013 12:53 |
Нужно доработать программу. | Сергей Запорожский | Паскаль, Turbo Pascal, PascalABC.NET | 1 | 11.01.2013 18:02 |
Нужно доработать программу | Andy_G | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 0 | 21.11.2012 23:37 |