【问题标题】:TestRig / grun gets stuck parsing the example fileTestRig / grun 在解析示例文件时卡住了
【发布时间】:2021-04-05 17:39:38
【问题描述】:

this question 之后,我正在尝试学习如何使用 TestRig / grun 工具。考虑this repo 中的语法文件。我运行了以下命令:

export CLASSPATH=".:/usr/local/Cellar/antlr/&ltversion&gt/antlr-&ltversion&gt-complete.jar:$CLASSPATH" antlr &lt语法名称&gt.g4 javac &ltgrammarName&gt*.java

但是当我跑步时

grun <grammarName> <inputFile>

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

【问题讨论】:

    标签: antlr antlr4


    【解决方案1】:

    普通的grun 别名将grammarName 和startRule 作为参数并期望来自stdin 的输入:

    grun <grammarName> <startRule> < <inputFile>
    

    示例:

    grun ElmerSolver sections -tree  < examples/ex001.sif
    

    如果你只想运行 Lexer,你可以使用“pseudo-startrule”“tokens”:

    grun ElmerSolver tokens -tokens  < examples/ex001.sif
    

    有了你的样本,这给了我:

    [@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]
    

    (这是使用我在上一个答案中所做的语法更改,但应该演示结果)

    【讨论】:

    • 我现在收到No method for rule sections or it has arguments 错误。
    • 好吧,我想这是因为sections 定义目前已被注释掉。但是有没有办法只获得令牌?
    • 好吧,那怎么样...... IS 是一种只做令牌的方法。不得不检查源代码。我会马上修改我的答案。
    • 好棒。所以我可以得出结论,我的语法文件到目前为止还不是完全垃圾?
    • “完全垃圾”会非常苛刻,所以不,绝对不是垃圾。我在之前的回答中确实提出了一些您可能需要考虑的建议。除了这些 cmets,还有一些不寻常的 EOL 处理(但某些规范可能对这样的事情很奇怪,所以我不能说它一定是错误的。)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-27
    • 2021-07-01
    • 1970-01-01
    • 2017-03-17
    • 1970-01-01
    相关资源
    最近更新 更多