当不仅限于Java时,您可以使用其他语言的PEG解析器或Rebol(它具有与PEG等效的“方言”)-或者回到Icon或Unicon,甚至现在是Object Icon,位于code.google.com/p/objecticon
当我意识到MIT Curl Web内容语言(www.curl.com)为用户选择了regexp时,这是一个遗憾的时刻,尽管Curl具有宏并提供对AST的访问。
一般主题:解析表达式语法(PEG)和packrat解析。
Perl的使用赋予我们PCRE,因此除非需要(antlr和bison也有自己容易适应的地方),否则我们能做什么但避免它。
注意:Rebol、Icon和Curl都是基于表达式的语言(Icon具有有限的回溯)。
其他不寻常的选项包括Oz和Mercury(后者可以输出erlang)
我没有使用pyPEG,因为我受限于Python 2.6.6;python parse Lepl不再受支持-但将安装为2.6
Python中的解析选项包括YAPPS(http://theory.stanford.edu/~amitp/yapps/)和其他各种选项;请注意:在某些Python环境中,pyparsing无法安装。
对于Scala/Java,有这个PEG项目:https://github.com/sirthias/parboiled/wiki
您可以在http://piumarta.com/software/peg/上找到Java相当于peg和leg的内容
CiteSeer上有Ralph Becket关于packrat解析和Mercury的文章(Google搜索“PEG parse mercury site:psu.edu”)
AdventuresInMercury博客中还有一系列三篇文章。