篇一 :词法分析器_实验报告

词法分析器实验报告

实验目的:

设计、编制、调试一个词法分析子程序-识别单词,加深对词法分析原理的理解。

实验要求

该程序要实现的是一个读单词过程,从输入的源程序中,识别出各个具有独立意义的单词,即基本保留字、标识符、常数、运算符、分界符五大类。并依次输出各个单词的内部编码及单词符号自身值。

(一)实验内容

1)功能描述:对给定的程序通过词法分析器弄够识别一个个单词符号,并以二元式(单词种别码,单词符号的属性值)显示。而本程序则是通过对给定路径的文件的分析后以单词符号和文字提示显示。

2)程序结构描述

函数调用格式:

参数含义:

String string;存放读入的字符串    String str; 存放暂时读入的字符串

char ch; 存放读入的字符          int rs 判断读入的文件是否为空

char []data 存放文件中的数据    int m;通过switch用来判断字符类型,

函数之间的调用关系图:

函数功能

Judgement()判断输入的字符并输出单词符号,返回值为空;

getChar() 读取文件的,返回值为空;

isLetter(char c) 判断读入的字符是否为字母的,返回值为Boolean类型;

switch (m) 判断跳转输出返回值为空;

isOperator(char c)判断是否为运算符的,返回值为Boolean类型;

isKey(String string)判断是否为关键字的,返回值为Boolean类型;

isDigit(char c) 判断读入的字符是否为数字的,返回值为Boolean类型。

测试结果:

3)程序总体执行流程图

…… …… 余下全文

篇二 :词法分析实验报告

词法分析器

一、实验目的:

通过设计编制调试一个具体的词法分析程序,加深对词法分析原理的理解。并掌握在对程序设计语言源程序进行扫描过程中将其分解为各类单词的词法分析方法。

编制一个读单词过程,从输入的源程序中,识别出各个具有独立意义的单词,即基本保留字、标识符、常数、运算符、分隔符五大类。并依次输出各个单词的内部编码及单词符号自身值。

二、实验要求

文本框: (1,”main”)
(5,”(“)
(5,”)“)
(5,”{“)
(1,”int”)
(2,”a”)
(5,”,”)
(2,”b”)
(5,”;”)
(2,”a”)
(4,”=”)
(3,”10”)
(5,”;”)
(2,”b”)
(4,”=”)
(2,”a”)
(4,”+”)
(3,”20”)
(5,”;”)
(5,”}“)
如源程序为C语言。输入如下一段:

main()

{

int  a,b;

a = 10;

    b = a + 20;

}#

要求输出如右图。

要求:

1、将单词分为五种

识别关键字:main、if、int、for、while、do、return、break、continue;单词种别码为1。

标识符;单词种别码为2。

常数为无符号整形数;单词种别码为3。

运算符包括:+、-、*、/、=、>、<、>=、<=、!= ;

单词种别码为4。

分隔符包括:,、;、{、}、(、); 单词种别码为5。

2、使用一符一种的分法

关键字、运算符和分界符可以每一个均为一种

标识符和常数仍然一类一种

三、实验内容

1、功能描述

改程序是一个实现词法分析的功能,能识别5种单词,其他单词报错。

2、程序结构描述

int IsKey(char *Word)关键字匹配函数,查询是否为关键字,若是,返回值为1,否则为0。

int IsAlpha(char c) 查看是否为字母,若是,返回值为1,否则为0。

int IsNum(char c)  查看是否为数字,若是,返回值为1,否则为0。

void scanner(FILE *fp) 扫描函数,扫描程序中的字符串并调用上述三种函数检查是否是字母、数字,是否是关键字,并输出。

fseek(fp,-1,1) 回退一个字符。

…… …… 余下全文

篇三 :编译原理词法分析器实验报告

曲阜师范大学实验报告

No.              

 


             2008      年级    软件工程 一                    组         日期  2010年10月17日星期日             

姓名     陈金金                         同组者姓名                                                               

…… …… 余下全文

篇四 :编译原理词法分析实验报告

                        词法分析器实验报告

按<<>编译原理>课程的要求,根据词法分析器的基本原理,设计、编制并调试一个词法分析程序,加深对词法分析原理的理解。

一、        实验要求

2.1 待分析的简单的词法

(1)关键字:

 begin  if  then  while  do  end

所有的关键字都是小写。

(2)运算符和界符

: =  +  -  *  /  <  <=  <>  >  >=  =  ; (  )  #

(3)其他单词是标识符(ID)和整型常数(SUM),通过以下正规式定义:

ID = letter (letter | digit)*

NUM = digit digit*

(4)空格有空白、制表符和换行符组成。空格一般用来分隔ID、SUM、运算符、界符和关键字,词法分析阶段通常被忽略。

2.2 各种单词符号对应的种别码:

表2.1 各种单词符号对应的种别码

2.3 词法分析程序的功能:

输入:所给文法的源程序字符串。

输出:二元组(syn,token或sum)构成的序列。

其中:syn为单词种别码;

      token为存放的单词自身字符串;

…… …… 余下全文

篇五 :词法分析器实验报告

实验报告

【实验过程记录(源程序、测试用例、测试结果及心得体会等)】

1、程序源代码:

#include "fstream.h"

#include "iostream.h"

#include "string.h"

#include "ctype.h"

char ch ; // 存放当前的输入字符

int lineno = 1; // 记录当前的行号

void main()//主函数

{

     void Reserve(ifstream&);

     ifstream fin("input.txt",ios::nocreate); //用ifstream的对象fin打开input文件,文件不存在时,不创建

     if (fin.fail()) cout << "找不到文件" << endl;

     Reserve(fin);

    

     fin.close();

     //fout.close();

     // ferr.close();

    

}

int judge(char *string) // 判断是否为关键字

{

    

    char *keywords[1000]={"if","int","else","for","while","do","return","break","continue"};//关键字表,按相应类型号排序

…… …… 余下全文

篇六 :词法分析器实验报告

王超-计科1-38-词法分析器实验报告

词法分析器设计

一、    实验目的:

对C语言的一个子集设计并实现一个简单的词法分析器,掌握利用状态转换图设计词法分析器的基本方法。利用该词法分析器完成对源程序字符串的词法分析。输出形式是源程序的单词符号二元式的代码,并保存到文件中。

二、实验内容

1. 设计原理

词法分析的任务:从左至右逐个字符地对源程序进行扫描,产生一个个单词符号。

理论基础:有限自动机、正规文法、正规式

词法分析器(Lexical Analyzer) 又称扫描器(Scanner):执行词法分析的程序

2. 词法分析器的功能和输出形式

功能:输入源程序、输出单词符号

程序语言的单词符号一般分为以下五种:关键字、标识符、常数、运算符,界符

3. 输出的单词符号的表示形式:

单词种别用整数编码,关键字一字一种,标识符统归为一种,常数一种,各种符号各一种。

4. 词法分析器的结构

5. 状态转换图实现

三、程序设计

1.总体模块设计

/*用来存储目标文件名*/

string  file_name;

/*提取文本文件中的信息。*/

string  GetText();

/*获得一个单词符号,从位置i开始查找。并且有一个引用参数j,用来返回这个单词最后一个字符在str的位置。*/

string GetWord(string str,int i,int& j);

/*这个函数用来除去字符串中连续的空格和换行

int DeleteNull(string str,int i);

/*判断i当前所指的字符是否为一个分界符,是的话返回真,反之假*/

bool IsBoundary(string str,int i);

/*判断i当前所指的字符是否为一个运算符,是的话返回真,反之假*/

…… …… 余下全文

篇七 :编译原理实验报告词法分析

编译原理实验报告

词法分析器

学院:计算机科学与技术

时间:2012/6/9

一、    问题描述

选择计算机高级程序语言之一 —— C语言,运用恰当的词法分析技术线路,设计和实现其对应的词法分析器

提示:技术线路选择如下两种之一:

正则式→NFA→DFA→min DFA→程序设计

或 正则文法→NFA→DFA→min DFA→程序设计。

要求:分析器输出结果存入到磁盘文件中,具有出错处理功能。

二、    系统分析

编译原理涉及词法分析,语法分析,语义分析及优化设计等各方面。词法分析阶段是编译过程的第一个阶段,是编译的基础。这个阶段的任务是从左到右一个字符一个字符地读入源程序,即对构成源程序的字符流进行扫描然后根据构词规则识别单词(也称单词符号或符号)。词法分析程序实现这个任务。从左到右逐个字符对构成源程序的字符串进行扫描,依据词法规则,识别出一个一个的标记(token),把源程序变为等价的标记串序列。执行词法分析的程序称为词法分析器,也称为扫描器。本次实验,我选择用C++来实现这个词法分析器。

程序语言的单词符号一般分为以下六种:关键字、标识符、常量、运算符、界符、字符串

词法分析程序所输出的单词符号常常采用以下二元式表示:(单词 种别,单词自身的值),单词的种别是语法分析所需要的信息,而单 词自身的值是编译其他阶段需要的信息。 

    单词的种别可以用整数编码表示,比如标识符编码为 1,程序最 后输出的形式应为: 

            关键字 int         (2      ,  int ) 

…… …… 余下全文

篇八 :编译原理课程实验报告(词法分析器及语法分析器)

编译原理实验报告

                   班级:软件0501

                  学号:1303050121

                  姓名:张慧娟    

 词法分析器与语法分析器

I. 问题描述

    设计、编制并调试一个词法分析子程序,完成识别语言单词的任务;

    设计、编制、调试一个语法分析程序,并用它对词法分析程序所提供的单词序列进行语法检查和结构分析。

ii. 设计简要描述 

界面需求:

    为了更加形象的模拟过程,此实验使用图形界面。要求从图形界面上输入输入串,点击词法分析,可以将词法分析后识别的单词符号显示,点击语法分析,可以将语法分析的堆栈过程显示,并且显示结果(是否是符合文法的句子),清空则可以将所有置空。

功能分析:

1、由用户输入输入串;

2、用户点击“词法分析”,可以将词法分析后识别的单词符号显示。

3、用户点击语法分析,可以将语法分析的堆栈过程显示,并且显示结果(是否是符合文法的句子)

4、用户点击清空,则将界面所有组件置为空

…… …… 余下全文