Skip to content

将tinycc的关键字替换成中文,经tinycc_cn编译后,可自举

License

Notifications You must be signed in to change notification settings

program-in-chinese/tinycc_zh

 
 

Repository files navigation

小习编译器Bate - 基于TinyCC的中文编译器 - 中文自举编译器第二部分
-----------------------------------------------------------------------

Features:
--------

基于TinyCC的中文编译器,添加了中文关键字解析代码。
兼容原 TinyCC 所有的 Features。
将关键字全换成中文,可进行自举。

添加的中文关键字:

DEF(TOK_INT_CN, "整")
DEF(TOK_VOID_CN, "空")
DEF(TOK_CHAR_CN, "字")
DEF(TOK_IF_CN, "如")
DEF(TOK_ELSE_CN, "另")
DEF(TOK_WHILE_CN, "当")
DEF(TOK_BREAK_CN, "跳出")
DEF(TOK_RETURN_CN, "返回")
DEF(TOK_FOR_CN, "对于")
DEF(TOK_EXTERN_CN, "外部")
DEF(TOK_STATIC_CN, "静态")
DEF(TOK_UNSIGNED_CN, "无符")
DEF(TOK_GOTO_CN, "跳转")
DEF(TOK_DO_CN, "运行")
DEF(TOK_CONTINUE_CN, "继续")
DEF(TOK_SWITCH_CN, "转接")
DEF(TOK_CASE_CN, "事例")

DEF(TOK_CONST1_CN, "不变")
DEF(TOK_VOLATILE1_CN, "易变")
DEF(TOK_LONG_CN, "长")
DEF(TOK_REGISTER_CN, "记录")
DEF(TOK_SIGNED1_CN, "有符")
DEF(TOK_AUTO_CN, "自动")
DEF(TOK_INLINE1_CN, "内联")
DEF(TOK_RESTRICT1_CN, "限定")

DEF(TOK_FLOAT_CN, "单精")
DEF(TOK_DOUBLE_CN, "双精")
DEF(TOK_BOOL_CN, "布尔")
DEF(TOK_SHORT_CN, "短")
DEF(TOK_STRUCT_CN, "结构")
DEF(TOK_UNION_CN, "联合")
DEF(TOK_TYPEDEF_CN, "类型定义")
DEF(TOK_DEFAULT_CN, "缺省")
DEF(TOK_ENUM_CN, "枚举")
DEF(TOK_SIZEOF_CN, "求长度")
DEF(TOK_ATTRIBUTE1_CN, "__属性")
DEF(TOK_ALIGNOF1_CN, "__对齐")
DEF(TOK_TYPEOF1_CN, "求类型")
DEF(TOK_LABEL_CN, "__符号__")
DEF(TOK_ASM1_CN, "汇编")

DEF(TOK_DEFINE_CN, "定义")
DEF(TOK_INCLUDE_CN, "包含")
DEF(TOK_INCLUDE_NEXT_CN, "包含下个")
DEF(TOK_IFDEF_CN, "如定义")
DEF(TOK_IFNDEF_CN, "如未定义")
DEF(TOK_ELIF_CN, "另如")
DEF(TOK_ENDIF_CN, "了如")
DEF(TOK_DEFINED_CN, "已定义")
DEF(TOK_UNDEF_CN, "消定义")
DEF(TOK_ERROR_CN, "错误")
DEF(TOK_WARNING_CN, "告警")
DEF(TOK_LINE_CN, "行")
DEF(TOK_PRAGMA_CN, "杂注")
DEF(TOK___LINE___CN, "__行号__")
DEF(TOK___FILE___CN, "__文件__")
DEF(TOK___DATE___CN, "__日期__")
DEF(TOK___TIME___CN, "__时间__")
DEF(TOK___FUNCTION___CN, "__函数名__")
DEF(TOK___VA_ARGS___CN, "__变参__")
DEF(TOK___COUNTER___CN, "__计数__")
DEF(TOK___FUNC___CN, "__函数__")

Documentation:
-------------

1) Installation on a i386/x86_64/arm Linux/OSX/FreeBSD host

目前调试是在 MingW 上进行

小习编译器Alpha:
   1. 用gcc编译并安装,在MingW上如不指定路径将默认到C盘,且没有/usr路径
   ./configure --prefix=/local/tcc
   make
   make install
   
   目前已经可以编译中文代码,见Examples

   2. 可选,自举
   ./configure --prefix=/local/tcc --cc=/local/tcc/tcc.exe
   make
   make install

小习编译器Bate:
   1. 用已经编译并安装的小习编译器Alpha进行编译
   ./configure --prefix=/local/tcc --cc=/local/tcc/tcc.exe
   make
   make install

   2. 可选,自举
   ./configure --prefix=/local/tcc --cc=/local/tcc/tcc.exe
   make
   make install

2) Introduction

一直对编译器比较感兴趣,总想改出一个中文编译器。
很早之前已经可以对TinyCC进行改造了,但一直希望用clang或gcc改一个C/C++的纯中文编译器。
但clang和gcc的自身编译就很麻烦,中间问题很多,我一直都没有搞定。
所以还有先用TinyCC搞一个C语言中文版,这样快多了。

这个目前这个命名为小习编译器。若是以后整出了一个C++中文编译器,就叫习大大,毕竟习加加已经有人叫了。

   小习编译器分 Alpha 和 Beta 两版。
   小习编译器Alpha在TinyCC 基础上添加中文关键字
   小习编译器Beta 在 小习编译器Alpha 基础上将原英文关键字全替换成中文。

   小习编译器Beta自举 需要先编译小习编译器Alpha,并安装。
   然后用小习编译器Alpha 编译 小习编译器Beta, 并安装
   最后用小习编译器Beta 编译自身。

3) Examples

_ex3.c: 计算 斐波那契 数 (中文编程).
   cd examples
   /local/tcc/tcc.exe _ex3.c
   ./_ex3.exe 6

License:
-------

小习编译器 遵循 GNU Lesser General Public License。详细请见 COPYING 文件。

XLCH.

About

将tinycc的关键字替换成中文,经tinycc_cn编译后,可自举

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Languages

  • C 86.4%
  • C++ 10.5%
  • Makefile 1.1%
  • Objective-C 0.8%
  • Assembly 0.7%
  • Prolog 0.4%
  • Other 0.1%