1 Star 1 Fork 0

javaup / MiniScript

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README

MiniScript

一款用Go语言编写的JavaScript解释器,逐步实现各个规范与功能


前言

作为一个非科班出身的猿,什么编译原理也不懂,确实想了解下编程语言的底层,偶然间见到一款用C++编写的JavaScript解析器比较简单易懂,于是用Go重写一遍,尝试理解下.

开发文档 未完成

基本语法

赋值语句,支持var和let关键字,效果一样

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;

循环语句

//没有while与do while循环
for(var i = 0 ; i < 10 ; i++){
    a = a + 2;
}

条件语句

if(a > 10){
    a = 0
}else{
    a = 2
}

函数声明

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测试文件和一个测试函数


宝藏传送门

目前天天上班,努力摸鱼更新

空文件

简介

用Go语言实现的迷你JavaScript解释器,逐步实现各个特性。 展开 收起
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
1
https://gitee.com/javaup/miniscript.git
git@gitee.com:javaup/miniscript.git
javaup
miniscript
MiniScript
master

搜索帮助

53164aa7 5694891 3bd8fe86 5694891