ANTLR4:匹配两个关键字之间的所有内容

时间:2015-09-15 07:53:59

标签: java parsing antlr4

我无法解决一个看似的简单问题。我有一个文件,有一个行标题和一些正文:

File: [file name] generated by [tool name], Version [version]
...
file body
...

我需要从此文件中提取文件名,工具名称和版本,然后根据这些值对正文执行某些操作。请记住,名称可以包含任意符号,包括空格和标点符号。

到目前为止,我提出的最接近的是:

Lexer.g4

sbrk

Parser.g4

lexer grammar Lexer;

FILE    : 'File: ';
TOOL    : ' generated by ';
VERSION : ', Version';
HEND    : NL -> pushMode(BODY);
STRING  : .+?;
NL      : '\r'? '\n' | '\r';

mode BODY;
TEXT    : .*? EOF -> popMode;

此解析器的唯一问题是它将文件名,工具名称和版本表示为单字符标记的列表,而不是整个字符串的单个标记。删除' +'在STRING +规则中导致完全失败。

0 个答案:

没有答案