package org.develnext.jphp.core.tokenizer.token.stmt;
import org.develnext.jphp.core.tokenizer.TokenMeta;
import org.develnext.jphp.core.tokenizer.TokenType;
import java.util.Arrays;
import java.util.List;
public class BodyStmtToken extends StmtToken {
private Boolean constantly;
private boolean alternativeSyntax = false;
private List<ExprStmtToken> instructions;
public BodyStmtToken(TokenMeta meta) {
super(meta, TokenType.T_J_CUSTOM);
}
public List<ExprStmtToken> getInstructions() {
return instructions;
}
public void setInstructions(List<ExprStmtToken> instructions) {
this.instructions = instructions;
this.constantly = null;
}
public static BodyStmtToken of(ExprStmtToken... instructions){
BodyStmtToken body = new BodyStmtToken(TokenMeta.of(instructions));
body.setInstructions(Arrays.asList(instructions));
return body;
}
public static BodyStmtToken of(List<ExprStmtToken> instructions) {
BodyStmtToken body = new BodyStmtToken(TokenMeta.of(instructions));
body.setInstructions(instructions);
return body;
}
public boolean isAlternativeSyntax() {
return alternativeSyntax;
}
public void setAlternativeSyntax(boolean alternativeSyntax) {
this.alternativeSyntax = alternativeSyntax;
}
public boolean isConstantly() {
if (constantly != null)
return constantly;
for(ExprStmtToken e : instructions)
if (!e.isConstantly())
return constantly = false;
return constantly = true;
}
}