
B语言语法速成用B语言编译器bext-lang/b掌握10个核心编程概念【免费下载链接】bCompiler for the B Programming Language implemented in Crust项目地址: https://gitcode.com/gh_mirrors/b8/bB语言编译器 bext-lang/b 是一款用 Rust 实现的 B 语言编译器支持 Linux、Windows、macOSDarwin以及 Uxn、6502 等趣味目标平台。对于想快速入门 B 语言、了解现代编程语言共通的语法核心或者单纯想玩复古编程语言的新手来说它都是一个极佳的学习工具。本文将通过 10 个核心编程概念带你从零速成 B 语言语法并配有大量可直接运行的示例代码。什么是 B 语言先认识 bext-lang/b 编译器B 语言是 C 语言的前身诞生于 20 世纪 60 年代末的贝尔实验室由 Ken Thompson 和 Dennis Ritchie 共同设计。它语法精简、贴近硬件被誉为极简派编程语言的典范。而 bext-lang/b 项目用 Rust 重新实现了 B 语言编译器让你能在现代操作系统上重新体验这门语言还增加了不少贴心扩展例如顶层extrn声明、内联汇编、naked 函数等详见 docs/bext.md。快速上手5 分钟跑通第一个 B 语言程序最快体验 B 语言编译器的方法克隆仓库git clone https://gitcode.com/gh_mirrors/b8/b编译项目在仓库根目录执行make运行示例./build/b -run ./examples/hello_world.b如果一切顺利终端会输出Hello, World。示例程序examples/hello_world.b的全部代码只有 5 行非常直观main() { extrn printf; printf(Hello, World\n); }10 个核心编程概念逐一击破概念 1main() 程序入口 每个 B 语言程序都从main()开始执行函数体用花括号{}包裹。与 C 语言不同B 语言的main可以不带返回类型语法更随意main() { printf(Hello\n); }B 语言也支持带参数的main(argc, argv)用于读取命令行参数参考examples/echo.b中的做法。概念 2auto 声明局部变量 B 语言使用auto关键字声明局部变量可以一次声明多个并用逗号分隔auto a, b, c; auto i;变量声明后可直接赋值使用无需指定类型——B 语言只有一种字word类型这也是它极简风格的体现。概念 3extrn 声明外部函数 extrn相当于 C 语言的extern用于声明外部函数或变量。最常见的用法是引入标准库的printfmain() { extrn printf; printf(Hi\n); }在 bext-lang/b 中你甚至可以把extrn放在文件顶层让声明对所有函数可见参见 docs/bext.md。概念 4printf 格式化输出 ️printf是 B 语言最常用的输出函数支持%d整数、%s字符串、%c字符等占位符printf(%d %c %s\n, 42, B, lang);需要注意B 语言用反斜杠\作为转义字符\n表示换行。概念 5while 循环 while循环是 B 语言最基本的循环结构。看examples/fib.b中生成斐波那契数列的写法while (a 1000000) { printf(%d\n, a); c a b; a b; b c; }只要条件成立循环体就会反复执行逻辑与 C 语言几乎一致。概念 6if / else 条件分支 if/else用于条件判断。经典 FizzBuzz 问题examples/fizzbuzz.b完整展示了它的用法其中还包含嵌套 if 与取模运算%if (i % 3 0 | i % 5 0) { if (i % 3 0) printf(Fizz); if (i % 5 0) printf(Buzz); } else { printf(%d, i); }注意 B 语言用|表示逻辑或这一点与 C 语言不同。概念 7数组与指针 B 语言中数组与指针关系密切*用于解引用取地址。tests/vector.b演示了数组赋值与指针算术auto xs 4; // 声明含 4 个元素的数组 *xs 34; // 解引用赋值 xs[2] 35; // 下标访问 *(xs 2*W) // 指针偏移访问理解数组名即指针这一思想是掌握 B 语言的关键一步。概念 8switch 多分支选择 switch语句根据表达式的值跳转到对应case非常适合多分支场景。经典之作 Duffs Deviceexamples/duffs_device.b巧妙利用了 case 穿透switch count%8 { case 0: while(1) { putchar(*s); case 7: putchar(*s); ... }这段代码同时展示了switch与循环嵌套的魔法是理解底层优化的绝佳素材。概念 9goto 与标签 ️goto语句配合标签可以实现无条件跳转。tests/goto.b展示了如何用 goto 实现循环loop: if (i 5) { printf(%d\n, i); } else { goto end; } goto loop; end:虽然现代编程不提倡滥用 goto但理解它有助于读懂历史代码。概念 10函数定义与递归 ♻️B 语言支持自定义函数与递归调用。examples/fib.b的 main 函数调用了外部函数你也可以自行定义函数例如计算阶乘fact(n) { if (n 1) return(1); return(n * fact(n - 1)); }注意 B 语言的return可以带括号return(x)这也是一种风格特色。更多学习资源 示例代码examples/目录下有 20 个可运行程序从hello_world.b到donut.b、snake.b娱乐性十足扩展语法文档docs/bext.md 记录了与原始 B 语言的差异和扩展代码生成器文档docs/bgen.md 教你如何为 Uxn、6502 等平台编写后端测试工具文档docs/btest.md 介绍自动化测试方法回归测试tests/目录覆盖了 goto、递归、指针、三元表达式等大量语法特性结语通过这 10 个核心编程概念你已经掌握了 B 语言编译器 bext-lang/b 的绝大部分语法要点。B 语言虽老但其极简的设计理念至今仍影响着无数现代语言。如果你想亲自动手体验克隆仓库、运行示例、修改代码几分钟就能写出属于你的第一个 B 语言程序。祝你玩得开心【免费下载链接】bCompiler for the B Programming Language implemented in Crust项目地址: https://gitcode.com/gh_mirrors/b8/b创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考