语言文档

Newlang 的设计哲学是“极简与底层控制”。本手册涵盖了语言的所有语法与核心机制。

基础语法 运算符 指针与内存 控制流 数组 函数 标准库与模块 内置指令

基础语法

所有关键字必须大写。语句不需要分号结尾,换行即代表语句结束。

VAR a, 10               # 声明 Int64 整数
VAR pi, 3.14159         # 声明 Float64 浮点数
VAR is_valid, true      # 布尔值
VAR msg, "Hello"        # 字符串

运算符

支持原生四则运算、比较运算符,以及底层的位运算。原生运算符拥有标准的优先级,且支持括号。

# 原生数学
VAR a, (10 + 5) * 2
VAR b, 100 / 4 - 5

# 比较
IF a > b THEN { ... }

# 位运算
VAR c, a AND b
VAR d, a L 2            # 左移

指针与内存

这是 Newlang 的硬核特性。通过引用直接修改底层内存槽位。

VAR a, 100
VAR p, &a               # & 获取 a 的内存地址
&a, 200                 # 直接通过引用修改 a 的值
*p, 300                 # * 解引用,通过指针 p 修改内存

控制流

支持嵌套的 IF 与 WHILE 循环,可随时中断。

IF a > 0 THEN {
    PRINT 1
} ELSE {
    PRINT 0
}

WHILE a > 0 THEN {
    &a, a - 1
    IF a == 5 THEN { BREAK }
}

数组

支持静态长度与动态扩容数组。底层通过连续内存块实现。

VAR static_arr[]{} 5    # 静态数组
VAR dynamic_arr[]{} v   # 动态数组

PUSH dynamic_arr, 10    # 尾部压入
PRINT dynamic_arr[0]    # 下标访问

函数

极简的函数定义,必须使用 _RE 作为返回值关键字(避免与按位取反 RE 冲突)。

VAR add(a, b) {
    _RE a + b
}

标准库与模块

通过 USE 引入 .nwdep 文件。编译器采用按需加载机制。

USE "maths"
VAR a, pow(2, 10)

内置指令

NameDescription
PRINTPrint variable or number.
PRINTSTRPrint string memory.
PRINT CHARPrint ASCII character.
GETINRead input to variable.
ALLOCAllocate memory block.
RANDGenerate random integer.
TOINTCast float to integer.
EXITTerminate VM.