當不綁定到純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)。 –