我正在写一个词法分析器,我希望它输出有意义且准确的错误消息。就像发生错误的确切行和列一样。编写词法分析器时处理错误的适当方法是什么?
最佳答案
您使用什么工具进行词法分析?我知道一点 Flex ,我将其写下来,可能对您或其他人有帮助。
Flex是通常用于生成词法分析器的工具。无需从头开始编写一个 token ,只需告诉它 token 的状态(使用正则表达式),它将生成一个C程序,该程序从输入字符流中提供 token 流。
它很容易学习,这是一个很好的tutorial。学习之后,您将能够轻松地报告错误。
关于行号,Flex定义了一个名为yylineno
的变量,该变量保存当前行号。对于列号,this可能会有所帮助。