Skip to content
/ mll Public

MIndustry逻辑语言 以及用Rust编写的编译器

License

Notifications You must be signed in to change notification settings

ealinye/mll

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

29 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Mindustry逻辑语言(MLL)

随着时代发展,传统逻辑已经无法满足开发者们对开发的需要

由此,MLL应运而生

什么是MLL?

MLL是一门新的编程语言,语法贴近逻辑的同时增加了现代编程语言的特性

旨在逻辑开发者的提升开发体验

而本程序是一个编译器,能够将MLL代码编译为Mindustry逻辑代码

MLL相比传统逻辑有什么优势?

传统逻辑类似汇编,只有很基础的一些方法

很多数据结构,使用传统逻辑难以实现

MLL能够把具有高级特性的MLL代码编译为传统逻辑代码

MLL增加了哪些特性?

控制流

  1. if else 表达式
if a {

} else if b{

} else {

}

  1. while循环
while cond{

}
  1. repeat..until语句 学过lua的都知道
repeat {


}until cond
  1. goto 祖宗之法
<a> # 创建一个label

# 一些代码 ... 

goto a # 跳转到a

一种特殊的goto:

goto _ # 重头开始运行(== end)

数组 todo

开发者可以设置一个定长数组,编译器会自动分配其所在的内存元/库

MLL代码

逻辑代码

函数

下面的代码是一个简单的函数调用的例子

mll支持两种函数:

  1. 普通函数 对返回值的类型没有限制,但是所有代码都会编译到同一个处理器
  2. 协同函数 通过一些机制,借用内存也能块将任务分发到其他处理器并行计算 todo
fn add(a,b) return a+b
# 或者 
fn add(a,b) {return a+b}

函数的一些特性

  1. 函数支持重载

也就是说

fn fna(){}

fn fna(a){}

是两个函数

  1. 不是"先声明再使用"
foo() # 没有问题
fn foo(){} 
  1. 不可以嵌套声明
if a{
    fn b(){} # 报错
}

表达式解析

能够用符合人类思维的方法解析表达式

支持运算符:

  1. 算术
  2. 逻辑
  3. 数学函数
  4. 向量函数

MLL代码

set x = 114 * (514 + 1919810)
set r = rand(114514)

等价的传统逻辑代码

op add op_t0 514 1919810
op mul x 114 op_t0
op rand x 114514 0

未加入(计划加入)特性

我已经退圈了

没有什么动力更新

随缘

About

MIndustry逻辑语言 以及用Rust编写的编译器

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages