Java 如何在Antlr4中创建能够捕获不同类型词汇错误的词汇分析器
我正在使用Antlr4创建我的词法分析器,但我不知道如何创建一个捕捉不同类型词法错误的词法分析器 例如:Java 如何在Antlr4中创建能够捕获不同类型词汇错误的词汇分析器,java,compiler-construction,antlr,antlr4,lexical-analysis,Java,Compiler Construction,Antlr,Antlr4,Lexical Analysis,我正在使用Antlr4创建我的词法分析器,但我不知道如何创建一个捕捉不同类型词法错误的词法分析器 例如: 如果我有一个无法识别的符号,如^,词法分析器应该报告一个错误,如“无法识别的符号”^” 如果我有一个无效的标识符,如2n,词法分析器应该报告这样的错误“标识符”2n“必须以字母开头” 请帮助我。为每个已知错误创建一个错误标记规则,并在末尾创建一个“catchall”错误标记规则,如下所示: // valid tokens first! Number : [0-9]+; Identifier
^
,词法分析器应该报告一个错误,如“无法识别的符号”^”2n
,词法分析器应该报告这样的错误“标识符”2n“必须以字母开头”请帮助我。为每个已知错误创建一个错误标记规则,并在末尾创建一个“catchall”错误标记规则,如下所示:
// valid tokens first!
Number : [0-9]+;
Identifier : [a-zA-Z] [a-zA-Z0-9]*;
//...
// "error" tokens
// don't use these tokens in your grammar; They will show up as extraneous tokens during parsing and can be handled if desired.
InvalidIdentifier : [0-9]([0-9a-zA-Z])+;
ACommonInvalidToken : '^'; // if you want to be more specific for certain cases
// add more to address common mistakes
UnknownToken : . ; // the "catch-all" error token; be sure not to be too greedy...
ANTLR文档讨论了如何处理错误。您能否为解析树侦听器提供示例代码、正在处理的语法和一些示例输入?lexer如何知道
2n
甚至应该是一个标识符?相关: