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).
    • 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 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.
      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
      • 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 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
      • 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