* src/parse-gram.y (YYLLOC_DEFAULT, current_lhs_location): New.

(input): Don't try to initialize yylloc here, do it in the
scanner.
* src/scan-gram.l (YY_USER_INIT): Initialize yylloc.
* src/gram.h (rule_t): Change line and action_line into location
and action_location, of location_t type.
Adjust all dependencies.
* src/location.h, src/location.c (empty_location): New.
* src/reader.h, src/reader.c (grammar_start_symbol_set)
(grammar_symbol_append, grammar_rule_begin, grammar_rule_end)
(grammar_current_rule_symbol_append)
(grammar_current_rule_action_append): Expect a location as argument.
* src/reader.c (grammar_midrule_action): Adjust to attach an
action's location as dummy symbol location.
* src/symtab.h, src/symtab.c (startsymbol_location): New.
* tests/regression.at (Web2c Report, Rule Line Numbers): Adjust
the line numbers.
This commit is contained in:
Akim Demaille
2002-06-15 18:21:11 +00:00
parent 4f6bb8b24b
commit 8efe435c05
28 changed files with 699 additions and 603 deletions

View File

@@ -27,11 +27,11 @@ typedef struct symbol_list
{
struct symbol_list *next;
symbol_t *sym;
int line;
location_t location;
/* The action is attached to the LHS of a rule. */
const char *action;
int action_line;
location_t action_location;
symbol_t *ruleprec;
} symbol_list;
@@ -66,17 +66,18 @@ char *get_type_name PARAMS ((int n, symbol_list *rule));
extern int typed;
/* From reader.c. */
void grammar_start_symbol_set PARAMS ((symbol_t *s));
void grammar_start_symbol_set PARAMS ((symbol_t *s, location_t l));
void prologue_augment PARAMS ((const char *prologue, location_t location));
void epilogue_set PARAMS ((const char *epilogue, location_t location));
void grammar_symbol_append PARAMS ((symbol_t *s));
void grammar_rule_begin PARAMS ((symbol_t *lhs));
void grammar_rule_end PARAMS ((void));
void grammar_symbol_append PARAMS ((symbol_t *s, location_t l));
void grammar_rule_begin PARAMS ((symbol_t *lhs, location_t l));
void grammar_rule_end PARAMS ((location_t l));
void grammar_midrule_action PARAMS ((void));
void grammar_current_rule_prec_set PARAMS ((symbol_t *precsym));
void grammar_current_rule_symbol_append PARAMS ((symbol_t *symbol));
void grammar_current_rule_symbol_append PARAMS ((symbol_t *symbol,
location_t l));
void grammar_current_rule_action_append PARAMS ((const char *action,
int line));
location_t l));
extern symbol_list *current_rule;
void reader PARAMS ((void));