-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathFinal_parser.txt
More file actions
77 lines (60 loc) · 1.21 KB
/
Final_parser.txt
File metadata and controls
77 lines (60 loc) · 1.21 KB
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
// Parser Rules
program
: statement* EOF
;
statement
: declaration
| assignment
| arrayDeclaration
| arrayAssignment
| fileOperation
| flowControl
;
declaration
: type IDENTIFIER (ASSIGN_OP expression)?
;
assignment
: IDENTIFIER ASSIGN_OP expression
;
arrayDeclaration
: type IDENTIFIER '[' NUMBER ']'
;
type
: INTEGER
;
arrayAssignment
: IDENTIFIER '[' expression ']' ASSIGN_OP expression
;
fileOperation
: 'filekhola' '(' STRING ')'
| 'filelekha' '(' STRING ',' STRING ')'
| 'filepora' '(' STRING ')'
;
expression
: IDENTIFIER
| NUMBER
| STRING
| expression ARITH_OP expression
| IDENTIFIER '[' expression ']'
| '(' expression ')'
;
flowControl
: ifElse
| whileLoop
| forLoop
;
ifElse
: 'jodi' '(' condition ')' statements ('nahole' statements)?
;
whileLoop
: 'jokhon' '(' condition ')' statements
;
forLoop
: 'proti' '(' (declaration | assignment)? ';' condition? ';' assignment? ')' statements
;
condition
: expression COMPARE_OP expression
;
statements
: statement+
;