我用antlr 4.4编写了一个语法,如下所示:
grammar CSV;
file
: row+ EOF
;
row
: value (Comma value)* (LineBreak | EOF)
;
value
: SimpleValueA
| QuotedValue
;
Comma
: ','
;
LineBreak
: '\r'? '\n'
| '\r'
;
SimpleValue
: ~(',' | '\r' | '\n' | '"')+
;
QuotedValue
: '"' ('""' | ~'"')* '"'
;
然后我使用antlr 4.4生成解析器&词法分析,
这个过程很成功
在生成类之后,我编写了一些使用语法的java代码
import org.antlr.v4.runtime.ANTLRInputStream;
import org.antlr.v4.runtime.CommonTokenStream;
public class Main {
public static void main(String[] args)
{
String source = "\"a\",\"b\",\"c";
CSVLexer lex = new CSVLexer(new ANTLRInputStream(source));
CommonTokenStream tokens = new CommonTokenStream(lex);
tokens.fill();
CSVParser parser = new CSVParser(tokens);
CSVParser.FileContext file = parser.file();
}
}
以上所有代码都是CSV字符串的解析器
例如:“”a“,”b“,c”
窗口输出:
line 1:8 token recognition error at: '"c'
line 1:10 missing {SimpleValue, QuotedValue} at ''
我想知道如何从代码隐藏中的方法(getErrors()或…)中获取此错误而不是输出窗口的结果
谁能帮我 ?