ВУЗ:
Составители:
Синтаксический анализатор для этой грамматики
Procedure S;
Begin A; {распознать А}
B; {распознать B}
If CH <> `⊥` then ER
End;
Procedure A;
Begin if CH=`a` then GC else
If CH=`c` then begin GC; A end else ER
Procedure B;
Begin
If CH=`b` then begin GC; A end else ER
End;
End;
3.2 Синтаксический анализатор для языкa MPL
П е р е м е н н а я:
LEX лексема.
П р о ц е д у р ы:
GL считывание очередной лексемы в переменную LEX;
ERR(rule) обнаружение синтаксической ошибки.
Логические ф у н к ц и и:
ID LEX - идентификатор?
NUM. LEX -число?
EQ(S) LEX - лексема для S?
Процедуры, проверяющие выполнение правил, описывающих язык
MPL и составляющие синтаксический анализатор:
1) Р:: program D ; В.
procedure Р;
begin if EQ(`program`) then GL else ERR (rpl);
D1;
if EQ(`.`) then GL else ERR (rp2);
B;
if not EQ(`.`) then ERR (rp3);
end;
2) D`::=var D{,D}
procedure D1;
begin if EQ(`var`) then GL else ERR (rdl)
D;
While EQ(`.`)do begin GL; D end
17
Синтаксический анализатор для этой грамматики
Procedure S;
Begin A; {распознать А}
B; {распознать B}
If CH <> `⊥` then ER
End;
Procedure A;
Begin if CH=`a` then GC else
If CH=`c` then begin GC; A end else ER
Procedure B;
Begin
If CH=`b` then begin GC; A end else ER
End;
End;
3.2 Синтаксический анализатор для языкa MPL
П е р е м е н н а я:
LEX лексема.
П р о ц е д у р ы:
GL считывание очередной лексемы в переменную LEX;
ERR(rule) обнаружение синтаксической ошибки.
Логические ф у н к ц и и:
ID LEX - идентификатор?
NUM. LEX -число?
EQ(S) LEX - лексема для S?
Процедуры, проверяющие выполнение правил, описывающих язык
MPL и составляющие синтаксический анализатор:
1) Р:: program D ; В.
procedure Р;
begin if EQ(`program`) then GL else ERR (rpl);
D1;
if EQ(`.`) then GL else ERR (rp2);
B;
if not EQ(`.`) then ERR (rp3);
end;
2) D`::=var D{,D}
procedure D1;
begin if EQ(`var`) then GL else ERR (rdl)
D;
While EQ(`.`)do begin GL; D end
17
Страницы
- « первая
- ‹ предыдущая
- …
- 12
- 13
- 14
- 15
- 16
- …
- следующая ›
- последняя »
