Формальные языки, грамматики и основы построения трансляторов. Кревский И.Г - 32 стр.

UptoLike

32
Регулярные выражения эквивалентны грамматикам типа 3. Например,
грамматика типа 3, соответствующая регулярному выражению для
вещественного числа, имеет порождающие правила:
R
+S | -S | dQ
S
dQ
Q
dQ | .F | .
F
d | dF
где R - начальный символ, d цифра.
Существует полное соответствие между регулярными выражениями (а
потому и грамматиками типа 3) и конечными автоматами, более подробно
рассмотренными в следующей главе.
Некоторые лексемы (например, *) могут быть распознаны по одному
считанному символу, другие (такие, как :=) – по двум символам, а для
идентификации третьих необходимо прочитать неизвестное
заранее число
символов (например, код константы). В последнем случае, чтобы найти
конец лексемы, приходится считывать один лишний символ, не входящий в
состав данной лексемы. Этот символ необходимо запоминать, чтобы при
разборе следующей лексемы он не был утерян.
Лексический анализатор, наряду с разбиением исходного потока
символов на лексемы, может включать в исходный
текст дополнительную
информацию или исключать из него строки символов. Примером
дополнительно включаемой информации являются номера строк. Если их не
включить, то информация о том, в какой строке исходного текста находилась
та или иная лексема, будет, в случае выполняющего сканирование в
отдельном проходе компилятора, утеряна после лексического анализа.
Однако для диагностики
на фазе синтаксического анализа необходимо иметь
возможность ссылаться на ошибки в программе с указанием номеров строк
оригинального исходного текста. С другой стороны, комментарии
включаются в текст программы или описания объекта проектирования
только для предоставления человеку дополнительных пояснений. Они никак
                                                                               32
     Регулярные выражения эквивалентны грамматикам типа 3. Например,
грамматика    типа     3,   соответствующая       регулярному    выражению    для
вещественного числа, имеет порождающие правила:
     R → +S | -S | dQ
     S → dQ
     Q → dQ | .F | .
     F → d | dF
     где R - начальный символ, d – цифра.
     Существует полное соответствие между регулярными выражениями (а
потому и грамматиками типа 3) и конечными автоматами, более подробно
рассмотренными в следующей главе.
     Некоторые лексемы (например, *) могут быть распознаны по одному
считанному символу, другие (такие, как :=) – по двум символам, а для
идентификации третьих необходимо прочитать неизвестное заранее число
символов (например, код константы). В последнем случае, чтобы найти
конец лексемы, приходится считывать один лишний символ, не входящий в
состав данной лексемы. Этот символ необходимо запоминать, чтобы при
разборе следующей лексемы он не был утерян.
     Лексический анализатор, наряду с разбиением исходного потока
символов на лексемы, может включать в исходный текст дополнительную
информацию      или    исключать    из    него    строки    символов.   Примером
дополнительно включаемой информации являются номера строк. Если их не
включить, то информация о том, в какой строке исходного текста находилась
та или иная лексема, будет, в случае выполняющего сканирование в
отдельном проходе компилятора, утеряна после лексического анализа.
Однако для диагностики на фазе синтаксического анализа необходимо иметь
возможность ссылаться на ошибки в программе с указанием номеров строк
оригинального     исходного     текста.   С      другой    стороны,   комментарии
включаются в текст программы или описания объекта проектирования
только для предоставления человеку дополнительных пояснений. Они никак