Программирование Лексического Анализатора

Тема в разделе "Pascal and Delphi", создана пользователем Karmen, 3 янв 2012.

Статус темы:
Закрыта.
  1. Karmen

    Karmen Гость

    Доброго времени суток!
    Товарищи программисты, у меня курсовая работа на тему: «Программирование лексического анализатора». Мой метод – это конечный автомат. Нужно реализовать с помощью подпрограмм. Т.е. каждому состоянию соответствует процедура/функция.
    Т.е. на вход ЛА подается простой текст (например, .txt), а на выходе он должен сформировать выходную таблицу лексем, а также таблицы констант и идентификаторов (в случае, если типов больше 1, таблица идентификаторов должна содержать поле "тип"). И все это должно отображаться в формочке.
    Грамматика для моего компилятора, диаграмма состояний, пример программы и все таблицы есть в электронном виде!

    Вот небольшой пример:

    Код (Text):
    procedure p1(IsRead:Boolean);
    Begin
    <пропуск белых разделителей>
    If not IsRead then
    c:=NextChar();
    S:=S+c;
    case c of
    'a' .. 'z','A'..'D','F'..'Z' : P2();
    '0','1','2','3','4','5','6','7','8','9' : P3();
    ':' : P4();
    '<' : P5();
    '>' : P6();
    ';',',','+','*','/','?','#','(',')','[',']' :begin
    addlex©;
    p1(false);
    end


    procedure p2(IsRead:Boolean);
    begin
    //пропуск белых расделителей
    if not IsRead then
    c:=NextChar();
    S:=S+c;
    case c of
    'a' .. 'z','A'..'D','F'..'Z','0','1','2','3','4','5','6','7','8','9' : P2;
    else begin
    addlex(S,-1);
    p1(true);
    end;
    end;

    procedure p3(IsRead:Boolean);
    begin
    //пропуск белых расделителей
    if not IsRead then
    c:=NextChar();
    S:=S+c;
    case c of
    '0','1','2','3','4','5','6','7','8','9' : P3;
    else begin
    addlex(S,CONCODE);
    p1(true);
    end;
    end;
    ….
    И так далее для других состояний!
    Пожалуйста, откликнитесь!!!!По зарез надо!!!!!
     
  2. nayke

    nayke Well-Known Member

    Регистрация:
    4 авг 2010
    Сообщения:
    310
    Симпатии:
    0
    Я так понимаю нужна готовая программа? сколько?
     
  3. Vadik(R)

    Vadik(R) Well-Known Member

    Регистрация:
    12 дек 2007
    Сообщения:
    483
    Симпатии:
    0
    Когда-то была лабораторная - написать транслятор с паскаля на c++.
    Там есть этот лексический анализатор, только он лексемы определяет паскалевские. Если нужен, отпишись.
     
Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей