資源簡介
編譯原理
包括核心代碼和可視化的代碼,實現了指定狀態下識別活前綴的DFA

代碼片段和文件信息
#include?“StdAfx.h“
#define?_TEST_G_TO_DEF
#include?
#include?
#include?
using?namespace?std;
GDFA::GDFA?(?vector?vn?vector?vt?vector?produce_expr?char?s?):\
m_VN(vn)?m_VT(vt)?m_produce_expr(produce_expr)?m_S(s)
{ }
bool?GDFA::composite_produce_expr_to_single_produce_expr?()?
//?將文法中的復合產生式轉換為單個產生式,即消除“|“符號
{
//cout?<“對方法進行拓展“?< string?g_begin;
g_begin?=?“S->“;
g_begin?+=?m_S;
//cout?< m_produce_expr.push_back?(g_begin);
string?left;//產生式的部+“->“
string?right;
for?(vector::iterator?itr=m_produce_expr.begin();?itr!=m_produce_expr.end();?++itr)
{ //?找“->“
//cout?<find_first_of(‘|‘)?< for?(size_t?st=0;?st!=itr->length();?++st?)
if?(?itr->at(st)?==?‘-‘?&&?itr->at(st+1)==‘>‘?) //?匹配“->“
{ ++st;?break; }
left?=?itr->substr(0?st+1); //?如果st==itr->length();?錯誤
//cout?< size_t?last_pos?=?st+1;
for?(size_t?nt=st;?nt!=itr->length?();?++?nt?)
{
if?(?itr->at(nt)?==?‘|‘)
{//?生成一個產生式到m_lr_iterm中
m_lr_iterm.push_back?(?left?);
m_lr_iterm.back?()?+=?itr->substr(last_pos?nt-last_pos);
last_pos?=?nt+1;
cout?< }?else?if?(?nt?==?itr->length()-1?) //?掃描到最后一個字符
{
m_lr_iterm.push_back?(?left?);
m_lr_iterm.back()?+=?itr->substr(last_pos?itr->length()-last_pos);
cout?< }
}
}
//?找“|“
return?true;
}
bool?GDFA::g_to_item()
{
int?ii;
string?right; //?產生式右部字字符串
for?(?vector::iterator?itr=m_lr_iterm.begin();?itr!=m_lr_iterm.end();?++itr?)
{ //?取得產生式右部
ii?=?itr->find_first_of(‘>‘)?++ii;?//?指向產生式右部的第一個字符
right?=?itr->substr(ii?itr->length());
itr->erase(?ii?itr->length());
itr->append(“.“)?itr->append(right)?itr->append(“&“);
for?(?size_t?ik=0;?ik?!=?right.length();?++ik?)
{
itr->append?(right.substr(0ik+1))?;
itr->append?(“.“);
itr->append?(right.substr(ik+1?right.length()-ik+1));
itr->append?(“&“);
}
}
return?true;
}
vector?GDFA::get_iterm_set?()
{
vector iterm_tmp;
string left; //?項目左部
string right; //?項目右部
int int_tmp1?int_tmp2;
vector?return_iterm_set;
for?(?vector::iterator?itr=m_lr_iterm.begin();?itr!=m_lr_iterm.end();?++itr?)
{
int_tmp1?=?itr->find_first_of(‘>‘);
left?=?itr->substr?(0?int_tmp1+1)?++int_tmp1; DEBUG(left);
int_tmp2?=?itr->find_first_of(‘&‘);
right?=?itr->substr?(int_tmp1?int_tmp2-int_tmp1)?++int_tmp2; DEBUG(right);
return_iterm_set.push_back?(left+right);
if?(?int_tmp2?!=?itr->length()?)
{
int_tmp1?=?int_tmp2;
while?(?int_tmp2?length())?{
if(itr->at(int_tmp2)?!=?‘&‘)
{
++int_tmp2;
continue;
}
right?=?itr->substr(?int_tmp1?int_tmp2-int_tmp1)++?int_tmp2; DEBUG(right);
return_iterm_set.push_back?(left+right);
int_tmp1?=?int_tmp2;
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????6307??2009-11-19?16:18??編譯原理識別活綴的DFA\core\gdfa.cpp
?????文件???????3627??2009-11-11?22:53??編譯原理識別活綴的DFA\core\gdfa.dsp
?????文件????????533??2009-11-11?22:53??編譯原理識別活綴的DFA\core\gdfa.dsw
?????文件???????1261??2009-11-18?08:05??編譯原理識別活綴的DFA\core\gdfa.h
?????文件??????82944??2009-11-18?21:16??編譯原理識別活綴的DFA\core\gdfa.ncb
?????文件??????55808??2009-11-18?21:16??編譯原理識別活綴的DFA\core\gdfa.opt
?????文件??????12741??2009-11-18?21:16??編譯原理識別活綴的DFA\core\gdfa.plg
?????文件??????10899??2009-11-18?21:16??編譯原理識別活綴的DFA\core\gdfa_test.cpp
?????文件????????437??2009-11-17?14:51??編譯原理識別活綴的DFA\core\gdfa_test.h
?????文件????????205??2009-11-17?11:49??編譯原理識別活綴的DFA\core\StdAfx.h
?????文件?????????82??2009-11-11?22:25??編譯原理識別活綴的DFA\core\vector_test.cpp
?????文件???????6970??2009-11-18?19:50??編譯原理識別活綴的DFA\GtoDFA\gdfa.cpp
?????文件???????1376??2009-11-18?19:50??編譯原理識別活綴的DFA\GtoDFA\gdfa.h
?????文件??????10768??2009-11-18?19:42??編譯原理識別活綴的DFA\GtoDFA\gdfa_test.cpp
?????文件????????437??2009-11-17?14:51??編譯原理識別活綴的DFA\GtoDFA\gdfa_test.h
?????文件??????28412??2009-11-19?16:19??編譯原理識別活綴的DFA\GtoDFA\GtoDFA.aps
?????文件???????1960??2009-11-19?16:26??編譯原理識別活綴的DFA\GtoDFA\GtoDFA.clw
?????文件???????4209??2009-11-17?16:19??編譯原理識別活綴的DFA\GtoDFA\GtoDFA.cpp
?????文件???????4954??2009-11-18?19:44??編譯原理識別活綴的DFA\GtoDFA\GtoDFA.dsp
?????文件????????537??2009-11-17?16:19??編譯原理識別活綴的DFA\GtoDFA\GtoDFA.dsw
?????文件???????1356??2009-11-17?16:19??編譯原理識別活綴的DFA\GtoDFA\GtoDFA.h
?????文件?????107520??2009-11-19?16:30??編譯原理識別活綴的DFA\GtoDFA\GtoDFA.ncb
?????文件??????56832??2009-11-19?16:30??編譯原理識別活綴的DFA\GtoDFA\GtoDFA.opt
?????文件???????2578??2009-11-19?16:26??編譯原理識別活綴的DFA\GtoDFA\GtoDFA.plg
?????文件??????10406??2009-11-18?13:21??編譯原理識別活綴的DFA\GtoDFA\GtoDFA.rc
?????文件???????1742??2009-11-17?16:19??編譯原理識別活綴的DFA\GtoDFA\GtoDFADoc.cpp
?????文件???????1475??2009-11-17?16:19??編譯原理識別活綴的DFA\GtoDFA\GtoDFADoc.h
?????文件???????8207??2009-11-19?16:26??編譯原理識別活綴的DFA\GtoDFA\GtoDFAView.cpp
?????文件???????2045??2009-11-19?16:20??編譯原理識別活綴的DFA\GtoDFA\GtoDFAView.h
?????文件???????2823??2009-11-18?18:12??編譯原理識別活綴的DFA\GtoDFA\MainFrm.cpp
............此處省略21個文件信息
- 上一篇:MSWF多級維納濾波.rar
- 下一篇:遺傳算法簡明.ppt
評論
共有 條評論