2017-11-17 为clang添加中文关键字

介绍了一种基于Clang的编译器,通过添加与英文关键字等效的中文关键字,实现对中文源代码的支持。该方法涉及修改Clang的TokenKinds.def和IdentifierTable.cpp文件,以识别并处理中文宏。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

知乎原文地址 作者:@狗屎咖啡

以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的编译方法参照官网。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值