java编写的LL文法.docx_第1页
java编写的LL文法.docx_第2页
java编写的LL文法.docx_第3页
java编写的LL文法.docx_第4页
java编写的LL文法.docx_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

/*/Author:龙魂 /copyright-mythinfuture/教程“龙书”-李建中翻译的那版*/import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;public class test_1 public static void main(String args) throws IOException InputStreamReader ir=null; BufferedReader in=null; String input=null; boolean exit =false; boolean flag=false; StringBuffer stack=new StringBuffer($E); StringBuffer inputString=null; StringBuffer outputString=new StringBuffer( ); int i=0; char _index=new char E,E,T,T,F ; char _list=new char T,E,+,T, ; System.out.println(|*|); System.out.println(| LL(1)简单模拟测试 |); System.out.println(|*|); System.out.println(| 友情提示: tt|); System.out.println(| 空字符用& 表示 id用i表示 t|); System.out.println(|*|); System.out.println(|文法如下所示: t|); System.out.println(| E-TE tt|); System.out.println(| E-+TE|& tt|); System.out.println(| T-FT tt|); System.out.println(| T-* FT|& tt|); System.out.println(| F-(E)|id tt|); System.out.println(|*|); while(!exit) System.out.print(请输入测试串:); stack=new StringBuffer($E); ir=new InputStreamReader(System.in); in=new BufferedReader(ir); input=in.readLine(); /* 检验输入是否错误 */ flag=test_1.checkCommand(input); if(flag=true) inputString=new StringBuffer(input); /初始化输入串 inputString.append($); /以 $作为终结符 System.out.println(-); System.out.println(-); System.out.println(|t 栈 t |t 输入 t|t 输出tt|); System.out.println(-); while(stack.length()=1) i=stack.length()-1; /堆栈下角标 String temp=| +stack.toString(); for(int j=0;j(15-stack.length();j+) temp+= ; temp+=| +inputString.toString(); for(int j=0;j(20-inputString.length();j+) temp+= ; temp+=| +outputString.toString(); if(outputString.equals( ) temp+=ttt|; else for(int j=0;jTE); else System.out.println(出错: E 无法与 +inputString.charAt(0)+ 进行比对规约); break; else if(stack.charAt(i)=F) if(inputString.charAt(0)=i) stack.deleteCharAt(i); stack.append(i); outputString=new StringBuffer(F-id); else if(inputString.charAt(0)=() stack.deleteCharAt(i); stack.append()E(); outputString=new StringBuffer( F-(E) ); else System.out.println(出错: E 无法与 +inputString.charAt(0)+ 进行比对规约); break; else if(stack.charAt(i)=T) if(inputString.charAt(0)=i)|(inputString.charAt(0)=() stack.deleteCharAt(i); stack.append(TF); outputString=new StringBuffer( T-FT ); else System.out.println(出错: E 无法与 +inputString.charAt(0)+ 进行比对规约); break; else if(stack.charAt(i)=) if(String.valueOf(stack.charAt(i-1)+).equals(T) if(inputString.charAt(0)=+)|(inputString.charAt(0)=)|(inputString.charAt(0)=$) stack.deleteCharAt(i); stack.deleteCharAt(i-1); outputString=new StringBuffer( T-& ); else if(inputString.charAt(0)=*) stack.deleteCharAt(i); stack.deleteCharAt(i-1); stack.append(TF*); outputString=new StringBuffer( T-*FT ); else System.out.println(出错: E 无法与 +inputString.charAt(0)+ 进行比对规约); break; else if(String.valueOf(stack.charAt(i-1)+).equals(E) if(inputString.charAt(0)=+) stack.deleteCharAt(i); stack.deleteCharAt(i-1); stack.append(ET+); outputString=new StringBuffer( E-+TE ); else if(inputString.charAt(0)=)|(inputString.charAt(0)=$) stack.deleteCharAt(i); stack.deleteCharAt(i-1); outputString=new StringBuffer(E-&); else System.out.println(出错: E 无法与 +inputString.charAt(0)+ 进行比对规约); break; else /当堆栈首部中出现小写字符时候 stack.deleteCharAt(i-); inputString.deleteCharAt(0); outputString=new StringBuffer( ); System.out.println(-); System.out.println(您是否继续进行测试操作? Yes or No?); System.out.print(请输入:); ir=new InputStreamReader(System.in); in=new BufferedReader(ir); input=in.readLine(); if(!input.trim().toUpperCase().equals(Y) exit=true; /* * 检查输入串是否符合标准 * */private static boolean checkCommand(String input) int i=0; / while(iinput.length() if(input.charAt(i)=i)|(input.charAt(i)=&)|(input.charAt(i)=+)|(input.charAt(i)=*)|(input.charAt(i)=()|(in

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论