The branch main has been updated by bapt:

URL: 
https://cgit.FreeBSD.org/src/commit/?id=822ca3276345b4a67ccbc9b54616d8b205fd37f2

commit 822ca3276345b4a67ccbc9b54616d8b205fd37f2
Merge: 21817992b331 85a764b2c52b
Author:     Baptiste Daroussin <b...@freebsd.org>
AuthorDate: 2024-06-20 12:10:45 +0000
Commit:     Baptiste Daroussin <b...@freebsd.org>
CommitDate: 2024-06-20 12:34:49 +0000

    byacc: really import 20240109

 contrib/byacc/CHANGES                           |  150 +++
 contrib/byacc/LICENSE                           |   10 +
 contrib/byacc/MANIFEST                          |    5 +-
 contrib/byacc/VERSION                           |    2 +-
 contrib/byacc/aclocal.m4                        |  396 ++++++-
 contrib/byacc/config.guess                      |   63 +-
 contrib/byacc/config.sub                        |  222 ++--
 contrib/byacc/configure                         | 1380 ++++++++++++++---------
 contrib/byacc/configure.in                      |    6 +-
 contrib/byacc/defs.h                            |   55 +-
 contrib/byacc/error.c                           |   73 +-
 contrib/byacc/main.c                            |    6 +-
 contrib/byacc/makefile.in                       |    8 +-
 contrib/byacc/mstring.c                         |   14 +-
 contrib/byacc/output.c                          |   16 +-
 contrib/byacc/package/byacc.spec                |  119 --
 contrib/byacc/package/debian/changelog          |  519 ---------
 contrib/byacc/package/debian/control            |   28 -
 contrib/byacc/package/debian/copyright          |  129 ---
 contrib/byacc/package/debian/rules              |   29 -
 contrib/byacc/package/debian/source/format      |    1 -
 contrib/byacc/package/debian/watch              |   20 -
 contrib/byacc/package/mingw-byacc.spec          |   68 --
 contrib/byacc/package/pkgsrc/DESCR              |    6 -
 contrib/byacc/package/pkgsrc/Makefile           |   19 -
 contrib/byacc/package/pkgsrc/PLIST              |    3 -
 contrib/byacc/package/pkgsrc/distinfo           |    6 -
 contrib/byacc/reader.c                          |  345 +++++-
 contrib/byacc/test/btyacc/btyacc_calc1.tab.c    |    2 +-
 contrib/byacc/test/btyacc/btyacc_calc1.tab.h    |    2 +-
 contrib/byacc/test/btyacc/btyacc_demo.tab.c     |    2 +-
 contrib/byacc/test/btyacc/btyacc_demo.tab.h     |    2 +-
 contrib/byacc/test/btyacc/btyacc_destroy1.tab.h |    2 +-
 contrib/byacc/test/btyacc/btyacc_destroy2.tab.c |    2 +-
 contrib/byacc/test/btyacc/btyacc_destroy2.tab.h |    2 +-
 contrib/byacc/test/btyacc/btyacc_destroy3.tab.c |    2 +-
 contrib/byacc/test/btyacc/btyacc_destroy3.tab.h |    2 +-
 contrib/byacc/test/btyacc/calc1.tab.c           |    2 +-
 contrib/byacc/test/btyacc/calc1.tab.h           |    2 +-
 contrib/byacc/test/btyacc/err_inherit3.tab.c    |    2 +-
 contrib/byacc/test/btyacc/err_inherit3.tab.h    |    2 +-
 contrib/byacc/test/btyacc/err_inherit4.tab.c    |    2 +-
 contrib/byacc/test/btyacc/err_inherit4.tab.h    |    2 +-
 contrib/byacc/test/btyacc/expr.oxout.tab.c      |    2 +-
 contrib/byacc/test/btyacc/expr.oxout.tab.h      |    2 +-
 contrib/byacc/test/btyacc/inherit1.tab.c        |    2 +-
 contrib/byacc/test/btyacc/inherit1.tab.h        |    2 +-
 contrib/byacc/test/btyacc/inherit2.tab.c        |    2 +-
 contrib/byacc/test/btyacc/inherit2.tab.h        |    2 +-
 contrib/byacc/test/btyacc/ok_syntax1.tab.c      |    4 +-
 contrib/byacc/test/btyacc/ok_syntax1.tab.h      |    4 +-
 contrib/byacc/test/btyacc/varsyntax_calc1.tab.c |    2 +-
 contrib/byacc/test/btyacc/varsyntax_calc1.tab.h |    2 +-
 contrib/byacc/test/expr.oxout.h                 |   90 ++
 contrib/byacc/test/ok_syntax1.y                 |    2 +-
 contrib/byacc/test/yacc/calc1.tab.c             |    2 +-
 contrib/byacc/test/yacc/calc1.tab.h             |    2 +-
 contrib/byacc/test/yacc/expr.oxout.tab.c        |    2 +-
 contrib/byacc/test/yacc/expr.oxout.tab.h        |    2 +-
 contrib/byacc/test/yacc/ok_syntax1.tab.c        |    4 +-
 contrib/byacc/test/yacc/ok_syntax1.tab.h        |    4 +-
 contrib/byacc/test/yacc/varsyntax_calc1.tab.c   |    2 +-
 contrib/byacc/test/yacc/varsyntax_calc1.tab.h   |    2 +-
 contrib/byacc/yacc.1                            |   57 +-
 64 files changed, 2096 insertions(+), 1825 deletions(-)

diff --cc contrib/byacc/LICENSE
index 000000000000,c21f9f78a6db..c21f9f78a6db
mode 000000,100644..100644
--- a/contrib/byacc/LICENSE
+++ b/contrib/byacc/LICENSE
diff --cc contrib/byacc/test/btyacc/calc1.tab.c
index cc40060143b9,000000000000..54d7014a4b27
mode 100644,000000..100644
--- a/contrib/byacc/test/btyacc/calc1.tab.c
+++ b/contrib/byacc/test/btyacc/calc1.tab.c
@@@ -1,1746 -1,0 +1,1746 @@@
 +/* original parser id follows */
 +/* yysccsid[] = "@(#)yaccpar  1.9 (Berkeley) 02/21/93" */
 +/* (use YYMAJOR/YYMINOR for ifdefs dependent on parser version) */
 +
 +#define YYBYACC 1
 +#define YYMAJOR 2
 +#define YYMINOR 0
 +#define YYCHECK "yyyymmdd"
 +
 +#define YYEMPTY        (-1)
 +#define yyclearin      (yychar = YYEMPTY)
 +#define yyerrok        (yyerrflag = 0)
 +#define YYRECOVERING() (yyerrflag != 0)
 +#define YYENOMEM       (-2)
 +#define YYEOF          0
 +#undef YYBTYACC
 +#define YYBTYACC 0
 +#define YYDEBUGSTR YYPREFIX "debug"
 +
 +#ifndef yyparse
 +#define yyparse    calc1_parse
 +#endif /* yyparse */
 +
 +#ifndef yylex
 +#define yylex      calc1_lex
 +#endif /* yylex */
 +
 +#ifndef yyerror
 +#define yyerror    calc1_error
 +#endif /* yyerror */
 +
 +#ifndef yychar
 +#define yychar     calc1_char
 +#endif /* yychar */
 +
 +#ifndef yyval
 +#define yyval      calc1_val
 +#endif /* yyval */
 +
 +#ifndef yylval
 +#define yylval     calc1_lval
 +#endif /* yylval */
 +
 +#ifndef yydebug
 +#define yydebug    calc1_debug
 +#endif /* yydebug */
 +
 +#ifndef yynerrs
 +#define yynerrs    calc1_nerrs
 +#endif /* yynerrs */
 +
 +#ifndef yyerrflag
 +#define yyerrflag  calc1_errflag
 +#endif /* yyerrflag */
 +
 +#ifndef yylhs
 +#define yylhs      calc1_lhs
 +#endif /* yylhs */
 +
 +#ifndef yylen
 +#define yylen      calc1_len
 +#endif /* yylen */
 +
 +#ifndef yydefred
 +#define yydefred   calc1_defred
 +#endif /* yydefred */
 +
 +#ifndef yystos
 +#define yystos     calc1_stos
 +#endif /* yystos */
 +
 +#ifndef yydgoto
 +#define yydgoto    calc1_dgoto
 +#endif /* yydgoto */
 +
 +#ifndef yysindex
 +#define yysindex   calc1_sindex
 +#endif /* yysindex */
 +
 +#ifndef yyrindex
 +#define yyrindex   calc1_rindex
 +#endif /* yyrindex */
 +
 +#ifndef yygindex
 +#define yygindex   calc1_gindex
 +#endif /* yygindex */
 +
 +#ifndef yytable
 +#define yytable    calc1_table
 +#endif /* yytable */
 +
 +#ifndef yycheck
 +#define yycheck    calc1_check
 +#endif /* yycheck */
 +
 +#ifndef yyname
 +#define yyname     calc1_name
 +#endif /* yyname */
 +
 +#ifndef yyrule
 +#define yyrule     calc1_rule
 +#endif /* yyrule */
 +
 +#if YYBTYACC
 +
 +#ifndef yycindex
 +#define yycindex   calc1_cindex
 +#endif /* yycindex */
 +
 +#ifndef yyctable
 +#define yyctable   calc1_ctable
 +#endif /* yyctable */
 +
 +#endif /* YYBTYACC */
 +
 +#define YYPREFIX "calc1_"
 +
 +#define YYPURE 0
 +
 +#line 2 "calc1.y"
 +
 +/* http://dinosaur.compilertools.net/yacc/index.html */
 +
 +#include <stdlib.h>
 +#include <stdio.h>
 +#include <ctype.h>
 +#include <math.h>
 +
 +typedef struct interval
 +{
 +    double lo, hi;
 +}
 +INTERVAL;
 +
 +INTERVAL vmul(double, double, INTERVAL);
 +INTERVAL vdiv(double, double, INTERVAL);
 +
 +extern int yylex(void);
 +static void yyerror(const char *s);
 +
 +int dcheck(INTERVAL);
 +
 +double dreg[26];
 +INTERVAL vreg[26];
 +
 +#ifdef YYSTYPE
 +#undef  YYSTYPE_IS_DECLARED
 +#define YYSTYPE_IS_DECLARED 1
 +#endif
 +#ifndef YYSTYPE_IS_DECLARED
 +#define YYSTYPE_IS_DECLARED 1
 +#line 31 "calc1.y"
- typedef union
++typedef union YYSTYPE
 +{
 +      int ival;
 +      double dval;
 +      INTERVAL vval;
 +} YYSTYPE;
 +#endif /* !YYSTYPE_IS_DECLARED */
 +#line 161 "calc1.tab.c"
 +
 +/* compatibility with bison */
 +#ifdef YYPARSE_PARAM
 +/* compatibility with FreeBSD */
 +# ifdef YYPARSE_PARAM_TYPE
 +#  define YYPARSE_DECL() yyparse(YYPARSE_PARAM_TYPE YYPARSE_PARAM)
 +# else
 +#  define YYPARSE_DECL() yyparse(void *YYPARSE_PARAM)
 +# endif
 +#else
 +# define YYPARSE_DECL() yyparse(void)
 +#endif
 +
 +/* Parameters sent to lex. */
 +#ifdef YYLEX_PARAM
 +# define YYLEX_DECL() yylex(void *YYLEX_PARAM)
 +# define YYLEX yylex(YYLEX_PARAM)
 +#else
 +# define YYLEX_DECL() yylex(void)
 +# define YYLEX yylex()
 +#endif
 +
 +/* Parameters sent to yyerror. */
 +#ifndef YYERROR_DECL
 +#define YYERROR_DECL() yyerror(const char *s)
 +#endif
 +#ifndef YYERROR_CALL
 +#define YYERROR_CALL(msg) yyerror(msg)
 +#endif
 +
 +extern int YYPARSE_DECL();
 +
 +#define DREG 257
 +#define VREG 258
 +#define CONST 259
 +#define UMINUS 260
 +#define YYERRCODE 256
 +typedef int YYINT;
 +static const YYINT calc1_lhs[] = {                       -1,
 +    3,    3,    0,    0,    0,    0,    0,    1,    1,    1,
 +    1,    1,    1,    1,    1,    2,    2,    2,    2,    2,
 +    2,    2,    2,    2,    2,    2,    2,    2,
 +};
 +static const YYINT calc1_len[] = {                        2,
 +    0,    2,    2,    2,    4,    4,    2,    1,    1,    3,
 +    3,    3,    3,    2,    3,    1,    5,    1,    3,    3,
 +    3,    3,    3,    3,    3,    3,    2,    3,
 +};
 +static const YYINT calc1_defred[] = {                     0,
 +    0,    0,    0,    8,    0,    0,    0,    0,    0,    7,
 +    0,    0,    9,   18,   14,   27,    0,    0,    0,    0,
 +    0,    0,    3,    0,    0,    0,    0,    4,    0,    0,
 +    0,    0,    0,   15,    0,   28,    0,    0,    0,    0,
 +   12,   24,   13,   26,    0,    0,   23,   25,   14,    0,
 +    0,    0,    0,    0,    5,    6,    0,    0,    0,   12,
 +   13,   17,
 +};
 +#if defined(YYDESTRUCT_CALL) || defined(YYSTYPE_TOSTRING)
 +static const YYINT calc1_stos[] = {                       0,
 +  256,  257,  258,  259,   45,   40,  262,  263,  264,   10,
 +   61,   61,  257,  258,  263,  264,  263,  264,   43,   45,
 +   42,   47,   10,   43,   45,   42,   47,   10,   45,   40,
 +  263,  263,  264,   41,   44,   41,  263,  264,  263,  264,
 +  263,  264,  263,  264,  264,  264,  264,  264,  263,  263,
 +   43,   45,   42,   47,   10,   10,  263,  263,  263,  263,
 +  263,   41,
 +};
 +#endif /* YYDESTRUCT_CALL || YYSTYPE_TOSTRING */
 +static const YYINT calc1_dgoto[] = {                      7,
 +   32,    9,    0,
 +};
 +static const YYINT calc1_sindex[] = {                   -40,
 +   -8,  -48,  -47,    0,  -37,  -37,    0,    2,   17,    0,
 +  -34,  -37,    0,    0,    0,    0,  -25,   90,  -37,  -37,
 +  -37,  -37,    0,  -37,  -37,  -37,  -37,    0,  -34,  -34,
 +   25,  125,   31,    0,  -34,    0,  -11,   37,  -11,   37,
 +    0,    0,    0,    0,   37,   37,    0,    0,    0,  111,
 +  -34,  -34,  -34,  -34,    0,    0,  118,   69,   69,    0,
 +    0,    0,
 +};
 +static const YYINT calc1_rindex[] = {                     0,
 +    0,   38,   44,    0,    0,    0,    0,    0,    0,    0,
 +    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
 +    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
 +    0,   -9,    0,    0,    0,    0,   51,   -3,   56,   61,
 +    0,    0,    0,    0,   67,   72,    0,    0,    0,    0,
 +    0,    0,    0,    0,    0,    0,    0,   78,   83,    0,
 +    0,    0,
 +};
 +#if YYBTYACC
 +static const YYINT calc1_cindex[] = {                     0,
 +    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
 +    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
 +    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
 +    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
 +    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
 +    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
 +    0,    0,
 +};
 +#endif
 +static const YYINT calc1_gindex[] = {                     0,
 +    4,  124,    0,
 +};
 +#define YYTABLESIZE 225
 +static const YYINT calc1_table[] = {                      6,
 +   16,   10,    6,    8,    5,   30,   20,    5,   15,   17,
 +   29,   23,   11,   12,   31,   34,   21,   19,   35,   20,
 +    0,   22,   37,   39,   41,   43,   28,    0,    0,    0,
 +   21,   16,   49,   50,   55,   22,    0,   20,   57,   20,
 +   56,   20,    0,   21,   19,    0,   20,    9,   22,    0,
 +    0,    0,    0,   18,   58,   59,   60,   61,   26,   24,
 +   10,   25,    0,   27,    0,   11,   53,   51,    0,   52,
 +   22,   54,   26,   24,    0,   25,   19,   27,   26,    9,
 +    9,   21,    9,   27,    9,   18,   18,   10,   18,    0,
 +   18,   10,   11,   10,   10,   10,   11,    0,   11,   11,
 +   11,   22,    0,   22,    0,   22,    0,   19,    0,   19,
 +   53,   19,   21,    0,   21,   54,   21,    0,   10,    0,
 +   10,    0,   10,   11,    0,   11,    0,   11,   16,   18,
 +   36,   26,   24,    0,   25,   33,   27,    0,    0,    0,
 +    0,    0,   38,   40,   42,   44,    0,   45,   46,   47,
 +   48,   34,   53,   51,    0,   52,    0,   54,   62,   53,
 +   51,    0,   52,    0,   54,    0,   21,   19,    0,   20,
 +    0,   22,    0,    0,    0,    0,    0,    0,    0,    0,
 +    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
 +    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
 +    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
 +    0,    0,    0,    0,    0,    1,    2,    3,    4,   13,
 +   14,    4,   13,    0,    4,
 +};
 +static const YYINT calc1_check[] = {                     40,
 +   10,   10,   40,    0,   45,   40,   10,   45,    5,    6,
 +   45,   10,   61,   61,   11,   41,   42,   43,   44,   45,
 +   -1,   47,   19,   20,   21,   22,   10,   -1,   -1,   -1,
 +   42,   41,   29,   30,   10,   47,   -1,   41,   35,   43,
 +   10,   45,   -1,   42,   43,   -1,   45,   10,   47,   -1,
 +   -1,   -1,   -1,   10,   51,   52,   53,   54,   42,   43,
 +   10,   45,   -1,   47,   -1,   10,   42,   43,   -1,   45,
 +   10,   47,   42,   43,   -1,   45,   10,   47,   42,   42,
 +   43,   10,   45,   47,   47,   42,   43,   10,   45,   -1,
 +   47,   41,   10,   43,   44,   45,   41,   -1,   43,   44,
 +   45,   41,   -1,   43,   -1,   45,   -1,   41,   -1,   43,
 +   42,   45,   41,   -1,   43,   47,   45,   -1,   41,   -1,
 +   43,   -1,   45,   41,   -1,   43,   -1,   45,    5,    6,
 +   41,   42,   43,   -1,   45,   12,   47,   -1,   -1,   -1,
 +   -1,   -1,   19,   20,   21,   22,   -1,   24,   25,   26,
 +   27,   41,   42,   43,   -1,   45,   -1,   47,   41,   42,
 +   43,   -1,   45,   -1,   47,   -1,   42,   43,   -1,   45,
 +   -1,   47,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
 +   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
 +   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
 +   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
 +   -1,   -1,   -1,   -1,   -1,  256,  257,  258,  259,  257,
 +  258,  259,  257,   -1,  259,
 +};
 +#if YYBTYACC
 +static const YYINT calc1_ctable[] = {                    -1,
 +   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
 +   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
 +   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
 +   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
 +   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
 +   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
 +   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
 +   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
 +   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
 +   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
 +   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
 +   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
 +   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
 +   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
 +   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
 +   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
 +   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
 +   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
 +   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
 +   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
 +   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
 +   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
 +   -1,   -1,   -1,   -1,
 +};
 +#endif
 +#define YYFINAL 7
 +#ifndef YYDEBUG
 +#define YYDEBUG 0
 +#endif
 +#define YYMAXTOKEN 260
 +#define YYUNDFTOKEN 266
 +#define YYTRANSLATE(a) ((a) > YYMAXTOKEN ? YYUNDFTOKEN : (a))
 +#if YYDEBUG
 +static const char *const calc1_name[] = {
 +
 
+"$end",0,0,0,0,0,0,0,0,0,"'\\n'",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
 
+0,0,0,0,0,0,"'('","')'","'*'","'+'","','","'-'",0,"'/'",0,0,0,0,0,0,0,0,0,0,0,0,
 
+0,"'='",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
 
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
 
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
 
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
 +"error","DREG","VREG","CONST","UMINUS","$accept","line","dexp","vexp","lines",
 +"illegal-symbol",
 +};
 +static const char *const calc1_rule[] = {
 +"$accept : line",
 +"lines :",
 +"lines : lines line",
 +"line : dexp '\\n'",
 +"line : vexp '\\n'",
 +"line : DREG '=' dexp '\\n'",
 +"line : VREG '=' vexp '\\n'",
 +"line : error '\\n'",
 +"dexp : CONST",
 +"dexp : DREG",
 +"dexp : dexp '+' dexp",
 +"dexp : dexp '-' dexp",
 +"dexp : dexp '*' dexp",
 +"dexp : dexp '/' dexp",
 +"dexp : '-' dexp",
 +"dexp : '(' dexp ')'",
 +"vexp : dexp",
 +"vexp : '(' dexp ',' dexp ')'",
 +"vexp : VREG",
 +"vexp : vexp '+' vexp",
 +"vexp : dexp '+' vexp",
 +"vexp : vexp '-' vexp",
 +"vexp : dexp '-' vexp",
 +"vexp : vexp '*' vexp",
 +"vexp : dexp '*' vexp",
 +"vexp : vexp '/' vexp",
 +"vexp : dexp '/' vexp",
 +"vexp : '-' vexp",
 +"vexp : '(' vexp ')'",
 +
 +};
 +#endif
 +
 +#if YYDEBUG
 +int      yydebug;
 +#endif
 +
 +int      yyerrflag;
 +int      yychar;
 +YYSTYPE  yyval;
 +YYSTYPE  yylval;
 +int      yynerrs;
 +
 +#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
 +YYLTYPE  yyloc; /* position returned by actions */
 +YYLTYPE  yylloc; /* position from the lexer */
 +#endif
 +
 +#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
 +#ifndef YYLLOC_DEFAULT
 +#define YYLLOC_DEFAULT(loc, rhs, n) \
 +do \
 +{ \
 +    if (n == 0) \
 +    { \
 +        (loc).first_line   = YYRHSLOC(rhs, 0).last_line; \
 +        (loc).first_column = YYRHSLOC(rhs, 0).last_column; \
 +        (loc).last_line    = YYRHSLOC(rhs, 0).last_line; \
 +        (loc).last_column  = YYRHSLOC(rhs, 0).last_column; \
 +    } \
 +    else \
 +    { \
 +        (loc).first_line   = YYRHSLOC(rhs, 1).first_line; \
 +        (loc).first_column = YYRHSLOC(rhs, 1).first_column; \
 +        (loc).last_line    = YYRHSLOC(rhs, n).last_line; \
 +        (loc).last_column  = YYRHSLOC(rhs, n).last_column; \
 +    } \
 +} while (0)
 +#endif /* YYLLOC_DEFAULT */
 +#endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */
 +#if YYBTYACC
 +
 +#ifndef YYLVQUEUEGROWTH
 +#define YYLVQUEUEGROWTH 32
 +#endif
 +#endif /* YYBTYACC */
 +
 +/* define the initial stack-sizes */
 +#ifdef YYSTACKSIZE
 +#undef YYMAXDEPTH
 +#define YYMAXDEPTH  YYSTACKSIZE
 +#else
 +#ifdef YYMAXDEPTH
 +#define YYSTACKSIZE YYMAXDEPTH
 +#else
 +#define YYSTACKSIZE 10000
 +#define YYMAXDEPTH  10000
 +#endif
 +#endif
 +
 +#ifndef YYINITSTACKSIZE
 +#define YYINITSTACKSIZE 200
 +#endif
 +
 +typedef struct {
 +    unsigned stacksize;
 +    YYINT    *s_base;
 +    YYINT    *s_mark;
 +    YYINT    *s_last;
 +    YYSTYPE  *l_base;
 +    YYSTYPE  *l_mark;
 +#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
 +    YYLTYPE  *p_base;
 +    YYLTYPE  *p_mark;
 +#endif
 +} YYSTACKDATA;
 +#if YYBTYACC
 +
 +struct YYParseState_s
 +{
 +    struct YYParseState_s *save;    /* Previously saved parser state */
 +    YYSTACKDATA            yystack; /* saved parser stack */
 +    int                    state;   /* saved parser state */
 +    int                    errflag; /* saved error recovery status */
 +    int                    lexeme;  /* saved index of the conflict lexeme in 
the lexical queue */
 +    YYINT                  ctry;    /* saved index in yyctable[] for this 
conflict */
 +};
 +typedef struct YYParseState_s YYParseState;
 +#endif /* YYBTYACC */
 +/* variables for the parser stack */
 +static YYSTACKDATA yystack;
 +#if YYBTYACC
 +
 +/* Current parser state */
 +static YYParseState *yyps = 0;
 +
 +/* yypath != NULL: do the full parse, starting at *yypath parser state. */
 +static YYParseState *yypath = 0;
 +
 +/* Base of the lexical value queue */
 +static YYSTYPE *yylvals = 0;
 +
 +/* Current position at lexical value queue */
 +static YYSTYPE *yylvp = 0;
 +
 +/* End position of lexical value queue */
 +static YYSTYPE *yylve = 0;
 +
 +/* The last allocated position at the lexical value queue */
 +static YYSTYPE *yylvlim = 0;
 +
 +#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
 +/* Base of the lexical position queue */
 +static YYLTYPE *yylpsns = 0;
 +
 +/* Current position at lexical position queue */
 +static YYLTYPE *yylpp = 0;
 +
 +/* End position of lexical position queue */
 +static YYLTYPE *yylpe = 0;
 +
 +/* The last allocated position at the lexical position queue */
 +static YYLTYPE *yylplim = 0;
 +#endif
 +
 +/* Current position at lexical token queue */
 +static YYINT  *yylexp = 0;
 +
 +static YYINT  *yylexemes = 0;
 +#endif /* YYBTYACC */
 +#line 176 "calc1.y"
 +      /* beginning of subroutines section */
 +
 +#define BSZ 50                        /* buffer size for floating point 
numbers */
 +
 +      /* lexical analysis */
 +
 +static void
 +yyerror(const char *s)
 +{
 +    fprintf(stderr, "%s\n", s);
 +}
 +
 +int
 +yylex(void)
 +{
 +    int c;
 +
 +    while ((c = getchar()) == ' ')
 +    {                         /* skip over blanks */
 +    }
 +
 +    if (isupper(c))
 +    {
 +      yylval.ival = c - 'A';
 +      return (VREG);
 +    }
 +    if (islower(c))
 +    {
 +      yylval.ival = c - 'a';
 +      return (DREG);
 +    }
 +
 +    if (isdigit(c) || c == '.')
 +    {
 +      /* gobble up digits, points, exponents */
 +      char buf[BSZ + 1], *cp = buf;
 +      int dot = 0, expr = 0;
 +
 +      for (; (cp - buf) < BSZ; ++cp, c = getchar())
 +      {
 +
 +          *cp = (char) c;
 +          if (isdigit(c))
 +              continue;
 +          if (c == '.')
 +          {
 +              if (dot++ || expr)
 +                  return ('.');       /* will cause syntax error */
 +              continue;
 +          }
 +
 +          if (c == 'e')
 +          {
 +              if (expr++)
 +                  return ('e');       /*  will  cause  syntax  error  */
 +              continue;
 +          }
 +
 +          /*  end  of  number  */
 +          break;
 +      }
 +      *cp = '\0';
 +
 +      if ((cp - buf) >= BSZ)
 +          printf("constant  too  long:  truncated\n");
 +      else
 +          ungetc(c, stdin);   /*  push  back  last  char  read  */
 +      yylval.dval = atof(buf);
 +      return (CONST);
 +    }
 +    return (c);
 +}
 +
 +static INTERVAL
 +hilo(double a, double b, double c, double d)
 +{
 +    /*  returns  the  smallest  interval  containing  a,  b,  c,  and  d  */
 +    /*  used  by  *,  /  routines  */
 +    INTERVAL v;
 +
 +    if (a > b)
 +    {
 +      v.hi = a;
 +      v.lo = b;
 +    }
 +    else
 +    {
 +      v.hi = b;
 +      v.lo = a;
 +    }
 +
 +    if (c > d)
 +    {
 +      if (c > v.hi)
 +          v.hi = c;
 +      if (d < v.lo)
 +          v.lo = d;
 +    }
 +    else
 +    {
 +      if (d > v.hi)
 +          v.hi = d;
 +      if (c < v.lo)
 +          v.lo = c;
 +    }
 +    return (v);
 +}
 +
 +INTERVAL
 +vmul(double a, double b, INTERVAL v)
 +{
 +    return (hilo(a * v.hi, a * v.lo, b * v.hi, b * v.lo));
 +}
 +
 +int
 +dcheck(INTERVAL v)
 +{
 +    if (v.hi >= 0. && v.lo <= 0.)
 +    {
 +      printf("divisor  interval  contains  0.\n");
 +      return (1);
 +    }
 +    return (0);
 +}
 +
 +INTERVAL
 +vdiv(double a, double b, INTERVAL v)
 +{
 +    return (hilo(a / v.hi, a / v.lo, b / v.hi, b / v.lo));
 +}
 +#line 655 "calc1.tab.c"
 +
 +/* For use in generated program */
 +#define yydepth (int)(yystack.s_mark - yystack.s_base)
 +#if YYBTYACC
 +#define yytrial (yyps->save)
 +#endif /* YYBTYACC */
 +
 +#if YYDEBUG
 +#include <stdio.h>    /* needed for printf */
 +#endif
 +
 +#include <stdlib.h>   /* needed for malloc, etc */
 +#include <string.h>   /* needed for memset */
 +
 +/* allocate initial stack or double stack size, up to YYMAXDEPTH */
 +static int yygrowstack(YYSTACKDATA *data)
 +{
 +    int i;
 +    unsigned newsize;
 +    YYINT *newss;
 +    YYSTYPE *newvs;
 +#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
 +    YYLTYPE *newps;
 +#endif
 +
 +    if ((newsize = data->stacksize) == 0)
 +        newsize = YYINITSTACKSIZE;
 +    else if (newsize >= YYMAXDEPTH)
 +        return YYENOMEM;
 +    else if ((newsize *= 2) > YYMAXDEPTH)
 +        newsize = YYMAXDEPTH;
 +
 +    i = (int) (data->s_mark - data->s_base);
 +    newss = (YYINT *)realloc(data->s_base, newsize * sizeof(*newss));
 +    if (newss == NULL)
 +        return YYENOMEM;
 +
 +    data->s_base = newss;
 +    data->s_mark = newss + i;
 +
 +    newvs = (YYSTYPE *)realloc(data->l_base, newsize * sizeof(*newvs));
 +    if (newvs == NULL)
 +        return YYENOMEM;
 +
 +    data->l_base = newvs;
 +    data->l_mark = newvs + i;
 +
 +#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
 +    newps = (YYLTYPE *)realloc(data->p_base, newsize * sizeof(*newps));
 +    if (newps == NULL)
 +        return YYENOMEM;
 +
 +    data->p_base = newps;
 +    data->p_mark = newps + i;
 +#endif
 +
 +    data->stacksize = newsize;
 +    data->s_last = data->s_base + newsize - 1;
 +
 +#if YYDEBUG
 +    if (yydebug)
 +        fprintf(stderr, "%sdebug: stack size increased to %d\n", YYPREFIX, 
newsize);
 +#endif
 +    return 0;
 +}
 +
 +#if YYPURE || defined(YY_NO_LEAKS)
 +static void yyfreestack(YYSTACKDATA *data)
 +{
 +    free(data->s_base);
 +    free(data->l_base);
 +#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
 +    free(data->p_base);
 +#endif
 +    memset(data, 0, sizeof(*data));
 +}
 +#else
 +#define yyfreestack(data) /* nothing */
 +#endif /* YYPURE || defined(YY_NO_LEAKS) */
 +#if YYBTYACC
 +
 +static YYParseState *
 +yyNewState(unsigned size)
 +{
 +    YYParseState *p = (YYParseState *) malloc(sizeof(YYParseState));
 +    if (p == NULL) return NULL;
 +
 +    p->yystack.stacksize = size;
 +    if (size == 0)
 +    {
 +        p->yystack.s_base = NULL;
 +        p->yystack.l_base = NULL;
 +#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
 +        p->yystack.p_base = NULL;
 +#endif
 +        return p;
 +    }
 +    p->yystack.s_base    = (YYINT *) malloc(size * sizeof(YYINT));
 +    if (p->yystack.s_base == NULL) return NULL;
 +    p->yystack.l_base    = (YYSTYPE *) malloc(size * sizeof(YYSTYPE));
 +    if (p->yystack.l_base == NULL) return NULL;
 +    memset(p->yystack.l_base, 0, size * sizeof(YYSTYPE));
 +#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
 +    p->yystack.p_base    = (YYLTYPE *) malloc(size * sizeof(YYLTYPE));
 +    if (p->yystack.p_base == NULL) return NULL;
 +    memset(p->yystack.p_base, 0, size * sizeof(YYLTYPE));
 +#endif
 +
 +    return p;
 +}
 +
 +static void
 +yyFreeState(YYParseState *p)
 +{
 +    yyfreestack(&p->yystack);
 +    free(p);
 +}
 +#endif /* YYBTYACC */
 +
 +#define YYABORT  goto yyabort
 +#define YYREJECT goto yyabort
 +#define YYACCEPT goto yyaccept
 +#define YYERROR  goto yyerrlab
 +#if YYBTYACC
 +#define YYVALID        do { if (yyps->save)            goto yyvalid; } 
while(0)
 +#define YYVALID_NESTED do { if (yyps->save && \
 +                                yyps->save->save == 0) goto yyvalid; } 
while(0)
 +#endif /* YYBTYACC */
 +
 +int
 +YYPARSE_DECL()
 +{
 +    int yym, yyn, yystate, yyresult;
 +#if YYBTYACC
 +    int yynewerrflag;
 +    YYParseState *yyerrctx = NULL;
 +#endif /* YYBTYACC */
 +#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
 +    YYLTYPE  yyerror_loc_range[3]; /* position of error start/end (0 unused) 
*/
 +#endif
 +#if YYDEBUG
 +    const char *yys;
 +
 +    if ((yys = getenv("YYDEBUG")) != NULL)
 +    {
 +        yyn = *yys;
 +        if (yyn >= '0' && yyn <= '9')
 +            yydebug = yyn - '0';
 +    }
 +    if (yydebug)
 +        fprintf(stderr, "%sdebug[<# of symbols on state stack>]\n", YYPREFIX);
 +#endif
 +#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
 +    memset(yyerror_loc_range, 0, sizeof(yyerror_loc_range));
 +#endif
 +
 +#if YYBTYACC
 +    yyps = yyNewState(0); if (yyps == 0) goto yyenomem;
 +    yyps->save = 0;
 +#endif /* YYBTYACC */
 +    yym = 0;
 +    /* yyn is set below */
 +    yynerrs = 0;
 +    yyerrflag = 0;
 +    yychar = YYEMPTY;
 +    yystate = 0;
 +
 +#if YYPURE
 +    memset(&yystack, 0, sizeof(yystack));
 +#endif
 +
 +    if (yystack.s_base == NULL && yygrowstack(&yystack) == YYENOMEM) goto 
yyoverflow;
 +    yystack.s_mark = yystack.s_base;
 +    yystack.l_mark = yystack.l_base;
 +#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
 +    yystack.p_mark = yystack.p_base;
 +#endif
 +    yystate = 0;
 +    *yystack.s_mark = 0;
 +
 +yyloop:
 +    if ((yyn = yydefred[yystate]) != 0) goto yyreduce;
 +    if (yychar < 0)
 +    {
 +#if YYBTYACC
 +        do {
 +        if (yylvp < yylve)
 +        {
 +            /* we're currently re-reading tokens */
 +            yylval = *yylvp++;
 +#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
 +            yylloc = *yylpp++;
 +#endif
 +            yychar = *yylexp++;
 +            break;
 +        }
 +        if (yyps->save)
 +        {
 +            /* in trial mode; save scanner results for future parse attempts 
*/
 +            if (yylvp == yylvlim)
 +            {   /* Enlarge lexical value queue */
 +                size_t p = (size_t) (yylvp - yylvals);
 +                size_t s = (size_t) (yylvlim - yylvals);
 +
 +                s += YYLVQUEUEGROWTH;
 +                if ((yylexemes = (YYINT *)realloc(yylexemes, s * 
sizeof(YYINT))) == NULL) goto yyenomem;
 +                if ((yylvals   = (YYSTYPE *)realloc(yylvals, s * 
sizeof(YYSTYPE))) == NULL) goto yyenomem;
 +#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
 +                if ((yylpsns   = (YYLTYPE *)realloc(yylpsns, s * 
sizeof(YYLTYPE))) == NULL) goto yyenomem;
 +#endif
 +                yylvp   = yylve = yylvals + p;
 +                yylvlim = yylvals + s;
 +#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
 +                yylpp   = yylpe = yylpsns + p;
 +                yylplim = yylpsns + s;
 +#endif
 +                yylexp  = yylexemes + p;
 +            }
 +            *yylexp = (YYINT) YYLEX;
 +            *yylvp++ = yylval;
 +            yylve++;
 +#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
 +            *yylpp++ = yylloc;
 +            yylpe++;
 +#endif
 +            yychar = *yylexp++;
 +            break;
 +        }
 +        /* normal operation, no conflict encountered */
 +#endif /* YYBTYACC */
 +        yychar = YYLEX;
 +#if YYBTYACC
 +        } while (0);
 +#endif /* YYBTYACC */
 +        if (yychar < 0) yychar = YYEOF;
 +#if YYDEBUG
 +        if (yydebug)
 +        {
 +            if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = 
yyname[YYUNDFTOKEN];
 +            fprintf(stderr, "%s[%d]: state %d, reading token %d (%s)",
 +                            YYDEBUGSTR, yydepth, yystate, yychar, yys);
 +#ifdef YYSTYPE_TOSTRING
*** 11534 LINES SKIPPED ***

Reply via email to