Синтаксический анализатор. Написание синтаксического анализатора для языка ADA на любом доступном языке программирования., страница 2

ДИА ® ПР_ВЫР..ПР_ВЫР

+, -, NOT, число, строка, ид_р

ПР_ВЫР ® СК2 СЛАГ СП2

+, -, NOT, число, строка, ид_р

СК2 ® +

СК2 ® СК2 ® NOT

СК2® λ

+

NOT

число, строка, ид_р

СЛАГ ® МН СП3

число, строка, ид_р

СП2 ® ОПЕР_Т_СЛ  СЛАГ  СП__2

+, -, &

СП__2® ОПЕР_Т_СЛ СЛАГ СП__2

СП__2 ® λ

+, -, &

..,=,/=,<,<=,>,>=,;,=>,LOOP,),AND THEN,OR ELSE,OF,|,AND,OR,XOR,,   

ОПЕР_Т_СЛ ® +

ОПЕР_Т_СЛ ® ОПЕР_Т_СЛ ® &

+

&

СП3 ® ОПЕР_Т_УМ   МН  СП__3

*, /, MOD

СП__3® ОПЕР_Т_УМ  МН  СП__3

СП__3 ® λ

*, /, MOD

+, -, &

ОПЕР_Т_УМ ® *

ОПЕР_Т_УМ ® /

ОПЕР_Т_УМ ® MOD           

*

/

MOD

МН ® ПЕРВ СК3

число, строка, ид_р

СК3 ® **ПЕРВ

СК3 ® λ

**

+,-,?,*,/,MOD,..,=,/=,<,<=,>,>=,;,=> ,LOOP,),AND THEN,OR ELSE,OF,|,AND,OR,XOR,,     

ПЕРВ ® число

ПЕРВ ® строка

ПЕРВ ® ид_р СК5

число строка ид_р

СК5 ® (СООТ_ПАР СП4)

СК5 ® λ

(

**,+,-,?,*,/,MOD,..,=,/=,<,<=,>,>=,;,=> ,LOOP,),AND THEN,OR ELSE,OF,|,AND,OR,XOR,,     

СП4 ® , СООТ_ПАР  СП__4

,

СП__4 ® , СООТ_ПАР  СП__4

СП__4 ® λ

,

)

СООТ_ПАР ® СК6   ВЫР

ид_р, AND, OR, XOR

!!СК6 ® ид_р:=

СК6 ® λ

ид_р

+, -, NOT, число, строка, ид_р

ВЫР ® ОТН СП__5

+, -, NOT, число, строка, ид_р

ПОРАЗ ® AND

ПОРАЗ ® OR

ПОРАЗ®XOR

AND

OR

XOR

СП__5® ПОРАЗ ОТН СП__5

СП__5® λ

AND, OR, XOR

;,OF,THEN,),AND THEN, OR ELSE,ид_р,,END,ELSIF,ELSE,WHEN

ОТН ® ПР_ВЫР   СК7

+, -, NOT, число, строка, ид_р

СК7 ® ОПЕР_ОТН  ПР_ВЫР

СК7 ® λ

=, /=, <, <=, >, >=

;,OF,THEN,),AND THEN, OR ELSE,ид_р,,END,ELSIF,ELSE,WHEN

ОПЕР_ОТН® =

ОПЕР_ОТН® /=

ОПЕР_ОТН® <

ОПЕР_ОТН® <=

ОПЕР_ОТН® >

ОПЕР_ОТН® >=   

=

/=

<=

>=

тип® INTEGER

тип® FLOAT

тип® BOOL                

INTEGER

FLOAT

BOOL

СП_ИД ® ид_р  СП8

ид_р

СП8 ® ид_р  СП__8

ид_р

СП__8 ® , ид_р СП__8

СП__8 ® λ

,

:

СК8 ® CONSTANT

СК8 ® λ

CONSTANT

INTEGER,FLOAT,BOOL

СК9 ® :=ВЫР

СК9 ® λ                  

:=

;

УСЛ ® ВЫР  СП10

+, -, NOT, число, строка, ид_р

СП9 ® ELSIF УСЛ THEN ПОСЛ_ОПЕР СП__9

ELSIF

СП__9® ELSIF УСЛ THEN ПОСЛ_ОПЕР СП__9

СП__9® λ

ELSIF

ELSE, END IF

СК11 ® ELSE ПОСЛ_ОПЕР

СК11® λ

ELSE

END IF

СП10 ® ВЫБОР СП__10

AND THEN, OR ELSE

СП__10® ВЫБОР ВЫР СП__10

СП__10® λ

AND THEN, OR ELSE

THEN,ELSIF,WHEN,END,ELSE,ид_р,LOOP

ВЫБОР ® AND THEN

ВЫБОР ® OR ELSE

AND

OR

ПОСЛ_ОПЕР ® ОПЕРАТОР СП__12

ид_р

СП__12 ® ОПЕРАТОР СП__12

СП__12 ® λ

ид_р

ELSIF,WHEN,END,ELSE

!!ОПЕРАТОР ® ид_р := ВЫР;

ОПЕРАТОР ® ид_р СК5;

ОПЕРАТОР ® EXIT СК13

ОПЕРАТОР ® RETURN СК14;

ОПЕРАТОР ® GOTO ид_р;

ОПЕРАТОР ® DELAY ПР_ВЫР;

ОПЕРАТОР ® IF УСЛ THEN ПОСЛ_ОПЕР СП9 СК11 ENDIF;

ОПЕРАТОР ® CASE ВЫР OF СП13 END CASE;

ОПЕРАТОР ® СК15 ОСН_ЦИКЛ

ОПЕРАТОР ®BEGIN ПОСЛ_ОПЕР END СК12;

ид_р ид_р

EXIT

RETURN

GOTO

DELAY

IF

CASE

FOR, WHILE, LOOP

BEGIN

СК12 ® ид_р

СК12 ® λ

ид_р

;

СК13 ® WHEN УСЛ

СК13 ® λ

WHEN

ид_р, ELSIF,END,ELSE,END IF,END LOOP,END CASE

СК14 ® ВЫР

СК14 ® λ

+, -, NOT, число, строка, ид_р

;

СП13 ® WHEN ВАРИ СП14 => ПОСЛ_ОПЕР СП__13

WHEN

СП__13 ® WHEN ВАРИ СП14 =>ПОСЛ_ОПЕР СП__13

СП__13 ® λ

WHEN

END CASE

СП14 ® |ПР_ВЫР СП__14

|

СП__14 ® |ПР_ВЫР СП__14

СП__14 ® λ

|

=>

ОСН_ЦИКЛ ® LOOP ПОСЛ_ОПЕР END LOOP;

LOOP

СК15 ® FOR ид_р IN СК17 ДИА

СК15 ® WHILE УСЛ

СК15 ® λ

FOR

WHILE

LOOP

СК17 ® REVERSE

СК17 ® λ

REVERSE

+, -, NOT, число, строка, ид_р

ПР_ПОД ® FUNCTION

ПР_ПОД ® PROCEDURE

FUNCTION

PROCEDURE

ОБОЗ ® ид_р

ОБОЗ ® строка символов

ид_р строка символов

СПЕЦ_ПОД® ПР_ПОД ОБОЗ СК18  СК19

FUNCTION, PROCEDURE

СК18 ® (ОБ_ПАР  СП15)

СК18 ® λ

(

;, IS, RETURN

СК19 ® RETURN тип

СК19 ® λ

RETURN

;, IS

СП15 ® ;ОБ_ПАР СП__15

;

СП__15 ® ;ОБ_ПАР СП__15

СП__15 ® λ

;

)

ОБ_ПАР ® СП_ИД : ВИД_СВ  тип

ид_р

ВИД_СВ ® INOUTIN OUT

ВИД_СВ ® λ

IN, OUT, IN OUT

INTEGER,FLOAT,BOOL                

СОВ_ОБ ® СП16  СП17

ид_р, FUNCTION, PROCEDURE

СП16 ® ОБ_Е СП__16

ид_р, FUNCTION, PROCEDURE

СП__16 ® ОБ_Е СП__16

СП__16 ® λ

ид_р, FUNCTION, PROCEDURE

FUNCTION, PROCEDURE

ОБ_Е ® СП_ИД : СК8 тип СК9;

ОБ_Е ® СПЕЦ_ПОД;

ид_р

FUNCTION, PROCEDURE

СП17 ® ТЕЛО СП__17

FUNCTION, PROCEDURE

СП__17 ® ТЕЛО СП__17

СП__17 ® λ

FUNCTION, PROCEDURE

BEGIN

ТЕЛО ® СПЕЦ_ПОД ISСОВ_ОБ BEGINПОСЛ_ОПЕР ENDСК21;

FUNCTION, PROCEDURE

СК21 ® ид_р

СК21 ® строка символов

СК21 ® λ

ид_р строка символов

;