Skip to content

juyaoliu/C-minus-compiler

Folders and files

NameName
Last commit message
Last commit date

Latest commit

0ebefc3 · Aug 11, 2021

History

18 Commits
May 12, 2020
May 12, 2020
May 12, 2020
May 12, 2020
May 12, 2020
May 12, 2020
May 12, 2020
May 12, 2020
May 12, 2020
May 12, 2020
May 12, 2020
May 12, 2020
May 12, 2020
Aug 11, 2021
May 12, 2020
May 12, 2020
May 12, 2020
May 12, 2020
May 12, 2020

Repository files navigation

C-minus-compiler

同济大学编译原理课程设计类C编译器任务,实现了过程调用,生成mips汇编代码

词法分析器接口说明

初始化词法分析器对象,读取程序

LexicalAnalyser lexicalAnalyser(C_minus_program_name);

对程序进行词法分析

lexicalAnalyser.analyse();

得到词法分析结果

lexicalAnalyser.getResult()

将词法分析结果输出到标准输出

lexicalAnalyser.outputToScreen()

将词法分析结果输出到文件

lexicalAnalyser.outputToFile(fileName);

语法及语意分析器接口说明

初始语法及语意分析器并构造DFA

ParserAndSemanticAnalyser parserAndSemanticAnalyser("productions.txt");

将构造的DFA输出到标准输出

parserAndSemanticAnalyser.outputDFA();

将构造的DFA输出到文件

parserAndSemanticAnalyser.outputDFA(output_file_name);

将中间代码输出到标准输出

parserAndSemanticAnalyser.outputIntermediateCode();

将中间代码输出到文件

parserAndSemanticAnalyser.outputIntermediateCode(output_file_name);

根据词法分析结果进行语法及语意分析,并将分析结果输出到标准输出

parserAndSemanticAnalyser.analyse(lexicalAnalyser.getResult());

根据词法分析结果进行语法及语意分析,并将分析结果输出到文件

parserAndSemanticAnalyser.analyse(lexicalAnalyser.getResult(), output_file_name);

得到生成的中间代码中各个函数入口地址

parserAndSemanticAnalyser.getFuncEnter;

得到语法及语意分析结果

parserAndSemanticAnalyser.getIntermediateCode();

中间代码接口说明

将中间代码输出到屏幕

code.output();

将中间代码输出到文件

code.output(output_file_name);

划分基本块

code.divideBlocks(parserAndSemanticAnalyser.getFuncEnter());

将基本块输出到标准输出

code.outputBlocks();

将基本块输出到文件

code.outputBlocks(output_file_name);

返回基本块划分结果

code.getFuncBlock();

目标代码生成器接口说明

分析基本块的待用/活跃信息,确定出口活跃变量和入口活跃变量

objectCodeGenerator.analyseBlock(code->getFuncBlock());

输出基本块及待用/活跃信息到标准输出

objectCodeGenerator.outputIBlocks();

生成目标代码

objectCodeGenerator.generateCode();

输出目标代码到标准输出

objectCodeGenerator.outputObjectCode();

输出目标代码到文件

objectCodeGenerator.outputObjectCode(asm_name);

About

同济大学编译原理课程设计类C编译器任务

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages