EOS 2  1.1.0
Einfache Objektbasierte Sprache
Negative.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.Negate;
5 
6 import java.util.ArrayList;
7 
14 public class Negative extends Expression {
15 
16  private final Expression exp;
17 
18  public Negative(Expression exp) {
19  this.exp = exp;
20  prio = 6;
21  }
22 
23  @Override
24  public void compile(ArrayList<Command> ops, boolean autoWindow) throws Exception {
25  exp.compile(ops, autoWindow);
26  ops.add(new Negate());
27  }
28 
29  @Override
30  public void resolveNamesAndTypes(Expression with, Environment env) {
31  exp.resolveNamesAndTypes(with, env);
32  if (!exp.getType().isNumber()) {
33  env.addError(marker, "InvalidNumber", exp.getType());
34  }
35  type = exp.getType();
36  }
37 
38  @Override
39  public String toString() {
40  return "-" + exp;
41  }
42 
43  @Override
44  public String getLabel() {
45  return createText("Negative.Label", getLabelRight(exp));
46  }
47 }
void addError(Marker marker, String errorId, Object... data)
String getLabelRight(Expression e)
Definition: Expression.java:82
void resolveNamesAndTypes(Expression with, Environment env)
Definition: Negative.java:30
void compile(ArrayList< Command > ops, boolean autoWindow)
Definition: Negative.java:24
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)
Impressum