Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file added .DS_Store
Binary file not shown.
109 changes: 103 additions & 6 deletions Grammar/g2.txt
Original file line number Diff line number Diff line change
@@ -1,27 +1,124 @@
program
int,char,string,;
program
0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,int,char,string,;,(,),[,],{,},+,-,*,/,%,&&,||,>,<,>=,<=,==,!=,if,else,while,
program,statement_list,statement,simple_statement,compound_statement,assignment_statement,declaration_statement,io_statement,if,while_statement,primitive_type,list_type,type,arithmetic_operator,relational_operator,expression,term,factor,identifier,condition,word,number,nonZeroDigit,digit,letter

program -> statement_list

statement_list -> statement statement_list
statement_list -> statement

statement -> simple_statement
statement -> compound_statement

simple_statement -> assignment_statement ;
simple_statement -> declaration_statement ;
simple_statement -> io_statement ;

compound_statement -> if_statement
compound_statement -> while_statement

primitive_type -> int
primitive_type -> char
primitive_type -> string

list_type -> primitive_type [ number ]

type -> primitive_type
type -> list_type

arithmetic_operator -> +
arithmetic_operator -> -
arithmetic_operator -> *
arithmetic_operator -> /
arithmetic_operator -> %
expression -> constant
expression -> identifier
expression -> identifier [ number ]
expression -> constant

relational_operator = &&
relational_operator = ||
relational_operator = >
relational_operator = <
relational_operator = >=
relational_operator = <=
relational_operator = ==
relational_operator = !=

expression -> expression + term
expression -> term
expression -> expression - term
term -> term * factor
term -> factor
term -> term / factor
term -> term mod factor
factor -> ( expression )
factor -> identifier

expression -> term + expression
expression -> term - expression
expression -> term
term -> factor * term
term -> factor / term
term -> factor
factor -> identifier
factor -> ( expression )

condition -> expression relational_operator expression

declaration_statement -> type identifier
declaration_statement -> type identifier = expression

io_statement -> identifier = readInt ( )
io_statement -> identifier = read ( )
io_statement -> print ( expression )

if_statement -> if ( condition ) { statement_list }
if_statement -> if ( condition ) { statement_list } else { statement_list }

while_statement -> while ( condition ) { statement_list }

identifier -> word
identifier -> word number

word -> letter
word -> letter word

letter -> a
letter -> b
letter -> c
letter -> d
letter -> e
letter -> f
letter -> g
letter -> h
letter -> i
letter -> j
letter -> k
letter -> l
letter -> m
letter -> n
letter -> o
letter -> p
letter -> q
letter -> r
letter -> s
letter -> t
letter -> u
letter -> v
letter -> w
letter -> x
letter -> y
letter -> z

number -> digit
number -> nonZeroDigit number

nonZeroDigit -> 1
nonZeroDigit -> 2
nonZeroDigit -> 3
nonZeroDigit -> 4
nonZeroDigit -> 5
nonZeroDigit -> 6
nonZeroDigit -> 7
nonZeroDigit -> 8
nonZeroDigit -> 9

digit -> 0
digit -> nonZeroDigit