最近我买了一本《The Definitive ANTLR 4 Reference》,由于我在使用语法和语言方面比较老练,所以我想在我曾经用yacc和bison写的DSL上下功夫。总的想法是写一个翻译器(包括类型安全(1)的验证),在运行时将DSL翻译成JavaScript,然后由v8执行。
虽然ANTLR是为Java应用而设计的,但我想继续使用原生的C++。ANTLR 4能不能产生这样一个C语言的解析器(2),让我可以使用C++风格的封装器来加入?又该如何做呢?
是的,ANTLR 4可以针对C++。https:/github.comantlrantlr4blobmasterdoccpp-target.md。
ANTLR 2也是如此,中间有一些黑暗的日子,ANTLR 3不能瞄准C++,但值得庆幸的是,这些都已经过去了。