Составители:
12
Правила грамматики в нормальной форме Бекуса-Наура:
W= <программа> ::= BEGIN <последовательность операторов> END
L= <последовательность операторов> ::= <оператор>|
<оператор>;<последовательность операторов>
S= <оператор> ::= <идентификатор>:=<выражение> |
OUTPUT(<выражение>) |
WHILE <условие> DO <последовательность операторов> ENDDO |
IF <условие> THEN <последовательность операторов> ENDIF |
IF <условие> THEN <последовательность операторов>
ELSE <последовательность операторов> ENDIF
B = <условие> ::= <выражение> <знак отношения> <выражение>
E= <выражение> ::= <терм> | <операция типа сложения> <терм> |
<терм> <операция типа сложения> <терм> |
<операция типа сложения> <терм><операция типа сложения><терм>
T=<терм> ::= <множитель> | <множитель> <операция типа умножения> <множитель>
P=<множитель> ::= <идентификатор> | <константа> | READ | (<выражение>)
I=<идентификатор> ::= <буква> | <идентификатор> <буква> |
<идентификатор> <цифра>
K=<константа> ::= <цифра> | <константа> <цифра>
O=<знак отношения> ::= > | < | >= | <= | = |<>
M=<операция типа умножения> ::= * | /
N=<операция типа сложения> ::= + | -
A= <буква> ::= a | b | ...| z
C= <цифра> ::= 0 | 1 | ...| 9
Данная грамматика недостаточно полно описывает синтаксис входной
программы. Например, ключевые слова являются цепочками символов, хотя в
языке это терминалы, между словами языка в тексте может быть произвольное
количество пробелов и т.д.
Для устранения этих проблем предложения исходной программы
удобнее представлять в виде последовательности лексем - элементов языка,
внутреннее строение которых несущественно при синтаксическом анализе.
Например, лексемой может быть ключевое слово, имя переменной,
константа и т.д. Просмотр исходного текста программы, распознавание и
классификация различных лексем называется лексическим анализом.
2.2. Лексический анализатор
Часть транслятора, которая выполняет лексический анализ, называется
лексическим анализатором. Лексический анализатор воспринимает исходный
текст программы и преобразует его в последовательность лексем -
промежуточный язык, удобный для синтаксического анализа. Кроме этого,
лексический анализатор строит таблицы (массивы) идентификаторов и
констант. Таким образом, основными функциями лексического анализатора
являются: построение последовательности лексем; построение таблицы
идентификаторов; построение таблицы констант; расстановка ссылок для
передачи управления.
Для повышения эффективности последующих действий лексемы обычно
представляются в виде пары (код, значение). На этапе синтаксического анализа
используется первая компонента пары - код. Вторая компонента - значение,
Правила грамматики в нормальной форме Бекуса-Наура: W= <программа> ::= BEGIN <последовательность операторов> END L= <последовательность операторов> ::= <оператор>| <оператор>;<последовательность операторов> S= <оператор> ::= <идентификатор>:=<выражение> | OUTPUT(<выражение>) | WHILE <условие> DO <последовательность операторов> ENDDO | IF <условие> THEN <последовательность операторов> ENDIF | IF <условие> THEN <последовательность операторов> ELSE <последовательность операторов> ENDIF B = <условие> ::= <выражение> <знак отношения> <выражение> E= <выражение> ::= <терм> | <операция типа сложения> <терм> | <терм> <операция типа сложения> <терм> | <операция типа сложения> <терм> <операция типа сложения><терм> T=<терм> ::= <множитель> | <множитель> <операция типа умножения> <множитель> P=<множитель> ::= <идентификатор> | <константа> | READ | (<выражение>) I=<идентификатор> ::= <буква> | <идентификатор> <буква> | <идентификатор> <цифра> K=<константа> ::= <цифра> | <константа> <цифра> O=<знак отношения> ::= > | < | >= | <= | = |<> M=<операция типа умножения> ::= * | / N=<операция типа сложения> ::= + | - A= <буква> ::= a | b | ...| z C= <цифра> ::= 0 | 1 | ...| 9 Данная грамматика недостаточно полно описывает синтаксис входной программы. Например, ключевые слова являются цепочками символов, хотя в языке это терминалы, между словами языка в тексте может быть произвольное количество пробелов и т.д. Для устранения этих проблем предложения исходной программы удобнее представлять в виде последовательности лексем - элементов языка, внутреннее строение которых несущественно при синтаксическом анализе. Например, лексемой может быть ключевое слово, имя переменной, константа и т.д. Просмотр исходного текста программы, распознавание и классификация различных лексем называется лексическим анализом. 2.2. Лексический анализатор Часть транслятора, которая выполняет лексический анализ, называется лексическим анализатором. Лексический анализатор воспринимает исходный текст программы и преобразует его в последовательность лексем - промежуточный язык, удобный для синтаксического анализа. Кроме этого, лексический анализатор строит таблицы (массивы) идентификаторов и констант. Таким образом, основными функциями лексического анализатора являются: построение последовательности лексем; построение таблицы идентификаторов; построение таблицы констант; расстановка ссылок для передачи управления. Для повышения эффективности последующих действий лексемы обычно представляются в виде пары (код, значение). На этапе синтаксического анализа используется первая компонента пары - код. Вторая компонента - значение, 12
Страницы
- « первая
- ‹ предыдущая
- …
- 10
- 11
- 12
- 13
- 14
- …
- следующая ›
- последняя »