词法分析器-设计思路

词法分析器-设计思路

ID:39836324

大小:936.50 KB

页数:11页

时间:2019-07-12

词法分析器-设计思路_第1页
词法分析器-设计思路_第2页
词法分析器-设计思路_第3页
词法分析器-设计思路_第4页
词法分析器-设计思路_第5页
资源描述:

《词法分析器-设计思路》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、词法分析器设计思路实验内容词法分析的主要任务是:从左到右逐个字符地扫描源程序,产生一个个单词(Token),同时检查源程序中的词法错误。思路1、因为要分离出一个个单词,所以必须先知道怎样的字符串才是单词。在本实验中,是对simple语言进行扫描,所以,必须先把simple语言的单词都先存放到内存里后,才能继续进行操作。and1output21*41array2procedure22*/42begin3program23+43bool4read24,44call5real25-45case6repeat26.46char7set27..47constant8stop28/48dim9th

2、en29/*49do10to30:50else11true31:=51end12until32;52false13var33<53for14whilr34<=54if15write35<>55input16标识符36=56integer17整数37>57not18字符常数38>=58of19(39[59or20)40]60思路将这些单词存入内存怎样实现呢?方法一:声明一个二维数组stringA[60][2];例如:A[0][0]=“and”;A[0][1]=“1”;A[1][0]=“array”;A[1][1]=“2”;……思路将这些单词存入内存怎样实现呢?方法二:将每个单词声明成为一

3、个结构类型的结点,每个单词的两个属性,即(单词本身值,种别)作为这个节点的两个域的内容。structnode{stringword;stringtype;//这个type定义成为int类型也可以};nodeA[60];A[0].word=“and”;A[0].type=“1”;……思路2、要对源程序从左到右一个个进行扫描。这里涉及到几个问题:(1)源程序是放在一个txt文件里的,所以必须先打开该txt文件后,将里面的内容先读进来。ifstreaminfile;infile.open(“文件名.txt”,iso::in);//读文件infile.close();具体的文件操作代码详见C+

4、+课本第10章!思路例如:#include#include#includevoidmain(){chars[100];ifstreama;a.open("F:\test.txt",ios::in);a>>s;cout<

5、对源程序从左到右一个个进行扫描。这里涉及到几个问题:(3)扫描的时候,怎样才能分隔出一个单词呢?空格,分号,回车符,逗号,冒号,/号,*号,’号等等。注意:要把所有可能的分隔符都找出来;分号,逗号等这些符号,自己本身就是单词。programexample2;varA,B,C:integer;X,Y:bool;begin/*thisisanexample*/A:=B*C+37;X:=’ABC’end.思路2、要对源程序从左到右一个个进行扫描。这里涉及到几个问题:(4)通过分隔符分隔出来一个个词之后,怎么知道这个词是不是就是simple语言的单词呢?答:就是跟那个单词表(也就是前面我们所创

6、建的那个二维数组)来比较。比如,分离出来了and这个单词了,就去二维数组里面,从下标为0的地方开始,看看if(A[0][0]==“and”),如果是,表明这个就是单词了,那么就将A[0][0]和A[0][1]输出。即cout<<“(“<

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

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

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