- 回答时必须使用简体中文进行回答
- 需求不明确时,或存在矛盾时及时与用户确认
- 非代码操作需用中文详细说明步骤,并等待用户确认后再继续
- 编写的代码中,必须有详细的注释,且注释使用简体中文
- 重用现有组件,避免创建功能相似的文件或场景
- 创建单元测试时,使用
org.jetbrains.kotlin:kotlin-test依赖库,并且单元测试的方法命使用字符串详细描述要测试的场景,注意避免无法被Kotlin作为方法名称的字符 - 实现标准库(如 Array, String)方法时,应尽量遵循 ECMAScript 规范的行为
- 可以从 https://developer.mozilla.org/zh-CN/docs/Web/JavaScript 查询JavaScript的相关文档
- 可以用 https://kotlinlang.org/api/core/kotlin-stdlib/ 查询Kotlin标准库相关文档
- 项目是作为一个通用的Kotlin多平台依赖库,仅使用通用的Kotlin标准库实现代码而不要使用JVM等依赖其他平台的库。
- 运行 JVM 单元测试:
./gradlew :vibe-js:jvmTest(Windows 下使用gradlew或.\gradlew),如果仅修改了部分测试文件则只需要运行单个测试文件./gradlew :vibe-js:jvmTest --tests "com.muedsa.js.runtime.value.JSArrayTest"(替换为具体的类名)
- Vibe JS 是一个使用 Kotlin 多平台从零开始实现的轻量级 JavaScript 运行时。
README.md: 提供了项目功能、结构和使用示例的全面概述。docs/TEST_PLAN.md: 详细的测试计划和标准库实现进度表。vibe-js/build.gradle.kts: KMP 库的主要构建脚本。它定义了支持的目标平台(JVM、Android、iOS、Linux)、依赖项和发布配置。settings.gradle.kts: 根 Gradle 配置文件,其中包含了:library模块。gradle/libs.versions.toml: 版本目录,用于声明和管理项目的依赖项。
lexer/Lexer.kt: 词法分析器,它扫描原始 JavaScript 源代码并将其转换为令牌 (Token) 序列。parser/Parser.kt: 解析器,负责从词法分析器获取令牌流并构建抽象语法树 (AST)。ast/: AST 节点定义,包含所有语法树节点的结构定义(如IfStatement,BinaryOp等)。runtime/Interpreter.kt: 解释器核心,包含了用于遍历解释 AST 和执行 JavaScript 代码的主要逻辑。runtime/Environment.kt: 环境与作用域,负责管理变量的声明、赋值和查找(作用域链)。runtime/value/: JS 值与对象,包含 JS 运行时的数据类型实现(如JSValue,JSObject,JSArray,JSString,JSNumber等)。runtime/exception/: 运行时异常,定义了 JS 运行期间可能抛出的错误类型。
- 包含公共代码的单元测试。
- 单元测试的方法使用 Kotlin 的特性用字符串命名方法,并详细描述要测试的内容。