目录
quot;..." with \{expr}) - Raw multi-line strings (#|...|#) - For loop with range (0..>0) - Closures + pipeline operator (|>) - Byte literals (b'\n') and byte strings (b"...") - Type aliases (Callback[T], Predicate[T]) - Generic type parameters with bounds - External FFI declarations (extern "js" fn) - Deprecated API with #[cfg] attribute CLAUDE.md: project structure documentation, editor support matrix, color theme preview table, development commands reference, references " href="/LittleFish/moonmark/commits/3e00062425">docs(demo): add comprehensive syntax showcase demo.mbt5天前
  • clientrefactor: reposition as MoonBit Language Server11小时前
  • editorsrefactor: reposition as MoonBit Language Server11小时前
  • examplesfix(examples): complete extern declarations with binding names4天前
  • queriescleanup: 移除历史遗留垃圾,修正文档失实,修复 VSCode 配置语法,补全 highlights2天前
  • serverrefactor: reposition as MoonBit Language Server11小时前
  • srcfeat: enhance grammar for real MoonBit code + fix all demo.mbt/ffi_demo.mbt errors2天前
  • testfix: sync corpus tests with grammar.js identifier_pattern AST structure10小时前
  • .editorconfigchore: add .editorconfig for consistent coding style4天前
  • .gitattributeschore: add .gitattributes to normalize line endings across platforms4天前
  • .gitignorefix: remove quotes from .gitignore rules10小时前
  • CHANGELOG.mddocs: add CHANGELOG.md documenting v0.1.0 release features4天前
  • CLAUDE.mdrefactor: reposition as MoonBit Language Server11小时前
  • CONTRIBUTING.mdrefactor: pivot from MoonMark (Markdown) to MoonHighlight (Tree-sitter syntax highlighting)5天前
  • LICENSEdocs: add README and LICENSE6天前
  • README.mddocs: remove status labels from README, align with project positioning6小时前
  • SYNTAX.mddocs: add syntax quick reference guide (SYNTAX.md)5天前
  • USAGE.mddocs: add USAGE.md with editor integration and testing guide4天前
  • __t__.mbtrefactor: reposition as MoonBit Language Server11小时前
  • cc.batfix(grammar): require fn identifier, add top-level let/const, clean conflicts4天前
  • grammar.jsrefactor: reposition as MoonBit Language Server11小时前
  • moon.mod.jsonrefactor: reposition as MoonBit Language Server11小时前
  • package-lock.jsonfix(ci): commit package-lock.json for reproducible npm ci builds4天前
  • package.jsonrefactor: reposition as MoonBit Language Server11小时前
  • tree-sitter.exefix(grammar): require fn identifier, add top-level let/const, clean conflicts4天前
  • tree-sitter.jsonchore: add tree-sitter configuration and package manifest5天前
  • MoonBit Language Server

    基于 Tree-sitter 的 MoonBit 跨编辑器语义服务与智能 IDE 核心

    License: MIT


    项目定位

    MoonBit Language Server(MBT-LS)是 MoonBit 生态中首个开源、跨编辑器的 Language Server Protocol(LSP)实现。它基于 Tree-sitter 增量解析引擎,向上层编辑器提供符号表、实时诊断、自动补全、定义跳转、悬停提示等标准语义服务,让 MoonBit 在 VSCode、Neovim、Helix、Zed 等任意 LSP 兼容编辑器中都能获得 IDE 级智能体验。

    与官方生态的关系:官方 tree-sitter-moonbit 与本项目的 Tree-sitter Grammar 负责语法前端(词法/语法解析),MBT-LS 在其之上构建语言服务端,与官方形成上下游互补关系,而非替代。


    核心功能

    1. 增量语法解析

    基于 Tree-sitter 实现 MoonBit 完整语法解析,覆盖关键字、标识符、类型、表达式、模式匹配、属性、异步、错误处理等全部语法单元。

    2. 语义分析引擎

    符号表构建、作用域分析、引用追踪,基于 AST 自动收集函数声明、变量绑定、类型定义,并生成实时诊断信息。

    3. LSP 协议服务

    textDocument/diagnostic(实时错误检测)、textDocument/documentSymbol(文档大纲)、textDocument/completion(自动补全)、textDocument/definition(跳转定义)、textDocument/hover(悬停提示)。

    4. 跨编辑器客户端

    VSCode Extension(LSP Client)支持增量文档同步与 LSP 消息收发。

    5. 配套语法高亮

    Tree-sitter queries(highlights.scmindents.scminjections.scmlocals.scm)提供 AST 级语法高亮、缩进规则与字符串插值注入。


    项目结构

    moonmark/
    ├── grammar.js                  # Tree-sitter 语法定义(解析器前端)
    ├── src/
    │   ├── scanner.c               # 外部扫描器
    │   └── parser.c                # 自动生成(Tree-sitter CLI)
    ├── server/
    │   ├── src/
    │   │   ├── server.ts           # LSP 入口(Connection / Documents / Handlers)
    │   │   ├── parser.ts           # Tree-sitter 内存解析器(Node binding)
    │   │   └── analyzer.ts         # 语义分析引擎(符号表 / 诊断 / 补全 / 跳转)
    │   ├── package.json
    │   └── tsconfig.json
    ├── client/
    │   └── vscode/
    │       ├── src/
    │       │   └── extension.ts    # VSCode LSP Client 启动逻辑
    │       ├── package.json
    │       └── tsconfig.json
    ├── queries/
    │   ├── highlights.scm          # 语法高亮查询(附加价值)
    │   ├── injections.scm          # 语言注入
    │   ├── indents.scm             # 缩进规则
    │   └── locals.scm              # 作用域规则
    ├── editors/
    │   ├── vscode/                 # 配套语法高亮 + 主题插件
    │   ├── neovim/                 # Neovim 配置
    │   └── helix/                  # Helix 配置
    ├── bindings/node/              # Tree-sitter Node.js binding
    ├── test/corpus/                # Tree-sitter 语料测试
    └── examples/
        └── demo.mbt                # 语法展示示例

    快速开始

    前置依赖

    # Node.js >= 18
    node --version
    
    # Tree-sitter CLI (用于生成/测试 parser)
    npm install -g tree-sitter-cli

    构建解析器

    # 生成 C 解析器与 Node binding
    tree-sitter generate
    
    # 构建 Node.js native binding(供 LSP server 内存内解析)
    npm install
    # 若 binding 未生成,执行:
    # node-gyp rebuild 或 npm run install:node

    启动 Language Server

    cd server
    npm install
    npm run build       # tsc 编译到 out/
    node out/server.js  # 以 stdio 方式启动 LSP server

    启动 VSCode Client(开发调试)

    cd client/vscode
    npm install
    npm run build       # tsc 编译到 out/
    # 然后在 VSCode 中按 F5 运行 Extension Host

    运行语料测试

    tree-sitter test

    编辑器支持

    编辑器 支持方式
    VSCode 本仓库 client/vscode(LSP Client)
    Neovim 任意 LSP Client 连接 MBT-LS
    Helix 内置 LSP 连接 MBT-LS
    Zed 内置 LSP 连接 MBT-LS

    语法高亮(Tree-sitter queries)已在 VSCode/Neovim/Helix 中可用,属于附加价值。


    开发路线

    1. Phase 1 — 语法与解析

      • 完整的 Tree-sitter Grammar 覆盖 MoonBit v0.9.2 全部语法
      • 语料测试用例确保解析正确性
    2. Phase 2 — 语义引擎

      • 符号表与作用域分析
      • 实时诊断(语法错误、基础语义检查)
      • 自动补全、定义跳转、悬停提示
    3. Phase 3 — 生态集成

      • VSCode Extension 打包发布
      • 多编辑器配置文档与自动化脚本
      • CI/CD 与性能基准测试

    许可证

    MIT License


    MoonBit Language Server — 让 MoonBit 在任何编辑器中都能拥有 IDE 级智能体验。

    关于

    MoonBit Language Server — cross-editor semantic IDE services powered by Tree-sitter (LSP)

    3.9 MB
    邀请码
      Gitlink(确实开源)
    • 加入我们
    • 官网邮箱:gitlink@ccf.org.cn
    • QQ群
    • QQ群
    • 公众号
    • 公众号

    版权所有:中国计算机学会技术支持:开源发展技术委员会
    京ICP备13000930号-9 京公网安备 11010802047560号