2013-05-05 34 views
5

我正在尋找用PHP編寫的語言解析器用PHP編寫的語言解析器庫

目標是讀取自定義語言,不讀取PHP代碼。

基本上,我想指定一種語言語法,給出一個代碼片段並取回代表它的結構。然後我可以遍歷該結構來執行代碼片段。我相信這個結構將是一個AST,但我不知道這是否是唯一的選擇(我對解析器和它們的詞彙沒有親密感)。

我看過Doctrine DQL parser,但它看起來不像通用語言解析器。

+0

http://wezfurlong.org/blog/2006/nov/parser-and-lexer-generators-for-php/ - sourceforge上也有一個,但懶得爲你搜索鏈接。你可以從檸檬開始,它通常是一個簡單的開始,但是當你看到生成的PHP類的文件大小時不會崩潰。 – hakre 2013-05-05 17:50:39

+0

想要結束這個問題的人,請解釋一下 – 2013-05-05 18:05:30

+0

@hakre有趣的是,檸檬生成一個用PHP編寫的解析器?我會研究它。我寧願有一個通用的解析PHP庫,雖然(它避免了與檸檬來回,如果語言的發展)。 – 2013-05-05 18:07:15

回答

6

這不是一個完整的列表,如果您正在尋找PHP運行時的詞法分析器/解析器,一個特殊項目是由NikiC提供的Phlexy

您可以在PHP-Parser的內部找到用例,並且由他撰寫。這是一個用抽象語法樹(AST)解析PHP語言的語法,部分由語法文件生成。

我從來沒有管理過它,從我自己的研究多年來,PHP用戶空間中沒有太多這樣的項目,而這兩個來自NikiC的庫是一個非常好的例子。

如果您正在尋找一個遵循更多flex規則的詞法分析器,我已經編寫了一個XDOM,它使用CSS選擇器語法,它也使用解析器,但解析器不基於語法文件,即使它存在在CSS規範中。詞法分析器基於.lex文件。