我需要一些帮助,因为我知道如何在我的语言上创建一种定义函数的方法:
function:
ID ‘as’ DATATYPE ‘(‘ arguments ‘)’ instruction* EndFun;
我的问题是,如果我想制作"void"功能,我如何防止用户输入"返回ID">
function:
ID (‘as’ DATATYPE)? ‘(‘ arguments ‘)’ instruction* EndFun;
PS:指令令牌包含"返回ID">
要么在解析后检查void
函数是否包含 return 语句(这就是我要做的(,要么做这样的事情:
function
: ID 'as' DATATYPE '(' arguments ')' instruction* EndFun
| 'void' '(' arguments ')' instruction_no_return* EndFun
;
instruction
: instruction_no_return
| 'return' ID
;
instruction_no_return
: instruction_a
| instruction_b
| instruction_c
;