当不绑定到纯Java时,您可以使用另一种语言的PEG解析器或Rebol(它具有与PEG等效的解析“方言”) - 或返回WAY返回Icon或Unicon或现在甚至Object图标at code.google.com/p/objecticon
当我意识到MIT Curl网页内容语言(www.curl.com)为用户选择正则表达式时,即使Curl具有宏并提供访问到AST。
一般主题:解析器表达式语法(PEG)和一般的packrat解析。
Perl的使用遗留给我们PCRE,所以我们可以做什么,但不需要时它可以避免它(有antlr和野牛...毫无疑问,他们也有他们的地方,他们很容易适合)
注意:Rebol,图标和卷曲是基于表达式的语言(图标有限回溯)。
其他出-A-的方式选择包括奥兹和水星(后者可以输出二郎)我不使用pyPEG因为我只限于对Python 2.6.6
;蟒蛇解析Lepl不再支持 - 但将安装为2.6
Python中的解析选项包括YAPPS在http://theory.stanford.edu/~amitp/yapps/和其他各种;注意:pyparsing未能在安装一些Python env的
和斯卡拉/ Java的有这样PEG项目:https://github.com/sirthias/parboiled/wiki
你会发现每http://piumarta.com/software/peg/
CiteSeer一个Java当量,以PEG和腿部有拉尔夫贝克特文章packrat解析和水星(谷歌PEG解析汞网站:psu.edu)
AdventuresInMercury博客中还有一系列的3篇博文。
是的,antlr是解决方案。你不应该使用正则表达式来解析语言。一个很好的例子是在堆栈溢出 - http://stackoverflow.com/questions/1931307/antlr-is-there-a-simple-example –
通常,这些自定义语言为特定目的被称为[域特定语言](http ://en.wikipedia.org/wiki/Domain-specific_language)。 –