我需要解析 PHP 和 JavaScript 文档结构以获取有关文档函数及其参数、类及其方法、变量等的信息......我想知道是否有任何解决方案(没有正则表达式) ...我听说过一种叫做“lexing”的东西,但是我找不到任何例子,即使是那些可以告诉我这是否是我正在寻找的东西的例子......
提前致谢
我不确定这是否可行,但对于 PHP,您能否从 Delphi 调用 PHP CLI 来获取信息?
如果是这样,您可以调用token_get_all(),然后将结果吐出可以在 Delphi 中解析的内容(可能是 xml、json 等)。这是词法。这样做的问题是只解决了一半的问题 - 您仍然必须了解上下文中的每个标记才能获得所需的结果。
通过“Lexing”,您指的是词法分析,并且有一些古老的工具大部分仍然有效,名为 Lex 和 Yacc。Lex 构建了标记器,而 Yacc 代表“又一个编译器编译器”并且是实际的解析器。
lex/Yacc 的概念,是你为语言构建一个语法,然后通过 paslex 工具运行语法以生成源代码(通常在 C 中),你可以使用它来解析文件并对特定的关键字和标记采取行动. Martin Waldenburg 编写了一个名为 PasLex 的 pascal 版本的 lex/yacc,它已经运行了十多年,并且已经转换为Delphi(尽管如果没有一些小工作,它可能无法与最新版本一起使用)。如果我没记错的话,它使用与 lex 相同的 .L 语法输入文件,因此您为 lex/yacc 找到的任何文档也可以应用于 paslex,除了您将 pascal 代码作为输出。
我不确定当前文档的可用性。在互联网(喘气)之前,我们使用书籍,其中大部分内容都大量记录在纸上,纸上早已变黄......然而,有传言说你可能......也许能够从亚马逊拿起一本用过的副本。我使用一本也被称为“龙之书”的书对此表示怀疑,该书似乎最近在 2006 年重新出版。
编辑:
我被工具弄错了,它是TPLY。PasLex 是一个 delphi 语法实现...TPLY 是从 .L 文件生成 pascal 源的 Lex/Yacc 工具。