⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 scannertable.java

📁 实验软装置(基于表达式的计算器ExprEval) 很不错的 有帮助于学习提高
💻 JAVA
字号:
package scanner;
import java.util.*;
import java.io.*;



public class ScannerTable {

	/**
	 * number of states
	 */
	int states;
	/**
	 * a list to store states
	 */
	ArrayList stateList;
	/**
	 * file to read from
	 */
	String fileName;
	/**
	 * constructor
	 * @param filename file name
	 * @throws IOException
	 */
	public ScannerTable(String filename) throws IOException
	{
		stateList=new ArrayList();
		fileName=filename;
		InputStream is=new FileInputStream(filename);
		String Str;
		BufferedReader bfr=new BufferedReader(new InputStreamReader(is));
		Str=bfr.readLine();
		states=Integer.parseInt(Str);
		Str=bfr.readLine();
		while(Str!=null){
			
			//String tokens[]=Str.split(" ");
				stateList.add(Str);
			Str=bfr.readLine();
		}
	}
	
	/**
	 * get the next state
	 * @param state current state
	 * @param ch character
	 * @return an integer denoting the next state
	 */
	public int getState(int state,char ch)
	{
		int i;
		for(i=0;i<stateList.size();i++){
			String tokens[]=((String)stateList.get(i)).split(" ");
			//System.out.println(state);
			if(Integer.parseInt(tokens[0])==state){
				int j;
				for(j=4;j<tokens.length;j+=2){
					if(tokens[j].charAt(0)==ch){
						return Integer.parseInt(tokens[j+1]);
					}
				}
			}
		}
		return -1;
	}
	
	/**
	 * whether a state is a final state
	 * @param state a state
	 * @return true if final
	 */
	public boolean isFinal(int state)
	{
		int i;
		for(i=0;i<stateList.size();i++){
			String tokens[]=((String)stateList.get(i)).split(" ");
			if(Integer.parseInt(tokens[0])==state){
				int j;
					if(tokens[1].charAt(0)=='$'){
						return true;
					}
					else
						return false;

			}
		}
		return false;
	}
	/**
	 * get the number of backtracks
	 * @param state a state
	 * @return number of backtracks
	 */
	public int getBackTrack(int state)
	{
		int i;
		for(i=0;i<stateList.size();i++){
			String tokens[]=((String)stateList.get(i)).split(" ");
			if(Integer.parseInt(tokens[0])==state){
				int j;
					return Integer.parseInt(tokens[2]);

			}
		}
		return 0;
	}
	/**
	 * get return of a state
	 * @param state a final state
	 * @return an integer denoting the return
	 */
	public int getReturn(int state)
	{
		int i;
		for(i=0;i<stateList.size();i++){
			String tokens[]=((String)stateList.get(i)).split(" ");
			if(Integer.parseInt(tokens[0])==state){
				int j;
					return Integer.parseInt(tokens[3]);

			}
		}
		return 0;
	}
	
	/**
	 * get name of a state
	 * @param state a state
	 * @return name of a state
	 */
	public String getName(int state)
	{
		int i;
		for(i=0;i<stateList.size();i++){
			String tokens[]=((String)stateList.get(i)).split(" ");
			if(Integer.parseInt(tokens[0])==state){
				return tokens[1];
			}
		}
		return "$";
	}
	
	
	
	
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -