java_cup
Class non_terminal

java.lang.Object
  extended byjava_cup.symbol
      extended byjava_cup.non_terminal

public class non_terminal
extends symbol

This class represents a non-terminal symbol in the grammar. Each non terminal has a textual name, an index, and a string which indicates the type of object it will be implemented with at runtime (i.e. the class of object that will be pushed on the parse stack to represent it).


Field Summary
protected static java.util.Hashtable _all
          Table of all non-terminals -- elements are stored using name strings as the key
protected static java.util.Hashtable _all_by_index
          Table of all non terminals indexed by their index number.
protected  terminal_set _first_set
          First set for this non-terminal.
protected  boolean _nullable
          Nullability of this non terminal.
protected  java.util.Hashtable _productions
          Table of all productions with this non terminal on the LHS.
 boolean is_embedded_action
          flag non-terminals created to embed action productions
protected static int next_index
          Static counter to assign unique indexes.
protected static int next_nt
          Static counter for creating unique non-terminal names
static non_terminal START_nt
          special non-terminal for start symbol
 
Fields inherited from class java_cup.symbol
_index, _name, _stack_type, _use_count
 
Constructor Summary
non_terminal(java.lang.String nm)
          Constructor with default type.
non_terminal(java.lang.String nm, java.lang.String tp)
          Full constructor.
 
Method Summary
 void add_production(production prod)
          Add a production to our set of productions.
static java.util.Enumeration all()
          Access to all non-terminals.
static void compute_first_sets()
          Compute first sets for all non-terminals.
static void compute_nullability()
          Compute nullability of all non-terminals.
(package private) static non_terminal create_new()
          static routine for creating a new uniquely named hidden non-terminal
(package private) static non_terminal create_new(java.lang.String prefix)
          Method for creating a new uniquely named hidden non-terminal using the given string as a base for the name (or "NT$" if null is passed).
static non_terminal find(int indx)
          Lookup a non terminal by index.
static non_terminal find(java.lang.String with_name)
          lookup a non terminal by name string
 terminal_set first_set()
          First set for this non-terminal.
 boolean is_non_term()
          Indicate that this symbol is a non-terminal.
protected  boolean looks_nullable()
          Test to see if this non terminal currently looks nullable.
 boolean nullable()
          Nullability of this non terminal.
 int num_productions()
          Total number of productions with this non terminal on the LHS.
static int number()
          Total number of non-terminals.
 java.util.Enumeration productions()
          Access to productions with this non terminal on the LHS.
 java.lang.String toString()
          convert to string
 
Methods inherited from class java_cup.symbol
index, name, note_use, stack_type, use_count
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

_all

protected static java.util.Hashtable _all
Table of all non-terminals -- elements are stored using name strings as the key


_all_by_index

protected static java.util.Hashtable _all_by_index
Table of all non terminals indexed by their index number.


next_index

protected static int next_index
Static counter to assign unique indexes.


next_nt

protected static int next_nt
Static counter for creating unique non-terminal names


START_nt

public static final non_terminal START_nt
special non-terminal for start symbol


is_embedded_action

public boolean is_embedded_action
flag non-terminals created to embed action productions


_productions

protected java.util.Hashtable _productions
Table of all productions with this non terminal on the LHS.


_nullable

protected boolean _nullable
Nullability of this non terminal.


_first_set

protected terminal_set _first_set
First set for this non-terminal.

Constructor Detail

non_terminal

public non_terminal(java.lang.String nm,
                    java.lang.String tp)
Full constructor.

Parameters:
nm - the name of the non terminal.
tp - the type string for the non terminal.

non_terminal

public non_terminal(java.lang.String nm)
Constructor with default type.

Parameters:
nm - the name of the non terminal.
Method Detail

all

public static java.util.Enumeration all()
Access to all non-terminals.


find

public static non_terminal find(java.lang.String with_name)
lookup a non terminal by name string


find

public static non_terminal find(int indx)
Lookup a non terminal by index.


number

public static int number()
Total number of non-terminals.


create_new

static non_terminal create_new(java.lang.String prefix)
                        throws internal_error
Method for creating a new uniquely named hidden non-terminal using the given string as a base for the name (or "NT$" if null is passed).

Parameters:
prefix - base name to construct unique name from.
Throws:
internal_error

create_new

static non_terminal create_new()
                        throws internal_error
static routine for creating a new uniquely named hidden non-terminal

Throws:
internal_error

compute_nullability

public static void compute_nullability()
                                throws internal_error
Compute nullability of all non-terminals.

Throws:
internal_error

compute_first_sets

public static void compute_first_sets()
                               throws internal_error
Compute first sets for all non-terminals. This assumes nullability has already computed.

Throws:
internal_error

productions

public java.util.Enumeration productions()
Access to productions with this non terminal on the LHS.


num_productions

public int num_productions()
Total number of productions with this non terminal on the LHS.


add_production

public void add_production(production prod)
                    throws internal_error
Add a production to our set of productions.

Throws:
internal_error

nullable

public boolean nullable()
Nullability of this non terminal.


first_set

public terminal_set first_set()
First set for this non-terminal.


is_non_term

public boolean is_non_term()
Indicate that this symbol is a non-terminal.

Specified by:
is_non_term in class symbol

looks_nullable

protected boolean looks_nullable()
                          throws internal_error
Test to see if this non terminal currently looks nullable.

Throws:
internal_error

toString

public java.lang.String toString()
convert to string

Overrides:
toString in class symbol