• 大小: 268KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-07-16
  • 语言: 其他
  • 标签: 编译原理  

资源简介

编译原理课程设计 编译原理 语法分析器编译原理 语法分析器编译原理 语法分析器编译原理 语法分析器编译原理 语法分析器编译原理 语法分析器编译原理 语法分析器

资源截图

代码片段和文件信息

#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  编译原理课程设计\26.cpp

     文件       3353  2010-06-17 15:44  编译原理课程设计\26.dsp

     文件      48640  2010-06-17 15:44  编译原理课程设计\26.opt

     文件        716  2010-06-17 15:44  编译原理课程设计\26.plg

     文件     184422  2010-06-17 15:44  编译原理课程设计\Debug\26.exe

     文件     192400  2010-06-17 15:44  编译原理课程设计\Debug\26.ilk

     文件      18907  2010-06-17 15:44  编译原理课程设计\Debug\26.obj

     文件     224972  2010-06-17 15:44  编译原理课程设计\Debug\26.pch

     文件     459776  2010-06-17 15:44  编译原理课程设计\Debug\26.pdb

     文件      41984  2010-06-17 15:44  编译原理课程设计\Debug\vc60.idb

     文件      53248  2010-06-17 15:44  编译原理课程设计\Debug\vc60.pdb

     文件        923  2007-06-10 19:39  编译原理课程设计\lr.h

     文件        883  2007-06-10 19:39  编译原理课程设计\status_stack.h

     文件       1118  2007-06-10 19:40  编译原理课程设计\symbol_instr_stack.h

     文件     262144  2007-06-03 10:39  编译原理课程设计\《编译原理》实验.doc

     文件     128375  2008-06-06 17:16  编译原理课程设计\我的报告.doc

     目录          0  2010-06-17 15:44  编译原理课程设计\Debug

     目录          0  2010-06-17 15:44  编译原理课程设计

----------- ---------  ---------- -----  ----

              1624113                    18


评论

共有 条评论