📄 whilestatementnode.java
字号:
class WhileStatementNode extends ExecutableNode
{
OrClauseNode vOrClauseNode;
StatementNode vStatementNode;
Value vOrClauseValue;
static WhileStatementNode parserWhileStatement(Environment env, Scanner s)throws ParserException, ScannerException
{
OrClauseNode tmpOrClauseNode;
StatementNode tmpStatementNode;
matchKeyword(s,"while");
matchBracket(s,'(');
tmpOrClauseNode= OrClauseNode.parserOrClause(env,s);
matchBracket(s,')');
tmpStatementNode= StatementNode.parserStatement(env,s);
return new WhileStatementNode(tmpOrClauseNode, tmpStatementNode);
}
static boolean mIsWhileStatement(Scanner s) throws ScannerException
{
return isKeywordToken(s,"while");
}
WhileStatementNode()
{
vOrClauseNode= null;
vStatementNode= null;
}
WhileStatementNode(OrClauseNode aOrClauseNode, StatementNode aStatementNode)
{
vOrClauseNode= aOrClauseNode;
vStatementNode= aStatementNode;
}
String format(int indent)
{
return space(indent) + "while(" + vOrClauseNode.format(indent) + ")\n" +
space(indent)+ vStatementNode.format(indent);
}
Environment run(Environment env) throws InterpreterException
{
BooleanValue tmpValue= (BooleanValue)vOrClauseValue;
while(tmpValue.booleanValue())
{
vStatementNode.run(env);
tmpValue= (BooleanValue)vOrClauseNode.evaluate(env);
}
return env;
}
boolean typeCheck(Environment env) throws InterpreterException
{
if(vOrClauseNode.typeCheck(env))
{
vOrClauseValue= vOrClauseNode.evaluate(env);
if(vOrClauseValue.isBoolean())
return vStatementNode.typeCheck(env);
else ProgramNode.mTypeCheckError(this.format(4));
}else ProgramNode.mTypeCheckError(this.format(4));
return true;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -