Курсовая работа1 / AРАIIА~1
.DOC
Грамматика № 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 = переменная