-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathgrammar
80 lines (80 loc) · 1.61 KB
/
grammar
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
P -> LDE
LDE -> LDE DE
LDE -> DE
DE -> DF
DE -> DT
DT -> TYPE IDD EQUALS ARRAY LEFT_SQUARE NT_NUM RIGHT_SQUARE OF TP
DT -> TYPE IDD EQUALS STRUCT NB LEFT_BRACES DC RIGHT_BRACES
DT -> TYPE IDD EQUALS TP
TP -> INTEGER
TP -> CHAR
TP -> BOOLEAN
TP -> STRING
TP -> IDU
DC -> DC SEMI_COLON LI COLON TP
DC -> LI COLON TP
DF -> FUNCTION IDD NB LEFT_PARENTHESIS LP RIGHT_PARENTHESIS COLON TP MF B
LP -> LP COMMA IDD COLON TP
LP -> IDD COLON TP
B -> LEFT_BRACES LDV LS RIGHT_BRACES
LDV -> LDV DV
LDV -> DV
LS -> LS S
LS -> S
DV -> VAR LI COLON TP SEMI_COLON
LI -> LI COMMA IDD
LI -> IDD
S -> IF LEFT_PARENTHESIS E RIGHT_PARENTHESIS S
S -> IF LEFT_PARENTHESIS E RIGHT_PARENTHESIS S ELSE S
S -> WHILE LEFT_PARENTHESIS E RIGHT_PARENTHESIS S
S -> DO S WHILE LEFT_PARENTHESIS E RIGHT_PARENTHESIS SEMI_COLON
S -> NB B
S -> LV EQUALS E SEMI_COLON
S -> BREAK SEMI_COLON
S -> CONTINUE SEMI_COLON
E -> E AND L
E -> E OR L
E -> L
L -> L LESS_THAN R
L -> L GREATER_THAN R
L -> L LESS_OR_EQUAL R
L -> L GREATER_OR_EQUAL R
L -> L EQUAL_EQUAL R
L -> L NOT_EQUAL R
L -> R
R -> R PLUS TM
R -> R MINUS TM
R -> TM
TM -> TM TIMES F
TM -> TM DIVIDE F
TM -> F
F -> LV
F -> PLUS_PLUS LV
F -> MINUS_MINUS LV
F -> LV PLUS_PLUS
F -> LV MINUS_MINUS
F -> LEFT_PARENTHESIS E RIGHT_PARENTHESIS
F -> IDU MC LEFT_PARENTHESIS LE RIGHT_PARENTHESIS
F -> MINUS F
F -> NOT F
F -> NT_TRUE
F -> NT_FALSE
F -> NT_CHR
F -> NT_STR
F -> NT_NUM
LE -> LE COMMA E
LE -> E
LV -> LV DOT ID
LV -> LV LEFT_SQUARE E RIGHT_SQUARE
LV -> IDU
IDD -> IDENTIFIER
IDU -> IDENTIFIER
ID -> IDENTIFIER
NT_TRUE -> TRUE
NT_FALSE -> FALSE
NT_CHR -> CHARACTER
NT_STR -> STRINGVAL
NT_NUM -> NUMERAL
NB -> ''
MF -> ''
MC -> ''