Оригинальный DVD-ROM: eXeL@B DVD !
eXeL@B ВИДЕОКУРС !

ВИДЕОКУРС
выпущен 4 ноября!


УЗНАТЬ БОЛЬШЕ >>
Домой | Статьи | RAR-cтатьи | FAQ | Форум | Скачать | Видеокурс
Новичку | Ссылки | Программирование | Интервью | Архив | Связь

БОЛЬШОЙ FAQ ПО DELPHI



Использование TParser

Автор: Mike Scott

Вы просили пример кода использования TParser. Хорошо, вот несколько процедур для модуля Parser для создания документации Delphi-компонент напрямую из исходного кода.

TDelphiUnitParser - подкласс со специфическими методами, позволяющими парсировать секцию Interface модуля Delphi. Вы можете не использовать этого наследника TParser в вашем коде - это просто иллюстрация того, как можно использовать некоторые свойства и методы TParser. Присылайте мне другие ваши решения по этому вопросу.


 { TDelphiUnitParser }
 
 function TDelphiUnitParser.CheckSectionBreak: Boolean;
 begin
   with Parser do
   begin
     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;
 begin
   with Parser do
   begin
     { пропускаем '(' }
     NextToken;
     while Token <> ')' do
       NextToken;
     NextToken;
   end;
 end;
 
 procedure TDelphiUnitParser.ParseRecord;
 begin
   with Parser do
   begin
     { пропускаем 'record' }
     NextToken;
     while (Token <> toSymbol) or not Compare('End') do
     begin
       if Token = 'Record' then
         ParseRecord
       else
         NextToken;
     end;
   end;
 end;
 
 procedure TDelphiUnitParser.ParseDeclaration;
 begin
   with Parser do
   begin
     while Token <> ';' do
     begin
       if Token = '(' then
         ParseParameterList
       else if (Token = toSymbol) and Compare('Record') then
         ParseRecord
       else
         NextToken;
     end;
   end;
 end;
 
 procedure TDelphiUnitParser.ParseConst;
 var
   AString: string;
   AStart: PChar;
   EndOfConsts: Boolean;
 begin
   with Parser do
   begin
     NextToken;
     repeat
       if Token <> toSymbol then
         ErrorStr('Неопознанный идентификатор');
       AString := TokenString;
       AStart := FSourcePtr;
       NextToken;
       if not (Token in ['=', ':']) then
         ErrorStr('''='' or '':''
           ожидалось' ) ;
 
           ParseDeclaration;
           FindToken(';');
     until CheckSectionBreak;
   end;
 end;
 




<< ВЕРНУТЬСЯ В ОГЛАВЛЕНИЕ



Материалы находятся на сайте https://exelab.ru/pro/



Оригинальный DVD-ROM: eXeL@B DVD !


Вы находитесь на EXELAB.rU
Проект ReactOS