实验二词法分析器的构造

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

实验二词法分析器的构造一、实验目的掌握词法分析器的构造原理,掌握手工编程或LEX编程方法之一。二、实验内容编写一个词法分析器,能够将输入的源程序转换为单词序列输出。三、实验指南1.正则表达式定义(1)该语言的关键字:ifwhiledobreakrealtruefalseintcharboolfloat(其中,int、char、bool、float在产生式中为basic)所有的关键字都是保留字,并且必须是小写。if|then|else|while|do|break|real|true|false|int|char|bool|float(2)id和num的正则表达式定义;letter[A-Za-z]digit[0-9]id{letter}({letter}|{digit})*number{digit}+(\.{digit}+)?(E[+-]?{digit}+)?(3)专用符号:+-*/====!==;,()[]{}relop|=|=|||=|==|!=|=addop+|-|*|/|;|,|(|)|[|]|{|}(4)空格由空白、换行符和制表符组成。空格通常被忽略,除了它必须分开ID、NUM关键字。delim[\t\n]ws{delim}+(5)考虑注释。注释由/*和*/包含。注释可以放在任何空白出现的位置,且可以超过一行。注释不能嵌套。zhushi/*(\\*\/\|[^*/]|*[^/]|[^*]/|\/\*)**/2.源程序测试示例要求应自行准备多个源程序片段,运行并测试输出是否合符要求。示例1:源程序输入:{inti;if(i=0)i=i+1;}输出token序列如下:示例2:源程序片段:{inti;intj;floatv;floatx;float[100]a;while(true){doi=i+1;while(a[i]v);doj=j-1;while(a[j]v);if(i=j)break;x=a[i];a[i]=a[j];a[j]=x;}}实例3:/**chenhuajie*”/”***/四、心得体会通过本次实验,我更加了解正则表达式的用法。掌握了用flex生成词法程序的方法。变编译原理这门课有了更具体的认识。

1 / 4
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功