编写自己的(玩具)编程语言

2022-03-17 08:34:28 +08:00
 nielinjie

本文记录一个小型的玩具语言开发过程。作为学习实践 Rust 的副产品。

本过程将覆盖下面一些要点:

  1. 解析文本格式的源代码。
  2. 构建 AST (语法树)。
  3. 从语法树翻译为可执行的目标代码。
  4. 执行目标代码(作为验证)。

链接:

  1. https://zhuanlan.zhihu.com/p/479410951
  2. https://github.com/nielinjie/bian-lang/tree/main
2252 次点击
所在节点    Rust
2 条回复
gydi
2022-03-17 10:16:48 +08:00
我也分享一下我的 https://github.com/zzzgydi/weso-lang
用的 lalrpop 作语法树生成,可以翻译成中间代码,可以执行。实现了一下短路运算。
macrorules
2022-04-04 19:55:47 +08:00
所以没有自己写虚拟机?请教大佬一个问题,既然这样,wasm 是不是规定了接口,比如 `+` 必须要翻译成 `struct Add { lhs: Expr, rhs: Expr }` 这种结构体,然后再把结构体传给 wasm 接口?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/840914

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX