001    package org.mesopotamia.lang.java;
002    
003    import org.mesopotamia.LanguageElement;
004    import org.mesopotamia.MesopotamiaException;
005    import org.mesopotamia.MesopotamiaRuntimeException;
006    import org.mesopotamia.NodeData;
007    import org.mesopotamia.RepositoryLanguage;
008    import org.mesopotamia.Scan;
009    import org.mesopotamia.lang.java.ref.TypeInfo;
010    import org.mesopotamia.lang.java.ref.TypeSpecInfo;
011    
012    public class ArrayDeclarator extends PrimaryExpression {
013    
014            public ArrayDeclarator(NodeData xData, Class<?> context, Scan scan,
015                            RepositoryLanguage language, Object environment) throws MesopotamiaException {
016                    super(xData, context, scan, language, environment);
017    
018                    // Select attributes
019    
020            }
021    
022            public TypeSpecInfo getTypeSpecInfo() {
023                    try {
024                            LanguageElement firstOperand = getChild(0);
025                            final TypeSpecInfo ts =  firstOperand instanceof Expression ? ((Expression) firstOperand).getTypeSpecInfo() : null;
026                            return ts==null ? null : new TypeSpecInfo() {
027    
028                                    public int getDimensions() {
029                                            return ts.getDimensions()+1;
030                                    }
031    
032                                    public TypeInfo getTypeInfo() {
033                                            return ts.getTypeInfo();
034                                    }
035                                    
036                            };
037                    } catch (MesopotamiaException e) {
038                            throw new MesopotamiaRuntimeException(e);
039                    }
040            }
041            
042    }