我需要解析用戶可以在我的網站上輸入的小型「迷你語言」。我想知道lex和jacc或antlr的對手是用於php的世界的。什麼是一個好的解析器生成器的PHP?
15
A
回答
0
6
我幾年前使用LIME Parser generator for PHP,它已經非常成熟和穩定。
解析器生成器本身是用PHP編寫的,在任何技術意義上都沒有關係 - 因爲我們只需要生成的解析器在PHP中,但我仍然喜歡這個細節。這讓我覺得在PHP ;-)
編輯軟件編寫更少歉意:
我要補充:
我在哪裏寫的「拿來主義」這將是更準確的說,我「玩」。我還沒有用石灰寫過任何生產代碼。但我認爲沒有理由不這樣做。
隨着lime提供的「計算器例子」使用了一個tokenize()方法,它離lex的實際替代品很遠。但是,如果你需要一個真正的標記器,應該可以在「前端」使用lex來將標記提供給「後端」。
0
我已經將jison,一個野牛克隆在JavaScript中移植到php中。結果是一個殺手解析器,能夠處理非常簡單和非常複雜的搜索/解析。它現在是Jison的一部分,但我的叉子中有一些更新 - https://github.com/robertleeplummerjr/jison。這些文件在這裏 - https://github.com/robertleeplummerjr/jison/tree/master/ports/php
查看該頁面的自述文件,您可以同時創建一個javascript和php解析器,它們可以執行相同或不同的操作。涼!
-5
我建議你編寫自己的解析器,因爲今天它很容易。
在我看來,最簡單的方法是爲每種可能的語法類型(表達式,測試,循環等)創建一個類。
在每個類然後,代碼以下方法:
- 一個方法從字符串確定的,如果該字符串是給定類型的(
a+b
是類型「表達」的,if(b)
不) - 一個方法來「跑」這個類型(
a+b
將返回a->run() + b->run()
,並a->run()
將返回一個值)
相關問題
- 1. 什麼是一個好的C#編譯器 - 編譯器/解析器生成器?
- 2. 什麼是最好的XML解析器
- 3. 什麼是一個好的Javascript RDFa解析器實現?
- 4. 什麼解析器生成器可以生成Javascript代碼?
- 5. 是否有一個可以生成沒有gem依賴關係的解析器的ruby解析器生成器?
- 6. PHP HTML解析器(是否沒有好的HTML解析器)
- 7. 與迭代器相比,生成器的好處是什麼?
- 8. 生成一個解析器程序生成的BNF
- 9. 什麼是PHP代碼生成器?
- 10. 是否有一個很好的PHP CRUD代碼生成器?
- 11. 解析器和詞法分析器生成器php
- 12. 組合的解析器/解析器生成器
- 13. 什麼樣的解析器是普拉特解析器?
- 14. 目標C的解析器生成器?
- 15. 對於HTML MS Excel文件,一個好的CPAN解析器是什麼?
- 16. 什麼是CMake生成器?
- 17. 什麼是python生成器?
- 18. 什麼是GWT生成器?
- 19. 什麼是ltmain.sh,爲什麼automake會說它缺失?什麼是一個好的自動(make/conf/etc)生成器?
- 20. 什麼是最好的PHP編輯器?
- 21. Python:爲什麼列表理解會產生一個生成器?
- 22. 生產編譯器是否使用解析器生成器?
- 23. 什麼是最好的解析器從文字,rtf,ecc
- 24. 爲什麼生成的解析器如此緩慢?
- 25. ANTLR生成的解析器產生MissingTokenException
- 26. 是什麼讓這個僞GUID生成器比math.random()更好?
- 27. 是什麼讓emacs成爲一個好的編輯器?
- 28. 哪個解析器生成器教給我的學生?
- 29. 什麼是獨立的Java解析器?
- 30. 什麼樣的解析器是NSXMLParser
我看到這個生成器,但它是4歲。我在想可能會有更新的東西 – Toad 2010-09-15 18:03:27
讓我們下次看到一些內容,而不僅僅是一堆鏈接。 – 2010-09-15 18:04:36
@ts。我想你現在知道了,但這完全是你的責任,而你獨自一人,作爲一名撰稿人:) – 2016-08-22 15:10:19