使用bison和yacc制作脚本语言(1)

使用bison和yacc制作脚本语言(1)

环境:

环境windows 10 Cygwin64
语言C
工具mingw bison flex

主要是使用bison和flex这两个软件,编译器无所谓VC也可以

先安装Cygwin,这个是一个类似Linux的一个shell环境,在上面可以用linux的一部分命令

https://www.cygwin.com/

在里面下载安装器然后安装即可

注意在安装器里面选下载地址的时候手动添加一个国内地址,网速快很多:http://mirrors.163.com

1620884-20190313143437403-566352028.png

下载 make,flex bison就可以

Mingw 也一样,在官网下安装器,然后一般选个gcc和gdb就可以

1620884-20190313143457636-273055237.png

1620884-20190313143511763-216272841.png

Mingw一般要添加环境变量,直接把 bin目录加进去就可以了

我们打算制作的脚本语言的功能:

  1. 能实现简单的运算 加减乘除括号大小等于 字符串拼接

  2. 简单的流程控制 for if break 等等

  3. 函数的声明和调用

  4. 内置函数

为什么使用工具

使用yacc和bison可以让程序更改扩展的时候更容易,加快开发速度,如果不使用工具的话,最好能提前规划好语言,不然更改扩展的时候特别头疼

转载于:https://www.cnblogs.com/stdpain/p/10522898.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Shell程序的具体要求如下: (1)本实验的user-sh程序设计不包括对配置文件和命令行参数的支持。User-sh应提供一个命令提示符,如“user-sh>”,表示等待用户的输入,执行命令输出的必要信息,然后再打印下一个命令提示符。当用户没有输入时,user-sh需要一直处于随时等待输入状态,同时在屏幕上显示一些基本提示信息。 (2)实现以下内部命令。 exit 结束所有的子进程并退出。 jobs 打印当前正在后台执行的作业和被挂起的作业信息。输出信息应采用便于用户理解的格式。jobs自身是一条内部命令,所以不需要先是在输出上。 history 列出用户最近输入过的N条命令,不论这个命令是否正确执行过。 fg%<pid> 把<pid>所标识的作业放到前台运行。若这个作业原来已经挂起则让其继续运行。 bg%<pid> 把<pid>所标识的已挂起的进程放在后台运行。 (3)进行前台和后台作业切换 user-sh应当在打印新的命令提示符之前等待前台运行的子程序结束。前台作业和后台作业的区别是:shell在前台作业执行完之前要一直处于等待状态。而在开始执行后台作业时要立刻打印出提示符,让用户继续输入下一条命令。 执行前台作业即在提示符后输入一个可执行文件的路径(绝对路径)即可,执行后台作业则需在可执行文件路径后加上一个“&”符号。 前台作业的执行总是优先于一个后台作业的执行,user-sh不需要在打印下一个提示符前等待后台作业的完成无论是否会有后台作业的执行,只要完成一个前台作业,便立即输出提示符。一个后台作业结束时,user-sh应当在作业执行结束后立刻打印出一条提示信息,后面会在命令语法分析程序中介绍相应的语法来支持后台作业。 user-sh通过处理组合键实现前/后台作业切换: Ctrl+Z 产生SIGTSTP信号,这个信号不是挂起user-sh,而是让user-sh挂起在前台运行的作业,如果没有任何前台作业,则该特殊键无效。 Ctrl+C 产生SIGINT信号,这个信号不终止user-sh,而是通过user-sh发出信号杀死前台作业中的进程。如果没有任何前台作业,则该特殊键无效

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值