资源简介
从new.txt文件中读入写好的由正规表达式(a|b)*(aa|bb)(a|b)*所转化的正规文法(右线性),自动构造项目集族,生成LR分析表,并对输入的字符串通过LR分析表进行分析,输出分析过程,指出错误

代码片段和文件信息
#include
#include
#include
#include
#include “ll1analysis.h“
#include “Main.h“
struct cstack fhz;
char row[4] = {‘S‘‘A‘‘B‘‘F‘};
char col[3] = {‘a‘‘b‘‘#‘};
char ll_wenfa[9][20]={“S->aA““S->bB““A->aF““A->bB““B->aA““B->bF““F->aF““F->bF““F->“};
int ana_table[4][3]={
{01-1}
{23-1}
{45-1}
{678}
};
void print_ll_stack()
{
int i=0;
for(i=0;i {
printf(“%c“fhz.data[i]);
}
printf(“\t“);
}
void init_stack()
{
fhz.top=0;
}
bool pop_c_stack()
{
if(fhz.top<0) return false;
else
{
fhz.top--;
return true;
}
}
bool push_c_stack(char c)
{
if(fhz.top>=50)
return false;
else
{
fhz.data[fhz.top]=c;
fhz.top++;
return true;
}
}
char get_stack_top()
{
return fhz.data[fhz.top-1];
}
void print_ll_table()
{
for(int i=0;i<4;i++)
{
for(int j=0;j<3;j++)
{
if(ana_table[i][j]>=0)
printf(“%s\t“ll_wenfa[ana_table[i][j]]);
else
printf(“error\t“);
}
printf(“\n“);
}
}
void ll1()
{
char str[50];
char st;
int int_sint_tint_wwlength;
init_stack();
print_ll_table();
printf(“输入一个字符串:“);
scanf(“%s“str);
getchar();
int str_count = (int)strlen(str);
str[str_count]=‘#‘;
str_count++;
str[str_count]=‘\0‘;
push_c_stack(‘#‘);
push_c_stack(‘S‘);
for(int i=0;i {
print_ll_stack();
printf(“%s\t“&str[i]);
t=str[i];
s=get_stack_top();
pop_c_stack();
if(s==‘#‘&&t==‘#‘)
{
printf(“succeed“);
}
else
{
if(s>=‘A‘&&s<=‘Z‘)
{
for(int_s=0;int_s<4;int_s++)
{
if(s==row[int_s])
break;
}
for(int_t=0;int_t<3;int_t++)
{
if(t==col[int_t])
break;
}
if(ana_table[int_s][int_t]>=0)
{
int_w = ana_table[int_s][int_t];
printf(“%s“ll_wenfa[int_w]);
wlength = (int)strlen(ll_wenfa[int_w]);
wlength--;
for(;ll_wenfa[int_w][wlength]!=‘>‘;wlength--)
{
push_c_stack(ll_wenfa[int_w][wlength]);
}
i--;
}
else
{
printf(“error\t“);
}
}
else
{
if(s==t)
{
printf(“\t\n“);
continue;
}
else
{
printf(“error\t“);
push_c_stack(s);
}
}
}
printf(“\n“);
}
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2018-11-10 20:49 byylks\
目录 0 2018-11-06 10:00 byylks\.vs\
目录 0 2018-11-06 10:00 byylks\.vs\byylks\
目录 0 2018-11-06 10:01 byylks\.vs\byylks\v15\
文件 5120 2018-11-06 10:01 byylks\.vs\byylks\v15\.suo
文件 1839104 2018-11-06 10:01 byylks\.vs\byylks\v15\Browse.VC.db
目录 0 2018-11-06 10:00 byylks\.vs\byylks\v15\ipch\
目录 0 2018-11-06 10:00 byylks\.vs\byylks\v15\ipch\AutoPCH\
目录 0 2018-11-06 10:01 byylks\.vs\byylks\v15\ipch\AutoPCH\6688b59fc27e555\
文件 2818048 2018-11-06 10:01 byylks\.vs\byylks\v15\ipch\AutoPCH\6688b59fc27e555\MAIN.ipch
目录 0 2018-11-06 10:00 byylks\Backup\
文件 4727 2018-11-07 20:56 byylks\byylks.dsp
文件 535 2018-11-07 15:16 byylks\byylks.dsw
文件 66560 2018-11-10 20:49 byylks\byylks.ncb
文件 51712 2018-11-10 20:49 byylks\byylks.opt
文件 1407 2018-11-10 20:49 byylks\byylks.plg
文件 6454 2018-11-06 10:00 byylks\byylks.vcxproj
文件 1309 2018-11-06 10:00 byylks\byylks.vcxproj.filters
文件 165 2018-11-06 10:00 byylks\byylks.vcxproj.user
目录 0 2018-11-10 20:49 byylks\Debug\
文件 225329 2018-11-10 20:49 byylks\Debug\byylks.exe
文件 296568 2018-11-10 20:49 byylks\Debug\byylks.ilk
文件 344 2018-11-06 10:00 byylks\Debug\byylks.log
文件 3572840 2018-11-10 20:49 byylks\Debug\byylks.pch
文件 582656 2018-11-10 20:49 byylks\Debug\byylks.pdb
文件 17900 2018-11-07 21:56 byylks\Debug\ll1analysis.obj
文件 48230 2018-11-10 20:49 byylks\Debug\LRanalysis.obj
文件 15082 2018-11-10 20:49 byylks\Debug\Main.obj
文件 20730 2018-11-09 14:16 byylks\Debug\syfbyyl.obj
文件 156672 2018-11-10 20:49 byylks\Debug\vc60.idb
文件 86016 2018-11-10 20:49 byylks\Debug\vc60.pdb
............此处省略12个文件信息
相关资源
- 编译原理实验工具及参考源码(lex&
- 类pascal语言编译器(编译原理实验)
- 编译原理课程设计:词法语法编译器
- 中科院 编译原理 习题及解答
- 编译原理四元式和逆波兰式
- 《编译原理》清华大学版中的pl0扩充
- PL/0功能扩充break功能
- 编译原理LR(0)语法分析
- 编译原理中间代码生成程序
- 编译原理:LR分析程序
- 编译原理实验:词法分析,语法分析
- 吉林大学编译原理课件
- 编译原理龙书答案
- 编译原理 第三章课后习题答案
- 易语言变量和数组的编译原理
- 编译原理语法分析器、词法分析器
- 山东大学编译原理PL/0语言 compiler实验
- FOR循环语句的翻译程序设计简单优先
- NFA的确定化NFA->DFA完整可运行代码
- 哈工大威海编译原理实验报告和源代
- 哈工大威海-编译原理实验报告和源码
- 编译原理课设c编译器
- 赋值语句翻译四元式
- 河北工业大学编译原理实验代码及实
- 编译原理课程设计 while do循环语句翻
- 编译原理课程设计do——while简单优先
- 南开大学编译原理课件及作业
- 华工往年编译原理试卷
- 编译原理课程设计for循环LR法三元式
- 哈工程-编译原理课程设计(2016级)
评论
共有 条评论