📄 primitiveselectornode.java
字号:
class PrimitiveSelectorNode extends EvaluatableNode
{
static String[] vPrimitiveSelectors={"turnOff","move","turnLeft","pickBeeper","putBeeper",
"frontIsClear","nextToABeeper","anyBeepersInBeeperBag","facingNorth","facingSouth",
"facingEast","facingWest"};
String vPrimitiveSelector;
static PrimitiveSelectorNode parserPrimitiveSelector(Environment env, Scanner s) throws ParserException, ScannerException
{
return new PrimitiveSelectorNode(matchIdentifier(s));
}
PrimitiveSelectorNode(String aString)
{
vPrimitiveSelector= aString;
}
static boolean mIsPrimitiveSelector(Scanner s) throws ScannerException
{
int i=0;
while(i<vPrimitiveSelectors.length)
{
if(isIdentifierToken(s,vPrimitiveSelectors[i]))return true;
i++;
}
return false;
}
static boolean mIsPrimitiveSelector(String str)
{
int i=0;
while(i<vPrimitiveSelectors.length)
{
if(vPrimitiveSelectors[i].equals(str))return true;
i++;
}
return false;
}
String format(int indent)
{
return vPrimitiveSelector;
}
Value evaluate(Environment env) throws InterpreterException
{
boolean result= true;
if(ProgramNode.vMessageReciever!=null)
{
QueryRobot r= ((RobotValue)env.at(ProgramNode.vMessageReciever)).robotRef();
if(r!=null)
{
if(vPrimitiveSelector.equals("turnOff"))r.turnOff();else
if(vPrimitiveSelector.equals("move"))r.move();else
if(vPrimitiveSelector.equals("turnLeft"))r.turnLeft();else
if(vPrimitiveSelector.equals("pickBeeper"))r.pickBeeper();else
if(vPrimitiveSelector.equals("putBeeper"))r.putBeeper();else
if(vPrimitiveSelector.equals("frontIsClear"))result=r.frontIsClear();else
if(vPrimitiveSelector.equals("nextToABeeper"))result=r.nextToABeeper();else
if(vPrimitiveSelector.equals("anyBeepersInBeeperBag"))result=r.anyBeepersInBeeperBag();else
if(vPrimitiveSelector.equals("facingNorth"))result=r.facingNorth();else
if(vPrimitiveSelector.equals("facingSouth"))result=r.facingSouth();else
if(vPrimitiveSelector.equals("facingEast"))result=r.facingEast();else
if(vPrimitiveSelector.equals("facingWest"))result=r.facingWest();
env.updateValue(ProgramNode.vMessageReciever,new RobotValue(r));
}
else throw new InterpreterException("UninitializedVariable " + ProgramNode.vMessageReciever);
}
return new BooleanValue(result);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -