JavaCC -- 中文字符解析失败(c++版)
Posted Nireus_LOVE
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JavaCC -- 中文字符解析失败(c++版)相关的知识,希望对你有一定的参考价值。
问题
查询”q=手机”, 提示Error “Lexical error at: 1:5. Encountered: ter: EOF.”;
查询 ‘q=”手机”’, 不提示错误.
查询 “q = 空调”, 不提示错误.
查询 ‘q=”光源”, 提示Error “Lexical error at: 1:3. Encountered: ter: “光. Lexical error at: 1:7. Encountered: ” after: EOF.”.
其他类似错误:
Expecting ; at: 7:35 but got (
Expecting at: 7:35 but got (
Expecting at: 7:35 but got (
Expecting EOF at: 7:35 but got (
原因
'''JavaCC产生的C++代码中,将JAVACC_CHAR_TYPE定义为char, 在文件JavaParserTokenManager.cc中部分分支覆盖。'''
'''(1)JavaCC.h'''
#ifndef JAVACC_CHAR_TYPE
#define JAVACC_CHAR_TYPE char
#endif
'''(2)JavaParserTokenManager.cc'''
...
while(i != startsAt);
else if (**curChar < 128**)
unsigned long long l = 1ULL << (curChar & 077);
(void)l;
do
...
修改方法
'''定义JAVACC_CHAR_TYPE为unsigned char'''
'''JavaCC.h'''
#ifndef JAVACC_CHAR_TYPE
#define JAVACC_CHAR_TYPE unsigned char
#endif
参考
JavaCC github issue ;[c++ generated parser doesn’t support international characters]
以上是关于JavaCC -- 中文字符解析失败(c++版)的主要内容,如果未能解决你的问题,请参考以下文章
JAVACC++Python同样是高级语言,为什么只有C和C++可以编写单片机程序?