为ANTLR v4生成的解析器提供更好的错误消息?

时间:2013-09-19 16:48:07

标签: antlr antlr4

有人可以提供指针,如何优化来自ANTLR生成的解析器的错误消息?

这条消息对我说话,但可能不是那个人,你最后的工具应该是谁:

    >> grun Php start -gui

    function f() { $d = 23; $f = 12; }

    line 1:24 missing '}' at '$f'
    line 1:33 extraneous input '}' expecting {<EOF>, 'interface', '(object)', 'yield', '`',
 'trait', 'namespace', '__TRAIT__', 'echo', '(unset)', 'abstract', '__FUNCTION__', '"', 'do',
 'use', 'throw', '@', 'print', 'global', 'inlcude_once', 'goto', 'empty', 'class', '!',
 'foreach', '__METHOD__', '-', 'while', '(double)', 'exit', 'if', 'require', '__NAMESPACE__',
 'isset', 'array', 'break', 'final', '__halt_compiler', '$', 'isempty', '+', '(array)',
 'switch', 'clone', 'declare', '(bool)', '~', '(string)', '[', 'continue', '__LINE__', '+++',
 'const', 'new', '__CLASS__', '__FILE__', 'unset', '(', 'try', '{', '\\', 'static', 'eval',
 'require_once', '(int)', 'for', 'list', 'return', ';', 'include', '__DIR__', T_VARIABLE,
 T_LNUMBER, T_DNUMBER, T_STRING_VARNAME, T_CONSTANT_ENCAPSED_STRING, StringLiteral,
 'function', '++', '--', T_START_HEREDOC, T_STRING}

1 个答案:

答案 0 :(得分:0)

实施ANTLR错误策略。书中有很多例子。第9章第149页。 叔