Home - Lixiaokun0106/SysY2022-Language-editors GitHub Wiki
Welcome to the SysY2022E-Language-editors wiki!
在内容开始之前,项目组Four Pigs成员十分欢迎大家查看/学习本项目,本项目的实现未必能完全满足您的需求,但我们相信其中部分方法能够为您提供思路和启发。
本项目开发背景为USTB软件工程课程设计题目一,针对SysY2022E语言编写编辑插件,以帮助开发者更好地进行相关程序的开发。
SysY2022是C语言的一个子集,最初是为“全国大学生系统能力大赛-编译器大赛”设计的迷你编程语言。虽然SysY是一种简化的C语言,但经过简单扩展后能够编写相对复杂的程序。本项目将以扩展的SysY2022语言为目标(称为SysY2022SysY2022E语言定义),开发一款支持SysY2022E程序编写的编辑器环境,从而为SysY2022E开发人员提供能更好的开发体验。
本项目基于LSP和ANTLR4实现,使用Typescript编写,最终产品为VSCode插件,用户可以通过拓展市场直接安装使用。关于该项目的详细介绍见文档1-6,欢迎在此基础上进行二次开发。
开发人员
- Lixiaokun0106 (写bug的天才,哦不,其实是最有实力的天才)
- RoxanneKimmich (debug的天才,de着de着发现还是写bug好玩)
- wangchongai (写文案的天才,1天完成所有报告排版的战神)
- cx8688688 (修电脑的天才,有请这位选手开始你的表演)
示例代码
本项目主要使用Typescript语言编写,在代码中的必要之处已添加注释。
// 处理文档的函数
async function handleDocument(document: TextDocument) {
// 获取文档的内容
let text = document.getText();
// 在这里,你可以使用ANTLR对文档内容进行分析
// 创建词法分析器和解析器
let inputStream = new CharStream(text);
let lexer = new SysY2022ELexer(inputStream);
let tokenStream = new CommonTokenStream(lexer);
let parser = new SysY2022EParser(tokenStream);
parser.buildParseTrees = true;
let tree = parser.compUnit();
console.log(tree.toStringTree(parser.ruleNames, parser));
// 生成符号表
const walker = new ParseTreeWalker();
walker.walk(MySymbolGenerator, tree);
}
开发经验分享
先鸽了~
最佳实践
先鸽了