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

  • 大小: 186KB
    文件類型: .rar
    金幣: 2
    下載: 0 次
    發布日期: 2021-07-22
  • 語言: 其他
  • 標簽: 編譯原理??LL1??

資源簡介

LL(1)語法分析器的范例代碼...實驗內容及操作示范詳見實驗指導書... 內容簡介: 1.如下為給定的LL(1)文法。 G[]: 1) ->program : begin end {program} 2) D->i D’ {i} 3) D’->, i D’ {,} 4) D’->ε {:} 5) S->s S’ {s} 6) S’-> s S’ { } 7) S’->ε {end} 8) T->real {real} 9) T->integer {integer} 其中右側{}內為產生的可選集。 2.調試并完善如下給出的文法的LL(1)分析器示例程序,并設輸入的文法的句子為: program i , i , i : integer begin s s s end 給出輸出結果并進行分析說明。

資源截圖

代碼片段和文件信息

#include?“stdio.h“
#include?“string.h“
#include?“stdlib.h“
#include?“conio.h“
typedef?struct
{?int?kind;??/*kind值為0時,表示為非終結符,否則存儲終結符的種別碼*/
??int?entry;??/*存儲文法符號名的位置(即下標)*/
}?tokentype;??/*定義Token字類型,即文法符號類型*/

typedef?struct
{??tokentype?left;?/*產生式的左部*/
???tokentype?right[20];?/*產生式的右部*/
???int?rightlen;??/*產生式右部的長度*/
}?ptype;??/*產生式類型*/

typedef?struct?{
tokentype?vn[30];??/*非終結符集*/
char?vn_names[30][10];??/*存放各非終結符名稱*/
tokentype?vt[100];?/*存放終結符*/
char?vt_names[30][20];??/*存放各終結符名稱*/
ptype?p[40];?/*存放產生式*/
int?s;??/*文法的開始符號*/
int?vnlenvtlenplen;?/*非終結符、終結符與產生式的個數*/
}gtype;?/*文法類型*/

int?isvt(tokentype?token)?/*判斷token是否為終結符*/
{?return?(token.kind!=0);}
int?locatevn(gtype?*G?char?name[])/*在文法G中查找給定面值為name的非終結符位置*/
{?int?i;
??for(i=1;i<=G->vnlen;i++)
????if(strcmp(nameG->vn_names[i])==0)?return?i;
??return?0;
}
int?locatevt(gtype?*g?char?name[])?/*查找面值為name的終結符位置*/
{?int?i;
??for(i=1;i<=g->vtlen;i++)
????if(strcmp(nameg->vt_names[i])==0)?return?i;
??return?0;
}
void?InputG(gtype?*G)??/*文法的輸入函數*/
{??int?ijk;
???int?vt_tag;
???char?name[30];
???printf(“\n?Input?the?number?of?VN:“);
???scanf(“%d“&(G->vnlen));
???for(i=1;i<=G->vnlen;i++)?/*輸入非終結符*/
???{??printf(“Input?%dth?VN:“i);
??????scanf(“%s“G->vn_names[i]);
?????G->vn[i].kind=0;G->vn[i].entry=i;
???}
???printf(“\nInput?the?number?of?Vt:“);
???scanf(“%d“&(G->vtlen));
???for(i=1;i<=G->vtlen;i++)/*注釋A:輸入終結符*/
???{??printf(“Input?%dth?Vt:“i);
??????scanf(“%s“G->vt_names[i]);
G->vt[i].kind=i;?/*終結符的種別碼按輸入順序編號*/
G->vt[i].entry=i;
????}
???G->vt[++G->vtlen].kind=-1;?G->vt[G->vtlen].entry=G->vtlen;
???strcpy(G->vt_names[G->vtlen]“#“);??/*增加結束標識#,種別碼為-1*/
???printf(“\n?Input?the?number?of?P:“);
???scanf(“%d“&(G->plen));
???for(i=1;i<=G->plen;i++)?/*輸入產生式*/
???{??printf(“Input?%dth?P:\n“i);
printf(“Input?Left:“);
??????scanf(“%s“?name);
k=locatevn(Gname);
if?(k)?G->p[i].left=G->vn[k];
else?{?printf(“?Wrong!!!??%s?is?not?a?right?Vn.?\n“name);exit(0);}
??????printf(“Input?right?len:“);
??????scanf(“%d“&(G->p[i].rightlen));
?????for(j=0;jp[i].rightlen;j++)
?????{??printf(“???Input?%dth?symbol\n“j+1);
????????printf(“?????Is?vt---1(Yes)0(No):“);?scanf(“%d“&vt_tag);
????????printf(“???????name:“);???scanf(“%s“?name);
????????if(vt_tag)
????{??k=locatevt(G?name);
???????if(k)??G->p[i].right[j]=G->vt[k];
???????????else??{?printf(“?Wrong!!!??%s?is?not?a?right?Vt.?\n“name);exit(0);}
????}
else?{???k=locatevn(Gname);
if?(k)?G->p[i].right[j]=G->vn[k];
else?{?printf(“?Wrong!!!??%s?is?not?a?right?Vn.?\n“name);exit(0);}
????????????}
??????}
???}
???printf(“input?start?symbol:“);
???scanf(“%s“name);
k=locatevn(Gname);
if?(k)??G->s=k;
else???{?printf(“?Wrong!!!??%s?is?not?a?right?Vn.?\n“name);exit(0);}
?}

?void?OutputG(gtype?*G)??/*輸出文法*/
?{??int?ij;
????printf(“G->Vn:\n“);
????for(i=1;i<=G->vnlen;i++)
????printf(“\t?%s\n“G->vn_names[i]);
getch();
????printf(“G->Vt:\n“);
????f

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

?????文件?????176202??2001-01-15?02:38??LL?(1)?parser\Debug\text3.exe

?????文件?????216552??2001-01-15?02:38??LL?(1)?parser\Debug\text3.ilk

?????文件??????18624??2001-01-15?02:38??LL?(1)?parser\Debug\text3.obj

?????文件?????213628??2001-01-15?01:14??LL?(1)?parser\Debug\text3.pch

?????文件?????476160??2001-01-15?02:38??LL?(1)?parser\Debug\text3.pdb

?????文件??????33792??2001-01-15?02:38??LL?(1)?parser\Debug\vc60.idb

?????文件??????53248??2001-01-15?02:38??LL?(1)?parser\Debug\vc60.pdb

?????文件???????8836??2001-01-15?02:17??LL?(1)?parser\g1.dat

?????文件??????12000??2001-01-15?02:26??LL?(1)?parser\LL1.dat

?????文件???????5715??2001-01-15?02:38??LL?(1)?parser\text3-1.txt

?????文件???????5717??2001-01-15?02:39??LL?(1)?parser\text3-2.txt

?????文件???????5717??2001-01-15?02:38??LL?(1)?parser\text3.cpp

?????文件???????3389??2001-01-15?01:14??LL?(1)?parser\text3.dsp

?????文件????????535??2001-01-15?02:39??LL?(1)?parser\text3.dsw

?????文件??????33792??2001-01-15?02:39??LL?(1)?parser\text3.ncb

?????文件??????48640??2001-01-15?02:39??LL?(1)?parser\text3.opt

?????文件???????1123??2001-01-15?02:38??LL?(1)?parser\text3.plg

?????目錄??????????0??2001-01-15?01:14??LL?(1)?parser\Debug

?????目錄??????????0??2001-01-15?01:13??LL?(1)?parser

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

??????????????1313670????????????????????19


評論

共有 條評論