• 大小: 1.71M
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2023-09-02
  • 语言: 其他
  • 标签: 其他  

资源简介

计150326周艺(最新版本).zip

资源截图

代码片段和文件信息

#include “stdafx.h“
#include 
#include //表示包含关键函数vector
#include //可以用于pair数组输出
#include 
#include //文件的输入输出库函数的 头文件
#include //STL库,包含一些特定的算法,例如其中firtstmidlastmidnth均为迭代器类型。
#include 
using namespace std;
string file_name;//用来存储目标文件名
string GetText();//提取文本文件txt中的信息
string GetWord(string strint iint& j); //获得一个单词符号从位置i开始查找,并且有一个引用参数j,
                                          //用来返回这个单词最后一个字符在str的位置

int DeleteNull(string strint i);//这个函数用来除去字符串中连续的空格和连续的换行;第一个参数为目标字符串,
                                 //第二个参数为开始位置;返回值为连续的空格和换行后的第一个有效字符在字符串的位置
bool IsBoundary(string strint i); //判断i当前所指的字符是否为一个分界符,是的话返回真,反之假
bool IsOperation(string strint i); //判断i当前所指的字符是否为一个操作符,是的话返回真,反之假
void Print(vector > v); //此函数将一个pair数组输出
vector > analyst(vector vec);//此函数接受一个字符串数组,对它进行词法分析,返回一个pair型数组
bool IsKey(string str);//此函数判断传递的参数是否为关键字,是的话,返回真,反之返回假
int main()
{
    cout<<“**************编译原理词法分析器****************\n“;
   

    string com1=“ “;//用com1表示空格
    string com2=“\n“;//用com2表示换行 
    string fileline=GetText();//表示提取文本中信息的对象
    int begin=0end=0;
    vector array;//此函数接受一个字符串数组,对它进行词法分析,返回一个pair型数组
    do
    {
        begin=DeleteNull(filelinebegin);
        string nowString;//当前的输入符号串的对象
        nowString=GetWord(filelinebeginend);//从begin和first以及文本文档中获取当前的字符
        if(end==-1)
            break;
        if(nowString.compare(com1)&&nowString.compare(com2))
            array.push_back(nowString);//在array数组里面的最后添加。
        begin=end+1; 
    }while(true);
    vector > mid_result;
    mid_result=analyst(array);
    Print(mid_result);
    cout<<“**********************************************************************\n“;
    cout<<“********************完成词法分析,显示分析结果************************\n“;
cout<<“************1--关键字 2--变量名 3--常数 4--运算符 5--界符*************\n“;
    cout<<“**********************************************************************\n“;
    system(“pause“);
 return 0;
}
//提取文本文件中的信息
string GetText()
{   
    string file_name1;
 cout<<“您好!请输入源文件路径(文件后尾加后缀名):“;
 cin>>file_name1;
 ifstream infile(file_name1.c_str()ios::in);
 if (!infile)
 {
  cerr<<“抱歉,无法打开文件 “<  exit(-1);
 }
    cout<    char f[1000];
 infile.getline(f1000EOF);
 infile.close();//关闭文件
 return f;
}

string GetWord(string strint iint& j)//获取相关参数,第一个参数为目标字符串,
                                       //第二个参数为开始位置,从位置i开始查找,并且有一个引用参数j,
   //用来返回这个单词最后一个字符在str的位置
{
       string no_use(“(){}  ;  \n+=*/-<>\““);
       j=str.find_first_of(no_usei);
       if(j==-1)
           return ““;
       if(i!=j)//如果i不是str的最后一个字符的位置,那么j就继续往后面查找,直到j表示str的最后一个字符的位置。
           j--; 
       return str.substr(ij-i+1);//拼接字符,形成单词
}

int DeleteNull(string strint i)//这个函数用来除去字符串中连续的空格和连续的换行;
                                //第一个参数为目

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2018-02-28 19:56  计150326周艺(最新版本)\
     文件      163328  2017-12-23 19:50  计150326周艺(最新版本)\计150326周艺(程序清单).doc
     目录           0  2018-02-28 19:56  计150326周艺(最新版本)\计150326词法分析\
     目录           0  2018-02-28 19:56  计150326周艺(最新版本)\计150326词法分析\Debug\
     文件      602184  2017-12-23 18:57  计150326周艺(最新版本)\计150326词法分析\Debug\cifafenxi.exe
     文件      858040  2017-12-23 18:57  计150326周艺(最新版本)\计150326词法分析\Debug\cifafenxi.ilk
     文件      400929  2017-12-23 18:57  计150326周艺(最新版本)\计150326词法分析\Debug\cifafenxi.obj
     文件     3043480  2017-12-23 18:57  计150326周艺(最新版本)\计150326词法分析\Debug\cifafenxi.pch
     文件     1213440  2017-12-23 18:57  计150326周艺(最新版本)\计150326词法分析\Debug\cifafenxi.pdb
     文件       91136  2017-12-23 19:09  计150326周艺(最新版本)\计150326词法分析\Debug\vc60.idb
     文件      135168  2017-12-23 18:57  计150326周艺(最新版本)\计150326词法分析\Debug\vc60.pdb
     文件        7073  2017-12-12 10:14  计150326周艺(最新版本)\计150326词法分析\cifafenxi.cpp
     文件        3437  2013-01-09 09:59  计150326周艺(最新版本)\计150326词法分析\cifafenxi.dsp
     文件         543  2013-01-09 10:15  计150326周艺(最新版本)\计150326词法分析\cifafenxi.dsw
     文件       66560  2017-12-23 19:14  计150326周艺(最新版本)\计150326词法分析\cifafenxi.ncb
     文件       48640  2017-12-23 19:14  计150326周艺(最新版本)\计150326词法分析\cifafenxi.opt
     文件       14678  2017-12-23 18:57  计150326周艺(最新版本)\计150326词法分析\cifafenxi.plg
     文件         124  2011-01-09 18:51  计150326周艺(最新版本)\计150326词法分析\j.txt
     文件         219  2012-01-07 19:13  计150326周艺(最新版本)\计150326词法分析\stdafx.cpp
     文件         187  2012-01-07 19:13  计150326周艺(最新版本)\计150326词法分析\stdafx.h
     目录           0  2018-02-28 19:56  计150326周艺(最新版本)\计150326语法分析\
     目录           0  2018-02-28 19:56  计150326周艺(最新版本)\计150326语法分析\Debug\
     文件           0  2017-12-23 19:07  计150326周艺(最新版本)\计150326语法分析\Debug\j.txt
     文件           0  2017-12-23 19:13  计150326周艺(最新版本)\计150326语法分析\Debug\j1.txt
     文件       50176  2017-12-23 19:12  计150326周艺(最新版本)\计150326语法分析\Debug\vc60.idb
     文件       61440  2017-12-23 19:12  计150326周艺(最新版本)\计150326语法分析\Debug\vc60.pdb
     文件      241736  2017-12-23 19:12  计150326周艺(最新版本)\计150326语法分析\Debug\yufafenxi.exe
     文件      301504  2017-12-23 19:12  计150326周艺(最新版本)\计150326语法分析\Debug\yufafenxi.ilk
     文件       49542  2017-12-23 19:12  计150326周艺(最新版本)\计150326语法分析\Debug\yufafenxi.obj
     文件      303396  2017-12-23 19:10  计150326周艺(最新版本)\计150326语法分析\Debug\yufafenxi.pch
     文件      607232  2017-12-23 19:12  计150326周艺(最新版本)\计150326语法分析\Debug\yufafenxi.pdb
............此处省略9个文件信息

评论

共有 条评论