【编译原理】词法分析器的设计与实现

您所在的位置:网站首页 编译原理实验二正规式的定义与应用 【编译原理】词法分析器的设计与实现

【编译原理】词法分析器的设计与实现

2024-07-10 02:15:06| 来源: 网络整理| 查看: 265

一、实验目的

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

编制一个读单词过程,从输入的源程序中,识别出各个具有独立意义的单词,即基本保留字、标识符、常数、运算符、分隔符五大类。并依次输出各个单词的类型码及单词符号的自身值。(遇到错误时可显示“Error”,然后跳过错误部分继续显示)

二、实验要求

用C或C++或其他程序设计语言写一个简单的词法分析程序,程序可以满足下列要求:

1、能分析如下几种简单的语言词法

(1) 标识符: ID=letter(letter|digit)*

(2) 关键字(全部小写)

main int float double char if  then  else switch case break continue while do for

(3)整型常量:NUM=digit digit*

(4)运算符

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

(5)空格由空白、制表符和换行符组成,用以分隔ID、NUM、运算符等,字符分析时被忽略。

2、单词符号和相应的类别码

假定单词符号和相应的类别码如下:

| 单词符号 | 种别码 |

|---------|--------|

| int     | 1      |

| =       | 17     |

| float   | 2      |

| =      | 25     |

| 整型常量| 11     |

| ;       | 26     |

| +       | 13     |

| (       | 27     |

| -       | 14     |

| )       | 28     |

| *       | 15     |

| ?       | 29     |

| /       | 16     |

| :       | 30     |

3、词法分析程序实现的功能

输入:单词序列(以文件形式提供),输出识别的单词的二元组序列到文件和屏幕

输出:二元组构成: (syn,token或sum)

其中: syn 为单词的种别码

token 为存放的单词自身符号串

sum 为整型常数

例:

源程序: int ab; float ef=20;

ab=10+ef;

输出:

(保留字--1,int)

(标识符--10,ab)

(分号--26,;)

(保留字--2,float)

(标识符--10,ef)

(等号--17,=)

(整数--11,20)

(分号--26,;)

(标识符--10,ab)

(等号--17,=)

(整数--11,10)

(加号--13,+)

(标识符--10,ef)

(分号--26,;)

三、实验过程:

算法分析: 读取输入文件中的单词序列。根据给定的词法规则,识别并分类单词符号。输出识别的单词的二元组序列到文件和屏幕。程序流程图:

程序代码: #include #include #include #include using namespace std; // Token codes #define RESERVED 1 #define FLOAT_TYPE 2 #define IF_KEYWORD 3 #define LESS_THAN 20 #define LESS_THAN_OR_EQUAL 21 #define SWITCH_KEYWORD 4 #define EQUAL_EQUAL 22 #define WHILE_KEYWORD 5 #define NOT_EQUAL 23 #define DO_KEYWORD 6 #define GREATER_THAN 24 #define GREATER_THAN_OR_EQUAL 25 #define IDENTIFIER 10 #define INTEGER_CONSTANT 11 #define SEMICOLON 26 #define PLUS 13 #define LEFT_PAREN 27 #define MINUS 14 #define RIGHT_PAREN 28 #define MULTIPLY 15 #define QUESTION_MARK 29 #define DIVIDE 16 #define COLON 30 #define ASSIGNMENT 17 // Token map map tokenMap = {     {"int", RESERVED},     {"float", FLOAT_TYPE},     {"double", RESERVED},     {"char", RESERVED},     {"if", IF_KEYWORD},     {"then", RESERVED},     {"else", RESERVED},     {"switch", SWITCH_KEYWORD},     {"case", RESERVED},     {"break", RESERVED},     {"continue", RESERVED},     {"while", WHILE_KEYWORD},     {"do", DO_KEYWORD},     {"for", RESERVED} }; bool isLetter(char c) {     return (c >= 'a' && c = 'A' && c = '0' && c


【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


图片新闻

实验室药品柜的特性有哪些
实验室药品柜是实验室家具的重要组成部分之一,主要
小学科学实验中有哪些教学
计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
实验室各种仪器原理动图讲
1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
高中化学常见仪器及实验装
1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
微生物操作主要设备和器具
今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
浅谈通风柜使用基本常识
 众所周知,通风柜功能中最主要的就是排气功能。在

专题文章

    CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭