MiniLang 1.0操作手册(MiniLang Language Manual)
版本:2025-05-16
---
目录
1. 产品定位
2. 运行环境
3. 快速开始(30 秒上手)
4. 语言参考
5. 标准库速查表
6. 文件 I/O、REPL 与调试器
7. 典型应用场景
8. 常见问题 FAQ
9. 社区与贡献
---
1. 产品定位
MiniLang 1.0 是一款 单文件、零依赖、跨平台 的 BASIC 方言实现,目标是把 1980 年代 BASIC 的简洁 与 现代轻量级脚本语言 的便利合二为一:
- 适合 教育、嵌入式原型、算法验证、数据脚本。
- 单文件 ≤ 2 000 行 C 源码,可 gcc 一行编译,也可 直接拖进 DOSBox 运行 .COM。
---
2. 运行环境
平台 最小配置 编译指令 备注
Linux / macOS / WSL 任何带 gcc/clang `gcc minic10.c -lm -o minic10` 默认 REPL
Windows MinGW-W64 或 MSVC `gcc minic10.c -lm -o minic10.exe` 同样一行
DOSBox / FreeDOS 8086 实模式 `gcc minic10.c -o minic10 && ./minic10 file.bas > a.com` 生成 .COM
---
3. 快速开始(30 秒上手)
```bash
# 1. 获取源码
curl -O https://github.com/MiniLang/minic10/raw/main/minic10.c
# 2. 一行编译
gcc minic10.c -lm -o minic10
# 3. 批处理脚本
echo '10 PRINT "Hello MiniLang"' > demo.bas
./minic10 demo.bas # 立即运行
# 或者
./minic10 # REPL 模式
> PRINT 2+3*4 : PRINT RND(100)
```
---
4. 语言参考
4.1 行格式
```
[行号] 语句 [: 语句 ...]
```
行号可省略(REPL 自动递增),批处理建议使用 10 20 30… 方便插入。
4.2 数据类型
- INTEGER 32-bit 有符号
- FLOAT IEEE-754 单精度
- STRING 最长 255 字节,自动 `\0` 结尾
4.3 变量
- 数值:`A` … `Z`
- 字符串:`A$` … `Z$`
- 数组:一维到三维
```
DIM A(10)
DIM B(2,3,4)
LET A(5)=123
```
4.4 运算符
- 算术:`+ - * / ^`(幂)
- 关系:`= < > <= >= <>`
- 逻辑:`AND OR NOT`
4.5 控制结构
```
FOR I = 1 TO 10 STEP 2
...
NEXT I
IF X>0 THEN PRINT "positive" ELSE PRINT "zero or neg"
GOTO 100
CALL MySub
RETURN
WHILE X<10
...
WEND
```
4.6 函数定义
- 单行表达式
`DEF FN SQR(X)=X*X`
- 多行过程
```
DEF FN MySub
PRINT "Hi"
RETURN
```
调用
```
PRINT FN SQR(9)
CALL MySub
``
---
5. 标准库速查表
数值 字符串
`ABS(x)` `SIN(x)` `COS(x)` `TAN(x)` `LOG(x)` `EXP(x)` `SQR(x)` `INT(x)` `RND(n)` `LEN(s$)` `ASC(s$)` `CHR$(n)` `MID$(s$,p,l)` `LEFT$(s$,l)` `RIGHT$(s$,l)` `STR$(x)`
---
6. 文件 I/O、REPL 与调试器
6.1 文件 I/O
```
OPEN "DATA.TXT" FOR INPUT AS #1
OPEN "LOG.TXT" FOR OUTPUT AS #2
INPUT #1, A$, B
PRINT #2, "Result="; A$, B
CLOSE #1
CLOSE #2
```
6.2 REPL 交互
- 启动:`./minic10`
- 提示符 `>`
- 支持行编辑、历史记录(终端自带)
- 多语句行同样支持
```
> LET A$="REPL" : PRINT "Hello "; A$
Hello REPL
```
6.3 调试器
```
TRACE ON /* 每行执行前打印行号 */
STOP /* 手动断点 */
CONT /* 继续 */
```
---
7. 典型应用场景
场景 示例脚本片段
算法教学 `FOR I=1 TO 100 : PRINT I*I : NEXT I`
数据脚本 `OPEN "sales.csv" FOR INPUT AS #1 …`
嵌入式原型 生成 .COM 后烧录到 8086 单板,直接运行
竞赛脚本 `WHILE T<1000 : T=T+1 : WEND` 快速验证逻辑
复古游戏 `DEF FN Fire` 多行动画子程序
---
8. 常见问题 FAQ
Q1 如何生成 DOS .COM?
A:运行批处理后,MiniLang 会把字节流直接写 `prog.com`,用 `dosbox prog.com` 即可。
Q2 浮点精度?
A:单精度(≈7 位有效数字),足够教育使用;如需双精度请自行修改源码。
Q3 数组最大维度?
A:三维,每维 ≤32767,总和受 `MAXSTR` 限制。
Q4 如何扩展新函数?
A:在 `call_builtin()` 里加一行映射即可,重新编译即可生效。
---
9. 社区与贡献
- GitHub 仓库:https://github.com/MiniLang/minic10
- Issue 与 PR 随时欢迎
- 教学案例、示例脚本持续更新
---
🎉 至此,MiniLang 1.0 操作手册完毕。
祝编码愉快,Keep BASIC alive!
276

被折叠的 条评论
为什么被折叠?



