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

資源簡介

1.實驗目的 設計一個LR分析器,實現對表達式語言的分析,加深對LR語法分析方法的基本思想的理解,掌握LR分析器設計與實現的基本方法。 2.實驗要求 建立文法及其LR分析表表示的數據結構,設計并實現一個LALR(1)的分析器,對源程序經詞法分析后生成的二元式代碼流進行分析,如果輸入串是文法定義的句子則輸出“是”,否則輸出“否”。

資源截圖

代碼片段和文件信息

#include“status_stack.h“
#include“symbol_instr_stack.h“
#include“lr.h“
//打印LR分析器的工作過程
void?print(status?*status_psymbol_instr?*symbol_psymbol_instr?*instr_p)
{
int?i;
out_stack(status_p);
for(i=0;i<20-status_p->top;i++)
printf(“?“);
out_stack1(symbol_p);
for(i=0;i<20;i++)
printf(“?“);
out_stack2(instr_p);
printf(“\n“);
}
//狀態轉換函數
int?goto_char(status?*status_psymbol_instr?*instr_p)
{
char?x;
int??yz;
x?=?get_top(instr_p);
y?=?get_top(status_p);
z?=?get_index_char(x);
return?table[y][z];
}
//移進--規約函數
void?action(status?*status_psymbol_instr?*symbol_psymbol_instr?*instr_p)
{
int?ijx;
char?a;
i?=?goto_char(status_pinstr_p);
//規約出錯
if(i?==?-1)
printf(“\n===============規約出錯!================\n“);
//規約成功
if(i?==?12)
printf(“\n===============規約成功!================\n“);
//移進動作
if(i>=0?&&?i<=11)
{
push(status_pi);
a?=?pop(instr_p);
push(symbol_pa);
print(status_psymbol_pinstr_p);
action(status_psymbol_pinstr_p);
}
//規約動作
if(i>=21?&&?i<=26)
{
x?=?r[i-21].y;
for(j=0;j {
pop(status_p);
pop(symbol_p);
}
push(instr_pr[i-21].x);
action(status_psymbol_pinstr_p);

}
}

int?main()
{
char?x;
//分配空間
status?*status_p;
symbol_instr?*symbol_p*instr_p?;
status_p?=?(status?*)malloc(sizeof(status));
symbol_p?=?(symbol_instr?*)malloc(sizeof(symbol_instr));
instr_p?=?(symbol_instr?*)malloc(sizeof(symbol_instr));
//初始化各棧
init_stack(status_p);
init_stack(symbol_p);
init_stack(instr_p);
//壓進棧初始元素
push(status_p0);//
push(symbol_p‘#‘);//
//輸入表達式
printf(“\n請輸入要規約的輸入串,各字符之間不能有空格,以‘#‘字符結束!\n“);
printf(“===========expression?=“);
//先將輸入串壓進符號棧
do{

scanf(“%c“&x);
push(symbol_px);
}while(x?!=?‘#‘);
//然后由符號棧彈出,壓進輸入棧
while(?symbol_p->top?!=?0)
{
????x?=?pop(symbol_p);
push(instr_px);
}
printf(“\n\n“);
//打印框架
printf(“\n狀態棧==============符號棧==============輸入串\n“);
print(status_psymbol_pinstr_p);//打印初始分析表
//移進,規約,并打印每一步分析過程
action(status_psymbol_pinstr_p);

return?0;
}

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

?????文件???????2252??2007-06-20?08:05??LR分析器?C?語言實現\編譯原理課程設計\26.cpp

?????文件????????923??2007-06-10?19:39??LR分析器?C?語言實現\編譯原理課程設計\lr.h

?????文件????????883??2007-06-10?19:39??LR分析器?C?語言實現\編譯原理課程設計\status_stack.h

?????文件???????1118??2007-06-10?19:40??LR分析器?C?語言實現\編譯原理課程設計\symbol_instr_stack.h

?????文件?????262144??2007-06-03?10:39??LR分析器?C?語言實現\編譯原理課程設計\《編譯原理》實驗.doc

?????文件??????30720??2007-06-20?22:15??LR分析器?C?語言實現\編譯原理課程設計\任務書.doc

?????文件?????128375??2008-06-06?17:16??LR分析器?C?語言實現\編譯原理課程設計\我的報告.doc

?????目錄??????????0??2008-06-06?18:00??LR分析器?C?語言實現\編譯原理課程設計

?????目錄??????????0??2010-06-01?18:42??LR分析器?C?語言實現

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

???????????????426415????????????????????9


評論

共有 條評論