我的公司正在尝试为 Android 编写一些软件。我们想使用 Java,并且公司软件的一个组件是 c++,因此需要移植(或者至少在尝试 NDK 之前需要尝试移植)。此代码是使用Accent创建的,它定义了语法语法。据我所知,最初的作者(现在已经走了)写了一个语法来指定如何指定一个语法,然后用那个语法和口音编译了一个编译器-编译器。编译器-编译器采用指定格式的语法并生成二进制代码来解析符合该语法的字符串。这是语法的示例片段:
//include rules from from this file (such as <alpha>)
include "alphabet.bnf"
<<topSymbol>> = <alpha> <alpha> <alpha>? .//two letters with an optional third
//square brackets enclose an XML statement clarifying semantics of the rule
[
<topSymbol>
<letter>
<command val="doSomethingToLetter"/>
</letter>
<!--etc.-->
</topSymbol>
]
我的问题是如何使用 Java,使用 Antlr 或其他一些工具来做到这一点。编译器-编译器-编译器对我来说似乎相当复杂。或者,我想知道如何轻松编译/解析这种包含语法和语义 XML 信息的语法。