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

資源簡介

最近在教學生編譯原理的入門,自己用了一周時間用c++寫了這個詞法分析器和語法檢查器,供后來者參考。代碼在vs2008中編譯運行通過。提供了10個測試文件。 本代碼用遞歸子程序法檢查所給文件是否合乎語法,不做語義分析和代碼生成以及模擬。

資源截圖

代碼片段和文件信息

#include?“FirstSymbols.h“

static?void?insertsym(const?symbol?table[]?int?nsymset&?syms)
{
for(int?i=0;?i syms.insert(table[i]);
}

CFirstSymbols::CFirstSymbols(void)
{
makestatbeg();
makesubbeg();
makeprogbeg();

makerops();
addops.insert(plus);
addops.insert(minus);

mulops.insert(times);
mulops.insert(slash);

makeexp();

condition?=?expression;
condition.insert(oddsym);
}

CFirstSymbols::~CFirstSymbols(void)
{

}

void?CFirstSymbols::makerops()
{
const?symbol?table[]=
{
eql
neq
lss
leq
gtr
geq
}
;
insertsym(tablesizeof(table)/sizeof(table[0])?rops);
}


void?CFirstSymbols::makestatbeg()
{
//語句的開頭只能id和6個關鍵字之一:begin?call?if?while?read?write
const?symbol?table[]=
{
ident
beginsym
callsym
ifsym
whilesym
readsym
writesym
}
;

insertsym(table?sizeof(table)/sizeof(table[0])?statement);
}

void?CFirstSymbols::makesubbeg()
{
sub?=?statement;??//語句的首部也可能是子程序的首部

//把每種聲明的first集加入子程序中
const?symbol?table[]=
{
constsym
varsym
procsym
};

insertsym(table?sizeof(table)/sizeof(table[0])?sub);
}

void?CFirstSymbols::makeprogbeg()
{
prog?=?sub;??//第一個子程序的首部也是主程序的首部
prog.insert(period); //因為子程序可能是空,所以句點也可能是程序的首部
}

const?symset&?CFirstSymbols::getstat()?const
{
return??statement;
}

const?symset&?CFirstSymbols::getprog()?const
{
return?prog;
}

const?symset&?CFirstSymbols::getsub()?const
{
return?sub;
}

const?symset&?CFirstSymbols::getexp()?const{
return?expression;
}

void?CFirstSymbols::makeexp()
{
factor.insert(ident);
factor.insert(number);
factor.insert(lparen);


expression=addops;
expression.insert(factor.begin()?factor.end());
}

const?symset&?CFirstSymbols::getrops()?const
{
return?rops;
}

const?symset&?CFirstSymbols::getmulops()?const
{
return?mulops;
}

const?symset&?CFirstSymbols::getraddops()?const
{
return?addops;
}

const?symset&?CFirstSymbols::getfactor()?const
{
return?factor;
}

const?symset&?CFirstSymbols::getcondition()?const
{
return?condition;
}







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

????.......?????????1??2006-11-20?00:11??PL0\ClassDiagram1.cd

?????文件???????7072??2013-02-27?23:38??PL0\Debug\BuildLog.htm

?????文件?????219069??2013-02-27?23:07??PL0\Debug\FirstSymbols.obj

?????文件??????24773??2013-02-25?09:00??PL0\Debug\ID.obj

?????文件?????340084??2013-02-25?22:10??PL0\Debug\IDKind.obj

?????文件??????62896??2013-02-25?17:04??PL0\Debug\IDtable.obj

?????文件???????3174??2013-02-25?08:15??PL0\Debug\Instruction.obj

?????文件??????51609??2013-02-25?08:53??PL0\Debug\Instructions.obj

?????文件??????47311??2013-02-27?23:38??PL0\Debug\main.obj

?????文件?????????69??2013-02-27?23:38??PL0\Debug\mt.dep

?????文件?????349074??2013-02-25?22:10??PL0\Debug\OpKind.obj

?????文件?????107812??2013-02-27?23:38??PL0\Debug\Parser.obj

?????文件?????164352??2013-02-27?23:38??PL0\Debug\PL0.exe

?????文件????????663??2013-02-23?21:13??PL0\Debug\PL0.exe.embed.manifest

?????文件????????728??2013-02-23?21:13??PL0\Debug\PL0.exe.embed.manifest.res

?????文件????????621??2013-02-27?23:38??PL0\Debug\PL0.exe.intermediate.manifest

?????文件?????745152??2013-02-27?23:38??PL0\Debug\PL0.ilk

?????文件?????481992??2013-02-24?11:49??PL0\Debug\PL0.obj

?????文件????1838080??2013-02-27?23:38??PL0\Debug\PL0.pdb

?????文件??????41543??2013-02-27?23:03??PL0\Debug\Scanner.obj

?????文件?????155104??2013-02-26?20:06??PL0\Debug\SymbolSeqs.obj

?????文件??????30225??2013-02-26?17:11??PL0\Debug\Token.obj

?????文件???????3150??2013-02-24?17:53??PL0\Debug\TokenKind.obj

?????文件???????3150??2013-02-24?17:53??PL0\Debug\Transalor.obj

?????文件?????379904??2013-02-27?23:38??PL0\Debug\vc90.idb

?????文件?????643072??2013-02-27?23:38??PL0\Debug\vc90.pdb

?????文件???????2233??2013-02-27?23:06??PL0\FirstSymbols.cpp

?????文件????????726??2013-02-27?08:37??PL0\FirstSymbols.h

?????文件????????176??2013-02-25?09:00??PL0\ID.cpp

?????文件????????377??2013-02-25?08:59??PL0\ID.h

............此處省略38個文件信息

評論

共有 條評論