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

資源簡介

實現了LR分析法; 完整vs2012工程; 代碼精簡,注釋得當; 文法、Action、Goto表采用文件讀入,操作靈活; 請尊重原創,如有問題,歡迎大家與我探討。

資源截圖

代碼片段和文件信息

#include?
#include?
#include?
#include?
#include?

using?namespace?std;

#define?ACC?20

class?Action?{

public:
Action(void);
Action(const?Action?&cpy);//don?not?forget?const
Action(bool?SorR?int?status);

bool?m_SorR;//true?for?shift?false?for?reduce
int?m_status;//-1?indicates?not?exists
};

Action::Action(void):m_SorR(true)?m_status(-1){}
Action::Action(const?Action?&cpy):m_SorR(cpy.m_SorR)?m_status(cpy.m_status){}
Action::Action(bool?SorR?int?status):m_SorR(SorR)?m_status(status){}


map?char2int;
vector?grammar;
vector>?action(17?vector(9));
vector>?jumpto(17?vector(3));


void?LRanalysis(void);

int?main()
{
ifstream?inAction(“Action.txt“?ios::in);
ifstream?inGoto(“Goto.txt“?ios::in);
ifstream?inMap(“Map.txt“?ios::in);
ifstream?inGrammar(“Grammar.txt“?ios::in);

if?(!inAction.is_open()?||?!inGoto.is_open()?
||?!inMap.is_open()?||?!inGrammar.is_open())?{
cout?< return?-1;
}

char?temp[4];
int?status?=?0;
bool?flag?=?true;

for?(int?i?=?0;?i? for?(int?j?=?0;?j?
if?(!inAction.eof())
inAction?>>?temp;
else?
flag?=?false;

switch?(*temp)
{//case?‘e‘?in?default?is?error
case?‘s‘:
sscanf(temp?+?1?“%d“?&status);
action.at(i).at(j)?=?Action(true?status);
break;
case?‘r‘:
sscanf(temp?+?1?“%d“?&status);
action.at(i).at(j)?=?Action(false?status);
break;

case?‘a‘:
action.at(i).at(j)?=?Action(true?ACC);
break;
}
}
}

int?formular?=?0;
for?(int?i?=?0;?i? for?(int?j?=?0;?j? inGoto?>>?formular;
jumpto.at(i).at(j)?=?formular;
? }
}


char?ch;
int?id?=?0;
while?(!inMap.eof())?{
inMap?>>?ch?>>?id;
char2int.insert(pair(ch?id));
}

string?recv;
while?(!inGrammar.eof())?{
inGrammar?>>?recv;
grammar.push_back(recv);
}

LRanalysis();

system(“pause“);

return?0;
}

void?LRanalysis(void)
{
cout?<
vector?Symbol;//Grammar?symbol?stack
vector?Status;//Status?stack
Symbol.push_back(‘S‘);
Status.push_back(0);

string?w;
cin?>>?w;
w.push_back(‘$‘);

int?top?=?-1;
????char?cur?=?NULL;
string::iterator?ip?=?w.begin();

do?{
top?=?*Status.rbegin();
cur?=?*ip;

int?col?=?char2int.find(cur)->second;

if?(action.at(top).at(col).m_status?==?ACC)?{
cout?< return;
}

if?(action.at(top).at(col).m_status?==?-1)?{//multiple?line?need?to?add?bracket
cout?< return;
}

if?(action.at(top).at(col).m_SorR)?{//shift
Symbol.push_back(cur);
Status.push_back(action.at(top).at(col).m_status);
++ip;

cout?<
}?else?if?(!act

?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----

?????文件?????230912??2012-12-28?21:09??LR\Debug\LR.exe

?????文件????2181740??2012-12-28?21:09??LR\Debug\LR.ilk

?????文件????2149376??2012-12-28?21:09??LR\Debug\LR.pdb

?????目錄??????????0??2012-12-28?18:59??LR\Debug

?????文件????????540??2012-12-28?13:12??LR\LR\Action.txt

?????文件????????448??2012-12-28?21:09??LR\LR\Debug\cl.command.1.tlog

?????文件??????11822??2012-12-28?21:09??LR\LR\Debug\CL.read.1.tlog

?????文件????????216??2012-12-28?21:09??LR\LR\Debug\CL.write.1.tlog

?????文件??????????2??2012-12-28?21:09??LR\LR\Debug\link-cvtres.read.1.tlog

?????文件??????????2??2012-12-28?21:09??LR\LR\Debug\link-cvtres.write.1.tlog

?????文件??????????2??2012-12-28?21:09??LR\LR\Debug\link-rc.read.1.tlog

?????文件??????????2??2012-12-28?21:09??LR\LR\Debug\link-rc.write.1.tlog

?????文件??????????2??2012-12-28?21:09??LR\LR\Debug\link.1548-cvtres.read.1.tlog

?????文件??????????2??2012-12-28?21:09??LR\LR\Debug\link.1548-cvtres.write.1.tlog

?????文件??????????2??2012-12-28?21:09??LR\LR\Debug\link.1548-rc.read.1.tlog

?????文件??????????2??2012-12-28?21:09??LR\LR\Debug\link.1548-rc.write.1.tlog

?????文件??????????2??2012-12-28?21:09??LR\LR\Debug\link.1548.read.1.tlog

?????文件??????????2??2012-12-28?21:09??LR\LR\Debug\link.1548.write.1.tlog

?????文件??????????2??2012-12-28?21:09??LR\LR\Debug\link.1676-cvtres.read.1.tlog

?????文件??????????2??2012-12-28?21:09??LR\LR\Debug\link.1676-cvtres.write.1.tlog

?????文件??????????2??2012-12-28?21:09??LR\LR\Debug\link.1676-rc.read.1.tlog

?????文件??????????2??2012-12-28?21:09??LR\LR\Debug\link.1676-rc.write.1.tlog

?????文件??????????2??2012-12-28?21:09??LR\LR\Debug\link.1676.read.1.tlog

?????文件??????????2??2012-12-28?21:09??LR\LR\Debug\link.1676.write.1.tlog

?????文件??????????2??2012-12-28?21:09??LR\LR\Debug\link.1832-cvtres.read.1.tlog

?????文件??????????2??2012-12-28?21:09??LR\LR\Debug\link.1832-cvtres.write.1.tlog

?????文件??????????2??2012-12-28?21:09??LR\LR\Debug\link.1832-rc.read.1.tlog

?????文件??????????2??2012-12-28?21:09??LR\LR\Debug\link.1832-rc.write.1.tlog

?????文件??????????2??2012-12-28?21:09??LR\LR\Debug\link.1832.read.1.tlog

?????文件??????????2??2012-12-28?21:09??LR\LR\Debug\link.1832.write.1.tlog

............此處省略99個文件信息

評論

共有 條評論