91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 2.04MB
    文件類型: .rar
    金幣: 2
    下載: 0 次
    發(fā)布日期: 2023-11-04
  • 語言: 其他
  • 標(biāo)簽:

資源簡介

編譯原理——for循環(huán)語句的翻譯,LR,四元式,有報(bào)告

資源截圖

代碼片段和文件信息

#pragma?warning?(disable?:?4786)//禁止使用模版而產(chǎn)生的警告
#include
#include
#include
#include
#include
#include
#include“change.h“//類型轉(zhuǎn)換模板函數(shù)所在的頭文件
#include“詞法分析.h“//詞法分析程序及類Token所在的頭文件
using?namespace?std;

class?newTemp???//用來產(chǎn)生中間變量t1,t2...
{
public:
newTemp():tempNum(1)?{};//構(gòu)造函數(shù)
string?getNewTemp()//得到一個(gè)臨時(shí)變量
{
return?“t“+toString(tempNum++);
}
private:
int?tempNum;
};
struct?NodeInfor//每個(gè)非終結(jié)符的鏈信息
{
int?TrueOrChain;//真的鏈號(hào),或者為句子的chain
int?FalseOrEnd;
int?codeBegin;
};
stack?sState;//狀態(tài)棧
stack?sNotation;//字符棧
deque?sInputToken;//輸入串隊(duì)列存放的是單詞結(jié)點(diǎn)
deque?TokenTable;//Token隊(duì)列單詞結(jié)點(diǎn)和編號(hào)
stack?sLang;//語義棧
stack?sNodeInfor;//每個(gè)非終結(jié)符的鏈信息棧在語義分析的時(shí)候存儲(chǔ)與回填與拉鏈相關(guān)信息

map?string>?ActionTable;
map?int>?GotoTable;
map?deduceTableLength;//產(chǎn)生式表<編號(hào),右部長度>>
map?deduceTableLeft;//產(chǎn)生式表<編號(hào),左部>
map?>?objectCode;//存儲(chǔ)目標(biāo)代碼的圖,<編號(hào) <四元式回填地址>>

newTemp?newTempVar;//中間變量每調(diào)用一次產(chǎn)生一個(gè)新的中間變量
int?nextstat=100;//指向一個(gè)四元式的地址
int?LastGotoAddress;//記錄最后個(gè)Goto的回填地址

//-------------------建立輸入輸出文件流--------------
ifstream?InputAction(“action.txt“ios::in);
ifstream?InputGoto(“goto.txt“ios::in);
ifstream?InputDeduceLength(“deduceTableLength.txt“ios::in);//從文件輸入產(chǎn)生式表<編號(hào),右部長度>>
ifstream?InputDeduceLeft(“deduceTableLeft.txt“ios::in);//從文件輸入產(chǎn)生式表<編號(hào),左部>
ifstream?token(“LEXoutput.txt“ios::in);//對Token的初始化
//----------------------------------------------------------------------------
void?initTable()//初始化action表,goto表,輸入串隊(duì)列,產(chǎn)生式表
{
string?strTemp1strTemp2strTemp3;
int?intTemp1intTemp2;
while(InputAction>>intTemp1>>strTemp1>>strTemp2)//初始化action表
ActionTable.insert?(?pair?string>(pair(intTemp1strTemp1)?strTemp2)?);

while(InputGoto>>intTemp1>>strTemp1>>intTemp2)//初始化,goto表
GotoTable.insert?(pair?int>(pair(intTemp1strTemp1)?intTemp2)?);

while(InputDeduceLength>>intTemp1>>intTemp2)//初始化產(chǎn)生式表<編號(hào),右部長度>>
deduceTableLength.insert?(pair(intTemp1intTemp2)?);

while(InputDeduceLeft>>intTemp1>>strTemp1)//初始化產(chǎn)生式表<編號(hào),左部>
deduceTableLeft.insert?(pair(intTemp1strTemp1)?);
while(token>>intTemp1>>strTemp2>>strTemp3)
{
if(intTemp1==1)//如果為“標(biāo)識(shí)符“直接壓入id
sInputToken.push_back?(“id“);
else?if(intTemp1==2||intTemp1==3)//如果為“整型““實(shí)型“直接壓入num
sInputToken.push_back?(“id“);
else?//否則直接壓入
sInputToken.push_back?(strTemp3);
TokenTable.push_back?(Token(intTemp1strTemp3));
}
InputAction.close();
InputGoto.close();
InputDeduceLength.close();
token.close?();
}
map?>::iterator?backpatch(int?objPatchint?num)//回填函數(shù)把objPatch所鏈接的每一個(gè)四元式的都改為num
{
map?>::iterator?iter=objectCode.find(objPatch);
while(?iter?!=?objectCode.end())//如果存在地址號(hào)為objPatch的地址碼號(hào)
{
iter->second.first?+=?toString(num);//回填

?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----

?????文件???????2114??2010-01-06?20:35??編譯課設(shè)\FOR循環(huán)語句的翻譯程序設(shè)計(jì)(LR方法、輸出四元式)\action.txt

?????文件????????288??2010-01-07?10:16??編譯課設(shè)\FOR循環(huán)語句的翻譯程序設(shè)計(jì)(LR方法、輸出四元式)\change.h

?????文件????1294601??2010-01-05?21:20??編譯課設(shè)\FOR循環(huán)語句的翻譯程序設(shè)計(jì)(LR方法、輸出四元式)\Debug\for循環(huán)翻譯.obj

?????文件?????173056??2010-01-08?20:00??編譯課設(shè)\FOR循環(huán)語句的翻譯程序設(shè)計(jì)(LR方法、輸出四元式)\Debug\vc60.idb

?????文件?????307200??2010-01-08?12:00??編譯課設(shè)\FOR循環(huán)語句的翻譯程序設(shè)計(jì)(LR方法、輸出四元式)\Debug\vc60.pdb

?????文件?????738304??2010-01-06?14:20??編譯課設(shè)\FOR循環(huán)語句的翻譯程序設(shè)計(jì)(LR方法、輸出四元式)\Debug\語法分析.bsc

?????文件?????819316??2010-01-08?20:00??編譯課設(shè)\FOR循環(huán)語句的翻譯程序設(shè)計(jì)(LR方法、輸出四元式)\Debug\語法分析.exe

?????文件????1180252??2010-01-08?20:00??編譯課設(shè)\FOR循環(huán)語句的翻譯程序設(shè)計(jì)(LR方法、輸出四元式)\Debug\語法分析.ilk

?????文件????1279713??2010-01-08?20:00??編譯課設(shè)\FOR循環(huán)語句的翻譯程序設(shè)計(jì)(LR方法、輸出四元式)\Debug\語法分析.obj

?????文件????3505812??2010-01-07?15:03??編譯課設(shè)\FOR循環(huán)語句的翻譯程序設(shè)計(jì)(LR方法、輸出四元式)\Debug\語法分析.pch

?????文件????1672192??2010-01-08?12:00??編譯課設(shè)\FOR循環(huán)語句的翻譯程序設(shè)計(jì)(LR方法、輸出四元式)\Debug\語法分析.pdb

?????文件??????????0??2010-01-06?14:20??編譯課設(shè)\FOR循環(huán)語句的翻譯程序設(shè)計(jì)(LR方法、輸出四元式)\Debug\語法分析.sbr

?????文件????????228??2007-06-04?16:04??編譯課設(shè)\FOR循環(huán)語句的翻譯程序設(shè)計(jì)(LR方法、輸出四元式)\deduceTableLeft.txt

?????文件????????210??2007-06-05?15:25??編譯課設(shè)\FOR循環(huán)語句的翻譯程序設(shè)計(jì)(LR方法、輸出四元式)\deduceTableLength.txt

?????文件????????370??2007-06-04?15:52??編譯課設(shè)\FOR循環(huán)語句的翻譯程序設(shè)計(jì)(LR方法、輸出四元式)\goto.txt

?????文件?????????68??2010-01-08?20:00??編譯課設(shè)\FOR循環(huán)語句的翻譯程序設(shè)計(jì)(LR方法、輸出四元式)\input.txt

?????文件????????346??2010-01-08?20:00??編譯課設(shè)\FOR循環(huán)語句的翻譯程序設(shè)計(jì)(LR方法、輸出四元式)\LEXoutput.txt

?????文件????????268??2010-01-08?19:43??編譯課設(shè)\FOR循環(huán)語句的翻譯程序設(shè)計(jì)(LR方法、輸出四元式)\output.txt

?????文件???????5649??2010-01-07?12:10??編譯課設(shè)\FOR循環(huán)語句的翻譯程序設(shè)計(jì)(LR方法、輸出四元式)\詞法分析.h

?????文件??????11007??2010-01-07?22:02??編譯課設(shè)\FOR循環(huán)語句的翻譯程序設(shè)計(jì)(LR方法、輸出四元式)\語法分析.cpp

?????文件?????299520??2010-01-06?20:41??編譯課設(shè)\分析表.doc

?????文件??????85561??2010-01-07?14:28??編譯課設(shè)\封面.docx

?????文件?????256512??2010-01-10?20:25??編譯課設(shè)\張良的報(bào)告.doc

?????文件??????17811??2010-01-04?10:18??編譯課設(shè)\編譯任務(wù)——張良.docx

?????文件?????184312??2009-06-21?21:52??編譯課設(shè)\編譯課程設(shè)計(jì).doc

?????目錄??????????0??2010-01-22?10:09??編譯課設(shè)\FOR循環(huán)語句的翻譯程序設(shè)計(jì)(LR方法、輸出四元式)\Debug

?????目錄??????????0??2010-01-22?10:08??編譯課設(shè)\FOR循環(huán)語句的翻譯程序設(shè)計(jì)(LR方法、輸出四元式)

?????目錄??????????0??2010-01-22?10:09??編譯課設(shè)

-----------?---------??----------?-----??----

?????????????11834710????????????????????28

............此處省略1個(gè)文件信息

評論

共有 條評論

相關(guān)資源