📄 unaryexpressionnode.java
字号:
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 + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -