我是ANTLR4
的新手。我按照github上的安装说明进行操作,并成功运行了示例。因此,安装似乎可以。接下来,我下载了一个我想使用的语法文件,在其中运行antlr4
,并使用javac
编译了生成的文件。然后我尝试了一个像这样的例子:
C:> grun GrammerName tokens examplefile
这会运行几秒钟并返回,但是没有响应。香港专业教育学院尝试使用-tree
和-ps
,但我都没有。如果我提供的文件名不正确,则会收到一堆未找到文件的错误消息,因此它正在执行某些操作……但是,如果我提供的是随机数据文件,则也不会得到任何响应。这向我表明,我的示例文件并未被视为有关语法的有效示例。但是为什么我没有收到错误消息?
本质上,我的问题是如何让TestRig提供有关我提供的示例文件的一些反馈?
我尝试阅读antlr.org
网站上的手册页,但是我不熟悉太多术语。
答案 0 :(得分:0)
如果提供tokens
作为开始规则的名称,则告诉grun
根本不调用解析器,而仅运行令牌生成器。通常,这仅与-tokens
标志(用于打印令牌)结合使用才有用。否则,您看到的唯一输出将是可能的标记化错误。
选项-tree
,-ps
或-gui
显示解析器的结果。因此,如果不执行解析器,则它们什么也不做。
如果要查看解析树,应将tokens
替换为要使用的规则的名称。如果要查看已生成令牌的列表,则应添加-tokens
标志。
哪个建议我,我的示例文件并未被视为有关语法的有效示例。
实际上是相反的。如果grun
检测到错误,它将把它们打印到控制台。因此,如果没有输出,grun
不会检测到任何错误(但是,使用tokens
时,它将只查找词法错误,而不是语法错误)。当使用有效输入且没有诸如grun
或-tree
之类的标志调用-tokens
时,预期结果将是没有输出。