微小的伟大语言:鼠标

主要观点:介绍了“Tiny Great Languages”系列的第 3 部分 Forth/MOUSE,包括其历史、特点、代码示例及宏的实现等,还对比了不同版本的 MOUSE 及与其他语言的区别,最后提及后续将介绍 Lisp 并鼓励读者关注相关平台。

关键信息:

  • 系列文章链接:Part 1: AssemblyPart 2: BASICPart 3: Forth/MOUSEPart 4: LispPart 5: APL/KPart 6: PL/0
  • MOUSE 特点:1976 年创建,早期计算机可用的连接性语言,用单字母操作符和变量的逆波兰表示法,紧凑可放入几 KB 内存,依赖命名变量而非栈操作。
  • 示例代码:一个简单的 MOUSE 阶乘程序,展示了变量赋值、运算、条件循环、宏等语法。
  • 宏实现:用$name...@定义,用#name...;调用,参数用%A等,可嵌套和递归,需在程序末尾定义。
  • 解释器代码:用一个函数实现,包含存储宏定义、数据栈等,逐字节执行代码,处理各种操作符和结构。

重要细节:

  • 原始 MOUSE 源代码发表于《BYTE》杂志,有新版本,本文使用 1979 年版。
  • 解释器先扫描代码找宏位置再执行,宏使代码更有用但使解释器变大。
  • 宏参数实现中,解释器将参数转换为在调用参数列表中的位置并找到实际值,每次使用时重新求值。
  • 可重写 MOUSE 阶乘程序以更简洁的方式展示宏的用法。
阅读 9
0 条评论