用go语言自制解释器-1

Feb 06, 2024

Monkey编程语言和解释器

Monkey具有以下特性:
类C语法
变量绑定
整型和布尔型
算术表达式
内置函数头
等函数和高阶函数
闭包
字符串数据结构
数组数据结构
哈希数据结构
 
let age = 1; let name = "Monkey"; let result = 10 * (20 / 2); let myArray = [1, 2, 3, 4, 5]; let thorsten = {"name": "Thorsten", "age": 28}; myArray[0] // => 1 thorsten["name"] // => "Thorsten" let add = fn(a, b) { return a + b; }; add(1, 2); let fibonacci = fn(x) { if (x == 0) { 0 } else { if (x == 1) { 1 } else { fibonacci(x - 1) + fibonacci(x - 2); } } };

词法分析

  1. 词法分析
一门编程语言中将字符形式的源代码作为另一门编程语言来解释,需要两次转换源代码的表示形式:
第一次是用词法分析器将源代码转换为词法单元,这个过程称为词法分析。词法分析器有时也称词法单元生成器(tokenizer)或扫描器(scanner)
词法单元本身是短小、易于分类的数据结构。它会被传给语法分析器。在第二次转换中,语法分析器会将词法单元转换成抽象语法树。
  1. 定义词法单元
在token/token.go 中定义了token的类型和token结构体
token的类型主要包含:标识符、字面量、操作符、分隔符和关键字。
token结构体如下:
type Token struct { Type TokenType // token类型 Literal string // token 字符 }
  1. 词法分析器
 
 
 

Copyright © 2025 later

logo