【问题标题】:Converting BNF to javacc code将 BNF 转换为 javacc 代码
【发布时间】:2014-04-18 16:44:20
【问题描述】:

我需要将以下内容从 EBNF 转换为 javacc,我尝试了各种方法,但出现错误。

EBNF:代码 ::== [\x20 - \x7E]

这将如何转换?

提前致谢

【问题讨论】:

    标签: javacc ebnf


    【解决方案1】:

    JavaCC 支持字符范围。例如。 [" "-"~"] 它还支持 Java 中的 Unicode 转义,例如 ["\u0020"-"\u007E"]

    这些范围可以在令牌管理器的规范中使用。请注意,Question 3.3 of the FAQ 中列出的三个规则适用。所以如果你有

    TOKEN: {
        <LETTER : ["a"-"z","A"-"Z"] >
    |
        <PRINTABLE : [" "-"~"] >
    }
    

    然后在你想要的解析器中

    void Printable() {
        <LETTER> | <PRINTABLE>
    }
    

    【讨论】:

    • 谢谢!因此,如果我在 javacc 中给出以下语法,它是否与 ["/u0020" -"/u007E"] 相同?由于 wen 我使用后者,我得到了 javacc 编译错误
    • 不完全。 &lt; PRINTABLE : [" "-"~"] &gt;&lt; PRINTABLE : ["\u0020"-"\u007E"] &gt; 相同。
    猜你喜欢
    • 2011-01-28
    • 1970-01-01
    • 2021-11-29
    • 2020-02-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多