0513《编译原理》在线开放式作业实施方案
作业内容要求:完成扫描程序的设计与实现,具体要求为:
•设计并实现TINYC语言的扫描程序;
•完成并提交实验报告,扫描程序的源程序,编译后的可执行程序,例子和运行结果.
实验报告至少要包含如下内容:
1 实验目的;
2 TINYC语言的词法说明,扫描器的输入和输出;
3 实验原理(所采用的过程);
3.1 记号种类及各记号所代表的字符串集合;
3.2 各记号对应的正则表达式及所有记号对应的正则表达式;
3.3 各记号对应的DFA及所有记号对应的DFA;
4 扫描程序的功能说明和程序说明,程序模块等;
5 输入示例及其运行结果;
6 总结: 获得的经验,遇到的问题,改进方案等.
格式及提交要求:
1、学生须按以上要求完成实验报告作业。
2、在word文档中完成实验报告;使用“北京师范大学网络教育课程论文”做为论文封面;正文使用宋体五号字;标题加粗。
北京师范大学网络教育课程作业课程代码:
课程名称:
学习中心
姓名
学号
专业
年级
实验目的;
完整地指出TINYC的词法结构,也就是:定义记号和它们的特性
在线代码运行器实验内容;
TINYC的记号分为3个典型类型:保留字、特殊符号和“其他”记号。保留字一共有8个,它们的含义类似。特殊符号有10种:分别是4种基本的整数运算符号、2种比较符号,以及括号、分号和赋值符号。除了赋值符号是两个字符的长度之外,其余均为一个字符。
表1 TINYC语言的记号
其他记号就是数了,它们是一个或多个数字以及标识符的序列,而标识符又是(为了简便)一个或多个字母的序列。
除了记号之外,TINYC还要遵循以下的词法惯例:注释应放在花括号{...}中,且不可嵌套;代码应是自由格式;空白格由空格、制表位和新行组成;最长子串原则后须接识别记号。
在为该语言设计扫描程序时,可以从正则表达式开始并根据前一节中的算法来开发NFA 和DFA。实际上,前面已经给出了数、标识符和注释的正则表达式。其他记号的正则表达式都是固定串,因而均不重要。由于扫描程序的DFA记号十分简单,所以无需按照这个例程就
可直接开发这个DFA了。我们按一下步骤进行。
首先要注意到除了赋值符号之外,其他所有的特殊符号都只有一个字符,这些符号的DFA如下:
在该图中,不同的接受状态是由扫描程序返回的记号区分开来。如果在这个将要返回的记号(代码中的一个变量)中使用其他指示器,则所有接受状态都可集中为一个状态,称之为DONE。若将这个二状态的DFA与接受数和标识符的DFA合并在一起,就可得到下面的DFA:
请注意,利用方括号指出了不可被消耗的先行字符。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论