设计并实现计算机器类c,面向教学的类C编译器的设计与实现

编译器

第24卷第6期

2008年11月

福建师范大学学报(自然科学版)

JournalofFujianNormalUniversity(NaturalScienceEdition)

V01.24No.6

NOV.2008

文章编号:1000—5277(2008)06-0029—05

面向教学的类c编译器的设计与实现

邹昌伟

(福建师范大学软件学院,福建福州

350108)

摘要:设计并实现了一个面向教学的类C编译器,支持全局或局部变量的定义、函数参数传递和函数递归调用.为避免对实际硬件体系结构的依赖,采用了Java语言的设计思想,类C编译器实现了先编译后解释执行的设计方案,同时给出了比文法更为直观的类C语言的语法图.

关键词:编译器;面向教学;类C语言中图分类号:TP314

文献标识码:A

DesignandImplementionof

Teaching—orientedC-likeCompiler

ZOUChang—wei

(Faculty

ofSoftware,FujianNormalUniversity,Fuzhou350108,China)

Abstract:Designingandimplementing

ports

teaching-orientedC—likecompiler,whichsup—

as

thedefinitionoflocalandglobalvariables,functionparameters,aswell

avoidthe

dependencyofhardware

architecture,using

recursive

design

calloffunctions.Tothe

thinkingofJavalanguage,whichcompilesprogramsintomediatelanguageandtheninter—

pretspure

it.C—likelanguage'sgrammardiagramisgrammar

shown,whichismuchmoreintuitivethan

Keywords:compiler;teaching—oriented;C—likelanguage

《编译原理》是计算机专业的主要专业基础课之一.它介绍编译器构造的一般原理、基本设计方法和主要实现技术.该课程抽象难懂,但在教学与实践中如果能结合编译器的源码进行分析与改进,就能起到理论联系实际、由抽象到具体的效果.在传统的《编译原理》的教学中,此课程的相关实验环节相对比较薄弱.虽然有诸多的开源编译器(例如Lcc【11编译器等),但这些工业化的编译器并不太适用于有限学时的实践教学.为此,国内不少高校采用Pascal语言创始人N.Wirth编写的PL/O语言[2]的编译程序来进行相关的实验教学.但PL/0语言主要存在两个问题:一是过于简单,甚至没有函数参数;二是语法上接近Pascal语言,但目前国内计算机相关专业的入门语言大多数采用的是C语言或由其衍生出来的语言,学生并不熟悉Pascal语法.基于此,本文设计并实现了一个适用于教学的类C编

译器,支持函数参数的传递,实现栈式存储管理,允许函数的递归调用,内置C风格的printf和scanf

函数用于输入和输出,但唯一支持的数据类型为整型.

1类C编译器的设计与实现

为了避免对与课程无关的具体汇编语言的讨论,类C编译器采用的是Java语言的设计思想,即先编译后解释执行.为此需要定义出一套中间代码的指令集,这里采用的是四元式形式的中间代码.另外还需要实现一个虚拟机来解释执行编译后的中间代码.类C语言本身的语法定义并未采用文法的形

收稿日期:2007。10—29

作者简介:邹昌伟(1981一).男.助教,硕士,研究方向:web.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值