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

  • 大小: 85KB
    文件類型: .rar
    金幣: 2
    下載: 0 次
    發布日期: 2021-07-31
  • 語言: 其他
  • 標簽: SyntaxAnalyz??

資源簡介

LL(1)文法分析程序,內含輸入文件、輸出文件、readme幫助文件、程序源碼及exe運行程序,程序整個過程為:讀入源碼,消除直接左遞歸,消除直接左公共因子,求First集,求Follow集,構建分析表,分析過程。供大家交流學習。

資源截圖

代碼片段和文件信息

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

using?namespace?std;

#define?T?0 //終結符
#define?N?1 //非終結符

//文件名、路徑
#define?ErrorLog?“.\\輸出文件\\Error.log“
#define?AnalyzeProcesstxt?“.\\輸出文件\\分析過程.txt“
#define?SyntaxRuletxt?“語法規則.txt“
#define?FirstFollowtxt?“.\\輸出文件\\First集和Follow集.txt“
#define?Tokenstxt?“tokens.txt“
#define?AnalyzeTabletxt?“.\\輸出文件\\分析表.txt“

typedef?string?StartSymble;


//重載?==?運算符
bool?operator==(const?list&?left?const?string&?right)
{
if?(left.front()?==?right)
return?true;
else
return?false;
}

//重載?==?運算符?list比較
bool?operator==(list?left?list?right)
{
typedef?list::iterator?IteratorList;
IteratorList?itListLeft?=?left.begin();
IteratorList?itListRight?=?right.begin();
if?(left.size()?!=?right.size())
return?false;
else
{
while?(itListLeft?!=?left.end())
{
if?(*itListLeft?==?*itListRight)
itListLeft++?itListRight++;
else
return?false;
}
return?true;
}
}

//list由?|?分段
list>?DevideList(list?List)
{
typedef?list::iterator?IteratorList;
IteratorList?itList;
list>?NewP; //根據?|?分段后的右部
list?Segment; //用來存放分段
itList?=?List.begin();
while?(itList?!=?List.end())
{
if?(*itList?!=?“|“)
Segment.push_back(*itList);
else
{
NewP.push_back(Segment);
Segment.clear();
}
itList++;
if?(itList?==?List.end())
NewP.push_back(Segment);
}
return?NewP;
}

//合并函數
list?CombineLists(list>?LL)
{
bool?Eif?=?false; //是否有ε
typedef?list>::iterator?IteratorLL;
IteratorLL?itLL?=?LL.begin();
list?newone;
while?(itLL?!=?LL.end())
{
if?(*itLL?==?“ε“)
{
Eif?=?true;
itLL++;
continue;
}
typedef?list::iterator?IteratorList;
IteratorList?itList?=?itLL->begin();
while?(itList?!=?itLL->end())
{
newone.push_back(*itList);
itList++;
}
newone.push_back(“|“);
itLL++;
}
if?(Eif)
newone.push_back(“ε“);
if?(newone.back()?==?“|“) //去除多余的或
newone.pop_back();
return?newone;
}
list?CombineLists(list?left?list?right)
{
// cout?< typedef?list::iterator?IteratorList;
IteratorList?itList?=?right.begin();
while?(itList?!=?right.end())
{
bool?AlreadyHave?=?false;
IteratorList?itList2?=?left.begin(); //用來判斷是否已有某個符號
while?(itList2?!=?left.end())
{
if?(*itList2?==?*itList) //已有符號
AlreadyHave?=?true;
itList2++;
}
if(!AlreadyHave) //非已有符號才加入
left.push_back(*itList);
itList++;
}
return?left;
}
set?CombineSets(set?left?set?right)
{
typedef?set::iterator?IteratorSet;
IteratorSet?itSet?=?right.begin();
while?(itSet?!=?right.end())
{
left.insert(*itSet);
itSet++;
}
return

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

?????文件??????38535??2018-11-20?11:56??SyntaxAnalyzer.cpp

?????文件?????535552??2018-11-20?11:56??SyntaxAnalyzer.exe

?????文件?????????50??2018-11-20?11:31??tokens.txt

?????文件????????123??2018-11-20?11:25??語法規則.txt

?????文件?????????56??2018-11-20?11:49??輸出文件\Error.log

?????文件????????374??2018-11-20?11:49??輸出文件\First集和Follow集.txt

?????文件????????441??2018-11-20?11:49??輸出文件\分析表.txt

?????文件???????2707??2018-11-20?11:49??輸出文件\分析過程.txt

?????文件????????643??2018-11-20?12:07??ReadMe.txt

?????目錄??????????0??2018-11-20?11:56??輸出文件

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

???????????????578481????????????????????10


評論

共有 條評論

相關資源