一个用于学习用途的垃圾脚本语言 Fucking trash language. Dont use it!!!
这是一个直接遍历AST并递归解释运行的解释型脚本语言
温馨提示:语法设计上抄了python,C/C++,类的实例化过程抄了一点ts。
坏消息:缝合怪
好消息:全给我缝完了
目前的功能制作清单(不一定会全部实现,因为只是做着玩的):
1.声明语句
2.赋值语句
3.if while for控制流语句
4.函数定义
5.类定义
6.闭包
7.内置全局变量
8.内置全局函数
9.new实例化
10.load载入其他脚本文件
==以下为未完成的==
7.带参类构造函数
8.类的继承
9.三目运算符
##语法介绍
变量名 = 值;
示例:
a = 3;
略
形同C/C++
def 函数名(参数序列){函数体}
示例:
load System;
def Function()
{
Write("Hello, world!");
}
def 类名{类体}
示例
def Entity
{
Name;
def SetName(n)
{
Name = n;
}
def GetName()
{
return Name;
}
Name = "";
}
//Tip:类中的语句都会在类被实例化时执行,充当了无参构造函数的作用
闭包暂时不支持直接构造匿名函数的形式,但支持函数定义语法
示例:
def GetFunc()
{
Num = 3;
def func()
{
return Num;
}
Num = 4;
return func;
}
Write(GetFunc()());
//输出结果:4
load 相对路径或绝对路径;
示例:
load System;
目前只内置了一个全局变量,即__name__
它的值只可能是main或module
当当前代码所处的文件是被load载入的,值便是module,反之则是main
内置全局函数必须通过call语句进行调用
示例:
call Write("Hello, world!");
实例名 = new 类名();
虽然目前没有做好类的有参构造函数的功能,但调用仍需写上一对小括号
未制作完毕,目前仅支持基本类型转换,当类类型转换时,会直接触发异常并报错
def Write(text)
无返回值;控制台中打印text文本并换行
def Read(text)
返回读取到的字符串数据;控制台中打印text
def Pause()
无返回值;暂停程序的运行,直到用户按下任意键
def QueryPerformanceCounter()
返回整型数据;查询性能计数器中的计数,并返回
def QueryPerformanceFrequency()
返回整形数据;查询性能频率,并返回
def TickCount()
返回整形数据;获取系统环境的Tick计数,并返回
新建一个文件夹作为项目本体,随后在里面新建一个文本文档,名称随意,后缀改为.ms,之后便可以开始编写M语言的代码了!
首先编译好本项目后,在exe所处的目录中新建一个config.cfg文件。
文件中写上
start 相对路径或绝对路径
这样,exe在启动的第一时刻,便会从cfg中寻找需要执行的主文件所处的路径位置,然后运行。