2009-07-31 36 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