与第三方基于ANTLR的识别器进行交互

时间:2015-01-18 00:29:00

标签: python antlr ctypes antlr3

我正在尝试进行交互,主要是为一种语言编写一个解释器,我只有一个API通过一个允许我编译文件或字符串,检查语法错误等的API。我想要的是真正解析句法。我有一个用户手册级别(即没有真正的语法)语言规范,我已经使用我编写的上下文无关语法和lex yacc编写了一个不完整的解析器。但它仍然在窒息,我在那里添加了如此多的奇怪的正则表达式和规则例外,我认为我从来没有这样做过。

我看了(PE资源管理器)到dll中,发现导出条目与antlr3生成的lexer-parser-recognition(井,多个识别器)相匹配。我开始构建dll中函数的接口(使用Python中的ctypes)。我开始使用虚拟空语法,生成标题,然后编译"使用ctypesgen将antlr3 * .h,LangLexer,LangParser标头绑定到python,然后我重建了一个找到on Stack Overflow的示例。我推进但不确定如何在不知道完整语法的情况下制作语法树(虽然我知道令牌的名称)。有线索吗?

1 个答案:

答案 0 :(得分:0)

好吧,让我们成为一个教训,我找到并联系了为解析器编写代码的开发人员,他给我发了语法。尝试转到源是比解构二进制更好的解决方案。