Delphi JavaDoc Parser - PullRequest
       15

Delphi JavaDoc Parser

2 голосов
/ 16 июня 2010

Мне нужно проанализировать синтаксис комментариев JavaDoc (документация) с Delphi 7. В Java это хорошо известно как «JavaDoc», но на самом деле я делаю это для PHP, то есть анализирую JavaDoc в некотором PHP-коде. Назовите это PHPDoc, если хотите. Чтобы увидеть, как работают эти комментарии, вы можете увидеть 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. Я имею в виду, это прекрасно, если он принимает текст комментария только в качестве ввода.

Ура, Крис.

Ответы [ 4 ]

3 голосов
/ 17 июня 2010

Вас может вдохновить DelpiCodeToDoc: http://dephicodetodoc.sourceforge.net/ Это система документации для Delphi, использующая синтаксис JavaDoc. Это не совсем то, что вы хотите (вам это нужно для источников PHP), но поддержка хорошая и оперативная, и, возможно, ваши потребности будут включены в следующую версию.

2 голосов
/ 17 июня 2010

Мне пришлось реализовать формат парсинга phpDoc для моей собственной PHP IDE.Я просто анализирую char по char, код на Паскале похож на этот:

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;);)

0 голосов
/ 17 июня 2010

Вы можете использовать механизм регулярных выражений (один из основанных на PCRE IIRC включен в JCL) для простого анализа комментариев и извлечения необходимой информации.

0 голосов
/ 16 июня 2010

Вы гуглили PHPDocumentor ?

...