用JAVA写词法分析器_第1页
用JAVA写词法分析器_第2页
用JAVA写词法分析器_第3页
全文预览已结束

下载本文档

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

文档简介

import java.lang.*;import java.io.*;public class Wordanalsys static char ch; static int index=0; static int j=0; static char allstr=new char; static String name; public char Getchar() try ch=(char)System.in.read(); catch(Exception e)e.printStackTrace(); return ch; public boolean IsLetter(char ch) return java.lang.Character.isLetter(ch); public boolean IsDigit(char ch) return java.lang.Character.isDigit(ch); public int Reserve() KeyTable table=new KeyTable5; table0=new KeyTable(while,1); table1=new KeyTable(for,2); table2=new KeyTable(if,3); table3=new KeyTable(else,4); table4=new KeyTable(int,5); name=new String(allstr).substring(j,index);/取子串 for(int i=0;i5;i+) if(name.equals(tablei.key) return tablei.code; return 0; public static void main (String args) Wordanalsys a=new Wordanalsys(); ch=a.Getchar(); int m=0; while(ch!=#) allstrindex=ch; index+; ch=a.Getchar(); int k=index; index=0; while(jk-1) m=j; if(a.IsLetter(allstrj) while(a.IsLetter(allstrindex)|a.IsDigit(allstrindex) index+; if(a.Reserve()!=0) System.out.println(保留字 +name+ +a.Reserve(); else System.out.println(标识符 + 6); j=index; if(a.IsDigit(allstrj) while(a.IsDigit(allstrindex)index+; name=new String(allstr).substring(j,index); int b=java.lang.Integer.pasint(name); String name1=Integer.toBinaryString(b) ; System.out.println(数字 +name+ 7+name1); j=index; if(allstrj=()System.out.println(左括号 +( 8);index+;j=index; if(allstrj=)System.out.println( 等号 += 9);index+;j=index; if(allstrj=)System.out.println(右括号 +) 10);index+;j=index; if(allstrj= )while(allstrj= )index+;j=index; if(allstrj=;)System.out.println(分号+ ; 11);index+;j=index; if(allstrj=)index+;j=index; if(allstrj=) System.out.println(小于等于+ = 12);index+;j=index; else System.out.println(小于 + )index+;j=index; if(allstrj=) System.out.println(大于等于+ = 15);index+;j=index ; elseSystem.out.println(大于号+ 14 ); if(allstrj=+)index+;j=index; if(allstrj=+) System.out.println(自增运算符+ + 16);index+;j=index; else System.out.println(加号+ + 17); if(allstrj=-)index+;j=index; if(allstrj=-) System.out.println(自减运算符+ - 16);index+;j=index; else System.out.println(减号+ - 17); if(allstrj=n)System.out.println(enter the next line);index+;j=index; if(m=j)System.out.println(the illegal character +allstrj

温馨提示

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

评论

0/150

提交评论