资源简介
编译原理课程实验(常州工学院),比较全的,编译原理试卷
代码片段和文件信息
#include
#include “LL1.H“
#include “stack.h“
/*求first集*/
void GetFirstSet();
/*求所有生成式的first集*/
void GetExpFirstSet();
/*求某一表达式的部分文法符号串的first集*/
void getPartexpFirstSet(int*expSet & head);
/*求Follow集*/
void GetFollowSet();
/*初始化预测表*/
void InitiPreTable();
/*读取token*/
int GetToken();
/*查找符号表,判断表项是否为-1,若不是返回1,若是返回0*/
int Match(int vvint tt);
/*错误信息提示*/
void error();
/*将vvtt所对应的表达式压入栈*/
void PushStr(linkStack*sint vvint tt);
/*打印产生式*/
void PrintStr(int vv int tt);
/*语法分析器主程序*/
void ParseLl1();
/*将宏转化成字符串*/
char* ConvertNumToString(int num);
void main()
{
GetFirstSet();
GetExpFirstSet();
GetFollowSet();
InitiPreTable();
ParseLl1();
};
/*判断num是否在集head中,若存在返回1,若不存在返回0*/
int IsNumIn(Set*headint num)
{
int num_in_value=0;
Set* ptr=head->next;
// if(ptr==NULL&&num==EPS)
// {
// num_in_value=1;
// }
while (ptr!=NULL)
{
if(ptr->TerValue==num)
{
num_in_value=1;
}
ptr=ptr->next;
}
return num_in_value;
}
/*将souce中的元素无重复的加入dest中,第三个参数表示是否加入eps*/
int add(Set*destSet*sourcebool is_eps_in)
{
Set*ptr1;
Set*ptr2=source->next;
/*标识是否有新元素加入,0表示没有新元素加入*/
int is_added_value=0;
/*要求source中如果有eps,不加入dest中*/
if (is_eps_in==false)
{
while (ptr2!=NULL)
{
/*如果ptr2中无EpS,并且该值不在dest中,则将其元素加入dest*/
if (ptr2->TerValue!=EPS&& !IsNumIn(destptr2->TerValue))
{
ptr1=new Set;
ptr1->next=dest->next;
dest->next=ptr1;
ptr1->TerValue=ptr2->TerValue;
is_added_value=1;
}
ptr2=ptr2->next;
}//end of while
}//end of if
else
{
while (ptr2!=NULL)
{
/*该值不在dest中,则将其元素加入dest*/
if (!IsNumIn(destptr2->TerValue))
{
ptr1=new Set;
ptr1->next=dest->next;
dest->next=ptr1;
ptr1->TerValue=ptr2->TerValue;
is_added_value=1;
}
ptr2=ptr2->next;
}//end of while
}//end of if
return is_added_value;
}
int add(Set*destint value)
{
Set*ptr1;
int is_added_value=0;
if (!IsNumIn(destvalue))
{
ptr1=new Set;
ptr1->next=dest->next;
dest->next=ptr1;
ptr1->TerValue=value;
is_added_value=1;
}
return is_added_value;
}
void GetFirstSet()
{
//初始化非终结符和eps的first集
for (int t=TER_START;t {
FirstSet[t].next=new Set;
FirstSet[t].next->next=NULL;
FirstSet[t].next->TerValue=t;
}
//初始化非终结符的first集??此处可考虑将A->eps加入即可
for(int j=0;j {
Set*ptr=&FirstSet[j];
for (int k=0;k if (express[k][0]==j&&express[k][1]>=TER_START)
{
ptr->next=new Set;
ptr->next->next=NULL;
ptr->next->TerValue=express[k][1];
ptr=ptr->next;
}
}
//递归求非终结符的first集
int change_flag=1;/*设置标志位,1表示first集有变动,0表示first集无变动*/
while (change_flag==1)
{
change_flag=0;
for (int i=0;i {
int k=1;
bool keep_on=true;
int destination=express[i][0]; /*非终结符*/
while (keep_on &&express[i][k]!=-1)
{
int source=express[i][k];
int if_added=add(&Fir
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2013-03-27 14:35 报告-编译原理\
目录 0 2013-02-19 13:18 报告-编译原理\LL1Final\
目录 0 2013-02-19 13:18 报告-编译原理\LL1Final\Debug\
文件 204898 2008-04-18 17:27 报告-编译原理\LL1Final\Debug\LL1Final.exe
文件 331124 2008-04-18 17:27 报告-编译原理\LL1Final\Debug\LL1Final.ilk
文件 36312 2008-04-18 17:26 报告-编译原理\LL1Final\Debug\LL1Final.obj
文件 223980 2008-04-18 17:06 报告-编译原理\LL1Final\Debug\LL1Final.pch
文件 517120 2008-04-18 17:27 报告-编译原理\LL1Final\Debug\LL1Final.pdb
文件 172125 2008-04-16 22:26 报告-编译原理\LL1Final\Debug\stack.exe
文件 173268 2008-04-16 22:26 报告-编译原理\LL1Final\Debug\stack.ilk
文件 5211 2008-04-17 22:52 报告-编译原理\LL1Final\Debug\stack.obj
文件 222652 2008-04-16 22:26 报告-编译原理\LL1Final\Debug\stack.pch
文件 345088 2008-04-16 22:26 报告-编译原理\LL1Final\Debug\stack.pdb
文件 50176 2008-04-18 17:27 报告-编译原理\LL1Final\Debug\vc60.idb
文件 53248 2008-04-18 17:26 报告-编译原理\LL1Final\Debug\vc60.pdb
文件 3145 2008-04-18 17:06 报告-编译原理\LL1Final\LL1.H
文件 10697 2008-04-18 17:26 报告-编译原理\LL1Final\LL1Final.cpp
文件 3605 2008-04-17 22:52 报告-编译原理\LL1Final\LL1Final.dsp
文件 541 2008-04-16 21:28 报告-编译原理\LL1Final\LL1Final.dsw
文件 66560 2008-04-18 17:27 报告-编译原理\LL1Final\LL1Final.ncb
文件 54784 2008-04-18 17:27 报告-编译原理\LL1Final\LL1Final.opt
文件 777 2008-04-18 17:27 报告-编译原理\LL1Final\LL1Final.plg
文件 320 2008-04-16 18:19 报告-编译原理\LL1Final\LL1文法二.txt
文件 480 2008-04-16 18:21 报告-编译原理\LL1Final\LL1文法另1.txt
文件 594 2008-04-16 18:16 报告-编译原理\LL1Final\ll1文法改进.txt
文件 107 2008-04-18 17:27 报告-编译原理\LL1Final\output.txt
文件 784 2008-03-28 23:43 报告-编译原理\LL1Final\stack.cpp
文件 571 2008-04-17 22:51 报告-编译原理\LL1Final\stack.h
文件 55 2008-04-18 16:51 报告-编译原理\LL1Final\tokens.txt
文件 480 2008-04-16 18:21 报告-编译原理\LL1Final\复件 LL1文法另1改进.txt
目录 0 2013-02-19 13:18 报告-编译原理\LL1Final高级\
............此处省略167个文件信息
- 上一篇:软件测试 测试计划书 很全很完整
- 下一篇:上传并显示图片
相关资源
- 编译原理实验工具及参考源码(lex&
- 类pascal语言编译器(编译原理实验)
- 福建师范大学历年算法考卷
- 编译原理课程设计:词法语法编译器
- 中科院 编译原理 习题及解答
- 编译原理四元式和逆波兰式
- 信息系统分析与设计试卷及答案
- 《编译原理》清华大学版中的pl0扩充
- PL/0功能扩充break功能
- 编译原理LR(0)语法分析
- 编译原理中间代码生成程序
- 编译原理:LR分析程序
- 数据结构考研试题历届试卷(附答案
- 编译原理实验:词法分析,语法分析
- 吉林大学编译原理课件
- 武汉科技大学自动控制原理试卷A卷
- 编译原理龙书答案
- 编译原理 第三章课后习题答案
- 历年考研408真题试卷 2009-2019年 高清
- 易语言变量和数组的编译原理
- 编译原理语法分析器、词法分析器
- 山东大学编译原理PL/0语言 compiler实验
- 软件测试试题卷
- 广工多媒体技术基础试卷
- 华南理工大学人工智能期末考试卷
- 操作系统期末试卷与答案
- 随机信号处理试卷有答案.doc
- FOR循环语句的翻译程序设计简单优先
- 北京交通大学-数字图像处理试卷+ 答
- 数字图像处理 王伟强 国科大 期末试
评论
共有 条评论