资源简介
可将C语言的裴波纳契和pi.c的翻译为汇编语言。满分7分。
上机大作业——简化C编译器实现
总体要求
一、要求实现的语言特性
1. 基本要求
1数据类型:int,char
2语句:赋值(=),if,while,for;赋值 循环 条件判断
3算术运算:+,-,*,/,%,++,--,&,|,^,~,<<,>>
4关系运算:==,>,<,>=,<=,!=
5逻辑运算:&&(与),||(或),!(非);构造与算数相同
6复合语句:{、}括起来的语句;要求识别 if、while中使用
7注释语句;识别注释 然后丢弃
8简单的输入输出
2. 选作功能
1数组,指针;数组怎么实现 第八章介绍数组的翻译
代码片段和文件信息
#include “com.h“
#include “gen.h“
#include “myparser.h“
#include
int blank = 0;//存储树中的空格
int opn = 0;//数据段符号的编号
int stmn = 0;//语句的编号
int labeln = 0;//比较符号的label
void print_type(ExpType type){//打印节点的类型
switch (type)
{
case Void:
fprintf(pt “Void“);
break;
case Integer:
fprintf(pt “Integer“);
break;
case Char:
fprintf(pt “Char“);
break;
case Type_error:
fprintf(pt “Type_error“);
break;
case Boolean:
fprintf(pt “Boolean“);
break;
}
fprintf(pt “\n“);
}
void printf_tree(TreeNode * node){//写入文件
blank += 2;//打印树前面的空格
while (NULL != node){
print_space(blank);
if (StmtK == node->nodekind){
switch (node->kind.stmt)
{
case IfK:
fprintf(pt “If 语句\t “);
if (node->child[0]->type != Type_error){
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2016-12-30 11:33 lex_yacc03\
文件 1074 2016-12-30 11:15 lex_yacc03\com.h
文件 28881 2016-12-30 11:15 lex_yacc03\gen.c
文件 1036 2016-12-30 11:13 lex_yacc03\gen.h
文件 745 2016-11-08 10:06 lex_yacc03\lex_yacc03.pgp
文件 452 2016-12-30 11:33 lex_yacc03\lex_yacc03.pgw
文件 358 2016-12-30 11:12 lex_yacc03\main.c
文件 16277 2016-12-29 17:54 lex_yacc03\mylexer.c
文件 1107 2016-12-29 17:54 lex_yacc03\mylexer.h
文件 3166 2016-12-29 17:54 lex_yacc03\mylexer.l
文件 16792 2016-12-29 17:54 lex_yacc03\mylexer.v
文件 47707 2016-12-29 21:02 lex_yacc03\myparser.c
文件 2219 2016-12-29 21:03 lex_yacc03\myparser.h
文件 50614 2016-12-29 21:02 lex_yacc03\myparser.v
文件 12559 2016-12-29 21:02 lex_yacc03\myparser.y
- 上一篇:实现词法分析器
- 下一篇:基于C++语言开发的股票交易系统代码
评论
共有 条评论