📄 readparameter.java
字号:
/**
*
*/
package cminusCompiler;
/**
* @author tanfei E-mail:tanfei158876110@163.com
* @version Create Time:2007-12-6 下午12:58:42 description:
*/
import java.io.BufferedReader;
import java.io.FileReader;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.StringTokenizer;
public class ReadParameter {
private LinkedList<Nonterminal> nonterminal;
private HashMap<Integer, String> terminal;
private HashMap<String, Integer> ter;
private BufferedReader brReaderN;
private BufferedReader brReader;
private String strLine;
private StringTokenizer tokenizer;
public ReadParameter(LinkedList<Nonterminal> nonterminal, HashMap<Integer, String> terminal, HashMap<String, Integer> ter) {
this.nonterminal = nonterminal;
this.terminal = terminal;
this.ter = ter;
try {
brReaderN = new BufferedReader(new FileReader("config/BNF"));
} catch (Exception e) {
e.printStackTrace();
System.out.println("The file BNF can not be found!");
System.exit(1);
}
try {
brReader = new BufferedReader(new FileReader("config/terminal"));
} catch (Exception e) {
e.printStackTrace();
System.out.println("The file terminal can not be found!");
System.exit(1);
}
}
public void readNonterminal() {
try {
strLine = brReaderN.readLine();
LinkedList<String> tempList = new LinkedList<String>();
Nonterminal nonter;
String token;
while (strLine != null) {
tokenizer = new StringTokenizer(strLine);
token = tokenizer.nextToken();
nonter = new Nonterminal(token);
tokenizer.nextToken();
while (tokenizer.hasMoreTokens()) {
token = tokenizer.nextToken();
while ((!token.equals("|"))) {
tempList.add(token);
//System.out.println("add the token: " + token);
if(tokenizer.hasMoreTokens())
token = tokenizer.nextToken();
else
break;
}
nonter.getFollowElement().add(tempList);
tempList = new LinkedList<String>();
//System.out.println(tempList.size());
//tempList.clear();
}
nonterminal.add(nonter);
strLine = brReaderN.readLine();
}
} catch (Exception e) {
e.printStackTrace();
System.out.println("The content in the file BNF may have some errors!");
System.exit(1);
}
}
public void readTerminal(){
try{
strLine = brReader.readLine();
int i = 0;
String token;
while(strLine != null){
tokenizer = new StringTokenizer(strLine);
token = tokenizer.nextToken();
while(tokenizer.hasMoreTokens()){
terminal.put(i, token);
ter.put(token, i);
i++;
token = tokenizer.nextToken();
}
terminal.put(i, token);
ter.put(token, i);
i++;
strLine = brReader.readLine();
ter.put("$", i);
}
}catch (Exception e){
e.printStackTrace();
System.out.println("The content in the file terminal may have some errors!");
System.exit(1);
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -