使用UnxUtils(可以编译Lex&Yacc)总结

Lex&Yacc软件下载:

参考链接:手把手教你win10下lex与yacc的安装_wang_yr的博客-CSDN博客

总结

词法分析文件

拓展名文件名.l

  1. 【创建文件,编辑内容】

在解压包的路径的UnxUtils文件夹下创建文件,拓展名为.l,编辑文件,保存

  1. 【输入命令,得到.c文件】

打开命令提示符(Dos命令)输入 flex 文件名.l,没有出错提示,UnxUtils文件夹增加一个文件:文件名.c(windows系统下,unix下是文件名.yy.c)

3.【得到.exe文件】

使用c语言编辑器(比如devC++,Cfree等)编译文件名.c,得到文件名.exe

  1. 【运行结果】

新建文本文件:test.txt,在命令提示符(Dos命令)输入 文件名<test.txt,无错,则会运行出文件名.l实现的功能

代码

https://blog.csdn.net/wang_yr/article/details/106000167?utm_medium=distribute.pc_relevant.none-task-blog-baidujs_baidulandingword-0&spm=1001.2101.3001.4242

运行截图

在这里插入图片描述

语法分析文件

  1. 【创建.y文件,编辑内容】

在解压包的路径的UnxUtils文件夹下创建文件,拓展名为.y,编辑文件,保存

  1. 【输入命令,得到.c文件】

打开命令提示符(Dos命令)输入 bison 文件名.y,没有出错提示,UnxUtils文件夹增加一个文件:文件名.c(windows系统下,unix下是文件名.tab.c)

3.【编译运行】

代码

https://blog.csdn.net/NKU_Yang/article/details/109456809?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522162169267616780366567338%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%257D&request_id=162169267616780366567338&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2alltop_positive~default-1-109456809.first_rank_v2_pc_rank_v29&utm_term=yacc%E5%AE%9E%E7%8E%B0%E4%B8%AD%E7%BC%80%E8%A1%A8%E8%BE%BE%E5%BC%8F%E8%BD%AC%E5%90%8E%E7%BC%80&spm=1018.2226.3001.4187

运行截图

在这里插入图片描述

词法分析与语法分析联合使用

语法文件(拓展名是.y)联合词法文件(拓展名是.l)编译,顺序是有先后的。

在UnxUtils的文件夹下

  1. 【创建.y文件,编写代码】

  2. 【编译.y文件】

在cmd(以管理员的身份运行),输入命令 bison -d 文件名.y

(在UnxUtils的文件夹下,会多出一个文件名.tab.h文件名.tab.c的文件)

  1. 【创建.l文件,将.h在头文件引入】

    比如多出的文件为test42.tab.h,那么在.l文件里引入,代码为**#include “test42.tab.h”**

  2. 【编译.l文件】在cmd里面输入命令 flex 文件名.l

(在UnxUtils的文件夹下,会多出一个lex.yy.c文件,无论之前的文件名为什么,编译后的文件名都是lex.yy.c)

  1. 联合编译词法分析文件和语法分析文件

    在cmd 里输入 gcc -o 文件名 文件名.tab.c lex.yy.c,

一般c语言编译里是有gcc的,如果不能编译,请检查是否将gcc设置到了环境变量。这里也可以直接使用c语言编译器编译,运行文件名.tab.c

(第一个文件名,可以自定义。无错误之后,会得到一个以第一个文件名命名的可执行文件(.exe

  1. 运行程序,检测功能。在cmd里面输入文件名.exe

测试代码链接

https://riayang.blog.csdn.net/article/details/43014957

运行截图

在这里插入图片描述

最后

如果文章内容有问题,欢迎留言评论

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值