📄 andclausenode.java
字号:
class AndClauseNode extends EvaluatableNode
{
EqualityExpressionNode vEqualityExpressionNode;
AndClauseNode vAndClauseNode;
Value vEqualityExpressionValue;
Value vAndClauseValue;
static AndClauseNode parserAndClause(Environment env, Scanner s)
throws ParserException,
ScannerException {
EqualityExpressionNode tmpEqualityExpressionNode;
AndClauseNode tmpAndClauseNode = null;
Token t;
tmpEqualityExpressionNode = EqualityExpressionNode
.parserEqualityExpression(env, s);
t = s.token();
if (t.isOperator() && ((OperatorToken) t).isAnd()) {
matchOperator(s, ((OperatorToken) t).content());
tmpAndClauseNode = AndClauseNode.parserAndClause(env, s);
}
return new AndClauseNode(tmpEqualityExpressionNode, tmpAndClauseNode);
}
AndClauseNode()
{
vEqualityExpressionNode = null;
vAndClauseNode = null;
}
AndClauseNode(EqualityExpressionNode aEqualityExpressionNode, AndClauseNode aAndClauseNode)
{
vEqualityExpressionNode = aEqualityExpressionNode;
vAndClauseNode = aAndClauseNode;
}
String format(int indent)
{
String str= vEqualityExpressionNode.format(indent);
if(vAndClauseNode!=null)
str+= "&&" + vAndClauseNode.format(indent);
return str;
}
Value evaluate(Environment env) throws InterpreterException
{
if(vAndClauseNode!=null)
return vEqualityExpressionNode.evaluate(env).and(vAndClauseNode.evaluate(env));
return vEqualityExpressionNode.evaluate(env);
}
boolean typeCheck(Environment env) throws InterpreterException
{
if(vEqualityExpressionNode.typeCheck(env))
{
vEqualityExpressionValue= vEqualityExpressionNode.evaluate(env);
if(vAndClauseNode!=null)
if(vEqualityExpressionValue.isBoolean())
{
if(vAndClauseNode.typeCheck(env))
{
vAndClauseValue= vAndClauseNode.evaluate(env);
if(vAndClauseValue.isBoolean())return true;
else ProgramNode.mTypeCheckError(this.format(4));
}else ProgramNode.mTypeCheckError(this.format(4));
}else ProgramNode.mTypeCheckError(this.format(4));
}else ProgramNode.mTypeCheckError(this.format(4));
return true;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -