编译原理 Java 词法分析器

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

import java.io.*;

public class Analysis{

public static void main(String args[]){

if(args.length!=1){

System.out.println("参数个数不合法!五秒钟后自动退出!");

try{

Thread.sleep(5000);

}catch(InterruptedException e){

e.printStackTrace();

}

System.exit(1);

}else{

File fpath=new File(args[0]);

if(!fpath.exists()){

System.out.println("参数个数不合法!五秒钟后自动退出!");

try{

Thread.sleep(5000);

}catch(InterruptedException e){

e.printStackTrace();

}

System.exit(1);

}else{

String str=null; //读入的程序字符串

int start=0; //开始节点

int i=0;

try{

FileInputStream fr=new FileInputStream(fpath);

byte[] b=new byte[(int)fpath.length()];

fr.read(b);

str=new String(b);

}catch(FileNotFoundException e){

e.printStackTrace();

}catch(IOException e){

e.printStackTrace();

}

char[] c=str.toCharArray();

for(i=0;i

String s1=""+c[i]; //当前字符

String s2=s1;

if(i!=c.length-1){

s2=s1+c[i+1]; //当前和下一个字符,防止越界

}

if(start==i){

//忽略掉回车或者换行符,制表符

if(s1.equals("\r")||s1.equals("\n")||s1.equals("\t")){

start++;

continue;

}

if(s2.equals("/*")){

System.out.println("/* 是注释开始符。");

System.out.println("以下为注释内容:"); System.out.print(str.substring(i+2,stIndexOf("*/"))); //打印注释

System.out.println("*/ 是注释结束符。");

start=str.indexOf("*/")+2; //跳过注释

i=start-1;

continue;

}

if(s1.equals(" ")&&start==i){ //跳过普通空格

start++;

continue;

}

if(("<= >= != ==").indexOf(s2)!=-1&&start==i){

i++;

System.out.print(str.substring(start,i+1));

System.out.println(" 是专用符号。");

start+=2;

continue;

}

if("+ - * / = < >".indexOf(s1)!=-1){

System.out.print(str.substring(start,i+1));

System.out.println(" 是专用符号。");

start++;

continue;

}

if(s1.equals("(")){

System.out.println("( 是左小括号。");

start++;

continue;

}

if(s1.equals(")")){

System.out.println(") 是右小括号。");

start++;

continue;

}

if(s1.equals("[")){

System.out.println("[ 是左中括号。");

start++;

continue;

}

if(s1.equals("]")){

System.out.println("] 是右中括号。");

start++;

continue;

}

if(s1.equals("{")){

System.out.println("{ 是左大括号。");

start++;

continue;

}

if(s1.equals("}")){

System.out.println("} 是右大括号。");

start++;

continue;

}

if(s1.equals(",")){

System.out.println(", 是逗号。");

start++;

continue;

相关文档
最新文档