[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
FYI: 1.29b: translations
From: |
Akim Demaille |
Subject: |
FYI: 1.29b: translations |
Date: |
22 Sep 2001 19:52:11 +0200 |
User-agent: |
Gnus/5.0808 (Gnus v5.8.8) XEmacs/21.4 (Artificial Intelligence) |
Index: ChangeLog
from Akim Demaille <address@hidden>
Remove `translations' as it is always set to true.
* src/gram.h: Adjust.
* src/reader.c (packsymbols, parse_token_decl): Adjust
* src/print.c (print_grammar): Adjust.
* src/output.c (output_token_translations): Adjust.
* src/lex.c (lex): Adjust.
* src/gram.c: Be sure the set pointers to NULL.
(dummy): Rename as...
(gram_free): this.
Index: src/gram.c
===================================================================
RCS file: /cvsroot/bison/bison/src/gram.c,v
retrieving revision 1.6
diff -u -u -r1.6 gram.c
--- src/gram.c 2000/11/07 16:28:46 1.6
+++ src/gram.c 2001/09/22 17:42:56
@@ -31,21 +31,19 @@
int ntokens;
int nvars;
-short *ritem;
-short *rlhs;
-short *rrhs;
-short *rprec;
-short *rprecsym;
-short *sprec;
-short *rassoc;
-short *sassoc;
-short *token_translations;
-short *rline;
+short *ritem = NULL;
+short *rlhs = NULL;
+short *rrhs = NULL;
+short *rprec = NULL;
+short *rprecsym = NULL;
+short *sprec = NULL;
+short *rassoc = NULL;
+short *sassoc = NULL;
+short *token_translations = NULL;
+short *rline = NULL;
int start_symbol;
-int translations;
-
int max_user_token_number;
int semantic_parser;
@@ -54,10 +52,10 @@
int error_token_number;
-/* This is to avoid linker problems which occur on VMS when using GCC,
- when the file in question contains data definitions only. */
+/* Free all the memory associated to these pointers. */
void
-dummy (void)
+gram_free (void)
{
+
}
Index: src/gram.h
===================================================================
RCS file: /cvsroot/bison/bison/src/gram.h,v
retrieving revision 1.6
diff -u -u -r1.6 gram.h
--- src/gram.h 2000/11/07 16:28:46 1.6
+++ src/gram.h 2001/09/22 17:42:56
@@ -107,13 +107,9 @@
/* token translation table: indexed by a token number as returned by
the user's yylex routine, it yields the internal token number used
- by the parser and throughout bison. If translations is zero, the
- translation table is not used because the two kinds of token
- numbers are the same. (It is noted in reader.c that "Nowadays
- translations is always set to 1...") */
+ by the parser and throughout bison. */
extern short *token_translations;
-extern int translations;
extern int max_user_token_number;
/* SEMANTIC_PARSER is nonzero if the input file says to use the hairy
Index: src/lex.c
===================================================================
RCS file: /cvsroot/bison/bison/src/lex.c,v
retrieving revision 1.33.2.3
diff -u -u -r1.33.2.3 lex.c
--- src/lex.c 2001/09/17 22:20:08 1.33.2.3
+++ src/lex.c 2001/09/22 17:42:56
@@ -419,7 +419,6 @@
case '\'':
/* parse the literal token and compute character code in code */
- translations = -1;
{
int code, discode;
@@ -447,7 +446,6 @@
case '\"':
/* parse the literal string token and treat as an identifier */
- translations = -1;
{
int code; /* ignored here */
Index: src/output.c
===================================================================
RCS file: /cvsroot/bison/bison/src/output.c,v
retrieving revision 1.39.2.1
diff -u -u -r1.39.2.1 output.c
--- src/output.c 2001/08/29 12:13:03 1.39.2.1
+++ src/output.c 2001/09/22 17:42:56
@@ -295,25 +295,17 @@
\n\
/* YYTRANSLATE(YYLEX) -- Bison token number corresponding to YYLEX. */\n");
- if (translations)
- {
- obstack_fgrow2 (&table_obstack,
+ obstack_fgrow2 (&table_obstack,
"#define YYTRANSLATE(x) ((unsigned)(x) <= %d ? yytranslate[x] : %d)\
\n\
\n",
- max_user_token_number, nsyms);
+ max_user_token_number, nsyms);
- output_short_or_char_table (&table_obstack,
+ output_short_or_char_table (&table_obstack,
"YYTRANSLATE[YYLEX] -- Bison token number corresponding to YYLEX",
- ntokens < 127 ? "char" : "short",
- "yytranslate", token_translations,
- 0, 1, max_user_token_number + 1);
- }
- else
- {
- obstack_sgrow (&table_obstack,
- "\n#define YYTRANSLATE(x) (x)\n");
- }
+ ntokens < 127 ? "char" : "short",
+ "yytranslate", token_translations,
+ 0, 1, max_user_token_number + 1);
}
Index: src/print.c
===================================================================
RCS file: /cvsroot/bison/bison/src/print.c,v
retrieving revision 1.17
diff -u -u -r1.17 print.c
--- src/print.c 2000/12/20 17:21:14 1.17
+++ src/print.c 2001/09/22 17:42:56
@@ -253,49 +253,26 @@
_("Terminals, with rules where they appear"));
obstack_sgrow (&output_obstack, "\n\n");
obstack_fgrow1 (&output_obstack, "%s (-1)\n", tags[0]);
- if (translations)
- {
- for (i = 0; i <= max_user_token_number; i++)
- if (token_translations[i] != 2)
- {
- buffer[0] = 0;
- column = strlen (tags[token_translations[i]]);
- obstack_sgrow (&output_obstack, tags[token_translations[i]]);
- END_TEST (50);
- sprintf (buffer, " (%d)", i);
- for (j = 1; j <= nrules; j++)
- for (rule = &ritem[rrhs[j]]; *rule > 0; rule++)
- if (*rule == token_translations[i])
- {
- END_TEST (65);
- sprintf (buffer + strlen (buffer), " %d", j);
- break;
- }
- obstack_fgrow1 (&output_obstack, "%s\n", buffer);
- }
- }
- else
- {
- for (i = 1; i < ntokens; i++)
- {
- buffer[0] = 0;
- column = strlen (tags[i]);
- obstack_sgrow (&output_obstack, tags[i]);
- END_TEST (50);
- sprintf (buffer, " (%d)", i);
+ for (i = 0; i <= max_user_token_number; i++)
+ if (token_translations[i] != 2)
+ {
+ buffer[0] = 0;
+ column = strlen (tags[token_translations[i]]);
+ obstack_sgrow (&output_obstack, tags[token_translations[i]]);
+ END_TEST (50);
+ sprintf (buffer, " (%d)", i);
- for (j = 1; j <= nrules; j++)
- for (rule = &ritem[rrhs[j]]; *rule > 0; rule++)
- if (*rule == i)
- {
- END_TEST (65);
- sprintf (buffer + strlen (buffer), " %d", j);
- break;
- }
- obstack_fgrow1 (&output_obstack, "%s\n", buffer);
- }
- }
+ for (j = 1; j <= nrules; j++)
+ for (rule = &ritem[rrhs[j]]; *rule > 0; rule++)
+ if (*rule == token_translations[i])
+ {
+ END_TEST (65);
+ sprintf (buffer + strlen (buffer), " %d", j);
+ break;
+ }
+ obstack_fgrow1 (&output_obstack, "%s\n", buffer);
+ }
obstack_sgrow (&output_obstack, "\n");
obstack_sgrow (&output_obstack,
Index: src/reader.c
===================================================================
RCS file: /cvsroot/bison/bison/src/reader.c,v
retrieving revision 1.72.2.5
diff -u -u -r1.72.2.5 reader.c
--- src/reader.c 2001/09/18 11:37:11 1.72.2.5
+++ src/reader.c 2001/09/22 17:42:56
@@ -512,7 +512,6 @@
/* symbol and symval combined are only one symbol */
nsyms--;
}
- translations = 1;
symbol = NULL;
}
else if (token == tok_identifier)
@@ -537,7 +536,6 @@
else if (symbol && token == tok_number)
{
symbol->user_token_number = numval;
- translations = 1;
}
else
{
@@ -679,7 +677,6 @@
if (prev == tok_identifier)
{
symval->user_token_number = numval;
- translations = 1;
}
else
{
@@ -736,7 +733,7 @@
while (c != EOF)
{
-
+
/* If C contains '/', it is output by copy_comment (). */
if (c != '/')
{
@@ -744,7 +741,7 @@
if (defines_flag)
obstack_1grow (&defines_obstack, c);
}
-
+
switch (c)
{
case '\n':
@@ -827,7 +824,6 @@
char *typename = 0;
int usrtoknum;
- translations = 1;
token = lex (); /* fetch typename or first token */
if (token == tok_typename)
{
@@ -1657,9 +1653,10 @@
continue;
obstack_fgrow2 (oout, "# define\t%s\t%d\n",
- symbol,
- (translations ? bp->user_token_number : bp->value));
+ symbol, bp->user_token_number);
if (semantic_parser)
+ /* FIXME: This is certainly dead wrong, and should be just as
+ above. --akim. */
obstack_fgrow2 (oout, "# define\tT%s\t%d\n", symbol, bp->value);
}
@@ -1676,9 +1673,9 @@
static void
packsymbols (void)
{
- bucket *bp;
+ bucket *bp = NULL;
int tokno = 1;
- int i;
+ int i, j;
int last_user_token_number;
static char DOLLAR[] = "$";
@@ -1744,7 +1741,7 @@
if (bp->class == token_sym)
{
- if (translations && !(bp->user_token_number))
+ if (!bp->user_token_number)
bp->user_token_number = ++last_user_token_number;
if (bp->user_token_number > max_user_token_number)
max_user_token_number = bp->user_token_number;
@@ -1757,30 +1754,25 @@
}
- if (translations)
- {
- int j;
+ token_translations = XCALLOC (short, max_user_token_number + 1);
- token_translations = XCALLOC (short, max_user_token_number + 1);
+ /* initialize all entries for literal tokens to 2, the internal
+ token number for $undefined., which represents all invalid
+ inputs. */
+ for (j = 0; j <= max_user_token_number; j++)
+ token_translations[j] = 2;
- /* initialize all entries for literal tokens to 2, the internal
- token number for $undefined., which represents all invalid
- inputs. */
- for (j = 0; j <= max_user_token_number; j++)
- token_translations[j] = 2;
-
- for (bp = firstsymbol; bp; bp = bp->next)
- {
- if (bp->value >= ntokens)
- continue; /* non-terminal */
- if (bp->user_token_number == SALIAS)
- continue;
- if (token_translations[bp->user_token_number] != 2)
- complain (_("tokens %s and %s both assigned number %d"),
- tags[token_translations[bp->user_token_number]],
- bp->tag, bp->user_token_number);
- token_translations[bp->user_token_number] = bp->value;
- }
+ for (bp = firstsymbol; bp; bp = bp->next)
+ {
+ if (bp->value >= ntokens)
+ continue; /* non-terminal */
+ if (bp->user_token_number == SALIAS)
+ continue;
+ if (token_translations[bp->user_token_number] != 2)
+ complain (_("tokens %s and %s both assigned number %d"),
+ tags[token_translations[bp->user_token_number]],
+ bp->tag, bp->user_token_number);
+ token_translations[bp->user_token_number] = bp->value;
}
error_token_number = errtoken->value;
@@ -1905,15 +1897,6 @@
{
start_flag = 0;
startval = NULL; /* start symbol not specified yet. */
-
-#if 0
- /* initially assume token number translation not needed. */
- translations = 0;
-#endif
- /* Nowadays translations is always set to 1, since we give `error' a
- user-token-number to satisfy the Posix demand for YYERRCODE==256.
- */
- translations = 1;
nsyms = 1;
nvars = 0;
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- FYI: 1.29b: translations,
Akim Demaille <=