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

資源簡介

用擴(kuò)充的BNF表示如下: (1)::=beginend (2)::={;} (3)::= (4)::=ID:= (5)::={+|-} (6)::={*|/} (7)::=ID| NUM|()

資源截圖

代碼片段和文件信息

#include
#include
#include

using?namespace?std;

char?prog[80];//緩沖區(qū)
int?p=0;//緩沖區(qū)prog的指針

char?token[8];//單詞
int?m=0;//單詞token的指針

char?ch;//需要分析的字符

int?syn=0;//單詞的種別碼

int?sum=0;//計(jì)算整數(shù)

int?n=0;//計(jì)數(shù)器
int?kk=0;

char?*rwtab[6]={“begin““if““then““while““do““end“};//關(guān)鍵字


void?scaner();//掃描函數(shù)
void?factor();//因子
void?term();//項(xiàng)
void?expression();//表達(dá)式
void?statement();//語句
void?yucu();//語句串
void?lrparser();//語法分析

//掃描函數(shù)
void?scaner()
{
for(n=0;n<8;n++)?token[n]=NULL;
????ch=prog[p++];

????while(ch==‘?‘)
????????ch=prog[p++];

if?((ch>=‘A‘&&ch<=‘Z‘)||(ch>=‘a(chǎn)‘&&ch<=‘z‘))
{
m=0;
while?((ch>=‘A‘&&ch<=‘Z‘)||(ch>=‘a(chǎn)‘&&ch<=‘z‘)||(ch>=‘0‘&&ch<=‘9‘))
{
token[m++]=ch;//將當(dāng)前字符存入單詞
ch=prog[p++];//取下一個(gè)
}

token[m++]=‘\0‘;//結(jié)束符

p--;//指針歸位

syn=10;//假定是變量

for?(n=0;n<6;n++)
{
if?(strcmp(tokenrwtab[n])==0)
{
syn=n+1;//關(guān)鍵字!
break;
}
}
}
else
if(ch>=‘0‘&&ch<=‘9‘)
{
sum=0;
while?(ch>=‘0‘&&ch<=‘9‘)
{
sum=sum*10+ch-‘0‘;//計(jì)算數(shù)字
ch=prog[p++];
}
p--;//指針歸位
syn=11;//是數(shù)字!
}
else
switch?(ch)
{
case‘>‘?:
m=0;
token[m++]=ch;
ch=prog[p++];
if?(ch==‘=‘)
{
syn=24;//是“>=”
token[m++]=ch;//將“=”存入單詞
}
else
{
syn=23;//是“>”
p--;//指針歸位
}
break;

case‘<‘:
m=0;
token[m++]=ch;
ch=prog[p++];
if?(ch==‘>‘)
{
syn=21;//是“<>”
token[m++]=ch;//將“>”存入單詞
}
else
{
if?(ch==‘=‘)
{
syn=22;//是“<=”
token[m++]=ch;//將“=”存入單詞
}
else
{
syn=20;//是“<”
p--;//指針歸位
}
}
break;

case‘:‘:
m=0;
token[m++]=ch;
ch=prog[p++];
if?(ch==‘=‘)
{
syn=18;
token[m++]=ch;
}?
else
{
syn=17;
p--;
}
break;

case‘-‘:
syn=13;
token[0]=ch;
break;

case‘+‘:
syn=14;
token[0]=ch;
break;

case‘*‘:
syn=15;
token[0]=ch;
break;

case‘/‘:
syn=16;
token[0]=ch;
break;

case‘;‘:
syn=26;
token[0]=ch;
break;

case‘(‘:
syn=28;
token[0]=ch;
break;

case‘)‘:
syn=27;
token[0]=ch;
break;

case‘#‘:
syn=0;
token[0]=ch;
break;

default:syn=-1;
}
}

//因子
void?factor()
{?if(syn==10||syn==11)
????????scaner();?//為標(biāo)識符或整常數(shù)時(shí),讀下一個(gè)單詞符號
????else?if(syn==27)
????{
????????scaner();
????????expression();
????????if(syn==28)
????????????scaner();
????????else
????????{
????????????printf(“?‘)‘?錯(cuò)誤\n“);
????????????kk=1;
????????}
????}
????else
????{
????????printf(“表達(dá)式錯(cuò)誤\n“);
????????kk=1;
????}
?

//問題1---補(bǔ)充程序代碼

return;
}

//項(xiàng)
void?term()
{?
factor();

while(syn==15||syn==16)
{
scaner();
factor();
}
return;
}

//表達(dá)式
void?expression()
{?
??term();

????while

?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----

?????文件?????117248??2014-04-23?19:18??編譯原理?遞歸\實(shí)驗(yàn)2-1?語法分析-遞歸下降分析法.doc

?????文件???????4308??2014-04-23?09:22??編譯原理?遞歸\遞歸.cpp

?????目錄??????????0??2014-04-23?20:07??編譯原理?遞歸

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

???????????????121556????????????????????3


評論

共有 條評論

相關(guān)資源