语言文档
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)
内置指令
| Name | Description |
|---|---|
PRINT | Print variable or number. |
PRINTSTR | Print string memory. |
PRINT CHAR | Print ASCII character. |
GETIN | Read input to variable. |
ALLOC | Allocate memory block. |
RAND | Generate random integer. |
TOINT | Cast float to integer. |
EXIT | Terminate VM. |