EOS 2  1.1.0
Einfache Objektbasierte Sprache
Arguments.java
gehe zur Dokumentation dieser Datei
1 package de.lathanda.eos.baseparser;
2 
3 import java.util.ArrayList;
4 import java.util.LinkedList;
5 
6 import de.lathanda.eos.vm.DebugPoint;
7 import de.lathanda.eos.vm.Command;
14 public class Arguments extends Node {
15 
16  private final LinkedList<Expression> arguments;
17  private Type[] types;
18 
19  public Arguments() {
20  arguments = new LinkedList<>();
21  }
22 
23  public void append(Expression expression) {
24  arguments.add(expression);
25  }
26 
27  @Override
28  public void compile(ArrayList<Command> ops, boolean autoWindow) throws Exception {
29  for (int i = arguments.size(); i-- > 0;) {
30  ops.add(new DebugPoint(arguments.get(i).getMarker()));
31  arguments.get(i).compile(ops, autoWindow);
32  }
33  }
34 
35  @Override
36  public void resolveNamesAndTypes(Expression with, Environment env) {
37  types = new Type[arguments.size()];
38  for (int i = 0; i < arguments.size(); i++) {
39  arguments.get(i).resolveNamesAndTypes(with, env);
40  types[i] = arguments.get(i).getType();
41  }
42  }
43 
44  public Type[] getTypes() {
45  return types;
46  }
47 
48  @Override
49  public String toString() {
50  StringBuilder res = new StringBuilder();
51  boolean first = true;
52  res.append("(");
53  for (AutoCompleteType t : types) {
54  if (first) {
55  res.append(t);
56  } else {
57  res.append(",").append(t);
58  first = false;
59  }
60  }
61  res.append(")");
62  return res.toString();
63  }
64 
65  @Override
66  public String getLabel() {
67  StringBuilder text = new StringBuilder();
68  text.append("(");
69  boolean first = true;
70  for (Expression e : arguments) {
71  if (first) {
72  text.append(e.getLabel());
73  first = false;
74  } else {
75  text.append(", ").append(e.getLabel());
76  }
77  }
78  text.append(")");
79  return text.toString();
80  }
81 }
void resolveNamesAndTypes(Expression with, Environment env)
Definition: Arguments.java:36
void compile(ArrayList< Command > ops, boolean autoWindow)
Definition: Arguments.java:28
void append(Expression expression)
Definition: Arguments.java:23
Impressum