资源简介
编译原理课程实验(常州工学院),比较全的,编译原理试卷
代码片段和文件信息
#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个文件信息
- 上一篇:软件测试 测试计划书 很全很完整
- 下一篇:上传并显示图片
相关资源
- 信息论课件加试卷加考试习题加解答
- 编译原理教材清华大学版答案
- 编译原理_Tiny+语法分析
- 编译原理综合课程设计
- 广工概率论试卷
- 编译原理课后习题答案 清华大学 第二
- 中国科学技术大学组合数学期末考试
- 河北科技大学计算机组成原理试卷及
- 北邮计算机图形学课件附试卷
- 编译原理课件_本科版
- 广东工业大学数据库系统概论试卷期
- 工程矩阵试卷-东南大学
- 武汉大学本科数据库PPT以及试卷
- 题库系统与试卷生成
- 川大编译原理PPT-2017
- 广东工业大学数字图像处理历年试卷
- LaTeX数学试卷排版指南
- 编译原理课程设计
- 计算机组成原理本科生期末试卷库(
- 编译原理-Oberon-0逆向工程工具ROSE.ra
- 西安电子科技大学计算机学院数据结
- 上海大学计算机编译原理PPT
- 安徽大学数据库期末试卷.zip
- 郑州轻工业大学往年概率论试卷.zip
- 华科现代计算机网络2017试卷及答案
- 信号与系统-安大最新试卷
- 编译原理期末考试题
- 编译原理四元式生成
- 试卷图像的理解与自动分割系统
- 杭州电子科技大学操作系统期末试卷
评论
共有 条评论