yacc 简易计算机规则,Lex & Yacc 学习笔记(2)- 简单计算器

本文介绍了如何在CentOS 7.5环境下利用lex和yacc开发一个简单的计算器程序,涵盖词法分析器(cal.l)和语法分析器(cal.y)的编写,以及从编译到运行的完整步骤,旨在解释lex的结构规范和加深对这两款工具的理解。
摘要由CSDN通过智能技术生成

一、背景

构建一个简单计算器,识别输入的计算表达式并计算结果。通过计算器程序 来说明 lex & yacc 的开发过程 和 Lex 的结构规范。

二、环境

➢ 系统: CentOS 7.5

➢ 编译器: gcc - 4.8.5

➢ lex: flex 2.5.37

➢ Yacc: bison (GNU Bison) 3.0.4

安装 flex 和 bison 。

yum install flex bison

如果在编译链接过程中出现以下错误:

/usr/bin/ld: cannot find -lfl

请重新安装flex:

yum remove flex

yum install flex

三、简单计算器实现

计算器实现整数的 +、-、*、/、% 五种简单运算。

词法分析程序 cal.l

%{

#include "cal.tab.h"

extern int yylval;

%}

%%

[0-9]+ { yylval = atoi(yytext); return NUMBER; }

[ \t] ; /* ignore white space */

\n return 0; /* logical EOF */

. return yytext[0];

%%

代码中定义了四条规则,前面的部分就是模式,处于一行的开始位置,后面部分是动作,也就是,输入中匹配到了这个模式的时候,对应进行什么动作

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值