25 个版本 (4 个重大更改)
0.5.10 | 2019 年 10 月 19 日 |
---|---|
0.5.9 | 2019 年 10 月 19 日 |
0.4.2 | 2019 年 10 月 5 日 |
0.3.2 | 2019 年 10 月 2 日 |
0.1.3 | 2019 年 8 月 31 日 |
#901 in 编程语言
每月 51 次下载
用于 tsar
18KB
303 行
xasm
一个跨平台、编译和动态类型化的编程/中间语言
Xasm 旨在成为编译和动态类型化编程语言的中间表示。然而,xasm 本身也适合用于脚本。
特性
- 动态类型
- Lua 风格的速度
- 易于使用的 Rust 外部函数接口
- 一等支持函数式和面向对象编程
- 简单的语法
文档
您可以在此处找到虚拟机的文档,以及在此处找到编译器后端文档。这两个组件都称为 xmachine
和 xassembler
,您可以在我的 GitHub 账户上找到它们。
$ xasm
xasm x.x.x
Adam McDaniel <[email protected]>
Compiler for the xasm programming language
USAGE:
xasm [SUBCOMMAND]
FLAGS:
-h, --help Prints help information
-V, --version Prints version information
SUBCOMMANDS:
compile Compile a xasm file
help Prints this message or the help of the given subcommand(s)
run Run a xasm file
示例
以下是您如何在 xasm 中实现基本控制流结构的示例。
value = 1
if value {
println("`value` is not 0")
} else {
println("`value` is 0")
}
while 1 {
println("Still looping!")
}
请注意,xasm 旨在成为中间表示!
面向对象编程
要在 xasm 中编写面向对象的代码,首先您编写一个类。
class Point {
fn new(self, x, y) {
self.goto(x, y)
self
}
self.goto(self, x, y) {
self.x = x
self.y = y
}
}
new
方法通常用于实例化对象,但您也可以编写其他构造函数。我们使用 new
方法的原因是,new
函数将调用我们类的 new
函数来构造我们的对象。
以下是我们的 Point
的构造方式。
p = new(Point, 2, 3)
函数式编程
由于 xasm 支持闭包,因此您可以轻松实现 Church 编码。
fn True(a) {
fn(b) { a }
}
fn False(a) {
fn(b) { b }
}
fn If(c) {
fn(a) {
fn(b) {
(c(a))(b)
}
}
}
此外,您还可以使用更多实用的函数式编程技术。
multiply = fn(n) {
fn(m) {
mul(n, m)
}
}
double = multiply(2)
triple = multiply(3)
println(double(3))
println(triple(3))
安装
安装 Rust
# For *nix users
# If you're a windows user, go to https://rust-lang.net.cn
curl https://sh.rustup.rs -sSf | sh
安装/更新 xasm
cargo install -f xasm
问题
如果您遇到问题,请发布问题!
许可证
xasm 在 Apache 许可证(版本 2.0)的条款下分发。
有关详细信息,请参阅 LICENSE。
依赖项
~3-4MB
~72K SLoC