编译原理学习:TINY语言词法扫描程序实现

最近对解释型程序(类似python或者是linux里的bc计算器)非常感兴趣,就开始学习一下编译原理。今天自己实现了TINY语言的词法扫描程序。大部分参考《编译原理及实践》一书。但是我做了一些小小的改进。

先说一下TINY语言:

1、注释:放在一对大括号内。书上的注释不能嵌套,我做了一点改进,允许嵌套。

2、关键字:read write if end repeat until else

3、类型:只支持整型和布尔型。

4、计算:+ - * / ( ) < = :=,其中:=为赋值运算,=为判断。没有〈和<= >=

一个示例的TINY语言程序:

test.tine: (选自《编译原理及实践》)

{ Sample program
  in TINY language -
  computes factorial
}
read x; { input an integer }
if 0 < x then { don't compute if x <= 0 }
	fact := 1;
	repeat
		fact := fact * x;
		x := x - 1;
	until x = 0;
	write fact { output factorial of x }
end

在globals.h中,涉及到一些类型的声明:

#ifndef GLOBALS_H
#define GLOBALS_H

#include <stdio.h>
typede
  • 4
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值