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を追加できます。