# go.js **Repository Path**: llyb120/go.js ## Basic Information - **Project Name**: go.js - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-03-21 - **Last Updated**: 2025-03-22 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 简易JavaScript引擎 这是一个用Go语言实现的简易JavaScript引擎。目前支持ES5的部分功能。 ## 功能 目前支持的功能: - 基本数据类型(整数、浮点数、字符串、布尔值、null、undefined) - 变量声明和赋值(var、let、const) - 基本算术运算(+, -, *, /, %) - 比较运算符(>, <, >=, <=, ==, !=) - 逻辑运算符(&&, ||, !) - 条件语句(if-else) - 函数定义和调用(支持递归) - 函数表达式:`const fn = function() {}` - 函数声明:`function fn() {}` - 三元运算符:`condition ? expr1 : expr2` - 字符串和其他类型的自动转换(与+运算符一起使用时) - 基本对象和数组操作 - 支持数组的length属性 - 部分内置函数(console.log, parseInt, parseFloat) ## 限制 当前的限制: - for循环支持有限(仍在开发中) - 不支持while循环 - 不支持数组和对象的高级方法 - 不支持类和原型继承 - 对象字面量只能使用字符串键 - 错误处理有限 - 不支持ES6及更高版本的特性 ## 使用方法 编译JS引擎: ``` cd jsengine go build ``` 运行JavaScript代码: ``` ./jsengine "const x = 10; const y = 20; x + y;" ``` 或者使用文件内容: ``` ./jsengine -f script.js ``` ## 示例 ```javascript // 基本变量和算术 const x = 10; const y = 20; const sum = x + y; // 条件判断(使用三元运算符) const message = sum > 25 ? "和大于25" : "和不大于25"; // 使用函数声明 function factorial(n) { if (n <= 1) { return 1; } return n * factorial(n - 1); } // 数组操作 const numbers = [1, 2, 3, 4, 5]; console.log("数组长度:", numbers.length); // 字符串和数字自动转换 const text = "答案是: " + 42; console.log(text); // 输出: 答案是: 42 ``` ## 实现细节 该引擎包含以下主要组件: 1. **词法分析器 (Lexer)** - 将源代码转换为词法单元 (tokens) 2. **语法分析器 (Parser)** - 将词法单元转换为抽象语法树 (AST) 3. **解释器 (Evaluator)** - 执行抽象语法树,计算结果 这个项目是为学习目的而创建的,不推荐在生产环境中使用。