Как сообщить об ошибке анализатора синтаксиса в C ++? - PullRequest
0 голосов
/ 20 июня 2020

Привет, я сейчас делаю анализатор синтаксиса на C ++

Используя таблицу DFA, я уже реализовал анализ синтаксиса.

И мне нужно распечатать отчет об ошибке, когда у нас есть ошибка (ошибка строка, и что такое ошибка)

Теперь моя программа просто знает, что у нас есть ошибка. (когда таблица dfa пуста в этом состоянии)

Я понятия не имею о как узнать тип синтаксической ошибки в моем коде ввода (пример), строка 11: отсутствует rparen)

Помогите мне

1 Ответ

0 голосов
/ 20 июня 2020

Итак, чтобы сделать это, вы должны оснастить свой лексический анализатор информацией о строках (и, возможно, позициях). Например, ( в качестве токена обычно будет:

<TOKEN_RPAREN>

, но вы должны сделать это:

<TOKEN_RPAREN, 11>

, где 11 - номер строки токена. был замечен на. Теперь, когда у вас есть номер строки, всякий раз, когда вы сталкиваетесь с ошибкой, у вас есть номер строки, в которой произошла ошибка. Что касается определения типа ошибки, в таблице вместо пустой записи об ошибках можно поместить сообщение об ошибке.

...