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