View Javadoc

1   ////////////////////////////////////////////////////////////////////////////////
2   // MillScript: an Open Spice interpreter and batch website creation tool
3   // Copyright (C) 2001-2004 Open World Ltd
4   // Copyright (C) 2005 Kevin Rogers
5   //
6   // This file is part of MillScript.
7   //
8   // MillScript is free software; you can redistribute it and/or modify it under
9   // the terms of the GNU General Public License as published by the Free
10  // Software Foundation; either version 2 of the License, or (at your option)
11  // any later version.
12  //
13  // MillScript is distributed in the hope that it will be useful, but WITHOUT
14  // ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
15  // FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
16  // more details.
17  //
18  // You should have received a copy of the GNU General Public License along with
19  // MillScript; if not, write to the Free Software Foundation, Inc., 59 Temple
20  // Place, Suite 330, Boston, MA  02111-1307  USA
21  ////////////////////////////////////////////////////////////////////////////////
22  package org.millscript.millscript.expr;
23  
24  import org.millscript.millscript.alert.Alerts;
25  import org.millscript.millscript.vm.Ref;
26  
27  //    At present globals and locals have an identical run-time.
28  //    This is yukky, obviously enough, so I have pre-adapted the
29  //    code for completely separate implementations.  It will not
30  //    be trivial - but it will be reasonably simple.
31  
32  public abstract class Ident {
33      protected String sym;
34      protected Ref ref;
35      protected boolean isConst = false;
36  
37      public boolean isAlien() {
38          return false;
39      }
40  
41      public Ident setIsConst( final boolean p ) {
42          isConst = p;
43          return this;
44      }
45  
46      public boolean getIsConst() {
47          return isConst;
48      }
49  
50      public String getName() {
51          return sym;
52      }
53  
54      void setRef( final Ref r ) {
55          if ( r == null ) {
56              throw(
57                  Alerts.fault( "setRef sees null instead of a Ref" ).mishap()
58              );
59          }
60          ref = r;
61      }
62  
63      Ident( final String s ) {
64          sym = s.intern();
65      }
66  
67      /**
68       * @return  this Ref this ident points to
69       */
70      public Ref getRef() {
71          return ref;
72      }
73  
74  }