如何在antlr4中为一个函数创建一个标记?

问题描述 投票:0回答:1

我需要一些帮助,因为我知道如何在我的语言中创建一个定义函数的方法。

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

我的问题是,如果我想做一个 "void "函数, 我如何防止用户输入 "返回ID"。

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

ps: 指令标记包括'返回ID'。

java antlr4
1个回答
2
投票

要么在解析后检查是否有一个 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
 ;
© www.soinside.com 2019 - 2024. All rights reserved.