我正在研究编译器实现并希望检查是否已到达文件末尾?
我知道这可以使用 lex 文件中的 yywrap() 函数来完成,但要求是如果 EOF 被显式定义为十六进制值 0x1a,那么我们如何引用它。
例子:
main() { printf("检查 EOF 标记\n"); '0x1a' <-- 实际的 EOF 标记。
我希望上面不是语法错误,而是报错括号不平衡,或者定义错误。
以上可以吗?我的要求只是在解析器中包含 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.
}