Package java_cup

Class non_terminal

java.lang.Object
java_cup.symbol
java_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 Details

    • _all

      protected static Hashtable _all
      Table of all non-terminals -- elements are stored using name strings as the key
    • 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
    • _productions

      protected 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 Details

    • non_terminal

      public non_terminal(String nm, 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(String nm)
      Constructor with default type.
      Parameters:
      nm - the name of the non terminal.
  • Method Details

    • all

      public static Enumeration all()
      Access to all non-terminals.
    • find

      public static non_terminal find(String with_name)
      lookup a non terminal by name string
    • number

      public static int number()
      Total number of non-terminals.
    • 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 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 String toString()
      convert to string
      Overrides:
      toString in class symbol