Я работаю над реализацией компилятора и хочу проверить, достигнут ли конец файла?
Я знаю, что это можно сделать с помощью функции yywrap () в файле lex, но необходимо, чтобы мы хотели, чтобы EOF явно определялся как шестнадцатеричное значение 0x1a, тогда как мы на него ссылаемся *
Пример:
Основной ()
{
printf («Проверить маркер EOF \ n»); '0x1a' <- фактический маркер EOF. </p>
Я хочу, чтобы вышеприведенное не было синтаксической ошибкой, а сообщалось как ошибка
Несбалансированные скобки, или неправильно определены.
Можно ли это сделать? Мое требование - просто иметь токен EOF в парсере, чего, к сожалению, я до сих пор не смог сделать: - ((, остальная часть работы будет выполнена легко, как тогда, я просто должен дать правило такие как:
print : print_stmt '(' stmt_valid ')' colon '\n'
{
OK do the rest
}
| print_stmt '(' stmt_valid ')' colon end_indicator
{
print error message and close application.
}