Главная страница
    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.036 c
1-1105009509
XAdmin
2005-01-06 14:05
2005.01.23
Показ значения переменной в виде сообщения


9-1096621382
Jus
2004-10-01 13:03
2005.01.23
DelphiX, DoMove, DoCollision


1-1104824012
SnapIn
2005-01-04 10:33
2005.01.23
Как получить цвет шрифта заголовка GroupBox a под схемой XP


4-1101710405
maxistent
2004-11-29 09:40
2005.01.23
Кард-Ридеры


10-1081195735
ivan
2004-04-06 00:08
2005.01.23
ActiveX control





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский