antlr 解析 java method_java – 如何获取antlr解析的错误消息?

我用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()或…)中获取此错误而不是输出窗口的结果

谁能帮我 ?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值