C语言简单子集编译器功能设计书(第一版)

本文介绍了一个仅支持C语言简单子集的编译器设计,包括数据类型限制(仅支持2字节整型)、不支持宏和变量初始化、单一源文件、有限的关键字和符号集合。编译器支持无参数无返回值的函数,以及基本的语法结构如if、while和for。不支持输入,输出为变量和函数结果。预处理阶段去除注释,生成临时文件。运算符遵循特定的优先级,并且模块划分为预处理、词法语法分析、语义分析及汇编码生成、可执行文件生成四个部分。该编译器第一版仅支持WindowsXP平台。
摘要由CSDN通过智能技术生成
 

1. C语言简单子集
C语言简单子集具有如下特点:
1) 数据类型
仅支持简单数据类型中的有符号2字节整型(使用16位汇编实现,因此int回归到古老的16位)。
2) 数据操作
支持以下数据操作:函数调用、赋值、四则运算、if、while、for、小于、大于、等于、小于等于、大于等于、不等于、逻辑与、逻辑或,支持多层括号运算。不支持变量初始化(自动初始化为0)。不支持连等、逻辑运算时的赋值。
3) 源文件
仅支持单个xxx.c文件程序,不支持头文件。
4) 关键字集合
main、int、if、while、for
5) 宏
不支持宏。
6) 符号集合
(、)、{、}、=、;、+、-、*、/、<、>、==、<=、>=、!=、&&、||、//
7) 函数
只支持无参数无返回值的函数。支持嵌套调用。main函数为程序入口。函数不能从中间返回,只能在最后一行返回,无“return”关键字。
8) 注释
只支持单行注释。
9) 定量制限
9.1) 函数名、变量名长度为1到32字节
9.2) 常数必须是int范围的整数(2字节的古老int,即现代的short)
9.3) 最大单词数、语法树最大节点数为32768
9.4) 源码一行最多容纳1024字节,多出部分截断
10) 输入输出
不支持输入,程序输出结果为所有用户定义的变量在生命期结束时的值和对应的函数名,输出到文件C:\c_simple_outfile(NT)或/tmp/c_simple_outfile(Linux)中。
实例:
//test.c
main(){
    int a;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值