symbolpublic abstract class symbol extends Object This abstract class serves as the base class for grammar symbols (i.e.,
both terminals and non-terminals). Each symbol has a name string, and
a string giving the type of object that the symbol will be represented by
on the runtime parse stack. In addition, each symbol maintains a use count
in order to detect symbols that are declared but never used, and an index
number that indicates where it appears in parse tables (index numbers are
unique within terminals or non terminals, but not across both). |
Fields Summary |
---|
protected String | _nameString for the human readable name of the symbol. | protected String | _stack_typeString for the type of object used for the symbol on the parse stack. | protected int | _use_countCount of how many times the symbol appears in productions. | protected int | _indexIndex of this symbol (terminal or non terminal) in the parse tables.
Note: indexes are unique among terminals and unique among non terminals,
however, a terminal may have the same index as a non-terminal, etc. |
Constructors Summary |
---|
public symbol(String nm, String tp)Full constructor.
/* sanity check */
if (nm == null) nm = "";
/* apply default if no type given */
if (tp == null) tp = "Object";
_name = nm;
_stack_type = tp;
| public symbol(String nm)Constructor with default type.
this(nm, null);
|
Methods Summary |
---|
public int | index()Index of this symbol (terminal or non terminal) in the parse tables.
Note: indexes are unique among terminals and unique among non terminals,
however, a terminal may have the same index as a non-terminal, etc.return _index;
| public abstract boolean | is_non_term()Indicate if this is a non-terminal. Here in the base class we
don't know, so this is abstract.
| public java.lang.String | name()String for the human readable name of the symbol.return _name;
| public void | note_use()Increment the use count._use_count++;
| public java.lang.String | stack_type()String for the type of object used for the symbol on the parse stack.return _stack_type;
| public java.lang.String | toString()Convert to a string.
return name();
| public int | use_count()Count of how many times the symbol appears in productions.
return _use_count;
|
|