JAVA语言编写的编译原理FIRST和FOLLOW集

JAVA语言编写的编译原理FIRST和FOLLOW集

ID:41119883

大小:44.00 KB

页数:14页

时间:2019-08-16

JAVA语言编写的编译原理FIRST和FOLLOW集_第1页
JAVA语言编写的编译原理FIRST和FOLLOW集_第2页
JAVA语言编写的编译原理FIRST和FOLLOW集_第3页
JAVA语言编写的编译原理FIRST和FOLLOW集_第4页
JAVA语言编写的编译原理FIRST和FOLLOW集_第5页
资源描述:

《JAVA语言编写的编译原理FIRST和FOLLOW集》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、packagecn.spy.action;importjava.util.ArrayList;importjava.util.Scanner;importjava.util.StringTokenizer;*某一输入实例: *E->TE' *E'->+E

2、ε *T->FT' *T'->T

3、ε *F->PF' *F'->*F'

4、ε *P->(E)

5、a

6、b

7、^ *end */publicclassFirstFollow3{publicArrayListin=newArrayList();//这数据结构真是逼人绝路才去想到绝处逢生,

8、哈哈,关键实现了可变长度文法接收,在这存放的是拆分后最简单的文法,也是由用户输入publicArrayListfirst=newArrayList();//包括左推导符和其First集publicArrayListfollow=newArrayList();publicArrayListtrack=newArrayList();//track有一条一条的非终结符串组成的路径数组publicFirstFollow3(){Scannersc=newSc

9、anner(System.in);System.out.println("请分行输入一个完整文法:(end结束)");Stringsline="";sline=sc.nextLine();while(!sline.startsWith("end")){StringBufferbuffer=newStringBuffer(sline);intl=buffer.indexOf("");while(l>=0){//去空格buffer.delete(l,l+1);l=buffer.indexOf("");}sline=buffer.toString();Strings[]=

10、sline.split("->");//左推导符if(s.length==1)s=sline.split("→");//考虑到输入习惯和形式问题if(s.length==1)s=sline.split("=>");if(s.length==1){System.out.println("文法有误");System.exit(0);}StringTokenizerfx=newStringTokenizer(s[1],"

11、︱");//按英文隔符拆开产生式或按中文隔符拆开while(fx.hasMoreTokens()){String[]one=newString[2];/

12、/对于一个语句只需保存两个数据就可以了,语句左部和语句右部的一个简单导出式,假如有或符,就按多条存放one[0]=s[0];//头不变,0位置放非终结符one[1]=fx.nextToken();//1位置放导出的产生式,就是产生式右部的一个最简单导出式in.add(one);}sline=sc.nextLine();}//求First集过程this.process("First");/**打印First集算法和First集*/System.out.println("First集算法:");this.print(track);//打印First集算法System

13、.out.println("First集:");for(inti=0;i

14、s("Follow");System.out.println("Follow集算法:");for(inti=0;i

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

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

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