001    /* This file was generated with JastAdd2 (http://jastadd.org) version 2.1.3 */
002    package AST;
003    
004    import java.util.Collection;
005    import java.util.ArrayList;
006    import java.util.HashSet;
007    /**
008     * @ast node
009     * @declaredat /home/csz-naf/examples/PicoJava/spec/picojava.ast:12
010     * @production Exp : {@link ASTNode};
011    
012     */
013    public abstract class Exp extends ASTNode<ASTNode> implements Cloneable {
014      /**
015       * @apilevel internal
016       */
017      public Exp clone() throws CloneNotSupportedException {
018        Exp node = (Exp) super.clone();
019        node.isValue_visited = -1;
020        node.in$Circle(false);
021        node.is$Final(false);
022        return node;
023      }
024      /**
025       */
026      public Exp() {
027        super();
028      }
029      /**
030       * Initializes the child array to the correct size.
031       * Initializes List and Opt nta children.
032       * @apilevel internal
033       * @ast method
034       */
035      public void init$Children() {
036      }
037      /**
038       * @apilevel low-level
039       */
040      protected int numChildren() {
041        return 0;
042      }
043      /**
044       * @apilevel internal
045       */
046      public boolean mayHaveRewrite() {
047        return false;
048      }
049      /**
050       * @apilevel low-level
051       */
052      public void flushCache() {
053        super.flushCache();
054        isValue_visited = -1;
055      }
056      /**
057       * @apilevel internal
058       */
059      public void flushCollectionCache() {
060        super.flushCollectionCache();
061      }
062      /**
063       * @attribute syn
064       * @aspect TypeAnalysis
065       * @declaredat /home/csz-naf/examples/PicoJava/spec/TypeAnalysis.jrag:10
066       */
067      public abstract TypeDecl type();
068      /**
069       * @apilevel internal
070       */
071      protected int isValue_visited = -1;
072      /**
073       * @attribute syn
074       * @aspect TypeAnalysis
075       * @declaredat /home/csz-naf/examples/PicoJava/spec/TypeAnalysis.jrag:18
076       */
077      public boolean isValue() {
078        ASTNode$State state = state();
079        if (isValue_visited == state().boundariesCrossed) {
080          throw new RuntimeException("Circular definition of attr: isValue in class: org.jastadd.ast.AST.SynDecl");
081        }
082        isValue_visited = state().boundariesCrossed;
083        try {  return true;  }
084        finally {
085          isValue_visited = -1;
086        }
087      }
088      /**
089       * @apilevel internal
090       */
091      public ASTNode rewriteTo() {    return super.rewriteTo();
092      }}