自制脚本语言笔记(没什么价值)

本文记录了作者在两周内自制脚本语言的过程,涵盖词法分析、语法分析、抽象语法树构建、解释器实现、函数与闭包、面向对象、数组功能、局部变量优化、内联缓存、虚拟机编译等方面。通过学习和注释代码,作者尝试理解编译原理并使用gluonj扩展AST。
摘要由CSDN通过智能技术生成

2周自制脚本语言

1.前言与说明

开始时间:2021年6月13日

目的:以实践的形式了解编译原理的部分知识,动手自制改进脚本语言

后来发现理解代码太难太难,最终选择将能看懂的代码进行注释

本文没有什么参考价值,完全是我在学习过程中的无聊笔记。排版也比较乱。

开始注释

第三章代码注释完成

实现词法分析功能。

第四五章代码注释完毕

实现语法分析

有很多东西虽然可以猜到是什么意思,但还是理解不够透彻,不知道具体每一步骤实在做什么。

整体介绍
/ast

包含abstract syntax tree(ast) 的数据结构

/stone

**Token.java**
是每个token的抽象类
**Lexer.java**
词法分析器,通过正则表达式分析出一个一个语法单位。其中还包括Token的三个子类 NumToken IdToken StrToken
**CodeDialog.java**
Reader的子类,为词法分析器做了一些预处理。
**Parser.java**
作者提供的类库 用于语法分析的类,提供了语法分析的方法
**ParseException**
重写的异常处理类
**BasicParser**
用于执行语法处理的类

实际上上述做的就是 构造出一个具体的抽象语法树。
继续继续


第六章代码注释完毕

主要功能是对抽象语法树进行解释和计算。

整体介绍

  1. 通过gluonj 扩展AST类中的数据结构源代码,使每一个节点都有eval方法,用于计算
  2. 计算的过程是从上到下递归,类似于深度优先遍历
  3. 在eval中对常用的运算符:+ = == > 等,以及if while 代码块做具体的处理。
  4. 至此,stone语言可以是实现基本的运算功能。
关于gluonj

gluonj is a sample of AOP,it provide a way to extend a Class
such as:

@Reviser public static class ASTLeafEx extends ASTLeaf{
   
	public ASTLeafEx(Token t
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值