1 8 9 package beaver.spec.ast; 10 11 import beaver.Symbol; 12 13 16 public abstract class Declaration extends Node 17 { 18 static public abstract class NameContainer extends Declaration 19 { 20 public final Symbol name; 21 22 protected NameContainer(Symbol name) 23 { 24 this.name = name; 25 } 26 27 public String getName() 28 { 29 return (String ) name.value; 30 } 31 } 32 33 static public abstract class CodeContainer extends Declaration 34 { 35 public final Symbol code; 36 37 protected CodeContainer(Symbol code) 38 { 39 this.code = code; 40 } 41 42 public String getCode() 43 { 44 return (String ) code.value; 45 } 46 } 47 48 static public abstract class SymbolsContainer extends Declaration 49 { 50 public final Symbol[] symbols; 51 52 protected SymbolsContainer(Symbol[] symbols) 53 { 54 this.symbols = symbols; 55 } 56 } 57 58 static public class Error extends Declaration 59 { 60 public void accept(TreeWalker walker) 61 { 62 walker.visit(this); 63 } 64 } 65 66 static public class Goal extends NameContainer 67 { 68 public Goal(Symbol name) 69 { 70 super(name); 71 } 72 73 public void accept(TreeWalker walker) 74 { 75 walker.visit(this); 76 } 77 } 78 79 static public class ListType extends NameContainer 80 { 81 public ListType(Symbol name) 82 { 83 super(name); 84 } 85 86 public void accept(TreeWalker walker) 87 { 88 walker.visit(this); 89 } 90 } 91 92 static public class Header extends CodeContainer 93 { 94 public Header(Symbol code) 95 { 96 super(code); 97 } 98 99 public void accept(TreeWalker walker) 100 { 101 walker.visit(this); 102 } 103 } 104 105 static public class PackageName extends NameContainer 106 { 107 public PackageName(Symbol name) 108 { 109 super(name); 110 } 111 112 public void accept(TreeWalker walker) 113 { 114 walker.visit(this); 115 } 116 } 117 118 static public class Imports extends SymbolsContainer 119 { 120 public Imports(Symbol[] symbols) 121 { 122 super(symbols); 123 } 124 125 public void accept(TreeWalker walker) 126 { 127 walker.visit(this); 128 } 129 } 130 131 static public class ClassName extends NameContainer 132 { 133 public ClassName(Symbol name) 134 { 135 super(name); 136 } 137 138 public void accept(TreeWalker walker) 139 { 140 walker.visit(this); 141 } 142 } 143 144 static public class ClassCode extends CodeContainer 145 { 146 public ClassCode(Symbol code) 147 { 148 super(code); 149 } 150 151 public void accept(TreeWalker walker) 152 { 153 walker.visit(this); 154 } 155 } 156 157 static public class ConstructorCode extends CodeContainer 158 { 159 public ConstructorCode(Symbol code) 160 { 161 super(code); 162 } 163 164 public void accept(TreeWalker walker) 165 { 166 walker.visit(this); 167 } 168 } 169 170 static public class LeftAssoc extends SymbolsContainer 171 { 172 public LeftAssoc(Symbol[] symbols) 173 { 174 super(symbols); 175 } 176 177 public void accept(TreeWalker walker) 178 { 179 walker.visit(this); 180 } 181 } 182 183 static public class RightAssoc extends SymbolsContainer 184 { 185 public RightAssoc(Symbol[] symbols) 186 { 187 super(symbols); 188 } 189 190 public void accept(TreeWalker walker) 191 { 192 walker.visit(this); 193 } 194 } 195 196 static public class NonAssoc extends SymbolsContainer 197 { 198 public NonAssoc(Symbol[] symbols) 199 { 200 super(symbols); 201 } 202 203 public void accept(TreeWalker walker) 204 { 205 walker.visit(this); 206 } 207 } 208 209 static public class Terminals extends SymbolsContainer 210 { 211 public Terminals(Symbol[] tokens) 212 { 213 super(tokens); 214 } 215 216 public void accept(TreeWalker walker) 217 { 218 walker.visit(this); 219 } 220 } 221 222 static public class TypeOf extends SymbolsContainer 223 { 224 public final Symbol type; 225 226 public TypeOf(Symbol[] symbols, Symbol type) 227 { 228 super(symbols); 229 this.type = type; 230 } 231 232 public String getTypeName() 233 { 234 return type == null ? null : (String ) type.value; 235 } 236 237 public void accept(TreeWalker walker) 238 { 239 walker.visit(this); 240 } 241 } 242 } 243 | Popular Tags |