Python技术栈

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 5302|回复: 30

[LINUX] 不要说bash不行——bash强大到可以再实现一个脚本解释器 ...

[复制链接]

1

主题

18

帖子

68

积分

注册会员

Rank: 2

积分
68
发表于 2018-10-23 09:16:26 | 显示全部楼层 |阅读模式
去年用不到一个月的时间玩写了一个基于传统basic语言的Linux脚本语言,用它可以编写运行任何Linux程序的脚本。下面是语言的语法:


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

1

主题

18

帖子

68

积分

注册会员

Rank: 2

积分
68
 楼主| 发表于 2018-10-23 08:42:24 | 显示全部楼层
先看几个实例:
第一实例


REM 先假设第一个学生的成绩为最高分,第二学生的成绩为最低
COMMANDLET maxscore = " sed -n '1p' score.db | cut -d ':' -f 2 "
COMMANDLET minscore = " sed -n '2p' score.db | cut -d ':' -f 2 "
LET maxnumber = 1
LET minnumber = 2
REM number表示学生号
LET number = 3
DO number <= 48
REM score表示当前查看的学生成绩
COMMANDLET score = " sed -n &#39;[var:number]p&#39; score.db | cut -d &#39;:&#39; -f 2 "
IF maxscore < score THEN
LET maxscore = score
LET maxnumber = number
ELSEIF minscore > score THEN
LET minscore = score
LET minnumber = number
ENDIF
LET number = number + 1
LOOP
REM 输出最高分和最低分
PRINT " 最高分是:[var:maxscore] 学号:[var:maxnumber] "
PRINT " 最低分是:[var:minscore] 学号:[var:minnumber] "
REM 程序结束
END
回复

使用道具 举报

1

主题

18

帖子

68

积分

注册会员

Rank: 2

积分
68
 楼主| 发表于 2018-10-23 08:45:19 | 显示全部楼层
实际解释执行:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

1

主题

18

帖子

68

积分

注册会员

Rank: 2

积分
68
 楼主| 发表于 2018-10-23 08:48:15 | 显示全部楼层
实例2:



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

0

主题

3

帖子

43

积分

新手上路

Rank: 1

积分
43
发表于 2018-10-23 08:51:51 | 显示全部楼层
回复

使用道具 举报

1

主题

18

帖子

68

积分

注册会员

Rank: 2

积分
68
 楼主| 发表于 2018-10-23 08:55:20 | 显示全部楼层
实例3:


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

1

主题

18

帖子

68

积分

注册会员

Rank: 2

积分
68
 楼主| 发表于 2018-10-23 08:57:58 | 显示全部楼层
实例4:


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

0

主题

6

帖子

52

积分

注册会员

Rank: 2

积分
52
发表于 2018-10-23 09:01:22 | 显示全部楼层
这到底是为哪般呢
回复

使用道具 举报

1

主题

18

帖子

68

积分

注册会员

Rank: 2

积分
68
 楼主| 发表于 2018-10-23 09:04:17 | 显示全部楼层
当时一边编写解释器一边测试,有太多测试就不一一发图了。现在说说这个解释器的基本结构和原理,实际上就两个部分:
1.逐行检查翻译源代码,建立语法标记表和动态变量表,如果发现错误就即时通报,并停止解释过程。下面是报错的例子:








本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

3

主题

7

帖子

23

积分

新手上路

Rank: 1

积分
23
发表于 2018-10-23 09:07:06 | 显示全部楼层
哦?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则


QQ|Archiver|手机版|小黑屋|Python.BBS ( 鲁ICP备18046958号 )

GMT+8, 2020-8-9 11:25 , Processed in 0.151477 second(s), 21 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表