資源簡介
這是一個遞歸下降分析程序,實現對詞法分析程序所提供的單詞序列的語法檢查和結構分析。利用C語言編制遞歸下降分析程序,并對簡單語言進行語法分析。

代碼片段和文件信息
#include?“wordscan.h“
//char?prog[80];
//int?synpmnkksum=0;
//char?ch;
void?lrparser();
void?yucu();
void?statement();
void?expression();
void?term();
void?factor();
int?kk=0;
void?lrparser()?{
if?(syn==1)?{?//begin
scaner();
yucu();
if?(syn==6)?{?//end
scaner();
if?(syn==0?&&?kk==0)?printf(“success?\n“);
}?else?{
if(kk!=1)?printf(“errorlose?‘end‘?!?\n“);
kk=1;
}
}?else?{
printf(“errorlose?‘begin‘?!?\n“);
kk=1;
}
return;
}
void?yucu()?{
statement();
while(syn==26)?{?
scaner();
statement();
}
return;
}
void?statement()?{
if?(syn==10)?{?//為標識符
scaner();
if?(syn==18)?{?//為?:=
scaner();
expression();
}?else?{
printf(“error!“);
kk=1;
}
}?else?{
printf(“error!“);
kk=1;
}
return;
}
void?expression()?{
term();
while(syn==13?||?syn==14)?{
scaner();
term();
}
return;
}
void?term()?{
factor();
while(syn==15?||?syn==16)?{
scaner();
factor();
}
return;
}
void?factor()?{
if(syn==10?||?syn==11)scaner();?//為標識符或整常數時,讀下一個單詞符號
else?if(syn==27)?{
scaner();
expression();
if(syn==28)scaner();
else?{
printf(“?‘)‘?錯誤\n“);
kk=1;
}
}?else?{
printf(“表達式錯誤\n“);
kk=1;
}
return;
}
void?main()?{
p=0;int?i;
printf(“********************語法分析程序***************\n“);
printf(“請輸入源程序:\n“);
do?{
scanf(“%c“&ch);
prog[p++]=ch;
}?while(ch!=‘#‘);
p=0;
scaner();
lrparser();
printf(“語法分析結束!\n“);
getch();
}
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件????????1601??2017-12-25?22:23??main.c
?????文件????????1915??2017-12-23?15:24??wordscan.h
?????文件???????13973??2018-01-03?09:28??編譯原理_遞歸下降分析語法分析_C語言版.docx
評論
共有 條評論