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

📄 parsing.java

📁 PEPA模型性能分析工具
💻 JAVA
字号:
package trans;

import java.util.Stack;

import semantic.Action;
import semantic.ActionSet;
import semantic.GoState;
import semantic.Activity;
import semantic.ParserException;
import semantic.Rate;
import semantic.RateException;
import semantic.Scanner;
import semantic.Symbol;
import semantic.Token;
import semantic.Process;

public class Parsing {
	
	private Scanner scan;
	private GoState actor;
	private static boolean isEnd=false;
	public Stack actstack=new Stack();
	public Stack symstack=new Stack();
	
	Parsing(Scanner s,GoState a)
	{
		scan=s;
		actor=a;
		Action.initialize();
		Rate.initialize();
		Process.initialize();
		isEnd=false;
	}
	public static boolean isEnd()
	{
		return isEnd;
	}
	public static void setEnd(boolean f)
	{
		isEnd=f;
	}
	public void finalize()
	{
		actstack=null;
		symstack=null;
	}
	public Symbol parser() throws ParserException,RateException
	{
		Symbol sym=null;
		symstack.add(new Symbol(Token.EOF));
		actstack.add(new Integer(0));

		Symbol curToken=scan.next_token();
		while(!isEnd)
		{
			Integer state=(Integer)actstack.peek();
			int act=actor.get_action(state.intValue(),curToken.token);
			if(act>0)
			{
				Integer newstate=new Integer(act-1);
				actstack.add(newstate);
				symstack.add(curToken);
				
				
				curToken=scan.next_token();
			}else if(act<0)
			{
				int a=-act-1;
				sym=actor.do_action(a,symstack);
				short s_num=actor.sym_num(a);
				short s_size=actor.sym_size(a);
				for(int i=0;i<s_size;i++)
				{
					symstack.pop();
					actstack.pop();
				}
				Integer item=(Integer)actstack.peek();
				act=actor.get_reduce(item.intValue(),s_num);
				symstack.push((Object)sym);
				actstack.push(new Integer(act));
				
			}else
			{
				sym=(Symbol)symstack.peek();
				setEnd(true);
				throw new ParserException("异常退出!行:"+Lexer.getLine()+" 列:"+Lexer.getColumn());			
			}
		}
		
		return sym;
	}
	


}

⌨️ 快捷键说明

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