📄 compiler.java
字号:
package byy;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Compiler {
static String keyword[] = {"AND","BEGIN","CONST","DIV","DO","ELSE","END",
"FUNCTION","IF","INTEGER","NOT","OR","PROCEDURE",
"PROGRAM","READ","REAL","THEN","TYPE","VAR","WHILE",
"WRITE"};
static String symbol[] = {",",";",":",".","(",")","[","]","..","+=","-=",
"+","-","*","/","=","<",">","<>","<=",">=",":=","{","}","#"};
public static boolean isNumeric(String str){
for (int i = str.length();--i>=0;){
if (!Character.isDigit(str.charAt(i))){
return false;
}
}
return true;
}
public static int match(String str){
for(int i = 0;i < keyword.length;i++){
if(str.equalsIgnoreCase(keyword[i]))
return i;
}
for(int i = 0;i < symbol.length;i++){
if(str.equals(symbol[i]))
return i + 23;
}
if(isNumeric(str))
return 22;
else
return 21;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
StringBuffer buf = new StringBuffer();
File f = new File("c:\\pascal.txt");
if(f.exists()){
try {
FileReader fr = new FileReader("c:\\pascal.txt");
BufferedReader br = new BufferedReader(fr);
String temp = null;
Pattern pt =
Pattern.compile("((_|[a-zA-Z])(\\p{Alnum})*)|\\+=|-=|:=|-|\\+|>=|<=|<>|<|>|=|:|;|\\(|\\)|\\{|\\}|\\[|\\]|,|#|\\*|/|\\..|\\.|\\d{1,50}");
System.out.println("The Result :");
while((temp = br.readLine()) != null){
Matcher ma = pt.matcher(temp);
while(ma.find()){
System.out.println(" " + ma.group(0) + " , " + match(ma.group()));
ma.appendReplacement(buf," ");
}
ma.appendTail(buf);
}
System.out.println(" OVER !");
// System.out.println(buf);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -