首页 > 解决方案 > 令牌识别错误:ANTLR4.8 C++ 目标中度数符号的“°”

问题描述

我越来越

token recognition error at: '°' 

对于学位符号,我不知道该怎么做。

在我定义的词法分析器中

度数:'\uC2B0' | '\u00F8';

用于词法分析器和解析器的 .g4 文件以 UTF-8 存储。输入文件也以 UTF-8 格式存储。当我在十六进制编辑器中查看输入文件时,度数符号被编码为 c2 b0。

读取输入文件并解析的代码

std::ifstream is(inputFile);

antlr4::ANTLRInputStream antlrIs(is);
TagsLexer lexer(&antlrIs);
antlr4::CommonTokenStream tokens(&lexer);
TagsParser parser(&tokens);
TagsParser::TagsContext* tagsContext = parser.tags();

标签: c++unicodeantlrantlr4

解决方案


将实际的 unicode 符号 \u00B0 与其在 UTF-8 C2 B0 中的编码混合的简单案例。


推荐阅读