PROC_DECL -> "proc" [ "ret" TYPE ] NAME
"(" [ PARAM_DECL { "," PARAM_DECL } ] ")"
"{" { DECL } { STMT } "}"
这是过程声明的语法。
你怎么说“ret” TYPE 是可选的而不做多个案例?
PROC_DECL -> "proc" [ "ret" TYPE ] NAME
"(" [ PARAM_DECL { "," PARAM_DECL } ] ")"
"{" { DECL } { STMT } "}"
这是过程声明的语法。
你怎么说“ret” TYPE 是可选的而不做多个案例?
使用另一个产品,比如 ret_stmt,它可以是空的,也可以包含单个 return 语句,因此在您的 .cup 文件中,您将拥有以下产品:
ret_stmt ::= // empty
{: /*your action for empty return statement*/ :}
// Single return statement
| "ret":r TYPE:t
{: /*your action for single return statement*/ :}
PROC_DECL ::= "proc":p ret_stmt:r NAME:n
"(" param_list:pl ")"
"{" { DECL } { STMT } "}"
{: /*your action for procedure declaration statement*/ :}
您可以使用与参数声明类似的方法,添加生产 param_list。