为clang添加中文关键字

Posted 中文编程

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为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的编译方法参照官网。

以上是关于为clang添加中文关键字的主要内容,如果未能解决你的问题,请参考以下文章

clang 将元数据设置为 allocainst

clang:错误:链接器命令失败,退出代码为 1(Unity 中的 XMPP 库导出了 xcode

使用 pod install 后出现 Swift 错误(clang:错误:链接器命令失败,退出代码为 1)

Clang 抱怨“无法覆盖已删除的函数”,而没有删除任何函数

如何在打开函数的大括号之前使 clang-format 添加新行?

clang 忽略包含文件的 -std=c++11 标志