# MiniScript **Repository Path**: javaup/miniscript ## Basic Information - **Project Name**: MiniScript - **Description**: 用Go语言实现的迷你JavaScript解释器,逐步实现各个特性。 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: https://gitee.com/javaup - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2022-11-24 - **Last Updated**: 2023-04-11 ## Categories & Tags **Categories**: Uncategorized **Tags**: Go语言, JavaScript, 解释器, 编程语言, 脚本语言 ## README # MiniScript 一款用Go语言编写的JavaScript解释器,逐步实现各个规范与功能 --- ## 前言 > > 作为一个非科班出身的猿,什么编译原理也不懂,确实想了解下编程语言的底层,偶然间见到一款用C++编写的JavaScript解析器比较简单易懂,于是用Go重写一遍,尝试理解下. ## 开发文档 未完成 ### 基本语法 #### 赋值语句,支持var和let关键字,效果一样 ```javascript var a = 1; var c = true; var z = "hello"; var f = function(){}; let r = Math.random(); let j = {name:"BurNing", age: "30", sex: 0 + a}; let arr = [1,2,3,4,5,"hello",a,c,z]; //不支持如下语法,声明的时候就必须赋值 var a; let z; ``` #### 循环语句 ```javascript //没有while与do while循环 for(var i = 0 ; i < 10 ; i++){ a = a + 2; } ``` #### 条件语句 ```javascript if(a > 10){ a = 0 }else{ a = 2 } ``` #### 函数声明 ```javascript function Call(){ a = "Hello JavaScript" } var NameLess = function(){ c = false } ``` ### String + indexOf + charAt + length + lastIndexOf + split + toUpperCase + toLowerCase + startsWith + ensWith ### Date + now + format + parse + getFullYear + getMonth + getDay + getHour + getMin + getSec + setTimeout + setInterval + clearTimer ### Win + DSG参数说明 + alert ### Http + get + post ### Console + log + start + end ### Math + abs + floor + ceil + sqrt + round + random + trunc ### File + createFile + createFolder + move + copy + write + read + deleteFile + deleteFolder + rename ### Json + stringify + parse ### Raw + getScreenSize ### Thread + invoke ## 模块介绍 ### Assert > 用Go模拟Assert,主要用于打印解析器、语法器、解释器中出现的错误,尽量精确到行数与字符数 ### Buildin > 提供一些内置的对象,例如:JSON,Math,String等 ### Global > 主要是提供一些全局的方法或者变量 ### Interpreter > 解释器,主要负责执行语法树 ### Kit > 提供一些工具类 ### Lexer > 主要是用于扫描文件字符串解析为token ### Parser > 将token解析为语法树 ### Test > 包含一个js测试文件和一个测试函数 --- > [宝藏传送门](https://github.com/codecrafters-io/build-your-own-x) > 目前天天上班,努力摸鱼更新