2013-02-25 5 views
1
 PROC_DECL -> "proc" [ "ret" TYPE ] NAME 
        "(" [ PARAM_DECL { "," PARAM_DECL } ] ")" 
        "{" { DECL } { STMT } "}" 

이것은 프로 시저 선언의 문법입니다.CUP : 구문 분석을 위해 무언가를 선택하는 방법?

여러 사례를 만들지 않고 "ret"유형을 선택한다고 어떻게 말합니까?

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*/ :} 

당신은 매개 변수 선언에 동일한 방식을 적용 할 수 있습니다 :

답변

1

다른 제품을 사용하여,이 작품이됩니다 .cup 파일 있도록 빈 두거나 하나의 return 문을 포함 할 수있는 ret_stmt 말 프로덕션 param_list를 추가합니다.