如何编写规则以在ANTLR中定义方法

吉鲁菲

我正在使用ANTLR创建DSL,并且我想定义以下语法

// study without parameters
study()
// study  with a single parameter
study(x = 1)
// study with several parameters
study(x = 1, x = 2)

这是我的语法,它允许以下输入: study(x=1x=2)

study: 'study' '(' ( assign* | ( assign (',' assign)*) ) ')' NEWLINE;
assign: ID '=' (INT  | DATA );
INT :   [0-9]+ ;
DATA    : '"' ID '"' | '"' INT '"';
ID  :   [a-zA-Z]+ ;
sepp2k

您的语法允许,study(x=1x=2)因为assign*匹配x=1x=2如果您不想允许这样的输入,则应删除assign*替代项。要允许空的参数列表,您只需将括号之间的所有内容设为可选:

study: 'study' '(' (assign (',' assign)*)? ')' NEWLINE;

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何编写 Firestore 安全规则以在单个字段中也允许空值和未定义值?

如何编写规则以防止从数据库中删除节点

如何编写Nginx重写规则以替换查询字符串中的查询参数

IBM ODM:如何定义规则以仅验证字符串中的数值

如何在QTCreator中创建自定义构建规则以生成代码?

如何定义摇动规则以构建Docker映像?

如何创建自定义后缀规则以使用另一个目录中的标题?

编写udev规则以停止systemd下的服务的正确方法是什么

如何编写 Firestore 规则以仅允许使用 Web APY 密钥进行 REST API 调用?

太棒了WM:如何编写规则以使窗口在鼠标下浮起?

如何编写Firebase规则以仅读取部分集合/文档?

如何以非递归方式编写Antlr规则?

如何为字符串编写 antlr4 规则

SonarQube:创建自定义规则以在类中获取自定义注释

antlr:如何避免在规则中识别空格

如何在Yacc中制定特定规则以先于其他规则先减少?

如何在ANTLR4中为UUID v4编写词法分析器规则?

我如何定义重写规则以接受除a-zA-Z-之外的空字符串?

如何定义“其他”解析器规则以捕获非法额外内容

如何创建自定义 PMD 规则以检查是否在循环中开始引用 DSLContext 的实例?

如何在antlr的go目标中编写自定义错误报告程序

在StyleCop Analyzer中配置排序规则以强制执行用户定义的成员顺序

是否可以添加自定义规则以推断AllegroGraph中的新关系?

如何设置iptables规则以允许Skype

如何在自动制作中编写自定义的静音规则?

如何在控制器Laravel中编写自定义验证规则?

如何编写类型类方法的重写规则?

如何在测试套件中定义JUnit方法规则?

如何在NGINX中添加规则以从网址中删除日期部分