variabledeclarationnode.java

来自「是有关解释器的.用JAVA编写.可以解释一般的JAVA程序.」· Java 代码 · 共 56 行

JAVA
56
字号
class VariableDeclarationNode extends ExecutableNode
{
	VariableTypeNode vVariableTypeNode;
	IdentifierNode vIdentifierNode;
	
	static VariableDeclarationNode parserVariableDeclaration(Environment env,Scanner s) throws ParserException, ScannerException
	{			
		VariableTypeNode tmpVariableTypeNode;
		IdentifierNode tmpIdentifierNode;
				
		tmpVariableTypeNode= VariableTypeNode.parserVariableType(env,s);
		tmpIdentifierNode= IdentifierNode.parserIndentifier(env,s);					
		
		return new VariableDeclarationNode(tmpVariableTypeNode, tmpIdentifierNode);
	}
	static boolean mIsVariableDeclaration(Scanner s) throws ScannerException
	{
		return VariableTypeNode.mIsVariableType(s);
	}
	String mGetIdentifier()
	{
		return vIdentifierNode.vName;
	}
	VariableDeclarationNode()
	{
		vVariableTypeNode = null;
		vIdentifierNode = null;
	}
	VariableDeclarationNode(VariableTypeNode aVariableTypeNode,IdentifierNode aIdentifierNode)
	{
		vVariableTypeNode= aVariableTypeNode;
		vIdentifierNode= aIdentifierNode;
	}
	String format(int indent)
	{
		return vVariableTypeNode.format(indent)+" "+vIdentifierNode.vName;
	}
	Environment run(Environment env) throws InterpreterException
	{		
		typeCheck(env);    //define variable in environment
		return env;
	}
	boolean typeCheck(Environment env) throws InterpreterException
	{
		if(vVariableTypeNode.vVariableType.equals("boolean"))
			env.add(vIdentifierNode.vName,new BooleanValue());else	
		if(vVariableTypeNode.vVariableType.equals("int"))			
			env.add(vIdentifierNode.vName,new NumberValue());else			
		if(vVariableTypeNode.vVariableType.equals("direction"))		
			env.add(vIdentifierNode.vName,new DirectionValue());else	
		if(vVariableTypeNode.vVariableType.equals("Robot"))
			env.add(vIdentifierNode.vName,new RobotValue());
		
		return true;
	}
}

⌨️ 快捷键说明

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