unaryexpressionnode.java
来自「是有关解释器的.用JAVA编写.可以解释一般的JAVA程序.」· Java 代码 · 共 50 行
JAVA
50 行
class UnaryExpressionNode extends EvaluatableNode
{
char vOperator;
SimpleExpressionNode vSimpleExpressionNode;
Value vSimpleExpressionValue;
static UnaryExpressionNode parserUnaryExpression(Environment env,Scanner s) throws ParserException, ScannerException
{
char tmpOperator= ' ';
SimpleExpressionNode tmpSimpleExpressionNode;
if(isOperatorToken(s,'!')||isOperatorToken(s,'-'))
{
tmpOperator= ((OperatorToken)s.token()).content();
matchOperator(s,tmpOperator);
}
tmpSimpleExpressionNode= SimpleExpressionNode.parserSimpleExpression(env,s);
return new UnaryExpressionNode(tmpOperator,tmpSimpleExpressionNode);
}
UnaryExpressionNode()
{
vSimpleExpressionNode= null;
}
UnaryExpressionNode(char aOperator, SimpleExpressionNode aSimpleExpressionNode)
{
vOperator= aOperator;
vSimpleExpressionNode= aSimpleExpressionNode;
}
String format(int indent)
{
if(vOperator!=' ')return vOperator+vSimpleExpressionNode.format(indent);
else return vSimpleExpressionNode.format(indent);
}
Value evaluate(Environment env) throws InterpreterException
{
Value simpleExpressionValue= vSimpleExpressionNode.evaluate(env);
if(vOperator!=' ')
return simpleExpressionValue.negate();
return simpleExpressionValue;
}
boolean typeCheck(Environment env) throws InterpreterException
{
if(vSimpleExpressionNode.typeCheck(env))
vSimpleExpressionValue= vSimpleExpressionNode.evaluate(env);
else ProgramNode.mTypeCheckError(this.format(4));
return true;
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?