From: Akim Demaille Date: Thu, 2 May 2002 15:06:46 +0000 (+0000) Subject: Remove the so called hairy (semantic) parsers. X-Git-Tag: BISON-1_49b~261 X-Git-Url: https://git.saurik.com/bison.git/commitdiff_plain/fdbcd8e28930c6a1e6d4f80636c7b4e21a575489 Remove the so called hairy (semantic) parsers. * src/system.h (EXT_GUARD_C, EXT_STYPE_H): Remove. * src/gram.h, src/gram.c (semantic_parser): Remove. (rule_t): Remove the guard and guard_line members. * src/lex.h (token_t): remove tok_guard. * src/options.c (option_table): Remove %guard and %semantic_parser support. * src/output.c, src/output.h (guards_output): Remove. (prepare): Adjust. (token_definitions_output): Don't output the `T' tokens (???). (output_skeleton): Don't output the guards. * src/files.c, src/files.c (attrsfile): Remove. * src/reader.c (symbol_list): Remove the guard and guard_line members. Adjust dependencies. (parse_guard): Remove. * data/bison.hairy: Remove. * doc/bison.texinfo (Environment Variables): Remove occurrences of BISON_HAIRY. --- diff --git a/ChangeLog b/ChangeLog index 3d49d8c4..81b6adc7 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,27 @@ +2002-05-02 Akim Demaille + + Remove the so called hairy (semantic) parsers. + + * src/system.h (EXT_GUARD_C, EXT_STYPE_H): Remove. + * src/gram.h, src/gram.c (semantic_parser): Remove. + (rule_t): Remove the guard and guard_line members. + * src/lex.h (token_t): remove tok_guard. + * src/options.c (option_table): Remove %guard and %semantic_parser + support. + * src/output.c, src/output.h (guards_output): Remove. + (prepare): Adjust. + (token_definitions_output): Don't output the `T' + tokens (???). + (output_skeleton): Don't output the guards. + * src/files.c, src/files.c (attrsfile): Remove. + * src/reader.c (symbol_list): Remove the guard and guard_line + members. + Adjust dependencies. + (parse_guard): Remove. + * data/bison.hairy: Remove. + * doc/bison.texinfo (Environment Variables): Remove occurrences of + BISON_HAIRY. + 2002-05-02 Akim Demaille * src/reader.c (copy_at, copy_dollarm parse_braces, parse_action) diff --git a/NEWS b/NEWS index 716f4090..14a42e21 100644 --- a/NEWS +++ b/NEWS @@ -55,6 +55,10 @@ Changes in version 1.49b: %token YYEOF 0 or %token YYEOF 0 "end of file" + +* Semantic parser + This old option, which has been broken for ages, is removed. + Changes in version 1.35, 2002-03-25: diff --git a/TODO b/TODO index 9f10420b..7514df80 100644 --- a/TODO +++ b/TODO @@ -214,7 +214,6 @@ Show reductions. [] ** %no-lines [ok] ** %no-parser [] ** %pure-parser [] -** %semantic-parser [] ** %token-table [] ** Options which could use parse_dquoted_param (). Maybe transfered in lex.c. diff --git a/data/Makefile.am b/data/Makefile.am index 641bba38..57d89ac3 100644 --- a/data/Makefile.am +++ b/data/Makefile.am @@ -1,4 +1,4 @@ -## Copyright 2002 Free Software Foundation, Inc. +## Copyright (C) 2002 Free Software Foundation, Inc. ## This program is free software; you can redistribute it and/or modify ## it under the terms of the GNU General Public License as published by @@ -15,7 +15,7 @@ ## Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ## 02111-1307 USA -dist_pkgdata_DATA = bison.simple bison.hairy bison.c++ +dist_pkgdata_DATA = bison.simple bison.c++ m4sugardir = $(pkgdatadir)/m4sugar dist_m4sugar_DATA = m4sugar/m4sugar.m4 m4sugar/version.m4 diff --git a/data/bison.hairy b/data/bison.hairy deleted file mode 100644 index 1034eae7..00000000 --- a/data/bison.hairy +++ /dev/null @@ -1,336 +0,0 @@ -%%{section} %%{output-prefix} %%{output-infix} %%".c" - /* -*- C -*- */ - -/* YYERROR and YYCOST are set by guards. If yyerror is set to a - nonzero value by a guard, the reduction with which the guard is - associated is not performed, and the error recovery mechanism is - invoked. Yycost indicates the cost of performing the reduction - given the attributes of the symbols. */ -static int yyerror; -static int yycost; - -/* YYMAXDEPTH indicates the size of the parser's state and value - stacks. */ - -#ifndef YYMAXDEPTH -# define YYMAXDEPTH 500 -#endif - -/* YYMAXRULES must be at least as large as the number of rules that - could be placed in the rule queue. That number could be determined - from the grammar and the size of the stack, but, as yet, it is not. - */ - -#ifndef YYMAXRULES -# define YYMAXRULES 100 -#endif - -#ifndef YYMAXBACKUP -# define YYMAXBACKUP 100 -#endif - - -/* The state stack. */ -static short yyss[YYMAXDEPTH]; -/* The semantic value stack. */ -static YYSTYPE yyvs[YYMAXDEPTH]; -/* The location stack. */ -static YYLTYPE yyls[YYMAXDEPTH]; -/* The rule queue. */ -static short yyrq[YYMAXRULES]; -/* The lookahead symbol. */ -static int yychar; - -/* the semantic value of the lookahead symbol. */ -static YYSTYPE yylval; - -/* the semantic value for the state at the top of the state stack. */ -static YYSTYPE yytval; - -/* the variable used to return semantic values from the action - routines. */ -static YYSTYPE yyval; - -/* location data for the lookahead symbol. */ -static YYLTYPE yylloc; - -/* location data for the state at the top of the state stack. */ -static YYLTYPE yytloc; - - -static int yynunlexed; -static short yyunchar[YYMAXBACKUP]; -static YYSTYPE yyunval[YYMAXBACKUP]; -static YYLTYPE yyunloc[YYMAXBACKUP]; - -/* a pointer to the top of the state stack; only set during error - recovery. */ -static short *yygssp; - -/* a pointer to the top of the value stack; only set during error - recovery. */ -static YYSTYPE *yygvsp; - -/* a pointer to the top of the location stack; only set during error - recovery. */ -static YYLTYPE *yyglsp; - - -/*--------------------------------------------------------------------. -| Yyget is an interface between the parser and the lexical analyzer. | -| It is costly to provide such an interface, but it avoids requiring | -| the lexical analyzer to be able to back up the scan. | -`--------------------------------------------------------------------*/ - -static inline void -yyget (void) -{ - if (yynunlexed > 0) - { - yynunlexed--; - yychar = yyunchar[yynunlexed]; - yylval = yyunval[yynunlexed]; - yylloc = yyunloc[yynunlexed]; - } - else if (yychar <= 0) - yychar = 0; - else - { - yychar = yylex (); - if (yychar < 0) - yychar = 0; - else - yychar = YYTRANSLATE (yychar); - } -} - - -static inline void -yyunlex (int chr, YYSTYPE val, YYLTYPE loc) -{ - yyunchar[yynunlexed] = chr; - yyunval[yynunlexed] = val; - yyunloc[yynunlexed] = loc; - yynunlexed++; -} - - -static inline void -yyrestore (short *first, short *last) -{ - short *ssp; - short *rp; - int symbol; - int state; - int tvalsaved; - - ssp = yygssp; - yyunlex (yychar, yylval, yylloc); - - tvalsaved = 0; - while (first != last) - { - symbol = yystos[*ssp]; - if (symbol < YYNTBASE) - { - yyunlex (symbol, yytval, yytloc); - tvalsaved = 1; - ssp--; - } - - ssp--; - - if (first == yyrq) - first = yyrq + YYMAXRULES; - - first--; - - for (rp = yyrhs + yyprhs[*first]; symbol = *rp; rp++) - { - if (symbol < YYNTBASE) - state = yytable[yypact[*ssp] + symbol]; - else - { - state = yypgoto[symbol - YYNTBASE] + *ssp; - - if (state >= 0 && state <= YYLAST && yycheck[state] == *ssp) - state = yytable[state]; - else - state = yydefgoto[symbol - YYNTBASE]; - } - - *++ssp = state; - } - } - - if (!tvalsaved && ssp > yyss) - { - yyunlex (yystos[*ssp], yytval, yytloc); - ssp--; - } - - yygssp = ssp; -} - - - -int -yyparse (void) -{ - int yystate; - int yyn; - short *yyssp; - short *yyrq0; - short *yyptr; - YYSTYPE *yyvsp; - - int yylen; - YYLTYPE *yylsp; - short *yyrq1; - short *yyrq2; - - yystate = 0; - yyssp = yyss - 1; - yyvsp = yyvs - 1; - yylsp = yyls - 1; - yyrq0 = yyrq; - yyrq1 = yyrq0; - yyrq2 = yyrq0; - - yychar = yylex (); - if (yychar < 0) - yychar = 0; - else - yychar = YYTRANSLATE (yychar); - -yynewstate: - - if (yyssp >= yyss + YYMAXDEPTH - 1) - { - yyabort ("Parser Stack Overflow"); - YYABORT; - } - - *++yyssp = yystate; - -yyresume: - - yyn = yypact[yystate]; - if (yyn == YYFLAG) - goto yydefault; - - yyn += yychar; - if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != yychar) - goto yydefault; - - yyn = yytable[yyn]; - if (yyn < 0) - { - yyn = -yyn; - goto yyreduce; - } - else if (yyn == 0) - goto yyerrlab; - - yystate = yyn; - - yyptr = yyrq2; - while (yyptr != yyrq1) - { - yyn = *yyptr++; - yylen = yyr2[yyn]; - yyvsp -= yylen; - yylsp -= yylen; - - yyguard (yyn, yyvsp, yylsp); - if (yyerror) - goto yysemerr; - - yyaction (yyn, yyvsp, yylsp); - *++yyvsp = yyval; - - yylsp++; - if (yylen == 0) - { - yylsp->first_line = yytloc.first_line; - yylsp->first_column = yytloc.first_column; - yylsp->last_line = (yylsp - 1)->last_line; - yylsp->last_column = (yylsp - 1)->last_column; - yylsp->text = 0; - } - else - { - yylsp->last_line = (yylsp + yylen - 1)->last_line; - yylsp->last_column = (yylsp + yylen - 1)->last_column; - } - - if (yyptr == yyrq + YYMAXRULES) - yyptr = yyrq; - } - - if (yystate == YYFINAL) - YYACCEPT; - - yyrq2 = yyptr; - yyrq1 = yyrq0; - - *++yyvsp = yytval; - *++yylsp = yytloc; - yytval = yylval; - yytloc = yylloc; - yyget (); - - goto yynewstate; - -yydefault: - - yyn = yydefact[yystate]; - if (yyn == 0) - goto yyerrlab; - -yyreduce: - - *yyrq0++ = yyn; - - if (yyrq0 == yyrq + YYMAXRULES) - yyrq0 = yyrq; - - if (yyrq0 == yyrq2) - { - yyabort ("Parser Rule Queue Overflow"); - YYABORT; - } - - yyssp -= yyr2[yyn]; - yyn = yyr1[yyn]; - - yystate = yypgoto[yyn - YYNTBASE] + *yyssp; - if (yystate >= 0 && yystate <= YYLAST && yycheck[yystate] == *yyssp) - yystate = yytable[yystate]; - else - yystate = yydefgoto[yyn - YYNTBASE]; - - goto yynewstate; - -yysemerr: - *--yyptr = yyn; - yyrq2 = yyptr; - yyvsp += yyr2[yyn]; - -yyerrlab: - - yygssp = yyssp; - yygvsp = yyvsp; - yyglsp = yylsp; - yyrestore (yyrq0, yyrq2); - yyrecover (); - yystate = *yygssp; - yyssp = yygssp; - yyvsp = yygvsp; - yyrq0 = yyrq; - yyrq1 = yyrq0; - yyrq2 = yyrq0; - goto yyresume; -} - -%%{actions} diff --git a/data/bison.simple b/data/bison.simple index 14615bf7..f7127a0c 100644 --- a/data/bison.simple +++ b/data/bison.simple @@ -116,8 +116,8 @@ m4_divert(0)dnl /* This is the parser code that is written into each bison parser when the %semantic_parser declaration is not specified in the grammar. - It was written by Richard Stallman by simplifying the hairy parser - used when %semantic_parser is specified. */ + It was written by Richard Stallman by simplifying the original so + called ``semantic'' parser. */ /* All symbols defined below should begin with yy or YY, to avoid infringing on user name space. This should be done even for local diff --git a/doc/bison.texinfo b/doc/bison.texinfo index 866f7968..275c95ec 100644 --- a/doc/bison.texinfo +++ b/doc/bison.texinfo @@ -5233,7 +5233,6 @@ the output graph filename. @node Environment Variables @section Environment Variables @cindex environment variables -@cindex BISON_HAIRY @cindex BISON_SIMPLE Here is a list of environment variables which affect the way Bison @@ -5241,18 +5240,11 @@ runs. @table @samp @item BISON_SIMPLE -@itemx BISON_HAIRY Much of the parser generated by Bison is copied verbatim from a file called @file{bison.simple}. If Bison cannot find that file, or if you would like to direct Bison to use a different copy, setting the environment variable @code{BISON_SIMPLE} to the path of the file will cause Bison to use that copy instead. - -When the @samp{%semantic-parser} declaration is used, Bison copies from -a file called @file{bison.hairy} instead. The location of this file can -also be specified or overridden in a similar fashion, with the -@code{BISON_HAIRY} environment variable. - @end table @node Option Cross Key diff --git a/src/files.c b/src/files.c index 3c1a0ba2..1e084f6e 100644 --- a/src/files.c +++ b/src/files.c @@ -53,7 +53,6 @@ char *spec_defines_file = NULL; /* for --defines. */ char *parser_file_name = NULL; char *infile = NULL; -char *attrsfile = NULL; static char *full_base_name = NULL; @@ -423,10 +422,10 @@ compute_output_file_names (void) src_extension = ".c"; if (!header_extension) header_extension = ".h"; - + parser_file_name = spec_outfile ? spec_outfile : stringappend (full_base_name, src_extension); - + /* It the defines filename if not given, we create it. */ if (!spec_defines_file) spec_defines_file = stringappend (full_base_name, header_extension); @@ -436,6 +435,4 @@ compute_output_file_names (void) spec_graph_file = stringappend (short_base_name, ".vcg"); spec_verbose_file = stringappend (short_base_name, EXT_OUTPUT); - - attrsfile = stringappend (short_base_name, EXT_STYPE_H); } diff --git a/src/files.h b/src/files.h index d8a8eb1f..17c30057 100644 --- a/src/files.h +++ b/src/files.h @@ -57,7 +57,6 @@ extern struct obstack post_prologue_obstack; extern struct obstack output_obstack; extern char *infile; -extern char *attrsfile; void compute_output_file_names PARAMS((void)); diff --git a/src/gram.c b/src/gram.c index e6fb7089..75546603 100644 --- a/src/gram.c +++ b/src/gram.c @@ -45,8 +45,6 @@ token_number_t start_symbol = 0; int max_user_token_number = 256; -int semantic_parser = 0; - int pure_parser = 0; diff --git a/src/gram.h b/src/gram.h index f143b4ee..d02964ff 100644 --- a/src/gram.h +++ b/src/gram.h @@ -47,7 +47,7 @@ Therefore 0 cannot be used, since it would be both the rule number 0, and the token EOF). - Actions and guards are accessed via the rule number. + Actions are accessed via the rule number. The rules themselves are described by several arrays: amongst which RITEM, and RULES. @@ -150,9 +150,6 @@ typedef struct rule_s const char *action; int action_line; - - const char *guard; - int guard_line; } rule_t; extern struct rule_s *rules; @@ -166,11 +163,6 @@ extern symbol_t **symbols; extern token_number_t *token_translations; extern int max_user_token_number; -/* SEMANTIC_PARSER is nonzero if the input file says to use the hairy - parser that provides for semantic error recovery. If it is zero, - the yacc-compatible simplified parser is used. */ - -extern int semantic_parser; /* PURE_PARSER is nonzero if should generate a parser that is all pure and reentrant. */ diff --git a/src/lex.h b/src/lex.h index c3dc66d7..ff0306e7 100644 --- a/src/lex.h +++ b/src/lex.h @@ -36,7 +36,6 @@ typedef enum token_e tok_percent_left_curly, tok_token, tok_nterm, - tok_guard, tok_type, tok_union, tok_start, diff --git a/src/options.c b/src/options.c index 973b6e07..934d8f96 100644 --- a/src/options.c +++ b/src/options.c @@ -83,7 +83,6 @@ const struct option_table_struct option_table[] = DRTV ("term", no, NULL, tok_token) DRTV ("nterm", no, NULL, tok_nterm) DRTV ("type", no, NULL, tok_type) - DRTV ("guard", no, NULL, tok_guard) DRTV ("union", no, NULL, tok_union) DRTV ("expect", no, NULL, tok_expect) DRTV ("thong", no, NULL, tok_thong) @@ -104,7 +103,6 @@ const struct option_table_struct option_table[] = BOTH ("name-prefix", required, &spec_name_prefix, tok_stropt, 'p') DRTV ("define", no, NULL, tok_define) - DRTV ("semantic-parser",no, &semantic_parser, tok_intopt) DRTV ("pure-parser", no, &pure_parser, tok_intopt) /* diff --git a/src/output.c b/src/output.c index fa001ff8..676328fb 100644 --- a/src/output.c +++ b/src/output.c @@ -568,30 +568,6 @@ actions_output (FILE *out) } -/*----------------------------. -| Output the guards to OOUT. | -`----------------------------*/ - -void -guards_output (FILE *out) -{ - int rule; - for (rule = 1; rule < nrules + 1; ++rule) - if (rules[rule].guard) - { - fprintf (out, " case %d:\n", rule); - - if (!no_lines_flag) - fprintf (out, muscle_find ("linef"), - rules[rule].guard_line, - quotearg_style (c_quoting_style, - muscle_find ("filename"))); - fprintf (out, "{ %s; }\n break;\n\n", - rules[rule].guard); - } -} - - /*---------------------------------------. | Output the tokens definition to OOUT. | `---------------------------------------*/ @@ -629,10 +605,6 @@ token_definitions_output (FILE *out) fprintf (out, "%s [[[%s]], [%d]]", first ? "" : ",\n", symbol->tag, number); - if (semantic_parser) - /* FIXME: This is probably wrong, and should be just as - above. --akim. */ - fprintf (out, "# define T%s\t%d\n", symbol->tag, symbol->number); first = 0; } } @@ -1020,10 +992,6 @@ output_skeleton (void) actions_output (out); fputs ("]])\n\n", out); - fputs ("m4_define([b4_guards], \n[[", out); - guards_output (out); - fputs ("]])\n\n", out); - fputs ("m4_define([b4_tokens], \n[", out); token_definitions_output (out); fputs ("])\n\n", out); @@ -1099,12 +1067,7 @@ prepare (void) /* Find the right skeleton file. */ if (!skeleton) - { - if (semantic_parser) - skeleton = "bison.hairy"; - else - skeleton = "bison.simple"; - } + skeleton = "bison.simple"; /* Parse the skeleton file and output the needed parsers. */ muscle_insert ("skeleton", skeleton); diff --git a/src/output.h b/src/output.h index 5b294fc9..d12c125d 100644 --- a/src/output.h +++ b/src/output.h @@ -27,7 +27,6 @@ extern int error_verbose; void output PARAMS ((void)); void actions_output PARAMS ((FILE *out)); -void guards_output PARAMS ((FILE *out)); void token_definitions_output PARAMS ((FILE *out)); extern struct obstack muscle_obstack; diff --git a/src/reader.c b/src/reader.c index 0e1fc2bd..1ce5f51f 100644 --- a/src/reader.c +++ b/src/reader.c @@ -45,9 +45,6 @@ typedef struct symbol_list const char *action; int action_line; - /* The guard is attached to the LHS of a rule. */ - const char *guard; - int guard_line; symbol_t *ruleprec; } symbol_list; @@ -80,8 +77,6 @@ symbol_list_new (symbol_t *sym) res->line = lineno; res->action = NULL; res->action_line = 0; - res->guard = NULL; - res->guard_line = 0; res->ruleprec = NULL; return res; } @@ -1273,9 +1268,7 @@ read_declarations (void) | values in the current rule so far, which says where to find `$0' | | with respect to the top of the stack. | | | -| This routine is used both for actions and guards. Only | -| ACTION_OBSTACK is used, but this is fine, since we use only | -| pointers to relevant portions inside this obstack. | +| This routine is used for actions. | `------------------------------------------------------------------*/ static void @@ -1341,18 +1334,6 @@ parse_action (symbol_list *rule, int rule_length) rule->action = obstack_finish (&action_obstack); } - -static void -parse_guard (symbol_list *rule, int rule_length) -{ - token_t t = lex (); - if (t != tok_left_curly) - complain (_("invalid %s declaration"), "%guard"); - rule->guard_line = lineno; - parse_braces (rule, rule_length); - rule->guard = obstack_finish (&action_obstack); -} - /*-------------------------------------------------------------------. @@ -1384,8 +1365,8 @@ gensym (void) | null pointer instead of a symbol to terminate the rule. The next | | symbol is the lhs of the following rule. | | | -| All guards and actions are copied out to the appropriate files, | -| labelled by the rule number they apply to. | +| All actions are copied out, labelled by the rule number they apply | +| to. | | | | Bison used to allow some %directives in the rules sections, but | | this is no longer consider appropriate: (i) the documented grammar | @@ -1582,15 +1563,6 @@ readgram (void) t = lex (); } - if (t == tok_guard) - { - if (!semantic_parser) - complain (_("%%guard present but %%semantic_parser not specified")); - - parse_guard (crule, rulelength); - t = lex (); - } - if (t == tok_left_curly) { /* This case never occurs -wjh */ @@ -1791,8 +1763,6 @@ packgram (void) rules[ruleno].useful = TRUE; rules[ruleno].action = p->action; rules[ruleno].action_line = p->action_line; - rules[ruleno].guard = p->guard; - rules[ruleno].guard_line = p->guard_line; p = p->next; while (p && p->sym) @@ -1829,13 +1799,12 @@ packgram (void) ritem_print (stderr); } -/*-------------------------------------------------------------------. -| Read in the grammar specification and record it in the format | -| described in gram.h. All guards are copied into the GUARD_OBSTACK | -| and all actions into ACTION_OBSTACK, in each case forming the body | -| of a C function (YYGUARD or YYACTION) which contains a switch | -| statement to decide which guard or action to execute. | -`-------------------------------------------------------------------*/ +/*------------------------------------------------------------------. +| Read in the grammar specification and record it in the format | +| described in gram.h. All actions are copied into ACTION_OBSTACK, | +| in each case forming the body of a C function (YYACTION) which | +| contains a switch statement to decide which action to execute. | +`------------------------------------------------------------------*/ void reader (void) @@ -1889,7 +1858,7 @@ reader (void) } /* Read in the grammar, build grammar in list form. Write out - guards and actions. */ + actions. */ readgram (); /* Some C code is given at the end of the grammar file. */ read_additionnal_code (); diff --git a/src/reader.h b/src/reader.h index ce5e2dc7..8c946183 100644 --- a/src/reader.h +++ b/src/reader.h @@ -24,10 +24,7 @@ #include "symtab.h" /* Read in the grammar specification and record it in the format - described in gram.h. All guards are copied into the FGUARD file - and all actions into FACTION, in each case forming the body of a C - function (YYGUARD or YYACTION) which contains a switch statement to - decide which guard or action to execute. */ + described in gram.h. */ void reader PARAMS ((void)); diff --git a/src/system.h b/src/system.h index 6dd83bcf..8cd8bba1 100644 --- a/src/system.h +++ b/src/system.h @@ -238,21 +238,15 @@ do { \ /* VMS. */ # define EXT_TAB "_tab" # define EXT_OUTPUT ".output" -# define EXT_STYPE_H "_stype" -# define EXT_GUARD_C "_guard" #else /* ! VMS */ # ifdef MSDOS /* MS DOS. */ # define EXT_TAB "_tab" # define EXT_OUTPUT ".out" -# define EXT_STYPE_H ".sth" -# define EXT_GUARD_C ".guc" # else /* ! MSDOS */ /* Standard. */ # define EXT_TAB ".tab" # define EXT_OUTPUT ".output" -# define EXT_STYPE_H ".stype" -# define EXT_GUARD_C ".guard" # endif /* ! MSDOS */ #endif /* ! VMS */ diff --git a/tests/Makefile.am b/tests/Makefile.am index 09a6480c..ccda6d88 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -1,7 +1,7 @@ ## Process this file with automake to create Makefile.in. ## Makefile for Bison testsuite. -## Copyright 2000, 2001, 2002 Free Software Foundation, Inc. +## Copyright (C) 2000, 2001, 2002 Free Software Foundation, Inc. ## This program is free software; you can redistribute it and/or modify ## it under the terms of the GNU General Public License as published by @@ -49,8 +49,7 @@ TESTSUITE_AT = \ output.at sets.at reduce.at \ synclines.at headers.at actions.at conflicts.at \ calc.at \ - torture.at existing.at regression.at \ - semantic.at + torture.at existing.at regression.at TESTSUITE = $(srcdir)/testsuite diff --git a/tests/semantic.at b/tests/semantic.at deleted file mode 100644 index 9f88352b..00000000 --- a/tests/semantic.at +++ /dev/null @@ -1,47 +0,0 @@ -# Bison Semantic Parsers. -*- Autotest -*- -# Copyright 2001 Free Software Foundation, Inc. - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) -# any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA -# 02111-1307, USA. - -AT_BANNER([[Semantic Parsers.]]) - -# Well, nothing, or almost, is known about semantic parsers. For the -# time being, just make sure we still parse them properly. - -## ---------------- ## -## Parsing Guards. ## -## ---------------- ## - - -AT_SETUP([Parsing Guards]) - -AT_DATA([input.y], -[[%semantic-parser -%union { - int ival; -} -%token INT -%type exp -%% -exp: exp '+' exp { $$ = $1 + $3 } - | exp '/' exp %guard { if ($3 == 0) yyerror = 1 } { $$ = $1 / $3 } - | INT; -%% -]]) - -AT_CHECK([bison -v input.y -o input.c], 0, ignore, ignore) - -AT_CLEANUP diff --git a/tests/testsuite.at b/tests/testsuite.at index ac77dc63..26d3777c 100644 --- a/tests/testsuite.at +++ b/tests/testsuite.at @@ -61,6 +61,3 @@ m4_include([existing.at]) # Some old bugs. m4_include([regression.at]) - -# Exercising bison.hairy, before it gets really removed... -m4_include([semantic.at])