資源簡(jiǎn)介
DO-WHILE循環(huán)語(yǔ)句的翻譯程序設(shè)計(jì)(LL(1)法、輸出四元式)

代碼片段和文件信息
#include
#include
#include“l(fā)exical_analysis.h“
using?std::cerr?;
using?std::endl;
using?std::cin;
using?std::getline;
using?std::cout?;
using?std::string?;
//constructor?
RelationTie_T::RelationTie_T(int?i??string?s):
type(i)value(s)
{
}
void?RelationTie_T::setType?(const?int?i)
{
type=i;
}
void?RelationTie_T::setValue?(const?string&?str)
{
value=str;
}
ostream&?operator<<(ostream&?osconst?RelationTie_T&?temp)
{
switch(temp.type?)
{
case?0:
os<<“operator???????“?;
break;
case?1:
os<<“delimiter??????“;
break;
case?2:
os<<“number?????????“;
break;
case?3:
os<<“keyword?????????“;
break;
case?4:
os<<“identifier?????“;
break;
default?:
break;
}
os< return?os;
}
//constructor?::initializing?the?member?variables?of?the?class?
Lex_Analysis_T::Lex_Analysis_T(const?char*?lhs??const?char*?rhs)
{
fileName.open(lhs?fstream::out|fstream::in?);//添加fstream::out后才可以自動(dòng)創(chuàng)建文件
objName.open?(rhs?fstream::out);
if(!fileName)
{
cerr<<“error:unable?to?open?the?file:“
< return;
}
if(!objName)
{
cerr<<“error:unable?to?open?the?file:“
< return?;
}
????//int?i=0;
}
/*void?Lex_Analysis_T::inputSourFile?()
{
string?str;
if(!fileName)
{
cerr<<“文件無(wú)法寫(xiě)入“< return?;
}
while(cin>>str)
{
fileName<
}
fileName.clear();
}*/
void?Lex_Analysis_T::readOneLine?()
{
getline(fileName?line);
}
void?Lex_Analysis_T::scan()
{
RelationTie_T?rt;
int?i=0;
????char?ch;
while(i!=line.size?()?)
{
ch=line[i];
switch(charType(ch)?)
{
case?OPERATOR:
temp.push_back?(ch);
if(line[i+1]==‘=‘||line[i+1]==‘+‘
||line[i+1]==‘-‘||line[i+1]==‘<‘||line[i+1]==‘>‘)
{
ch=line[++i];
temp.push_back?(ch);
}
else
{
}
????????????????rt.setType?(0);
rt.setValue?(temp);
vec.push_back?(rt);
++i;
temp=““;
break;
case?DLIMITER:
temp.push_back?(ch);
rt.setType?(1);
rt.setValue?(temp);
??? ????vec.push_back?(rt);
++i;
temp=““;
break;
case?NUMBER:
{
const?string?s(line.begin()+iline.end?()?);
if(isUnsignedNumber(s)?)
{
rt.setType?(2);
rt.setValue?(temp);
vec.push_back?(rt);
i+=temp.length?();
temp=““;
}
}
break;
case?LETTER:
{
const?string?s(line.begin?()+i??line.end?()?);
this->makeIdentifier?(s);
if(isKeyword(temp)?)
rt.setType?(3);
else
rt.setType?(4);
i+=temp.length?();//i此時(shí)必須向前移動(dòng)temp.length()個(gè)長(zhǎng)度才可避免重復(fù)掃描以致錯(cuò)
rt.setValue?(temp);
vec.push_back?(rt);
temp=““;
}
break;
default://when?the?scan?finds?char?‘_‘it?return?NONE?
if(ch==‘_‘)
temp.push_back?(ch);
++i;
????????????break;
}//switch
}//while
}
bool?Lex_Analysis_T::isKeyword?(const?string&?str)
{
int?i=0;
while(i!=23)
{
if(
?屬性????????????大小?????日期????時(shí)間???名稱(chēng)
-----------?---------??----------?-----??----
?????文件????????549??2009-10-23?18:07??0120710340819?宋偉\詞法分析程序.dsw
?????文件????1494016??2010-01-08?13:50??0120710340819?宋偉\詞法分析程序.ncb
?????文件????????690??2009-11-21?11:03??0120710340819?宋偉\詞法分析程序.plg
?????文件???????1165??2010-01-07?13:27??0120710340819?宋偉\main.cpp
?????文件???????2185??2009-11-21?10:51??0120710340819?宋偉\sh.txt
?????文件??????53760??2009-11-21?23:04??0120710340819?宋偉\詞法分析程序.opt
?????文件?????????69??2010-01-07?16:16??0120710340819?宋偉\txt1.txt
?????文件?????????61??2010-01-08?13:50??0120710340819?宋偉\txt2.txt
?????文件???????4492??2009-10-23?20:49??0120710340819?宋偉\詞法分析程序.dsp
?????文件????????259??2010-01-07?15:23??0120710340819?宋偉\se.txt
?????文件????1313792??2009-11-14?18:01??0120710340819?宋偉\ncb
?????文件????????901??2010-01-08?12:29??0120710340819?宋偉\詞法分析程序.sln
????..A..H.?????15872??2010-01-08?13:50??0120710340819?宋偉\詞法分析程序.suo
?????文件???????5198??2010-01-07?13:27??0120710340819?宋偉\lexical_analysis.cpp
?????文件???????2191??2009-11-21?11:03??0120710340819?宋偉\lexical_analysis.h
?????文件???????5911??2010-01-07?22:30??0120710340819?宋偉\詞法分析程序.vcproj
?????文件????????901??2009-11-21?11:06??0120710340819?宋偉\Solution1.sln
????..A..H.?????13312??2009-11-21?11:07??0120710340819?宋偉\Solution1.suo
?????文件???????1427??2010-01-08?13:50??0120710340819?宋偉\詞法分析程序.vcproj.PC-200910291328.Administrator.user
?????文件???????2600??2010-01-08?13:21??0120710340819?宋偉\Syntax_Analysis.h
?????文件???????8380??2010-01-08?13:41??0120710340819?宋偉\Syntax_Analysis.cpp
?????文件???????1761??2010-01-07?22:30??0120710340819?宋偉\ClassDiagram1.cd
?????文件????????111??2010-01-10?20:29??0120710340819?宋偉\README.TXT.txt
?????文件????2444288??2009-11-19?22:56??0120710340819?宋偉\Solution1.ncb
?????文件?????140288??2009-11-21?11:03??0120710340819?宋偉\Debug\vc60.idb
?????文件?????135168??2009-11-21?11:03??0120710340819?宋偉\Debug\vc60.pdb
?????文件????????406??2010-01-08?12:29??0120710340819?宋偉\Debug\詞法分析程序.exe.em
?????文件??????????0??2009-11-15?17:34??0120710340819?宋偉\Debug\sor.txt
?????文件??????????0??2009-11-19?21:54??0120710340819?宋偉\Debug\obj.txt
?????文件????2534080??2009-11-21?11:03??0120710340819?宋偉\Debug\詞法分析程序.pch
............此處省略17個(gè)文件信息
評(píng)論
共有 條評(píng)論