【编译原理】(一)FLEX+BOSIN环境搭建(VS Code版本)

前言

其实只是为了参加比赛,编译原理什么的其实一点都没学,但是还是要硬着头皮上,没办法。不过既然要学了,好歹要记录一些东西下来,让大家看一看,不然万一最后没拿奖,啥也没有,岂不是很亏。

为什么用VS Code?

不是我想用VS Code,而是VS对于我来说实在是太大了。而且实际上用多了之后其实会发现万物基于命令行,所以最后我还是选择了VS Code,这个确实轻量的编辑器。不过很遗憾,网上并没有找到对应的教程之类的,这个是根据Code Blocks上使用Flex+Bison的教程改编的,可能还有不对的地方,还希望大家能够指出来。

准备工作

这边我的环境是Windows,对应的Linux系统的Flex和Bison环境很容易配置,这个建议直接百度。
首先我们给出下载网址: 点击下载.
下载好之后我们可以得到win_flex_bison-latest文件夹,这时候我们把这个文件夹加入到环境变量或者放到我们要用到的目录下面都可以。
当然这里我是放到了自己的目录下面(此处关系到后续 VS Code 配置问题,所以请务必注意)。

VS Code文件配置

首先我把我的配置Po出来给大家看一下

{
	// See https://go.microsoft.com/fwlink/?LinkId=733558
	// for the documentation about the tasks.json format
	"version": "2.0.0",
	"tasks": [
		//Flex编译命令
		{
			"label": "flex Complier",
			"command": "win_flex_bison-latest\\win_flex.exe",
			"args": [
				"-o",
				"${fileBasenameNoExtension}.flex.cpp",
				"--wincompat",
				"${file}"
			], // 编译命令参数
			"problemMatcher": {
				"owner": "l",
				"fileLocation": [
					"relative",
					"${workspaceRoot}"
				],
				"pattern": {
					"regexp": "^(.*):(\\d+):(\\d+):\\s+(warning|error):\\s+(.*)$",
					"file": 1,
					"line": 2,
					"column": 3,
					"severity": 4,
					"message": 5
				}
			}
		},
		//Bison编译命令
		{
			"label": "bison Complier",
			"command": "win_flex_bison-latest\\win_bison.exe",
			"args": [
				"--output=${fileBasenameNoExtension}.tab.cpp",
				"--defines=${fileBasenameNoExtension}.tab.h",
				"${file}"
			], 
			"problemMatcher": {
				"owner": "y",
				"fileLocation": [
					"relative",
					"${workspaceRoot}"
				],
				"pattern": {
					"regexp": "^(.*):(\\d+):(\\d+):\\s+(warning|error):\\s+(.*)$",
					"file": 1,
					"line": 2,
					"column": 3,
					"severity": 4,
					"message": 5
				}
			}
		}
	]
}

可以看到"command": "win_flex_bison-latest\\win_bison.exe",在上面这个里面两个command对应的目录问题,如果在【准备工作】里面选择的是配置环境变量的话,很显然就是直接一个win_bison.exewin_flex.exe就解决了,但是我这边没有配置环境变量。当前我的目录安排如下:
目录安排
所以不难理解为啥我这里写的是"command": "win_flex_bison-latest\\win_bison.exe",了吧。

编译运行

VS Code中按Ctrl + Shift + P呼出任务菜单,输入Run Task,选择Flex Complier或者Bison Complier(对应文件选择对应任务),即可生成对应Cpp,这时候编译或者h头文件,这时候大家应该都知道咋个办了吧!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值