我想知道,是否可以采用 antlr 语法(*.g)或生成的解析器(来自此语法)并在单独的项目中使用它?
为此,我正在研究 github 上的 SysMLv2(基于 eclipse)项目,其中使用 xtext 来定义这种新建模语言的语法。可以在此处找到语法和生成的解析器。
我的第一个想法是获取语法文件(InternalAlf.g)并使用 antlr(我尝试了 3.5.0 和 3.5.2)来生成解析器 + 词法分析器。这样做我最终会得到一堆错误消息,提示找不到符号(有问题的符号:EObject)。
然后因为它显然是一个 Eclipse 项目,我想另一个天真的解决方案是将整个项目打包为一个 jar 并将其作为库包含在我的库中。我尝试为此使用eclipse(导出->可执行jar)。该选项需要一个 MainClass,我不确定要采用哪一个,这也让我怀疑这种方法。使用其他导出 jar 选项,不允许将必要的依赖项添加到我的 jar 中。
还有其他建议吗?由于 antlr 语法文件可用,它应该(实际上)很容易生成解析器,但我不知道如何做到这一点,因为这个语法文件有很多依赖项。或者,如果我改写这个问题:我如何处理这种类型的 antlr 语法文件(对 java 库有依赖关系)。在典型的 antlr 教程中,我(作为 antlr 和 xtext 的新手)找不到答案。
此致