xxxx18一60岁hd中国/日韩女同互慰一区二区/西西人体扒开双腿无遮挡/日韩欧美黄色一级片 - 色护士精品影院www

資源簡介

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

資源截圖

代碼片段和文件信息

#include“status_stack.h“
#include“symbol_instr_stack.h“
#include“l(fā)r.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“);
}
//狀態(tài)轉(zhuǎn)換函數(shù)
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];
}
//移進--規(guī)約函數(shù)
void?action(status?*status_psymbol_instr?*symbol_psymbol_instr?*instr_p)
{
int?ijx;
char?a;
i?=?goto_char(status_pinstr_p);
//規(guī)約出錯
if(i?==?-1)
printf(“\n===============規(guī)約出錯!================\n“);
//規(guī)約成功
if(i?==?12)
printf(“\n===============規(guī)約成功!================\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);
}
//規(guī)約動作
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請輸入要規(guī)約的輸入串,各字符之間不能有空格,以‘#‘字符結(jié)束!\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狀態(tài)棧==============符號棧==============輸入串\n“);
print(status_psymbol_pinstr_p);//打印初始分析表
//移進,規(guī)約,并打印每一步分析過程
action(status_psymbol_pinstr_p);

return?0;
}

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

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

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

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

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

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

?????文件??????30720??2007-06-20?22:15??LR分析器?C?語言實現(xiàn)\編譯原理課程設(shè)計\任務(wù)書.doc

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

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

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

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

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


評論

共有 條評論