EOS 2  1.1.0
Einfache Objektbasierte Sprache
Assignment.java
gehe zur Dokumentation dieser Datei
1 package de.lathanda.eos.baseparser;
2 
3 import java.util.ArrayList;
4 
5 import de.lathanda.eos.vm.Command;
6 import de.lathanda.eos.vm.DebugPoint;
7 
13 public class Assignment extends Node {
14 
15  private final Expression right;
16  private final PropertyWrite left;
17 
18  public Assignment(PropertyWrite left, Expression right) {
19  this.left = left;
20  this.right = right;
21  }
22 
23  public Expression getRight() {
24  return right;
25  }
26 
28  return left;
29  }
30 
31  @Override
32  public void compile(ArrayList<Command> ops, boolean autoWindow) throws Exception {
33  ops.add(new DebugPoint(marker));
34  right.compile(ops, autoWindow);
35  left.compile(ops, autoWindow);
36  }
37 
38  @Override
39  public void resolveNamesAndTypes(Expression with, Environment env) {
40  right.resolveNamesAndTypes(with, env);
41  left.resolveNamesAndTypes(with, env);
42  if (!left.getType().checkType(right.getType())) {
43  env.addError(marker, "InvalidTypeCast", right.getType(), left.getType());
44  }
45  }
46 
47  @Override
48  public String toString() {
49  return left + " = " + right;
50  }
51 
52  @Override
53  public String getLabel() {
54  return createText("Assignment.Label", left.getLabel(), right.getLabel());
55  }
56 
57 }
void resolveNamesAndTypes(Expression with, Environment env)
Definition: Assignment.java:39
Assignment(PropertyWrite left, Expression right)
Definition: Assignment.java:18
void compile(ArrayList< Command > ops, boolean autoWindow)
Definition: Assignment.java:32
void addError(Marker marker, String errorId, Object... data)
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 compile(ArrayList< Command > ops, boolean autoWindow)
void resolveNamesAndTypes(Expression with, Environment env)
boolean checkType(Type right)
Definition: Type.java:37
Impressum