前へ
次へ
文法
program : main_statement_list
main_statement_list
: statement
| main_statement_list statement
statement
: declaration ";"
| selection
| iteration
| put_function ";"
| set_function ";"
| mass_expr ";"
| "{" statement_list "}"
statement_list
: statement
| statement_list statement
declaration
: TYPE declarator_list
declarator_list
: declarator
| declarator_list "," declarator
declarator
: NO_DEFINE
| NO_DEFINE "[" one_expr "]"
| NO_DEFINE "(" one_expr "," one_expr ")"
| NO_DEFINE "(" one_expr "," one_expr "," one_expr ")"
selection
: if.prefix statement
| if.prefix statement "else" statement
if.prefix
: "if" "(" cond_expr ")"
iteration
: for.prefix statement
| while.prefix statement
for.prefix
: "for" "(" mass_expr ";" cond_expr ";" mass_expr ")"
while.prefix
: "while" "(" cond_expr ")"
put_function
: "put" "(" put_argment ")"
put_argment
: STRING
| one_int_variable
| one_flt_variable
| int_variable
| flt_variable
set_function
: "set" "(" set_argment ")"
set_argment
: address_variable "," PARAMETER "," set_argment_sub
| address_variable "," PARAMETER "," PARAMETER
set_argment_sub
: one_expr
| set_argment_sub "," one_expr
mass_expr
: one_expr
| mass_expr "," one_expr
| addr_int_variable "=" one_expr
| addr_flt_variable "=" one_expr
| addr_one_int_variable "=" one_expr
| addr_one_flt_variable "=" one_expr
one_expr
: value_variable
| function
| "(" one_expr ")"
| "(" TYPE ")" one_expr %prec TOPOP
| "++" one_expr
| "--" one_expr
| "+" one_expr %prec TOPOP
| "-" one_expr %prec TOPOP
| one_expr "*" one_expr
| one_expr "/" one_expr
| one_expr "%" one_expr
| one_expr "+" one_expr
| one_expr "-" one_expr
| one_expr "++"
| one_expr "--"
cond_expr
: "(" cond_expr ")"
| one_expr ">" one_expr
| one_expr ">=" one_expr
| one_expr "<" one_expr
| one_expr "<=" one_expr
| one_expr "==" one_expr
| one_expr "!=" one_expr
| one_expr "||" one_expr
| one_expr "&&" one_expr
address_variable
: iCUB_VAL
| fCUB_VAL
| iIMG_VAL
| fIMG_VAL
| addr_one_int_variable
| addr_one_flt_variable
addr_one_int_variable
: INT_VAL
addr_one_flt_variable
: FLT_VAL
addr_int_variable
: iCUB_VAL "(" one_expr "," one_expr "," one_expr ")"
| iIMG_VAL "(" one_expr "," one_expr ")"
| INT_VAL "[" one_expr "]"
addr_flt_variable
: fCUB_VAL "(" one_expr "," one_expr "," one_expr ")"
| fIMG_VAL "(" one_expr "," one_expr ")"
| FLT_VAL "[" one_expr "]"
value_variable
: constant
| one_int_variable
| one_flt_variable
| int_variable
| flt_variable
constant
: INTEGER
| FLOTING
| STRING
one_int_variable
: INT_VAL
one_flt_variable
: FLT_VAL
int_variable
: iCUB_VAL "(" one_expr "," one_expr "," one_expr ")"
| iIMG_VAL "(" one_expr "," one_expr ")"
| INT_VAL "[" one_expr "]"
flt_variable
: fCUB_VAL "(" one_expr "," one_expr "," one_expr ")"
| fIMG_VAL "(" one_expr "," one_expr ")"
| FLT_VAL "[" one_expr "]"
function
: FUNC "(" argment_list ")"
argment_list
:
| argment
| argment_list "," argment
argment : address_variable
| constant
| NO_DEFINE
| PARAMETER
前へ
次へ