program
stmt
stmt
stmt
statement
statement
statement
empty_statement
empty_statement
assignment_stmt
assignment_stmt
while_stmt
while_stmt
if_stmt
if_stmt
print_stmt
print_stmt
putc_stmt
putc_stmt
stmt_list
stmt_list
empty_statement
SEMI
SEMI
assignment_stmt
identifier
identifier
EQ
EQ
arith_operand_expression
arith_operand_expression
SEMI
SEMI
identifier
'while'
'if'
'print'
'putc'
'else'
[NOT]
ident_name
ident_name
[combine]
ident_name
W:(A-Z_a-zªµºÀ-Ö..., 0-9A-Z_a-zªµ·...)
EQ
'='
arith_operand_expression
|| operations
|| operations
|| operations
&& operations
&& operations
||
||
&& operations
&& operations
&& operations
&& operations
&& operations
== | != operations
== | != operations
&&
&&
== | != operations
== | != operations
== | != operations
== | != operations
== | != operations
<= | < | >= | > operations
<= | < | >= | > operations
== | !=
== | !=
<= | < | >= | > operations
<= | < | >= | > operations
<= | < | >= | > operations
<= | < | >= | > operations
<= | < | >= | > operations
+ | - operations
+ | - operations
<= | < | >= | >
<= | < | >= | >
+ | - operations
+ | - operations
+ | - operations
+ | - operations
+ | - operations
* | / | % operations
* | / | % operations
+ | -
+ | -
* | / | % operations
* | / | % operations
* | / | % operations
* | / | % operations
* | / | % operations
+ | - | ! operations
+ | - | ! operations
* | / | %
* | / | %
+ | - | ! operations
+ | - | ! operations
+ | - | ! operations
+ | - | ! operations
+ | - | ! operations
+ | - | !
+ | - | !
+ | - | ! operations
+ | - | ! operations
identifier
identifier
integer
integer
char
char
nested_arith_operand
nested_arith_operand
+ | - | !
[+\-!]
integer
W:(0-9)
char
'\\?.'
nested_arith_operand
'('
[suppress]
arith_operand_expression
arith_operand_expression
')'
[suppress]
* | / | %
[*/%]
+ | -
[+\-]
<= | < | >= | >
<=|<|>=|>
== | !=
==|!=
&&
\&\&
||
\|\|
while_stmt
WHILE
WHILE
paren_expr
paren_expr
stmt
stmt
WHILE
'while'
paren_expr
LPAR
LPAR
arith_operand_expression
arith_operand_expression
RPAR
RPAR
if_stmt
IF
IF
paren_expr
paren_expr
stmt
stmt
ELSE
ELSE
stmt
stmt
IF
'if'
ELSE
'else'
print_stmt
PRINT
PRINT
LPAR
LPAR
prt_list
prt_list
RPAR
RPAR
SEMI
SEMI
PRINT
'print'
LPAR
'('
[suppress]
prt_list
quoted string
quoted string
arith_operand_expression
arith_operand_expression
','
[suppress]
quoted string
quoted string
arith_operand_expression
arith_operand_expression
quoted string
string enclosed in '"'
RPAR
')'
[suppress]
putc_stmt
PUTC
PUTC
paren_expr
paren_expr
SEMI
SEMI
PUTC
'putc'
SEMI
';'
[suppress]
stmt_list
LBRACE
LBRACE
stmt
stmt
RBRACE
RBRACE
LBRACE
'{'
[suppress]
RBRACE
'}'
[suppress]