如何在 antlr4 中为函数创建令牌

How do I create a token for a function in antlr4

我需要一些帮助,因为我知道如何创建一种方法来用我的语言定义函数:

function: 
    ID ‘as’ DATATYPE ‘(‘ arguments ‘)’ instruction* EndFun;

我的问题是,如果我想制作 'void' 函数,我怎样才能防止用户输入 'return ID'

function: 
    ID (‘as’ DATATYPE)? ‘(‘ arguments ‘)’ instruction* EndFun;

ps:说明token包含'return 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
 ;