Skip to content

seu-cs-class2/minisys-minicc-ts

Repository files navigation

minisys-minicc-ts

这是一个将 MiniC 语言 编译到 Minisys 体系(类 MIPS)汇编的编译器。包括自己设计的 Lex 和 Yacc 工具、中间代码(IR)生成、目标代码生成,以及代码优化相关工作。100% TypeScript。

编译 MiniC 代码

$ npm install # just once
$ node ./dist/cli.js <path_to_c_code> [options]

可用的选项(options)有:

参数 作用
-o <output_path> 指定输出路径,默认与 C 代码同路径
-i 一并输出中间代码
-v 显示编译过程详细信息

重新生成 MiniC 相关序列化

来自 syntax/MiniC.l 的词法分析 DFA 以及 syntax/MiniC.y 的 LALR 语法分析表会被序列化保存为 MiniC-Lex.jsonMiniC-LALRParse.json。执行下面命令可以重新生成它们:

$ cd script
$ chmod 755 *
$ ./generate-minic.sh

参与开发

  • 安装

    $ git clone git@github.com:seu-cs-class2/minisys-minicc-ts.git
    $ cd minisys-minicc-ts
    $ npm install
  • 增量监视编译

    $ npm run tsc:watch
  • 构建

    $ npm run build

文档