Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
6
Добавлен:
01.05.2014
Размер:
22.02 Кб
Скачать

3

Грамматика № 1_1. Программа

Правила :

1) PRG -> pr i ; OO ; sop .

2) PRG -> pr i ; sop .

3) PRG -> OO ; sop .

4) PRG -> sop .

5) OO -> ro

6) OO -> OO ro

где:

Терминалы :

pr = program,

ro = раздел описаний (соответствует 1-му символу грамматики № 1_1, описывающей раздел описаний),

; , . , i = идентификатор, sop = сост_оператор (грамматика № 1_2, описывающая раздел операторов)

Нетерминалы :

Prg -программа OO- описание

правила грамматики :

1) PRG -> pr i ; PRG ; sop .

2) PRG -> pr i ; sop .

3) PRG -> PRG ; sop .

4) PRG -> sop .

5) PRG -> ro

6) PRG -> PRG ro

Грамматика № 1_2. Раздел описаний

Правила :

1) RO -> lab OM

2) RO -> c OC

3) RO -> var OP

4) OC -> i = VR ;

5) OC -> i = VR ; OC

6) OP -> LP : T ; OP

7) OP -> LP : T ;

8) OM -> m

9) OM -> OM , m

10) LP -> i

11) LP -> LP , i

12) T -> int

13) T -> bl

14) T -> ar [ PR ] of bl

15) VR -> Z

16) VR -> tru

17) VR -> fal

18) Z -> -- n

19) Z -> n

20) PR -> n . . n

где:

Терминалы :

lab = ключевое слово label, var = ключевое слово , c = ключевое слово const,

i = идентификатор, n = целое без знака,

m = метка (соответствует грамматике № 1_3),

, , ; , : , = , [ , ] , .

int = ключевое слово integer ,

bl = ключевое слово boolean ,

ar = ключевое слово array ,

of = ключевое слово,

Нетерминалы :

RO = раздел описаний

OC = описание констант

OP = описание переменных

OM = описание меток

LP = список меток

T = тип

PR = промежуток

VR, Z

правила грамматики :

1) RO -> lab RO

2) RO -> c RO

3) RO -> var RO

4) RO -> i = vr ;

5) RO -> i = vr ; RO

6) RO -> RO : RO ; RO

7) RO -> RO : RO ;

8) RO -> m

9) RO -> RO , m

10) RO -> i

11) RO -> RO , i

12) RO -> int

13) RO -> bl

14) RO -> ar [ RO ] of bl

15) RO -> n . . n

Грамматика № 1_3. Метка

Правила :

1) M -> i

2) M -> n

Терминалы :

i = идентификатор, n = целое без знака

Нетерминалы :

M = метка

Грамматика № 2. Раздел операторов

Правила :

1) SOP -> beg LS end

2) SOP -> beg end

3) LS -> OPR

4) LS -> LS ; OPR

5) OPR -> OP1

6) OPR -> LM :

7) OP1 -> LM : OP2

8) OP1 -> OP2

9) LM -> M

10) LM -> LM : M

11) M -> i

12) M -> n

13) Z -> -- n

14) Z -> n

15) OP2 -> OP3

16) OP2 -> SOP

17) OP3 -> O:=

18) OP3 -> OR

19) OP3 -> OW

20) OP3 -> OG

21) OP3 -> OI

22) OP3 -> OWI

23) O:= -> TMP := vr

24) OR -> r ( LPR )

25) OR -> rln ( LPR )

26) OW -> w ( LPR )

27) OW -> wln ( LPR )

28) OG -> gt M

29) OI -> if vr th SOP

30) OI -> if vr th SOP els SOP

31) OWI -> whi vr do OP2

32) LPR -> PAR

33) LPR -> LPR , PAR

34) PAR -> TMP

35) PAR -> Z

36) PAR -> ' str '

37) TMP -> i

38) TMP -> i [ vr ]

где:

Терминалы :

beg = ключевое слово begin,

end = ключевое слово

n = целое без знака

str = ключевое слово string

; , : , := , ' ,

gt = ключевое слово goto

if = ключевое слово

th = ключевое слово then

els = ключевое слово else

whi = ключевое слово while

do = ключевое слово

r = ключевое слово read

rln = ключевое слово readln

w = ключевое слово write

wln = ключевое слово writeln

-- = бинарный минус

vr = выражение (грамматика № 3)

, , [ , ] , ( , ),

i = идентификатор

Нетерминалы :

SOP = составной оператор

LS = список операторов

OPR = оператор

OP1, OP2, OP3,

LM = список меток

M = метка

Z = целое

O:= = оператор присваивания

OR = оператор ввода

OW = оператор вывода

OG = безусловный переход

OI = условный оператор

OWI = оператор цикла

LPR = список параметров

PAR = параметр

TMP = переменная

правила грамматики :

1) VR -> VR or VR

2) VR -> VR and VR

3) VR -> VR < VR

4) VR -> VR > VR

5) VR -> VR <> VR

6) VR -> VR = VR

7) VR -> VR + VR

8) VR -> VR - VR

9) VR -> VR * VR

10) VR -> VR / VR

11) VR -> VR not VR

12) VR -> ( VR )

13) VR -> -- VR

14) VR -> n

15) VR -> i

16) VR -> i [ VR ]

Грамматика № 3. Описание выражений

Правила :

1) VR -> VR or V1

2) VR -> V1

3) V1 -> V1 and V2

4) V1 -> V2

5) V2 -> V2 < V3

6) V2 -> V3

7) V3 -> V3 > V4

8) V3 -> V4

9) V4 -> V4 <> V5

10) V4 -> V5

11) V5 -> V5 = V6

12) V5 -> V6

13) V6 -> V6 + V7

14) V6 -> V7

15) V7 -> V7 - V8

16) V7 -> V8

17) V8 -> V8 * V9

18) V8 -> V9

19) V9 -> V9 / V10

20) V9 -> V10

21) V10 -> V10 not V11

22) V10 -> V11

23) V11 -> ( VR )

24) V11 -> Z

25) V11 -> TMP

26) Z -> -- F

27) Z -> n

28) TMP -> i

29) TMP -> i [ VR ]

30) F -> n

где:

Терминалы :

–, – –, = , < , > , <> , / , + , ( , ) , *, [ , ] ,

i = идентификатор

n = целое без знака

or = ключевое слово

and = ключевое слово

not = ключевое слово

Нетерминалы :

VR = выражение

V1, V2, V3, V4, V5, V6, V7, V8, V9, V10, V11, Z, F

TMP = переменная

Соседние файлы в папке Курсовая работа1