我正在尋找一個合理複雜的語言(類似於Python本身的複雜性)的解析器生成器,它與Python3一起工作。如果它可以自動生成一個AST,這將是一個獎金,但我很好,如果它只是在解析時調用規則。我沒有特別的要求,也不必非常高效/快速。Python3語法分析器生成器
3
A
回答
3
LEPL不完全是一個解析器生成器 - 它更好!解析器在Python代碼中定義,並在運行時構建(因此效率較低,但使用起來更容易)。它使用運算符重載來構造一個相當可讀的DSL。諸如c = a & b | b & c
爲BNF c := a b | b c.
。
您可以將(子)解析器的結果傳遞給abritary callable,這對AST生成非常有用(對於將數字文字轉換爲Python級別的數字對象也很有用)。這是一個遞歸下降解析器,所以你最好避免語法中的左遞歸(有可以使左遞歸工作的memoization objets,但是"Lepl's support for them has historically been unreliable (buggy)")。
3
ANTLR可以在Python中生成詞法分析器和/或解析器。您也可以使用它來創建AST和類似迭代器的結構來執行AST(稱爲樹語法)。
請參閱ANTLR get and split lexer content瞭解ANTLR演示,該演示使用Python目標產生AST。
相關問題
- 1. 從檸檬語法分析器生成器生成LR分析表
- 2. yacc如何從語法規則中生成語法分析器?
- 3. XML - > C語法分析器生成器
- 4. ANTLR:如何用python生成詞法分析器和分析器?
- 5. 解析器和詞法分析器生成器php
- 6. Common Lisp的詞法分析器和解析器生成器
- 7. Xcode flex詞法分析器未生成
- 8. Python3 split()與生成器
- 9. 多語言解析器生成器
- 10. 解析器或詞法分析器是否生成符號表?
- 11. antlr生成詞法分析器但不解析器
- 12. 詞法分析器生成器如何識別語法的關鍵字?
- 13. 語法分析器在c#
- 14. Angular js語法分析器
- 15. C語法分析器
- 16. PHP Imap語法分析器
- 17. LL語法分析器語法
- 18. C++的語法分析生成
- 19. PHP_ParserGenerator - 語法或解析器生成器中的錯誤?
- 20. Argparse:如何區分語法分析器和子分析器
- 21. C#語法在BNF或EBNF F#的分析器發生器#
- 22. 給定BNF語法輸出C#的分析器發生器?
- 23. 如何在運行時(運行時)生成詞法分析器和分析器?
- 24. Angular.js與瀏覽器內RAML語法分析器的集成
- 25. ANTLR語法的編輯器生成器?
- 26. 的Javascript詞法分析器/標記生成器(在Python?)
- 27. 比特流詞法分析器生成器
- 28. 內核空間中的詞法分析器生成器
- 29. Python語言的語法分析器
- 30. 追溯到英語語法分析器
不幸的是,LEPL已經[已停用](http://www.acooke.org/lepl/discontinued.html)。 – kennytm 2012-12-25 20:43:30