[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
07-yytoken.patch
From: |
Akim Demaille |
Subject: |
07-yytoken.patch |
Date: |
Tue, 12 Nov 2002 08:44:34 +0100 |
Index: 0.10/ChangeLog
--- 0.10/ChangeLog Sun, 10 Nov 2002 14:55:11 +0100 akim (bison/d/40_ChangeLog
1.8 644)
+++ 0.10(w)/ChangeLog Sun, 10 Nov 2002 16:25:19 +0100 akim
(bison/d/40_ChangeLog 1.8 644)
@@ -1,5 +1,17 @@
2002-11-10 Akim Demaille <address@hidden>
+ * data/c.m4 (b4_yydestruct_generate, b4_symbol_actions): New.
+ * data/yacc.c: Rename yychar1 as yytoken, as in glr.c.
+ Don't work on yychar (i.e., do set it to YYEMPTY, don't match
+ it against YYEMPTY and so forth), work on yytoken (i.e., set
+ it to YYEMPTY etc.).
+ (yydestruct): Replace with a b4_yydestruct_generate invocation.
+ (b4_symbol_actions): Remove.
+ * data/glr.c (YYTRANSLATE): As for yacc.c, if negative, it stands
+ for 0, end-of-input.
+
+2002-11-10 Akim Demaille <address@hidden>
+
* doc/bison.texinfo (Destructor Decl): New.
2002-11-10 Akim Demaille <address@hidden>
Index: 0.10/data/glr.c
--- 0.10/data/glr.c Fri, 08 Nov 2002 16:19:16 +0100 akim (bison/b/43_glr.c 1.1
644)
+++ 0.10(w)/data/glr.c Sun, 10 Nov 2002 16:22:13 +0100 akim (bison/b/43_glr.c
1.1 644)
@@ -292,8 +292,9 @@
#define YYUNDEFTOK ]b4_undef_token_number[
#define YYMAXUTOK ]b4_user_token_number_max[
-#define YYTRANSLATE(YYX) \
- ((unsigned)(YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
+#define YYTRANSLATE(YYX) \
+ ((YYX <= 0) ? YYEOF :
\
+ (unsigned)(YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */
static const ]b4_int_type_for([b4_translate])[ yytranslate[] =
@@ -1520,7 +1521,7 @@
{
YYDPRINTF ((stderr, "Reading a token: "));
yychar = YYLEX;
- *yytokenp = YYTRANSLATE(yychar);
+ *yytokenp = YYTRANSLATE (yychar);
YYDPRINTF ((stderr, "Next token is %s\n",
yytokenName (*yytokenp)));
}
@@ -1593,8 +1594,7 @@
yysize += strlen (yytokenName (yyx)) + strlen (yyprefix),
yycount += 1, yyprefix = " or ";
yymsg = yyp = (char*) malloc (yysize);
- sprintf (yyp, "parse error, unexpected %s",
- yytokenName (*yytokenp));
+ sprintf (yyp, "parse error, unexpected %s", yytokenName (*yytokenp));
yyp += strlen (yyp);
if (yycount < 5)
{
Index: 0.10/data/yacc.c
--- 0.10/data/yacc.c Fri, 08 Nov 2002 16:19:16 +0100 akim (bison/b/45_yacc.c
1.1 644)
+++ 0.10(w)/data/yacc.c Sun, 10 Nov 2002 16:26:40 +0100 akim (bison/b/45_yacc.c
1.1 644)
@@ -152,29 +152,6 @@
[m4_bpatsubst(m4_toupper([BISON_]b4_output_header_name),
[[^ABCDEFGHIJKLMNOPQRSTUVWXYZ]], [_])])
-
-
-## --------------------------------------------------------- ##
-## Defining symbol actions, e.g., printers and destructors. ##
-## --------------------------------------------------------- ##
-
-# b4_symbol_actions(FILENAME, LINENO,
-# SYMBOL-TAG, SYMBOL-NUM,
-# SYMBOL-ACTION, SYMBOL-TYPENAME)
-# -------------------------------------------------
-m4_define([b4_symbol_actions],
-[m4_pushdef([b4_dollar_dollar], [yyvalue.$6])dnl
-m4_pushdef([b4_at_dollar], [yylocation])dnl
- case $4: /* $3 */
-b4_syncline([$2], [$1])
- $5;
-b4_syncline([__oline__], [__ofile__])
- break;
-m4_popdef([b4_at_dollar])dnl
-m4_popdef([b4_dollar_dollar])dnl
-])
-
-
# We do want M4 expansion after # for CPP macros.
m4_changecom()
m4_divert(0)dnl
@@ -373,15 +350,16 @@
/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */
#define YYUNDEFTOK b4_undef_token_number
-#define YYMAXUTOK b4_user_token_number_max
+#define YYMAXUTOK b4_user_token_number_max[
-#define YYTRANSLATE(X) \
- ((unsigned)(X) <= YYMAXUTOK ? yytranslate[[X]] : YYUNDEFTOK)
+#define YYTRANSLATE(YYX) \
+ ((YYX <= 0) ? YYEOF :
\
+ (unsigned)(YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
-/* YYTRANSLATE[[YYLEX]] -- Bison symbol number corresponding to YYLEX. */
-static const b4_int_type_for([b4_translate]) yytranslate[[]] =
+/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */
+static const ]b4_int_type_for([b4_translate])[ yytranslate[] =
{
- b4_translate
+ ]b4_translate
};
#if YYDEBUG
@@ -502,7 +480,7 @@
#endif
#define yyerrok (yyerrstatus = 0)
-#define yyclearin (yychar = YYEMPTY)
+#define yyclearin (yytoken = YYEMPTY)
#define YYEMPTY -2
#define YYEOF 0
@@ -520,11 +498,11 @@
#define YYBACKUP(Token, Value) \
do \
- if (yychar == YYEMPTY && yylen == 1) \
+ if (yytoken == YYEMPTY && yylen == 1) \
{ \
yychar = (Token); \
yylval = (Value); \
- yychar1 = YYTRANSLATE (yychar); \
+ yytoken = YYTRANSLATE (yychar); \
YYPOPSTACK; \
goto yybackup; \
} \
@@ -697,30 +675,7 @@
}
#endif /* YYDEBUG. */
-
-/*-----------------------------------------------.
-| Release the memory associated to this symbol. |
-`-----------------------------------------------*/
-
-b4_c_function_def([yydestruct],
- [static void],
- [[int yytype], [yytype]],
- [[YYSTYPE yyvalue], [yyvalue]]b4_location_if([,
- [[YYLTYPE yylocation], [yylocation]]]))
-{
- /* Pacify ``unused variable'' warnings. */
- (void) yyvalue;
-b4_location_if([ (void) yylocation;
-])dnl
-
- switch (yytype)
- {
-m4_map([b4_symbol_actions], m4_defn([b4_symbol_destructors]))dnl
- default:
- break;
- }
-}
-
+b4_yydestruct_generate([b4_c_function_def])
/* Prevent warnings from -Wmissing-prototypes. */
@@ -781,7 +736,7 @@
/* Number of tokens to shift before error messages enabled. */
int yyerrstatus;
/* Lookahead token as an internal (translated) token number. */
- int yychar1 = 0;
+ int yytoken = 0;
/* Three stacks and their tools:
`yyss': related to states,
@@ -825,7 +780,7 @@
yystate = 0;
yyerrstatus = 0;
yynerrs = 0;
- yychar = YYEMPTY; /* Cause a token to be read. */
+ yytoken = YYEMPTY; /* Cause a token to be read. */
/* Initialize stack pointers.
Waste one element of value and location stack
@@ -935,39 +890,31 @@
/* Not known => get a lookahead token if don't already have one. */
- /* yychar is either YYEMPTY or YYEOF
- or a valid token in external form. */
-
- if (yychar == YYEMPTY)
+ /* YYTOKEN is either YYEMPTY or YYEOF or a valid token. */
+ if (yytoken == YYEMPTY)
{
YYDPRINTF ((stderr, "Reading a token: "));
yychar = YYLEX;
+ yytoken = YYTRANSLATE (yychar);
}
- /* Convert token to internal form (in yychar1) for indexing tables with. */
-
- if (yychar <= 0) /* This means end of input. */
+ if (yytoken == YYEOF)
{
- yychar1 = 0;
- yychar = YYEOF; /* Don't call YYLEX any more. */
-
YYDPRINTF ((stderr, "Now at end of input.\n"));
}
else
{
- yychar1 = YYTRANSLATE (yychar);
-
/* We have to keep this `#if YYDEBUG', since we use variables
which are defined only if `YYDEBUG' is set. */
YYDPRINTF ((stderr, "Next token is "));
- YYDSYMPRINT ((stderr, yychar1, yylval]b4_location_if([, yyloc])[));
+ YYDSYMPRINT ((stderr, yytoken, yylval]b4_location_if([, yyloc])[));
YYDPRINTF ((stderr, "\n"));
}
- /* If the proper action on seeing token YYCHAR1 is to reduce or to
+ /* If the proper action on seeing token YYTOKEN is to reduce or to
detect an error, take that action. */
- yyn += yychar1;
- if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yychar1)
+ yyn += yytoken;
+ if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
goto yydefault;
yyn = yytable[yyn];
if (yyn <= 0)
@@ -983,11 +930,11 @@
/* Shift the lookahead token. */
YYDPRINTF ((stderr, "Shifting token %d (%s), ",
- yychar, yytname[yychar1]));
+ yytoken, yytname[yytoken]));
/* Discard the token being shifted unless it is eof. */
- if (yychar != YYEOF)
- yychar = YYEMPTY;
+ if (yytoken != YYEOF)
+ yytoken = YYEMPTY;
*++yyvsp = yylval;
]b4_location_if([ *++yylsp = yylloc;])[
@@ -1159,7 +1106,7 @@
error, discard it. */
/* Return failure if at end of input. */
- if (yychar == YYEOF)
+ if (yytoken == YYEOF)
{
/* Pop the error token. */
YYPOPSTACK;
@@ -1178,9 +1125,9 @@
}
YYDPRINTF ((stderr, "Discarding token %d (%s).\n",
- yychar, yytname[yychar1]));
- yydestruct (yychar1, yylval]b4_location_if([, yylloc])[);
- yychar = YYEMPTY;
+ yytoken, yytname[yytoken]));
+ yydestruct (yytoken, yylval]b4_location_if([, yylloc])[);
+ yytoken = YYEMPTY;
}
/* Else will try to reuse lookahead token after shifting the error
Index: 0.10/data/c.m4
--- 0.10/data/c.m4 Sat, 09 Nov 2002 16:45:25 +0100 akim (bison/b/46_c.m4 1.2
644)
+++ 0.10(w)/data/c.m4 Sun, 10 Nov 2002 15:56:00 +0100 akim (bison/b/46_c.m4 1.2
644)
@@ -320,3 +320,54 @@
m4_define([b4_syncline],
[m4_if(b4_synclines_flag, 1,
[[#]line $1 "$2"])])
+
+
+## --------------------------------------------------------- ##
+## Defining symbol actions, e.g., printers and destructors. ##
+## --------------------------------------------------------- ##
+
+# b4_symbol_actions(FILENAME, LINENO,
+# SYMBOL-TAG, SYMBOL-NUM,
+# SYMBOL-ACTION, SYMBOL-TYPENAME)
+# -------------------------------------------------
+m4_define([b4_symbol_actions],
+[m4_pushdef([b4_dollar_dollar], [yyvalue.$6])dnl
+m4_pushdef([b4_at_dollar], [yylocation])dnl
+ case $4: /* $3 */
+b4_syncline([$2], [$1])
+ $5;
+b4_syncline([__oline__], [__ofile__])
+ break;
+m4_popdef([b4_at_dollar])dnl
+m4_popdef([b4_dollar_dollar])dnl
+])
+
+
+# b4_yydestruct_generate(FUNTION-DECLARATOR)
+# ------------------------------------------
+# Generate the "yydestruct" function, which declaration is issued using
+# FUNTION-DECLARATOR, which may be "b4_c_ansi_function_def" for ISO C
+# or "b4_c_function_def" for K&R.
+m4_define([b4_yydestruct_generate],
+[[/*-----------------------------------------------.
+| Release the memory associated to this symbol. |
+`-----------------------------------------------*/
+
+]$1([yydestruct],
+ [static void],
+ [[int yytype], [yytype]],
+ [[YYSTYPE yyvalue], [yyvalue]]b4_location_if([,
+ [[YYLTYPE yylocation], [yylocation]]]))[
+{
+ /* Pacify ``unused variable'' warnings. */
+ (void) yyvalue;
+]b4_location_if([ (void) yylocation;
+])[
+ switch (yytype)
+ {
+]m4_map([b4_symbol_actions], m4_defn([b4_symbol_destructors]))[
+ default:
+ break;
+ }
+}]dnl
+])
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- 07-yytoken.patch,
Akim Demaille <=