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 }}