Tiny语法分析器(递归下降分析法实现)

递归规约规则是这样的

program→stmt-sequence

stmt-sequence→stmt-sequence;statement|statement

statement→if-stmt|repate-stmt|assign-stmt|read-stmt|write-stmt|var-stmt

var-stmt→var identifier-assign-name := type

identifier-assign-name→name

if-stmt→if exp then stmt-sequence ;

            |if exp then stmt-sequence else stmt-sequence ;

reapet-stmt→repeat stmt-sequence until exp

assign-stmt→identifier := exp

read-stmt→read indetifier

write-stmt→write exp

exp→simple-exp comparison simple-exp |simple-exp

comparison→<|=

simple-exp→simple-exp addop term | term

addop→+|-

term→term mulop factor | factor

mulop → *|/

factor→ (exp)|number | identifier

因为源码分了好几个文件,不太好贴出来了,所以决定上传到Github上,

项目地址:https://github.com/INnoVationes/TinyCompiler

文件内容:ExplLexicalAnalyzer  :词法分析器

ExplParsing :语法分析器

GLOBALS: 一些全局变量,包括语法树结构等

Util:打印语法树,处理变量等内容

转载于:https://www.cnblogs.com/INnoVationv2/p/5998644.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值