Курсовая работа: Разработка программы-компилятора
<имя>→<буква>{<буква>|<цифра>’_’}
<буква>→ (’a’. ’z’)
<цифра>→ (‘0’. ’9’)
Грамматика для констант:
<константа>→<16-рич. константа>|<римск. константа>
Для 16-ричных констант:
<16-рич. константа>→ (‘$+’,’$-‘) (<цифра>, ‘A’. ’F’) { (<цифра>,‘A’. ’F’) }
Для римских констант:
2.3 Разработка автоматов, работающих по правилам грамматики
2.3.1 Автомат для распознавания имён
рис.1. Автомат для распознавания имён
Состояния автомата:
S - начальное состояние;
1 - промежуточное состояние, соответствующее продолжению формирования имени;
2 - конечное состояние, соответствующее выделению правильного идентификатора;
3 - конечное состояние, соответствующее ошибке при выделении идентификатора.
2.3.2 Автомат для распознавания 16-ричных констант
рис.3. Автомат для распознавания 16-ричных констант
Состояния автомата:
S - начальное состояние;
1 - промежуточное состояние, обозначающее, что распознан символ начала константы ‘$’;
2 - промежуточное состояние, обозначающее, что распознан знак константы, и продолжение формирования константы;
3 - конечное состояние, соответствующее выделению правильной 16-ричной константы;
4 - конечное состояние, соответствующее ошибке при выделении 16-ричной константы.
2.3.3 Автомат для распознавания римских констант
Римские константы образуются по следующим правилам:
Римская система нумерации состоит из семи знаков: I - 1, V - 5, X - 10, C - 100, D - 500, M - 1000. В данной работе используются только три первых знака, т.е. автомат может распознавать числа от 1 (I) до 39 (XXXIX).