Вы просили пример кода использования TParser. Хорошо, вот несколько процедур
для модуля Parser для создания документации Delphi-компонент напрямую из
исходного кода.
TDelphiUnitParser - подкласс со специфическими методами, позволяющими
парсировать секцию Interface модуля Delphi. Вы можете не использовать этого
наследника TParser в вашем коде - это просто иллюстрация того, как можно
использовать некоторые свойства и методы TParser. Присылайте мне другие ваши
решения по этому вопросу.
{ TDelphiUnitParser }function TDelphiUnitParser.CheckSectionBreak: Boolean;
beginwith Parser dobegin
Result := (Token = toSymbol) and
(Compare('Var') or
Compare('Const') or
Compare('Type') or
Compare('Implementation') or
Compare('Procedure') or
Compare('Function'));
end;
end;
procedure TDelphiUnitParser.ParseParameterList;
beginwith Parser dobegin{ пропускаем '(' }
NextToken;
while Token <> ')' do
NextToken;
NextToken;
end;
end;
procedure TDelphiUnitParser.ParseRecord;
beginwith Parser dobegin{ пропускаем 'record' }
NextToken;
while (Token <> toSymbol) ornot Compare('End') dobeginif Token = 'Record' then
ParseRecord
else
NextToken;
end;
end;
end;
procedure TDelphiUnitParser.ParseDeclaration;
beginwith Parser dobeginwhile Token <> ';' dobeginif Token = '(' then
ParseParameterList
elseif (Token = toSymbol) and Compare('Record') then
ParseRecord
else
NextToken;
end;
end;
end;
procedure TDelphiUnitParser.ParseConst;
var
AString: string;
AStart: PChar;
EndOfConsts: Boolean;
beginwith Parser dobegin
NextToken;
repeatif Token <> toSymbol then
ErrorStr('Неопознанный идентификатор');
AString := TokenString;
AStart := FSourcePtr;
NextToken;
ifnot (Token in ['=', ':']) then
ErrorStr('''='' or '':''
ожидалось' ) ;
ParseDeclaration;
FindToken(';');
until CheckSectionBreak;
end;
end;
Пример использования класса TParser в Delphi для парсинга секции Interface модуля и создания документации компонента напрямую из исходного кода.
Комментарии и вопросы
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.