Skip to content

Dav1dch/MiniC

This branch is 2 commits ahead of sam5Lin/MiniC:master.

Folders and files

NameName
Last commit message
Last commit date

Latest commit

9f17c4d · Jun 24, 2020

History

56 Commits
Jun 16, 2020
May 1, 2020
Apr 29, 2020
Jun 19, 2020
May 1, 2020
Apr 29, 2020
Jun 18, 2020
Jun 17, 2020
Jun 19, 2020
Jun 19, 2020
Jun 17, 2020
Jun 17, 2020
Jun 17, 2020
Jun 18, 2020
Jun 19, 2020
Apr 29, 2020
Jun 17, 2020
Apr 29, 2020
Jun 19, 2020
Jun 16, 2020
Jun 17, 2020
Jun 18, 2020
Jun 17, 2020
Jun 19, 2020
Jun 19, 2020
Jun 18, 2020
Jun 18, 2020
Apr 25, 2020
Jun 19, 2020
Jun 18, 2020
Jun 16, 2020
Jun 18, 2020
Apr 25, 2020
Apr 25, 2020
Jun 18, 2020
Jun 16, 2020
Jun 16, 2020
Apr 25, 2020
Jun 16, 2020
May 1, 2020
Jun 19, 2020

Repository files navigation

MiniC

run in mfc

  • 双击打开MiniCAnalyser.vcxproj

  • 将项目目录下的 winflex 文件夹的目录(项目目录/winflex)添加进系统环境

  • 右键点击MiniCAnalyserimage-20200501171802653

    • 打开电脑的系统环境pathimage-20200618182123244
    • 将winflex的环境加到最下面image-20200618182207736
  • 生成依赖项->生成自定义

  • image-20200501171642145

  • 查找现有的,在目录 项目目录\winflex\custom_build_rules\Bison 下找到文件 win_flex_bison_custom_build.targets 选择打开,并如上图选中点击确定

  • image-20200501172047984

  • image-20200501172011630

  • 编译运行即可

  • 选择打开的文件,example{X}.txt都是符合MiniC语法的,选择example2.txt,这是排序的程序,兼容了MiniC的全部语法

  • image-20200618183758485

    image-20200618183829444

  • 点击生成语法树

  • image-20200618183909820

  • 点击查看语法树

  • image-20200618183926567

  • image-20200618183945805

点击生成符号表和中间代码

image-20200618184030035

点击查看符号表

image-20200618184047054

image-20200618184111900

点击查看中间代码

image-20200618184125587

image-20200618185145458

中间代码保存在txt文件夹的code.txt里面

在命令行进行项目目录的txt文件夹,执行命令 .\miniC.exe .\code.txt 使用虚拟机来运行中间代码

如果miniC.exe 执行不了,参考虚拟机的使用说明

运行结果如下,正确对数组进行排序并且输出

image-20200618184226993

txt文件夹里有五个测试用例,分别是example1.txt 到 example5.txt,相应的语法树、符号表、中间代码以及虚拟机的运行结果都在实验报告的第三部分里有展示

可执行程序在这里,可以直接点击

image-20200619130023171

程序清单

utils.cpp // 生成节点,打印语法树等工具的实现
scan.flex.cpp // 由 lex 生成的 cpp 文件
parse.tab.cpp // 由 yacc 生成的 cpp 文件
parse.y // yacc定义文件
scan.l // lex 定义文件
Symtab.cpp // 查询插入符号表的cpp文件
Analyse.cpp // 构建符号表的cpp文件
Code.cpp // 记录指令的cpp文件
Cgen.cpp // 生成中间代码的cpp文件

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C++ 29.7%
  • M4 29.8%
  • C 23.6%
  • Makefile 7.6%
  • XSLT 7.4%
  • Yacc 1.4%
  • Lex 0.5%