[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
21-fyi-more-rule-t.patch
From: |
Akim Demaille |
Subject: |
21-fyi-more-rule-t.patch |
Date: |
Mon, 19 Nov 2001 10:03:23 +0100 |
Index: ChangeLog
from Akim Demaille <address@hidden>
* src/symtab.h, src/symtab.c: `line' is a new member of `bucket'.
* src/reader.c (record_rule_lines, rline, rline_allocated): Remove.
* src/output.c: Adjust.
Index: src/gram.h
--- src/gram.h Fri, 16 Nov 2001 01:10:56 +0100 akim
+++ src/gram.h Fri, 16 Nov 2001 01:12:50 +0100 akim
@@ -55,7 +55,9 @@
RULE_TABLE[R].precsym -- the symbol-number of the symbol in %prec
for R (if any).
- RULE_TABLE[R].assoc -- the associativity of the rule.
+ RULE_TABLE[R].assoc -- the associativity of R.
+
+ RULE_TABLE[R].line -- the line where R was defined.
The right hand side is stored as symbol numbers in a portion of
RITEM.
@@ -97,7 +99,6 @@
extern short *sprec;
extern short *sassoc;
-extern short *rline; /* Source line number of each rule */
extern int start_symbol;
@@ -117,6 +118,7 @@
short prec;
short precsym;
short assoc;
+ short line;
} rule_t;
extern struct rule_s *rule_table;
Index: src/output.c
--- src/output.c Fri, 16 Nov 2001 01:00:46 +0100 akim
+++ src/output.c Fri, 16 Nov 2001 01:34:18 +0100 akim
@@ -375,10 +375,16 @@
obstack_sgrow (&table_obstack, "\n\
#if YYDEBUG != 0\n");
- output_short_table (&table_obstack,
- "YYRLINE[YYN] -- source line where rule number YYN was defined",
- "yyrline", rline,
- 0, 1, nrules + 1);
+ {
+ short *values = XCALLOC (short, nrules + 1);
+ for (i = 0; i < nrules + 1; ++i)
+ values[i] = rule_table[i].line;
+ output_short_table (&table_obstack,
+ "YYRLINE[YYN] -- source line where rule number YYN was
defined",
+ "yyrline", values,
+ 0, 1, nrules + 1);
+ XFREE (values);
+ }
obstack_sgrow (&table_obstack, "#endif\n\n");
Index: src/reader.c
--- src/reader.c Fri, 16 Nov 2001 01:10:56 +0100 akim
+++ src/reader.c Fri, 16 Nov 2001 01:33:09 +0100 akim
@@ -1215,20 +1215,6 @@
}
-static void
-record_rule_line (void)
-{
- /* Record each rule's source line number in rline table. */
-
- if (nrules >= rline_allocated)
- {
- rline_allocated = nrules * 2;
- rline = XREALLOC (rline, short, rline_allocated);
- }
- rline[nrules] = lineno;
-}
-
-
/*-------------------------------------------------------------------.
| Generate a dummy symbol, a nonterminal, whose name cannot conflict |
| with the user's names. |
@@ -1371,8 +1357,6 @@
nrules++;
nitems++;
- record_rule_line ();
-
p = XCALLOC (symbol_list, 1);
p->sym = lhs;
@@ -1450,7 +1434,6 @@
just read can belong to it. */
nrules++;
nitems++;
- record_rule_line ();
p = XCALLOC (symbol_list, 1);
if (crule1)
crule1->next = p;
@@ -1458,9 +1441,10 @@
grammar = p;
p->sym = sdummy;
crule1 = XCALLOC (symbol_list, 1);
- p->next = crule1;
crule1->next = crule;
+ p->next = crule1;
+
/* Insert the dummy generated by that rule into this
rule. */
nitems++;
@@ -1884,6 +1868,7 @@
{
rule_table[ruleno].lhs = p->sym->value;
rule_table[ruleno].rhs = itemno;
+ rule_table[ruleno].line = p->sym->line;
ruleprec = p->ruleprec;
p = p->next;
@@ -1938,8 +1923,6 @@
nvars = 0;
nrules = 0;
nitems = 0;
- rline_allocated = 10;
- rline = XCALLOC (short, rline_allocated);
typed = 0;
lastprec = 0;
Index: src/symtab.c
--- src/symtab.c Fri, 02 Nov 2001 19:28:01 +0100 akim
+++ src/symtab.c Fri, 16 Nov 2001 01:33:07 +0100 akim
@@ -49,6 +49,9 @@
static bucket *
bucket_new (const char *tag, int hashval)
{
+ /* Hack, until we have a Bison parser. */
+ extern int lineno;
+
bucket *res = XMALLOC (bucket, 1);
res->link = symtab[hashval];
@@ -61,6 +64,7 @@
res->user_token_number = SUNDEF;
res->alias = NULL;
res->class = unknown_sym;
+ res->line = lineno;
nsyms++;
Index: src/symtab.h
--- src/symtab.h Fri, 02 Nov 2001 19:28:01 +0100 akim
+++ src/symtab.h Fri, 16 Nov 2001 01:21:52 +0100 akim
@@ -42,6 +42,9 @@
struct bucket *link;
struct bucket *next;
+ /* The line it was found in. */
+ short line;
+
/* The key, name of the symbol. */
char *tag;
/* Its type. */
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- 21-fyi-more-rule-t.patch,
Akim Demaille <=