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

資源簡介

編譯原理實驗 語法分析器的程序,是采用的算符優先文法,是大三時候寫的,很全,里面包括源程序 和實驗報告等。

資源截圖

代碼片段和文件信息

#include
#include
#include
#include
#define?SIZE?128
char?priority[7][7];??//算符優先關系數組
char?input[SIZE];?????//存放輸入的要進行分析的句子
char?remain[SIZE];????//存放剩余串
char?AnalyseStack[SIZE];??//分析棧
void?analyse();
int??testchar(char?x);??//判斷字符X在算符優先關系表中的位置
void?remainString();????//移進時處理剩余字符串,即去掉剩余字符串第一個字符
int?k;
void?init()
{
priority[0][0]=‘>‘;
priority[0][1]=‘<‘;
priority[0][2]=‘<‘;
priority[0][3]=‘<‘;
priority[0][4]=‘<‘;
priority[0][5]=‘>‘;
priority[0][6]=‘>‘;

priority[1][0]=‘>‘;
priority[1][1]=‘>‘;
priority[1][2]=‘<‘;
priority[1][3]=‘<‘;
priority[1][4]=‘<‘;
priority[1][5]=‘>‘;
priority[1][6]=‘>‘;

priority[2][0]=‘>‘;
priority[2][1]=‘>‘;
priority[2][2]=‘<‘;
priority[2][3]=‘<‘;
priority[2][4]=‘<‘;
priority[2][5]=‘>‘;
priority[2][6]=‘>‘;

priority[3][0]=‘>‘;
priority[3][1]=‘>‘;
priority[3][2]=‘>‘;
priority[3][3]=‘$‘;//無優先關系的用$表示
priority[3][4]=‘$‘;
priority[3][5]=‘>‘;
priority[3][6]=‘>‘;

priority[4][0]=‘<‘;
priority[4][1]=‘<‘;
priority[4][2]=‘<‘;
priority[4][3]=‘<‘;
priority[4][4]=‘<‘;
priority[4][5]=‘=‘;
priority[4][6]=‘$‘;

priority[5][0]=‘>‘;
priority[5][1]=‘>‘;
priority[5][2]=‘>‘;
priority[5][3]=‘$‘;
priority[5][4]=‘$‘;
priority[5][5]=‘>‘;
priority[5][6]=‘>‘;

priority[6][0]=‘<‘;
priority[6][1]=‘<‘;
priority[6][2]=‘<‘;
priority[6][3]=‘<‘;
priority[6][4]=‘<‘;
priority[6][5]=‘$‘;
priority[6][6]=‘=‘;
}
void?analyse()
{
int?ijfzz1nn1z2n2;
int?count=0;//操作的步驟數
char?a;?//存放正在分析的字符
char?pQp1p2;
f=strlen(input);??//測出數組的長度
for(i=0;i<=f;i++)
{
a=input[i];
if(i==0)
remainString();
if(AnalyseStack[k]==‘+‘||AnalyseStack[k]==‘*‘||AnalyseStack[k]==‘^‘||AnalyseStack[k]==‘i‘||AnalyseStack[k]==‘(‘||AnalyseStack[k]==‘)‘||AnalyseStack[k]==‘#‘)
j=k;
else
j=k-1;
z=testchar(AnalyseStack[j]);//從優先關系表中查出s[j]和a的優先關系
if(a==‘+‘||a==‘*‘||a==‘^‘||a==‘i‘||a==‘(‘||a==‘)‘||a==‘#‘)
n=testchar(a);
else?//如果句子含有不是終結符集合里的其它字符,不合法
{
printf(“錯誤!該句子不是該文法的合法句子!\n“);
break;
}
p=priority[z][n];
if(p==‘$‘)
{
printf(“錯誤!該句子不是該文法的合法句子!\n“);
return;
}
if(p==‘>‘)
{
loop:????????Q=AnalyseStack[j];
?if(AnalyseStack[j-1]==‘+‘||AnalyseStack[j-1]==‘*‘||AnalyseStack[j-1]==‘^‘||AnalyseStack[j-1]==‘i‘||AnalyseStack[j-1]==‘(‘||AnalyseStack[j-1]==‘)‘||AnalyseStack[j-1]==‘#‘)
?j=j-1;
?else
?j=j-2;
?z1=testchar(AnalyseStack[j]);
?n1=testchar(Q);
?p1=priority[z1][n1];
?if(p1==‘<‘)??//AnalyseStack[j+1]~AnalyseStack[k]歸約為N
?{
?count++;
?printf(“(%d)?????%s\t%10c\t%5c%17s\t????歸約\n“countAnalyseStackparemain);
?k=j+1;?
?i--;
?AnalyseStack[k]=‘N‘;
?int?rr1;
?r=strlen(AnalyseStack);
?for(r1=k+1;r1 ?AnalyseStack[r1]=‘\0‘;
?}
?else
?goto??loop;
}
else
{
if(p==‘<‘)??//移進
{
????????????????//remainString();
count++;

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

?????文件????????540??2008-12-22?12:52??1926219語法分析\1926219_語法分析.dsw

?????文件??????41984??2008-12-23?23:18??1926219語法分析\1926219_語法分析.ncb

?????文件???????5560??2008-12-25?23:38??1926219語法分析\1926219_語法分析.cpp

?????文件????????929??2008-12-22?23:20??1926219語法分析\1926219_語法分析.plg

?????文件???????4406??2008-12-22?13:33??1926219語法分析\1926219_語法分析.dsp

?????文件??????73216??2008-12-23?23:16??1926219語法分析\1926219_語法分析_設計報告.doc

?????文件??????40448??2008-12-22?13:12??1926219語法分析\1926219_語法分析_使用說明.doc

?????文件??????53760??2008-12-23?23:18??1926219語法分析\1926219_語法分析.opt

?????文件??????61440??2008-12-22?12:52??1926219語法分析\Debug\vc60.pdb

?????文件??????16618??2008-12-22?23:20??1926219語法分析\Debug\1926219_語法分析.obj

?????文件?????217165??2008-12-22?23:20??1926219語法分析\Debug\1926219_語法分析.exe

?????文件?????418816??2008-12-22?12:52??1926219語法分析\Debug\1926219_語法分析.pdb

?????文件??????45056??2010-03-05?10:45??1926219語法分析\1926219_語法分析_測評報告.doc

?????目錄??????????0??2010-03-05?10:44??1926219語法分析\Debug

?????目錄??????????0??2010-03-05?10:44??1926219語法分析

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

???????????????979938????????????????????15


評論

共有 條評論