6
     PROC_DECL -> "proc" [ "ret" TYPE ] NAME
                  "(" [ PARAM_DECL { "," PARAM_DECL } ] ")"
                  "{" { DECL } { STMT } "}"

これは、プロシージャ宣言の文法です。

「ret」TYPEは、複数のケースを作成せずにオプションであるとどのように言いますか?

4

1 に答える 1

6

別のプロダクション、たとえば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を追加できます。

于 2013-06-20T23:09:55.750 に答える