【编译原理】TINY编译器学习(一)

本文介绍了TINY编译器的学习,包括源码结构、关键函数和编译过程。通过分析,展示了如何使用TINY编译器将源代码转换为目标代码,并解释了TM虚拟机的执行原理。文章还提供了示例代码,如计算阶乘的程序,帮助读者深入理解编译原理。
摘要由CSDN通过智能技术生成
《编译原理及实践》中附带的TINY编译器,代码仅有几千行,
这点代码就实现了一个完整的编译器,及对应的目标代码运行程序,接下来会用一段时间研究下这个代码。

1. 源代码来源
Google “loucomp” 下载即可。

2. 源码结构
globals.h    main.c
util.h          util.c
scan.h        scan.c
parse.h      parse.c
symtab.h    symtab.c
analyze.h   analyze.c
code.h        code.c
cgen.h        cgen.c
其中scan、parse、analyze和cgen文件分别对应于代码扫描程序、分析程序、语义分析程序和代码生成器各阶段。

3. 关键函数
syntaxTree = parse( );
对应于词法分析及语法树生成。
buildSymtab(syntaxTree);
建立符号表
typeCheck(syntaxTree);
类型检测
codeGen(syntaxTree, codefile);
目标代码生成

同时工程采用了三个编译宏,可以分阶段进行控制编译器输出
NOPARSE      创建只扫描的编译器
NOANALYZE  创建只分析和扫描的编译器
NOCODE       创建执行语义分析但不生成代码的编译器


4. 使用方法
编译此工程生成tiny.exe程序,可以通过 tiny.ext sample.tny可以对源代码sample.tny进行编译,生成sam
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值