?? test.java
字號:
import java.io.*;
public class Test {
public static void main(String[] args) throws IOException {
WordAnal wa = new WordAnal();
String readfilename = "test.txt";
String savefilename = "code.txt";
System.out.println(" The Result :");
wa.run(readfilename, savefilename);
}
}
class WordAnal {
public boolean isLetter(char c) {
if ((c >= 'A' && c <= 'Z') || (c >= 'a' && c <= 'z'))
return true;
else
return false;
}
public boolean isDigit(char c) {
if (c >= '0' && c <= '9')
return true;
else
return false;
}
public int alphaprocess(String sb) {// 判斷某一標(biāo)示符是否是關(guān)鍵字,并返回其類別
int i;
for (i = 0; i < 21; i++) {
if (this.words[i].equals(sb))
return i;
}
return i;
}
public int search(String s) {// 查詢某一單詞在字母表中的類別
for (int i = 22; i < 48; i++) {
if (this.words[i].equals(s))
return i;
}
return 31;
}
public void run(String Readfilename, String Savefilename) {
try {
FileReader fr = new FileReader(Readfilename);
StringBuffer sb = new StringBuffer();
FileWriter fw = new FileWriter(Savefilename);
PrintWriter pw = new PrintWriter(fw);
char c = (char) fr.read();
int num;
while (c != -1) {
if (isLetter(c)) {
sb = new StringBuffer();
sb.append(c);
c = (char) fr.read();
while (isLetter(c) || isDigit(c)) {
sb.append(c);
c = (char) fr.read();
}
num = this.alphaprocess(new String(sb));
System.out.println(sb + "\t,\t" + num);
pw.flush();
pw.println(sb + "\t,\t" + num);
continue;
} else if (isDigit(c)) {
sb = new StringBuffer();
sb.append(c);
c = (char) fr.read();
while (isDigit(c)) {
sb.append(c);
c = (char) fr.read();
}
num = this.search("無符號數(shù)");
System.out.println(sb + "\t,\t" + num);
pw.flush();
pw.println(sb + "\t,\t" + num);
continue;
} else if (c == ',') {
num = this.search(",");
System.out.println(";" + "\t,\t" + num);
pw.flush();
pw.println("," + "\t,\t" + num);
c = (char) fr.read();
continue;
} else if (c == ';') {
num = this.search(";");
System.out.println(";" + "\t,\t" + num);
pw.flush();
pw.println(";" + "\t,\t" + num);
c = (char) fr.read();
continue;
} else if (c == ':') {
sb = new StringBuffer();
sb.append(c);
c = (char) fr.read();
if (c == '=') {
sb.append(c);
num = this.search(new String(sb));
System.out.println(sb + "\t,\t" + num);
pw.flush();
pw.println(sb + "\t,\t" + num);
c = (char) fr.read();
continue;
} else {
num = this.search(":");
System.out.println(":" + "\t,\t" + num);
pw.flush();
pw.println(":" + "\t,\t" + num);
}
} else if (c == '.') {
num = this.search(".");
System.out.println("." + "\t,\t" + num);
pw.flush();
pw.println("." + "\t,\t" + num);
c = (char) fr.read();
continue;
} else if (c == '(') {
num = this.search("(");
System.out.println("(" + "\t,\t" + num);
pw.flush();
pw.println("(" + "\t,\t" + num);
c = (char) fr.read();
continue;
} else if (c == ')') {
num = this.search(")");
System.out.println(")" + "\t,\t" + num);
pw.flush();
pw.println(")" + "\t,\t" + num);
c = (char) fr.read();
continue;
} else if (c == '[') {
num = this.search("[");
System.out.println("[" + "\t,\t" + num);
pw.flush();
pw.println("[" + "\t,\t" + num);
c = (char) fr.read();
continue;
} else if (c == ']') {
num = this.search("]");
System.out.println("]" + "\t,\t" + num);
pw.flush();
pw.println("]" + "\t,\t" + num);
c = (char) fr.read();
continue;
} else if (c == '+') {
sb = new StringBuffer();
sb.append(c);
c = (char) fr.read();
if (c == '+') {
sb.append(c);
num = this.search(new String(sb));
System.out.println(sb + "\t,\t" + num);
pw.flush();
pw.println(sb + "\t,\t" + num);
c = (char) fr.read();
continue;
} else {
num = this.search("+");
System.out.println("+" + "\t,\t" + num);
pw.flush();
pw.println("+" + "\t,\t" + num);
}
} else if (c == '-') {
sb = new StringBuffer();
sb.append(c);
c = (char) fr.read();
if (c == '-') {
sb.append(c);
num = this.search(new String(sb));
System.out.println(sb + "\t,\t" + num);
pw.flush();
pw.println(sb + "\t,\t" + num);
c = (char) fr.read();
continue;
} else {
num = this.search("-");
System.out.println("-" + "\t,\t" + num);
pw.flush();
pw.println("-" + "\t,\t" + num);
}
} else if (c == '*') {
num = this.search("*");
System.out.println("*" + "\t,\t" + num);
pw.flush();
pw.println("*" + "\t,\t" + num);
c = (char) fr.read();
continue;
} else if (c == '/') {
num = this.search("/");
System.out.println("/" + "\t,\t" + num);
pw.flush();
pw.println("/" + "\t,\t" + num);
c = (char) fr.read();
continue;
} else if (c == '=') {
num = this.search("=");
System.out.println("=" + "\t,\t" + num);
pw.flush();
pw.println("=" + "\t,\t" + num);
c = (char) fr.read();
continue;
} else if (c == '<') {
sb = new StringBuffer();
sb.append(c);
c = (char) fr.read();
if (c == '>') {
sb.append(c);
num = this.search(new String(sb));
System.out.println(sb + "\t,\t" + num);
pw.flush();
pw.println(sb + "\t,\t" + num);
c = (char) fr.read();
continue;
} else if (c == '=') {
sb.append(c);
num = this.search(new String(sb));
System.out.println(sb + "\t,\t" + num);
pw.flush();
pw.println(sb + "\t,\t" + num);
c = (char) fr.read();
continue;
} else {
num = this.search("<");
System.out.println("<" + "\t,\t" + num);
pw.flush();
pw.println("<" + "\t,\t" + num);
}
} else if (c == '>') {
sb = new StringBuffer();
sb.append(c);
c = (char) fr.read();
if (c == '=') {
sb.append(c);
num = this.search(new String(sb));
System.out.println(sb + "\t,\t" + num);
pw.flush();
pw.println(sb + "\t,\t" + num);
c = (char) fr.read();
continue;
} else {
num = this.search(">");
System.out.println(">" + "\t,\t" + num);
pw.flush();
pw.println(">" + "\t,\t" + num);
}
} else if (c == '{') {
num = this.search("{");
System.out.println("{" + "\t,\t" + num);
pw.flush();
pw.println("{" + "\t,\t" + num);
c = (char) fr.read();
continue;
} else if (c == '}') {
num = this.search("}");
System.out.println("}" + "\t,\t" + num);
pw.flush();
pw.println("}" + "\t,\t" + num);
c = (char) fr.read();
continue;
} else if (c == '#') {
num = this.search("#");
System.out.println("#" + "\t,\t" + num);
pw.flush();
pw.println("#" + "\t,\t" + num);
c = (char) fr.read();
continue;
} else {
c = (char) fr.read();
continue;
}
}
fr.close();
pw.flush();
pw.close();
fw.close();
} catch (IOException e) {
System.out.println("文件操作出錯!");
}
}
private String[] words = { "and", "begin", "const", "div", "do", "else",
"end", "function", "if", "integer", "not", "or", "procedure",
"program", "read", "real", "then", "type", "var", "while", "write",
"標(biāo)識符", "無符號數(shù)", ",", ";", ":", ".", "(", ")", "[", "]", "其他", "++",
"--", "+", "-", "*", "/", "=", "<", ">", "<>", "<=", ">=", ":=",
"{", "}", "#" };
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -