首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ANTLR4空白导致问题

ANTLR4空白导致问题
EN

Stack Overflow用户
提问于 2014-07-27 12:23:03
回答 1查看 186关注 0票数 1

我已经使用CoCoR很长一段时间了,我想我应该看看ANTLR4。我使用的是ANTLR4的C#版本。我把语法的开头部分放在一起,发现它不起作用。经过大量的实验,我发现问题归结为空格的问题。下面是演示这个问题的一个小语法:

代码语言:javascript
复制
grammar AB;

/*
 * Parser Rules
 */
parse: ab;


ab: IDENT ( ',' IDENT )*;

/*
 * Lexer Rules
*/

IDENT: A_Z_ ( A_Z_ | DIGIT )*;

fragment A_Z_: [A-Z,a-z,_];
fragment DIGIT: [0-9];

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

在给语法输入时,我得到了:

A、B没有语法错误。

A、B没有语法错误。

A,B给出: Line: 1无关输入',B‘应为{,','}

在我对空格处理的理解中,我可能遗漏了一些东西,但我认为WS规则应该丢弃所有的空格,所以任何输入都应该等同于A、B输入。另外,如果我注释掉WS规则,也没有什么不同。这就好像WS规则什么也不做一样。

EN

回答 1

Stack Overflow用户

发布于 2014-07-27 13:06:51

问题是您的IDENT规则中使用了逗号。

不要这样做:

代码语言:javascript
复制
fragment A_Z_: [A-Z,a-z,_];

但要这样做:

代码语言:javascript
复制
fragment A_Z_: [A-Za-z_];
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24977892

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档