编译原理词法分析java源码(含:实…

源码下载

【注】如上面源码无法下载,请通过QQ联系     点击这里联系海森

一、实习题目 词法分析

二、实习过程 

1.分析实验要求与目的

本次实验要求完成词法分析,就是对每个相对独立的词,进行逐一分析,并分析出其类型。如:一个字符()是关键字,还是界符,或是是操作符,要分析的C语言源码,可以通过控制台输入,也可以通过文件的方式读入,所以在我的完成过程中,使用了文件读入的方式进行读入源码。

2.规划实验过程

因为要分析的源码,可能是很多行,所以要进行规划并假设出尽量多的情况。在这个过程中,先是分析了书上的P43页的状态转换图,认为书中考虑的情况并不全面,所以在实验的过程中,并不是完全按照书上的转换图进行的,而是进行了比较多的判断,然后进行分析处理,但是原理都是一致的,所以就没有再具体画出转换图。

分析书上的图以后,就开始安排如何进行进一步的实验,这里我先是利用一个一行的字符串代码:

public String stringTest new String(  int main(){int a,b;a=1;b=2;}  ");

进行分析,可以知道有int 一类关键字,和几个变量,这里由于变量表较多,所以没有进行给他们具体编码,但是考虑到读入文件时,如果一行上的代码中的前后很多空格,会影响到处理的效率,所以就用到了String.trim()函数,进行清除前后的空格。查找了网上的资料和书上的说明,得到如下的关键字、操作符、界符:

public String[] keyWords =  {"auto","short","int","float","long","double","char","struct",

"union","enum", "typedef","const","unsigned","signed","extern","register","static ","volatile","void ","if","else","switch","case", "for","do","while","goto","continue","break","default",

"sizeof","return"};//关键字数组

public String[] operator {"(",")","[","]","->",".","!","~","++","--","+","-","*","&","/","%"

,"<<",">>","<",">",">=","<=","==","!=","^","|","&&","||","?",":","+=","-="

,"*=","/=","%=","&=","|=","^=","<<=",">=","="};//操作符数组

public String[] boundary {",",";","\"\"","\'\'"};//界符数组

得到上面的数组之后,就开始书写函数,分别书写了如下的函数完成相应的功能:

public void IsDigit(int count)//数值类型判断函数

public boolean IsKeyWord(String string)//关键字判断函数

public boolean IsOperator(String string)//操作符判断函数

public boolean IsBoundary(String string)//界符判断函数

public boolean Iscontained(String string)//判断字符串是不是包含在操作符中的函数

public void lexicalAnalysis(String targetString,int count)//分析函数

public void openCFile(String fileName){//获取文件内容函数

3.修改补充

在完成的大部分工作后,考虑到更人性化的操作习惯和利于操作的思想,所以在最后的环节上加上了一个操作界面,来集成具体的操作。界面如下:

编译原理词法分析java源码(含:实习报告)

通过浏览或是直接输入来完成获取文件的操作,从而显示在文本框中,然后传给具体的函数进行相应的操作。单击“分析”按钮以后,就开始分析具体的C语言源码,我们可以看到在滚动窗口中的具体结果。单击“清除”按钮,清除文本域中的内容。

三、实习总结

本次实验旨在完成对源码中的词,进行逐一分析,然后进行分类打印(返回给用户)。

【注】源码为java文件,是一个工程,里面用到了awt包,和一张图片,但是由于包比较大,就没有上传,图片包含在压缩文件中。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值