reader: clarify variable names

* src/reader.c (grammar_rule_check_and_complete): When 'p' and 'lhs'
are aliases, prefer the latter, for clarity and consistency.
(grammar_current_rule_begin): Avoid 'p', current_rule suffices.
* src/gram.h, src/gram.c: Comment changes.

ptdr#	calc.tab.c
This commit is contained in:
Akim Demaille
2019-03-23 08:07:13 +01:00
parent 5de4e79fc8
commit ae91c3cce3
4 changed files with 19 additions and 16 deletions

View File

@@ -146,7 +146,6 @@ item_number_is_symbol_number (item_number i)
/* Rule numbers. */ /* Rule numbers. */
typedef int rule_number; typedef int rule_number;
# define RULE_NUMBER_MAX INT_MAX # define RULE_NUMBER_MAX INT_MAX
extern rule_number nrules;
static inline item_number static inline item_number
rule_number_as_item_number (rule_number r) rule_number_as_item_number (rule_number r)
@@ -193,6 +192,7 @@ typedef struct
/* This symbol was attached to the rule via %prec. */ /* This symbol was attached to the rule via %prec. */
sym_content *precsym; sym_content *precsym;
/* Location of the rhs. */
location location; location location;
bool useful; bool useful;
bool is_predicate; bool is_predicate;
@@ -206,7 +206,9 @@ typedef struct
location action_location; location action_location;
} rule; } rule;
/* The used rules (size NRULES). */
extern rule *rules; extern rule *rules;
extern rule_number nrules;
/* Get the rule associated to this item. ITEM points inside RITEM. */ /* Get the rule associated to this item. ITEM points inside RITEM. */
rule const *item_rule (item_number const *item); rule const *item_rule (item_number const *item);

View File

@@ -666,7 +666,7 @@ rhs:
; ;
named_ref.opt: named_ref.opt:
%empty { $$ = 0; } %empty { $$ = NULL; }
| BRACKETED_ID { $$ = named_ref_new ($1, @1); } | BRACKETED_ID { $$ = named_ref_new ($1, @1); }
; ;

View File

@@ -226,11 +226,9 @@ grammar_current_rule_begin (symbol *lhs, location loc,
++nrules; ++nrules;
previous_rule_end = grammar_end; previous_rule_end = grammar_end;
symbol_list *p = grammar_symbol_append (lhs, loc); current_rule = grammar_symbol_append (lhs, loc);
if (lhs_name) if (lhs_name)
assign_named_ref (p, named_ref_copy (lhs_name)); assign_named_ref (current_rule, named_ref_copy (lhs_name));
current_rule = grammar_end;
/* Mark the rule's lhs as a nonterminal if not already so. */ /* Mark the rule's lhs as a nonterminal if not already so. */
if (lhs->content->class == unknown_sym) if (lhs->content->class == unknown_sym)
@@ -293,7 +291,7 @@ grammar_rule_check_and_complete (symbol_list *r)
if (first_rhs) if (first_rhs)
{ {
char const *lhs_type = r->content.sym->content->type_name; char const *lhs_type = r->content.sym->content->type_name;
const char *rhs_type = char const *rhs_type =
first_rhs->content->type_name ? first_rhs->content->type_name : ""; first_rhs->content->type_name ? first_rhs->content->type_name : "";
if (!UNIQSTR_EQ (lhs_type, rhs_type)) if (!UNIQSTR_EQ (lhs_type, rhs_type))
complain (&r->location, Wother, complain (&r->location, Wother,
@@ -629,8 +627,8 @@ packgram (void)
/* Don't check the generated rule 0. It has no action, so some rhs /* Don't check the generated rule 0. It has no action, so some rhs
symbols may appear unused, but the parsing algorithm ensures that symbols may appear unused, but the parsing algorithm ensures that
%destructor's are invoked appropriately. */ %destructor's are invoked appropriately. */
if (p != grammar) if (lhs != grammar)
grammar_rule_check_and_complete (p); grammar_rule_check_and_complete (lhs);
rules[ruleno].user_number = ruleno; rules[ruleno].user_number = ruleno;
rules[ruleno].number = ruleno; rules[ruleno].number = ruleno;
@@ -645,13 +643,13 @@ packgram (void)
rules[ruleno].action = lhs->action_props.code; rules[ruleno].action = lhs->action_props.code;
rules[ruleno].action_location = lhs->action_props.location; rules[ruleno].action_location = lhs->action_props.location;
rules[ruleno].is_predicate = lhs->action_props.is_predicate; rules[ruleno].is_predicate = lhs->action_props.is_predicate;
rules[ruleno].expected_sr_conflicts = p->expected_sr_conflicts; rules[ruleno].expected_sr_conflicts = lhs->expected_sr_conflicts;
rules[ruleno].expected_rr_conflicts = p->expected_rr_conflicts; rules[ruleno].expected_rr_conflicts = lhs->expected_rr_conflicts;
/* Traverse the rhs. */ /* Traverse the rhs. */
{ {
size_t rule_length = 0; size_t rule_length = 0;
for (p = p->next; p->content.sym; p = p->next) for (p = lhs->next; p->content.sym; p = p->next)
{ {
++rule_length; ++rule_length;

View File

@@ -26,7 +26,9 @@
# include "symtab.h" # include "symtab.h"
# include "named-ref.h" # include "named-ref.h"
/* A list of symbols, used during the parsing to store the rules. */ /* A list of symbols, used during the parsing for many different
purposes: rules, symbol declarations or properties (such as
%destructor, etc.)... */
typedef struct symbol_list typedef struct symbol_list
{ {
/** /**
@@ -67,9 +69,10 @@ typedef struct symbol_list
struct symbol_list *midrule_parent_rule; struct symbol_list *midrule_parent_rule;
int midrule_parent_rhs_index; int midrule_parent_rhs_index;
/* ---------------------------------------------- */ /*--------------------------------------------------------------.
/* Apply to the rule (attached to the LHS only). */ | Used for rules only (attached to the "LHS", one per rule even |
/* ---------------------------------------------- */ | when several RHSs are bound to a single lhs via "|"). |
`--------------------------------------------------------------*/
/* Precedence/associativity. */ /* Precedence/associativity. */
symbol *ruleprec; symbol *ruleprec;