Skip to content

Latest commit

 

History

History
19 lines (18 loc) · 3.28 KB

README.md

File metadata and controls

19 lines (18 loc) · 3.28 KB

PL0语言词法分析模型

编译 实验一:词法分析

实验目的:掌握编译原理的词法分析的理论知识。 实验要求:由于不同实验题目之间既有联系也有独立性,所以实验小组可在候选实验题目中任选一题完成。题目见表1。 表2:分工参考 序号 参考分工模块 具体内容

  • 1 正规表达式→NFA 编写一个模块,输入一个正规表达式,输出与其等价的有限自动机。
  • 2 有限自动机的确定化 编写一个模块,将一个非确定有限自动机转换为确定有限自动机。
  • 3 确定有限自动机的最小化 编写一个模块,根据一个正规表达式构造最少状态的确定有限自动机。
  • 4 模拟DFA 编写一个模块,模拟最少状态的确定有限自动机,判断输入串能否识别。
  • 5 程序框架和界面设计 编写整个程序的框架、界面设计、数据结构设计等。

一、实验目的

加深和巩固对于词法分析的了解和掌握;初步认识PL/0语言的基础和简单的程序编写;通过本实验能够初步的了解和掌握程序词法分析的整个过程;提高自己上机和编程过程中处理具体问题的能力。

二、实验要求

实验前先阅读完总体的预备知识以及实验相关的基础知识;要求自己独立完成实验,不得抄袭别人的结果;编写和调试过程中出现的问题做好记录;实验程序调试完成后,用给定的PL0测试程序进行测试,由老师检查测试结果,并给予相应的成绩;实验完成后,要上交实验报告。教材上是Pascal语言写的,我们要求用C语言或C++语言写。

三、实验原理

参考教材第二章PL/O语言的编译程序,是用高级语言语言书写的。整个编译过程是由一些嵌套及并列的过程或函数完成。词法分析程序是独立的过程GETSYM完成,供语法分析读单词时使用。语法分析是由过程BLOCK完成。采用自顶向下的递归子程序法。所产生的目标程序为假象栈式计算机的汇编语言。对目标程序的执行是由PASCAL语言书写的解释程序进行的。因此 PL/O语言可以在配备PASCAL语言的任何机器上实现。由于PL/O语言编译程序是适合教学用的实例,它的数据类型只有整形数,数据运算只有四则运算。语句有复制语句、条件语句、While型循环语句、输入、输出语句和不带参数允许递归调用过程语句及复合语句。 词法分析程序GETSYM的功能包括:1、滤空格,空格在词法分析时是一种不可缺少的界符,而在语法分析时是无用的,所以必须滤掉。2、识别保留子:设有一张保留字表。对每个字母打头的字母、数字字符串要查此表。若查着则为保留字,对应的类别放在SYM中。如IF对应值为THENSYM。3、识别标识符:对用户定义的标识符将IDENT放在SYM中,标识符本身的值放在ID中。4、拼数:当所取单词是数字时,将树的类别NUMBER放在SYM中,数值本身的值放在NUM中。5、拼复合词:对两个字符组成的算符如:>=、:=、<= 等单词,识别后将类别送SYM中。6、打印源程序:为边读入字符边打印。打印每个单词的识别类别(如果是标识符或数字应该给出其值即id和num中的值。