【问题标题】:Delphi JavaDoc ParserDelphi JavaDoc 解析器
【发布时间】:2011-03-04 15:14:36
【问题描述】:

我需要用 Delphi 7 解析 JavaDoc(文档)注释语法。 它在 java 世界中被称为“JavaDoc”,但我实际上是为 PHP 做的,即在一些 PHP 代码中解析 JavaDoc。如果您愿意,可以将其称为 PHPDoc。 要了解这些 cmets 的工作原理,您可以查看 RAD IDE,例如 NetBeans 等。

添加功能的JavaDoc示例:

/**
 * Adds to numbers together.
 * @param integer $a The first number.
 * @param integer $b The second number.
 * @return integer The resulting number.
 */
function add($a,$b){
  return $a+$b;
}

请注意,解析器不必是完整的,即解析所有 PHP 代码。 我的意思是,如果它接受评论文本 only 作为输入就很好了。

干杯, 克里斯。

【问题讨论】:

    标签: php delphi parsing javadoc comments


    【解决方案1】:

    你用谷歌搜索过PHPDocumentor吗?

    【讨论】:

    • 对不起,如果我不够清楚。我需要使用 Delphi 在 PHP 中解析 JavaDoc。将 PHPDocumenter 转换为 Delphi 显然不是一种选择(我使用过该软件,它非常大)。
    【解决方案2】:

    您可能会受到 DelpiCodeToDoc 的启发:http://dephicodetodoc.sourceforge.net/ 它是 Delphi 的文档系统,使用 JavaDoc 语法。 这不是您想要的(PHP 源代码需要它),但支持很好且反应灵敏,您的需求可能会包含在下一个版本中。

    【讨论】:

      【解决方案3】:

      我必须为我自己的 PHP IDE 实现 phpDoc 解析格式。我正在做的只是一个字符一个字符地解析,类似于这样的帕斯卡代码:

      len := length(fCode);
      i:= 1;
      inComment:= false;
      while i < len do
      begin
        case fCode[i] of
         '*': begin 
              if (fCode[i-1] = '/') and (fCode[i+1] = '*') then
              begin
                inComment:= true;
              end
              else if fCode[i+1] = '/' then
              begin
                inComment:= false;
              end;
         '@' : begin
                  j:= i;
                  while (fCode[i] in ['a'..'z','A'..'Z']) do
                      inc(i);
                  tagName:= copy(fCode, j, i - j +1);
                  // do it again for type, name and the rest MIGHT be description! check for liebreak!
               end;
        end;
       inc(i);
      end;
      

      代码并不完美(应该检查索引是否 > 0 和

      代码没有经过测试,甚至没有编译 - 写在 SO 的“你的答案”框中;) ;)

      【讨论】:

      • 猜猜我会对此进行扩展。
      • 嗯,我总是投票支持“自制”的东西。我认为这应该可以满足我的问题和需求。
      【解决方案4】:

      您可以使用正则表达式引擎(JCL 中包含基于 PCRE 的 IIRC)来轻松解析 cmets 并提取您需要的信息。

      【讨论】:

        猜你喜欢
        • 2011-06-07
        • 1970-01-01
        • 2013-02-09
        • 1970-01-01
        • 2011-12-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多