结束的文件描述中的语法执行情况
-
20-08-2019 - |
题
我工作的一个编译器实施,并希望检查,如果该结束的文件已经达到?
我知道这可以使用的yywrap()功能的法文件,但要求是,我们希望,如果EOF被明确地定义为在六值0x1a,那么我们如何参考。
例如:
主() { printf("检查EOF标记 ");'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.
}
解决方案
让你的语法分析程序返回标记的EOF.
我建议你回返的标记有两种情况:
getc()
返回-1
(通常EOF标志)。在这种情况下,让该标记空getc()
返回'\x1a'
.在这种情况下,把这个角色在令的文本。
这使你文法之间的区别这两种情况。
不隶属于 StackOverflow