English README, please click on README-en_US.md
如果你想学习 Bang 语言, 首先你需要对Mindustry的逻辑导出形式较为熟悉.
而如果不熟悉可以阅读或参考 逻辑入门教程
还需要有一定的离开逻辑编辑器手动编写其导出形式的能力
如果你满足了上述条件, 那么你只需要阅读学习教程即可, 还可以看下面的旧版阅读索引, 比较乱和难读, 但是更全些
已经弃用的阅读索引
value.mdtlbl
mult_line_string.mdtlbl
dexp.mdtlbl
print.mdtlbl
op.mdtlbl
op_expr.mdtlbl
control.mdtlbl
control_plus.mdtlbl
control_block.mdtlbl
cmps.mdtlbl
insert_sort.mdtlbl
switch.mdtlbl
const.mdtlbl
inline_block.mdtlbl
take.mdtlbl
compiling_eval.mdtlbl
cmp_deps.mdtlbl
switch_append.mdtlbl
switch_catch.mdtlbl
take2.mdtlbl
gswitch.mdtlbl
mul_takes_and_consts.mdtlbl
cmper.mdtlbl
setres.mdtlbl
consted_dexp.mdtlbl
quick_dexp_take.mdtlbl
value_bind.mdtlbl
dexp_binder.mdtlbl
closured_value.mdtlbl
caller.mdtlbl
match.mdtlbl
const_match.mdtlbl
builtin_functions.mdtlbl
value_bind_ref.mdtlbl
如果没有列出那请在看完上述后自行观看, 顺序可以参考文件创建顺序.
同时也有一篇参考手册, 可以共同观看.
[!WARNING] 上述提到的[参考手册]编写版本已经是完全过时的, 初学或许可用, 进阶完全不能构成语言参考来使用
且上述提到的教程目录是由远古版本一步步迭代而来, 风格非常不适合学习, 如果有什么疑问建议直接在讨论中询问
有一些大型且之后编写的例子, 熟练后可以作为参考, 或截取其中部分作为工具库
std部分较为通用、大型的工具for_each方便的循环包装function.mdtlbl快速生成逻辑函数stack.mdtlbl包装一个栈, 简化常用栈操作count_loop.mdtlbl对动态次数循环生成循环展开timeit.mdtlbl测试执行行数, 衡量性能sync.mdtlbl互斥锁, 用于保护多个逻辑间共同读写的数据
如果觉得 Bang 语言过于硬核、并不怎么需要等, 可以尝试此编译器的一些附属功能
- 重命名标签:
mindustry_logic_bang_lang in - 转换为标签跳转:
mindustry_logic_bang_lang i - 进行简单的变量检查:
mindustry_logic_bang_lang l - 提取逻辑中的 op 为表达式:
mindustry_logic_bang_lang b
这是一个极简逻辑语言强化, 仅提供了将返回值的多行嵌入一行中的能力, 类似 Bang 中 DExp 的简化版本
在括号内的$打头变量名将被当做当前括号的返回变量, 变量名为空则新建匿名变量
更多例子参考 mini_paren.logic
使用 mindustry_logic_bang_lang p 来编译它