EOS 2  1.1.0
Einfache Objektbasierte Sprache
WhileDo.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.DebugPoint;
5 import de.lathanda.eos.vm.commands.Jump;
6 import de.lathanda.eos.vm.commands.JumpIf;
7 
8 import java.util.ArrayList;
9 
16 public class WhileDo extends Loop {
18  super(sequence, condition);
19  }
20 
21  @Override
22  public void compile(ArrayList<Command> ops, boolean autoWindow) throws Exception {
23  ArrayList<Command> cond = new ArrayList<>();
24  ArrayList<Command> body = new ArrayList<>();
25  cond.add(new DebugPoint(condition.getMarker()));
26  condition.compile(cond, autoWindow);
27  sequence.compile(body, autoWindow);
28  ops.add(new Jump(body.size() + 1));
29  ops.addAll(body);
30  ops.addAll(cond);
31  ops.add(new JumpIf(-(cond.size() + body.size())));
32  }
33 
34  @Override
35  public void resolveNamesAndTypes(Expression with, Environment env) {
36  sequence.resolveNamesAndTypes(with, env);
38  if (!condition.getType().isBoolean()) {
39  env.addError(marker, "ConditionType", condition.getType());
40  }
41  }
42 
43  @Override
44  public String toString() {
45  return "do\n" + sequence + "while " + condition;
46  }
47 
48  @Override
49  public String getLabel() {
50  return createText("DoWhile.Label", condition.getLabel());
51  }
52 
53  @Override
54  public boolean isPre() {
55  return true;
56  }
57 }
void addError(Marker marker, String errorId, Object... data)
final Expression condition
Definition: Loop.java:11
final Sequence sequence
Definition: Loop.java:10
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)
void resolveNamesAndTypes(Expression with, Environment env)
Definition: Sequence.java:67
void compile(ArrayList< Command > ops, boolean autoWindow)
Definition: Sequence.java:53
WhileDo(Expression condition, Sequence sequence)
Definition: WhileDo.java:17
void compile(ArrayList< Command > ops, boolean autoWindow)
Definition: WhileDo.java:22
void resolveNamesAndTypes(Expression with, Environment env)
Definition: WhileDo.java:35
Impressum