Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2005.01.23;
Скачать: [xml.tar.bz2];

Вниз

лексический анализатор   Найти похожие ветки 

 
nap   (2005-01-11 15:59) [0]

Пишу лексический анализатор. Возникла запарка:
 после 1 скобки "}" в тексте не видит далнейший текст.

var unit_text:TStringList;

var x,y,i,i1,y1:integer;
   tmp:string;
   u1:boolean;
begin
i:=0;
tmp:="";
u1:=false;
while not (i=unit_text.Count) do
begin
  for x:=1 to length(unit_text.Strings[i]) do
   begin
     if x<>length(unit_text.Strings[i]) then
      if unit_text.Strings[i][x]+unit_text.Strings[i][x+1]="//" then
            begin
              inc(i);
              break;
            end;
     if unit_text.Strings[i][x]="{" then
      for i1:=i to unit_text.Count-1 do
       begin
         for y:=1 to length(unit_text.Strings[i1]) do
         begin
          if (i1=i) and (y<x) then y1:=x else y1:=y;
          if unit_text.Strings[i1][y1]="}" then
           begin
             i:=i1;
             u1:=true;
             break;
           end else;
         end;  
       end else;
     if u1 then
        begin
          u1:=false;
          break;
        end else tmp:=tmp+unit_text.Strings[i][x];
   end;
  memo2.Lines.Add(tmp);
  tmp:="";
  inc(i);
end;


 
Digitman ©   (2005-01-11 16:03) [1]


> Пишу лексический анализатор


= изобретаю велосипед


 
nap   (2005-01-11 16:06) [2]

Помогите пожалуйста, дайте ссылки на исходники на Delphi.


 
Digitman ©   (2005-01-11 16:11) [3]

ищи ТР Lex&YACC


 
nap   (2005-01-11 16:23) [4]

они генерируют исходники на CИ. А как быть с Паскалем


 
begin...end ©   (2005-01-11 16:24) [5]

> nap   (11.01.05 15:59)

> Пишу лексический анализатор.

Какова его задача?


 
nap   (2005-01-11 16:30) [6]

создаются таюблицы зарез. слов, чисел, индефикаторов, разделителей

превести в запись вида 0,1 2,45 4,1
где первое число - таблица
после запятой номер слова в таблице


 
Digitman ©   (2005-01-11 16:45) [7]


> nap   (11.01.05 16:23) [4]
> они генерируют исходники на CИ. А как быть с Паскалем


ты гониишь.
ТР L&Y генерит исх.текст именно в Паскале.


 
TUser ©   (2005-01-11 17:24) [8]


> Digitman ©   (11.01.05 16:11) [3]
> ищи ТР Lex&YACC

yacc есть в CygWin"е. Но ты его не используй. Я видел один язык, очень простой, синтаксис - сишный, да еще и упрощенный по сравнению с Си (очень много чего там не было, начиная с функций). Интерпретируемый. Лек. анализатор написан yacc"ом. Работал отвратительно. По-видимому, я был одним из немногих людей на планете, кто решил-таки с ним разобраться. Потратил 3 дня - и забил, т.к. работать было совершенно невозможно. Поэтому у меня закралось подозрение, что все эти генераторы парсеров использовать не надо. Возможно я не прав.

Пример синт. анализатора для Паскаля можно найти у Вирта - последняя треть книги как раз про это.



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2005.01.23;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.062 c
14-1104433265
Гарри Поттер
2004-12-30 22:01
2005.01.23
Помогите, плз. Винда не дает реестр редактировать.


1-1105284448
andruxa
2005-01-09 18:27
2005.01.23
Народ, кто как гасит подсказки сзданные THintWindow.create(self);


1-1104867226
LIMBO
2005-01-04 22:33
2005.01.23
Узнать размер файла


1-1105348076
viola
2005-01-10 12:07
2005.01.23
Файловый копировальщик-фильтральщик


1-1103878137
Der Schlangen
2004-12-24 11:48
2005.01.23
TCHART - есть вопросы кто подскажет





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский