问题描述
我是antlr4的新手,想知道它是否能满足我的需求。这是一个示例输入:
There is a lot of text
in this file that i do not care
about
Lithium 20 g/ml
Bor that should be skipped
Potassium 300g/ml
...
和代码:
SempredParser.g4
parser grammar SempredParser;
options { tokenVocab=SempredLexer ;}
file : line+ EOF;
line : KEYWORD (NUM UNIT)+ '\n'+;
SempredLexer.g4:
lexer grammar SempredLexer;
//lexer rules
KEYWORD : ('Lithium' | 'Potassium' ) ;
NL : '\n';
NUM : [0-9]+ ('.'[0-9]+)? ;
UNIT : 'g/ml';
UNKNowN : . -> skip ;
我想跳过所有不包含关键字的行(我大约有100个关键字)。请注意,我在这里仅使用'\ n'作为分隔符,并且理想情况下不会将其解析为输出。
我在权威指南中了解了岛屿语法,并尝试使用词法分析器模式,但无法使其工作。任何提示和帮助都将不胜感激。