您的位置:首页 > 编程语言 > C语言/C++

JavaCC -- 中文字符解析失败(c++版)

2017-05-08 09:48 411 查看

问题

查询”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++