?? main.cpp
字號:
/******************************************************************
** 文件名: main.cpp
******************************************************************/
#include "globals.h"
#include "CommandLine.h"
#include "scan.h"
#include "prase.h"
#include "symtab.h"
#include "analyze.h"
#include "cgen.h"
/********編譯過程中用到的所有簡單全局變量。*********/
CGlobals AllGlobals;
/********用于控制編譯器各階是否輸出信息的標志*******/
CFlags AllFlags;
int main(int argc,char *argv[]){
try{
CCompileOption ComOption;
CCommandOpt *pCommLine=new CCommandOpt(argc,argv,ComOption);
if(!pCommLine) throw bad_alloc();
delete pCommLine;
pCommLine=NULL; //命令行處理完畢,即刻釋放處理器占用的內存。
if(ComOption.m_fNoparse){ //只進行掃描。
CScaner *pScaner=new CScaner;
if(!pScaner) throw bad_alloc();
while(pScaner->getToken()!=ENDFILE); //掃描進行中。
}
else if(ComOption.m_fNoanalyze){ //只進行語法分析。
CPraser *pPraser=new CPraser;
if(!pPraser) throw bad_alloc();
delete pPraser;
}
else if(ComOption.m_fNocode){ //只進行語義分析。
Canalyzer *pAnalyzer= new Canalyzer;
if(!pAnalyzer) throw bad_alloc();
delete pAnalyzer;
}
else{ //生成實際代碼。
Cgenerator *pGenerator= new Cgenerator;
if(!pGenerator) throw bad_alloc();
delete pGenerator;
}
if(AllGlobals.source) AllGlobals.source.close();
if(AllGlobals.code) AllGlobals.code.close();
return 0;
}
catch (bad_alloc){ //處理堆分配異常。
cout<<"Can't be allocated in heap, the programme must be terminated."<<endl;
exit(1);}
catch (...){
cout<<"Something error,the program was terminated.";
exit(1);}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -