|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectjava_cup.production
public class production
This class represents a production in the grammar. It contains a LHS non terminal, and an array of RHS symbols. As various transformations are done on the RHS of the production, it may shrink. As a result a separate length is always maintained to indicate how much of the RHS array is still valid.
I addition to construction and manipulation operations, productions provide methods for factoring out actions (see remove_embedded_actions()), for computing the nullability of the production (i.e., can it derive the empty string, see check_nullable()), and operations for computing its first set (i.e., the set of terminals that could appear at the beginning of some string derived from the production, see check_first_set()).
production_part
,
symbol_part
,
action_part
Constructor Summary | |
---|---|
production(non_terminal lhs_sym,
production_part[] rhs_parts,
int rhs_l)
Constructor with no action string. |
|
production(non_terminal lhs_sym,
production_part[] rhs_parts,
int rhs_l,
int prec_num,
int prec_side)
|
|
production(non_terminal lhs_sym,
production_part[] rhs_parts,
int rhs_l,
java.lang.String action_str)
Full constructor. |
|
production(non_terminal lhs_sym,
production_part[] rhs_parts,
int rhs_l,
java.lang.String action_str,
int prec_num,
int prec_side)
|
Method Summary | |
---|---|
action_part |
action()
An action_part containing code for the action to be performed when we reduce with this production. |
static java.util.Enumeration |
all()
Access to all productions. |
terminal_set |
check_first_set()
Update (and return) the first set based on current NT firsts. |
boolean |
check_nullable()
Check to see if the production (now) appears to be nullable. |
boolean |
equals(java.lang.Object other)
Generic equality comparison. |
boolean |
equals(production other)
Equality comparison. |
static production |
find(int indx)
Lookup a production by index. |
terminal_set |
first_set()
First set of the production. |
int |
hashCode()
Produce a hash code. |
int |
index()
Index number of the production. |
symbol_part |
lhs()
The left hand side non-terminal. |
void |
note_reduction_use()
Increment the count of reductions with this non-terminal |
boolean |
nullable_known()
Is the nullability of the production known or unknown? |
boolean |
nullable()
Nullability of the production (can it derive the empty string). |
int |
num_reductions()
Count of number of reductions using this production. |
static int |
number()
Total number of productions. |
int |
precedence_num()
Access to the precedence of the rule |
int |
precedence_side()
|
int |
rhs_length()
How much of the right hand side array we are presently using. |
production_part |
rhs(int indx)
Access to the collection of parts for the right hand side. |
void |
set_precedence_num(int prec_num)
Setting the precedence of a rule |
void |
set_precedence_side(int prec_side)
|
java.lang.String |
to_simple_string()
Convert to a simpler string. |
java.lang.String |
toString()
Convert to a string. |
Methods inherited from class java.lang.Object |
---|
getClass, notify, notifyAll, wait, wait, wait |
Constructor Detail |
---|
public production(non_terminal lhs_sym, production_part[] rhs_parts, int rhs_l, java.lang.String action_str) throws internal_error
Factoring out of actions is accomplished by creating new "hidden" non terminals. For example if the production was originally:
A ::= B {action} C Dthen it is factored into two productions:
A ::= B X C D X ::= {action}(where X is a unique new non terminal). This has the effect of placing all actions at the end where they can be handled as part of a reduce by the parser.
internal_error
public production(non_terminal lhs_sym, production_part[] rhs_parts, int rhs_l) throws internal_error
internal_error
public production(non_terminal lhs_sym, production_part[] rhs_parts, int rhs_l, java.lang.String action_str, int prec_num, int prec_side) throws internal_error
internal_error
public production(non_terminal lhs_sym, production_part[] rhs_parts, int rhs_l, int prec_num, int prec_side) throws internal_error
internal_error
Method Detail |
---|
public static java.util.Enumeration all()
public static production find(int indx)
public static int number()
public symbol_part lhs()
public int precedence_num()
public int precedence_side()
public void set_precedence_num(int prec_num)
public void set_precedence_side(int prec_side)
public production_part rhs(int indx) throws internal_error
internal_error
public int rhs_length()
public action_part action()
public int index()
public int num_reductions()
public void note_reduction_use()
public boolean nullable_known()
public boolean nullable()
public terminal_set first_set()
public boolean check_nullable() throws internal_error
internal_error
public terminal_set check_first_set() throws internal_error
internal_error
public boolean equals(production other)
public boolean equals(java.lang.Object other)
equals
in class java.lang.Object
public int hashCode()
hashCode
in class java.lang.Object
public java.lang.String toString()
toString
in class java.lang.Object
public java.lang.String to_simple_string() throws internal_error
internal_error
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |