• B правой части каждого сообщения есть стрелки и . Не стесняйтесь оценивать ответы. Чтобы автору вопроса закрыть свой тикет, надо выбрать лучший ответ. Просто нажмите значок в правой части сообщения.

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

  • Автор темы Karmen
  • Дата начала
Статус
Закрыто для дальнейших ответов.
K

Karmen

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

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

Код:
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;
….

И так далее для других состояний!
Пожалуйста, откликнитесь!!!!По зарез надо!!!!!
 
N

nayke

Доброго времени суток!
Товарищи программисты, у меня курсовая работа на тему: «Программирование лексического анализатора». Мой метод – это конечный автомат. Нужно реализовать с помощью подпрограмм. Т.е. каждому состоянию соответствует процедура/функция.

Я так понимаю нужна готовая программа? сколько?
 
V

Vadik(R)

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

Обучение наступательной кибербезопасности в игровой форме. Начать игру!