Package java_cup

Class 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).
    Version:
    last updated: 11/25/95
    Author:
    Scott Hudson
    • Field Summary

      Fields 
      Modifier and Type Field Description
      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
    • Constructor Summary

      Constructors 
      Constructor Description
      non_terminal​(java.lang.String nm)
      Constructor with default type.
      non_terminal​(java.lang.String nm, java.lang.String tp)
      Full constructor.
    • 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

      • clear

        public static void clear()
      • 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.
      • 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.
      • 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