基于有限自动机的词法分析器构造

本文档详述了构建一个针对C语言部分子集的词法分析器的过程,旨在加深对正则表达式转NFA再转DFA及代码生成的理解。实验涵盖了保留字选择,如if, else, for等,以及特殊符号和算术、比较运算符。通过该实验,作者期望能更好地领会编译原理中的优美思想。" 132935104,20036235,Unity3D在Android上实现RTMP推送教程,"['Android开发', 'Unity3D', '音视频处理', '流媒体']
摘要由CSDN通过智能技术生成

一、目标

本次实验的主要目的是对自定义的程序语言的词法分析器程序构造,我从 C 语言当中选择了部分具有代表性的子集,实现词法分析器,主要是对编译原理课程中学习的从正则达式转化为 NFA,再从 NFA 转化为 DFA 以及后续的代码生成的过程有更深刻的认识。同时,也希望对于在编译原理课程中所体现出的计算机科学当中的一些朴素而优美的思想有更多的体会。

二、内容概述

本报告主要描述了一个简单的词法分析器构造过程,包括最终成品的功能概要,实现过程中的理论推导,具体的核心算法和数据结构的描述,以及个人的收获和体会。

三、实验环境

  • 操作系统 Win8.1
  • 实验的编译器 eclipse
  • 编码格式 Utf-8

3.1 语言定义

3.1.1 记号定义

3.1.1.1 保留字

我选择了 C 语言当中一部分具有代表性的保留字,同时为了保持整个编译原理课程实验的延续性和后续语义分析的实验内容,选择的保留字能够涵盖程序设计中的顺序、分支、和循环结构,这样也可以很好的对正则表达式当中的三种基本运算连接、或、闭包运算形成很好的对应,除此之外,选择了能够形成对函数调用,变量声明进行支持的部分保留字。具体选择的保留字有如下几个:

else, if,int,double,char,do,continue,break,float, return, void, while,for

3.1.1.2 特殊符号

  • 算术运算符:+、-、*、/

  • 比较运算符:<、<=、

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值