加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 如何在ANTLR中管理可选空格?

发布时间:2020-12-14 05:57:23 所属栏目:Java 来源:网络整理
导读:我试图解析ANTLR中的数据文件 – 它具有可选的空格 3 6 97 12 15 18 以下显示了行的开始和结束位置.最后有一个换行符,没有标签. ^ 3 6$^ 97 12$^ 15 18$^ 我的语法是: lines : line+;line : ws1 {System.out.println("WSOPT :"+$ws1.text+":");} num1 {Syst
我试图解析ANTLR中的数据文件 – 它具有可选的空格
3 6
  97   12
 15 18

以下显示了行的开始和结束位置.最后有一个换行符,没有标签.

^ 3 6$
^  97   12$
^ 15 18$
^

我的语法是:

lines   :   line+;
line    :   ws1 {System.out.println("WSOPT :"+$ws1.text+":");} 
                num1 {System.out.println("NUM1 "+$num1.text);} 
                ws2 {System.out.println("WS :"+$ws2.text+":");}
                num2 {System.out.println("NUM2 "+$num2.text);} 
                NEWLINE
    ;
num1    :    INT    ;
num2    :    INT    ;
ws1 :   WSOPT;
ws2 :   WS;

INT     : '0'..'9'+;
NEWLINE :    'r'? 'n';
//WS    :   (' '|'t' )+ ;
WS  :   (' ')+ ;
WSOPT   :   (' ')* ;

这使

line 1:0 mismatched input ' ' expecting WSOPT
WSOPT :null:
NUM1 3
WS : :
NUM2 6
line 2:0 mismatched input '   ' expecting WSOPT
WSOPT :null:
NUM1 97
WS :   :
NUM2 12
BUILD SUCCESSFUL (total time: 1 second)

(即领先的WS尚未被识别,最后一行已被遗漏).

我想解析没有空格的行,例如:

^12    34$
^ 23 97$

但我得到的错误如下:

line 1:0 required (...)+ loop did not match anything at input ' '

我很欣赏在ANTLR中解析WS的一般解释.

编辑@jitter有一个有用的答案 – {ignore = WS}没有出现在我正在使用的“权威ANTLR参考”书中,因此它显然是一个棘手的领域.

还需要帮助
我把它修改为:

lines   :   line line line;
line
options { ignore=WS; }
        :
                ws1  {System.out.println("WSOPT :"+$ws1.text+":");} 
                num1 {System.out.println("NUM1 "+$num1.text);} 
                ws2  {System.out.println("WS :"+$ws2.text+":");}
                num2 {System.out.println("NUM2 "+$num2.text);} 
                NEWLINE
    ;

但得到错误:

illegal option ignore

编辑显然这已从V3中删除:
http://www.antlr.org/pipermail/antlr-interest/2007-February/019423.html

解决方法

WS : (' ' | 't')+
     {$channel = HIDDEN;}
   ;

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读