编译原理第八次作业

实验报告:基于Yacc/Bison的语法分析器设计

一.实验目的:

  1. 掌握Yacc/Bison工具的使用方法
  2. 理解上下文无关文法的设计
  3. 实现语法分析与词法分析的协同工作

二.实验过程:

说实话,这个参考了课本以及ai,因为完全都不懂,后面大概知道了是在干什么
首先先设计一个上下文无关文法:

点击查看代码
%token NUMBER
%left '+' '-'
%left '' '/'

expr: expr '+' expr
| expr '-' expr
| expr '' expr
| expr '/' expr
| '(' expr ')'
| NUMBER
;
(哈哈,四则运算懂得都懂) 1. 编写词法分析器(lex) 2. 编写语法分析器(yacc) (这里面核心部分基本就是上面的文法,一些定义的函数,还有头文件参考大模型仿写😊) 3.linux上编译运行: 执行:
点击查看代码
bison -d calc.y      # 生成calc.tab.c和calc.tab.h
flex calc.l          # 生成lex.yy.c
gcc calc.tab.c lex.yy.c -o calc -lm  # 编译
./calc               # 运行

结果:

fine,over。

posted @ 2025-04-26 13:59  哎哎呦呦喂喂0211  阅读(14)  评论(0)    收藏  举报