ВУЗ:
Составители:
33
не влияют на генерируемый в дальнейшем код, и лексический анализатор
обычно их просто исключает.
Пример структуры программы сканирования
Пусть реализуемый язык состоит только из оператора присваивания.
БНФ языка:
<Присваивание> ::= <Идент> = <Выражение>
Правило показывает, что в левой части присваивания – идентификатор,
далее следует символ присваивания (=), справа – выражение;
<Выражение> ::= <Операнд> | <Операнд> <Бин
.оп> <Выражение>
Выражение – это операнд, или операнд, за которым следует бинарная
операция и выражение;
<Бин.оп> ::= "-" | "+" | "*" | "/"
Бинарная операция – символ арифметической операции "-", "+","*" или
"/";
<Операнд> ::= <Идент> | <Cons>
Операнд – это идентификатор или константа;
<Идент> ::= <Буква>
Идентификатор состоит из одной буквы;
<Const> ::= <Цифра> <Const> | <Цифра>
Константа – последовательность цифр, состоящая хотя бы из одной
цифры.
Лексический
анализатор преобразует исходную программу в
последовательность символов. Для удобства дальнейшей обработки лексем
их разбивают на классы. В данном случае можно выделить следующие
классы лексем:
1 – идентификатор;
2 – константа;
3 – символ присваивания;
33 не влияют на генерируемый в дальнейшем код, и лексический анализатор обычно их просто исключает. Пример структуры программы сканирования Пусть реализуемый язык состоит только из оператора присваивания. БНФ языка: <Присваивание> ::= <Идент> = <Выражение> Правило показывает, что в левой части присваивания – идентификатор, далее следует символ присваивания (=), справа – выражение; <Выражение> ::= <Операнд> | <Операнд> <Бин.оп> <Выражение> Выражение – это операнд, или операнд, за которым следует бинарная операция и выражение; <Бин.оп> ::= "-" | "+" | "*" | "/" Бинарная операция – символ арифметической операции "-", "+","*" или "/"; <Операнд> ::= <Идент> |Операнд – это идентификатор или константа; <Идент> ::= <Буква> Идентификатор состоит из одной буквы; ::= <Цифра> | <Цифра> Константа – последовательность цифр, состоящая хотя бы из одной цифры. Лексический анализатор преобразует исходную программу в последовательность символов. Для удобства дальнейшей обработки лексем их разбивают на классы. В данном случае можно выделить следующие классы лексем: 1 – идентификатор; 2 – константа; 3 – символ присваивания;
Страницы
- « первая
- ‹ предыдущая
- …
- 31
- 32
- 33
- 34
- 35
- …
- следующая ›
- последняя »