简体   繁体   English

如何在 antlr4 中为 function 创建令牌

[英]How do I create a token for a function in antlr4

I need some help, because I know how to create a way to define a function on my language:我需要一些帮助,因为我知道如何创建一种在我的语言上定义 function 的方法:

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

My problem is, if I want to make 'void' functions, how can I prevent from user to input a 'return ID'我的问题是,如果我想制作“无效”功能,如何防止用户输入“返回 ID”

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

ps: instructions token includes 'return ID' ps:指令令牌包括“返回ID”

Either check after parsing if a void function contains a return statement (which is what I'd do), or do something like this:解析后检查void function 是否包含返回语句(这是我要做的),或者执行以下操作:

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
 ;

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM