Antlr TestRig/grun无法解析示例文件

Antlr TestRig/grun无法解析示例文件,antlr,antlr4,Antlr,Antlr4,接下来,我将尝试学习如何使用TestRig/grun工具。考虑语法文件。我运行了以下命令: export CLASSPATH=".:/usr/local/Cellar/antlr/<version>/antlr-<version>-complete.jar:$CLASSPATH" antlr <grammarName>.g4 javac <grammarName>*.java export CLASSPATH=“.:/usr/local/ceral/antlr/&

接下来,我将尝试学习如何使用TestRig/grun工具。考虑语法文件。我运行了以下命令:

export CLASSPATH=".:/usr/local/Cellar/antlr/<version>/antlr-<version>-complete.jar:$CLASSPATH" antlr <grammarName>.g4 javac <grammarName>*.java export CLASSPATH=“.:/usr/local/ceral/antlr/<version>/antlr-<version> complete.jar:$CLASSPATH” antlr<GRAMARNAME>.g4 javac<grammarName>*.java 但是当我跑的时候

grun <grammarName> <inputFile>
grun

它被卡住而不返回任何错误消息。我也用其他例子对此进行了测试,但没有结果。如果您能帮助我了解问题所在以及如何解决,我将不胜感激。

正常的
grun
别名将grammarName和startRule作为参数,并希望从stdin获得输入:

grun <grammarName> <startRule> < <inputFile>
grun<
例如:

grun ElmerSolver sections -tree  < examples/ex001.sif
grun-ElmerSolver截面-树
如果只想运行Lexer,可以使用“pseudo startrule”标记:

grun-ElmerSolver代币-代币
有了您的样品,我可以:

[@0,0:9='Simulation',<'Simulation'>,1:0]
[@1,11:13='End',<'End'>,2:0]
[@2,16:24='Equation ',<'Equation '>,4:0]
[@3,25:25='1',<Integer>,4:9]
[@4,27:29='End',<'End'>,5:0]
[@5,30:29='<EOF>',<EOF>,5:3]
[@0,0:9='Simulation',1:0]
[@1,11:13='End',2:0]
[@2,16:24='Equation',4:0]
[@3,25:25='1',,4:9]
[@4,27:29='End',5:0]
[@5,30:29='',,5:3]

(这使用了我在上一个答案中所做的语法更改,但应该可以证明结果)

我得到了
没有规则节的方法,或者它现在有参数
错误。我想这是因为
节的定义现在被注释掉了。但是有没有办法拿到代币呢?好吧,那怎么样。。。这是一种只做代币的方法。必须检查源代码。我马上修改我的答案。好的,太棒了。所以我可以得出结论,到目前为止,我的语法文件并不是完全的垃圾。“完全的垃圾”将是相当苛刻的,所以不,绝对不是垃圾。我在我之前的回答中提出了一些建议,你可能会考虑。除了这些评论之外,还有一些异常的EOL处理(但是一些规范可能会对这样的事情感到奇怪,所以我不能说它一定是错的)
[@0,0:9='Simulation',<'Simulation'>,1:0]
[@1,11:13='End',<'End'>,2:0]
[@2,16:24='Equation ',<'Equation '>,4:0]
[@3,25:25='1',<Integer>,4:9]
[@4,27:29='End',<'End'>,5:0]
[@5,30:29='<EOF>',<EOF>,5:3]