001 package org.mesopotamia.lang.java; 002 003 import java.util.List; 004 005 import org.mesopotamia.LanguageElement; 006 import org.mesopotamia.MesopotamiaException; 007 import org.mesopotamia.MesopotamiaRuntimeException; 008 import org.mesopotamia.NodeData; 009 import org.mesopotamia.RepositoryLanguage; 010 import org.mesopotamia.Scan; 011 import org.mesopotamia.lang.java.ref.Scope; 012 import org.mesopotamia.lang.java.ref.TypeSpecInfo; 013 014 import biz.hammurapi.util.CollectionVisitable; 015 import biz.hammurapi.util.Visitor; 016 017 public class Expression extends JavaLanguageElement implements Initializer, Statement { 018 019 public Expression(NodeData xData, Class<?> context, Scan scan, 020 RepositoryLanguage language, Object environment) throws MesopotamiaException { 021 super(xData, context, scan, language, environment); 022 023 } 024 025 protected void acceptChildren(Visitor visitor) { 026 super.acceptChildren(visitor); 027 // Visiting non-text attributes 028 try { 029 new CollectionVisitable(getChildren(), false).accept(visitor); 030 } catch (MesopotamiaException e) { 031 throw new MesopotamiaRuntimeException("Cannot retrieve children", e); 032 } 033 } 034 035 /** 036 * Override to inform visualizer to show children. 037 */ 038 @SuppressWarnings("unchecked") 039 public synchronized List getChildren() throws MesopotamiaException { 040 return super.getChildren(); 041 } 042 043 public TypeSpecInfo getTypeSpecInfo() { 044 try { 045 LanguageElement firstOperand = getChild(0); 046 return firstOperand instanceof Expression ? ((Expression) firstOperand).getTypeSpecInfo() : null; 047 } catch (MesopotamiaException e) { 048 throw new MesopotamiaRuntimeException(e); 049 } 050 } 051 052 }