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

📄 equalityexpressionnode.java

📁 是有关解释器的.用JAVA编写.可以解释一般的JAVA程序.
💻 JAVA
字号:
class EqualityExpressionNode extends EvaluatableNode
{
	char vOperator;
	EqualityOperandNode vFirstEqualityOperandNode;
	EqualityOperandNode vSecondEqualityOperandNode;
	Value vFirstEqualityOperandValue;
	Value vSecondEqualityOperandValue;
	
	static EqualityExpressionNode parserEqualityExpression(Environment env,Scanner s) throws ParserException, ScannerException
	{
		char tmpOperator=' ';
		EqualityOperandNode tmpFirstEqualityOperandNode;
		EqualityOperandNode tmpSecondEqualityOperandNode = null;
		
		tmpFirstEqualityOperandNode= EqualityOperandNode.parserEqualityOperand(env,s);
		Token t= s.token();
		if(t.isOperator()&&((OperatorToken)t).isEquals())
		{
			tmpOperator= ((OperatorToken)t).content();
			matchOperator(s,tmpOperator);
			tmpSecondEqualityOperandNode= EqualityOperandNode.parserEqualityOperand(env,s);
		}
		
		return new EqualityExpressionNode(tmpOperator,tmpFirstEqualityOperandNode,tmpSecondEqualityOperandNode);		
	}
	
	EqualityExpressionNode()
	{
		vFirstEqualityOperandNode = null;
		vSecondEqualityOperandNode = null;
	}
	EqualityExpressionNode(char aOperator,EqualityOperandNode aFirstEqualityOperandNode,EqualityOperandNode aSecondEqualityOperandNode)
	{
		vOperator = aOperator;
		vFirstEqualityOperandNode = aFirstEqualityOperandNode;
		vSecondEqualityOperandNode = aSecondEqualityOperandNode;
	}
	String format(int indent)
	{
		String str= vFirstEqualityOperandNode.format(indent);
		if(vSecondEqualityOperandNode!=null)
			str+= "=="+vSecondEqualityOperandNode.format(indent);
		return str;
	}
	Value evaluate(Environment env) throws InterpreterException
	{		
		if(vSecondEqualityOperandNode!=null)					
			return vFirstEqualityOperandNode.evaluate(env).isEqual(vSecondEqualityOperandNode.evaluate(env));
		return vFirstEqualityOperandNode.evaluate(env);
	}
	boolean typeCheck(Environment env) throws InterpreterException
	{
		if(vFirstEqualityOperandNode.typeCheck(env))
		{			
			vFirstEqualityOperandValue= vFirstEqualityOperandNode.evaluate(env);
			if(vSecondEqualityOperandNode!=null)			
				if(vSecondEqualityOperandNode.typeCheck(env))
				{
					vSecondEqualityOperandValue= vSecondEqualityOperandNode.evaluate(env);					
					if(!vFirstEqualityOperandValue.getClass().getName().equals(vSecondEqualityOperandValue.getClass().getName()))
						ProgramNode.mTypeCheckError(this.format(4));
				}else ProgramNode.mTypeCheckError(this.format(4));			
		}else ProgramNode.mTypeCheckError(this.format(4));		
		
		return true;
	}
}

⌨️ 快捷键说明

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