ITADN
sxzz/ast-explorer
README.md
以下内容由 AI 翻译,如有问题请点此提交 issue 反馈

AST Explorer

AST Explorer - 一个用于探索解析器生成的 AST 的 Web 工具。

欢迎通过 PR 添加更多语言和解析器!

Screenshot

功能

  • 🦾 通过 Monaco Editor 启用代码高亮、建议和格式化。
  • 🤩 支持大多数流行的前端语言和解析器。
  • 🗒️ 通过 URL 保存您的代码。无需数据库,无服务器停机。
  • 🐙 通过 CDN 自定义解析器版本,例如 @babel/parser alpha。
  • 🌈 通过 GUI 设置自定义解析器选项。
  • 🌚 美观的深色模式主题。
  • 📱 甚至兼容移动设备。

语言和解析器

更多解析器通过 web-tree-sitter,参见 tree-sitter 解析器

URL 编码算法

输入代码和选项以哈希片段的形式存储在 URL 中, 即 # 符号之后的字符串, 且不会传输到服务器。

实现

const code = 'code'
const parserId = 'acorn'
const optionsString = JSON.stringify({
  ecmaVersion: 'latest',
  sourceType: 'module',
})
const serialized = utoa(
  // utoa, or compress() if want to compress the data
  JSON.stringify({
    c: code,
    p: parserId,
    o: optionsString,
  }),
)
const url = `https://ast-explorer.dev/#${serialized}`

// no compress
function utoa(data: string): string {
  return btoa(unescape(encodeURIComponent(data)))
}

// compress is optional
import { strFromU8, strToU8, unzlibSync, zlibSync } from 'fflate'
function compress(data: string) {
  const buffer = strToU8(data)
  const zipped = zlibSync(buffer, { level: 9 })
  const binary = strFromU8(zipped, true)
  return btoa(binary)
}

贡献

若要为本项目做出贡献,请参阅贡献指南

致谢

本项目参考并受 fkling/astexplorer 启发,这是一款用于探索各种解析器生成的 AST 的开源 Web 工具。

此外,感谢以下项目的贡献:

赞助



Vercel OSS Program

许可证

AGPL-3.0 许可证 © 2023-PRESENT 三咲智子