Имя автомата |
Имя группы слов |
Регулярное выражение |
Действие |
Примечание |
main |
startcomm |
[}] |
конец блока |
|
main |
startblok |
[{] |
stack.push(lexAcceptor);lexAcceptor=lexAcceptors[findAutomat("blok")]; |
начало блока |
main |
comm |
other+ |
ignoreLastWord=true; |
комментарии |
blok |
op2 |
[*/] |
знаки операций умножения и деления |
|
blok |
otn |
([><]|([>][=])|([<][=])|([=][=])) |
знаки отношений |
|
blok |
braket |
[()] |
круглые скобки |
|
blok |
UseLessWord |
[ \r\t\n]+ |
ignoreLastWord=true; |
символы форматирования |
blok |
op1 |
[-+] |
знаки операций сложения и вычитания |
|
blok |
Delimiter |
[;:,] |
специлаьные символы(разделители) |
|
blok |
const1 |
[0-9]+[.]([0-9])+ |
if(constHash.get(Lexem.textOfWord.toString()) == null){Lexem.wordIndex = constCnt++; constHash.put(Lexem.textOfWord.toString(),Lexem);} |
вещественная константа |
blok |
startzag |
[{] |
stack.push(lexAcceptor);lexAcceptor=lexAcceptors[findAutomat("blok")]; |
открывающаяся фигурная скобка (начало заголовка или вложенного блока операторов) |
blok |
endblok |
[}] |
lexAcceptor=(fAutomat)stack.pop(); |
закрывающаяся фигурная скобка(конец заголовка или вложенного блока операторов) |
blok |
in |
[_][i][_] |
идентификатор входа |
|
blok |
out |
[_][o][_] |
идентификатор выхода |
|
blok |
sv |
[-][>] |
оператор передачи |
|
blok |
ident |
[a-zA-Z][0-9a-zA-Z]* |
if(my.GTNB() == false){if(identHash.get(Lexem.textOfWord.toString()) == null && defHash.get(Lexem.textOfWord.toString()) == null){Lexem.wordIndex = my.GetCnt(); my.IncCnt(); identHash.put(Lexem.textOfWord.toString(),Lexem);}} |
идентификатор |
blok |
const2 |
[0-9]+ |
if(my.GTNB() == false){if(constHash.get(Lexem.textOfWord.toString()) == null){Lexem.wordIndex = constCnt++; constHash.put(Lexem.textOfWord.toString(),Lexem);}} |
целая константа |
blok |
nameblock |
[a-zA-Z0-9]+ |
имя блока |
|
Для заданного варианта языка была разработана следующая грамматика.
Полученная грамматика относится к классу LL(1)-грамматик и, соответственно, является и LALR(1)-грамматикой.
Данная таблица отражает не окончательную версию разработанной грамматики.
Результат окончательной работы не удалось вставит в данную записку, поэтому он приводится в файле block_40.xml.
Но существенных изменений в самой грамматики в связи с внесением в неё действий по формированию пентад и семантическому анализу не внесено.
Синтаксис
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.