Для построения МП – автомата нам необходимо знать множество ВЫБОР для каждого правила грамматики ( множество ВЫБОР для правила грамматики показывает, с какого символа может начинаться оставшаяся часть цепочки на входной ленте, в выводе которой участвует это правило). Приведем множества ВЫБОР для каждого правила грамматики.
Правило |
Выбор |
TYPE → integer |
integer |
TYPE → float |
float |
TYPE → label |
label |
vardef → DIM <identifier> as type ; |
<identifier> |
vardefs → vardef vardefs |
<identifier> |
vardefs → end |
end |
defs → vars vardefs |
vars |
binop → + |
+ |
binop → - |
- |
binop → * |
* |
binop → / |
/ |
condition → < |
< |
condition → > |
> |
condition → = |
= |
condition → <> |
<> |
condition → <= |
<= |
condition → >= |
>= |
EXPRESSION → <const> EXPRESSION’ |
<const> |
EXPRESSION → - expression EXPRESSION’ |
- |
EXPRESSION → <identifier> EXPRESSION’ |
<identifier> |
EXPRESSION → ( expression ) EXPRESSION’ |
( |
EXPRESSION’ → binop expression EXPRESSION’ |
+ - * / |
EXPRESSION’ → λ |
; ) < > = <> <= >= |
ELSE → else operators |
else |
ELSE → λ |
<identifier> while input outputn outputs goto label end |
operator → <identifier> := expression ; |
<identifier> |
operator → while ( expression condition expression ) do operators |
while |
operator → input <dentifier> ; |
input |
operator → outputn expression ; |
outputn |
operator → outputs <strc> ; |
outputs |
operator → goto <dentifier> ; |
goto |
operator → label <dentifier> ; |
label |
operator → if ( expression condition expression ) then operators ELSE |
if |
operators → operator operators |
<dentifier> while input outputn outputs goto label if |
operators → end |
end |
operators → break |
break |
operators → continue |
continue |
code → code operators |
code |
program → defs code ; |
vars |
Множества выбора для альтернативных правил не имеют общих символов, значит грамматика является LL(1) грамматикой.
Полученный МП-автомат приведён в Приложении (Таблица 1, Таблица 2)
Разберем программу, чтобы проверить работоспособность полученного МП-распознавателя. (см. Приложение Таблица 3).
Для работоспособности программы необходимы технические средства – компьютер, содержащий:
· процессор не ниже i286;
· память не меньше 640Kb;
· устройство ввода – клавиатура.
На компьютере должна быть установлена операционная система Windows 9x/ME/NT/2000/XP или MS-DOS версии 5.0 или выше. Запуск приложения осуществляется с помощью исполняемого файла TRAN.exe.
Файлы:
- in_prost.txt – текст программы на языке PROST
- mystack.h – подключаемый файл для реализации стека
- syntax.cpp – подключаемый файл для реализации синтаксического анализа и перевода на язык С++.
Выходные данные –трансляция программы на язык С++, out_cpp.cpp.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.