2009-07-31 32 views
2

解析PHP/JavaScript的文檔結構我需要解析PHP &的JavaScript文件結構,以獲取有關文件的功能&它們的參數,類&他們的方法,變量,等等... 我想知道,如果信息有沒有什麼解決方案可以做到這一點(沒有正則表達式)......我聽說過一種叫做「lexing」的東西,但是我找不到任何例子,即使是那些我可以告訴它是我正在尋找的東西還是不...在Delphi

在此先感謝

+0

另請參閱http://stackoverflow.com/questions/354563/what-would-be-a-good-delphi-lexer-parser-for-javascript-language-file/355218#355218 – 2009-08-01 20:25:56

回答

1

通過「Lexing」指的是詞法分析,還有一些古代的工具,其中大部分仍然工作,名爲Lex和Yacc。 Lex構建標記器,Yacc代表「另一個編譯器編譯器」,它是實際的解析器。

lex/Yacc的概念是爲語言構建語法,然後通過paslex工具運行語法以生成可用於解析文件並對其執行操作的源代碼(通常爲C)特定的關鍵字和令牌。 Martin Waldenburg寫了一個名爲PasLex的pascal版本的lex/yacc,它現在已經踢了十多年,現在已經轉換爲Delphi(儘管沒有一些小的工作,它可能不適用於最新版本)。如果我沒有記錯,它使用與lex相同的.L語法輸入文件,因此您爲lex/yacc找到的任何文檔都可以應用到paslex,但將pascal代碼作爲輸出的例外。

我不確定當前的文檔可用性。在互聯網(gasp)之前,我們使用書籍,其中大部分內容大量記錄在長期變黃的紙張上......但是,有傳言說,你可能......只是可能能夠從亞馬遜獲得使用的副本。我剪這個我的牙齒用一本書,也被稱爲「the dragon book」,這似乎已被最近重新公佈的截至2006年


編輯:

我被錯誤的工具,它是TPLY。 PasLex是delphi語法實現... TPLY是Lex/Yacc工具,它從.L文件生成pascal源文件。

2

我不確定這是否可行,但對於PHP你會abl e從Delphi調用PHP CLI來獲取信息?

如果是這樣,你可以打電話token_get_all(),然後吐出可以在Delphi中解析的結果(也許是xml,json等)。這很輕鬆。問題在於只解決了一半問題 - 您仍然需要了解上下文中的每個令牌以獲得您想要的結果。

+0

這將幫助我很多,只是如果可以作爲德爾福「獨立」的代碼,沒有PHP的依賴... – migajek 2009-07-31 17:50:23