我需要一些帮助,因为我知道如何在我的语言中创建一个定义函数的方法。
function:
ID ‘as’ DATATYPE ‘(‘ arguments ‘)’ instruction* EndFun;
我的问题是,如果我想做一个 "void "函数, 我如何防止用户输入 "返回ID"。
function:
ID (‘as’ DATATYPE)? ‘(‘ arguments ‘)’ instruction* EndFun;
ps: 指令标记包括'返回ID'。
要么在解析后检查是否有一个 void
函数包含一个返回语句(这是我要做的),或者做一些类似这样的事情。
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
;