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

原文地址:https://www.cnblogs.com/program-in-chinese/p/8213257.html

时间: 2024-10-29 14:15:17

为clang添加中文关键字的相关文章

LaTeX技巧002:\section{}章节命令添加中文编译不了问题

在宏包hyperref前面添加选项CJKbookmarks \usepackage[CJKbookmarks]{hyperref} 并且把这句话尽可能地加在导言区的最底部,即尽可能靠近 \begin{document} . LaTeX技巧002:\section{}章节命令添加中文编译不了问题

添加中文文字水印乱码问题

1确认你服务器上有支持水印的字体 2.确认这个字体是支持中文的 3.确认你文件编码和你中文的编码是一致的 字体问题, 换个支持中文的字体就可以了. 比如说 simfang.ttf 添加中文文字水印乱码问题

Eclipse查询MySql、添加中文乱码问题

一.设置MyEclipse的字符编码,步骤如下: 1.进入Window--Preferences--General--Workspace,Text file encoding 选项中默认的Default(GBK)选项更改为Other,并将值设为utf-8: 2.进入Window--Preferences--MyEclipse--Files and Editors,将这个选项下面的:ASP and PHP.CSS.DTD.HTML.JSP.XML中的字符编码全部更改为utf-8: 3.如果有必要的

让VS2010/VS2012添加新类时自动添加public关键字

在VS添加类别的时候,每次都需要添加public关键字,表示好麻烦. 但是可以避免这个麻烦的. 通过修改VS2010的ItemTemplate,可以避免这个麻烦. 修改方法如下: 1. 打开文件夹Microsoft Visual Studio 10.0\Common7\IDE\ItemTemplates\CSharp\Code\1033,找到class.zip文件,打开该压缩文件并进一 步打开其中的Class.cs文件,在该文件中的"class"前面加上"public&quo

Python 中添加中文注释以及中文输出解释器报错的解决办法

终于知道如果文件里有非ASCII字符,需要在第一行或第二行指定编码声明.把ChineseTest.py文件的编码重新改为ANSI,并加上编码声明. 在代码的第一行 或者 第二行添加指定文件的编码类型 #-*- coding:utf-8 -*-           //添加代码类型1 #coding=utf-8         //添加代码类型2 上面两种方法随便哪一种都可以,别忘记了前面的 # . 这样代码中就可以添加中文注释 和 中文输出了. 另外提醒一句:vim 查看文件的编码类型是在命令模

ubuntu中文乱码--添加中文字符集

在Ubuntu支持中文后(方法见上篇文章),默认是UTF-8编码,而Windows中文版默认是GBK编码.为了一致性,通常要把Ubuntu的默认 编码改为GBK.当然你也可以不改,但这会导致我们在两个系统之间共享文件变得非常不方便,Samba共享的文件也总会有乱码出现.总不能每次传完文件都 人肉转码一次吧. ubuntu转码需要分为几个部分分别进行: 1. 系统级 Ubuntu默认是不支持GBK的.这里若不更改,则后续步骤均无法生效. 添加中文字符编码: $sudo vim /var/lib/l

System.ArgumentException: 已添加项。字典中的关键字:XX 所添加的关键字:XX

    异常详细信息: System.ArgumentException: 已添加项.字典中的关键字:"sftj_dt"所添加的关键字:"sftj_dt" 这是在给Hashtable添加值的时候报的错 是在Hashtable中Key有重复值了,可以用 table.Remove(tableID); 先把值排除再添加就可以了

magento megatron主题添加中文

magento的megatron默认不支持中文,所有我们需要在它的本地化文件夹中添加中文的cvs文件,添加方法如下: 1.切换至 app ? design ? frontend ? megatron ? default ? locale 目录,在目录下新增zh_CN文件夹,将en_US 文件夹下得translate.cvs拷贝到zh_CN目录下,接下来只要用文本编辑软件打开修改就好啦. 提示:推荐使用libreoffice,不会有乱码问题.

IOS数组按中文关键字以字母序排序

本文转载至 http://blog.csdn.net/xunyn/article/details/7882087 iosobjective cuser框架通讯 IOS项目中会用到对通讯录的联系人或是会员按姓名为关键字排序,因为NSArray并不直接支持对汉字的排序,这就要通过将汉字转换成拼音完成按A~Z的排序,这看起来是个头疼的问题,因为牵扯到汉字转为拼音,kmyhy给出一个较易实现的方法,获取汉字的首字的首字母,如将“王”变成“W”,完整文章(传送门). 其中他通过pinyinFirstLet