messagesendnode.java
来自「是有关解释器的.用JAVA编写.可以解释一般的JAVA程序.」· Java 代码 · 共 53 行
JAVA
53 行
class MessageSendNode extends EvaluatableNode
{
IdentifierNode vIdentifierNode;
MessageNode vMessageNode;
static MessageSendNode parseMessageSend(Environment env, Scanner s) throws ParserException, ScannerException
{
Token t= s.followingToken();
IdentifierNode tmpIdentifierNode=null;
MessageNode tmpMessageNode;
if(t.isSimple()&&((SimpleToken)t).isMessageSend())
{
tmpIdentifierNode= IdentifierNode.parserIndentifier(env,s);
matchSimple(s,'.');
}
tmpMessageNode= MessageNode.parserMessage(env,s);
return new MessageSendNode(tmpIdentifierNode,tmpMessageNode);
}
MessageSendNode(IdentifierNode aIdentifierNode, MessageNode aMessageNode)
{
vIdentifierNode= aIdentifierNode;
vMessageNode= aMessageNode;
}
MessageSendNode()
{
vIdentifierNode= null;
vMessageNode= null;
}
String format(int indent)
{
String str="";
if(vIdentifierNode!=null)str= vIdentifierNode.format(indent)+".";
return str+vMessageNode.format(indent);
}
Value evaluate(Environment env) throws InterpreterException
{
String lastReceiver= ProgramNode.vMessageReciever;
if(vIdentifierNode!=null)
ProgramNode.vMessageReciever= vIdentifierNode.vName;
Value result= vMessageNode.evaluate(env);
ProgramNode.vMessageReciever= lastReceiver;
return result;
}
boolean typeCheck(Environment env) throws InterpreterException
{
if(vIdentifierNode!=null)
ProgramNode.vMessageReciever= vIdentifierNode.vName;
return vMessageNode.typeCheck(env);
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?