可以說我有一種語言設計。當選擇「正確的」解析器/框架(javacc,antlr,spark,mps ...)時,需要考慮什麼標準,如性能,測試生成,IDE支持......解析器選擇標準
我知道, 「適當」取決於很多變數,但我只對標準清單感興趣(我將在後面加權),我可以根據這些標準做出決定。
Thx任何輸入!
可以說我有一種語言設計。當選擇「正確的」解析器/框架(javacc,antlr,spark,mps ...)時,需要考慮什麼標準,如性能,測試生成,IDE支持......解析器選擇標準
我知道, 「適當」取決於很多變數,但我只對標準清單感興趣(我將在後面加權),我可以根據這些標準做出決定。
Thx任何輸入!
這樣的決定最重要的輸入可能是語言的複雜性。不同的解析器生成器能夠處理不同類型的語言。由於你的語言可能是context-free language(否則你可以用正則表達式逃脫或者你要面對相當大的挑戰),你通常會在LR解析器(或其一些變體)和LL解析器。作爲(簡化的)經驗法則,LR解析器能夠解析更復雜的語言,而LL解析器更直觀,更易於理解。
,我覺得重要的其它標準是:
LALR(1)解析器可以非常快,因爲它們可以基於預編譯表格,但是單字符預讀可能會限制您的語法。 GOLD Parser就是一個很好的例子。儘管很多引擎可供選擇,但即使它很陳舊,如果您只使用BNF描述語法,速度也會相當快。
徵求意見在SO上沒有得到好評。更好[查看這意味着在這裏提出一個好問題](http://stackoverflow.com/help/how-to-ask)。 –