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

📄 rate.java

📁 PEPA模型性能分析工具
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
                {
                     return 1;
                }
                case RateType.Strung_tag:
                {
                     return 1;
                }
                case RateType.Plus_tag:
                {
                     return 1;
                }
                }
                return - 1;
              }
         }
         case RateType.Mult_tag:
            {
               Rate.Mult case11 = (Rate.Mult)this;
               Rate out2 = case11.r2;
               Rate out1 = case11.r1;
               {
                  switch (r.type) {
                  case RateType.Mult_tag:
                     {
                        Rate.Mult case21 = (Rate.Mult)r;
                        Rate in2 = case21.r2;
                        Rate in1 = case21.r1;
                        int temp = out1.compare(in1);
                        if (temp != 0) return temp;
                        return out2.compare(in2);
                     }

                  case RateType.Spec_tag:
                     {
                        return 1;
                     }

                  case RateType.Unspec_tag:
                     {
                        return 1;
                     }

                  case RateType.Strung_tag:
                     {
                        return 1;
                     }

                  case RateType.Plus_tag:
                     {
                        return 1;
                     }

                  case RateType.Sub_tag:
                     {
                        return 1;
                     }

                  }
                  return - 1;
               }
            }

         case RateType.Div_tag:
            {
               Rate.Div case11 = (Rate.Div)this;
               Rate out2 = case11.r2;
               Rate out1 = case11.r1;
               {
                  switch (r.type) {
                  case RateType.Div_tag:
                     {
                        Rate.Div case21 = (Rate.Div)r;
                        Rate in2 = case21.r2;
                        Rate in1 = case21.r1;
                        int temp = out1.compare(in1);
                        if (temp != 0) return temp;
                        return out2.compare(in2);
                     }

                  case RateType.Spec_tag:
                     {
                        return 1;
                     }

                  case RateType.Unspec_tag:
                     {
                        return 1;
                     }

                  case RateType.Strung_tag:
                     {
                        return 1;
                     }

                  case RateType.Plus_tag:
                     {
                        return 1;
                     }

                  case RateType.Sub_tag:
                     {
                        return 1;
                     }

                  case RateType.Mult_tag:
                     {
                        return 1;
                     }

                  }
                  return - 1;
               }
            }

         case RateType.Min_tag:
            {
               Rate.Min case11 = (Rate.Min)this;
               Rate out2 = case11.r2;
               Rate out1 = case11.r1;
               {
                  switch (r.type) {
                  case RateType.Min_tag:
                     {
                        Rate.Min case21 = (Rate.Min)r;
                        Rate in2 = case21.r2;
                        Rate in1 = case21.r1;
                        int temp = out1.compare(in1);
                        if (temp != 0) return temp;
                        return out2.compare(in2);
                     }

                  case RateType.Spec_tag:
                     {
                        return 1;
                     }

                  case RateType.Unspec_tag:
                     {
                        return 1;
                     }

                  case RateType.Strung_tag:
                     {
                        return 1;
                     }

                  case RateType.Plus_tag:
                     {
                        return 1;
                     }

                  case RateType.Sub_tag:
                     {
                        return 1;
                     }

                  case RateType.Mult_tag:
                     {
                        return 1;
                     }

                  case RateType.Div_tag:
                     {
                        return 1;
                     }

                  }
                  throw new Error(); // inserted for safety
               }
            }

         }
		 return -1;
      }
	public Rate evalRate() throws RateException
	{
		Rate first;
		Rate second;
		switch(this.type)
		{
		case RateType.Spec_tag:
		{
			return this;
		}
		case RateType.Strung_tag:
		{
			String s=((Strung)this).item;
			if(iseval==true) return Rate.Number(new Double(1.0));
			if(Rate.def(s).equals((Object)new Double(1.0))) return this;
			else return Spec(s);
		}
		case RateType.Unspec_tag:
		{
			return this;
		}
		case RateType.Number_tag:
		{
			return this;
		}
		case RateType.Plus_tag:
		{
			Plus r=(Plus)this;
			Rate r1=r.r1;
			Rate r2=r.r2;
			switch(r1.type)
			{
			case RateType.Spec_tag:
			{
				first=r1;
				break;
			}
			case RateType.Unspec_tag:
			{
				first=r1;
				break;
			}
			default:
			{
				first=r1.evalRate();
				break;
			}
			}
			switch(r2.type)
			{
			case RateType.Spec_tag:
			{
				second=r2;
				break;
			}
			case RateType.Unspec_tag:
			{
				second=r2;
				break;
			}
			default:
			{
				second=r2.evalRate();
				break;
			}
			}
			return first.plus(second);
		}
		case RateType.Min_tag:
		{
			Min r=(Min)this;
			Rate r1=r.r1;
			Rate r2=r.r2;
			switch(r1.type)
			{
			case RateType.Spec_tag:
			{
				first=r1;
				break;
			}
			case RateType.Unspec_tag:
			{
				first=r1;
				break;
			}
			default:
			{
				first=r1.evalRate();
				break;
			}
			}
			switch(r2.type)
			{
			case RateType.Spec_tag:
			{
				second=r2;
				break;
			}
			case RateType.Unspec_tag:
			{
				second=r2;
				break;
			}
			default:
			{
				second=r2.evalRate();
				break;
			}
			}
			return first.min(second);
		}
		case RateType.Mult_tag:
		{
			Mult r=(Mult)this;
			Rate r1=r.r1;
			Rate r2=r.r2;
			switch(r1.type)
			{
			case RateType.Spec_tag:
			{
				first=r1;
				break;
			}
			case RateType.Unspec_tag:
			{
				first=r1;
				break;
			}
			default:
			{
				first=r1.evalRate();
				break;
			}
			}
			switch(r2.type)
			{
			case RateType.Spec_tag:
			{
				second=r2;
				break;
			}
			case RateType.Unspec_tag:
			{
				second=r2;
				break;
			}
			default:
			{
				second=r2.evalRate();
				break;
			}
			}
			return first.mult(second);
		}
		case RateType.Sub_tag:
		{
			Sub r=(Sub)this;
			Rate r1=r.r1;
			Rate r2=r.r2;
			switch(r1.type)
			{
			case RateType.Spec_tag:
			{
				first=r1;
				break;
			}
			case RateType.Unspec_tag:
			{
				first=r1;
				break;
			}
			default:
			{
				first=r1.evalRate();
				break;
			}
			}
			switch(r2.type)
			{
			case RateType.Spec_tag:
			{
				second=r2;
				break;
			}
			case RateType.Unspec_tag:
			{
				second=r2;
				break;
			}
			default:
			{
				second=r2.evalRate();
				break;
			}
			}
			return first.minus(second);
		}
		case RateType.Div_tag:
		{
			Div r=(Div)this;
			Rate r1=r.r1;
			Rate r2=r.r2;
			switch(r1.type)
			{
			case RateType.Spec_tag:
			{
				first=r1;
				break;
			}
			case RateType.Unspec_tag:
			{
				first=r1;
				break;
			}
			default:
			{
				first=r1.evalRate();
				break;
			}
			}
			switch(r2.type)
			{
			case RateType.Spec_tag:
			{
				second=r2;
				break;
			}
			case RateType.Unspec_tag:
			{
				second=r2;
				break;
			}
			default:
			{
				second=r2.evalRate();
				break;
			}
			}
			return first.div(second);
		}
		}
		throw new Error();
	}
	public String toString()
	{
		switch(this.type)
		{
		case RateType.Div_tag:
		{
			Div r=(Div)this;
			Rate r1=r.r1;
			Rate r2=r.r2;
			return "("+r1.toString()+"/"+r2.toString()+")";
		}
		case RateType.Min_tag:
		{
			Min r=(Min)this;
			Rate r1=r.r1;
			Rate r2=r.r2;
			return "("+r1.toString()+","+r2.toString()+")";
		}
		case RateType.Mult_tag:
		{
			Mult r=(Mult)this;
			Rate r1=r.r1;
			Rate r2=r.r2;
			return "("+r1.toString()+"*"+r2.toString()+")";
		}
		case RateType.Plus_tag:
		{
			Plus r=(Plus)this;
			Rate r1=r.r1;
			Rate r2=r.r2;
			return "("+r1.toString()+"+"+r2.toString()+")";
		}
		case RateType.Sub_tag:
		{
			Sub r=(Sub)this;
			Rate r1=r.r1;
			Rate r2=r.r2;
			return "("+r1.toString()+"+"+r2.toString()+")";
		}
		case RateType.Spec_tag:
		{
			String s = ((Spec)this).item;
            return s+"="+this.def(s);
		}
		case RateType.Unspec_tag:
		{
			Double d=((Unspec)this).item;
			return d+"*Top";
		}
		case RateType.Strung_tag:
		{
			String s=((Strung)this).item;
			return s;
		}
		case RateType.Number_tag:
		{
			Double d=((Number)this).getRate();
			return d.toString();
		}
		}
		return null;
	}
	public boolean isPassive()
	{
		if(this.type==RateType.Unspec_tag)
			return true;
		else return false;
	}
	public double fintValue() throws RateException
	{
		switch(this.type)
		{
		case RateType.Spec_tag:
		{
			Spec r=(Spec)this;
			String s=r.item;
			return def(s).doubleValue();
		}
		case RateType.Number_tag:
		{
			Number r=(Number)this;
			return r.getRate().doubleValue();
		}
		}
		throw new RateException("Can't transfer the rate to double");
	}
	public static class Spec extends Rate 
	{
		public String item;
		public Spec(String rate) 
		{
		    type =RateType.Spec_tag;
		    this.item = rate;
		}
		public Double getRate()
		{
			return def(item);
		}
	} 
	public static class Number extends Rate 
	{
		private Double item;
		public Number(Double d)
		{
			type=RateType.Number_tag;
			item=d;
		}
		public Double getRate()
		{
			return item;
		}
	}
	public static class Unspec extends Rate 
	{
		private Double item;
		public Unspec(Double d)
		{
			type=RateType.Unspec_tag;
			item=d;
		}
	}
	public static class Strung extends Rate
	{
		private String item;
		public Strung(String s)
		{
			type=RateType.Strung_tag;
			item=s;
		}
	}
	public static class Sub extends Rate
	{
		Rate r1;
		Rate r2;
		public Sub(Rate R1,Rate R2)
		{
			type=RateType.Sub_tag;
			r1=R1;
			r2=R2;
		}
	}
	 public static class Div extends Rate
	 {
		 Rate r1;
		 Rate r2;
		 public Div(Rate R1,Rate R2)
		 {
			 type=RateType.Div_tag;
			 r1=R1;
			 r2=R2;
		 }
	 }
	 public static class Mult extends Rate
	 {
		 Rate r1;
		 Rate r2;
		 public Mult(Rate R1,Rate R2)
		 {
			 type=RateType.Mult_tag;
			 r1=R1;
			 r2=R2;
		 }
	 }
	 public static class Plus extends Rate
	 {
		 Rate r1;
		 Rate r2;
		 public Plus(Rate R1,Rate R2)
		 {
			 type=RateType.Plus_tag;
			 r1=R1;
			 r2=R2;
		 }
	 }
	 public static class Min extends Rate
	 {
		 Rate r1;
		 Rate r2;
		 public Min(Rate R1,Rate R2)
		 {
			 type=RateType.Min_tag;
			 r1=R1;
			 r2=R2;
		 }
	 }
}

⌨️ 快捷键说明

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