EOS 2  1.1.0
Einfache Objektbasierte Sprache
DoWhile.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.JumpIf;
6 
7 import java.util.ArrayList;
8 
15 public class DoWhile extends Loop {
16 
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  cond.add(new DebugPoint(condition.getMarker()));
25  ArrayList<Command> body = new ArrayList<>();
26  condition.compile(cond, autoWindow);
27  sequence.compile(body, autoWindow);
28  ops.addAll(body);
29  ops.addAll(cond);
30  ops.add(new JumpIf(-(cond.size() + body.size())));
31  }
32 
33  @Override
34  public void resolveNamesAndTypes(Expression with, Environment env) {
35  sequence.resolveNamesAndTypes(with, env);
37  if (!condition.getType().isBoolean()) {
38  env.addError(marker, "ConditionType", condition.getType());
39  }
40  }
41 
42  @Override
43  public String toString() {
44  return "while" + condition + "\n" + sequence + "endwhile";
45  }
46 
47  @Override
48  public String getLabel() {
49  return createText("DoWhile.Label", condition.getLabel());
50  }
51 
52  @Override
53  public boolean isPre() {
54  return false;
55  }
56 
57 }
void resolveNamesAndTypes(Expression with, Environment env)
Definition: DoWhile.java:34
void compile(ArrayList< Command > ops, boolean autoWindow)
Definition: DoWhile.java:22
DoWhile(Sequence sequence, Expression condition)
Definition: DoWhile.java:17
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
Impressum