資源簡介
java實現的語法分析器,包括詞法分析
語法分析采用自頂向下,遞歸下降的方法

代碼片段和文件信息
import?java.io.*;
import?java.util.*;
public?class?cifa?{
/**
?*?@param?args
?*/
static?int?code;
static?String?value;
static?int?index;
static?StringBuilder?sb;
static?String?s;
static?char?ch;
static?String[]?key?={“program““begin““end““var““integer““if““then““else““do““while“};
static?int?linenum;
static?boolean?isLetter(char?ch){
return?((ch>=‘a‘)&&(ch<=‘z‘))||((ch>=‘A‘)&&(ch<=‘Z‘));
}
static?boolean?isDigit(char?ch){
return?(ch>=‘0‘)&&(ch<=‘9‘);
}
static?boolean?isBC(char?ch){
return?(ch==‘?‘)||(ch==9);
}
public?static?void?main(String[]?args)?throws?IOException?{
//?TODO?Auto-generated?method?stub
BufferedReader?in?=?new?BufferedReader(new?FileReader(“in.txt“));
PrintWriter?out?=?new?PrintWriter(new?BufferedWriter?(new?FileWriter(“out.txt“)));
linenum=1;
while((s=in.readLine())!=null){
index=0;
while(index sb?=?new?StringBuilder();
ch?=?s.charAt(index++);
while(isBC(ch)){
if(index ch?=?s.charAt(index++);
}else?{
index++;
break;
}
}
if(isLetter(ch)){
while(isLetter(ch)||isDigit(ch)){
sb.append(ch);
//
if(index ch?=?s.charAt(index++);
}else?{
index++;
break;
}
}
index--;
code=0;
String?temp=sb.toString();
for(int?i=0;i<10;i++){
if(key[i].equals(temp)){
code=i+1;
value=“__“;
}
}
if(code==0){
out.println(“(11“?+sb?+?“)“);
}else{
out.println(“(“+?code?+““?+value?+?“)“);
}
}
else?if(isDigit(ch)){
while(isDigit(ch)){
sb.append(ch);
//
ch=s.charAt(index++);
}
index--;
out.println(“(12“?+sb?+?“)“);
}else?if(ch==‘+‘){out.println(“(13__)“);}
else?if(ch==‘-‘){out.println(“(14__)“);}
else?if(ch==‘(‘){out.println(“(15__)“);}
else?if(ch==‘)‘){out.println(“(16__)“);}
else?if(ch==‘=‘){out.println(“(17__)“);}
else?if(ch==‘>‘){out.println(“(18__)“);}
else?if(ch==‘<‘){out.println(“(19__)“);}
else?if(ch==‘;‘){out.println(“(20__)“);}
else?if(ch==‘‘){out.println(“(21__)“);}
else?if(ch==‘:‘){
if(s.charAt(index++)==‘=‘){
out.println(“(23__)“);
}
else{
index--;
out.println(“(22__)“);
}
}else?if(ch==‘*‘){out.println(“(24__)“);}
else?if(ch==‘/‘){out.println(“(25__)“);}
}
}
in.close();
out.close();
}
}
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件????????232??2009-05-25?19:54??bianyi\.classpath
?????文件????????382??2009-05-25?19:54??bianyi\.project
?????文件???????3300??2009-05-25?20:16??bianyi\bin\cifa.class
?????文件???????3251??2009-05-25?21:25??bianyi\bin\yufatest.class
?????文件?????????30??2009-05-25?21:24??bianyi\in.txt
?????文件????????134??2009-05-25?21:24??bianyi\out.txt
?????文件???????2582??2009-05-25?20:16??bianyi\src\cifa.java
?????文件???????3145??2009-05-25?21:25??bianyi\src\yufatest.java
?????文件??????????0??2009-05-25?21:25??bianyi\yufaout.txt
?????目錄??????????0??2009-05-26?14:53??bianyi\bin
?????目錄??????????0??2009-05-26?14:53??bianyi\src
?????目錄??????????0??2009-05-26?14:53??bianyi
-----------?---------??----------?-----??----
????????????????13056????????????????????12
- 上一篇:java 棧的實現和應用
- 下一篇:java jdk-11.0.1 64位 綠色版
評論
共有 條評論