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

不包括令牌的Antlr Lexer规则

巩衡
2023-03-14
AND                 : ('a'|'A') ('n'|'N') ('d'|'D');
OR                  : ('o'|'O') ('r'|'R') ;
NOT                 : ('n'|'N') ('o'|'O') ('t'|'T') ;

TERM                : ('a'..'z'|'A'..'Z'|'0'..'9'|[1-9])+ ;
negation: NOT;
logical:  AND|OR;
term:     TERM;

search
   : negation? term (logical negation? term)* ;
   ;

现在我得到了:第1行:第4行“and”处缺少术语错误。

我知道我的输入被AND和TERM lexer规则匹配,但我希望能够指定TERM是除与AND规则匹配的内容之外的任何内容。

共有1个答案

陆洲
2023-03-14

尝试将以下内容添加到您的lexer规则中:

ws:[\r\n\t\u000c]+->跳过;

基本上,这是一个与任何whitspace、tab、newline、tr匹配的令牌,并且使用skip告诉ANTLR跳过它。

 类似资料:
  • 我使用postMan,输入请求地址http://localhost:8011/umrah/oauth/token?client_id=client_2&username=1234567&password=123456&grant_type=password&client_secret=123456,点击send按钮,出现错误,在内存中工作正常,当我想使用Jdbc令牌存储时,想法控制台错误:找不到令

  • 未将hibernate-cfg.xml添加到war classes文件夹中。我使用以下脚本将web applcation部署到tomcat。复制后,当我启动tomcat时,错误enotFoundException下面的gettign:类路径资源[hibernate.cfg.xml]无法解析URL,因为它不存在

  • 我正试图在Mac OS X El Capitan上使用创建一个虚拟环境。我已经用安装了Python 2.7.11,默认情况下包括、和。 然而,当我尝试安装以下说明在留档或从任何其他资源,我得到几个问题: 完成其工作后,可执行文件未放置在中,因此我需要手动它(这可能表明此步骤的安装有问题) 运行后,它会创建新的环境,从-安装中捕获Python 2.7.11,但是:文件夹中没有。这意味着,如果我尝试,

  • 是否可以使用Firestore安全规则中的Firebase安装令牌? 如何验证FIS auth令牌?它们应该如何使用?

  • 在我的代码中,我想区分相等和不相等的大小写。我想知道如何有效地做到这一点。目前,我以以下方式实现访问者: 我不确定这是否非常有效,因为/调用,它基本上循环所有子级。这样做了多次,所以我不确定这是否明智。另外,我调用两次。关于后者,我知道我可以缓存在一个局部变量中,但如果需要考虑多个子规则,这将很快导致相当丑陋的代码。 有没有办法更有效地做到这一点?基于某种令牌标识符或分支标识符的switch/ca

  • 我正在寻找一种在我的ANLTR解析器中使某些特定标记不区分大小写的方法。我已经尝试过的: > 将我的输入转换为所有小写。这不起作用,因为我语法的某些部分需要区分大小写。 保存标记的大小写版本。这也不起作用,因为这样我的lexer文件变得太大(打破了ANTLR的64k限制)。 我希望存在的是一些正则表达式技巧,或者可能是一个ANTLR标志,它告诉解析器以不同的方式对待某些标记。 例如: lexer应