当前位置: 首页 > 知识库问答 >
问题:

如何使用ANTLR检查有效的变量名?

周翰池
2023-03-14
grammar validName;

var_declaration :VAR id COLON;
VAR: 'var';
COLON: ':';
DIGIT: [0-9];
ALPHA: [a-zA-Z_];
ALPHANUM: ALPHA | DIGIT;

id: ALPHA ALPHANUM*;

WS: [ \n\t\r]+ -> skip;
var myId : 

这里是错误:

line 1:5 mismatched input 'y' expecting ':'

为什么字母*不匹配任何东西??

共有1个答案

景哲
2023-03-14

在Antlr中,lexer将在解析器运行之前运行到完成。解析器规则对lexer的行为没有影响。

因此,给定文本myid,lexer将发出四个alpha标记。这是因为alpha规则首先出现,并且alphaalphanum规则的匹配长度相同。实际上,Alphanum永远不会匹配,因为前面列出了Digit

尝试:

var_declaration :VAR ID COLON;

VAR: 'var';
ID: ALPHA ( ALPHA | DIGIT )*;

COLON: ':';
DIGIT: [0-9];
ALPHA: [a-zA-Z_];
WS: [ \n\t\r]+ -> skip;
 类似资料:
  • 问题内容: 我对angularjs很陌生。说我的应用程式有表格。使用检查器,我注意到,如果angularjs认为该表单无效,则会向该表单添加ng- invalid类。可爱。 因此,似乎为了检查表单是否有效,我需要使用Jquery选择器来污染我的代码吗?不使用表单控制器来指示表单有效性的angularjs方法是什么? 问题答案: 当您将标签放入ngApp时,AngularJS会自动添加表单控制器(实

  • 我一直试图弄清楚这种Luhns的方法来验证信用卡,但我似乎无法弄清楚。我需要使用方法,而不能使用数组,所以我完全被难住了。 null 我的问题是,我仍然在学习方法(完全是初学者。去年我试着学过一次代码,但放弃了,但这次我设法做到了这一点),我不知道如何使用这些方法来完成Luhn检查中的第4步和第5步。 谁能帮我一下吗?谢谢!!

  • 问题内容: 我想知道如何检查变量是否是类(不是实例!)。 我试图使用该函数来执行此操作,但我不知道类将具有哪种类型。 例如,在以下代码中 我试图用 ??? 代替“ ” ,但我意识到这是python中的关键字。 问题答案: 更好的是:使用该功能。

  • 在我的JSP中,我使用JSTL设置某个变量: 然后在jQuery中,在$(文档). Ready(函数(){...})中,我需要检查“myVar”的值。 这不管用。“if”条件的计算结果总是。

  • 问题内容: 检查URL在Java中是否有效的最佳方法是什么? 如果试着拨打和赶上,但它似乎很乐意与任何开头。 我不关心建立连接,只是有效性。有办法吗?Hibernate Validator中的注释?我应该使用正则表达式吗? 编辑:和 URL的一些示例。 问题答案: 考虑使用Apache Commons UrlValidator类 有几个属性,您可以设置来控制如何类的行为,在默认情况下,和被接受。

  • 问题内容: 在NodeJS和V8中,有什么方法可以有效地检查变量是Object还是Array? 我正在为MongoDB和NodeJS编写模型,并遍历对象树,我需要知道对象是简单对象(数字,字符串,…)还是复合对象(哈希,数组)。 似乎V8具有快速内置的功能,但是如何检查object是否为Object?我的意思是像哈希或类实例这样的复杂对象,不是吗? 通常可以这样做: 或这个: 但是,似乎这种操作并