• 大小: 2.85MB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2023-10-01
  • 语言: 其他
  • 标签: DO-WHILE  LL(1)法  

资源简介

DO-WHILE循环语句的翻译程序设计(LL(1)法、输出四元式)

资源截图

代码片段和文件信息

#include
#include
#include“lexical_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后才可以自动创建文件
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<<“文件无法写入“< 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此时必须向前移动temp.length()个长度才可避免重复扫描以致错
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(

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件        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.embed.manifest

     文件          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个文件信息

评论

共有 条评论