首页 > 解决方案 > 如何在 C++ 中报告语法分析器的错误?

问题描述

嗨,我目前正在用 C++ 制作语法分析器

使用 DFA 表,我已经实现了语法分析。

当我们有错误时我必须打印错误报告(错误行,以及什么是错误)

现在,我的程序只知道我们有错误。(当 dfa 表在此状态下为空时)

我不知道如何知道我的输入代码(例如)第 11 行中的语法错误类型:缺少 rparen)

帮我

标签: compiler-construction

解决方案


所以要做到这一点,你必须为你的词法分析器配备行(可能还有位置)信息。例如,(作为令牌通常是:

<TOKEN_RPAREN>

但你必须做到这一点:

<TOKEN_RPAREN, 11>

11看到令牌的行号在哪里。现在您有了行号,每当您遇到错误时,您就有了发生错误的行号。至于识别错误类型,在表格中,您可以输入错误消息,而不是为错误输入空白条目。


推荐阅读