資源簡介
編譯原理實驗需要用到的工具及簡單源碼,含遞歸下降分析程序,實驗指導書 Lex YACC^……
代碼片段和文件信息
/*
(1)E→TG
(2)G→+TG|-TG
(3)G→ε
(4)T→FS
(5)S→*FS|/FS
(6)S→ε
(7)F→(E)
(8)F→i
*/
#include?
#include
#include
#include
char?a[50]?b[50]?d[200]?e[10];
char?ch;
int?n1i1=0flag=1n=5;
int?E();
int?E1();
int?T();
int?G();
int?S();
int?F();
void?input();
void?input1();
void?output();
//================================================
void?main()??????????????????????/*遞歸分析*/
{
int?fpj=0;
char?x;
????d[0]=‘E‘;
????d[1]=‘=‘;
????d[2]=‘?‘;
????d[3]=‘T‘;
????d[4]=‘G‘;
????d[5]=‘#‘;
printf(“請輸入字符串(長度<50以#號結束)\n“);
do{
scanf(“%c“&ch);
a[j]=ch;
j++;
}while(ch!=‘#‘);
n1=j;
ch=b[0]=a[0];
printf(“文法\t分析串\t\t分析字符\t剩余串\n“);
f=E1();
if?(f==0)?return;
if?(ch==‘#‘)??
{???
printf(“accept\n“);
????????p=0;
x=d[p];
while(x!=‘#‘)?
{
printf(“%c“x);p=p+1;x=d[p];??????????/*輸出推導式*/
}
}
else?
{
printf(“error\n“);
printf(“回車返回\n“);
getchar();getchar();?
return;?
}
printf(“\n“);
printf(“回車返回\n“);
getchar();
getchar();
}
//================================================
int?E1()
{???int?ft;
printf(“E->TG\t“);
??? flag=1;
input();
input1();
f=T();
if?(f==0)?return(0);
t=G();
if?(t==0)?return(0);
else?return(1);
}
//================================================
int?E()
{???int?ft;
printf(“E->TG\t“);
????e[0]=‘E‘;e[1]=‘=‘;e[2]=‘?‘;e[3]=‘T‘;e[4]=‘G‘;e[5]=‘#‘;
output();
flag=1;
input();
input1();
f=T();
if?(f==0)?return(0);
t=G();
if?(t==0)?return(0);
else?return(1);
}
//================================================
int?T()
{???int?ft;
printf(“T->FS\t“);
e[0]=‘T‘;e[1]=‘=‘;e[2]=‘?‘;e[3]=‘F‘;e[4]=‘S‘;e[5]=‘#‘;
????output();
flag=1;
input();
input1();
f=F();
if?(f==0)?return(0);
t=S();?
if?(t==0)?return(0);
else?return(1);
}
//================================================
int??G()
{???int?f;
if(ch==‘+‘)?{??
b[i1]=ch;
printf(“G->+TG\t“);
????????e[0]=‘G‘;e[1]=‘=‘;e[2]=‘?‘;e[3]=‘+‘;e[4]=‘T‘;e[5]=‘G‘;e[6]=‘#‘;
output();
????flag=0;
input();input1();
ch=a[++i1];
f=T();
if?(f==0)?return(0);
G();
return(1);
}
printf(“G--^\t“);
e[0]=‘G‘;e[1]=‘=‘;e[2]=‘?‘;e[3]=‘^‘;e[4]=‘#‘;
output();
flag=1;?
input();input1();
return(1);
}
//================================================
int?S()
{
int?ft;
if(ch==‘*‘)?{?
b[i1]=ch;printf(“S->*FS\t“);
????????e[0]=‘S‘;e[1]=‘=‘;e[2]=‘?‘;e[3]=‘*‘;e[4]=‘F‘;e[5]=‘S‘;e[6]=‘#‘;
output();
flag=0;
input();input1();
ch=a[++i1];
f=F();
if?(f==0)?return(0);
t=S();
if?(t==0)?return(0);
else?return(1);}
printf(“S->^\t“);
e[0]=‘S‘;e[1]=‘=‘;e[2]=‘?‘;e[3]=‘^‘;e[4]=‘#‘;
output();
flag=1;?
a[i1]=ch;
input();input1();
return(1);
}
//================================================
int?F()
{???int?f;
if(ch==‘(‘)?{?
b[i1]=ch;printf(“F->(E)\t“);
e[0]=‘F‘;e[1]=‘=‘;e[2]=‘?‘;e[3]=‘(‘;e[4]=‘E‘;e[5]=‘)‘;e[6]
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????4588??2010-06-09?17:29??實驗工具及參考源碼\2-遞歸下降.c
?????文件???????3449??2010-06-09?18:48??實驗工具及參考源碼\2-遞歸下降.dsp
?????文件????????545??2010-06-09?20:28??實驗工具及參考源碼\2-遞歸下降.dsw
?????文件??????41984??2010-06-09?20:28??實驗工具及參考源碼\2-遞歸下降.ncb
?????文件??????48640??2010-06-09?20:28??實驗工具及參考源碼\2-遞歸下降.opt
?????文件????????764??2010-06-09?18:48??實驗工具及參考源碼\2-遞歸下降.plg
?????文件???????3733??2006-11-12?23:13??實驗工具及參考源碼\3-LL1-v2.c
?????文件???????2552??2008-11-27?00:07??實驗工具及參考源碼\4-LR1.c
?????文件???????3314??2006-09-12?09:24??實驗工具及參考源碼\5-逆波蘭式.c
?????文件???????8153??2010-03-23?17:37??實驗工具及參考源碼\AnsiC\ANSI?C?grammar?(Lex).htm
?????文件??????41294??2010-03-23?17:38??實驗工具及參考源碼\AnsiC\ANSI?C?grammar?(Yacc).htm
?????文件?????192589??2010-06-09?18:48??實驗工具及參考源碼\Debug\2-遞歸下降.exe
?????文件?????197052??2010-06-09?18:48??實驗工具及參考源碼\Debug\2-遞歸下降.ilk
?????文件??????16440??2010-06-09?18:48??實驗工具及參考源碼\Debug\2-遞歸下降.obj
?????文件?????191828??2010-06-09?16:57??實驗工具及參考源碼\Debug\2-遞歸下降.pch
?????文件?????451584??2010-06-09?18:48??實驗工具及參考源碼\Debug\2-遞歸下降.pdb
?????文件??????33792??2010-06-09?19:02??實驗工具及參考源碼\Debug\vc60.idb
?????文件??????53248??2010-06-09?18:48??實驗工具及參考源碼\Debug\vc60.pdb
?????文件?????196096??1996-07-16?00:02??實驗工具及參考源碼\Flex-Bison\bison.exe
?????文件???????6811??1996-07-16?00:02??實驗工具及參考源碼\Flex-Bison\bison.hairy
?????文件?????243119??2006-09-12?09:35??實驗工具及參考源碼\Flex-Bison\Bison.htm
?????文件??????17819??2006-09-12?11:29??實驗工具及參考源碼\Flex-Bison\bison.simple
?????文件?????181248??1996-07-16?00:04??實驗工具及參考源碼\Flex-Bison\flex.exe
?????文件?????123998??2006-09-12?09:34??實驗工具及參考源碼\Flex-Bison\flex.htm
?????文件?????????78??2008-10-13?14:57??實驗工具及參考源碼\Flex-Bison\readme.txt
?????文件???????5851??1997-05-10?05:24??實驗工具及參考源碼\Slex\Lex.par
?????文件??????17359??2010-05-13?00:05??實驗工具及參考源碼\Slex\LEXYY.C
?????文件??????79943??2008-01-23?19:01??實驗工具及參考源碼\Slex\Slex.exe
?????文件????????424??2003-05-14?12:57??實驗工具及參考源碼\Slex\test.lex
?????文件????????139??1997-09-03?15:37??實驗工具及參考源碼\Slex\Test0.pl0
............此處省略15個文件信息
評論
共有 條評論
相關資源
- Python全棧學習筆記面向對象大作業:
- 2017黑馬軟件測試全套完整視頻教程
- 基于LabVIEW的交通燈設計,報告,程序
- 《城市公交站點設置的優化分析》項
- SPSS+23中文版統計分析實用教程第2版鄧
- 《數字信號處理》第四版高西全版課
- 《編譯原理》全套的課程資源
- 山東大學計算機圖形學實驗課程資源
- 微型計算機控制技術課件
- 高頻電子線路 第2版 學習指導與題解
- 河北工業大學編譯原理實驗
- 七周成為數據分析師-全套視頻+課件
- 計算機科學引論重點知識及課后答案
- 河北工業大學密碼學實驗des和rsa實驗
- 數據結構與算法之美課程資源含解壓
- 編譯作業2.3.jpg
- 文件系統的詳細分析FAT16—32資料和
- GStreamer+插件開發指南
- 逆向破解網絡游戲逆向自動化腳本課
- 2007年全國大學生數學建模競賽A題.z