🎯 SysY编辑器 - SysY2022语言IDE

🚀 基于Langium框架构建的现代化SysY2022语言集成开发环境,提供专业级的代码编辑、语法检查和智能提示功能。
✨ 核心特性
🎨 智能代码编辑
- 🌈 语法高亮 - 完整的SysY语法高亮支持,包括关键字、类型、操作符、注释等
- ⚡ 自动格式化 - 保存时自动格式化、智能缩进、操作符空格调整
- 🔧 智能补全 - 变量、函数、类型的上下文相关补全
- 📐 代码折叠 - 支持函数、语句块的折叠和展开
🔍 静态分析
- ❌ 错误检测 - 实时语法错误和语义错误检测
- 🔎 类型检查 - 函数参数、返回值类型验证
- 🚫 重复定义检查 - 变量和函数的重复定义检测
- 📊 数组越界检测 - 智能检测数组初始化越界问题
🛠️ 智能修复
- 💡 快速修复 - 一键修复常见代码问题
- 📝 悬浮提示 - 鼠标悬停显示变量类型和函数签名
- 🎯 诊断建议 - 详细的错误说明和修复建议
- ❌ 重构功能 - 暂未实现(变量重命名、代码提取等)
🌐 多平台支持
- 💻 VSCode插件 - 完整的VSCode扩展支持
- 🌍 Web编辑器 - 基于Monaco Editor的在线编辑器
- ⚙️ 命令行工具 - CLI代码生成和批处理工具
📸 界面预览
// SysY代码示例 - 支持完整语法高亮和智能提示
int factorial(int n) {
if (n <= 1) {
return 1;
}
return n * factorial(n - 1);
}
int main() {
int result = factorial(5); // 悬浮显示函数签名
int arr[3] = {1, 2, 3, 4}; // 自动检测数组越界
return result;
}
🚀 快速开始
📦 安装依赖
npm install
🔧 开发模式
# 启动开发服务器
npm run dev
# 监听文件变化
npm run watch
# 生成语法服务
npm run langium:generate
🌐 Web端使用
# 构建Web版本
npm run build:web
# 启动Web服务器
npm run serve
访问 http://localhost:5173 体验在线编辑器。
💻 VSCode插件安装
# 打包插件
npm run build
# 安装插件(已生成 sysy-language-support-1.0.0.vsix)
code --install-extension sysy-language-support-1.0.0.vsix
🧪 运行测试
npm test
📖 使用指南
🎮 快捷键
Alt+Shift+F - 格式化文档
Ctrl+D - 手动触发诊断
Ctrl+F9 - 编译代码
Ctrl+F5 - 开始调试
F8 - 调试时继续执行
F10 - 调试时单步执行
💡 智能功能
- 自动修复 - 点击错误提示的灯泡图标查看修复选项
- 悬浮提示 - 将鼠标悬停在变量或函数上查看详细信息
- 格式化 - 右键选择"Format Document"或"Format Selection"
- 代码补全 - 输入时自动显示补全建议
📝 支持的语法特性
- ✅ 基本数据类型:
int , float , void
- ✅ 变量声明和初始化
- ✅ 数组声明和初始化
- ✅ 函数定义和调用
- ✅ 控制流:
if-else , while , break , continue , return
- ✅ 表达式和运算符
- ✅ 常量定义:
const
🏗️ 项目架构
SysY/
├── 📁 src/
│ ├── 📁 language/ # 语言服务核心
│ │ ├── 📄 hello-world.langium # SysY语法定义(.sys文件支持)
│ │ ├── 📄 formatting-provider.ts # 格式化服务
│ │ ├── 📄 decl-validator.ts # 声明验证器
│ │ ├── 📄 funcl-validator.ts # 函数验证器
│ │ ├── 📄 quickfix-provider.ts # 快速修复
│ │ ├── 📄 hover-provider.ts # 悬浮提示
│ │ └── 📁 generated/ # 自动生成代码
│ ├── 📁 extension/ # VSCode扩展
│ └── 📁 cli/ # 命令行工具
├── 📁 static/ # Web端资源
│ ├── 📄 setupExtended.js # Monaco编辑器配置
│ ├── 📄 debug-ui.js # 调试界面
│ └── 📁 examples/ # 示例代码
├── 📁 syntaxes/ # 语法高亮配置
├── 📁 test/ # 测试用例
└── 📄 package.json # 项目配置
🔧 技术栈
- 🎯 核心框架: Langium - 现代化语言工程框架
- ⚙️ 开发语言: TypeScript - 类型安全的JavaScript超集
- 🌐 Web编辑器: Monaco Editor - VSCode同款编辑器内核
- 🧪 测试框架: Vitest - 快速的单元测试框架
- 📦 构建工具: Vite + ESBuild - 高性能构建流水线
- 🎨 语法高亮: TextMate Grammar - 业界标准的语法高亮规则
🎯 功能路线图
✅ 已完成 (v0.1.0)
- 完整的SysY2022语言支持
- 语法高亮和代码格式化
- 静态语义检查和错误检测
- VSCode插件和Web端编辑器
- 基础调试功能
🔄 进行中 (v0.2.0)
🎪 计划中 (v0.3.0+)
🤝 贡献指南
我们欢迎任何形式的贡献!
🐛 报告问题
- 使用 Issues 报告 bug 或提出功能请求
- 提供详细的重现步骤和环境信息
💻 参与开发
- Fork 本仓库
- 创建特性分支:
git checkout -b feature/amazing-feature
- 提交更改:
git commit -m 'Add amazing feature'
- 推送分支:
git push origin feature/amazing-feature
- 提交 Pull Request
📝 开发规范
- 遵循 TypeScript 代码规范
- 添加适当的单元测试
- 更新相关文档
📊 项目统计
- 📝 代码行数: 13,000+
- 🧪 测试覆盖: 核心功能
- 📦 功能模块: 25+
- 🎯 完成度: ~85%
👥 开发团队
- 项目负责人: 乐一然,谭志勇,魏竹松
- 技术栈: TypeScript + Langium + Monaco Editor
- 开发周期: 2025春季学期
📄 许可证
本项目基于 MIT License 开源协议。
🙏 致谢
| |