# compilers **Repository Path**: YaleXin/compilers ## Basic Information - **Project Name**: compilers - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 3 - **Forks**: 1 - **Created**: 2021-04-01 - **Last Updated**: 2024-04-08 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## 说明 本仓库是实现本人本科期间课程《编译原理》的实验与课程设计代码仓库,`expx`代表实验一至实验四,`curriculum_design`是课程设计,课程设计中的编译器一些特点和缺点: - 支持`if`语句,`while`语句,`do while`语句,赋值语句,布尔表达式, - 支持16位整数 - 语句嵌套不支持,特别是含有if语句的嵌套(准确来说涉及布尔表达式),其他语句部分支持嵌套 - 布尔表达式中不能含有算数表达式,不能括号嵌套 程序设计的相关描述请看[「这里」](https://gitee.com/YaleXin/compilers/blob/master/curriculum_design/README.md) ## 总体设计 0-31:保留字 32:标识符 33:整型常量 34:实型常量 35:字符常量 36:字符串常量 37:界符常量 ## 保留字 |符号|类别号| |---|---| |auto| 0| |break| 1| |case| 2| |char| 3| |const| 4| |continue| 5| |default| 6| |do| 7| |double| 8| |else| 9| |enum| 10| |extern| 11| |float| 12| |for| 13| |goto| 14| |if| 15| |int| 16| |long| 17| |register| 18| |return| 19| |short| 20| |signed| 21| |sizeof| 22| |static| 23| |struct| 24| |switch| 25| |typedef| 26| |union| 27| |unsigned| 28| |void| 29| |volatile| 30| |while| 31| ## 标识符 标识符类号为`32`,内部使用内码加以区分不同的标识符。 ## 常量 | 常量类型 | 类号 | | ---------- | ---- | | 整型常量 | 33 | | 实型常量 | 34 | | 字符型常量 | 35 | | 字符串常量 | 36 | ## 界限符 简称界符,类号从`37`开始,详细如下: |界符|类号| |---|---| |,| 37| |;| 38| |(| 39| |)| 40| |{| 41| |}| 42| |[| 43| |]| 44| |<| 45| |<<| 46| |<=| 47| |>| 48| |>>| 49| |>=| 50| |==| 51| |!=| 52| |=| 53| |~| 54| |!| 55| |?| 56| |:| 57| |`|`| 58| |`||`| 59| |&| 60| |&&| 61| |+| 62| |-| 63| |*| 64| |/| 65| |%| 66| ## 支持的转义字符 简单起见,只支持下列常见的转义字符 | 转义字符 | 意义 | ASCII码值(十进制) | | -------- | ----------------------------------- | ------------------- | | \a | 响铃(BEL) | 007 | | \b | 退格(BS) ,将当前位置移到前一列 | 008 | | \f | 换页(FF),将当前位置移到下页开头 | 012 | | \n | 换行(LF) ,将当前位置移到下一行开头 | 010 | | \r | 回车(CR) ,将当前位置移到本行开头 | 013 | | \t | 水平制表(HT) | 009 | | \v | 垂直制表(VT) | 011 | | `\'` | 单引号 | 039 | | `\"` | 双引号 | 034 | | `\\` | 反斜杠 | 092 | **不支持`\177`或者` \x7f `**