107 lines
2.5 KiB
Plaintext
107 lines
2.5 KiB
Plaintext
|
package slangc.model.clauses;
|
||
|
|
||
|
import slang.data.List;
|
||
|
import slangc.api.Reporter;
|
||
|
import slangc.model.ExpressionModel;
|
||
|
import slangc.model.ExpressionOwner;
|
||
|
import slangc.model.InnerTypeScope;
|
||
|
import slangc.model.MemberModel;
|
||
|
import slangc.model.StatementOwner;
|
||
|
import slangc.model.TypeModel;
|
||
|
import slangc.parser.Branch;
|
||
|
import slangc.parser.Node;
|
||
|
import slangc.parser.NodeType;
|
||
|
|
||
|
public class Expressions extends ExpressionsOrVariables implements ExpressionOwner {
|
||
|
private List<ExpressionModel> exprs = new List<ExpressionModel>();
|
||
|
public Expressions(ExpressionOwner owner, Branch source) {
|
||
|
super(owner, source);
|
||
|
for (int i = 0; i < source.countSubnodes(); i++) {
|
||
|
Node n = source.getSubnode(i);
|
||
|
if (n.getNodeType() != NodeType.COMMA) {
|
||
|
exprs.append(ExpressionModel.construct(this, n));
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
|
||
|
@Override
|
||
|
public void dump(Reporter reporter, String indent, String incr) {
|
||
|
reporter.note("DUMP", indent + "> Expressions:");
|
||
|
// do not recurse: type.dump(reporter, indent + incr, incr);
|
||
|
for (int i = 0; i < exprs.count(); i++) {
|
||
|
exprs.get(i).dump(reporter, indent + incr, incr);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
@Override
|
||
|
public int resolveExpressions() {
|
||
|
int nresolved = 0;
|
||
|
for (int i = 0; i < exprs.count(); i++) {
|
||
|
nresolved += exprs.get(i).resolveExpressions();
|
||
|
}
|
||
|
return nresolved;
|
||
|
}
|
||
|
|
||
|
//@Override
|
||
|
public TypeModel getExpectedResult(ExpressionModel e) {
|
||
|
return getOwner().getExpectedResult(e);
|
||
|
}
|
||
|
|
||
|
|
||
|
//@Override
|
||
|
public InnerTypeScope getTypeScope() {
|
||
|
return getOwner().getTypeScope();
|
||
|
}
|
||
|
|
||
|
|
||
|
//@Override
|
||
|
public TypeModel resolveType(Node subnode) {
|
||
|
return getOwner().resolveType(subnode);
|
||
|
}
|
||
|
|
||
|
|
||
|
//@Override
|
||
|
public MemberModel getMethodOrField() {
|
||
|
return getOwner().getMethodOrField();
|
||
|
}
|
||
|
|
||
|
@Override
|
||
|
public ExpressionOwner getOwner() {
|
||
|
// TODO Auto-generated method stub
|
||
|
return (ExpressionOwner) super.getOwner();
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
//@Override
|
||
|
public ExpressionModel[] getSubexpressions() {
|
||
|
ExpressionModel[] result = new ExpressionModel[exprs.count()];
|
||
|
for (int i = 0; i < result.length; i++) {
|
||
|
result[i] = exprs.get(i);
|
||
|
}
|
||
|
return result;
|
||
|
}
|
||
|
|
||
|
public String resultString() {
|
||
|
String r = "(";
|
||
|
|
||
|
for (int i = 0; i < exprs.count(); i++) {
|
||
|
if (i != 0) {
|
||
|
r += ",";
|
||
|
}
|
||
|
r += exprs.get(i).getResult();
|
||
|
}
|
||
|
|
||
|
return r + ")";
|
||
|
}
|
||
|
|
||
|
public int countExpressions() {
|
||
|
return exprs.count();
|
||
|
}
|
||
|
|
||
|
public ExpressionModel getExpression(int i) {
|
||
|
return exprs.get(i);
|
||
|
}
|
||
|
}
|