/BY-Monkey

An interpreter written in Go language.

Primary LanguageGoMIT LicenseMIT

BY-Monkey 语言

致谢

我想借此机会感谢陪伴着我的她,这两三个月让我坚持下来的动力是她的陪伴和我想为我们的未来努力的决心。

还要感谢《用Go语言自制解释器》的作者Thorsten Ball与译者孙波翔先生,以及《编译原理》等书的作者, 感谢你们作为前人的努力,使得我有能力来写出这门语言。

前言

解释器是如何工作的?或者说换个说法,一门编程语言到底是如何从若干的字符串组合变成程序的?

这些对于至少我来说是十分具有吸引力的,怎么实现一个介于人和机器的“翻译”,实在是让人着迷,于是便动手, 在参考了若干书籍、博客之后,终于是一步一步将这个自己的编程语言给写了出来。

语言特性

BY-Monkey 最新版本具有以下特性:

  • 类 C 语法
  • 变量绑定
  • 整形和布尔型
  • 算术表达式
  • 内置函数
  • 头等函数和高阶函数
  • 闭包
  • 字符串数据结构
  • 哈希数据结构

还很简陋,但是已经足以称为是一门编程语言了,我相信随着我之后的努力,它会不断增加新的功能与特性,尽情期待!

而这个项目接下来的更新,更多并非是为了推广这一门语言,而是作为一个理解性的一个记录文档, 分享我实现BY-Monkey语言的过程与遇到的许多有趣特性的实现方法。

语言简介

变量的绑定只需要使用let关键字即可,现在BY-Monkey支持的类型有: 整型、布尔型、字符串与数组和哈希表。

let age = 1;
let t = true;
let name = "BY-Monkey";

let myArray = [1, 2, 3, 4];
let BY = {"name":"炳源","age":21};

对应的访问也并不难

puts(age);
puts(t);
puts(name);

puts(myArray[0]);
puts(BY["name"])

同时BY-Monkey的函数的使用也是非常简单

let add = fn(x,y) {
    x + y;
}

BY-Monkey支持隐式返回和显性返回我们既可以通过一个表达式,也可以通过return来返回我们想要的元素。

BY-Monkey同时也支持闭包和高阶函数

let newAdder = fn(x) { fn(y){x + y} };
let addTwo = newAdder(2);

addTwo(3);

暂且先介绍到这里,未来我会给这个语言添加更多的我认为有趣且有用的特性,欢迎我们一起学习和进步!