国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

java 簡單的詞法分析

2019-11-15 00:03:08
字體:
來源:轉載
供稿:網友
java 簡單的詞法分析

package com.seakt.example;

import java.io.*;import java.lang.String;

public class J_Scanner {public String infile; public String outfile; public String []key = new String[33];FileOutputStream out = null;public J_Scanner(String infile,String outfile){J_Scanner.this.infile = infile;J_Scanner.this.outfile = outfile;String[] key_temp = {"","auto","double","int","struct","break","else","long","switch","case", "enum","register","typedef","char","extern","return","union","const","float","short","unsigned","continue","for","signed","void","default","goto","sizeof","volatile","do","if","while","static"};key = key_temp;try {out = new FileOutputStream(new File(outfile)); }catch(IOException e){e.PRintStackTrace();}}//輸出關鍵字public void print_key(){for(int i=0;i<J_Scanner.this.key.length;i++){System.out.printf("%s/r/n",J_Scanner.this.key[i]);}}//讀文件 public void readFile() { File file = new File(J_Scanner.this.infile); BufferedReader reader = null; try { reader = new BufferedReader(new FileReader(file)); String tempString = null; while ((tempString = reader.readLine()) != null) { System.out.println(tempString.length()); getToken(tempString); } reader.close(); } catch (IOException e) { e.printStackTrace(); } finally { if (reader != null) { try { reader.close(); } catch (IOException e1) { } } } } //判斷是否字符 private boolean isLetter(char ch){if((ch>=65&&ch<=90)||(ch>=97&&ch<=122)||ch==35||ch==46)return true;else return false; } //判斷是否數字 private boolean isDigit(char ch){ if(ch>=48&&ch<=57)return true;else return false; } //查找關鍵字 private int reserve(String s){ for(int i=1;i<33;i++) if(s==key[i]) return i; return 0;

}

private void getToken(String s) throws IOException{

String str_write=null; int i=0,code;char ch=' ';String temp="";if(s.length()!=0){ch=s.charAt(i);}while(i<s.length()){

//如果是空跳過while(i<s.length()&&ch==' '){ i++; ch=s.charAt(i);}//是字母if(isLetter(ch)){while((isLetter(ch)||isDigit(ch))&&i<s.length()){ temp+=ch; i++; if(i<s.length()-1){ ch=s.charAt(i); }else{ ch=' '; }}i--;code=reserve(temp);if(code==0){str_write = temp+"/t"+"標識符"+"/r/n";out.write(str_write.getBytes()); temp="";str_write="";}else{ str_write = temp+"/t"+"關鍵字"+"/r/n"; out.write(str_write.getBytes()); temp="";str_write="";}

}else if(isDigit(ch)){while(isDigit(ch)){ temp+=ch; i++; if(i<s.length()-1){ ch=s.charAt(i); }else{ ch=' '; }}i--; str_write = temp+"/t"+"常數"+"/r/n";out.write(str_write.getBytes());temp="";str_write="";}else if(ch=='='){i++; ch=s.charAt(i);if(ch== '=' ){ str_write = "=="+"/t"+"判斷相等"+"/r/n"; out.write(str_write.getBytes()); temp="";str_write="";}else{ i--; str_write = "="+"/t"+"賦值"+"/r/n"; out.write(str_write.getBytes()); temp="";str_write="";}

}else if(ch=='+'){ i++; ch=s.charAt(i); if(ch=='+') out.write(("++"+'/t'+"加1"+"/r/n").getBytes()); else{i--;out.write(("++"+'/t'+"加號"+"/r/n").getBytes()); }}else if(ch=='&'){ i++; ch=s.charAt(i); if(ch=='&') out.write(("&&"+'/t'+"與"+"/r/n").getBytes()); else{i--; out.write(("&"+'/t'+"按位與"+"/r/n").getBytes()); }}else if(ch=='|'){ i++; ch=s.charAt(i); if(ch=='|') out.write(("||"+'/t'+"或"+"/r/n").getBytes()); else{i--; out.write(("|"+'/t'+"按位或"+"/r/n").getBytes()); }}

else if(ch=='-') out.write(( (char)ch+'/t'+"減號"+"/r/n").getBytes());else if(ch==';') out.write(( (char)ch+'/t'+"分號"+"/r/n").getBytes());else if(ch=='(')out.write(( (char)ch+'/t'+"左括號"+"/r/n").getBytes());else if(ch==')')out.write(( (char)ch+'/t'+"右括號"+"/r/n").getBytes());else if(ch=='{') out.write(( (char)ch+'/t'+"左花括號"+"/r/n").getBytes());else if(ch=='}')out.write(( (char)ch+'/t'+"右花括號"+"/r/n").getBytes());else if(ch=='*'){i++; ch=s.charAt(i);if(ch=='*')out.write(("**"+'/t'+"運算符"+"/r/n").getBytes());else{ i--; out.write(("*"+'/t'+"乘號"+"/r/n").getBytes());}

}else if(ch=='<'){i++; ch=s.charAt(i);if(ch=='=') out.write(("<="+'/t'+"小于等于"+"/r/n").getBytes());else{ i--; out.write(("<"+'/t'+"小于"+"/r/n").getBytes());}

}else if(ch=='>'){i++;if(i<s.length()-1){ ch=s.charAt(i); }else{ ch=' '; }if(ch=='=') out.write((">="+'/t'+"大于等于"+"/r/n").getBytes());else{ i--; out.write(("<"+'/t'+"大于"+"/r/n").getBytes());}}elsereturn;i++;if(i<s.length()){ch=s.charAt(i);}} } //關閉輸出流 public void close_outStream() throws IOException{J_Scanner.this.out.close();} }


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 稷山县| 乌拉特前旗| 稻城县| 贵定县| 兴业县| 乌拉特前旗| 巩留县| 许昌市| 广宁县| 营山县| 巴南区| 涪陵区| 三河市| 梓潼县| 盐山县| 衡南县| 讷河市| 景洪市| 方正县| 北流市| 图片| 合肥市| 扬州市| 宁乡县| 永寿县| 娱乐| 山阴县| 辽阳县| 沙河市| 保德县| 西华县| 汶上县| 通榆县| 顺平县| 碌曲县| 明光市| 郯城县| 兴宁市| 洪湖市| 金乡县| 双城市|