《编译原理》实验指导书-最终版

合集下载

编译原理实验指导书

编译原理实验指导书

编译原理实验指导书《编译原理》实验指导书太原科技大学计算机学院 -3-1序《编译原理》是国内外各高等院校计算机科学技术类专业,特别是计算机软件专业的一门重要专业课程。

该课程系统地向学生介绍编译程序的结构、工作流程及编译程序各组成部分的设计原理和实现技术。

由于该课程理论性和实践性都比较强,内容较为抽象复杂,涉及到大量的软件设计和算法,因此,一直是一门比较难学的课程。

为了使学生更好地理解和掌握编译原理和技术的基本概念、基本原理和实现方法,实践环节非常重要,只有经过上机进行程序设计,才能使学生对比较抽象的教学内容产生具体的感性认识,增强学生综合分析问题、解决问题的能力,并对提高学生软件设计水平大有益处。

为了配合《编译原理》课程的教学,考虑到本课程的内容和特点,本指导书设置了七个综合性实验,分别侧重于词法分析、NFA的确定化、非递归预测分析、算符优先分析器的构造、LR分析、语义分析和中间代码的生成、基于DAG的基本块优化,以支持编译程序的各个阶段,基本涵盖了《编译原理》课程的主要内容。

本指导书可作为《编译原理》课程的实验或课程设计内容,在课程教学的同时,安排学生进行相关的实验。

实验平台可选择在MS-DOS或Windows操作系统环境,使用C/C++的任何版本作为开发工具。

学生在做完试验后,应认真撰写实验报告,内容应包括实验名称、实验目的、实验要求、实验内容、测试或运行结果等。

目录实验一词法分析 ........................................................... 错误!未定义书签。

实验二 NFA的确定化.................................................... 错误!未定义书签。

实验三非递归预测分析 ............................................... 错误!未定义书签。

编译原理实验指导书

编译原理实验指导书

陕西理工学院数学与计算机科学学院《编译原理》实验指导班级网络10级指导教师曹阳计算机工程教研室2012年8月25日编译原理实验指导书一、实验的目的《编译原理》是针对计算机专业的学生开设的一门专业基础课程,对引导学生进行科学思维和提高学生解决实际问题的能力有重要的作用。

开设“编译原理实验”的主要目的是让学生加深理解编译原理的基本理论、方法、词法分析、语法分析、中间代码的生成直到最后的代码生成,了解编译器原理,从而提高学生分析问、题解决问题的能力。

通过实验实现以下基本目标:1.深化已学的知识,完成从理论到实践的转化通过实验,进一步加深对编译原理基本思想、原理的了解。

2. 提高分析和解决实际问题的能力实验不仅是编译原理的一次模拟训练,同时通过实验,积累经验,提高分析和解决问题的能力。

3.培养“开拓创新”能力大力提倡和鼓励在程序中使用新方法,新技术。

激发学生实践的积极性与创造性,开拓思路,设计新算法,进行新创意,培养创造性能力。

二、参加实验的学生应具备的条件参加实验的学生应当具备计算机程序设计的一些基础的知识。

即学生应当熟练掌握和使用一种计算机操作系统(windows操作系统等)、一种程序设计语言(vb、vc、c、delphi等)。

三、实验要求实验的要求体现于整个工作的各个阶段中,可根据所选课题的特点而有所侧重,但应达到如下的基本要求:(1) 根据课题任务制定合理、可行的工作计划任务;(2) 制定适当的技术方案;(3) 学生在老师的指导下独立完成设计过程;(4) 撰写实验报告(包括实验内容中各个阶段所要求的文字材料);(5) 通过实验检查评定;四、实验项目与内容提要五、实验课程考核办法1、该实验课程考核成绩按百分制计算,满分为100分,60分为及格,60分以上者可获取该学分。

2、该实验课考核由三部分组成:实验课前预习(20%),实验操作(60%),实验报告(20%)。

3、各部分成绩由实验指导教师在每个实验项目完成后分别给出,在学期结束后或完成全部实验项目后综合给出该门实验课的成绩。

编译原理实验指导书

编译原理实验指导书

《编译原理》实验指导书别小川于枫编写适用专业:计算机科学与应用江苏科技大学电子信息学院2005年2月前言《编译原理》是计算机专业的一门核心课程,在计算机本科教学中占有十分重要的地位。

由于《编译原理》课程兼有很强的理论性和实践性,并且编译程序构造的算法比较复杂,因而让学生在学习时普遍感到内容抽象、不易理解,难易掌握。

但是掌握编译原理的基本理论和设计思想是非常重要的,尤其是将本课程的理论知识与计算机应用中的许多领域紧密联系与广泛应用结合。

将有利于学生提高专业素质和适应社会多方面需要的能力。

因此,通过理论授课和上机实践,使学生对编译的基本概念、原理和方法有完整的和清楚的理解,并能正确地、熟练地加以运用。

通过实验逐步提高学生的编程能力和调试程序的能力以及解决实际问题的能力。

使学生培养出扎实的软件开发基本技能,并养成良好的编程风格,为进一步学习后续课程和将来从事应用软件开发奠定良好的基础。

实验课时具体内容安排如下:一、实验课的性质和目的(1)深刻理解程序语言编译系统的结构及各部分的功能。

(2)熟练掌握设计和构造程序语言编译系统的基本原理和技术。

(3)能独立编写清晰、工整、结论正确的编译原理的源程序。

(4)能学会上机进行正确调试,并进行程序修改。

即培养发现程序错误,排除错误的能力和经验。

二、实验课的基本要求:(1)掌握编译程序的功能和结构。

(2)掌握词法分析器的设计方法与实现步骤加深对讲授内容的理解,尤其是一些语法给定,通过上机实验帮助掌握。

(3)掌握语法分析器的设计方法与实现步骤。

(4)掌握符号表和存储空间的组织。

(5)掌握代码优化的作用与实现方法(6)掌握错误的诊断和校正方法。

三、主要实验教学方法实验前,由任课教师落实实验任务,每个学生必须事先独立完成好程序的设计的源程序编写工作。

实验课上对疑难点作集中辅导。

实验过程中随时针对不同的情况作个别启发式辅导。

实验后,学生撰写并提交实验报告。

最后,由实验教师根据每个学生的编程、上机调试能力、编程能力和实验结果及实验报告综合评定学生的实验成绩。

刘军_编译原理实验指导书_09软件1-2班

刘军_编译原理实验指导书_09软件1-2班

《编译原理》课程实验指导书一、使用说明《编译原理》课程实验指导书(以下简称:指导书)是针对计算机学院所开设的对应课程的上机实验而编写的教学文件,供学生上机实验时使用。

上机的工作环境要求:Windows 2000或以上操作系统、C++ 6.0或者其它高级程序设计语言。

学生应按指导教师的要求独立完成实验,并按要求撰写实验报告。

每一个实验,编程上机调试并且提交电子文档实验报告,以学号姓名作为文件名上传。

报告内容至少包含如下内容:1、学生基本情况:专业班级、学号、姓名2、实验题目、实验内容3、设计分析4、源程序代码5、测试用例(尽量覆盖所有分支)6、实验总结二、实验说明1、实验一:词法分析器设计实验类别:基础性实验实验学时:4分组人数:1人/组1、实验目的:(1)掌握词法分析器的构造过程以及基本方法。

(2)理解正规式、NFA、DFA及最小化DFA的转换过程和方法。

2、实验内容给定一个正规式R=XY*|YX*Y|XYX,请先在练习本上将此正规式转变为NFA、DFA、最小化DFA;对你所完成的最小化DFA进行编程,完成词法分析器工作。

2、实验二:算术表达式递归下降分析程序设计实验类别:设计性实验实验学时:4分组人数:1人/组1、实验目的:(1)掌握自上而下语法分析的要求与特点。

(2)掌握递归下降语法分析的基本原理和方法。

(3)掌握相应数据结构的设计方法。

2、实验内容:编程实现给定算术表达式的递归下降分析器。

算术表达式文法如下:E→E+T | TT→T*F | FF→(E) | i3、设计说明:首先改写文法为LL(1)文法;然后为每一个非终结符,构造相应的递归过程,过程的名字表示规则左部的非终结符;过程体按规则右部符号串的顺序编写。

编写者签字:刘军审阅者签字:张俊分管实验教学领导签字:王海晖。

编译原理实验指导书

编译原理实验指导书

编译原理实验指导书第1节概述1、本课程实践的目的和任务编译原理是一门实践性很强的课程,只有通过实践,才能真正掌握。

实际的编译程序是十分复杂的,有时由多达十几万条指令组成。

为此,编译原理的实践教学,采用简化编译过程的办法,选择最关键的3个环节──词法分析、语法分析(包括语义处理、产生无优化的目标指令)、连接调试,进行编程和调试训练。

每个环节作为一个实践课题。

2、实践方法任何一个实用的高级语言,其语法都比较复杂,如选其作为源语言,很难实践全过程。

故本实践将定义一个简化的语言──PASCAL语言的一个子集作为源语言,也可以自行定义一个简单的C语言子集,在3个题目中选择两个题目,也可以自行选择与编译技术相关的实验题目,设计调试出它的编译程序。

前后贯穿这一条主线进行实践。

每次都可利用课余时间编程,利用上机时间进行输入和调试。

建议使用C或C++或JAVA语言。

3、实践报告的规范和要求每个课题完成后写出实践报告。

实践报告包括程序设计时考虑的算法和方法;调试过程中出现的问题和解决的措施;提交电子版的程序清单和调试时所用的源程序。

4、简化的PASCAL语言子集的定义〈PASCAL子集程序〉→〈变量说明〉〈分程序〉。

〈变量说明〉→〈空〉|VAR〈变量表〉:INTEGER;〈变量表〉→〈变量〉|〈变量〉,〈变量表〉〈变量〉→〈标识符〉〈分程序〉→BEGIN〈语句组〉END〈语句组〉→〈语句〉|〈语句〉;〈语句组〉〈语句〉→〈赋值语句〉|〈条件语句〉|〈WHILE语句〉|〈分程序〉〈赋值语句〉→〈变量〉:=〈算术表达式〉〈条件语句〉→IF〈布尔表达式〉THEN〈语句〉ELSE〈语句〉〈WHILE语句〉→WHILE〈布尔表达式〉DO〈语句〉〈算术表达式〉→〈项〉|〈算术表达式〉+〈项〉|〈算术表达式〉-〈项〉〈项〉→〈初等量〉|〈项〉*〈初等量〉|〈项〉/〈初等量〉〈初等量〉→〈无符号数〉|〈变量〉|(〈算术表达式〉)〈关系表达式〉→〈算术表达式〉〈关系运算符〉〈算术表达式〉〈标识符〉→〈字母〉|〈标识符〉〈字母〉|〈标识符〉〈数字〉〈无符号数〉→〈数字〉|〈无符号数〉〈数字〉〈关系运算符〉→〈|〈=| =| 〉=| 〉|〈〉〈字母〉→ A│B│C│D│E│F│G│H│I│J│K│L│M│N│O│P│Q│R│S│T││U│V│W│X│Y│Z〈数字〉→ 1│2│3│4│5│6│7│8│9│0第2节词法分析本节进行词法分析程序的编程与调试。

《编译原理》实验指导书

《编译原理》实验指导书

《编译原理》实验指导书目录编译原理一共开设了三个实验,它们是:1.词法分析程序,占2个学时2.语法分析程序,占2个学时3.扩充的PL/0分析程序(综合实验),占6个学时。

实验报告格式1.姓名班级学号2.实验名称3.实验目的4.实验要求5.实验内容(这个是实验报告的主要部分)6.实验总结(实验心得)7. 实验报告人报告时间实验一 PL/O语言的词法分析程序GETSYM过程GETSYM的说明:由于一个单词往往是由一个或几个字符组成,所以在词法分析过程GETSYM中又定义一个取字符过程GETCH,由词法分析需要取字符时调用。

实验目的:1.为了更好的配合《编译原理》有关词法分析章节的教学2.加深和巩固学生对于词法分析的了解和掌握3.让学生初步的认识PL/0语言的基础和简单的程序编写4.学生通过本实验能够初步的了解和掌握程序词法分析的整个过程5.提高学生的上机和编程过程中处理具体问题的能力实验要求:1.做本实验之前要先阅读完总体的预备知识以及本实验相关的基础知识2.实验要求自己独立的完成,不允许抄袭别人的实验结果3.编写和调试过程中出现的问题最好做一下记录4.实验程序调试完成后,用给定的PL0测试程序(test.pl0)进行测试,由老师检查测试结果,并给予相应的成绩5.实验完成后,要上交实验报告。

实验内容:1.阅读所给出的词法分析程序(pl0_lexical.c),搞懂程序中每一个变量的含义,以及每一个过程的作用,并在该过程中进行中文注释。

2.阅读完程序后,画出各过程的流程图。

3.给出的程序包含两处输入错误,利用所给的pl/0源程序(test.pl0)对程序进行调试,使其能正确对所给文件进行分析并能够解释运行。

4.在阅读懂所给出的词法分析程序后,将你对词法分析的理解写在实验报告上。

实验环境:1.操作系统为Windows 2000或Dos6.2以上2.应用软件为Pascal或C语言GETCH 所用单元说明:CH :存放当前读取的字符,初值为空,LINE:为一维数组,其数组元素是字符;界对为1:80。

《编译原理》实验指导书(程细柱)

《编译原理》实验指导书(程细柱)

前言“编译原理”课程是计算机本科专业的必选课程,上机实验是该课程的重要环节,应开实验数约为12学时。

一个编译程序把源程序翻译成等价的目标程序,一般应做词法分析、语法分析、语义分析、代码生成和代码优化等五个方面的工作,为了使学生对其有较深的理解,必须根据这五个方面设计实验。

本指导书正是根据课程的内容,将实验分为前期准备阶段、基本操作阶段和技术提高阶段三个阶段进行:①前期准备阶段的实验主要是为后续实验做好准备,应围绕编译原理课程进行设计,如:学生可根据教科书的内容,设计一个源程序的输入和扫描程序,并完成相应的设计报告;②基本操作阶段的实验是围绕着编译原理的五个方面的工作来进行,其内容主要是词法分析、语法分析、语义分析、代码生成和代码优化等,如:简单的词法分析程序、LL(1) 分析法算法、语义分析程序、中间代码和目标代码生成算法的实验,这些实验基本上包括了以上知识要点,学生可结合书本上有关的知识来完成;③技术提高阶段的实验是综合性课程设计实验,根据编译原理编制应用程序,不仅要求把书本上的内容掌握好,同时还需要自学一些相关的知识。

1目录第1章实验的一般知识 (3)1—1 软件实验室规则及安全守则 (3)1-2 实验条件 (3)1—3 实验的基本要求 (3)第2章实验技术及原理 (3)第3章实验项目 (4)实验一:源程序的输入和扫描(2学时) (4)实验二:词法分析算法(2学时) (6)实验三:LL(1) 分析算法(2学时) (8)实验四:语义分析算法(2学时) (11)实验五:中间代码生成算法(2学时) (14)实验六:目标代码生成算法(4学时) (14)实验七:“编译原理”课程设计(8学时) (14)附录:实验报告示例:有限自动机的运行实验 (16)参考文献:《编译原理》吕映芝、张素琴、蒋维杜等主编清华大学出版社《编译原理与实现》..金成植编高教出版社《编译程序设计原理》..杜淑敏王永宁编北大出版社2第1章实验的一般知识1—1 软件实验室规则及安全守则见《软件实验室规则及安全守则》)。

编译原理实验指导书(-).docx

编译原理实验指导书(-).docx

编译原理实验指导书合肥学院计算编译原理实验指导书实验一词法分析一、实验目的:通过设计编制调试一个具体的词法分析程序,加深对词法分析原理的理解。

并掌握在对程序设计语言源程序进行扫描过程屮将其分解为各类单词的词法分析方法。

编制一个读单词过程,从输入的源程序中,识別出各个具有独立意义的单词, 即基木保留字、标识符、常数、运算符、分隔符五大类。

并依次输出各个单词的内部编码及单词符号自身值。

(遇到错误时可显示“Error”,然后跳过错误部分继续显示)二、实验预习提示1、词法分析器的功能和输出格式词法分析器的功能是输入源程序,输出单词符号。

词法分析器的单词符号常常农示成以下的二元式(单词种别码,单词符号的属性值)。

本实验中,采用的是一类符号一种别码的方式。

2、单词的BNF表示<标识符> -V字母〉v字母数字串〉V字母数字串一V字母〉V字母数字串>|v数字〉V字母数字串〉Iv下划线>v字母数字串I e<无符号整数一V数字〉v数字串〉V数字串〉一V数字〉V数字串〉v加法运算符>-+<减法运算符〉->・V大于关系运算符>->>V大于等于关系运算符>-> =3、“超前搜索”方法词法分析时,常常会用到超前搜索方法。

如当前待分析字符串为“”,当前字符为此时,分析器倒底是将其分析为犬于关系运算符还是犬于等于关系运算符呢?显然,只有知道下一个字符是什么才能下结论。

超前读了一个字符所以要回退一个字符,词法分析器才能正常运行。

在分析标识符,无符号整数等时也有类似情况。

4、模块结构Y饗冲区扫播一个辛閒N ▼三、实验过程和指导:(-)准备:1・阅读课木有关章节,明确语言的语法,写出基木保留字、标识符、常'数、运算符、分隔符和程序例。

2 .初步编制好程序。

3•准备好多组测试数据。

(二)上课上机: 将源代码拷贝到机上调试,发现错误,再修改完善。

第二次上机调试通过。

(三)程序要求:程序输入/输出示例:如源程序为C语言。

输入如卜•一段:main(){int a,b;a = 1 0;b = a 4- 20;}要求输出如下图。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

编译方法实验指导书柴本成赵晨编写浙江万里学院目录实验一有限自动机的构造与实现................................. 错误!未定义书签。

实验二词法分析器的设计..................................... 错误!未定义书签。

实验三语法分析-递归下降分析器............................. 错误!未定义书签。

实验四 LL(1)文法预测分析表的实现.............................. 错误!未定义书签。

附录......................................................... 错误!未定义书签。

附录一实验结果的提交与检查.............................. 错误!未定义书签。

附录二实验报告参考格式.................................. 错误!未定义书签。

附录三 Visual C++上机环境简介............................ 错误!未定义书签。

附录四参考程序.......................................... 错误!未定义书签。

实验一 有限自动机的构造与实现一、实验目的1、 正确理解正规式和正规集以及有限自动机的定义;2、 熟练掌握用状态转换图表示有限自动机的方法。

二、实验预习提示1、 正规表达式就是一种形式化的表示法,它可以表示单词符号的结构,从而精确地定义单词符号集。

正规表达式简称为正规式,它表示的集合即为正规集。

2、 状态转换图是一张当输入不同内容时选择不同分析路径的有向图。

一个状态转换图可用于识别一定的字符串。

3、 有限自动机(FA )是更一般化的状态转换图,可用来识别正规集;分为DFA 和NFA两种。

三、实验内容构造识别如下字符串的状态转换图,并将其编程实现。

1、 识别标识符(以字母开始由字母和数字构成的字符串,要求长度不超过10);参考程序: #include <>#include <>][E G 'E T E '→εE T E '+→'T F E '→i E E )(→'#i ”,例如“”,通过ftp 或Email 提交。

1. 检查方式与评分标准 及程序输出与标准输出相符合的程度。

附录二 实验报告参考格式 以实验二(词法分析器的设计为例)一、实验目的与任务编制一个读单词过程,从输入的源程序中,自身值。

(遇到错误时可显示“Error ”二、实验步骤1. 符和要测试的程序例。

2. 程序的功能描述。

(在这里描述你的程序的功能)3.程序的模块描述。

(在这里写出:重要的全局变量及其用途,主要函数的定义、功能、参数与返回值的含义)4.关键程序代码(在这里写出:实验中关键的程序代码,不用把所有代码都写上)三、实验总结(可以从以下几个方面来总结:你在编程过程中花时多少时间是怎么分配的多少时间在思考问题遇到了哪些难题你是怎么克服的你对你的程序的评价你的收获有哪些)附录三 Visual C++上机环境简介上机实验环境亦可选择Microsoft Visual C++(以下简称VC)。

VC是美国微软公司生产的基于其Windows系统的软件开发工具。

它具有使用灵活,并与32位Windows内核(使用于Windows 2000/Windows XP)高度兼容的特点,从而被Windows程序员们广泛使用。

同时,VC同样可以加工处理C语言程序,与标准的ANSI C语言兼容。

VC提供了一种控制台操作方式,初学者使用它应该从这里开始。

下面我们将对使用VC编写简单的控制台程序作一个最初步的介绍。

一、控制台程序简介Win32控制台程序(Win32 Console Application)是一类Windows程序,它不使用复杂的图形用户界面,程序与用户交互时通过一个标准的正文窗口,通过几个标准的输入输出流(I/O Streams)进行。

它们分别是stdin(标准输入),stdout(标准输出)以及stderr (标准错误输出)。

这些流都是ANSI C语言标准库提供的,通过printf(…)等函数可以访问这些流。

一个最简单的控制台程序如下:/* */#include<>/* 包含使用标准输入输出的头文件声明 */int main()/* 主函数 */{printf(“Hello, World!\n”);/* 向标准输出stdout输出一个字符串 */return 0;/* 主函数返回 */}该程序的运行结果如图3-4所示。

图3-4 控制台程序运行结果图中显示的黑色窗口称为控制台窗口,程序的输入、输出均在这个窗口中进行。

二、使用VC编写控制台程序很简单,只需要按照下面几个步骤进行:1.打开MSVC集成开发环境。

双击桌面或“开始”菜单中的Microsoft Visual C++,不久将看到VC的编辑窗口,如图3-5:图3-5 VC启动界面2.选择菜单“File | New”,在弹出的对话框中1)单击上方的选项卡“File”,2)选择“C++ Source File”,3)在“File name”一栏中填写文件名例如,4)在“Location”一栏中填写你想把文件存放的位置(目录)。

然后按“OK”。

见图3-6。

注意:第3)步中一定写明扩展名“.c”(不要用“.cpp”。

那样VC将按C++的方式编译,C++与C有一些的不兼容性);第4)步中指定你自己的目录,不要使用系统的缺省目录或者随便放在根目录或者其他的目录下。

图3-6 应用程序向导主界面3.在右侧的窗口中键入程序的内容,然后点击图标存盘。

进入VC编辑界面,如图3-7。

图3-7 VC编辑界面4.试编译。

点击图标,或者选择菜单“Build | Build”(启动程序加工,这样系统将连续进行编译和连接操作。

另一种更稳妥的方式是先做编译,检查无误后再做连接)。

这时VC将弹出一个对话窗口,说明这个命令需要一个工程(Project),问:是否创建一个默认的工程点击“Yes”。

如图3-8所示。

图3-8 是否创建一个工程5.编辑器中编译窗口开始显示编译的结果。

如果显示“ -- 0 error(s), 0warning(s)”,则表示编译已经通过!6.点击快捷工具栏上的红色的感叹号(或者选择菜单“Build | Execute”或按Ctrl-F5),查看运行结果(VC将自动打开一个显示结果的窗口,如上图3-4所示)。

三、如何调试程序利用VC编写程序,还需要学会如何调试程序。

我们都会发现,在编写较长的程序时,能够一次成功而不含有任何错误决非易事(当然,鼓励同学们以此为目标,进行长期大量的练习)。

对于程序中的错误,VC提供了易用且有效的调试手段。

在工具栏上单击鼠标右键,在弹出的菜单中对“Debug”项打勾,发现如图3-9所示的许多按钮。

其中,较常用的工具有:单步跟踪进入子函数(Step Into),单步跟踪跳过子函数(Step Over),运行至当前函数的末尾(Step Out)以及观察变量的值(Watch)等,这些VC中常用的调试功能详见有关参考文献。

图3-9 VC调试工具条附录四参考程序1.词法分析器的设计-参考程序/*cifa fenxi chengxu*/#include <>#include ""#include <>#define N 100 LL(1)文法预测分析表的实现-参考程序/************************程序说明*********************************用于输入相应的文法,第一行字母表示起始字符。

****************************************************************/ #include <>#include <>#include <>#define MAX_GRAM_LEN 255 n");return;}if((testFile=fopen(testFileName,"wb"))==NULL){printf("open file:testFile error.\n");return;}readInGrammer();Setence[0]=tmpChar;GrammerSet[tmpIndex].mSetence[1]='\0';strcat(GrammerSet[tmpIndex].mSetence,tmpStr);tmpIndex++;for(i=0;i<vnIndex;i++)if(tmpChar==VNSet[i])break;if(i==vnIndex) n");return;}for(i=0;i<matrixSize;i++)for(j=0;j<matrixSize;j++)relationMatrix[i][j]=0;Setence[0]!=VNSet[vnIndex])vnIndex++;j=1;while(GrammerSet[i].mSetence[j]!='\0'){Setence[j]>=65&&GrammerSet[i].mSetence[j]<=90){for(k=0;k<vnSetLen;k++)Setence[j])break;n");return;}colIndex=k;rowIndex=vnIndex;relationMatrix[rowIndex][colIndex]=1;if(VNProduceZ[k]) Setence[j])break;n");return;}if(VTSet[k]=='z'){goto fir_cond1;}else{colIndex=vnSetLen+k;rowIndex=vnIndex;relationMatrix[rowIndex][colIndex]=1;goto fir_cond2;}}fir_cond1:j++;}fir_cond2:;}en=0;for(j=vnSetLen;j<matrixSize;j++){if(VTSet[j-vnSetLen]!='z'&&relationMatrix[i][j]==1){groupFirst[i].ele[groupFirst[i].len]=VTSet[j-vnSetLen];groupFirst[i].len++;}}if(VNProduceZ[i]==1){groupFirst[i].ele[groupFirst[i].len]='z';groupFirst[i].len++;}}en;j++){printf("%c,",groupFirst[i].ele[j]);fprintf(testFile,"%c,",groupFirst[i].ele[j]);}printf("\n");fprintf(testFile,"\r\n");}printf("\n======================\n");fprintf(testFile,"\r\n==================\r\n");//释放内存for(i=0;i<matrixSize;i++) free(relationMatrix[i]);free(relationMatrix);}。

相关文档
最新文档