我正在尋找一個合理複雜的語言(類似於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. Xcode flex詞法分析器未生成
- 5. 多語言解析器生成器
- 6. antlr生成詞法分析器但不解析器
- 7. 詞法分析器生成器如何識別語法的關鍵字?
- 8. 語法分析器在c#
- 9. LL語法分析器語法
- 10. C++的語法分析生成
- 11. PHP_ParserGenerator - 語法或解析器生成器中的錯誤?
- 12. Argparse:如何區分語法分析器和子分析器
- 13. 給定BNF語法輸出C#的分析器發生器?
- 14. ANTLR語法的編輯器生成器?
- 15. 的Javascript詞法分析器/標記生成器(在Python?)
- 16. Python語言的語法分析器
- 17. 追溯到英語語法分析器
- 18. 是否有可能使Antlr4從基本語法詞法分析器生成詞法分析器,而不是生成Lexer?
- 19. 如何使用antlr生成的解析器和詞法分析器?
- 20. 如何使用ANTLR4和Maven自動生成詞法分析器+解析器?
- 21. 由Eclipse自動生成的解析器和詞法分析器文件
- 22. ocaml分析器和詞法分析器
- 23. 在ANTLR生成的C語法分析器中使用C++類型
- 24. 在解析器/子語法分析器開始時使用argparse.REMAINDER
- 25. 無掃描器解析器生成器
- 26. C#語法分析器錯誤信息
- 27. XML分析器語法錯誤
- 28. 使用鏈接語法分析器
- 29. mod_wsgi python conf語法分析器
- 30. android的mediawiki語法分析器
不幸的是,LEPL已經[已停用](http://www.acooke.org/lepl/discontinued.html)。 – kennytm 2012-12-25 20:43:30