Python:
一款简单,实用,的编程语言
用Python来实现一门简单的编程语言(其实也不算是编程语言啦),过程非常的简单哦
那么,第一步~:赋值 and 输出
提示:作者是小白一只,不是很熟练,勿喷QwQ,第一次闲得无聊写知乎qwq
我们先来看看我们想要实现的语法:[咱选了一个很奇怪的语法,如果以后有机会,会去试试普通的高级语言的语法的qwq]
push a 1
put a
push指令呢,是用来向虚拟栈内压入一个值的,他的语法可以这样写:
push [变量名] [值:字符串/数字/布尔值]
而put指令,可以像print()函数一样输出一个变量,或者字符串
但是呢,一门语言肯定不止赋值输出吧?,所以我们需要扩展他的功能~
第二步,运算[加,减,乘,除,乘方]功能指令格式
加法addadd [变量a] [变量b] [存放结果的变量]
减法minus……
乘法time……
除法div……
乘法power……
他们的格式相同,都是 op[操作指令] [目标1] [目标2] [结果]
例如:
add a b
意思是把a和b加起来,结果放进c变量里
是不是很简单呀~?
第三步:我们好像需要一些比较变量的操作?
咱们应该去实现一个比较大小的指令,功能指令格式
判断a是否小于bless a b cless 比较值1 比较值2 结果变量
判断a是否等于bequal a b c……
判断a是否大于bgreater a b c
[谷歌翻译得来的这个greater]……
比如说呢~a是1,b是2。那么:less a b c,b比a大,所以判断后就是……(咱去运行一下看看的),
push a 1
push b 2
less a b c
put c
运行为:True
所以a比b小是true,那么目标c的值就是true啦
是不是感觉,就这?
对的,就这xwx[咳咳……]
我们是不是也需要一些分支语句呀?类似于if什么的?
对的!当然需要啦:
if a
嗯哼,你没看错,直接if a?!,怎么用啊?:是这样的:如果a是True,那么就执行下一行指令,如果是False,就跳过下一行指令,(草……好低级啊)
突然想起,一般这种低级的语法,都会有个jump指令的(也就是goto),那么咱们也要!
咱们的jump支持直接输入数字或者一个变量
jump a
jump 5[这个是行数]
美名其曰:跳转指令(咳咳咳)
最后!咱们需要一个能代表编程语言的高级功能,面向过程!
我们创造了两条指令,call和ret
先说说这几条指令的功能吧,
我们可以使用:过程名 + 冒号来开启一段过程
main:
...
...
...
ret
来定义一个过程名字叫做main的,ret是返回程序跳转前的行数,简单地说就是ret结束一个过程,如果遇到了call main 就会跳转到main里面,直到运行至ret才返回call的后面继续执貌似讲的不太好懂xwx']
没事,咱们来看看具体的运行就明白了:
put "1"
main:
put "2"
ret
put "3"
call main
put "4"
看看运行结果啦
结果是先输出了1,3,再进入了过程main,输出了2,最后离开过程(ret),继续执行了输出4
嗯~符合预期嘛
最后咱们只需要再完善一下其他的杂七杂八的指令就好,都很简单的
READ ,exit,nop(这个是没什么用的,占位咯)
RADE
exit
nop
READ规定只能放在第一行,可以用来输出源代码
exit是直接结束程序
nop就是……没什么用其实xwx
好啦~到此为止,你已经初步完成了这门伪语言的语法部分了,具体怎么实现,可以阅读咱下一篇
---作者 心空,编程小白,不喜勿喷qwq,如果有兴趣,可以私下跟咱聊聊天的
有疑问或者想法的,可以加咱QQ:3597974497,或者邮箱@http://qq.com
下篇见啦~ Time:2021 2 10 [没错,就是在过年前一天晚上突然奇想做的]
谢谢每一位阅读的小伙伴,你们的阅读是作者前进的动力