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

資源簡介

1) 任意輸入一個文法G; 2) 判斷該文法是否為算符文法; 3) 對文法中的每個非終結符自動生成并打印輸出: ① FIRSTVT集; ② LASTVT集; 4)判斷該文法是否為算符優先文法, 如果是自動生成并打印輸出其算符優先矩陣; 5) 模擬分析過程。 如輸入一個句子,如果該句子合法則輸出與句子 對應的語法樹;能夠輸出分析過程中每一步符號 棧的變化情況以及根據當前最左素短語進行歸約 的過程。如果該句子非法則進行相應的報錯處理。

資源截圖

代碼片段和文件信息

#ifndef?HEAD
#define?HEAD
#include?“OurHead.h“
#endif
#define?STACK_SIZE 64

node_t?stack[STACK_SIZE];
int?top?=?0;

node_t*?reduce(int?start?int?end?int?size)?//規約,并構造相應語法結構
{
node_t?*new_vn?*childs[STACK_SIZE];
char?*tar?*g?t1?t2?left;
int?i?j?=0?gi?ti?cn?=?0;
BOOL?same;
tar?=?(char?*)malloc(sizeof(char)*MAX_BUFFER);
if(!tar)
{
printf(“Allocation?fails.\n“);
exit(-1);
}
for(i?=?start;?i?<=?end;?++i)//將此最左素短語的終結符存入tar字符串
if(!IS_VN(stack[i].stuff))
tar[j++]?=?stack[i].stuff;
tar[j++]?=?‘\0‘;
for(i?=?0;?i? {
g?=?grammar[i][1];
gi?=?0;
ti?=?0;
same?=?FALSE;
t1?=?g[gi];
t2?=?tar[ti];
while?(t1?!=?‘\0‘)
{
if(t2?==?‘\0‘?&&?!IS_VN(t1))
{
same?=?FALSE;
break;
}
if(!IS_VN(t1))
{
if(t1?!=?t2){
same?=?FALSE;
break;
}
t2?=?tar[++ti];
same?=?TRUE;
}
t1=?g[++gi];
}
if(same?&&?t2?==?‘\0‘)
break;
}
if(i?==?gra_num)
{
printf(“無法找到相應文法!\n“);
return?NULL;
}
left?=?grammar[i][0][0];
new_vn?=?(node_t?*)malloc(sizeof(node_t));
if(!new_vn)
{
printf(“Allocation?fails.\n“);
exit(-1);
}
new_vn->stuff?=?vn_list[get_vn(left)].c;
for(i?=?start;?i?<=?end;?++i)
{
childs[cn]?=?(node_t?*)malloc(sizeof(node_t));
if(!childs[cn])
{
printf(“Allocation?fails.\n“);
exit(-1);
}
*childs[cn++]?=?stack[i];
}
for(i?=?0;?i? {
childs[i]->next_sib?=?childs[i+1];
}
childs[i?-?1]->next_sib?=?NULL;
for(i?=?0;?i? if(!IS_VN(childs[i]->stuff))
childs[i]->fir_child?=?NULL;
new_vn->fir_child?=?childs[0];
new_vn->next_sib?=?NULL;
return?new_vn;
}

BOOL?analyze(char?*sentence)
{
char?r?c;
int?i?=?0?k?=?0?j?pi?printi?=?1?cou?=?1; //i是sentence[]和stack[]的索引
int?r_index?s_index?pre_index;
node_t?*new_vn;
printf(“\n\n規約過程如下表所示:\n“);
printf(“--------------------------------------\n“);
stack[top++].stuff?=?‘#‘;
printf(“序號\t符號棧\t最左素短語\t規約\t\n“);
do
{
r?=?sentence[i++];
if((r_index?=?get_oper(r))?==?-1)
{
printf(“Error?:?您輸入的字符不在文法定義中!\n“);
flushall();c?=?getchar();flushall();
return?FALSE;
}
if(!IS_VN(stack[k].stuff))
{
j?=?k;
s_index?=?get_oper(stack[j].stuff);
}
else
{
j?=?k?-?1;
s_index?=?get_oper(stack[j].stuff);
}
while(prior_table[s_index][r_index]?==?HIGHER)
{
do
{
pre_index?=?s_index;
if(!IS_VN(stack[j-1].stuff))
{
j--;
s_index?=?get_oper(stack[j].stuff);
}
else
{
j?-=?2;
s_index?=?get_oper(stack[j].stuff);
}
}while(prior_table[s_index][pre_index]?!=?LOWER);
printf(“??%d\t“?cou++);
for(pi?=?0;?pi? {
printf(“%c“stack[pi].stuff);
}
printf(“?\t“);
for(pi?=?j?+?1;?pi?<=?k;?++pi)
{
if?(pi?==?j+1)
printf(“???%c“stack[pi].stuff);
else
printf(“%c“stack[pi].stuff);
}
if((new_vn?=?reduce(

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

?????文件???????3718??2011-06-09?00:04??算符優先分析器\analyze.c

?????文件???????2200??2011-06-08?23:57??算符優先分析器\buff_deal.c

?????文件???????2352??2011-05-27?09:00??算符優先分析器\create_table.c

?????文件??????10217??2011-06-09?00:04??算符優先分析器\Debug\analyze.obj

?????文件???????5956??2011-06-08?23:59??算符優先分析器\Debug\buff_deal.obj

?????文件???????4965??2011-05-31?09:35??算符優先分析器\Debug\create_table.obj

?????文件???????4319??2011-06-09?00:04??算符優先分析器\Debug\display_fir_lastvt.obj

?????文件???????4200??2011-06-09?00:04??算符優先分析器\Debug\display_table.obj

?????文件???????3486??2011-05-31?09:35??算符優先分析器\Debug\display_tree.obj

?????文件???????5752??2011-06-09?00:01??算符優先分析器\Debug\get_FIRVT_LASTVT.obj

?????文件???????2828??2011-05-31?09:35??算符優先分析器\Debug\get_input.obj

?????文件???????2128??2011-05-31?09:35??算符優先分析器\Debug\init_table.obj

?????文件???????1350??2011-06-09?19:51??算符優先分析器\Debug\init_tree.obj

?????文件??????15809??2011-06-09?19:47??算符優先分析器\Debug\main.obj

?????文件??????66560??2011-06-09?19:51??算符優先分析器\Debug\vc60.idb

?????文件??????53248??2011-06-09?19:51??算符優先分析器\Debug\vc60.pdb

?????文件?????200784??2011-06-09?19:51??算符優先分析器\Debug\算符優先分析器.exe

?????文件?????217080??2011-06-09?19:51??算符優先分析器\Debug\算符優先分析器.ilk

?????文件?????157340??2011-06-09?19:51??算符優先分析器\Debug\算符優先分析器.pch

?????文件?????533504??2011-06-09?19:51??算符優先分析器\Debug\算符優先分析器.pdb

?????文件???????1125??2011-06-09?00:04??算符優先分析器\display_fir_lastvt.c

?????文件???????1081??2011-06-09?00:04??算符優先分析器\display_table.c

?????文件????????345??2011-05-31?09:34??算符優先分析器\display_tree.c

?????文件???????1919??2011-05-27?13:08??算符優先分析器\get_FIRVT_LASTVT.c

?????文件????????440??2011-05-25?00:08??算符優先分析器\get_input.c

?????文件????????206??2011-05-22?23:52??算符優先分析器\init_table.c

?????文件??????????0??2011-06-09?19:50??算符優先分析器\init_tree.c

?????文件???????4431??2011-06-09?19:47??算符優先分析器\main.c

?????文件???????3427??2011-05-31?09:23??算符優先分析器\OurHead.h

?????文件???????5095??2011-05-22?23:52??算符優先分析器\算符優先分析器.dsp

............此處省略10個文件信息

評論

共有 條評論