Как обработка синтаксических ошибок предполагает использование синтаксического анализатора и лексического анализатора? - PullRequest
0 голосов
/ 17 июня 2020

Я немного запутался в этом вопросе. Кто-нибудь, пожалуйста, поясните: «Как обработка синтаксических ошибок предполагает использование парсера и лексического анализатора?» Синтаксическая ошибка в основном обрабатывается на этапе синтаксического анализа компилятора, так как же тогда лексический анализатор помогает синтаксическому анализатору в обработке синтаксической ошибки.

1 Ответ

1 голос
/ 17 июня 2020

Думаю, вы немного запутались в том, что такое функция лексера. Лексический анализатор преобразует программу в токены:

while (1)

становится

<TOK_WHILE> <TOK_LPAREN> <TOK_NUM, 1> <TOK_RPAREN>

Конечно, лексическое выражение может обнаруживать ошибки (например, неожиданные символы (символ не входит в набор распознаваемых символов). )), но он не может обнаруживать синтаксические c ошибки, если дизайн не отличается от традиционных лексических анализаторов (как упомянул @Marquis of Lorne). Короче говоря, все, что делает лексический анализатор (в большинстве случаев), - это преобразование потока символов (программы) в токены из парсера для проверки синтаксических ошибок (и в большинстве случаев построения дерева синтаксического анализа et c.).

...