資源簡介
編譯原理的課程設計。dfascan.cpp:輸入一個正規式,并輸入一個字符串,判斷輸入的字符串是否符合此正規式的語法規則。其他兩個文件,是關于llr和slr文法的設計的

代碼片段和文件信息
/***********************************************************
??Copyright?(c)?2004?RM.RYT.?All?rights?reserved.
??Developed?in?Microsoft?Visual?C++?6.0?Enterprise?Edition.
?***********************************************************/
#include?
#include
#include
#include
#include
#include
/////////////////////////////////////////////////
#define?NULL?0
#define?LStack?linkedStack
/////////////////////////////////////////////////
//?鏈式棧類的前視定義
template?
class?linkedStack;
/////////////////////////////////////////////////
//?定義鏈式棧結點類
template?
class?StackNode
{
friend?class?linkedStack;
private:
T?data;
????????StackNode?*next;
StackNode(T?item?=?0?StackNode?*p?=?NULL)
{
data?=?item;
next?=?p;
}
};
/////////////////////////////////////////////////
//?定義鏈式棧類
template?
class?linkedStack
{
private:
StackNode?*top;
public:
linkedStack();
~linkedStack();
bool?IsEmpty(void)?const;
int?Length(void)?const;
void?Push(const?T?&item);
T?Pop(void);
T?GetTop(void);
void?Clear(void);
};
//?構造函數
template?
linkedStack::linkedStack()
{
top?=?NULL;
}
//?析構函數
template?
linkedStack::~linkedStack()
{
Clear();
}
//?判斷棧是否為空
template?
bool?linkedStack::IsEmpty(void)?const
{
return?(!?top);
}
//?獲取隊列的長度
template?
int?linkedStack::Length(void)?const
{
StackNode?*temp?=?new?StackNode();
temp?=?top;
int?length?=?0;
while?(temp)
{
temp?=?temp->next;
length++;
}
return?length;
}
//?壓入數據(入棧)
template?
void?linkedStack::Push(const?T?&item)
{
top?=?new?StackNode(item?top);
}
//?抽出數據(出棧)
template?
T?linkedStack::Pop(void)
{
if?(!?IsEmpty())
{
????StackNode?*temp?=?top;
top?=?top->next;
T?value?=?temp->data;
delete?temp;
return?value;
}
else
{
//cout<“Stack?Already?Empty!“?< getch();
exit(1);
}
}
//?獲取棧頭數據
template?
T?linkedStack::GetTop(void)
{
if?(!?IsEmpty())
{
return?top->data;
}
else
{
//cout?<“Stack?Already?Empty!“?< getch();
exit(1);
}
}
//?設置棧為空棧
template?
void?linkedStack::Clear(void)
{
StackNode?*temp?=?new?StackNode();
while?(top)
{
temp?=?top;
top?=?top->next;
delete?temp;
}
}
/////////////////////////////////////////////////
//?定義鄰接表的邊表類
class?Edge
{
public:
int?number;
int?position;
char?weight;
Edge?*link;
Edge();
Edge(int?num?int?pos?char?ch);
};
Edge::Edge()
{
number?=?-1;
position?=?-1;
link?=?NULL;
}
Edge::Edge(int?num?int?pos?char?ch)
{
number?=?num;
position?=?pos;
weight?=?ch;
????link?=?NULL;
}
/////////////////////////////////////////////////
//?定義鄰接表的頂點類
class?Vertex
{
public:
int?number;
Vertex?*next;
Edge?*out;
Vert
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件??????26043??2017-12-18?22:25??編譯原理正規式匹配\DFAScan.cpp
?????文件??????26031??2017-12-16?15:54??編譯原理正規式匹配\LL1Grammar.cpp
?????文件??????30211??2017-12-16?16:06??編譯原理正規式匹配\SLRGrammar.cpp
?????目錄??????????0??2017-12-20?12:23??編譯原理正規式匹配
-----------?---------??----------?-----??----
????????????????82285????????????????????4
- 上一篇:藍牙模塊AT指令集
- 下一篇:MSP430驅動SD卡程序
評論
共有 條評論