ANTLR:如何使用ANTLR 4根据索引位置解析定长文本文件?

时间:2018-12-06 10:34:36

标签: antlr4

输入:

101 04200001312345678981107291600A094101US FORD NA             TEST COMPANY101                
5225TEST COMPANY                       11234567898PPDTEST BUYS 110801110801   1098765430000001

以上各行的固定长度为94个字符。

预期输出:基于此输入,Antlr语法应基于索引位置进行解析。

例如:如果解析器在第一行的起始字符中标识为“ 1”。它应将整行识别为 HEADER1 作为单独的字符串。

就像解析器在第二行的起始索引中找到“ 5”一样。它应该将整行识别为 HEADER2

2 个答案:

答案 0 :(得分:1)

fragment Digit: '0'..'9' ;
fragment Alpha: '_' | 'A'..'Z';

Number: Digit+ ;
Alphanumeric: (Letter | Digit)+ ;

header1: '1' Alphanumeric+
header2: '5' Alphanumeric+

WS
  : (' ' | '\t') -> skip //channel (HIDDEN) 
  ;

答案 1 :(得分:0)

您使用哪个工具进行解析?

在Android Studio中使用Antlr v4插件解析您的语法时,我得到了下面的树。

enter image description here