ВУЗ:
Составители:
Синтаксический анализатор для этой грамматики
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
- …
- следующая ›
- последняя »