同济大学编译原理课程设计类C编译器任务,实现了过程调用,生成mips汇编代码
初始化词法分析器对象,读取程序
LexicalAnalyser lexicalAnalyser(C_minus_program_name);对程序进行词法分析
lexicalAnalyser.analyse();得到词法分析结果
lexicalAnalyser.getResult()将词法分析结果输出到标准输出
lexicalAnalyser.outputToScreen()将词法分析结果输出到文件
lexicalAnalyser.outputToFile(fileName);初始语法及语意分析器并构造DFA
ParserAndSemanticAnalyser parserAndSemanticAnalyser("productions.txt");将构造的DFA输出到标准输出
ParserAndSemanticAnalyser parserAndSemanticAnalyser("productions.txt");将构造的DFA输出到文件
ParserAndSemanticAnalyser parserAndSemanticAnalyser("productions.txt",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);