package mumbler.truffle.syntax;
import java.util.ArrayList;
import java.util.List;
import mumbler.truffle.parser.Syntax;
import mumbler.truffle.type.MumblerList;
import com.oracle.truffle.api.source.SourceSection;
public class ListSyntax extends Syntax<MumblerList<? extends Syntax<?>>> {
public ListSyntax(MumblerList<? extends Syntax<?>> value,
SourceSection sourceSection) {
super(value, sourceSection);
}
@Override
public Object strip() {
List<Object> list = new ArrayList<Object>();
for (Syntax<? extends Object> syntax : getValue()) {
list.add(syntax.strip());
}
return MumblerList.list(list);
}
@Override
public String getName() {
if (super.getName() != null) {
return super.getName();
}
if (this.getValue().size() == 0) {
return "()";
}
return this.getValue().car().getValue().toString() + "-" + this.hashCode();
}
}