欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

TCC(TinyC)编译器汉化(中文编译器、汉语编程)之二:字符(token)汉化

程序员文章站 2022-03-30 20:29:25
...

汉化了所有的C语言关键词

字符.h源码如下:

/* keywords */
	 字符(关键字_无类型, "无类型")
     字符(关键字_VOID, "void")
     字符(关键字_整数型, "整数型")
     字符(关键字_INT, "int")
	 字符(关键字_长整数型, "长整数型")
     字符(关键字_LONG, "long")
	 字符(关键字_短整数型, "短整数型")
     字符(关键字_SHORT, "short")
	 字符(关键字_字符型, "字符型")
     字符(关键字_CHAR, "char")
	 字符(关键字_浮点型, "浮点型")
     字符(关键字_FLOAT, "float")
	 字符(关键字_双精度浮点型, "双精度浮点型")
     字符(关键字_DOUBLE, "double")
	 字符(关键字_逻辑型, "逻辑型")
     字符(关键字_BOOL, "_Bool")
	 字符(关键字_无符号, "无符号")
     字符(关键字_UNSIGNED, "unsigned")
	 字符(关键字_有符号, "有符号")
     字符(关键字_SIGNED1, "signed")
     字符(关键字_SIGNED2, "__signed") /* gcc keyword */
     字符(关键字_SIGNED3, "__signed__") /* gcc keyword */
	 字符(关键字_常量, "常量")
     字符(关键字_CONST1, "const")
     字符(关键字_CONST2, "__const") /* gcc keyword */
     字符(关键字_CONST3, "__const__") /* gcc keyword */
	 字符(关键字_寄存器, "寄存器")
     字符(关键字_REGISTER, "register")
	 字符(关键字_自动, "自动")
     字符(关键字_AUTO, "auto")
	 字符(关键字_外部, "外部")
     字符(关键字_EXTERN, "extern")
	 字符(关键字_静态, "静态")
     字符(关键字_STATIC, "static")

	 字符(关键字_如果, "如果")
     字符(关键字_IF, "if")
	 字符(关键字_否则, "否则")
     字符(关键字_ELSE, "else")
	 字符(关键字_执行, "执行")
     字符(关键字_DO, "do")
	 字符(关键字_判断, "判断")
     字符(关键字_WHILE, "while")
	 字符(关键字_循环, "循环")
     字符(关键字_FOR, "for")
	 字符(关键字_选择, "选择")
     字符(关键字_SWITCH, "switch")
	 字符(关键字_分支, "分支")
     字符(关键字_CASE, "case")
	 字符(关键字_跳出, "跳出")
     字符(关键字_BREAK, "break")
	 字符(关键字_返回, "返回")
     字符(关键字_RETURN, "return")
	 字符(关键字_去向, "去向")
     字符(关键字_GOTO, "goto")
	 字符(关键字_继续, "继续")
     字符(关键字_CONTINUE, "continue")


	 字符(关键字_易变, "易变")
     字符(关键字_VOLATILE1, "volatile")
     字符(关键字_VOLATILE2, "__volatile") /* gcc keyword */
     字符(关键字_VOLATILE3, "__volatile__") /* gcc keyword */
	 字符(关键字_内联, "内联")
     字符(关键字_INLINE1, "inline")
     字符(关键字_INLINE2, "__inline") /* gcc keyword */
     字符(关键字_INLINE3, "__inline__") /* gcc keyword */
	 字符(关键字_限定, "限定")
     字符(关键字_RESTRICT1, "restrict")
     字符(关键字_RESTRICT2, "__restrict")
     字符(关键字_RESTRICT3, "__restrict__")
     字符(关键字_EXTENSION, "__extension__") /* gcc keyword */

     字符(关键字_GENERIC, "_Generic")
	 字符(关键字_静态_声明, "_静态_声明")/*2020年6月21日为止添加的关键词*/
     字符(关键字_STATIC_ASSERT, "_Static_assert")/*2020年6月21日为止添加的关键词*/

	 字符(关键字_结构体, "结构体")
     字符(关键字_STRUCT, "struct")
	 字符(关键字_共用体, "共用体")
     字符(关键字_UNION, "union")
	 字符(关键字_别名, "类型定义")
     字符(关键字_TYPEDEF, "typedef")
	 字符(关键字_默认, "默认")
     字符(关键字_DEFAULT, "default")
	 字符(关键字_枚举, "枚举")
     字符(关键字_ENUM, "enum")
	 字符(关键字_获取大小, "取大小")
     字符(关键字_SIZEOF, "sizeof")
	 字符(关键字_属性, "__属性")
     字符(关键字_ATTRIBUTE1, "__attribute")
     字符(关键字_ATTRIBUTE2, "__attribute__")
	 字符(关键字_对齐, "__对齐")
     字符(关键字_ALIGNOF1, "__alignof")
     字符(关键字_ALIGNOF2, "__alignof__")
     字符(关键字_ALIGNOF3, "_Alignof")
     字符(关键字_ALIGNAS, "_Alignas")
	 字符(关键字_取类型, "取类型")
     字符(关键字_TYPEOF1, "typeof")
     字符(关键字_TYPEOF2, "__typeof")
     字符(关键字_TYPEOF3, "__typeof__")
	 字符(关键字_标签, "__标签__")
     字符(关键字_LABEL, "__label__")/*用于GCC块本地标签*/
	 字符(关键字_汇编, "汇编")
     字符(关键字_asm1, "asm")
     字符(关键字_asm2, "__asm")
     字符(关键字_asm3, "__asm__")
#如果已定义 ZHI_TARGET_ARM64
	 字符(关键字_无整128, "无整128")
     字符(关键字_UINT128, "__uint128_t")
#结束如果


/*********************************************************************/
/* the following are not keywords. They are included to ease parsing */
/* preprocessor only */
	 字符(关键字_定义, "定义")
     字符(关键字_DEFINE, "define")
	 字符(关键字_导入, "导入")
     字符(关键字_INCLUDE, "include")
	 字符(关键字_导入_下个, "导入下个")
     字符(关键字_INCLUDE_NEXT, "include_next")
	 字符(关键字_如果已定义, "如果已定义")
     字符(关键字_IFDEF, "ifdef")
	 字符(关键字_如果未定义, "如果未定义")
     字符(关键字_IFNDEF, "ifndef")
	 字符(关键字_否则如果, "否则如果")
     字符(关键字_ELIF, "elif")
	 字符(关键字_结束如果, "结束如果")
     字符(关键字_ENDIF, "endif")
	 字符(关键字_已定义, "已定义")
     字符(关键字_DEFINED, "defined")
	 字符(关键字_取消定义, "取消定义")
     字符(关键字_UNDEF, "undef")
	 字符(关键字_错误, "错误")
     字符(关键字_ERROR, "error")
	 字符(关键字_警告, "警告")
     字符(关键字_WARNING, "warning")
	 字符(关键字_行号, "行号")
     字符(关键字_LINE, "line")
	 字符(关键字_杂注, "杂注")
     字符(关键字_PRAGMA, "pragma")
	 字符(符___LINE___CN, "__行号__")
     字符(符___LINE__, "__LINE__")
	 字符(符___FILE___CN, "__文件__")
     字符(符___FILE__, "__FILE__")
	 字符(符___DATE___CN, "__日期__")
     字符(符___DATE__, "__DATE__")
	 字符(符___TIME___CN, "__时间__")
     字符(符___TIME__, "__TIME__")
	 字符(符___FUNCTION___CN, "__函数名__")
     字符(符___FUNCTION__, "__FUNCTION__")
	 字符(符___VA_ARGS___CN, "__变参__")
     字符(符___VA_ARGS__, "__VA_ARGS__")
	 字符(符___COUNTER___CN, "__计数__")
     字符(符___COUNTER__, "__COUNTER__")
	 字符(符___HAS_INCLUDE___CN, "__已经_包含")
     字符(符___HAS_INCLUDE, "__has_include")

/* special identifiers */
	 字符(符___函数___CN, "__函数__")
     字符(符___函数__, "__func__")

/* special floating point values */
     字符(符___NAN__, "__nan__")
     字符(符___SNAN__, "__snan__")
     字符(符___INF__, "__inf__")

/* attribute identifiers */
/* XXX: handle all 标识符s generically since speed is not critical */
     字符(符_SECTION1, "section")
     字符(符_SECTION2, "__段__")
     字符(符_ALIGNED1, "aligned")
     字符(符_ALIGNED2, "__aligned__")
     字符(符_PACKED1, "packed")
     字符(符_PACKED2, "__packed__")
     字符(符_WEAK1, "weak")
     字符(符_WEAK2, "__weak__")
     字符(符_ALIAS1, "alias")
     字符(符_ALIAS2, "__alias__")
     字符(符_UNUSED1, "unused")
     字符(符_UNUSED2, "__unused__")
     字符(符_CDECL1, "cdecl")
     字符(符_CDECL2, "__cdecl")
     字符(符_CDECL3, "__cdecl__")
     字符(符_标准调用1, "stdcall")
     字符(符_标准调用2, "__stdcall")
     字符(符_标准调用3, "__stdcall__")
     字符(符_快速调用1, "fastcall")
     字符(符_快速调用2, "__fastcall")
     字符(符_快速调用3, "__fastcall__")
     字符(符_REGPARM1, "regparm")
     字符(符_REGPARM2, "__regparm__")
     字符(符_CLEANUP1, "cleanup")
     字符(符_CLEANUP2, "__cleanup__")
     字符(符_CONSTRUCTOR1, "constructor")
     字符(符_CONSTRUCTOR2, "__constructor__")
     字符(符_DESTRUCTOR1, "destructor")
     字符(符_DESTRUCTOR2, "__destructor__")
     字符(符_ALWAYS_INLINE1, "always_inline")
     字符(符_ALWAYS_INLINE2, "__always_inline__")

     字符(符_MODE, "__mode__")
     字符(符_MODE_QI, "__QI__")
     字符(符_MODE_DI, "__DI__")
     字符(符_MODE_HI, "__HI__")
     字符(符_MODE_SI, "__SI__")
     字符(符_MODE_word, "__word__")

     字符(符_DLLEXPORT, "dllexport")
     字符(符_DLLIMPORT, "dllimport")
     字符(符_NODECORATE, "nodecorate")
     字符(符_NORETURN1, "noreturn")
     字符(符_NORETURN2, "__noreturn__")
     字符(符_NORETURN3, "_Noreturn")
     字符(符_VISIBILITY1, "visibility")
     字符(符_VISIBILITY2, "__visibility__")

     字符(符_builtin_types_compatible_p, "__builtin_types_compatible_p")
     字符(符_builtin_choose_expr, "__builtin_choose_expr")
     字符(符_builtin_constant_p, "__builtin_constant_p")
     字符(符_builtin_frame_address, "__builtin_frame_address")
     字符(符_builtin_return_address, "__builtin_return_address")
     字符(符_builtin_expect, "__builtin_expect")
     /*字符(符_builtin_va_list, "__builtin_va_list")*/
#如果 已定义 ZHI_TARGET_PE && 已定义 ZHI_TARGET_X86_64
     字符(符_builtin_va_start, "__builtin_va_start")
#否则如果 已定义 ZHI_TARGET_X86_64
     字符(符_builtin_va_arg_types, "__builtin_va_arg_types")
#否则如果 已定义 ZHI_TARGET_ARM64
     字符(符_builtin_va_start, "__builtin_va_start")
     字符(符_builtin_va_arg, "__builtin_va_arg")
#否则如果 已定义 ZHI_TARGET_RISCV64
     字符(符_builtin_va_start, "__builtin_va_start")
#结束如果

/* pragma */
     字符(符_pack, "pack")
#如果 !已定义(ZHI_TARGET_I386) && !已定义(ZHI_TARGET_X86_64)
     /* already 已定义 循环 assembler */
     字符(符_汇编_push, "push")
     字符(符_汇编_pop, "pop")
#结束如果
     字符(符_comment, "comment")
     字符(符_lib, "lib")
     字符(符_push_macro, "push_macro")
     字符(符_pop_macro, "pop_macro")
     字符(符_once, "once")
     字符(符_option, "option")

/* builtin functions or variables */
#如果未定义 ZHI_ARM_EABI
     字符(符_memcpy, "memcpy")
     字符(符_memmove, "memmove")
     字符(符_memset, "memset")
     字符(符___divdi3, "__divdi3")
     字符(符___moddi3, "__moddi3")
     字符(符___udivdi3, "__udivdi3")
     字符(符___umoddi3, "__umoddi3")
     字符(符___ashrdi3, "__ashrdi3")
     字符(符___lshrdi3, "__lshrdi3")
     字符(符___ashldi3, "__ashldi3")
     字符(符___floatundisf, "__floatundisf")
     字符(符___floatundidf, "__floatundidf")
# 如果未定义 ZHI_ARM_VFP
     字符(符___floatundixf, "__floatundixf")
     字符(符___fixunsxfdi, "__fixunsxfdi")
# 结束如果
     字符(符___fixunssfdi, "__fixunssfdi")
     字符(符___fixunsdfdi, "__fixunsdfdi")
#结束如果

#如果 已定义 ZHI_TARGET_ARM
# 如果已定义 ZHI_ARM_EABI
     字符(符_memcpy, "__aeabi_memcpy")
     字符(符_memmove, "__aeabi_memmove")
     字符(符_memmove4, "__aeabi_memmove4")
     字符(符_memmove8, "__aeabi_memmove8")
     字符(符_memset, "__aeabi_memset")
     字符(符___aeabi_ldivmod, "__aeabi_ldivmod")
     字符(符___aeabi_uldivmod, "__aeabi_uldivmod")
     字符(符___aeabi_idivmod, "__aeabi_idivmod")
     字符(符___aeabi_uidivmod, "__aeabi_uidivmod")
     字符(符___divsi3, "__aeabi_idiv")
     字符(符___udivsi3, "__aeabi_uidiv")
     字符(符___floatdisf, "__aeabi_l2f")
     字符(符___floatdidf, "__aeabi_l2d")
     字符(符___fixsfdi, "__aeabi_f2lz")
     字符(符___fixdfdi, "__aeabi_d2lz")
     字符(符___ashrdi3, "__aeabi_lasr")
     字符(符___lshrdi3, "__aeabi_llsr")
     字符(符___ashldi3, "__aeabi_llsl")
     字符(符___floatundisf, "__aeabi_ul2f")
     字符(符___floatundidf, "__aeabi_ul2d")
     字符(符___fixunssfdi, "__aeabi_f2ulz")
     字符(符___fixunsdfdi, "__aeabi_d2ulz")
# 否则
     字符(符___modsi3, "__modsi3")
     字符(符___umodsi3, "__umodsi3")
     字符(符___divsi3, "__divsi3")
     字符(符___udivsi3, "__udivsi3")
     字符(符___floatdisf, "__floatdisf")
     字符(符___floatdidf, "__floatdidf")
#  如果未定义 ZHI_ARM_VFP
     字符(符___floatdixf, "__floatdixf")
     字符(符___fixunssfsi, "__fixunssfsi")
     字符(符___fixunsdfsi, "__fixunsdfsi")
     字符(符___fixunsxfsi, "__fixunsxfsi")
     字符(符___fixxfdi, "__fixxfdi")
#  结束如果
     字符(符___fixsfdi, "__fixsfdi")
     字符(符___fixdfdi, "__fixdfdi")
# 结束如果
#结束如果

#如果 已定义 ZHI_TARGET_C67
     字符(符__divi, "_divi")
     字符(符__divu, "_divu")
     字符(符__divf, "_divf")
     字符(符__divd, "_divd")
     字符(符__remi, "_remi")
     字符(符__remu, "_remu")
#结束如果

#如果 已定义 ZHI_TARGET_I386
     字符(符___fixsfdi, "__fixsfdi")
     字符(符___fixdfdi, "__fixdfdi")
     字符(符___fixxfdi, "__fixxfdi")
#结束如果

#如果 已定义 ZHI_TARGET_I386 || 已定义 ZHI_TARGET_X86_64
     字符(符_alloca, "alloca")
#结束如果

#如果 已定义 ZHI_TARGET_PE
     字符(符___chkstk, "__chkstk")
#结束如果
#如果 已定义 ZHI_TARGET_ARM64 || 已定义 ZHI_TARGET_RISCV64
     字符(符___arm64_clear_cache, "__arm64_clear_cache")
     字符(符___addtf3, "__addtf3")
     字符(符___subtf3, "__subtf3")
     字符(符___multf3, "__multf3")
     字符(符___divtf3, "__divtf3")
     字符(符___extendsftf2, "__extendsftf2")
     字符(符___extenddftf2, "__extenddftf2")
     字符(符___trunctfsf2, "__trunctfsf2")
     字符(符___trunctfdf2, "__trunctfdf2")
     字符(符___fixtfsi, "__fixtfsi")
     字符(符___fixtfdi, "__fixtfdi")
     字符(符___fixunstfsi, "__fixunstfsi")
     字符(符___fixunstfdi, "__fixunstfdi")
     字符(符___floatsitf, "__floatsitf")
     字符(符___floatditf, "__floatditf")
     字符(符___floatunsitf, "__floatunsitf")
     字符(符___floatunditf, "__floatunditf")
     字符(符___eqtf2, "__eqtf2")
     字符(符___netf2, "__netf2")
     字符(符___lttf2, "__lttf2")
     字符(符___letf2, "__letf2")
     字符(符___gttf2, "__gttf2")
     字符(符___getf2, "__getf2")
#结束如果

/* bound checking symbols */
#如果已定义 配置_ZHI_边界检查
     字符(符___bound_ptr_add, "__bound_ptr_add")
     字符(符___bound_ptr_间接的1, "__bound_ptr_间接的1")
     字符(符___bound_ptr_间接的2, "__bound_ptr_间接的2")
     字符(符___bound_ptr_间接的4, "__bound_ptr_间接的4")
     字符(符___bound_ptr_间接的8, "__bound_ptr_间接的8")
     字符(符___bound_ptr_间接的12, "__bound_ptr_间接的12")
     字符(符___bound_ptr_间接的16, "__bound_ptr_间接的16")
     字符(符___bound_main_arg, "__bound_main_arg")
     字符(符___bound_local_new, "__bound_local_new")
     字符(符___bound_local_delete, "__bound_local_delete")
     字符(符___bound_setjmp, "__bound_setjmp")
     字符(符___bound_new_region, "__bound_new_region")
# 如果已定义 ZHI_TARGET_PE
#  如果已定义 ZHI_TARGET_X86_64
     字符(符___bound_alloca_nr, "__bound_alloca_nr")
#  结束如果
     字符(符_malloc, "malloc")
     字符(符_free, "free")
     字符(符_realloc, "realloc")
     字符(符_memalign, "memalign")
     字符(符_calloc, "calloc")
# 否则
     字符(符_sigsetjmp, "sigsetjmp")
     字符(符___sigsetjmp, "__sigsetjmp")
     字符(符_siglongjmp, "siglongjmp")
# 结束如果
     字符(符_mmap, "mmap")
     字符(符_munmap, "munmap")
     字符(符_memcmp, "memcmp")
     字符(符_strlen, "strlen")
     字符(符_strcpy, "strcpy")
     字符(符_strncpy, "strncpy")
     字符(符_strcmp, "strcmp")
     字符(符_strncmp, "strncmp")
     字符(符_strcat, "strcat")
     字符(符_strchr, "strchr")
     字符(符_strdup, "strdup")
     字符(符_setjmp, "setjmp")
     字符(符__setjmp, "_setjmp")
     字符(符_longjmp, "longjmp")
#结束如果

/* Tiny Assembler */
 字符_汇编目录(byte)              /* must be first directive */
 字符_汇编目录(word)
 字符_汇编目录(align)
 字符_汇编目录(balign)
 字符_汇编目录(p2align)
 字符_汇编目录(set)
 字符_汇编目录(skip)
 字符_汇编目录(space)
 字符_汇编目录(string)
 字符_汇编目录(asciz)
 字符_汇编目录(ascii)
 字符_汇编目录(file)
 字符_汇编目录(globl)
 字符_汇编目录(global)
 字符_汇编目录(weak)
 字符_汇编目录(hidden)
 字符_汇编目录(ident)
 字符_汇编目录(size)
 字符_汇编目录(type)
 字符_汇编目录(text)
 字符_汇编目录(data)
 字符_汇编目录(bss)
 字符_汇编目录(previous)
 字符_汇编目录(pushsection)
 字符_汇编目录(popsection)
 字符_汇编目录(fill)
 字符_汇编目录(rept)
 字符_汇编目录(endr)
 字符_汇编目录(org)
 字符_汇编目录(quad)
#如果 已定义(ZHI_TARGET_I386)
 字符_汇编目录(code16)
 字符_汇编目录(code32)
#否则如果 已定义(ZHI_TARGET_X86_64)
 字符_汇编目录(code64)
#结束如果
 字符_汇编目录(short)
 字符_汇编目录(long)
 字符_汇编目录(整数型)
 字符_汇编目录(section)            /* must be last directive */

#如果 已定义 ZHI_TARGET_I386 || 已定义 ZHI_TARGET_X86_64
#导入 "i386-tok.h"
#结束如果

#取消定义 字符