Skip to content

sam5Lin/MiniC

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

54 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

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