JavaCC -- 中文字符解析失败(c++版)
2017-05-08 09:48
495 查看
问题
查询”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]相关文章推荐
- 如何利用Xerces C++解析包含中文字符的XML文档
- 如何利用Xerces C++解析包含中文字符的XML文档
- xcode自带的NSJSONSerialization解析中文就会失败
- php解析带中文字符的cookie字符串
- Apache解析html文件中的中文字符出现乱码
- VC/C++的中文字符处理方式
- C++输出中文字符
- C++中文字符的处理
- Volley解析中文字符
- 关于C++中文字符的处理
- 彻底解密C++宽字符,C++国际化策略解析
- C++输出中文字符 C/C++多字节字符与宽字符的输出
- xcode自带的NSJSONSerialization解析中文就会失败
- 关于C++中文字符的处理
- linux下c/c++实例之九识别中文字符
- Boost ptree解析中文字符
- c++字符数组未初始化及初始化后元素内容及其'\0'问题解析
- VC/C++的中文字符处理方式
- 解决C++连接MySQL数据库插入和获取记录中文字符乱码问题
- C++输出中文字符