Итак, чтобы сделать это, вы должны оснастить свой лексический анализатор информацией о строках (и, возможно, позициях). Например, (
в качестве токена обычно будет:
<TOKEN_RPAREN>
, но вы должны сделать это:
<TOKEN_RPAREN, 11>
, где 11
- номер строки токена. был замечен на. Теперь, когда у вас есть номер строки, всякий раз, когда вы сталкиваетесь с ошибкой, у вас есть номер строки, в которой произошла ошибка. Что касается определения типа ошибки, в таблице вместо пустой записи об ошибках можно поместить сообщение об ошибке.