基于YACC的TINY语法分析器的构建(含实验报告

本文档详细介绍了如何使用YACC构建TINY语法分析器的步骤,包括从源文件开始,去除tiny.y中的yylex方法,通过bison -v生成LR分析表,修改y.tab.c,最后通过make命令构建并执行tiny.out处理sample.tny输入。
摘要由CSDN通过智能技术生成

源文件地址

GitHub - jimmyhuang22/TINY_By_Yacc: 浙江理工大学编译原理实验三、基于YACC的TINY语法分析器的构建

实验要求

运用YACC,针对TINY语言,构造一个语法分析器

实验原理

查找资料可知yacc产生的子程序在申请读入下一个单词时会调用yylex()。yylex()返回一 个单词符号,并将相关的属性值存入全局量yylval
为了联用 lex 和 yacc,需要在运行 yacc 程序时加选项-d,以产生文件 y. tab. h,其中 会包含在 yacc 描述文件中(由% tokens 定义)的所有单词种别。文件 y. tab. h将被包 含在 lex 描述文件中。

输入设计

{
    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

输出设计

TINY COMPILATION: sample.tny
Syntax tree:
  Read: x
  If
    Op: <
    Const: 0
    Id: x
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值