Hi Language Support for VS Code
一个为VS Code提供Hi编程语言支持的扩展。
功能特性
🎨 语法高亮
- 部分的Hi语言语法高亮支持
- 支持关键字、字符串、数字、注释等语法元素
- 基于TextMate语法定义,提供精确的语法着色
🚀 智能代码补全(待完成)
- 关键字补全:函数、类型、模块、控制流等关键字
- 类型补全:内置类型(整数、字符串、布尔型等)和自定义类型
- 函数补全:显示函数签名、参数和返回类型
- 枚举补全:枚举类型和枚举值
- 上下文感知:根据当前代码上下文提供相关补全
🔍 定义跳转(待完成)
- 跳转到函数定义
- 跳转到类型定义
- 跳转到枚举定义
- 支持在同一文件内的精确定位
💡 悬停提示(待完成)
- 关键字说明:显示Hi语言关键字的详细说明
- 函数信息:显示函数签名、参数类型和返回类型
- 类型信息:显示自定义类型的详细信息
- Markdown格式:美观的悬停提示界面
🔧 语法诊断(待完成)
- 语法错误检测:实时检测语法错误
- 字符串验证:检查未闭合的字符串
- 数字格式验证:验证十六进制、二进制、八进制数字格式
- 重复定义检查:检测重复的函数名和参数名
- 实时反馈:在编辑时提供即时的错误提示
Hi语言特性支持
数据和函数定义
<<一个普通的模块>>
// 枚举类型
状态 [
待处理
| 进行中
| 已完成 = 123
]
/*
定义数据结构,默认私有可变,可以使用!前缀定义不可变属性
用+号定义公开属性
*/
用户类型 {
//不可变更的姓名
!姓名: 字符串
年龄: 整数
//公开的属性
+邮箱: 字符串
}
//不接受任何参数也不返回任何值的私有函数
函数(){}
//公开函数
+函数(){}
//用户类型的私有方法
(用户类型)
方法名(){}
//用户类型的公开方法
(用户类型)
+方法名(){}
控制流
<<一个普通的模块>>
//主函数
^_^(){
张三 = 用户类型{
姓名 : "张三"
年龄 : 18
邮箱 : "zhangsan@example.com"
}
//同一模块内可以互相调用
张三.方法名()
张三.公开方法名()
// 条件语句
?[年龄 >= 18] {
打印("成年人")
} : {
打印("未成年人")
}
// 循环
*[ i <- 0..10 ]{
打印(i)
}
// 匹配表达式
|[状态] {
:待处理 { 打印("等待处理")}
:进行中 { 打印("正在处理")}
:已完成 { 打印("处理完成")}
:_ { 打印("未知状态")}
}
}
安装和使用
开发环境要求
- Node.js 16+
- VS Code 1.74+
本地开发
- 克隆仓库
git clone <repository-url>
cd hi-vscode
- 安装依赖
npm install
- 编译扩展
npm run compile
- 在VS Code中调试
- 按
F5 启动扩展开发主机
- 在新窗口中打开
.hi 文件进行测试
打包扩展
npm run package
技术架构
核心组件
- Extension Host: VS Code扩展主入口,管理Language Client
- Language Server: 基于LSP协议的语言服务器,提供智能功能
- Parser: Hi语言的词法和语法分析器
- TextMate Grammar: 语法高亮定义文件
技术栈
- TypeScript: 主要开发语言
- Vite: 现代化构建工具
- Language Server Protocol: 语言服务协议
- TextMate: 语法高亮引擎
项目结构
hi-vscode/
├── src/
│ ├── extension.ts # 扩展主入口
│ └── language-server/
│ ├── server.ts # Language Server实现
│ └── parser.ts # Hi语言解析器
├── syntaxes/
│ └── hi.tmLanguage.json # TextMate语法定义
├── language-configuration.json # 语言配置
├── package.json # 扩展清单
├── vite.config.ts # Vite配置
└── tsconfig.json # TypeScript配置
开发规范
- 使用 TypeScript 进行开发
- 遵循 ESLint 代码规范
- 为新功能添加测试用例
- 更新相关文档
许可证
MIT License - 详见 LICENSE 文件
更新日志
v0.0.1
| |