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

Лабораторная работа по предмету «Программирование»
Информация о работе
  • Тема: Программирование синтаксического анализатора
  • Количество скачиваний: 8
  • Тип: Лабораторная работа
  • Предмет: Программирование
  • Количество страниц: 2
  • Язык работы: Русский язык
  • Дата загрузки: 2014-10-26 14:25:09
  • Размер файла: 7.87 кб
Помогла работа? Поделись ссылкой
Информация о документе

Документ предоставляется как есть, мы не несем ответственности, за правильность представленной в нём информации. Используя информацию для подготовки своей работы необходимо помнить, что текст работы может быть устаревшим, работа может не пройти проверку на заимствования.

Если Вы являетесь автором текста представленного на данной странице и не хотите чтобы он был размешён на нашем сайте напишите об этом перейдя по ссылке: «Правообладателям»

Можно ли скачать документ с работой

Да, скачать документ можно бесплатно, без регистрации перейдя по ссылке:

131. ЗАДАНИЕ ЛАБОРАТОРНОй РАБОТЫ № 2

Приложение 2. «"Программирование синтаксического анализатора»
"
3.1. Для заданного фрагмента программы на Паскале разработать грамматику для построения грамматического разбора с помощью рекурсивного спуска.
4.2. В качестве процедуры SCAN использовать лексический анали¬затор, сконструированный в лабораторной работе №1.
5.3. Написать и отладить процедуры рекурсивного спуска.
6.4. Спроектировать тест для проверки работо¬споcобности синтаксического анализатора.

13.11.1. Содержание отчета

Представленная к защите лабораторная работа должна быть оформлена в виде отчета, содержащего:
1. Титульный лист.
2. Краткое теоретическое обоснование.
3. Грамматические правила для нетерминальных символов грамматики.
4. Блок -схему алгоритма с описанием примененных функций и процедур.
5. Текст программы парсера.
6. Отпечатанный диагностический файл для исходного программ¬ного фрагмента (без ошибок и с сознательно допущен¬ными ошибками).
7. Выводы и заключения по проделанной работе.

13.21.2. Варианты заданий для лабораторной работы

Варианты заданий представляют собой модифициро¬ванные фрагменты текстов заданий для ЛР 1, и включают в себя все ранее распознанные лексемы, поэтому нет необходимости строить новый лексический анализатор.

1) for i:=i to ListBox1.Items.Count-1 do
S:=S+Listbox1.Items[i];
2) if Length(S) > 15 + 1 + 10 then Error
3) if (Status = csError) and (Key <> C)then Key:=;
4) if Event.Command = cmCalcButton then
ClearEvent(Event);
5) for I := 0 to 19 do P := New(PButton, cmCalcButton);
6) if Tmp^.Num = StrToInt(S) then i := i+1;
7) if (CEdit1.Text=) and (Kedit2.Text=) then
begin ShowMessage(Please enter data);exit end;
8) if TPoint(Info).Y <= T.Y then
R.Move(0, Desktop^.Size.Y - R.B.Y - 2);
9) P: string[Length(CIndicator)] = CIndicator;
R.A.X := (I mod 4) * 5 + 2;
10) if (Longint(Location) <> Longint(ALocation)) or
(Modified<>AModified) then Location:=ALocation;
11) if State and sfDragging = 0 then Color := GetColor(1);
12) if S[i] in [A..Z]then
Begin
code:=ord(S[i]);
Inc(code,2);
S[i]:=Chr(code)
End
13) if Buffer <> nil then IsValid := True else
EditorDialog(edOutOfMemory, nil);
14) while Count > 0 do
begin
WriteBuf(0, Y, Size.X, 1, B[Delta.X]);
Dec(Count);
end;
15) if EditorDialog(edFind, @FindRec) <> cmCancel then FindStr := Find;
16) while Count <> 0 do
begin
P := NextLine(P); Dec(Count);
end;
17) while (I < CurPtr) and (Buffer^[I] = ) do Inc(I);
18) if HScrollBar <> nil then HScrollBar^.SetState(sfVisible, Enable);
19) if Form1.Button2.Caption=Cancel Then Form1.Button2.Caption:=Previous;
20) if EditorFlags and efPromptOnReplace <> 0 then
TrackCursor(False);
21) if HasSelection and DelSelect then DeleteSelect else
SetSelect(CurPtr, EndPtr, True)
22) if Event.What = evKeyDown then
begin
KeyState := Lo(Key); ClearEvent(Event);
end

23) while (P < BufLen) and (BufChar(P) <> #13) do
Inc(Pos); Inc(P);
end;
24) if UpdateFlags <> 0 then
SetCursor(CurPos.X - Delta.X, CurPos.Y - Delta.Y);
25) if Length(Number) = 1 then Number := 0 else Dec(Number[0]);