1 个不稳定版本

0.1.0 2023年10月29日

#507编程语言

GPL-3.0-only

15KB

动力

一种快速、强大、表达性和类型安全的语言。

注意:该语言仍在开发中,但目前功能相当齐全。

安装

要安装 dycdynamik compiler),请确保已安装 cargo 并运行以下命令

$ cargo install --git https://github.com/dynamik-lang/Dynamik

然后您就完成了!

快速入门

在动力中打印第一个hello world

目前还没有标准库,因此我们必须使用libc中的printf。

文件:hello_world.dy

extern "C" let printf(string, ...) -> int;

printf("Hello, World!\n");

运行您的第一个代码

编译代码

$ dyc compile hello_world.dy    # to compile
$ ./hello_world                 # to run the executable
Hello, World!

Jit执行代码

$ dyc run hello_world.dy
Hello, World!

语言参考

这是该语言目前支持的内容。注意:由于该语言仍在开发中,本节中的所有内容都可能发生变化。

注释

在动力中,就像任何其他语言一样,注释用于在代码中添加注释或描述功能。它们不是程序的一部分,但为阅读代码的开发者提供了有价值的上下文和解释。

动力使用单行注释,以--开头。以下是一个示例

-- This is a comment in Dynamik
let a: int = 1; -- You can also write comments after code

数据类型

动力支持以下数据类型

  • string:字符序列。
  • int:64位有符号整数。
  • float:64位浮点数。

let

要定义变量,请使用 let name: type = value; 语法。例如

let a: int = 1;
let b: int = a + 10;

基本数学运算符

动力支持以下基本数学运算符

运算符 描述 示例
+ 加法:此运算符将两个数字相加。 let a: int = 1 + 2;a 设置为 3
- 减法:此运算符从第一个数字中减去第二个数字。 let a: int = 5 - 2;a 设置为 3
* 乘法:此运算符将两个数字相乘。 let a: int = 2 * 3;a 设置为 6
/ 除法:此运算符将第一个数字除以第二个数字。 let a: int = 6 / 2;a 设置为 3
% 取模:此运算符返回第一个数字除以第二个数字的余数。 let a: int = 5 % 2;a 设置为 1
! 逻辑非:此运算符反转布尔值的值。 let a: bool = !true;a 设置为 false
- 否定:此运算符改变数字的符号。 let a: int = -3;a 设置为 -3

函数

您可以使用以下语法在 Dynamik 中定义函数

fn print_hello() {
    printf("Hello World");
}

函数也可以接受参数

fn add(v1: int, v2: int) -> int {
    return v1 + v2;
}

在上面的示例中,add 函数接受两个 int 参数并返回一个 int 值。

外部函数

Dynamik 允许您使用 C 库中的外部函数。要使用外部函数,您可以声明如下

extern "C" fn puts(string) -> int;
extern "C" fn printf(string, ...) -> int;

末尾的 ... 表示该函数可以接受可变数量的参数,使其成为变长参数函数。

如果-否则语句

Dynamik 支持用于控制程序流的 if-else 语句。例如:注意:Dynamik 不支持

let a: int = 3;
let b: int = a + 1;

if a != b {
    printf("A is not equal to B");
} else {
    printf("A is equal to B");
}

在上面的代码中,if-else 语句检查 a 是否等于 b,在每种情况下,都打印一条消息。

while 语句

Dynamik 还支持 while 循环。例如

let x: int = 0;
while x < 5 {
    printf("%d\n", x);
    x = x + 1;
}

在上面的代码中,while 循环在 x 小于 5 时打印 x 的值。

模块

Dynamik 允许您创建模块以组织代码和创建命名空间。例如

mod math {
    fn add(v1: int, v2: int) -> int {
        return v1 + v2;
    }
}

在这个例子中,我们创建了一个名为 math 的模块。该模块包含一个名为 add 的函数,该函数将两个值相加并返回结果。使用 math 模块,您可以如下调用 add 函数

printf("1 + 2 = %d\n", math::add(1, 2));

待办事项

  • 添加更多类型
  • 添加指针
  • 添加固定大小数组
  • 添加结构体
  • 添加特性和impl块
  • 添加依赖类型
  • 创建标准库
  • 开发包管理器

无运行时依赖