为clang添加中文关键字
原址: https://zhuanlan.zhihu.com/p/31158537
以clang为基础做了一个与C++、C兼容中英文关键字的编译器
swizl/cnlang
原理就是加与英文关键字等效的中文关键字
在/include/clang/Basic/TokenKinds.def 中
用ALIAS添加中文关键字
例如
KEYWORD(char, KEYALL) ALIAS("字", char, KEYALL)
在 /lib/Basic/IdentifierTable.cpp 中
加个头文件 #include "llvm/ADT/StringSwitch.h"
在 tok::PPKeywordKind IdentifierInfo::getPPKeywordID() const 里
用 llvm::StringSwitch 添加 中文宏
例如
//default: return tok::pp_not_keyword; default: return llvm::StringSwitch<tok::PPKeywordKind>(Name) .Case("如", tok::pp_if) .Case("定义", tok::pp_define) .Default(tok::pp_not_keyword);
用上面的方式将中文关键字,编译完成后,就可以编译中文源代码了。
llvm/clang的编译方法参照官网。
相关推荐
wanyi0 2020-11-03
拉斯厄尔高福 2020-08-03
KilluaZoldyck 2020-05-09
NewActivity 2020-05-05
qscool 2020-01-10
82467413 2019-12-31
82921934 2019-11-04
solarLan 2019-06-28
慕名ArcGIS 2019-06-27
pang 2019-06-27
DengZY 2019-06-26
zuojinmin 2019-06-26
DengZY 2019-06-25
qingsongzdq 2019-06-21
qingsongzdq 2019-06-21
gmmargin 2015-10-13