2017-05-18 82 views
0

可以說我有一種語言設計。當選擇「正確的」解析器/框架(javacc,antlr,spark,mps ...)時,需要考慮什麼標準,如性能,測試生成,IDE支持......解析器選擇標準

我知道, 「適當」取決於很多變數,但我只對標準清單感興趣(我將在後面加權),我可以根據這些標準做出決定。

Thx任何輸入!

+0

徵求意見在SO上沒有得到好評。更好[查看這意味着在這裏提出一個好問題](http://stackoverflow.com/help/how-to-ask)。 –

回答

1

這樣的決定最重要的輸入可能是語言的複雜性。不同的解析器生成器能夠處理不同類型的語言。由於你的語言可能是context-free language(否則你可以用正則表達式逃脫或者你要面對相當大的挑戰),你通常會在LR解析器(或其一些變體)和LL解析器。作爲(簡化的)經驗法則,LR解析器能夠解析更復雜的語言,而LL解析器更直觀,更易於理解。

,我覺得重要的其它標準是:

  • 是多麼容易理解和調試生成的語法分析器/解析器生成過程本身
    • 這可能嚴重贊成,因爲他們玩的LL parsers一般較容易明白外行
  • 性能
0

LALR(1)解析器可以非常快,因爲它們可以基於預編譯表格,但是單字符預讀可能會限制您的語法。 GOLD Parser就是一個很好的例子。儘管很多引擎可供選擇,但即使它很陳舊,如果您只使用BNF描述語法,速度也會相當快。