《词法分析器设计》word版

《词法分析器设计》word版

ID:29058897

大小:260.04 KB

页数:10页

时间:2018-12-16

《词法分析器设计》word版_第1页
《词法分析器设计》word版_第2页
《词法分析器设计》word版_第3页
《词法分析器设计》word版_第4页
《词法分析器设计》word版_第5页
资源描述:

《《词法分析器设计》word版》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、1、实验目的1、为初等函数运算语言构造语法分析器。2、掌握生成词法分析器的方法,加深对词法分析原理的理解。3、掌握设计、编制并调试词法分析程序的思想和方法。2、实验内容2.1词法模式设计/正则式1、初等函数运算语言的常量为实数类型,其定义方式为实数的最一般书写方式,如:123.321。具体要求:不支持整数部分大于0时首数字为0;不支持小数点后结尾为0;不支持科学记数法;不支持仅为整数时有小数点。^[1-9][0-9]*(.[0-9]*[1-9]+)?$2、初等函数运算语言的变量采用与C语言的标识符定义一样的方式:首字符为字母或下划线;其他的为字母、数字及下划线的混合串;区分大小写;变量

2、长度不超过32个字符。^[a-zA-Z_][A-Za-z0-9]{0,31}$3、初等函数运算语言需要处理的函数仅为表一中所列举的内容。4、初等函数运算语言支持四则运算,其计算的符号与C语言相同,为:+-*/。^[+-*/]$5、初等函数运算语言的合法的分隔符包括:空格、制表符、、分行符圆括号(左、右)、分号。其中空格、制表符、分行符可以出现在任何两个不同的单词中间;圆括号(左、右)用于表达式中,用于改变运算的优先级,以及标识函数的参数;分号用于标识一个语句的结束。^[ft();]$6、初等函数运算语言支持的常量还包括:PI,E。^PI

3、E$2.2DFA2.3状态转换表_字符数

4、字运算符小数点0012、40101102003300304004032.4记号表1、实验程序清单function.cppmains.cppname.hwordID.txt2、调试过程和运行结果3、"x=0.5*PI;y=E;?1/3*(ln(y)+5*sin(x))+(7+z)^2;"1、程序的主要部分及其功能说明函数声明----------------------------------------name.h------------------------------------------------------#include#include

5、usingnamespacestd;constintMax=1000;conststringFunctionName[]={"sin","cos","tg","ctg","log","lg","ln","PI","E"};//关键字classOperate{private:stringstr;//输入的字符串stringword[Max];//输出的结果intnum[Max];//输出的类型public:intstartPostion;//字符开始位置intnowPostion;//字符当前位置intlength;//结果个数Operate(strings);voidgetWordAn

6、dNum();boolisNumber(charc);boolisChar(charc);//boolisChar(charc);intisOperaters(charc);boolisblank(charc);voidaddWords(strings,intn);};intisKey(stringstr);voidwork(stringstr);-----------------------------------------function.cpp------------------------------------------------函数定义----------------

7、-------------------------function.cpp------------------------------------------------#include#include#include#include"name.h"usingnamespacestd;//Operate类定义Operate::Operate(strings){str=s;startPostion=0;nowPostion=0;length=0;}voidOperate::getWordAndNum(){for(inti=0;i<=(

8、length-1);i++)cout<<"<"<";}boolOperate::isNumber(charc){if(c>='0'&&c<='9')returntrue;returnfalse;}boolOperate::isChar(charc){if((c>='a'&&c<='z')

9、

10、(c>='A'&&c<='Z')

11、

12、c=='_')returnt

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。