EOS 2  1.1.0
Einfache Objektbasierte Sprache
LogicalAnd.java
gehe zur Dokumentation dieser Datei
1 package de.lathanda.eos.baseparser;
2 
3 import de.lathanda.eos.vm.Command;
4 import de.lathanda.eos.vm.commands.And;
5 
6 import java.util.ArrayList;
7 
14 public class LogicalAnd extends Expression {
15 
16  private final Expression left;
17  private final Expression right;
18 
19  public LogicalAnd(Expression left, Expression right) {
20  this.left = left;
21  this.right = right;
22  type = Type.getBoolean();
23  prio = 1;
24  }
25 
26  @Override
27  public void compile(ArrayList<Command> ops, boolean autoWindow) throws Exception {
28  left.compile(ops, autoWindow);
29  right.compile(ops, autoWindow);
30  ops.add(new And());
31  }
32 
33  @Override
34  public void resolveNamesAndTypes(Expression with, Environment env) {
35  left.resolveNamesAndTypes(with, env);
36  right.resolveNamesAndTypes(with, env);
37  if (!left.getType().isBoolean() || !right.getType().isBoolean()) {
38  env.addError(marker, "BooleanType", left.getType(), right.getType());
39  }
40  }
41 
42  @Override
43  public String toString() {
44  return "(" + left + " and " + right + ")";
45  }
46 
47  @Override
48  public String getLabel() {
49  return createText("And.Label", getLabelLeft(left), getLabelRight(right));
50  }
51 }
void addError(Marker marker, String errorId, Object... data)
String getLabelRight(Expression e)
Definition: Expression.java:82
LogicalAnd(Expression left, Expression right)
Definition: LogicalAnd.java:19
void resolveNamesAndTypes(Expression with, Environment env)
Definition: LogicalAnd.java:34
void compile(ArrayList< Command > ops, boolean autoWindow)
Definition: LogicalAnd.java:27
abstract void compile(ArrayList< Command > ops, boolean autoWindow)
final String createText(String id, Object... args)
Definition: Node.java:34
abstract void resolveNamesAndTypes(Expression with, Environment env)
static SystemType getBoolean()
Definition: Type.java:88
Impressum