package org.uva.student.calinwouter.qlqls.ql.staticfieldscollector;
import org.uva.student.calinwouter.qlqls.generated.analysis.AnalysisAdapter;
import org.uva.student.calinwouter.qlqls.generated.node.ABooleanType;
import org.uva.student.calinwouter.qlqls.generated.node.AIntegerType;
import org.uva.student.calinwouter.qlqls.generated.node.AStringType;
import org.uva.student.calinwouter.qlqls.ql.interfaces.ITypeDescriptor;
import org.uva.student.calinwouter.qlqls.ql.types.BooleanValue;
import org.uva.student.calinwouter.qlqls.ql.types.IntegerValue;
import org.uva.student.calinwouter.qlqls.ql.types.StringValue;
import java.util.Stack;
public class PTypeCollector extends AnalysisAdapter {
private final Stack<ITypeDescriptor> typeDescriptors;
@Override
public void caseAIntegerType(AIntegerType node) {
pushType(IntegerValue.INTEGER_VALUE_TYPE_DESCRIPTOR);
}
@Override
public void caseABooleanType(ABooleanType node) {
pushType(BooleanValue.BOOL_VALUE_TYPE_DESCRIPTOR);
}
@Override
public void caseAStringType(AStringType node) {
pushType(StringValue.STRING_VALUE_TYPE_DESCRIPTOR);
}
private void pushType(ITypeDescriptor typeDescriptor) {
typeDescriptors.push(typeDescriptor);
}
public ITypeDescriptor popType() {
return typeDescriptors.pop();
}
public PTypeCollector() {
this.typeDescriptors = new Stack<ITypeDescriptor>();
}
}