From 200cfaafaed3d870382579503f73a3838b427d51 Mon Sep 17 00:00:00 2001 From: Peter Breitenlohner Date: Fri, 20 Mar 2009 07:23:18 +0000 Subject: new build system git-svn-id: svn://tug.org/texlive/trunk@12442 c570f23f-e606-0410-a88d-b1316a301751 --- Build/source/texk/dummy/Makefile.in | 2 +- Build/source/texk/dummy/README | 5 + Build/source/texk/dummy/configure | 18 +- Build/source/texk/dummy/configure.ac | 2 +- Build/source/texk/lacheck/lacheck.l | 1123 +++++++ Build/source/texk/lacheck/lacheck.lex | 1123 ------- Build/source/texk/web2c/omegafonts/lex.yy.c-dist | 3390 --------------------- Build/source/texk/web2c/omegafonts/pl-lexer.l | 482 +++ Build/source/texk/web2c/omegafonts/pl.l | 482 --- Build/source/texk/web2c/omegafonts/y_tab.c-dist | 2030 ------------- Build/source/texk/web2c/omegafonts/y_tab.h-dist | 214 -- Build/source/texk/web2c/otps/lex.yy.c-dist | 1828 ----------- Build/source/texk/web2c/otps/otp-lexer.l | 130 + Build/source/texk/web2c/otps/otp-parser.y | 330 ++ Build/source/texk/web2c/otps/otp.l | 130 - Build/source/texk/web2c/otps/otp.y | 330 -- Build/source/texk/web2c/otps/y_tab.c-dist | 1764 ----------- Build/source/texk/web2c/otps/y_tab.h-dist | 82 - Build/source/texk/web2c/web2c/convert | 35 +- Build/source/texk/web2c/web2c/lex.yy.c-dist | 2492 --------------- Build/source/texk/web2c/web2c/web2c-lexer.l | 321 ++ Build/source/texk/web2c/web2c/web2c-parser.y | 1405 +++++++++ Build/source/texk/web2c/web2c/web2c.l | 321 -- Build/source/texk/web2c/web2c/web2c.y | 1405 --------- Build/source/texk/web2c/web2c/y_tab.c-dist | 3530 ---------------------- Build/source/texk/web2c/web2c/y_tab.h-dist | 160 - 26 files changed, 3818 insertions(+), 19316 deletions(-) create mode 100644 Build/source/texk/dummy/README create mode 100644 Build/source/texk/lacheck/lacheck.l delete mode 100644 Build/source/texk/lacheck/lacheck.lex delete mode 100644 Build/source/texk/web2c/omegafonts/lex.yy.c-dist create mode 100644 Build/source/texk/web2c/omegafonts/pl-lexer.l delete mode 100644 Build/source/texk/web2c/omegafonts/pl.l delete mode 100644 Build/source/texk/web2c/omegafonts/y_tab.c-dist delete mode 100644 Build/source/texk/web2c/omegafonts/y_tab.h-dist delete mode 100644 Build/source/texk/web2c/otps/lex.yy.c-dist create mode 100644 Build/source/texk/web2c/otps/otp-lexer.l create mode 100644 Build/source/texk/web2c/otps/otp-parser.y delete mode 100644 Build/source/texk/web2c/otps/otp.l delete mode 100644 Build/source/texk/web2c/otps/otp.y delete mode 100644 Build/source/texk/web2c/otps/y_tab.c-dist delete mode 100644 Build/source/texk/web2c/otps/y_tab.h-dist delete mode 100644 Build/source/texk/web2c/web2c/lex.yy.c-dist create mode 100644 Build/source/texk/web2c/web2c/web2c-lexer.l create mode 100644 Build/source/texk/web2c/web2c/web2c-parser.y delete mode 100644 Build/source/texk/web2c/web2c/web2c.l delete mode 100644 Build/source/texk/web2c/web2c/web2c.y delete mode 100644 Build/source/texk/web2c/web2c/y_tab.c-dist delete mode 100644 Build/source/texk/web2c/web2c/y_tab.h-dist (limited to 'Build/source/texk') diff --git a/Build/source/texk/dummy/Makefile.in b/Build/source/texk/dummy/Makefile.in index 563d532f413..48348e26203 100644 --- a/Build/source/texk/dummy/Makefile.in +++ b/Build/source/texk/dummy/Makefile.in @@ -31,7 +31,7 @@ NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : subdir = . -DIST_COMMON = $(am__configure_deps) \ +DIST_COMMON = README $(am__configure_deps) \ $(srcdir)/../../build-aux/install-sh \ $(srcdir)/../../build-aux/missing $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in $(top_srcdir)/configure \ diff --git a/Build/source/texk/dummy/README b/Build/source/texk/dummy/README new file mode 100644 index 00000000000..b53857161a7 --- /dev/null +++ b/Build/source/texk/dummy/README @@ -0,0 +1,5 @@ +This directory texk/dummy does not build or install anything. Its purpose +is to record the command line used to invoke texk/dummy/configure from +texk/configure. This information is then used by texk/Makefile to invoke +texk/*/configure in the remaining subdirectories without the need to adjust +any absolute or relative paths. diff --git a/Build/source/texk/dummy/configure b/Build/source/texk/dummy/configure index 1a4943f3765..43bcb808eff 100755 --- a/Build/source/texk/dummy/configure +++ b/Build/source/texk/dummy/configure @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.63 for TeX live texk dummy 2009. +# Generated by GNU Autoconf 2.63 for TeX Live texk dummy 2009. # # Report bugs to . # @@ -594,10 +594,10 @@ MAKEFLAGS= SHELL=${CONFIG_SHELL-/bin/sh} # Identity of this package. -PACKAGE_NAME='TeX live texk dummy' +PACKAGE_NAME='TeX Live texk dummy' PACKAGE_TARNAME='tex-live-texk-dummy' PACKAGE_VERSION='2009' -PACKAGE_STRING='TeX live texk dummy 2009' +PACKAGE_STRING='TeX Live texk dummy 2009' PACKAGE_BUGREPORT='tex-k@tug.org' ac_unique_file="../../build-aux/missing" @@ -1226,7 +1226,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures TeX live texk dummy 2009 to adapt to many kinds of systems. +\`configure' configures TeX Live texk dummy 2009 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1293,7 +1293,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of TeX live texk dummy 2009:";; + short | recursive ) echo "Configuration of TeX Live texk dummy 2009:";; esac cat <<\_ACEOF @@ -1367,7 +1367,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -TeX live texk dummy configure 2009 +TeX Live texk dummy configure 2009 generated by GNU Autoconf 2.63 Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, @@ -1381,7 +1381,7 @@ cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by TeX live texk dummy $as_me 2009, which was +It was created by TeX Live texk dummy $as_me 2009, which was generated by GNU Autoconf 2.63. Invocation command line was $ $0 $@ @@ -2732,7 +2732,7 @@ exec 6>&1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by TeX live texk dummy $as_me 2009, which was +This file was extended by TeX Live texk dummy $as_me 2009, which was generated by GNU Autoconf 2.63. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -2782,7 +2782,7 @@ Report bugs to ." _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_version="\\ -TeX live texk dummy config.status 2009 +TeX Live texk dummy config.status 2009 configured by $0, generated by GNU Autoconf 2.63, with options \\"`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\" diff --git a/Build/source/texk/dummy/configure.ac b/Build/source/texk/dummy/configure.ac index ea8d39437ec..1b3b80d23e1 100644 --- a/Build/source/texk/dummy/configure.ac +++ b/Build/source/texk/dummy/configure.ac @@ -6,7 +6,7 @@ dnl This file is free software; the copyright holder dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl -AC_INIT([TeX live texk dummy], [2009], [tex-k@tug.org]) +AC_INIT([TeX Live texk dummy], [2009], [tex-k@tug.org]) AC_PREREQ([2.63]) AC_CONFIG_SRCDIR([../../build-aux/missing]) AC_CONFIG_AUX_DIR([../../build-aux]) diff --git a/Build/source/texk/lacheck/lacheck.l b/Build/source/texk/lacheck/lacheck.l new file mode 100644 index 00000000000..eaa60380a67 --- /dev/null +++ b/Build/source/texk/lacheck/lacheck.l @@ -0,0 +1,1123 @@ +/* -*- Mode: C -*- + * + * lacheck.lex - A consistency checker checker for LaTeX documents + * + * Copyright (C) 1991, 1992 Kresten Krab Thorup. + * Copyright (C) 1993 --- 1998 Per Abrahamsen. + * + * 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 1, 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., 675 Mass Ave, Cambridge, MA 02139, USA. + * + * Please send bugs, suggestions, and queries to auc-tex_mgr@sunsite.auc.dk. + * + * $Revision: 1.26 $ + * Author : Kresten Krab Thorup + * Created On : Sun May 26 18:11:58 1991 + * + * HISTORY + * 07-Mar-1998 Per Abrahamsen + * Added return to yywrap. Patch by Fabrice POPINEAU + * . + * 14-Jan-1998 Per Abrahamsen + * Added GPL blurp. + * 27-Oct-1997 Per Abrahamsen + * Count newline after newenvironment and newcommand. + * 12-Jan-1996 Per Abrahamsen + * \\} used not to end a group in definitions. Reported by Piet + * van Oostrum . + * 03-Jan-1995 Per Abrahamsen + * Fix bug which prevented detection of multiple illegal characters + * in labels. Reported by eeide@jaguar.cs.utah.edu (Eric Eide). + * 30-Jul-1994 Per Abrahamsen + * Define dummy yywrap so we no longer depend on `libl.a'. + * 26-Apr-1994 Per Abrahamsen + * Removed a few warnings, by Richard Lloyd . + * 23-Apr-1994 Per Abrahamsen + * Changed all `%i' to `%d' for VMS portability. Reported by + * Stephen Harker . + * 16-Feb-1994 Per Abrahamsen + * Try file name with `.tex' appended before trying it bare. This + * will make the case where a directory and a TeX file share the + * same name work. + * 19-Jan-1994 Per Abrahamsen + * Comments don't imply whitespace. Pointed out by Jacco van + * Ossenbruggen . + * 14-Jan-1994 Per Abrahamsen + * Don't complain about \ref at the beginning of a paragraph. + * Suggested by Jean-Marc Lasgouttes . + * 11-Jan-1994 Per Abrahamsen + * Added version string to usage message. Suggested by Uwe Bonnes + * . + * 04-Jan-1994 Per Abrahamsen + * Warn about newlines in \verb. Suggested by Mark Burton + * . The LaTeX Book agrees (p. 168). + * 10-Sep-1993 Per Abrahamsen + * Removed complain about missing ~ before \cite. Requested by + * Nelson H. F. Beebe . The LaTeX Book seems + * to agree. + * 03-Sep-1993 Per Abrahamsen + * Check for illegal characters in labels. + * 16-Aug-1993 Per Abrahamsen + * Recognize \endinput. Suggested by Stefan Farestam + * . + * 13-Aug-1993 Per Abrahamsen + * } was eaten after display math. Reported by Eckhard Rüggeberg + * . + * 13-Aug-1993 Per Abrahamsen + * Recognize \verb*. Reported by Eckhard Rüggeberg + * . + * 08-Aug-1993 Per Abrahamsen + * Better catch begin and end without arguments. + * 08-Aug-1993 Per Abrahamsen + * Removed free(NULL) as reported by Darrel R. Hankerson + * . + * 08-Aug-1993 Per Abrahamsen + * Removed declaration of realloc for some C compilers. Reported by + * Darrel R. Hankerson + * 30-Jul-1993 Per Abrahamsen + * Added check for italic correction after normal text. + * 29-Jul-1993 Per Abrahamsen + * Added cast for (char*) malloc as suggested by John Interrante + * . + * 29-Jul-1993 Per Abrahamsen + * Added check for missing and extra italic correction. + * 29-Jul-1993 Per Abrahamsen + * Made line number counting more reliable (but it still needs a rewrite)! + * 28-Jul-1993 Per Abrahamsen + * Added check for italic correction before point or comma. + * 6-Jun-1992 Kresten Krab Thorup + * Last Modified: Sat Jun 6 16:37:44 1992 #48 (Kresten Krab Thorup) + * Added test for whitespace before punctuation mark + * 17-Dec-1991 (Last Mod: Tue Dec 17 21:01:24 1991 #41) Kresten Krab Thorup + * Added 'word word` and missing ~ before cite and ref + * 18-Jun-1991 (Last Mod: Tue Jun 18 19:20:43 1991 #17) Kresten Krab Thorup + * Added check (or rather management) for \newenvironment and + * \newcommand - as suggested by Per Abrahamsen abrham@hugin.dk + * 30-May-1991 (Last Mod: Thu May 30 02:22:33 1991 #15) Kresten Krab Thorup + * Added check for `$${punct}' and `{punct}$' constructions + * 30-May-1991 (Last Mod: Wed May 29 10:31:35 1991 #6) Kresten Krab Thorup + * Improved (dynamic) stack management from Andreas Stolcke ... + * + * 26-May-1991 Kresten Krab Thorup + * Initial distribution version. + */ + +%{ + +#include +#include + +#ifdef WIN32 +#include +#endif +/* #include */ + +/* extern char *realloc(); */ + +#define YY_SKIP_YYWRAP +int yywrap() { return 1; } + +#ifdef NEED_STRSTR +char *strstr(); +#endif + +#define GROUP_STACK_SIZE 10 +#define INPUT_STACK_SIZE 10 + +#define PROGNAME "LaCheck" + + /* macros */ + +#define CG_NAME (char *)gstack[gstackp-1].s_name +#define CG_TYPE gstack[gstackp-1].s_type +#define CG_LINE gstack[gstackp-1].s_line +#define CG_ITALIC gstack[gstackp-1].italic +#define CG_FILE gstack[gstackp-1].s_file + +char *bg_command(); +void pop(); +void push(); +void linecount(); +void g_checkend(); +void e_checkend(); +void f_checkend(); +void input_file(); +void print_bad_match(); +int check_top_level_end(); + + /* global variables */ + +char returnval[100]; +int line_count = 1; +int warn_count = 0; +char *file_name; +char verb_char; + + /* the group stack */ + +typedef struct tex_group + { + unsigned char *s_name; + int s_type; + int s_line; + int italic; + char *s_file; + } tex_group; + +tex_group *gstack; +int gstack_size = GROUP_STACK_SIZE; +int gstackp = 0; + +typedef struct input_ + { + YY_BUFFER_STATE stream; + char *name; + int linenum; + } input_; + +input_ *istack; +int istack_size = INPUT_STACK_SIZE; +int istackp = 0; + +int def_count = 0; + +%} + +%x B_ENVIRONMENT E_ENVIRONMENT VERBATIM INCLUDE MATH COMMENT VERB DEF +%x AFTER_DISPLAY ENV_DEF ICOR GETICOR + +b_group ("{"|\\bgroup) +e_group ("}"|\\egroup) + +b_math \\\( +e_math \\\) +math \$ + +b_display \\\[ +e_display \\\] +display \$\$ + +par ([ \t]*\n[ \t]*\n[ \t\n]*) +non_par_ws ([ \t]+\n?[ \t]*|[ \t]*\n[ \t]*|[ \t]*\n?[ \t]+) + +ws [ \n\t](%[^\n]\n)* +space ({ws}|\~|\\space) +hard_space (\~|\\space) + +u_letter [A-ZÆØÅ] +l_letter [a-zæøå] +punct [\!\.\?] +atoz [a-zA-Z] +letter [A-ZÆØÅa-zæøå] + +c_bin ("-"|"+"|"\\cdot"|"\\oplus"|"\\otimes"|"\\times") +l_bin (",") + +general_abbrev {letter}+{punct} + +non_abbrev {u_letter}{u_letter}+{punct} + +italic_spec (sl|it) +normal_spec normalshape +swap_spec em +font_spec (rm|bf|{italic_spec}|tt|{swap_spec}|mediumseries|{normal_spec}) + +primitive \\(above|advance|catcode|chardef|closein|closeout|copy|count|countdef|cr|crcr|csname|delcode|dimendef|dimen|divide|expandafter|font|hskp|vskip|openout) + +symbol ("$"("\\"{atoz}+|.)"$"|"\\#"|"\\$"|"\\%"|"\\ref") + +%% + +<*>"\\\\" { ; } + +"\\\%" { ; } + +"%"[^\n]*\n { line_count++; } + +\n { line_count++; } + +"\\\{" { ; } + +"\\\}" { ; } + +"\\\$" { ; } + +"{"{ws} { + if (CG_TYPE != 4 && CG_TYPE != 5) { + if (!(CG_TYPE == 2 && strstr(CG_NAME, "array"))) { + printf( "\"%s\", line %d: possible unwanted space at \"{\"\n", + file_name, line_count); + ++warn_count ; + } + } + push( "{", 0, line_count); + linecount(); + } + +{b_group} { push( "{", 0, line_count);} + +{e_group} { + { + int italic = CG_ITALIC; + g_checkend(0); + if (italic && !CG_ITALIC) + BEGIN(GETICOR) ; + else + BEGIN(INITIAL); + }} + +{e_group} { g_checkend(0); } + +[A-Za-zæøåÆØÅ0-9;:!()]+ { + { + if (!CG_ITALIC) + { + printf("\"%s\", line %d: you may need a \\/ before \"%s\"\n", + file_name, line_count, yytext); + ++warn_count; + } + BEGIN(INITIAL); + }} + +[A-Za-zæøåÆØÅ0-9;:!?()`']+ { + { + if (CG_ITALIC) + { + printf("\"%s\", line %d: \\/ not needed before italic text \"%s\"\n", + file_name, line_count, yytext); + ++warn_count; + } + BEGIN(INITIAL); + }} + +^[A-Za-zæøåÆØÅ0-9;:!?()`',.]+{ws}*/\\\/ { + { + linecount(); + if (!CG_ITALIC) + { + printf("\"%s\", line %d: \\/ not needed after non-italic text \"%s\"\n", + file_name, line_count, yytext); + ++warn_count; + } + }} + +{ws}[A-Za-zæøåÆØÅ0-9;:!?()`',.]+{ws}*/\\\/ { + { + linecount(); + if (!CG_ITALIC) + { + printf("\"%s\", line %d: \\/ is not needed after non-italic \"%s\"\n", + file_name, line_count, yytext); + ++warn_count; + } + }} + +\\\/ { BEGIN(INITIAL); } + +\\\/ { BEGIN(ICOR); } + +\\\/ { + { + printf("\"%s\", line %d: double \\/ found \"%s\"\n", + file_name, line_count, yytext); + ++warn_count; + BEGIN(ICOR); + }} + +\\{italic_spec}/[^a-zA-Z] { CG_ITALIC = 1; } + +\\{normal_spec}/[^a-zA-Z] { + { + if(CG_ITALIC) + BEGIN(GETICOR); + else + BEGIN(INITIAL); + CG_ITALIC = 0; + }} + +\\{normal_spec}/[^a-zA-Z] { CG_ITALIC = 0; } + +\\{swap_spec}/[^a-zA-Z] { + { + if(CG_ITALIC) + BEGIN(GETICOR); + else + BEGIN(INITIAL); + CG_ITALIC = !CG_ITALIC; + }} + +\\{swap_spec}/[^a-zA-Z] { CG_ITALIC = !CG_ITALIC; } + +[,.] { + { + printf("\"%s\", line %d: do not use \\/ before \"%s\"\n", + file_name, line_count, yytext); + ++warn_count; + BEGIN(INITIAL); + }} + +{ws} { ; } + +~ { ; } + +[^\n] { + { + unput(yytext[0]); + BEGIN(INITIAL); + }} + +"\\"[exg]?(def|newcommand)[^\n\{]+ BEGIN(DEF); + +{b_group} { ++def_count; } + +{e_group} { --def_count; + if(def_count == 0) + BEGIN(INITIAL); } + +. { ; } + +"\\"newenvironment"{"[a-zA-Z]+"}"[^\n\{]+ BEGIN(ENV_DEF); + +{b_group} { ++def_count; } + +{e_group} { --def_count; + if(def_count == 0) + BEGIN(DEF); } + +. { ; } + +{b_math} { + if(CG_TYPE == 4 || CG_TYPE == 5) + print_bad_match(yytext,4); + else + { + push( yytext, 4, line_count); + }} + +{e_math} { g_checkend(4); } + +{b_display} { + if(CG_TYPE == 4 || CG_TYPE == 5) + print_bad_match(yytext,5); + else + { + push( yytext, 5, line_count); + }} + + +{e_display} { g_checkend(5); BEGIN(AFTER_DISPLAY);} + +{punct} { + + printf( "\"%s\", line %d: punctuation mark \"%s\" should be placed before end of displaymath\n", + file_name, line_count, yytext); + ++warn_count ; + + BEGIN(INITIAL); } + +(\n|.) { unput(yytext[0]); BEGIN(INITIAL); } + +{punct}/("\$"|"\\)") { if (CG_TYPE == 4) + { + printf( "\"%s\", line %d: punctuation mark \"%s\" should be placed after end of math mode\n", + file_name, line_count, yytext); + ++warn_count ; + BEGIN(INITIAL); + }} + +{math} { + + if(CG_TYPE == 5) + print_bad_match(yytext, 4); + else + + if(CG_TYPE == 4) + { + e_checkend(4, yytext); + } + else + { + push( yytext, 4, line_count); + }} + + +{display} { + + if(CG_TYPE == 4) + print_bad_match(yytext,5); + else + + if(CG_TYPE == 5) + { + e_checkend(5, yytext); + BEGIN(AFTER_DISPLAY); + } + else + { + push( yytext, 5, line_count); + }} + +\\begingroup/[^a-zA-Z] { + { + push((unsigned char *)"\\begingroup", 1, line_count); + }} + + +\\endgroup/[^a-zA-Z] { + { + g_checkend(1); + }} + + +\\begin[ \t]*"{" { BEGIN(B_ENVIRONMENT); } + +\\begin[ \t]*(%[^\n]*)?/\n { + { + + printf("\"%s\", line %d: {argument} missing for \\begin\n", + file_name, line_count) ; + ++warn_count; + }} + +[^\}\n]+ { + { + if (strcmp( yytext, "verbatim" ) == 0 ) + { + input(); + BEGIN(VERBATIM); + } + else + { + push(yytext, 2, line_count); + + if ( strcmp (yytext, "sl" ) == 0 + || strcmp (yytext, "it" ) == 0) + CG_ITALIC = 1; + else if (strcmp (yytext, "normalshape") == 0) + CG_ITALIC = 0; + else if (strcmp (yytext, "em") == 0) + CG_ITALIC = !CG_ITALIC; + + input(); + BEGIN(INITIAL); + } + }} + +\\end[ \t]*\{verbatim\} { BEGIN(INITIAL); } + +\t { + printf("\"%s\", line %d: TAB character in verbatim environment\n", + file_name, line_count) ; + ++warn_count; + } + +. { ; } + +\n { ++line_count; } + + +\\verb\*?. { + verb_char = yytext[yyleng-1]; + BEGIN(VERB); + } + +\n { + printf("\"%s\", line %d: \\verb should not contain end of line characters\n", + file_name, line_count) ; + ++line_count; +} + +. { + if ( *yytext == verb_char ) + BEGIN(INITIAL); +} + + +\\end[ \t]*"{" { BEGIN(E_ENVIRONMENT); } + +\\end[ \t]*(%[^\n]*)?/\n { + { + printf("\"%s\", line %d: {argument} missing for \\end\n", + file_name, line_count) ; + ++warn_count; + }} + + +[^\}\n]+ { + { + e_checkend(2, yytext); + input(); + + BEGIN(INITIAL); + }} + + +{ws}({letter}".")*{letter}*{l_letter}"."/{non_par_ws}+{l_letter} { + { + linecount(); + printf( "\"%s\", line %d: missing `\\ ' after \"%s\"\n", + file_name, line_count, ++yytext); + ++warn_count ; + BEGIN(INITIAL); + }} + +({l_letter}".")*{letter}*{l_letter}"."/{non_par_ws}+{l_letter} { + { + printf( "\"%s\", line %d: missing `\\ ' after \"%s\"\n", + file_name, line_count, yytext); + ++warn_count ; + BEGIN(INITIAL); + }} + +{non_abbrev}/{non_par_ws}{u_letter} { + { + linecount(); + printf("\"%s\", line %d: missing `\\@' before `.' in \"%s\"\n", + file_name, line_count, yytext); + ++warn_count ; + BEGIN(INITIAL); + }} + +({hard_space}{space}|{space}{hard_space}) { + + printf("\"%s\", line %d: double space at \"%s\"\n", + file_name, line_count, yytext); + ++warn_count; + linecount(); + BEGIN(INITIAL); + } + +{c_bin}{ws}?(\\(\.|\,|\;|\:))*{ws}?\\ldots{ws}?(\\(\.|\,|\;|\:))*{ws}?{c_bin} { + printf("\"%s\", line %d: \\ldots should be \\cdots in \"%s\"\n", + file_name, line_count, yytext); + ++warn_count; + linecount(); + } + +[^\\]{l_bin}{ws}?(\\(\.|\,|\;|\:))*{ws}?\\cdots{ws}?(\\(\.|\,|\;|\:))*{ws}?[^\\]{l_bin} { + printf("\"%s\", line %d: \\cdots should be \\ldots in \"%s\"\n", + file_name, line_count, yytext); + ++warn_count; + linecount(); + BEGIN(INITIAL); + } + +{c_bin}{ws}?(\\(\.|\,|\;|\:))*{ws}?"."+{ws}?(\\(\.|\,|\;|\:))*{ws}?{c_bin} { + printf("\"%s\", line %d: Dots should be \\cdots in \"%s\"\n", + file_name, line_count, yytext); + ++warn_count; + linecount(); + } + +[^\\]{l_bin}{ws}?(\\(\.|\,|\;|\:))*{ws}?"."+{ws}?(\\(\.|\,|\;|\:))*{ws}?[^\\]{l_bin} { + printf("\"%s\", line %d: Dots should be \\ldots in \"%s\"\n", + file_name, line_count, yytext); + ++warn_count; + linecount(); + BEGIN(INITIAL); + } + + +\.\.\. { + printf("\"%s\", line %d: Dots should be ellipsis \"%s\"\n", + file_name, line_count, yytext); + ++warn_count; + BEGIN(INITIAL); + } + +\\label\{[^#$%^&*+={\~"<>\n\t }]*[#$%^&*+={\~"<>\n\t ][^%}]*\} { + linecount(); + printf("\"%s\", line %d: bad character in label \"%s\", see C.10.2\n", + file_name, line_count, yytext); + } + +{par}"\\"ref/[^A-Za-z] { + linecount(); + BEGIN(INITIAL); + } + +{ws}"\\"ref/[^A-Za-z] { + linecount(); + printf("\"%s\", line %d: perhaps you should insert a `~' before \"%s\"\n", + file_name, line_count, ++yytext); + BEGIN(INITIAL); + } + +{ws}"\\"footnote/[^A-Za-z] { + linecount(); + printf("\"%s\", line %d: whitespace before footnote in \"%s\"\n", + file_name, line_count, ++yytext); + BEGIN(INITIAL); + } + + +{primitive}/[^a-zA-Z] { + { + printf("\"%s\", line %d: Don't use \"%s\" in LaTeX documents\n", + file_name, line_count, yytext); + ++warn_count ; + }} + +\\left{ws}*\\?. { linecount() ;} +\\right{ws}*\\?. { linecount(); } + +[^\{]\\{font_spec}/[ \t]*"{" { + { + linecount(); + printf("\"%s\", line %d: Fontspecifiers don't take arguments. \"%s\"\n", + file_name, line_count, yytext); + ++warn_count; + /* (void) input(); */ + BEGIN(INITIAL); + }} + +\\([a-zA-Z\@]+\@[a-zA-Z\@]*|[a-zA-Z\@]*\@[a-zA-Z\@]+) { + { + printf("\"%s\", line %d: Do not use @ in LaTeX macro names. \"%s\"\n", + file_name, line_count, yytext); + ++warn_count; + }} + +{ws}"'"+{letter}+ { + { + linecount(); + printf("\"%s\", line %d: Use ` to begin quotation, not ' \"%s\"\n", + file_name, line_count, yytext); + ++warn_count; + BEGIN(INITIAL); + }} + +{letter}+"`" { + { + printf("\"%s\", line %d: Use ' to end quotation, not ` \"%s\"\n", + file_name, line_count, yytext); + ++warn_count; + BEGIN(INITIAL); + }} + + +{ws}+{punct} { + { + printf("\"%s\", line %d: Whitespace before punctation mark in \"%s\"\n", + file_name, line_count, yytext); + ++warn_count; + linecount(); + BEGIN(INITIAL); + }} + +"%" { BEGIN(COMMENT); } + +\n { BEGIN(INITIAL); ++line_count; } + +. { ; } + + +\\(input|include)([ \t]|"{") { BEGIN(INCLUDE); } + +[^\}\n]+ { + { + if ( strstr(yytext,".sty") == NULL ) + { + printf("** %s:\n", yytext); + input_file(yytext); + } + else + { + printf("\"%s\", line %d: Style file `%s\' omitted.\n", + file_name, + line_count, + yytext); + input(); + } + BEGIN(INITIAL); + }} + +\\endinput/[^A-Za-z] | +<> { + if (--istackp < 0) + yyterminate(); + + else + { + fclose(yyin); + f_checkend(file_name); + yy_switch_to_buffer(istack[istackp].stream); + free(file_name); + line_count = istack[istackp].linenum; + file_name = istack[istackp].name; + input(); + BEGIN(INITIAL); + } + + } + + +. { ; } +%% +int main( argc, argv ) +int argc; +char *argv[]; +{ + /* allocate initial stacks */ + gstack = (tex_group *)malloc(gstack_size * sizeof(tex_group)); + istack = (input_ *)malloc(istack_size * sizeof(input_)); + if ( gstack == NULL || istack == NULL ) { + fprintf(stderr, "%s: not enough memory for stacks\n", PROGNAME); + exit(3); + } + + if(argc > 1) + { + if ( (file_name = (char*) malloc(strlen(argv[1]) + 5)) == NULL ) { + fprintf(stderr, "%s: out of memory\n", PROGNAME); + exit(3); + } + + strcpy(file_name, argv[1]); + strcat(file_name, ".tex" ); + + if ((yyin = fopen( file_name, "r")) != NULL ) + { + push(file_name, 3, 1); + yylex(); + f_checkend(file_name); + } + else { + file_name[strlen(file_name) - 4] = '\0'; + if ((yyin = fopen( file_name, "r")) != NULL ) + { + push(file_name, 3, 1); + yylex(); + f_checkend(file_name); + } + else + fprintf(stderr, + "%s: Could not open : %s\n",PROGNAME, argv[1]); + } + } + else + { + printf("\n* %s *\n\n",PROGNAME); + printf("\t...a consistency checker for LaTeX documents.\n"); + printf("$Id: lacheck.lex,v 1.26 1998/03/07 07:46:45 abraham Exp $\n\n"); + + printf("Usage:\n\tlacheck filename[.tex] \n\n\n"); + + printf("\tFrom within Emacs:\n\n"); + printf("\tM-x compile RET lacheck filename[.tex] RET\n\n"); + printf("\tUse C-x ` to step through the messages.\n\n"); + printf("\n\tThe found context is displayed in \"double quotes\"\n\n"); + printf("Remark:\n\tAll messages are only warnings!\n\n"); + printf("\tYour document may be right even though LaCheck says "); + printf("something else.\n\n"); + } + return(0); +} + +#ifdef NEED_STRSTR +char * +strstr(string, substring) + register char *string; /* String to search. */ + char *substring; /* Substring to try to find in string. */ +{ + register char *a, *b; + + /* First scan quickly through the two strings looking for a + * single-character match. When it's found, then compare the + * rest of the substring. + */ + + b = substring; + if (*b == 0) { + return string; + } + for ( ; *string != 0; string += 1) { + if (*string != *b) { + continue; + } + a = string; + while (1) { + if (*b == 0) { + return string; + } + if (*a++ != *b++) { + break; + } + } + b = substring; + } + return (char *) 0; +} +#endif /* NEED_STRSTR */ + +void push(p_name, p_type, p_line) +unsigned char *p_name; +int p_type; +int p_line; +{ + if ( gstackp == gstack_size ) { /* extend stack */ + gstack_size *= 2; + gstack = (tex_group *)realloc(gstack, gstack_size * sizeof(tex_group)); + if ( gstack == NULL ) { + fprintf(stderr, "%s: stack out of memory", PROGNAME); + exit(3); + } + } + + if ( (gstack[gstackp].s_name = + (unsigned char *)malloc(strlen((char *)p_name) + 1)) == NULL || + (gstack[gstackp].s_file = + (char *)malloc(strlen(file_name) + 1)) == NULL ) { + fprintf(stderr, "%s: out of memory\n", PROGNAME); + exit(3); + } + + strcpy((char *)gstack[gstackp].s_name,(char *)p_name); + gstack[gstackp].s_type = p_type; + gstack[gstackp].s_line = p_line; + gstack[gstackp].italic = ( (p_type == 4 || p_type == 5) + ? 1 + : ( gstackp + ? gstack[gstackp - 1].italic + : 0)); + strcpy(gstack[gstackp].s_file,file_name); + ++gstackp; + +} + +void input_file(file_nam) +char *file_nam; +{ + char *tmp_file_name; + FILE *tmp_yyin; + + if ( (tmp_file_name = (char*) malloc(strlen(file_nam) + 5)) == NULL ) { + fprintf(stderr, "%s: out of memory\n", PROGNAME); + exit(3); + } + strcpy(tmp_file_name,file_nam); + + if (istackp == istack_size) { /* extend stack */ + istack_size *= 2; + istack = (input_ *)realloc(istack, istack_size * sizeof(input_)); + if ( istack == NULL ) { + fprintf(stderr, "%s: \\input stack out of memory\n", PROGNAME); + exit(3); + } + } + + istack[istackp].stream = YY_CURRENT_BUFFER; + istack[istackp].linenum = line_count; + istack[istackp].name = file_name; + ++istackp; + + (void) strcat(tmp_file_name, ".tex"); + if ((tmp_yyin = fopen( tmp_file_name, "r")) != NULL ) + { + yyin = tmp_yyin; + yy_switch_to_buffer(yy_create_buffer(yyin,YY_BUF_SIZE)); + file_name = tmp_file_name; + push(file_name, 3, 1); + line_count = 1; + } + else { + tmp_file_name[strlen(tmp_file_name) - 4] = '\0'; + if ((tmp_yyin = fopen( tmp_file_name , "r")) != NULL ) + { + yyin = tmp_yyin; + yy_switch_to_buffer(yy_create_buffer(yyin,YY_BUF_SIZE)); + file_name = tmp_file_name; + push(file_name, 3, 1); + line_count = 1; + } + else + { + --istackp; + free(tmp_file_name); + printf("\"%s\", line %d: Could not open \"%s\"\n", + file_name, + line_count, + file_nam); + input(); + } + } +} + +void pop() +{ + if ( gstackp == 0 ) + { + fprintf(stderr, "%s: Stack underflow\n", PROGNAME); + exit(4); + } + --gstackp; + + free(gstack[gstackp].s_name); + free(gstack[gstackp].s_file); +} + +char *bg_command(name) +char *name; +{ + + switch (CG_TYPE) { + + case 2: + (void) strcpy( returnval, "\\begin{" ); + (void) strcat( returnval, (char *) name); + (void) strcat( returnval, "}" ); + break; + + case 3: + (void) strcpy( returnval, "beginning of file " ); + (void) strcat( returnval, (char *) name); + break; + + case 4: + (void) strcpy( returnval, "math begin " ); + (void) strcat( returnval, (char *) name); + break; + + case 5: + (void) strcpy( returnval, "display math begin " ); + (void) strcat( returnval, (char *) name); + break; + + default: + (void) strcpy( returnval, name ); + + } + + return ((char *)returnval); +} + +char *eg_command(name,type) +int type; +char *name; +{ + + switch (type) { + + case 2: + (void) strcpy( returnval, "\\end{" ); + (void) strcat( returnval, (char *) name); + (void) strcat( returnval, "}" ); + break; + + case 3: + (void) strcpy( returnval, "end of file " ); + (void) strcat( returnval, (char *) name); + break; + + case 4: + (void) strcpy( returnval, "math end " ); + (void) strcat( returnval, (char *) name); + break; + + case 5: + (void) strcpy( returnval, "display math end " ); + (void) strcat( returnval, (char *) name); + break; + + default: + (void) strcpy( returnval, name ); + break; + } + + return ((char *)returnval); +} + + +void g_checkend(n) +int n; +{ + if ( check_top_level_end(yytext,n) == 1 ) + if ( CG_TYPE != n ) + print_bad_match(yytext,n); + else + pop(); +} + +void e_checkend(n, name) +int n; +char *name; +{ + if ( check_top_level_end(name,n) == 1 ) + { + if ( CG_TYPE != n || strcmp( CG_NAME, name ) != 0 ) + print_bad_match(name,n); + + pop(); + + } +} + +void f_checkend(name) +char *name; +{ + if ( check_top_level_end(name,3) == 1 ) + { + if ( CG_TYPE != 3 || strcmp( CG_NAME, name ) != 0 ) + + while( CG_TYPE != 3 ) + { + print_bad_match(name,3); + pop(); + } + + pop(); + } +} + +void print_bad_match(end_command,type) +char *end_command; +int type; +{ + printf("\"%s\", line %d: <- unmatched \"%s\"\n", + file_name, + line_count, + eg_command( end_command , type) ) ; + + printf("\"%s\", line %d: -> unmatched \"%s\"\n", + CG_FILE, + CG_LINE, + bg_command( CG_NAME ) ) ; + warn_count += 2; +} + +int check_top_level_end(end_command,type) +char *end_command; +int type; +{ + if ( gstackp == 0 ) + { + printf("\"%s\", line %d: \"%s\" found at top level\n", + file_name, + line_count, + eg_command( end_command, type )) ; + ++warn_count; + return(0); + } + else + return(1); +} + +void linecount() +{ + int i; + for (i = 0; i < yyleng; i++) + if(yytext[i] == '\n') + line_count++; +} + diff --git a/Build/source/texk/lacheck/lacheck.lex b/Build/source/texk/lacheck/lacheck.lex deleted file mode 100644 index eaa60380a67..00000000000 --- a/Build/source/texk/lacheck/lacheck.lex +++ /dev/null @@ -1,1123 +0,0 @@ -/* -*- Mode: C -*- - * - * lacheck.lex - A consistency checker checker for LaTeX documents - * - * Copyright (C) 1991, 1992 Kresten Krab Thorup. - * Copyright (C) 1993 --- 1998 Per Abrahamsen. - * - * 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 1, 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., 675 Mass Ave, Cambridge, MA 02139, USA. - * - * Please send bugs, suggestions, and queries to auc-tex_mgr@sunsite.auc.dk. - * - * $Revision: 1.26 $ - * Author : Kresten Krab Thorup - * Created On : Sun May 26 18:11:58 1991 - * - * HISTORY - * 07-Mar-1998 Per Abrahamsen - * Added return to yywrap. Patch by Fabrice POPINEAU - * . - * 14-Jan-1998 Per Abrahamsen - * Added GPL blurp. - * 27-Oct-1997 Per Abrahamsen - * Count newline after newenvironment and newcommand. - * 12-Jan-1996 Per Abrahamsen - * \\} used not to end a group in definitions. Reported by Piet - * van Oostrum . - * 03-Jan-1995 Per Abrahamsen - * Fix bug which prevented detection of multiple illegal characters - * in labels. Reported by eeide@jaguar.cs.utah.edu (Eric Eide). - * 30-Jul-1994 Per Abrahamsen - * Define dummy yywrap so we no longer depend on `libl.a'. - * 26-Apr-1994 Per Abrahamsen - * Removed a few warnings, by Richard Lloyd . - * 23-Apr-1994 Per Abrahamsen - * Changed all `%i' to `%d' for VMS portability. Reported by - * Stephen Harker . - * 16-Feb-1994 Per Abrahamsen - * Try file name with `.tex' appended before trying it bare. This - * will make the case where a directory and a TeX file share the - * same name work. - * 19-Jan-1994 Per Abrahamsen - * Comments don't imply whitespace. Pointed out by Jacco van - * Ossenbruggen . - * 14-Jan-1994 Per Abrahamsen - * Don't complain about \ref at the beginning of a paragraph. - * Suggested by Jean-Marc Lasgouttes . - * 11-Jan-1994 Per Abrahamsen - * Added version string to usage message. Suggested by Uwe Bonnes - * . - * 04-Jan-1994 Per Abrahamsen - * Warn about newlines in \verb. Suggested by Mark Burton - * . The LaTeX Book agrees (p. 168). - * 10-Sep-1993 Per Abrahamsen - * Removed complain about missing ~ before \cite. Requested by - * Nelson H. F. Beebe . The LaTeX Book seems - * to agree. - * 03-Sep-1993 Per Abrahamsen - * Check for illegal characters in labels. - * 16-Aug-1993 Per Abrahamsen - * Recognize \endinput. Suggested by Stefan Farestam - * . - * 13-Aug-1993 Per Abrahamsen - * } was eaten after display math. Reported by Eckhard Rüggeberg - * . - * 13-Aug-1993 Per Abrahamsen - * Recognize \verb*. Reported by Eckhard Rüggeberg - * . - * 08-Aug-1993 Per Abrahamsen - * Better catch begin and end without arguments. - * 08-Aug-1993 Per Abrahamsen - * Removed free(NULL) as reported by Darrel R. Hankerson - * . - * 08-Aug-1993 Per Abrahamsen - * Removed declaration of realloc for some C compilers. Reported by - * Darrel R. Hankerson - * 30-Jul-1993 Per Abrahamsen - * Added check for italic correction after normal text. - * 29-Jul-1993 Per Abrahamsen - * Added cast for (char*) malloc as suggested by John Interrante - * . - * 29-Jul-1993 Per Abrahamsen - * Added check for missing and extra italic correction. - * 29-Jul-1993 Per Abrahamsen - * Made line number counting more reliable (but it still needs a rewrite)! - * 28-Jul-1993 Per Abrahamsen - * Added check for italic correction before point or comma. - * 6-Jun-1992 Kresten Krab Thorup - * Last Modified: Sat Jun 6 16:37:44 1992 #48 (Kresten Krab Thorup) - * Added test for whitespace before punctuation mark - * 17-Dec-1991 (Last Mod: Tue Dec 17 21:01:24 1991 #41) Kresten Krab Thorup - * Added 'word word` and missing ~ before cite and ref - * 18-Jun-1991 (Last Mod: Tue Jun 18 19:20:43 1991 #17) Kresten Krab Thorup - * Added check (or rather management) for \newenvironment and - * \newcommand - as suggested by Per Abrahamsen abrham@hugin.dk - * 30-May-1991 (Last Mod: Thu May 30 02:22:33 1991 #15) Kresten Krab Thorup - * Added check for `$${punct}' and `{punct}$' constructions - * 30-May-1991 (Last Mod: Wed May 29 10:31:35 1991 #6) Kresten Krab Thorup - * Improved (dynamic) stack management from Andreas Stolcke ... - * - * 26-May-1991 Kresten Krab Thorup - * Initial distribution version. - */ - -%{ - -#include -#include - -#ifdef WIN32 -#include -#endif -/* #include */ - -/* extern char *realloc(); */ - -#define YY_SKIP_YYWRAP -int yywrap() { return 1; } - -#ifdef NEED_STRSTR -char *strstr(); -#endif - -#define GROUP_STACK_SIZE 10 -#define INPUT_STACK_SIZE 10 - -#define PROGNAME "LaCheck" - - /* macros */ - -#define CG_NAME (char *)gstack[gstackp-1].s_name -#define CG_TYPE gstack[gstackp-1].s_type -#define CG_LINE gstack[gstackp-1].s_line -#define CG_ITALIC gstack[gstackp-1].italic -#define CG_FILE gstack[gstackp-1].s_file - -char *bg_command(); -void pop(); -void push(); -void linecount(); -void g_checkend(); -void e_checkend(); -void f_checkend(); -void input_file(); -void print_bad_match(); -int check_top_level_end(); - - /* global variables */ - -char returnval[100]; -int line_count = 1; -int warn_count = 0; -char *file_name; -char verb_char; - - /* the group stack */ - -typedef struct tex_group - { - unsigned char *s_name; - int s_type; - int s_line; - int italic; - char *s_file; - } tex_group; - -tex_group *gstack; -int gstack_size = GROUP_STACK_SIZE; -int gstackp = 0; - -typedef struct input_ - { - YY_BUFFER_STATE stream; - char *name; - int linenum; - } input_; - -input_ *istack; -int istack_size = INPUT_STACK_SIZE; -int istackp = 0; - -int def_count = 0; - -%} - -%x B_ENVIRONMENT E_ENVIRONMENT VERBATIM INCLUDE MATH COMMENT VERB DEF -%x AFTER_DISPLAY ENV_DEF ICOR GETICOR - -b_group ("{"|\\bgroup) -e_group ("}"|\\egroup) - -b_math \\\( -e_math \\\) -math \$ - -b_display \\\[ -e_display \\\] -display \$\$ - -par ([ \t]*\n[ \t]*\n[ \t\n]*) -non_par_ws ([ \t]+\n?[ \t]*|[ \t]*\n[ \t]*|[ \t]*\n?[ \t]+) - -ws [ \n\t](%[^\n]\n)* -space ({ws}|\~|\\space) -hard_space (\~|\\space) - -u_letter [A-ZÆØÅ] -l_letter [a-zæøå] -punct [\!\.\?] -atoz [a-zA-Z] -letter [A-ZÆØÅa-zæøå] - -c_bin ("-"|"+"|"\\cdot"|"\\oplus"|"\\otimes"|"\\times") -l_bin (",") - -general_abbrev {letter}+{punct} - -non_abbrev {u_letter}{u_letter}+{punct} - -italic_spec (sl|it) -normal_spec normalshape -swap_spec em -font_spec (rm|bf|{italic_spec}|tt|{swap_spec}|mediumseries|{normal_spec}) - -primitive \\(above|advance|catcode|chardef|closein|closeout|copy|count|countdef|cr|crcr|csname|delcode|dimendef|dimen|divide|expandafter|font|hskp|vskip|openout) - -symbol ("$"("\\"{atoz}+|.)"$"|"\\#"|"\\$"|"\\%"|"\\ref") - -%% - -<*>"\\\\" { ; } - -"\\\%" { ; } - -"%"[^\n]*\n { line_count++; } - -\n { line_count++; } - -"\\\{" { ; } - -"\\\}" { ; } - -"\\\$" { ; } - -"{"{ws} { - if (CG_TYPE != 4 && CG_TYPE != 5) { - if (!(CG_TYPE == 2 && strstr(CG_NAME, "array"))) { - printf( "\"%s\", line %d: possible unwanted space at \"{\"\n", - file_name, line_count); - ++warn_count ; - } - } - push( "{", 0, line_count); - linecount(); - } - -{b_group} { push( "{", 0, line_count);} - -{e_group} { - { - int italic = CG_ITALIC; - g_checkend(0); - if (italic && !CG_ITALIC) - BEGIN(GETICOR) ; - else - BEGIN(INITIAL); - }} - -{e_group} { g_checkend(0); } - -[A-Za-zæøåÆØÅ0-9;:!()]+ { - { - if (!CG_ITALIC) - { - printf("\"%s\", line %d: you may need a \\/ before \"%s\"\n", - file_name, line_count, yytext); - ++warn_count; - } - BEGIN(INITIAL); - }} - -[A-Za-zæøåÆØÅ0-9;:!?()`']+ { - { - if (CG_ITALIC) - { - printf("\"%s\", line %d: \\/ not needed before italic text \"%s\"\n", - file_name, line_count, yytext); - ++warn_count; - } - BEGIN(INITIAL); - }} - -^[A-Za-zæøåÆØÅ0-9;:!?()`',.]+{ws}*/\\\/ { - { - linecount(); - if (!CG_ITALIC) - { - printf("\"%s\", line %d: \\/ not needed after non-italic text \"%s\"\n", - file_name, line_count, yytext); - ++warn_count; - } - }} - -{ws}[A-Za-zæøåÆØÅ0-9;:!?()`',.]+{ws}*/\\\/ { - { - linecount(); - if (!CG_ITALIC) - { - printf("\"%s\", line %d: \\/ is not needed after non-italic \"%s\"\n", - file_name, line_count, yytext); - ++warn_count; - } - }} - -\\\/ { BEGIN(INITIAL); } - -\\\/ { BEGIN(ICOR); } - -\\\/ { - { - printf("\"%s\", line %d: double \\/ found \"%s\"\n", - file_name, line_count, yytext); - ++warn_count; - BEGIN(ICOR); - }} - -\\{italic_spec}/[^a-zA-Z] { CG_ITALIC = 1; } - -\\{normal_spec}/[^a-zA-Z] { - { - if(CG_ITALIC) - BEGIN(GETICOR); - else - BEGIN(INITIAL); - CG_ITALIC = 0; - }} - -\\{normal_spec}/[^a-zA-Z] { CG_ITALIC = 0; } - -\\{swap_spec}/[^a-zA-Z] { - { - if(CG_ITALIC) - BEGIN(GETICOR); - else - BEGIN(INITIAL); - CG_ITALIC = !CG_ITALIC; - }} - -\\{swap_spec}/[^a-zA-Z] { CG_ITALIC = !CG_ITALIC; } - -[,.] { - { - printf("\"%s\", line %d: do not use \\/ before \"%s\"\n", - file_name, line_count, yytext); - ++warn_count; - BEGIN(INITIAL); - }} - -{ws} { ; } - -~ { ; } - -[^\n] { - { - unput(yytext[0]); - BEGIN(INITIAL); - }} - -"\\"[exg]?(def|newcommand)[^\n\{]+ BEGIN(DEF); - -{b_group} { ++def_count; } - -{e_group} { --def_count; - if(def_count == 0) - BEGIN(INITIAL); } - -. { ; } - -"\\"newenvironment"{"[a-zA-Z]+"}"[^\n\{]+ BEGIN(ENV_DEF); - -{b_group} { ++def_count; } - -{e_group} { --def_count; - if(def_count == 0) - BEGIN(DEF); } - -. { ; } - -{b_math} { - if(CG_TYPE == 4 || CG_TYPE == 5) - print_bad_match(yytext,4); - else - { - push( yytext, 4, line_count); - }} - -{e_math} { g_checkend(4); } - -{b_display} { - if(CG_TYPE == 4 || CG_TYPE == 5) - print_bad_match(yytext,5); - else - { - push( yytext, 5, line_count); - }} - - -{e_display} { g_checkend(5); BEGIN(AFTER_DISPLAY);} - -{punct} { - - printf( "\"%s\", line %d: punctuation mark \"%s\" should be placed before end of displaymath\n", - file_name, line_count, yytext); - ++warn_count ; - - BEGIN(INITIAL); } - -(\n|.) { unput(yytext[0]); BEGIN(INITIAL); } - -{punct}/("\$"|"\\)") { if (CG_TYPE == 4) - { - printf( "\"%s\", line %d: punctuation mark \"%s\" should be placed after end of math mode\n", - file_name, line_count, yytext); - ++warn_count ; - BEGIN(INITIAL); - }} - -{math} { - - if(CG_TYPE == 5) - print_bad_match(yytext, 4); - else - - if(CG_TYPE == 4) - { - e_checkend(4, yytext); - } - else - { - push( yytext, 4, line_count); - }} - - -{display} { - - if(CG_TYPE == 4) - print_bad_match(yytext,5); - else - - if(CG_TYPE == 5) - { - e_checkend(5, yytext); - BEGIN(AFTER_DISPLAY); - } - else - { - push( yytext, 5, line_count); - }} - -\\begingroup/[^a-zA-Z] { - { - push((unsigned char *)"\\begingroup", 1, line_count); - }} - - -\\endgroup/[^a-zA-Z] { - { - g_checkend(1); - }} - - -\\begin[ \t]*"{" { BEGIN(B_ENVIRONMENT); } - -\\begin[ \t]*(%[^\n]*)?/\n { - { - - printf("\"%s\", line %d: {argument} missing for \\begin\n", - file_name, line_count) ; - ++warn_count; - }} - -[^\}\n]+ { - { - if (strcmp( yytext, "verbatim" ) == 0 ) - { - input(); - BEGIN(VERBATIM); - } - else - { - push(yytext, 2, line_count); - - if ( strcmp (yytext, "sl" ) == 0 - || strcmp (yytext, "it" ) == 0) - CG_ITALIC = 1; - else if (strcmp (yytext, "normalshape") == 0) - CG_ITALIC = 0; - else if (strcmp (yytext, "em") == 0) - CG_ITALIC = !CG_ITALIC; - - input(); - BEGIN(INITIAL); - } - }} - -\\end[ \t]*\{verbatim\} { BEGIN(INITIAL); } - -\t { - printf("\"%s\", line %d: TAB character in verbatim environment\n", - file_name, line_count) ; - ++warn_count; - } - -. { ; } - -\n { ++line_count; } - - -\\verb\*?. { - verb_char = yytext[yyleng-1]; - BEGIN(VERB); - } - -\n { - printf("\"%s\", line %d: \\verb should not contain end of line characters\n", - file_name, line_count) ; - ++line_count; -} - -. { - if ( *yytext == verb_char ) - BEGIN(INITIAL); -} - - -\\end[ \t]*"{" { BEGIN(E_ENVIRONMENT); } - -\\end[ \t]*(%[^\n]*)?/\n { - { - printf("\"%s\", line %d: {argument} missing for \\end\n", - file_name, line_count) ; - ++warn_count; - }} - - -[^\}\n]+ { - { - e_checkend(2, yytext); - input(); - - BEGIN(INITIAL); - }} - - -{ws}({letter}".")*{letter}*{l_letter}"."/{non_par_ws}+{l_letter} { - { - linecount(); - printf( "\"%s\", line %d: missing `\\ ' after \"%s\"\n", - file_name, line_count, ++yytext); - ++warn_count ; - BEGIN(INITIAL); - }} - -({l_letter}".")*{letter}*{l_letter}"."/{non_par_ws}+{l_letter} { - { - printf( "\"%s\", line %d: missing `\\ ' after \"%s\"\n", - file_name, line_count, yytext); - ++warn_count ; - BEGIN(INITIAL); - }} - -{non_abbrev}/{non_par_ws}{u_letter} { - { - linecount(); - printf("\"%s\", line %d: missing `\\@' before `.' in \"%s\"\n", - file_name, line_count, yytext); - ++warn_count ; - BEGIN(INITIAL); - }} - -({hard_space}{space}|{space}{hard_space}) { - - printf("\"%s\", line %d: double space at \"%s\"\n", - file_name, line_count, yytext); - ++warn_count; - linecount(); - BEGIN(INITIAL); - } - -{c_bin}{ws}?(\\(\.|\,|\;|\:))*{ws}?\\ldots{ws}?(\\(\.|\,|\;|\:))*{ws}?{c_bin} { - printf("\"%s\", line %d: \\ldots should be \\cdots in \"%s\"\n", - file_name, line_count, yytext); - ++warn_count; - linecount(); - } - -[^\\]{l_bin}{ws}?(\\(\.|\,|\;|\:))*{ws}?\\cdots{ws}?(\\(\.|\,|\;|\:))*{ws}?[^\\]{l_bin} { - printf("\"%s\", line %d: \\cdots should be \\ldots in \"%s\"\n", - file_name, line_count, yytext); - ++warn_count; - linecount(); - BEGIN(INITIAL); - } - -{c_bin}{ws}?(\\(\.|\,|\;|\:))*{ws}?"."+{ws}?(\\(\.|\,|\;|\:))*{ws}?{c_bin} { - printf("\"%s\", line %d: Dots should be \\cdots in \"%s\"\n", - file_name, line_count, yytext); - ++warn_count; - linecount(); - } - -[^\\]{l_bin}{ws}?(\\(\.|\,|\;|\:))*{ws}?"."+{ws}?(\\(\.|\,|\;|\:))*{ws}?[^\\]{l_bin} { - printf("\"%s\", line %d: Dots should be \\ldots in \"%s\"\n", - file_name, line_count, yytext); - ++warn_count; - linecount(); - BEGIN(INITIAL); - } - - -\.\.\. { - printf("\"%s\", line %d: Dots should be ellipsis \"%s\"\n", - file_name, line_count, yytext); - ++warn_count; - BEGIN(INITIAL); - } - -\\label\{[^#$%^&*+={\~"<>\n\t }]*[#$%^&*+={\~"<>\n\t ][^%}]*\} { - linecount(); - printf("\"%s\", line %d: bad character in label \"%s\", see C.10.2\n", - file_name, line_count, yytext); - } - -{par}"\\"ref/[^A-Za-z] { - linecount(); - BEGIN(INITIAL); - } - -{ws}"\\"ref/[^A-Za-z] { - linecount(); - printf("\"%s\", line %d: perhaps you should insert a `~' before \"%s\"\n", - file_name, line_count, ++yytext); - BEGIN(INITIAL); - } - -{ws}"\\"footnote/[^A-Za-z] { - linecount(); - printf("\"%s\", line %d: whitespace before footnote in \"%s\"\n", - file_name, line_count, ++yytext); - BEGIN(INITIAL); - } - - -{primitive}/[^a-zA-Z] { - { - printf("\"%s\", line %d: Don't use \"%s\" in LaTeX documents\n", - file_name, line_count, yytext); - ++warn_count ; - }} - -\\left{ws}*\\?. { linecount() ;} -\\right{ws}*\\?. { linecount(); } - -[^\{]\\{font_spec}/[ \t]*"{" { - { - linecount(); - printf("\"%s\", line %d: Fontspecifiers don't take arguments. \"%s\"\n", - file_name, line_count, yytext); - ++warn_count; - /* (void) input(); */ - BEGIN(INITIAL); - }} - -\\([a-zA-Z\@]+\@[a-zA-Z\@]*|[a-zA-Z\@]*\@[a-zA-Z\@]+) { - { - printf("\"%s\", line %d: Do not use @ in LaTeX macro names. \"%s\"\n", - file_name, line_count, yytext); - ++warn_count; - }} - -{ws}"'"+{letter}+ { - { - linecount(); - printf("\"%s\", line %d: Use ` to begin quotation, not ' \"%s\"\n", - file_name, line_count, yytext); - ++warn_count; - BEGIN(INITIAL); - }} - -{letter}+"`" { - { - printf("\"%s\", line %d: Use ' to end quotation, not ` \"%s\"\n", - file_name, line_count, yytext); - ++warn_count; - BEGIN(INITIAL); - }} - - -{ws}+{punct} { - { - printf("\"%s\", line %d: Whitespace before punctation mark in \"%s\"\n", - file_name, line_count, yytext); - ++warn_count; - linecount(); - BEGIN(INITIAL); - }} - -"%" { BEGIN(COMMENT); } - -\n { BEGIN(INITIAL); ++line_count; } - -. { ; } - - -\\(input|include)([ \t]|"{") { BEGIN(INCLUDE); } - -[^\}\n]+ { - { - if ( strstr(yytext,".sty") == NULL ) - { - printf("** %s:\n", yytext); - input_file(yytext); - } - else - { - printf("\"%s\", line %d: Style file `%s\' omitted.\n", - file_name, - line_count, - yytext); - input(); - } - BEGIN(INITIAL); - }} - -\\endinput/[^A-Za-z] | -<> { - if (--istackp < 0) - yyterminate(); - - else - { - fclose(yyin); - f_checkend(file_name); - yy_switch_to_buffer(istack[istackp].stream); - free(file_name); - line_count = istack[istackp].linenum; - file_name = istack[istackp].name; - input(); - BEGIN(INITIAL); - } - - } - - -. { ; } -%% -int main( argc, argv ) -int argc; -char *argv[]; -{ - /* allocate initial stacks */ - gstack = (tex_group *)malloc(gstack_size * sizeof(tex_group)); - istack = (input_ *)malloc(istack_size * sizeof(input_)); - if ( gstack == NULL || istack == NULL ) { - fprintf(stderr, "%s: not enough memory for stacks\n", PROGNAME); - exit(3); - } - - if(argc > 1) - { - if ( (file_name = (char*) malloc(strlen(argv[1]) + 5)) == NULL ) { - fprintf(stderr, "%s: out of memory\n", PROGNAME); - exit(3); - } - - strcpy(file_name, argv[1]); - strcat(file_name, ".tex" ); - - if ((yyin = fopen( file_name, "r")) != NULL ) - { - push(file_name, 3, 1); - yylex(); - f_checkend(file_name); - } - else { - file_name[strlen(file_name) - 4] = '\0'; - if ((yyin = fopen( file_name, "r")) != NULL ) - { - push(file_name, 3, 1); - yylex(); - f_checkend(file_name); - } - else - fprintf(stderr, - "%s: Could not open : %s\n",PROGNAME, argv[1]); - } - } - else - { - printf("\n* %s *\n\n",PROGNAME); - printf("\t...a consistency checker for LaTeX documents.\n"); - printf("$Id: lacheck.lex,v 1.26 1998/03/07 07:46:45 abraham Exp $\n\n"); - - printf("Usage:\n\tlacheck filename[.tex] \n\n\n"); - - printf("\tFrom within Emacs:\n\n"); - printf("\tM-x compile RET lacheck filename[.tex] RET\n\n"); - printf("\tUse C-x ` to step through the messages.\n\n"); - printf("\n\tThe found context is displayed in \"double quotes\"\n\n"); - printf("Remark:\n\tAll messages are only warnings!\n\n"); - printf("\tYour document may be right even though LaCheck says "); - printf("something else.\n\n"); - } - return(0); -} - -#ifdef NEED_STRSTR -char * -strstr(string, substring) - register char *string; /* String to search. */ - char *substring; /* Substring to try to find in string. */ -{ - register char *a, *b; - - /* First scan quickly through the two strings looking for a - * single-character match. When it's found, then compare the - * rest of the substring. - */ - - b = substring; - if (*b == 0) { - return string; - } - for ( ; *string != 0; string += 1) { - if (*string != *b) { - continue; - } - a = string; - while (1) { - if (*b == 0) { - return string; - } - if (*a++ != *b++) { - break; - } - } - b = substring; - } - return (char *) 0; -} -#endif /* NEED_STRSTR */ - -void push(p_name, p_type, p_line) -unsigned char *p_name; -int p_type; -int p_line; -{ - if ( gstackp == gstack_size ) { /* extend stack */ - gstack_size *= 2; - gstack = (tex_group *)realloc(gstack, gstack_size * sizeof(tex_group)); - if ( gstack == NULL ) { - fprintf(stderr, "%s: stack out of memory", PROGNAME); - exit(3); - } - } - - if ( (gstack[gstackp].s_name = - (unsigned char *)malloc(strlen((char *)p_name) + 1)) == NULL || - (gstack[gstackp].s_file = - (char *)malloc(strlen(file_name) + 1)) == NULL ) { - fprintf(stderr, "%s: out of memory\n", PROGNAME); - exit(3); - } - - strcpy((char *)gstack[gstackp].s_name,(char *)p_name); - gstack[gstackp].s_type = p_type; - gstack[gstackp].s_line = p_line; - gstack[gstackp].italic = ( (p_type == 4 || p_type == 5) - ? 1 - : ( gstackp - ? gstack[gstackp - 1].italic - : 0)); - strcpy(gstack[gstackp].s_file,file_name); - ++gstackp; - -} - -void input_file(file_nam) -char *file_nam; -{ - char *tmp_file_name; - FILE *tmp_yyin; - - if ( (tmp_file_name = (char*) malloc(strlen(file_nam) + 5)) == NULL ) { - fprintf(stderr, "%s: out of memory\n", PROGNAME); - exit(3); - } - strcpy(tmp_file_name,file_nam); - - if (istackp == istack_size) { /* extend stack */ - istack_size *= 2; - istack = (input_ *)realloc(istack, istack_size * sizeof(input_)); - if ( istack == NULL ) { - fprintf(stderr, "%s: \\input stack out of memory\n", PROGNAME); - exit(3); - } - } - - istack[istackp].stream = YY_CURRENT_BUFFER; - istack[istackp].linenum = line_count; - istack[istackp].name = file_name; - ++istackp; - - (void) strcat(tmp_file_name, ".tex"); - if ((tmp_yyin = fopen( tmp_file_name, "r")) != NULL ) - { - yyin = tmp_yyin; - yy_switch_to_buffer(yy_create_buffer(yyin,YY_BUF_SIZE)); - file_name = tmp_file_name; - push(file_name, 3, 1); - line_count = 1; - } - else { - tmp_file_name[strlen(tmp_file_name) - 4] = '\0'; - if ((tmp_yyin = fopen( tmp_file_name , "r")) != NULL ) - { - yyin = tmp_yyin; - yy_switch_to_buffer(yy_create_buffer(yyin,YY_BUF_SIZE)); - file_name = tmp_file_name; - push(file_name, 3, 1); - line_count = 1; - } - else - { - --istackp; - free(tmp_file_name); - printf("\"%s\", line %d: Could not open \"%s\"\n", - file_name, - line_count, - file_nam); - input(); - } - } -} - -void pop() -{ - if ( gstackp == 0 ) - { - fprintf(stderr, "%s: Stack underflow\n", PROGNAME); - exit(4); - } - --gstackp; - - free(gstack[gstackp].s_name); - free(gstack[gstackp].s_file); -} - -char *bg_command(name) -char *name; -{ - - switch (CG_TYPE) { - - case 2: - (void) strcpy( returnval, "\\begin{" ); - (void) strcat( returnval, (char *) name); - (void) strcat( returnval, "}" ); - break; - - case 3: - (void) strcpy( returnval, "beginning of file " ); - (void) strcat( returnval, (char *) name); - break; - - case 4: - (void) strcpy( returnval, "math begin " ); - (void) strcat( returnval, (char *) name); - break; - - case 5: - (void) strcpy( returnval, "display math begin " ); - (void) strcat( returnval, (char *) name); - break; - - default: - (void) strcpy( returnval, name ); - - } - - return ((char *)returnval); -} - -char *eg_command(name,type) -int type; -char *name; -{ - - switch (type) { - - case 2: - (void) strcpy( returnval, "\\end{" ); - (void) strcat( returnval, (char *) name); - (void) strcat( returnval, "}" ); - break; - - case 3: - (void) strcpy( returnval, "end of file " ); - (void) strcat( returnval, (char *) name); - break; - - case 4: - (void) strcpy( returnval, "math end " ); - (void) strcat( returnval, (char *) name); - break; - - case 5: - (void) strcpy( returnval, "display math end " ); - (void) strcat( returnval, (char *) name); - break; - - default: - (void) strcpy( returnval, name ); - break; - } - - return ((char *)returnval); -} - - -void g_checkend(n) -int n; -{ - if ( check_top_level_end(yytext,n) == 1 ) - if ( CG_TYPE != n ) - print_bad_match(yytext,n); - else - pop(); -} - -void e_checkend(n, name) -int n; -char *name; -{ - if ( check_top_level_end(name,n) == 1 ) - { - if ( CG_TYPE != n || strcmp( CG_NAME, name ) != 0 ) - print_bad_match(name,n); - - pop(); - - } -} - -void f_checkend(name) -char *name; -{ - if ( check_top_level_end(name,3) == 1 ) - { - if ( CG_TYPE != 3 || strcmp( CG_NAME, name ) != 0 ) - - while( CG_TYPE != 3 ) - { - print_bad_match(name,3); - pop(); - } - - pop(); - } -} - -void print_bad_match(end_command,type) -char *end_command; -int type; -{ - printf("\"%s\", line %d: <- unmatched \"%s\"\n", - file_name, - line_count, - eg_command( end_command , type) ) ; - - printf("\"%s\", line %d: -> unmatched \"%s\"\n", - CG_FILE, - CG_LINE, - bg_command( CG_NAME ) ) ; - warn_count += 2; -} - -int check_top_level_end(end_command,type) -char *end_command; -int type; -{ - if ( gstackp == 0 ) - { - printf("\"%s\", line %d: \"%s\" found at top level\n", - file_name, - line_count, - eg_command( end_command, type )) ; - ++warn_count; - return(0); - } - else - return(1); -} - -void linecount() -{ - int i; - for (i = 0; i < yyleng; i++) - if(yytext[i] == '\n') - line_count++; -} - diff --git a/Build/source/texk/web2c/omegafonts/lex.yy.c-dist b/Build/source/texk/web2c/omegafonts/lex.yy.c-dist deleted file mode 100644 index 8e546c1e762..00000000000 --- a/Build/source/texk/web2c/omegafonts/lex.yy.c-dist +++ /dev/null @@ -1,3390 +0,0 @@ - -#line 3 "lex.yy.c" - -#define YY_INT_ALIGNED short int - -/* A lexical scanner generated by flex */ - -#define FLEX_SCANNER -#define YY_FLEX_MAJOR_VERSION 2 -#define YY_FLEX_MINOR_VERSION 5 -#define YY_FLEX_SUBMINOR_VERSION 31 -#if YY_FLEX_SUBMINOR_VERSION > 0 -#define FLEX_BETA -#endif - -/* First, we deal with platform-specific or compiler-specific issues. */ - -/* begin standard C headers. */ -#include -#include -#include -#include - -/* end standard C headers. */ - -/* flex integer type definitions */ - -#ifndef FLEXINT_H -#define FLEXINT_H - -/* C99 systems have . Non-C99 systems may or may not. */ - -#if defined __STDC_VERSION__ && __STDC_VERSION__ >= 199901L -#include -typedef int8_t flex_int8_t; -typedef uint8_t flex_uint8_t; -typedef int16_t flex_int16_t; -typedef uint16_t flex_uint16_t; -typedef int32_t flex_int32_t; -typedef uint32_t flex_uint32_t; -#else -typedef signed char flex_int8_t; -typedef short int flex_int16_t; -typedef int flex_int32_t; -typedef unsigned char flex_uint8_t; -typedef unsigned short int flex_uint16_t; -typedef unsigned int flex_uint32_t; -#endif /* ! C99 */ - -/* Limits of integral types. */ -#ifndef INT8_MIN -#define INT8_MIN (-128) -#endif -#ifndef INT16_MIN -#define INT16_MIN (-32767-1) -#endif -#ifndef INT32_MIN -#define INT32_MIN (-2147483647-1) -#endif -#ifndef INT8_MAX -#define INT8_MAX (127) -#endif -#ifndef INT16_MAX -#define INT16_MAX (32767) -#endif -#ifndef INT32_MAX -#define INT32_MAX (2147483647) -#endif -#ifndef UINT8_MAX -#define UINT8_MAX (255U) -#endif -#ifndef UINT16_MAX -#define UINT16_MAX (65535U) -#endif -#ifndef UINT32_MAX -#define UINT32_MAX (4294967295U) -#endif - -#endif /* ! FLEXINT_H */ - -#ifdef __cplusplus - -/* The "const" storage-class-modifier is valid. */ -#define YY_USE_CONST - -#else /* ! __cplusplus */ - -#if __STDC__ - -#define YY_USE_CONST - -#endif /* __STDC__ */ -#endif /* ! __cplusplus */ - -#ifdef YY_USE_CONST -#define yyconst const -#else -#define yyconst -#endif - -/* Returned upon end-of-file. */ -#define YY_NULL 0 - -/* Promotes a possibly negative, possibly signed char to an unsigned - * integer for use as an array index. If the signed char is negative, - * we want to instead treat it as an 8-bit unsigned char, hence the - * double cast. - */ -#define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c) - -/* Enter a start condition. This macro really ought to take a parameter, - * but we do it the disgusting crufty way forced on us by the ()-less - * definition of BEGIN. - */ -#define BEGIN (yy_start) = 1 + 2 * - -/* Translate the current start state into a value that can be later handed - * to BEGIN to return to the state. The YYSTATE alias is for lex - * compatibility. - */ -#define YY_START (((yy_start) - 1) / 2) -#define YYSTATE YY_START - -/* Action number for EOF rule of a given start state. */ -#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1) - -/* Special action meaning "start processing a new file". */ -#define YY_NEW_FILE yyrestart(yyin ) - -#define YY_END_OF_BUFFER_CHAR 0 - -/* Size of default input buffer. */ -#ifndef YY_BUF_SIZE -#define YY_BUF_SIZE 16384 -#endif - -#ifndef YY_TYPEDEF_YY_BUFFER_STATE -#define YY_TYPEDEF_YY_BUFFER_STATE -typedef struct yy_buffer_state *YY_BUFFER_STATE; -#endif - -extern int yyleng; - -extern FILE *yyin, *yyout; - -#define EOB_ACT_CONTINUE_SCAN 0 -#define EOB_ACT_END_OF_FILE 1 -#define EOB_ACT_LAST_MATCH 2 - - /* Note: We specifically omit the test for yy_rule_can_match_eol because it requires - * access to the local variable yy_act. Since yyless() is a macro, it would break - * existing scanners that call yyless() from OUTSIDE yylex. - * One obvious solution it to make yy_act a global. I tried that, and saw - * a 5% performance hit in a non-yylineno scanner, because yy_act is - * normally declared as a register variable-- so it is not worth it. - */ - #define YY_LESS_LINENO(n) \ - do { \ - int yyl;\ - for ( yyl = n; yyl < yyleng; ++yyl )\ - if ( yytext[yyl] == '\n' )\ - --yylineno;\ - }while(0) - -/* Return all but the first "n" matched characters back to the input stream. */ -#define yyless(n) \ - do \ - { \ - /* Undo effects of setting up yytext. */ \ - int yyless_macro_arg = (n); \ - YY_LESS_LINENO(yyless_macro_arg);\ - *yy_cp = (yy_hold_char); \ - YY_RESTORE_YY_MORE_OFFSET \ - (yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \ - YY_DO_BEFORE_ACTION; /* set up yytext again */ \ - } \ - while ( 0 ) - -#define unput(c) yyunput( c, (yytext_ptr) ) - -/* The following is because we cannot portably get our hands on size_t - * (without autoconf's help, which isn't available because we want - * flex-generated scanners to compile on their own). - */ - -#ifndef YY_TYPEDEF_YY_SIZE_T -#define YY_TYPEDEF_YY_SIZE_T -typedef unsigned int yy_size_t; -#endif - -#ifndef YY_STRUCT_YY_BUFFER_STATE -#define YY_STRUCT_YY_BUFFER_STATE -struct yy_buffer_state - { - FILE *yy_input_file; - - char *yy_ch_buf; /* input buffer */ - char *yy_buf_pos; /* current position in input buffer */ - - /* Size of input buffer in bytes, not including room for EOB - * characters. - */ - yy_size_t yy_buf_size; - - /* Number of characters read into yy_ch_buf, not including EOB - * characters. - */ - int yy_n_chars; - - /* Whether we "own" the buffer - i.e., we know we created it, - * and can realloc() it to grow it, and should free() it to - * delete it. - */ - int yy_is_our_buffer; - - /* Whether this is an "interactive" input source; if so, and - * if we're using stdio for input, then we want to use getc() - * instead of fread(), to make sure we stop fetching input after - * each newline. - */ - int yy_is_interactive; - - /* Whether we're considered to be at the beginning of a line. - * If so, '^' rules will be active on the next match, otherwise - * not. - */ - int yy_at_bol; - - int yy_bs_lineno; /**< The line count. */ - int yy_bs_column; /**< The column count. */ - - /* Whether to try to fill the input buffer when we reach the - * end of it. - */ - int yy_fill_buffer; - - int yy_buffer_status; - -#define YY_BUFFER_NEW 0 -#define YY_BUFFER_NORMAL 1 - /* When an EOF's been seen but there's still some text to process - * then we mark the buffer as YY_EOF_PENDING, to indicate that we - * shouldn't try reading from the input source any more. We might - * still have a bunch of tokens to match, though, because of - * possible backing-up. - * - * When we actually see the EOF, we change the status to "new" - * (via yyrestart()), so that the user can continue scanning by - * just pointing yyin at a new input file. - */ -#define YY_BUFFER_EOF_PENDING 2 - - }; -#endif /* !YY_STRUCT_YY_BUFFER_STATE */ - -/* Stack of input buffers. */ -static size_t yy_buffer_stack_top = 0; /**< index of top of stack. */ -static size_t yy_buffer_stack_max = 0; /**< capacity of stack. */ -static YY_BUFFER_STATE * yy_buffer_stack = 0; /**< Stack as an array. */ - -/* We provide macros for accessing buffer states in case in the - * future we want to put the buffer states in a more general - * "scanner state". - * - * Returns the top of the stack, or NULL. - */ -#define YY_CURRENT_BUFFER ( (yy_buffer_stack) \ - ? (yy_buffer_stack)[(yy_buffer_stack_top)] \ - : NULL) - -/* Same as previous macro, but useful when we know that the buffer stack is not - * NULL or when we need an lvalue. For internal use only. - */ -#define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)] - -/* yy_hold_char holds the character lost when yytext is formed. */ -static char yy_hold_char; -static int yy_n_chars; /* number of characters read into yy_ch_buf */ -int yyleng; - -/* Points to current character in buffer. */ -static char *yy_c_buf_p = (char *) 0; -static int yy_init = 1; /* whether we need to initialize */ -static int yy_start = 0; /* start state number */ - -/* Flag which is used to allow yywrap()'s to do buffer switches - * instead of setting up a fresh yyin. A bit of a hack ... - */ -static int yy_did_buffer_switch_on_eof; - -void yyrestart (FILE *input_file ); -void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer ); -YY_BUFFER_STATE yy_create_buffer (FILE *file,int size ); -void yy_delete_buffer (YY_BUFFER_STATE b ); -void yy_flush_buffer (YY_BUFFER_STATE b ); -void yypush_buffer_state (YY_BUFFER_STATE new_buffer ); -void yypop_buffer_state (void ); - -static void yyensure_buffer_stack (void ); -static void yy_load_buffer_state (void ); -static void yy_init_buffer (YY_BUFFER_STATE b,FILE *file ); - -#define YY_FLUSH_BUFFER yy_flush_buffer(YY_CURRENT_BUFFER ) - -YY_BUFFER_STATE yy_scan_buffer (char *base,yy_size_t size ); -YY_BUFFER_STATE yy_scan_string (yyconst char *yy_str ); -YY_BUFFER_STATE yy_scan_bytes (yyconst char *bytes,int len ); - -void *yyalloc (yy_size_t ); -void *yyrealloc (void *,yy_size_t ); -void yyfree (void * ); - -#define yy_new_buffer yy_create_buffer - -#define yy_set_interactive(is_interactive) \ - { \ - if ( ! YY_CURRENT_BUFFER ){ \ - yyensure_buffer_stack (); \ - YY_CURRENT_BUFFER_LVALUE = \ - yy_create_buffer(yyin,YY_BUF_SIZE ); \ - } \ - YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \ - } - -#define yy_set_bol(at_bol) \ - { \ - if ( ! YY_CURRENT_BUFFER ){\ - yyensure_buffer_stack (); \ - YY_CURRENT_BUFFER_LVALUE = \ - yy_create_buffer(yyin,YY_BUF_SIZE ); \ - } \ - YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \ - } - -#define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol) - -/* Begin user sect3 */ - -typedef unsigned char YY_CHAR; - -FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0; - -typedef int yy_state_type; - -#define YY_FLEX_LEX_COMPAT -extern int yylineno; - -int yylineno = 1; - -extern char yytext[]; - -static yy_state_type yy_get_previous_state (void ); -static yy_state_type yy_try_NUL_trans (yy_state_type current_state ); -static int yy_get_next_buffer (void ); -static void yy_fatal_error (yyconst char msg[] ); - -/* Done after the current pattern has been matched and before the - * corresponding action - sets up yytext. - */ -#define YY_DO_BEFORE_ACTION \ - (yytext_ptr) = yy_bp; \ - yyleng = (size_t) (yy_cp - yy_bp); \ - (yy_hold_char) = *yy_cp; \ - *yy_cp = '\0'; \ - if ( yyleng + (yy_more_offset) >= YYLMAX ) \ - YY_FATAL_ERROR( "token too large, exceeds YYLMAX" ); \ - yy_flex_strncpy( &yytext[(yy_more_offset)], (yytext_ptr), yyleng + 1 ); \ - yyleng += (yy_more_offset); \ - (yy_prev_more_offset) = (yy_more_offset); \ - (yy_more_offset) = 0; \ - (yy_c_buf_p) = yy_cp; - -#define YY_NUM_RULES 197 -#define YY_END_OF_BUFFER 198 -/* This struct is not used in this scanner, - but its presence is necessary. */ -struct yy_trans_info - { - flex_int32_t yy_verify; - flex_int32_t yy_nxt; - }; -static yyconst flex_int16_t yy_acclist[258] = - { 0, - 9, 9, 198, 196, 197, 1, 196, 197, 2, 197, - 3, 196, 197, 4, 196, 197, 196, 197, 196, 197, - 196, 197, 196, 197, 196, 197, 196, 197, 196, 197, - 196, 197, 196, 197, 196, 197, 196, 197, 196, 197, - 196, 197, 196, 197, 196, 197, 196, 197, 196, 197, - 196, 197, 196, 197, 196, 197, 196, 197, 196, 197, - 196, 197, 1, 172, 42, 8, 8, 6, 171, 7, - 31, 44, 102, 41, 5, 107, 9, 43, 40, 46, - 163, 23, 170, 143, 45, 77, 78, 79, 106, 75, - 9, 142, 33, 32, 85, 86, 82, 83, 84, 173, - - 47, 49, 164, 61, 67, 55, 60, 66, 54, 63, - 69, 57, 62, 68, 56, 59, 65, 53, 58, 64, - 52, 169, 30, 48, 180, 179, 181, 178, 70, 71, - 50, 38, 37, 39, 36, 167, 89, 90, 80, 81, - 11, 100, 139, 151, 24, 138, 110, 140, 174, 150, - 149, 148, 73, 12, 51, 16, 98, 141, 104, 105, - 15, 72, 88, 87, 35, 74, 175, 162, 161, 20, - 176, 165, 166, 14, 137, 13, 136, 156, 155, 154, - 27, 111, 109, 112, 177, 115, 28, 26, 101, 145, - 144, 114, 108, 146, 29, 193, 113, 91, 158, 157, - - 159, 168, 21, 76, 120, 122, 119, 117, 123, 121, - 116, 118, 133, 132, 134, 153, 34, 147, 186, 191, - 194, 189, 103, 160, 22, 135, 152, 184, 187, 182, - 17, 25, 10, 99, 195, 93, 94, 95, 96, 97, - 188, 192, 190, 17, 185, 183, 128, 130, 127, 125, - 131, 129, 124, 126, 92, 18, 19 - } ; - -static yyconst flex_int16_t yy_accept[784] = - { 0, - 1, 2, 3, 4, 6, 9, 11, 14, 17, 19, - 21, 23, 25, 27, 29, 31, 33, 35, 37, 39, - 41, 43, 45, 47, 49, 51, 53, 55, 57, 59, - 61, 63, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, - 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, - 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, - 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, - 65, 65, 65, 65, 65, 65, 66, 66, 67, 68, - - 68, 68, 68, 68, 68, 68, 68, 68, 68, 69, - 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, - 70, 70, 70, 70, 71, 71, 71, 72, 72, 73, - 74, 75, 75, 75, 75, 75, 75, 75, 76, 76, - 76, 76, 77, 77, 77, 77, 78, 78, 79, 79, - 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, - 79, 79, 79, 80, 80, 80, 80, 80, 80, 81, - 81, 81, 81, 81, 81, 81, 81, 81, 82, 82, - 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, - 82, 82, 82, 82, 82, 83, 83, 84, 84, 84, - - 85, 85, 85, 85, 86, 86, 86, 86, 86, 86, - 86, 86, 86, 87, 88, 89, 89, 89, 89, 89, - 90, 91, 92, 93, 93, 93, 93, 93, 93, 93, - 93, 93, 93, 93, 93, 93, 94, 94, 94, 94, - 95, 95, 96, 97, 97, 98, 99, 100, 100, 100, - 101, 101, 101, 101, 101, 102, 103, 103, 103, 103, - 103, 103, 104, 104, 104, 104, 104, 104, 104, 104, - 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, - 104, 104, 104, 104, 104, 105, 106, 107, 108, 109, - 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, - - 120, 121, 122, 122, 123, 123, 123, 123, 123, 123, - 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, - 123, 123, 123, 124, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 126, 127, 128, - 128, 128, 129, 129, 129, 129, 129, 129, 130, 131, - 131, 131, 131, 131, 131, 131, 131, 131, 131, 132, - 132, 132, 132, 132, 132, 132, 133, 133, 133, 134, - 135, 135, 135, 135, 135, 135, 136, 136, 137, 137, - 137, 137, 137, 137, 137, 138, 139, 140, 141, 141, - - 141, 142, 142, 143, 143, 143, 143, 143, 143, 143, - 143, 143, 143, 143, 144, 144, 144, 144, 144, 144, - 145, 146, 147, 147, 147, 147, 147, 147, 147, 148, - 149, 149, 149, 150, 150, 150, 150, 150, 150, 150, - 150, 151, 152, 153, 153, 153, 153, 153, 153, 153, - 153, 153, 154, 154, 154, 154, 154, 154, 154, 155, - 155, 155, 156, 156, 156, 156, 156, 156, 156, 156, - 156, 156, 156, 156, 156, 156, 156, 156, 156, 157, - 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, - 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, - - 157, 157, 157, 157, 157, 157, 158, 158, 158, 158, - 158, 158, 158, 158, 158, 158, 159, 159, 159, 159, - 159, 159, 159, 159, 159, 159, 159, 160, 161, 161, - 162, 163, 164, 165, 165, 166, 167, 167, 168, 168, - 168, 168, 168, 168, 168, 169, 169, 169, 169, 169, - 170, 171, 172, 172, 173, 174, 174, 174, 174, 174, - 175, 175, 175, 175, 175, 175, 176, 176, 176, 177, - 177, 178, 178, 179, 180, 180, 180, 181, 181, 182, - 182, 183, 184, 184, 184, 184, 184, 185, 185, 185, - 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, - - 185, 185, 185, 185, 186, 186, 186, 187, 187, 188, - 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, - 188, 189, 189, 189, 189, 189, 190, 190, 190, 190, - 190, 191, 191, 191, 192, 193, 194, 195, 195, 195, - 196, 196, 196, 196, 196, 196, 196, 196, 196, 197, - 197, 197, 197, 197, 197, 198, 199, 199, 199, 200, - 201, 202, 202, 203, 203, 203, 204, 204, 205, 205, - 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, - 216, 216, 217, 217, 217, 218, 219, 219, 219, 220, - 220, 220, 220, 221, 222, 223, 224, 224, 224, 224, - - 224, 225, 225, 225, 226, 226, 227, 228, 228, 228, - 229, 230, 231, 231, 231, 231, 231, 232, 232, 233, - 234, 234, 235, 235, 235, 235, 235, 236, 236, 236, - 236, 236, 237, 238, 239, 240, 241, 241, 241, 242, - 242, 242, 243, 244, 244, 245, 245, 245, 246, 247, - 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, - 247, 248, 249, 250, 251, 252, 253, 254, 255, 255, - 255, 255, 255, 255, 255, 255, 256, 256, 256, 256, - 257, 258, 258 - } ; - -static yyconst flex_int32_t yy_ec[256] = - { 0, - 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 2, 1, 1, 1, 1, 1, 1, 1, 4, - 5, 1, 6, 1, 6, 7, 8, 9, 10, 11, - 12, 13, 14, 9, 9, 15, 15, 1, 1, 1, - 1, 16, 1, 1, 17, 18, 19, 20, 21, 22, - 23, 24, 25, 1, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, - 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 - } ; - -static yyconst flex_int32_t yy_meta[42] = - { 0, - 1, 2, 3, 1, 1, 4, 4, 1, 5, 5, - 5, 5, 5, 5, 6, 1, 7, 7, 7, 7, - 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1 - } ; - -static yyconst flex_int16_t yy_base[791] = - { 0, - 0, 0, 837, 838, 834, 838, 838, 838, 808, 15, - 18, 53, 42, 795, 44, 806, 43, 795, 798, 32, - 35, 61, 45, 68, 794, 69, 85, 799, 799, 33, - 29, 825, 801, 804, 799, 800, 23, 820, 794, 45, - 787, 71, 66, 798, 816, 73, 782, 97, 68, 789, - 786, 797, 777, 810, 794, 793, 780, 790, 784, 775, - 785, 767, 786, 767, 762, 767, 771, 796, 769, 763, - 766, 763, 768, 758, 774, 111, 759, 762, 95, 755, - 762, 769, 102, 40, 108, 754, 759, 750, 757, 760, - 759, 756, 761, 743, 746, 758, 745, 838, 771, 736, - - 738, 751, 740, 750, 750, 741, 737, 735, 761, 745, - 736, 730, 734, 725, 102, 103, 104, 736, 731, 728, - 719, 726, 731, 749, 730, 722, 838, 727, 123, 725, - 729, 724, 717, 707, 707, 713, 130, 134, 713, 722, - 721, 838, 709, 712, 715, 0, 147, 838, 713, 141, - 712, 119, 711, 706, 699, 700, 709, 708, 695, 704, - 140, 152, 707, 688, 703, 686, 695, 702, 159, 698, - 693, 685, 696, 694, 692, 163, 686, 838, 690, 690, - 680, 687, 151, 671, 678, 677, 681, 686, 171, 174, - 178, 179, 184, 187, 838, 675, 674, 204, 664, 206, - - 678, 662, 670, 680, 678, 664, 674, 182, 656, 658, - 663, 672, 838, 838, 838, 667, 659, 659, 75, 838, - 838, 0, 190, 140, 654, 649, 664, 657, 651, 660, - 660, 654, 641, 647, 646, 838, 639, 652, 647, 838, - 636, 838, 838, 637, 838, 838, 838, 636, 649, 838, - 643, 639, 642, 644, 647, 838, 641, 640, 626, 640, - 641, 838, 638, 625, 618, 627, 618, 136, 615, 630, - 135, 630, 615, 621, 626, 623, 616, 617, 616, 615, - 123, 167, 612, 606, 838, 838, 838, 838, 838, 838, - 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, - - 838, 838, 599, 838, 149, 614, 188, 600, 609, 598, - 597, 616, 611, 595, 609, 605, 592, 195, 587, 606, - 592, 603, 838, 838, 605, 593, 602, 590, 598, 593, - 586, 595, 598, 597, 586, 575, 590, 575, 217, 584, - 578, 576, 571, 585, 570, 568, 838, 838, 838, 582, - 570, 838, 565, 582, 571, 579, 570, 838, 838, 578, - 575, 563, 562, 572, 573, 568, 564, 566, 570, 552, - 559, 552, 561, 548, 545, 838, 562, 542, 838, 838, - 560, 559, 546, 543, 546, 838, 536, 838, 538, 536, - 534, 533, 531, 531, 838, 838, 838, 838, 202, 534, - - 838, 543, 838, 542, 215, 537, 544, 524, 542, 541, - 529, 527, 528, 517, 536, 525, 518, 517, 518, 838, - 838, 511, 520, 511, 524, 506, 521, 519, 838, 504, - 513, 506, 838, 517, 502, 496, 501, 499, 513, 501, - 838, 838, 838, 510, 513, 218, 512, 506, 494, 505, - 500, 838, 497, 499, 491, 490, 499, 486, 838, 483, - 484, 838, 482, 492, 497, 484, 472, 490, 483, 488, - 481, 480, 489, 484, 483, 475, 468, 482, 838, 460, - 478, 465, 472, 467, 478, 477, 474, 471, 489, 449, - 462, 467, 460, 459, 464, 467, 462, 465, 448, 459, - - 454, 457, 456, 459, 454, 838, 445, 444, 437, 447, - 453, 447, 445, 440, 445, 428, 443, 446, 221, 445, - 427, 421, 429, 437, 418, 426, 838, 838, 420, 430, - 838, 838, 838, 424, 838, 838, 418, 838, 427, 431, - 414, 429, 414, 410, 838, 409, 408, 416, 425, 838, - 838, 838, 417, 838, 838, 404, 398, 413, 418, 838, - 410, 406, 244, 413, 397, 838, 396, 395, 838, 403, - 838, 402, 838, 838, 399, 392, 838, 399, 838, 390, - 838, 838, 389, 396, 392, 400, 838, 387, 402, 384, - 378, 386, 394, 375, 386, 387, 378, 377, 384, 379, - - 373, 385, 370, 838, 369, 378, 838, 378, 838, 380, - 379, 378, 363, 362, 375, 368, 373, 358, 371, 357, - 838, 223, 231, 233, 226, 838, 369, 368, 367, 352, - 838, 360, 366, 838, 838, 838, 838, 355, 350, 838, - 355, 354, 355, 346, 345, 352, 359, 341, 838, 339, - 339, 337, 354, 331, 838, 838, 340, 351, 838, 838, - 838, 327, 838, 338, 344, 838, 330, 838, 321, 838, - 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, - 316, 838, 325, 311, 838, 838, 328, 306, 838, 304, - 301, 305, 310, 838, 306, 838, 301, 320, 298, 287, - - 838, 298, 283, 838, 289, 838, 838, 296, 285, 293, - 838, 292, 274, 283, 281, 30, 106, 262, 838, 838, - 157, 838, 164, 181, 206, 227, 838, 220, 223, 238, - 0, 838, 838, 838, 838, 838, 236, 230, 838, 230, - 231, 838, 838, 240, 267, 251, 276, 838, 838, 263, - 255, 280, 260, 255, 258, 268, 269, 261, 287, 269, - 838, 838, 838, 838, 838, 838, 838, 838, 290, 259, - 278, 263, 263, 272, 264, 838, 267, 281, 284, 838, - 838, 838, 325, 331, 336, 342, 346, 348, 353, 356 - } ; - -static yyconst flex_int16_t yy_def[791] = - { 0, - 782, 1, 782, 782, 782, 782, 782, 782, 782, 782, - 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, - 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, - 782, 782, 782, 782, 782, 782, 782, 783, 782, 782, - 782, 782, 782, 782, 784, 782, 782, 782, 782, 782, - 782, 782, 782, 785, 782, 782, 782, 782, 782, 782, - 782, 782, 782, 782, 782, 782, 782, 786, 782, 782, - 782, 782, 782, 782, 782, 787, 782, 782, 782, 782, - 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, - 782, 782, 782, 782, 782, 782, 782, 782, 783, 782, - - 782, 782, 782, 782, 782, 782, 782, 782, 784, 782, - 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, - 782, 782, 782, 785, 782, 782, 782, 782, 782, 782, - 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, - 782, 782, 782, 782, 782, 788, 787, 782, 782, 782, - 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, - 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, - 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, - 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, - 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, - - 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, - 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, - 782, 788, 782, 782, 782, 782, 782, 782, 782, 782, - 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, - 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, - 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, - 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, - 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, - 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, - 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, - - 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, - 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, - 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, - 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, - 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, - 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, - 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, - 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, - 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, - 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, - - 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, - 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, - 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, - 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, - 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, - 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, - 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, - 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, - 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, - 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, - - 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, - 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, - 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, - 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, - 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, - 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, - 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, - 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, - 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, - 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, - - 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, - 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, - 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, - 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, - 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, - 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, - 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, - 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, - 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, - 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, - - 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, - 782, 782, 782, 782, 782, 782, 789, 782, 782, 782, - 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, - 790, 782, 782, 782, 782, 782, 782, 782, 782, 782, - 782, 782, 782, 782, 789, 782, 782, 782, 782, 782, - 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, - 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, - 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, - 782, 0, 782, 782, 782, 782, 782, 782, 782, 782 - } ; - -static yyconst flex_int16_t yy_nxt[880] = - { 0, - 4, 5, 6, 7, 8, 4, 4, 9, 4, 4, - 4, 4, 4, 4, 4, 4, 10, 11, 12, 13, - 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, - 24, 25, 26, 27, 28, 29, 30, 4, 31, 4, - 4, 34, 36, 45, 54, 48, 68, 37, 58, 88, - 730, 60, 90, 35, 38, 91, 59, 96, 97, 61, - 49, 101, 46, 55, 62, 102, 69, 89, 50, 159, - 76, 63, 160, 51, 76, 39, 40, 64, 41, 42, - 52, 65, 43, 44, 70, 106, 118, 104, 71, 77, - 66, 105, 339, 107, 110, 119, 67, 72, 48, 111, - - 73, 112, 340, 74, 78, 79, 113, 717, 80, 341, - 81, 82, 76, 150, 115, 83, 76, 146, 157, 84, - 85, 151, 158, 116, 117, 161, 189, 191, 193, 152, - 204, 153, 395, 396, 190, 192, 194, 232, 162, 213, - 214, 215, 138, 138, 138, 138, 138, 138, 782, 242, - 243, 233, 782, 146, 380, 384, 345, 205, 224, 244, - 225, 245, 246, 247, 226, 227, 255, 278, 228, 346, - 385, 248, 381, 279, 256, 229, 397, 398, 230, 263, - 737, 402, 264, 403, 265, 266, 267, 268, 738, 285, - 269, 286, 288, 270, 289, 271, 291, 294, 292, 295, - - 272, 328, 297, 287, 298, 300, 290, 301, 329, 342, - 293, 296, 405, 343, 330, 739, 299, 331, 417, 302, - 305, 406, 306, 307, 316, 308, 309, 344, 310, 418, - 740, 311, 312, 437, 313, 483, 314, 484, 317, 318, - 319, 523, 488, 320, 592, 563, 438, 489, 672, 670, - 674, 741, 676, 742, 524, 671, 743, 593, 677, 744, - 746, 622, 747, 748, 749, 673, 750, 675, 782, 751, - 623, 732, 733, 734, 735, 736, 624, 752, 625, 753, - 754, 752, 759, 760, 761, 763, 765, 767, 769, 770, - 762, 769, 773, 768, 774, 775, 776, 755, 777, 778, - - 779, 780, 764, 766, 781, 729, 756, 728, 727, 726, - 725, 771, 757, 724, 758, 723, 722, 721, 720, 719, - 718, 717, 716, 715, 772, 98, 98, 714, 98, 98, - 98, 98, 109, 713, 712, 109, 109, 124, 711, 710, - 124, 124, 124, 138, 709, 708, 138, 147, 707, 147, - 147, 147, 222, 222, 731, 706, 705, 731, 731, 731, - 745, 745, 745, 704, 703, 702, 701, 700, 699, 698, - 697, 696, 695, 694, 693, 692, 691, 690, 689, 688, - 687, 686, 685, 684, 683, 682, 681, 680, 679, 678, - 669, 668, 667, 666, 665, 664, 663, 662, 661, 660, - - 659, 658, 657, 656, 655, 654, 653, 652, 651, 650, - 649, 648, 647, 646, 645, 644, 643, 642, 641, 640, - 639, 638, 637, 636, 635, 634, 633, 632, 631, 630, - 629, 628, 627, 626, 621, 620, 619, 618, 617, 616, - 615, 614, 613, 612, 611, 610, 609, 608, 607, 606, - 605, 604, 603, 602, 601, 600, 599, 598, 597, 596, - 595, 594, 591, 590, 589, 588, 587, 586, 585, 584, - 583, 582, 581, 580, 579, 578, 577, 576, 575, 574, - 573, 572, 571, 570, 569, 568, 567, 566, 565, 564, - 563, 562, 561, 560, 559, 558, 557, 556, 555, 554, - - 553, 552, 551, 550, 549, 548, 547, 546, 545, 544, - 543, 542, 541, 540, 539, 538, 537, 536, 535, 534, - 533, 532, 531, 530, 529, 528, 527, 526, 525, 522, - 521, 520, 519, 518, 517, 516, 515, 514, 513, 512, - 511, 510, 509, 508, 507, 506, 505, 504, 503, 502, - 501, 500, 499, 498, 497, 496, 495, 494, 493, 492, - 491, 490, 487, 486, 485, 482, 481, 480, 479, 478, - 477, 476, 475, 474, 473, 472, 471, 470, 469, 468, - 467, 466, 465, 464, 463, 462, 461, 460, 459, 458, - 457, 456, 455, 454, 453, 452, 451, 450, 449, 448, - - 447, 446, 445, 444, 443, 442, 441, 440, 439, 436, - 435, 434, 433, 432, 431, 430, 429, 428, 427, 426, - 425, 424, 423, 422, 421, 420, 419, 416, 415, 414, - 413, 412, 411, 410, 409, 408, 407, 404, 401, 400, - 399, 394, 393, 392, 391, 390, 389, 388, 387, 386, - 383, 382, 379, 378, 377, 376, 375, 374, 373, 372, - 371, 370, 369, 368, 367, 366, 365, 364, 363, 362, - 361, 360, 359, 358, 357, 356, 355, 354, 353, 352, - 351, 350, 349, 348, 347, 338, 337, 336, 335, 334, - 333, 332, 327, 326, 325, 324, 323, 322, 321, 315, - - 304, 303, 284, 283, 282, 281, 280, 277, 276, 275, - 274, 273, 262, 261, 260, 259, 258, 257, 254, 253, - 252, 251, 250, 249, 241, 240, 239, 238, 237, 236, - 235, 234, 231, 223, 221, 220, 219, 218, 217, 216, - 212, 211, 210, 209, 208, 207, 206, 203, 202, 201, - 782, 200, 199, 198, 197, 196, 195, 188, 187, 186, - 185, 184, 782, 183, 182, 181, 180, 179, 178, 177, - 176, 175, 99, 174, 173, 172, 171, 170, 169, 168, - 167, 166, 165, 164, 163, 156, 155, 154, 149, 148, - 145, 144, 143, 142, 141, 140, 139, 68, 137, 136, - - 135, 134, 133, 132, 131, 130, 129, 128, 127, 126, - 125, 54, 123, 122, 121, 120, 114, 45, 108, 103, - 100, 99, 95, 94, 93, 92, 32, 87, 86, 75, - 57, 56, 53, 47, 33, 32, 782, 3, 782, 782, - 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, - 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, - 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, - 782, 782, 782, 782, 782, 782, 782, 782, 782 - } ; - -static yyconst flex_int16_t yy_chk[880] = - { 0, - 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, 10, 11, 13, 17, 15, 23, 11, 20, 30, - 716, 21, 31, 10, 12, 31, 20, 37, 37, 21, - 15, 40, 13, 17, 21, 40, 23, 30, 15, 84, - 26, 21, 84, 15, 26, 12, 12, 22, 12, 12, - 15, 22, 12, 12, 24, 43, 49, 42, 24, 26, - 22, 42, 219, 43, 46, 49, 22, 24, 48, 46, - - 24, 46, 219, 24, 26, 27, 46, 717, 27, 219, - 27, 27, 76, 79, 48, 27, 76, 76, 83, 27, - 27, 79, 83, 48, 48, 85, 115, 116, 117, 79, - 129, 79, 281, 281, 115, 116, 117, 152, 85, 137, - 137, 137, 138, 138, 138, 138, 138, 138, 147, 161, - 161, 152, 147, 147, 268, 271, 224, 129, 150, 161, - 150, 162, 162, 162, 150, 150, 169, 183, 150, 224, - 271, 162, 268, 183, 169, 150, 282, 282, 150, 176, - 721, 305, 176, 305, 176, 176, 176, 176, 723, 189, - 176, 189, 190, 176, 190, 176, 191, 192, 191, 192, - - 176, 208, 193, 189, 193, 194, 190, 194, 208, 223, - 191, 192, 307, 223, 208, 724, 193, 208, 318, 194, - 198, 307, 198, 198, 200, 198, 198, 223, 198, 318, - 725, 198, 198, 339, 198, 399, 198, 399, 200, 200, - 200, 446, 405, 200, 519, 563, 339, 405, 623, 622, - 624, 726, 625, 728, 446, 622, 729, 519, 625, 730, - 737, 563, 738, 740, 741, 623, 744, 624, 745, 746, - 563, 718, 718, 718, 718, 718, 563, 747, 563, 750, - 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, - 755, 769, 770, 758, 771, 772, 773, 752, 774, 775, - - 777, 778, 756, 757, 779, 715, 752, 714, 713, 712, - 710, 769, 752, 709, 752, 708, 705, 703, 702, 700, - 699, 698, 697, 695, 769, 783, 783, 693, 783, 783, - 783, 783, 784, 692, 691, 784, 784, 785, 690, 688, - 785, 785, 785, 786, 687, 684, 786, 787, 683, 787, - 787, 787, 788, 788, 789, 681, 669, 789, 789, 789, - 790, 790, 790, 667, 665, 664, 662, 658, 657, 654, - 653, 652, 651, 650, 648, 647, 646, 645, 644, 643, - 642, 641, 639, 638, 633, 632, 630, 629, 628, 627, - 620, 619, 618, 617, 616, 615, 614, 613, 612, 611, - - 610, 608, 606, 605, 603, 602, 601, 600, 599, 598, - 597, 596, 595, 594, 593, 592, 591, 590, 589, 588, - 586, 585, 584, 583, 580, 578, 576, 575, 572, 570, - 568, 567, 565, 564, 562, 561, 559, 558, 557, 556, - 553, 549, 548, 547, 546, 544, 543, 542, 541, 540, - 539, 537, 534, 530, 529, 526, 525, 524, 523, 522, - 521, 520, 518, 517, 516, 515, 514, 513, 512, 511, - 510, 509, 508, 507, 505, 504, 503, 502, 501, 500, - 499, 498, 497, 496, 495, 494, 493, 492, 491, 490, - 489, 488, 487, 486, 485, 484, 483, 482, 481, 480, - - 478, 477, 476, 475, 474, 473, 472, 471, 470, 469, - 468, 467, 466, 465, 464, 463, 461, 460, 458, 457, - 456, 455, 454, 453, 451, 450, 449, 448, 447, 445, - 444, 440, 439, 438, 437, 436, 435, 434, 432, 431, - 430, 428, 427, 426, 425, 424, 423, 422, 419, 418, - 417, 416, 415, 414, 413, 412, 411, 410, 409, 408, - 407, 406, 404, 402, 400, 394, 393, 392, 391, 390, - 389, 387, 385, 384, 383, 382, 381, 378, 377, 375, - 374, 373, 372, 371, 370, 369, 368, 367, 366, 365, - 364, 363, 362, 361, 360, 357, 356, 355, 354, 353, - - 351, 350, 346, 345, 344, 343, 342, 341, 340, 338, - 337, 336, 335, 334, 333, 332, 331, 330, 329, 328, - 327, 326, 325, 322, 321, 320, 319, 317, 316, 315, - 314, 313, 312, 311, 310, 309, 308, 306, 303, 284, - 283, 280, 279, 278, 277, 276, 275, 274, 273, 272, - 270, 269, 267, 266, 265, 264, 263, 261, 260, 259, - 258, 257, 255, 254, 253, 252, 251, 249, 248, 244, - 241, 239, 238, 237, 235, 234, 233, 232, 231, 230, - 229, 228, 227, 226, 225, 218, 217, 216, 212, 211, - 210, 209, 207, 206, 205, 204, 203, 202, 201, 199, - - 197, 196, 188, 187, 186, 185, 184, 182, 181, 180, - 179, 177, 175, 174, 173, 172, 171, 170, 168, 167, - 166, 165, 164, 163, 160, 159, 158, 157, 156, 155, - 154, 153, 151, 149, 145, 144, 143, 141, 140, 139, - 136, 135, 134, 133, 132, 131, 130, 128, 126, 125, - 124, 123, 122, 121, 120, 119, 118, 114, 113, 112, - 111, 110, 109, 108, 107, 106, 105, 104, 103, 102, - 101, 100, 99, 97, 96, 95, 94, 93, 92, 91, - 90, 89, 88, 87, 86, 82, 81, 80, 78, 77, - 75, 74, 73, 72, 71, 70, 69, 68, 67, 66, - - 65, 64, 63, 62, 61, 60, 59, 58, 57, 56, - 55, 54, 53, 52, 51, 50, 47, 45, 44, 41, - 39, 38, 36, 35, 34, 33, 32, 29, 28, 25, - 19, 18, 16, 14, 9, 5, 3, 782, 782, 782, - 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, - 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, - 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, - 782, 782, 782, 782, 782, 782, 782, 782, 782 - } ; - -/* Table of booleans, true if rule could match eol. */ -static yyconst flex_int32_t yy_rule_can_match_eol[198] = - { 0, -0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }; - -extern int yy_flex_debug; -int yy_flex_debug = 0; - -static yy_state_type *yy_state_buf=0, *yy_state_ptr=0; -static char *yy_full_match; -static int yy_lp; -#define REJECT \ -{ \ -*yy_cp = (yy_hold_char); /* undo effects of setting up yytext */ \ -yy_cp = (yy_full_match); /* restore poss. backed-over text */ \ -++(yy_lp); \ -goto find_rule; \ -} - -static int yy_more_offset = 0; -static int yy_prev_more_offset = 0; -#define yymore() ((yy_more_offset) = yy_flex_strlen( yytext )) -#define YY_NEED_STRLEN -#define YY_MORE_ADJ 0 -#define YY_RESTORE_YY_MORE_OFFSET \ - { \ - (yy_more_offset) = (yy_prev_more_offset); \ - yyleng -= (yy_more_offset); \ - } -#ifndef YYLMAX -#define YYLMAX 8192 -#endif - -char yytext[YYLMAX]; -char *yytext_ptr; -#line 1 "./pl.l" -#line 2 "./pl.l" -/* pl.l: Lexical analysis of property list files. - -This file is part of Omega, -which is based on the web2c distribution of TeX, - -Copyright (c) 1994--2001 John Plaice and Yannis Haralambous -Copyright (c) 2002 Roozbeh Pournader - -Omega 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 of the License, or -(at your option) any later version. - -Omega 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 Omega; if not, write to the Free Software Foundation, Inc., -59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. - -*/ - -#include -#ifdef WIN32 -#include -#endif -#include "parser.h" -#include "kpathsea/types.h" -#include "y_tab.h" -#include "manifests.h" -#include "error_routines.h" -#ifdef __cplusplus -#define yyinput input -#endif - -int line_number = 1; -extern YYSTYPE yylval; - -/* POTENTIAL BUG: saved_text could be run over; should check */ -#define MAX_PTR 10000 -char saved_text[MAX_PTR]; - -extern void scan_int(unsigned); -extern void scan_char(void); -extern void scan_fix(void); -extern void scan_string(char *, unsigned, unsigned); -extern void scan_hex_string(); - -/* from kpathsea, but avoid including kpathsea header files */ -extern char *xstrdup (const char *); - -#define KEEP_MIN 0 -#define KEEP_NONE 0 -#define KEEP_ALL 1 -#define KEEP_CONVERT 2 -#define KEEP_MAX 2 - -#define BASE_MIN 2 -#define BASE_MAX 16 - -/* For Solaris's lex, to increase tables sizes --RP */ -/* Space before number keeps ancient flex happy. */ -#line 1036 "lex.yy.c" - -#define INITIAL 0 - -#ifndef YY_NO_UNISTD_H -/* Special case for "unistd.h", since it is non-ANSI. We include it way - * down here because we want the user's section 1 to have been scanned first. - * The user has a chance to override it with an option. - */ -#include -#endif - -#ifndef YY_EXTRA_TYPE -#define YY_EXTRA_TYPE void * -#endif - -/* Macros after this point can all be overridden by user definitions in - * section 1. - */ - -#ifndef YY_SKIP_YYWRAP -#ifdef __cplusplus -extern "C" int yywrap (void ); -#else -extern int yywrap (void ); -#endif -#endif - - static void yyunput (int c,char *buf_ptr ); - -#ifndef yytext_ptr -static void yy_flex_strncpy (char *,yyconst char *,int ); -#endif - -#ifdef YY_NEED_STRLEN -static int yy_flex_strlen (yyconst char * ); -#endif - -#ifndef YY_NO_INPUT - -#ifdef __cplusplus -static int yyinput (void ); -#else -static int input (void ); -#endif - -#endif - -/* Amount of stuff to slurp up with each read. */ -#ifndef YY_READ_BUF_SIZE -#define YY_READ_BUF_SIZE 8192 -#endif - -/* Copy whatever the last rule matched to the standard output. */ -#ifndef ECHO -/* This used to be an fputs(), but since the string might contain NUL's, - * we now use fwrite(). - */ -#define ECHO (void) fwrite( yytext, yyleng, 1, yyout ) -#endif - -/* Gets input and stuffs it into "buf". number of characters read, or YY_NULL, - * is returned in "result". - */ -#ifndef YY_INPUT -#define YY_INPUT(buf,result,max_size) \ - if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \ - { \ - int c = '*'; \ - size_t n; \ - for ( n = 0; n < max_size && \ - (c = getc( yyin )) != EOF && c != '\n'; ++n ) \ - buf[n] = (char) c; \ - if ( c == '\n' ) \ - buf[n++] = (char) c; \ - if ( c == EOF && ferror( yyin ) ) \ - YY_FATAL_ERROR( "input in flex scanner failed" ); \ - result = n; \ - } \ - else \ - { \ - errno=0; \ - while ( (result = fread(buf, 1, max_size, yyin))==0 && ferror(yyin)) \ - { \ - if( errno != EINTR) \ - { \ - YY_FATAL_ERROR( "input in flex scanner failed" ); \ - break; \ - } \ - errno=0; \ - clearerr(yyin); \ - } \ - }\ -\ - -#endif - -/* No semi-colon after return; correct usage is to write "yyterminate();" - - * we don't want an extra ';' after the "return" because that will cause - * some compilers to complain about unreachable statements. - */ -#ifndef yyterminate -#define yyterminate() return YY_NULL -#endif - -/* Number of entries by which start-condition stack grows. */ -#ifndef YY_START_STACK_INCR -#define YY_START_STACK_INCR 25 -#endif - -/* Report a fatal error. */ -#ifndef YY_FATAL_ERROR -#define YY_FATAL_ERROR(msg) yy_fatal_error( msg ) -#endif - -/* end tables serialization structures and prototypes */ - -/* Default declaration of generated scanner - a define so the user can - * easily add parameters. - */ -#ifndef YY_DECL -#define YY_DECL_IS_OURS 1 - -extern int yylex (void); - -#define YY_DECL int yylex (void) -#endif /* !YY_DECL */ - -/* Code executed at the beginning of each rule, after yytext and yyleng - * have been set up. - */ -#ifndef YY_USER_ACTION -#define YY_USER_ACTION -#endif - -/* Code executed at the end of each rule. */ -#ifndef YY_BREAK -#define YY_BREAK break; -#endif - -#define YY_RULE_SETUP \ - YY_USER_ACTION - -/** The main scanner function which does all the work. - */ -YY_DECL -{ - register yy_state_type yy_current_state; - register char *yy_cp, *yy_bp; - register int yy_act; - -#line 80 "./pl.l" - - -#line 1190 "lex.yy.c" - - if ( (yy_init) ) - { - (yy_init) = 0; - -#ifdef YY_USER_INIT - YY_USER_INIT; -#endif - - if ( ! (yy_state_buf) ) - (yy_state_buf) = (yy_state_type *)yyalloc(YY_BUF_SIZE + 2 ); - - if ( ! (yy_start) ) - (yy_start) = 1; /* first start state */ - - if ( ! yyin ) - yyin = stdin; - - if ( ! yyout ) - yyout = stdout; - - if ( ! YY_CURRENT_BUFFER ) { - yyensure_buffer_stack (); - YY_CURRENT_BUFFER_LVALUE = - yy_create_buffer(yyin,YY_BUF_SIZE ); - } - - yy_load_buffer_state( ); - } - - while ( 1 ) /* loops until end-of-file is reached */ - { - yy_cp = (yy_c_buf_p); - - /* Support of yytext. */ - *yy_cp = (yy_hold_char); - - /* yy_bp points to the position in yy_ch_buf of the start of - * the current run. - */ - yy_bp = yy_cp; - - yy_current_state = (yy_start); - - (yy_state_ptr) = (yy_state_buf); - *(yy_state_ptr)++ = yy_current_state; - -yy_match: - do - { - register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)]; - while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) - { - yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 783 ) - yy_c = yy_meta[(unsigned int) yy_c]; - } - yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; - *(yy_state_ptr)++ = yy_current_state; - ++yy_cp; - } - while ( yy_base[yy_current_state] != 838 ); - -yy_find_action: - yy_current_state = *--(yy_state_ptr); - (yy_lp) = yy_accept[yy_current_state]; -find_rule: /* we branch to this label when backing up */ - for ( ; ; ) /* until we find what rule we matched */ - { - if ( (yy_lp) && (yy_lp) < yy_accept[yy_current_state + 1] ) - { - yy_act = yy_acclist[(yy_lp)]; - { - (yy_full_match) = yy_cp; - break; - } - } - --yy_cp; - yy_current_state = *--(yy_state_ptr); - (yy_lp) = yy_accept[yy_current_state]; - } - - YY_DO_BEFORE_ACTION; - - if ( yy_act != YY_END_OF_BUFFER && yy_rule_can_match_eol[yy_act] ) - { - int yyl; - for ( yyl = (yy_prev_more_offset); yyl < yyleng; ++yyl ) - if ( yytext[yyl] == '\n' ) - - yylineno++; -; - } - -do_action: /* This label is used only to access EOF actions. */ - - switch ( yy_act ) - { /* beginning of action switch */ -case 1: -YY_RULE_SETUP -#line 82 "./pl.l" -{} - YY_BREAK -case 2: -/* rule 2 can match eol */ -YY_RULE_SETUP -#line 83 "./pl.l" -{line_number++; } - YY_BREAK -case 3: -YY_RULE_SETUP -#line 85 "./pl.l" -return(LEFT); - YY_BREAK -case 4: -YY_RULE_SETUP -#line 86 "./pl.l" -return(RIGHT); - YY_BREAK -case 5: -YY_RULE_SETUP -#line 88 "./pl.l" -{scan_int(8); return(NUMBER); } - YY_BREAK -case 6: -YY_RULE_SETUP -#line 89 "./pl.l" -{scan_int(10); return(NUMBER); } - YY_BREAK -case 7: -YY_RULE_SETUP -#line 90 "./pl.l" -{scan_int(16); return(NUMBER); } - YY_BREAK -case 8: -YY_RULE_SETUP -#line 91 "./pl.l" -{scan_char(); return(NUMBER); } - YY_BREAK -case 9: -YY_RULE_SETUP -#line 92 "./pl.l" -{scan_fix(); return(FIX); } - YY_BREAK -case 10: -YY_RULE_SETUP -#line 94 "./pl.l" -{scan_string("CODINGSCHEME", KEEP_CONVERT, LEN_CODING_SCHEME); - return(CODINGSCHEME); } - YY_BREAK -case 11: -YY_RULE_SETUP -#line 96 "./pl.l" -{scan_string("FAMILY", KEEP_CONVERT, LEN_FAMILY); - return(FAMILY); } - YY_BREAK -case 12: -YY_RULE_SETUP -#line 98 "./pl.l" -{scan_string("VTITLE", KEEP_ALL, LEN_VTITLE); - return(VTITLE); } - YY_BREAK -case 13: -YY_RULE_SETUP -#line 100 "./pl.l" -{scan_string("FONTNAME", KEEP_ALL, LEN_FONT_NAME); - return(FONTNAME); } - YY_BREAK -case 14: -YY_RULE_SETUP -#line 102 "./pl.l" -{scan_string("FONTAREA", KEEP_ALL, LEN_FONT_AREA); - return(FONTAREA); } - YY_BREAK -case 15: -YY_RULE_SETUP -#line 104 "./pl.l" -{scan_string("SPECIAL", KEEP_ALL, 0); - return(SPECIAL); } - YY_BREAK -case 16: -YY_RULE_SETUP -#line 106 "./pl.l" -{scan_string("COMMENT", KEEP_NONE, 0); - return(COMMENT); } - YY_BREAK -case 17: -YY_RULE_SETUP -#line 109 "./pl.l" -{scan_hex_string(); return(SPECIALHEX); } - YY_BREAK -case 18: -YY_RULE_SETUP -#line 112 "./pl.l" -{yylval.yint=1; return(SEVENBITSAFEFLAG); } - YY_BREAK -case 19: -YY_RULE_SETUP -#line 113 "./pl.l" -{yylval.yint=0; return(SEVENBITSAFEFLAG); } - YY_BREAK -case 20: -YY_RULE_SETUP -#line 115 "./pl.l" -return(CHECKSUM); - YY_BREAK -case 21: -YY_RULE_SETUP -#line 116 "./pl.l" -return(DESIGNSIZE); - YY_BREAK -case 22: -YY_RULE_SETUP -#line 117 "./pl.l" -return(DESIGNUNITS); - YY_BREAK -case 23: -YY_RULE_SETUP -#line 118 "./pl.l" -return(FACE); - YY_BREAK -case 24: -YY_RULE_SETUP -#line 119 "./pl.l" -return(HEADER); - YY_BREAK -case 25: -YY_RULE_SETUP -#line 120 "./pl.l" -return(BOUNDARYCHAR); - YY_BREAK -case 26: -YY_RULE_SETUP -#line 121 "./pl.l" -return(FONTDIMEN); - YY_BREAK -case 27: -YY_RULE_SETUP -#line 122 "./pl.l" -return(LIGTABLE); - YY_BREAK -case 28: -YY_RULE_SETUP -#line 123 "./pl.l" -return(CHARACTER); - YY_BREAK -case 29: -YY_RULE_SETUP -#line 125 "./pl.l" -return(PARAMETER); - YY_BREAK -case 30: -YY_RULE_SETUP -#line 126 "./pl.l" -return(LABEL); - YY_BREAK -case 31: -YY_RULE_SETUP -#line 127 "./pl.l" -return(KRN); - YY_BREAK -case 32: -YY_RULE_SETUP -#line 128 "./pl.l" -return(STOP); - YY_BREAK -case 33: -YY_RULE_SETUP -#line 129 "./pl.l" -return(SKIP); - YY_BREAK -case 34: -YY_RULE_SETUP -#line 130 "./pl.l" -return(NEXTLARGER); - YY_BREAK -case 35: -YY_RULE_SETUP -#line 131 "./pl.l" -return(VARCHAR); - YY_BREAK -case 36: -YY_RULE_SETUP -#line 133 "./pl.l" -{yylval.yint = C_WD; return(CHARMEASURE); } - YY_BREAK -case 37: -YY_RULE_SETUP -#line 134 "./pl.l" -{yylval.yint = C_HT; return(CHARMEASURE); } - YY_BREAK -case 38: -YY_RULE_SETUP -#line 135 "./pl.l" -{yylval.yint = C_DP; return(CHARMEASURE); } - YY_BREAK -case 39: -YY_RULE_SETUP -#line 136 "./pl.l" -{yylval.yint = C_IC; return(CHARMEASURE); } - YY_BREAK -case 40: -YY_RULE_SETUP -#line 138 "./pl.l" -{yylval.yint = E_TOP; return(EXTEN); } - YY_BREAK -case 41: -YY_RULE_SETUP -#line 139 "./pl.l" -{yylval.yint = E_MID; return(EXTEN); } - YY_BREAK -case 42: -YY_RULE_SETUP -#line 140 "./pl.l" -{yylval.yint = E_BOT; return(EXTEN); } - YY_BREAK -case 43: -YY_RULE_SETUP -#line 141 "./pl.l" -{yylval.yint = E_REP; return(EXTEN); } - YY_BREAK -case 44: -YY_RULE_SETUP -#line 143 "./pl.l" -{yylval.yint = L_0; return(LIG); } - YY_BREAK -case 45: -YY_RULE_SETUP -#line 144 "./pl.l" -{yylval.yint = L_B; return(LIG); } - YY_BREAK -case 46: -YY_RULE_SETUP -#line 145 "./pl.l" -{yylval.yint = L_A; return(LIG); } - YY_BREAK -case 47: -YY_RULE_SETUP -#line 146 "./pl.l" -{yylval.yint = L_AB; return(LIG); } - YY_BREAK -case 48: -YY_RULE_SETUP -#line 147 "./pl.l" -{yylval.yint = L_Bx; return(LIG); } - YY_BREAK -case 49: -YY_RULE_SETUP -#line 148 "./pl.l" -{yylval.yint = L_Ax; return(LIG); } - YY_BREAK -case 50: -YY_RULE_SETUP -#line 149 "./pl.l" -{yylval.yint = L_ABx; return(LIG); } - YY_BREAK -case 51: -YY_RULE_SETUP -#line 150 "./pl.l" -{yylval.yint = L_ABxx; return(LIG); } - YY_BREAK -case 52: -YY_RULE_SETUP -#line 152 "./pl.l" -{yylval.yint = F_MRR; return(NUMBER); } - YY_BREAK -case 53: -YY_RULE_SETUP -#line 153 "./pl.l" -{yylval.yint = F_MIR; return(NUMBER); } - YY_BREAK -case 54: -YY_RULE_SETUP -#line 154 "./pl.l" -{yylval.yint = F_BRR; return(NUMBER); } - YY_BREAK -case 55: -YY_RULE_SETUP -#line 155 "./pl.l" -{yylval.yint = F_BIR; return(NUMBER); } - YY_BREAK -case 56: -YY_RULE_SETUP -#line 156 "./pl.l" -{yylval.yint = F_LRR; return(NUMBER); } - YY_BREAK -case 57: -YY_RULE_SETUP -#line 157 "./pl.l" -{yylval.yint = F_LIR; return(NUMBER); } - YY_BREAK -case 58: -YY_RULE_SETUP -#line 158 "./pl.l" -{yylval.yint = F_MRC; return(NUMBER); } - YY_BREAK -case 59: -YY_RULE_SETUP -#line 159 "./pl.l" -{yylval.yint = F_MIC; return(NUMBER); } - YY_BREAK -case 60: -YY_RULE_SETUP -#line 160 "./pl.l" -{yylval.yint = F_BRC; return(NUMBER); } - YY_BREAK -case 61: -YY_RULE_SETUP -#line 161 "./pl.l" -{yylval.yint = F_BIC; return(NUMBER); } - YY_BREAK -case 62: -YY_RULE_SETUP -#line 162 "./pl.l" -{yylval.yint = F_LRC; return(NUMBER); } - YY_BREAK -case 63: -YY_RULE_SETUP -#line 163 "./pl.l" -{yylval.yint = F_LIC; return(NUMBER); } - YY_BREAK -case 64: -YY_RULE_SETUP -#line 164 "./pl.l" -{yylval.yint = F_MRE; return(NUMBER); } - YY_BREAK -case 65: -YY_RULE_SETUP -#line 165 "./pl.l" -{yylval.yint = F_MIE; return(NUMBER); } - YY_BREAK -case 66: -YY_RULE_SETUP -#line 166 "./pl.l" -{yylval.yint = F_BRE; return(NUMBER); } - YY_BREAK -case 67: -YY_RULE_SETUP -#line 167 "./pl.l" -{yylval.yint = F_BIE; return(NUMBER); } - YY_BREAK -case 68: -YY_RULE_SETUP -#line 168 "./pl.l" -{yylval.yint = F_LRE; return(NUMBER); } - YY_BREAK -case 69: -YY_RULE_SETUP -#line 169 "./pl.l" -{yylval.yint = F_LIE; return(NUMBER); } - YY_BREAK -case 70: -YY_RULE_SETUP -#line 171 "./pl.l" -{yylval.yint = P_SLANT; return(NAMEDPARAMETER); } - YY_BREAK -case 71: -YY_RULE_SETUP -#line 172 "./pl.l" -{yylval.yint = P_SPACE; return(NAMEDPARAMETER); } - YY_BREAK -case 72: -YY_RULE_SETUP -#line 173 "./pl.l" -{yylval.yint = P_STRETCH; return(NAMEDPARAMETER); } - YY_BREAK -case 73: -YY_RULE_SETUP -#line 174 "./pl.l" -{yylval.yint = P_SHRINK; return(NAMEDPARAMETER); } - YY_BREAK -case 74: -YY_RULE_SETUP -#line 175 "./pl.l" -{yylval.yint = P_XHEIGHT; return(NAMEDPARAMETER); } - YY_BREAK -case 75: -YY_RULE_SETUP -#line 176 "./pl.l" -{yylval.yint = P_QUAD; return(NAMEDPARAMETER); } - YY_BREAK -case 76: -YY_RULE_SETUP -#line 177 "./pl.l" -{yylval.yint = P_EXTRASPACE; return(NAMEDPARAMETER); } - YY_BREAK -case 77: -YY_RULE_SETUP -#line 178 "./pl.l" -{yylval.yint = P_NUM1; return(NAMEDPARAMETER); } - YY_BREAK -case 78: -YY_RULE_SETUP -#line 179 "./pl.l" -{yylval.yint = P_NUM2; return(NAMEDPARAMETER); } - YY_BREAK -case 79: -YY_RULE_SETUP -#line 180 "./pl.l" -{yylval.yint = P_NUM3; return(NAMEDPARAMETER); } - YY_BREAK -case 80: -YY_RULE_SETUP -#line 181 "./pl.l" -{yylval.yint = P_DENOM1; return(NAMEDPARAMETER); } - YY_BREAK -case 81: -YY_RULE_SETUP -#line 182 "./pl.l" -{yylval.yint = P_DENOM2; return(NAMEDPARAMETER); } - YY_BREAK -case 82: -YY_RULE_SETUP -#line 183 "./pl.l" -{yylval.yint = P_SUP1; return(NAMEDPARAMETER); } - YY_BREAK -case 83: -YY_RULE_SETUP -#line 184 "./pl.l" -{yylval.yint = P_SUP2; return(NAMEDPARAMETER); } - YY_BREAK -case 84: -YY_RULE_SETUP -#line 185 "./pl.l" -{yylval.yint = P_SUP3; return(NAMEDPARAMETER); } - YY_BREAK -case 85: -YY_RULE_SETUP -#line 186 "./pl.l" -{yylval.yint = P_SUB1; return(NAMEDPARAMETER); } - YY_BREAK -case 86: -YY_RULE_SETUP -#line 187 "./pl.l" -{yylval.yint = P_SUB2; return(NAMEDPARAMETER); } - YY_BREAK -case 87: -YY_RULE_SETUP -#line 188 "./pl.l" -{yylval.yint = P_SUPDROP; return(NAMEDPARAMETER); } - YY_BREAK -case 88: -YY_RULE_SETUP -#line 189 "./pl.l" -{yylval.yint = P_SUBDROP; return(NAMEDPARAMETER); } - YY_BREAK -case 89: -YY_RULE_SETUP -#line 190 "./pl.l" -{yylval.yint = P_DELIM1; return(NAMEDPARAMETER); } - YY_BREAK -case 90: -YY_RULE_SETUP -#line 191 "./pl.l" -{yylval.yint = P_DELIM2; return(NAMEDPARAMETER); } - YY_BREAK -case 91: -YY_RULE_SETUP -#line 192 "./pl.l" -{yylval.yint = P_AXISHEIGHT; return(NAMEDPARAMETER); } - YY_BREAK -case 92: -YY_RULE_SETUP -#line 194 "./pl.l" -{yylval.yint = P_DEFAULTRULETHICKNESS; - return(NAMEDPARAMETER); } - YY_BREAK -case 93: -YY_RULE_SETUP -#line 196 "./pl.l" -{yylval.yint = P_BIGOPSPACING1; return(NAMEDPARAMETER); } - YY_BREAK -case 94: -YY_RULE_SETUP -#line 197 "./pl.l" -{yylval.yint = P_BIGOPSPACING2; return(NAMEDPARAMETER); } - YY_BREAK -case 95: -YY_RULE_SETUP -#line 198 "./pl.l" -{yylval.yint = P_BIGOPSPACING3; return(NAMEDPARAMETER); } - YY_BREAK -case 96: -YY_RULE_SETUP -#line 199 "./pl.l" -{yylval.yint = P_BIGOPSPACING4; return(NAMEDPARAMETER); } - YY_BREAK -case 97: -YY_RULE_SETUP -#line 200 "./pl.l" -{yylval.yint = P_BIGOPSPACING5; return(NAMEDPARAMETER); } - YY_BREAK -case 98: -YY_RULE_SETUP -#line 202 "./pl.l" -{return(MAPFONT); } - YY_BREAK -case 99: -YY_RULE_SETUP -#line 203 "./pl.l" -{return(FONTCHECKSUM); } - YY_BREAK -case 100: -YY_RULE_SETUP -#line 204 "./pl.l" -{return(FONTAT); } - YY_BREAK -case 101: -YY_RULE_SETUP -#line 205 "./pl.l" -{return(FONTDSIZE); } - YY_BREAK -case 102: -YY_RULE_SETUP -#line 206 "./pl.l" -{return(MAP); } - YY_BREAK -case 103: -YY_RULE_SETUP -#line 207 "./pl.l" -{return(SELECTFONT); } - YY_BREAK -case 104: -YY_RULE_SETUP -#line 208 "./pl.l" -{return(SETCHAR); } - YY_BREAK -case 105: -YY_RULE_SETUP -#line 209 "./pl.l" -{return(SETRULE); } - YY_BREAK -case 106: -YY_RULE_SETUP -#line 210 "./pl.l" -{return(PUSH); } - YY_BREAK -case 107: -YY_RULE_SETUP -#line 211 "./pl.l" -{return(POP); } - YY_BREAK -case 108: -YY_RULE_SETUP -#line 213 "./pl.l" -{yylval.yint = M_RIGHT; return(MOVE); } - YY_BREAK -case 109: -YY_RULE_SETUP -#line 214 "./pl.l" -{yylval.yint = M_LEFT; return(MOVE); } - YY_BREAK -case 110: -YY_RULE_SETUP -#line 215 "./pl.l" -{yylval.yint = M_UP; return(MOVE); } - YY_BREAK -case 111: -YY_RULE_SETUP -#line 216 "./pl.l" -{yylval.yint = M_DOWN; return(MOVE); } - YY_BREAK -case 112: -YY_RULE_SETUP -#line 218 "./pl.l" -return(OFMLEVEL); - YY_BREAK -case 113: -YY_RULE_SETUP -#line 219 "./pl.l" -{yylval.yint = ACC_TOP; return(ACCENT); } - YY_BREAK -case 114: -YY_RULE_SETUP -#line 220 "./pl.l" -{yylval.yint = ACC_MID; return(ACCENT); } - YY_BREAK -case 115: -YY_RULE_SETUP -#line 221 "./pl.l" -{yylval.yint = ACC_BOT; return(ACCENT); } - YY_BREAK -case 116: -YY_RULE_SETUP -#line 223 "./pl.l" -{yylval.yint = DIR_ORD+DIR_TL; return(FONTDIR);} - YY_BREAK -case 117: -YY_RULE_SETUP -#line 224 "./pl.l" -{yylval.yint = DIR_ORD+DIR_LT; return(FONTDIR);} - YY_BREAK -case 118: -YY_RULE_SETUP -#line 225 "./pl.l" -{yylval.yint = DIR_ORD+DIR_TR; return(FONTDIR);} - YY_BREAK -case 119: -YY_RULE_SETUP -#line 226 "./pl.l" -{yylval.yint = DIR_ORD+DIR_LB; return(FONTDIR);} - YY_BREAK -case 120: -YY_RULE_SETUP -#line 227 "./pl.l" -{yylval.yint = DIR_ORD+DIR_BL; return(FONTDIR);} - YY_BREAK -case 121: -YY_RULE_SETUP -#line 228 "./pl.l" -{yylval.yint = DIR_ORD+DIR_RT; return(FONTDIR);} - YY_BREAK -case 122: -YY_RULE_SETUP -#line 229 "./pl.l" -{yylval.yint = DIR_ORD+DIR_BR; return(FONTDIR);} - YY_BREAK -case 123: -YY_RULE_SETUP -#line 230 "./pl.l" -{yylval.yint = DIR_ORD+DIR_RB; return(FONTDIR);} - YY_BREAK -case 124: -YY_RULE_SETUP -#line 231 "./pl.l" -{yylval.yint = DIR_NAT+DIR_TL; return(FONTDIR);} - YY_BREAK -case 125: -YY_RULE_SETUP -#line 232 "./pl.l" -{yylval.yint = DIR_NAT+DIR_LT; return(FONTDIR);} - YY_BREAK -case 126: -YY_RULE_SETUP -#line 233 "./pl.l" -{yylval.yint = DIR_NAT+DIR_TR; return(FONTDIR);} - YY_BREAK -case 127: -YY_RULE_SETUP -#line 234 "./pl.l" -{yylval.yint = DIR_NAT+DIR_LB; return(FONTDIR);} - YY_BREAK -case 128: -YY_RULE_SETUP -#line 235 "./pl.l" -{yylval.yint = DIR_NAT+DIR_BL; return(FONTDIR);} - YY_BREAK -case 129: -YY_RULE_SETUP -#line 236 "./pl.l" -{yylval.yint = DIR_NAT+DIR_RT; return(FONTDIR);} - YY_BREAK -case 130: -YY_RULE_SETUP -#line 237 "./pl.l" -{yylval.yint = DIR_NAT+DIR_BR; return(FONTDIR);} - YY_BREAK -case 131: -YY_RULE_SETUP -#line 238 "./pl.l" -{yylval.yint = DIR_NAT+DIR_RB; return(FONTDIR);} - YY_BREAK -case 132: -YY_RULE_SETUP -#line 240 "./pl.l" -return(FONTIVALUE); - YY_BREAK -case 133: -YY_RULE_SETUP -#line 241 "./pl.l" -return(FONTFVALUE); - YY_BREAK -case 134: -YY_RULE_SETUP -#line 242 "./pl.l" -return(FONTMVALUE); - YY_BREAK -case 135: -YY_RULE_SETUP -#line 243 "./pl.l" -return(FONTPENALTY); - YY_BREAK -case 136: -YY_RULE_SETUP -#line 244 "./pl.l" -return(FONTRULE); - YY_BREAK -case 137: -YY_RULE_SETUP -#line 245 "./pl.l" -return(FONTGLUE); - YY_BREAK -case 138: -YY_RULE_SETUP -#line 247 "./pl.l" -return(IVALUE); - YY_BREAK -case 139: -YY_RULE_SETUP -#line 248 "./pl.l" -return(FVALUE); - YY_BREAK -case 140: -YY_RULE_SETUP -#line 249 "./pl.l" -return(MVALUE); - YY_BREAK -case 141: -YY_RULE_SETUP -#line 250 "./pl.l" -return(PENALTY); - YY_BREAK -case 142: -YY_RULE_SETUP -#line 251 "./pl.l" -return(RULE); - YY_BREAK -case 143: -YY_RULE_SETUP -#line 252 "./pl.l" -return(GLUE); - YY_BREAK -case 144: -YY_RULE_SETUP -#line 254 "./pl.l" -return(IVALUEVAL); - YY_BREAK -case 145: -YY_RULE_SETUP -#line 255 "./pl.l" -return(FVALUEVAL); - YY_BREAK -case 146: -YY_RULE_SETUP -#line 256 "./pl.l" -return(MVALUEVAL); - YY_BREAK -case 147: -YY_RULE_SETUP -#line 257 "./pl.l" -return(PENALTYVAL); - YY_BREAK -case 148: -YY_RULE_SETUP -#line 259 "./pl.l" -{ yylval.yint = RULE_WD; return(RULEMEASURE); } - YY_BREAK -case 149: -YY_RULE_SETUP -#line 260 "./pl.l" -{ yylval.yint = RULE_HT; return(RULEMEASURE); } - YY_BREAK -case 150: -YY_RULE_SETUP -#line 261 "./pl.l" -{ yylval.yint = RULE_DP; return(RULEMEASURE); } - YY_BREAK -case 151: -YY_RULE_SETUP -#line 263 "./pl.l" -return(GLUEWD); - YY_BREAK -case 152: -YY_RULE_SETUP -#line 264 "./pl.l" -{ yylval.yint = GLUE_STRETCH; return(GLUESHRINKSTRETCH); } - YY_BREAK -case 153: -YY_RULE_SETUP -#line 265 "./pl.l" -{ yylval.yint = GLUE_SHRINK; return(GLUESHRINKSTRETCH); } - YY_BREAK -case 154: -YY_RULE_SETUP -#line 267 "./pl.l" -return(GLUETYPE); - YY_BREAK -case 155: -YY_RULE_SETUP -#line 268 "./pl.l" -return(GLUERULE); - YY_BREAK -case 156: -YY_RULE_SETUP -#line 269 "./pl.l" -return(GLUECHAR); - YY_BREAK -case 157: -YY_RULE_SETUP -#line 271 "./pl.l" -return(CHARIVALUE); - YY_BREAK -case 158: -YY_RULE_SETUP -#line 272 "./pl.l" -return(CHARFVALUE); - YY_BREAK -case 159: -YY_RULE_SETUP -#line 273 "./pl.l" -return(CHARMVALUE); - YY_BREAK -case 160: -YY_RULE_SETUP -#line 274 "./pl.l" -return(CHARPENALTY); - YY_BREAK -case 161: -YY_RULE_SETUP -#line 275 "./pl.l" -return(CHARRULE); - YY_BREAK -case 162: -YY_RULE_SETUP -#line 276 "./pl.l" -return(CHARGLUE); - YY_BREAK -case 163: -YY_RULE_SETUP -#line 278 "./pl.l" -return(CKRN); - YY_BREAK -case 164: -YY_RULE_SETUP -#line 279 "./pl.l" -return(CGLUE); - YY_BREAK -case 165: -YY_RULE_SETUP -#line 280 "./pl.l" -return(CPENALTY); - YY_BREAK -case 166: -YY_RULE_SETUP -#line 281 "./pl.l" -return(CPENGLUE); - YY_BREAK -case 167: -YY_RULE_SETUP -#line 282 "./pl.l" -return(CLABEL); - YY_BREAK -case 168: -YY_RULE_SETUP -#line 284 "./pl.l" -return(CHARREPEAT); - YY_BREAK -case 169: -YY_RULE_SETUP -#line 287 "./pl.l" -{yylval.yint = O_FILLL; return(GLUEORDER); } - YY_BREAK -case 170: -YY_RULE_SETUP -#line 288 "./pl.l" -{yylval.yint = O_FILL; return(GLUEORDER); } - YY_BREAK -case 171: -YY_RULE_SETUP -#line 289 "./pl.l" -{yylval.yint = O_FIL; return(GLUEORDER); } - YY_BREAK -case 172: -YY_RULE_SETUP -#line 290 "./pl.l" -{yylval.yint = O_FI; return(GLUEORDER); } - YY_BREAK -case 173: -YY_RULE_SETUP -#line 291 "./pl.l" -{yylval.yint = O_UNIT; return(GLUEORDER); } - YY_BREAK -case 174: -YY_RULE_SETUP -#line 293 "./pl.l" -{yylval.yint = K_NORMAL; return(GLUEKIND); } - YY_BREAK -case 175: -YY_RULE_SETUP -#line 294 "./pl.l" -{yylval.yint = K_ALEADERS; return(GLUEKIND); } - YY_BREAK -case 176: -YY_RULE_SETUP -#line 295 "./pl.l" -{yylval.yint = K_CLEADERS; return(GLUEKIND); } - YY_BREAK -case 177: -YY_RULE_SETUP -#line 296 "./pl.l" -{yylval.yint = K_XLEADERS; return(GLUEKIND); } - YY_BREAK -case 178: -YY_RULE_SETUP -#line 298 "./pl.l" -{yylval.yint = C_SECWD; return(CHARMEASURE); } - YY_BREAK -case 179: -YY_RULE_SETUP -#line 299 "./pl.l" -{yylval.yint = C_SECHT; return(CHARMEASURE); } - YY_BREAK -case 180: -YY_RULE_SETUP -#line 300 "./pl.l" -{yylval.yint = C_SECDP; return(CHARMEASURE); } - YY_BREAK -case 181: -YY_RULE_SETUP -#line 301 "./pl.l" -{yylval.yint = C_SECIC; return(CHARMEASURE); } - YY_BREAK -case 182: -YY_RULE_SETUP -#line 303 "./pl.l" -{yylval.yint = C_P_TOPAXIS; return(CHARMEASURE); } - YY_BREAK -case 183: -YY_RULE_SETUP -#line 304 "./pl.l" -{yylval.yint = C_P_TOPAXISBIs; return(CHARMEASURE); } - YY_BREAK -case 184: -YY_RULE_SETUP -#line 305 "./pl.l" -{yylval.yint = C_P_BOTAXIS; return(CHARMEASURE); } - YY_BREAK -case 185: -YY_RULE_SETUP -#line 306 "./pl.l" -{yylval.yint = C_P_BOTAXISBIS; return(CHARMEASURE); } - YY_BREAK -case 186: -YY_RULE_SETUP -#line 307 "./pl.l" -{yylval.yint = C_P_MIDHOR; return(CHARMEASURE); } - YY_BREAK -case 187: -YY_RULE_SETUP -#line 308 "./pl.l" -{yylval.yint = C_P_MIDVERT; return(CHARMEASURE); } - YY_BREAK -case 188: -YY_RULE_SETUP -#line 309 "./pl.l" -{yylval.yint = C_P_BASESLANT; return(CHARMEASURE); } - YY_BREAK -case 189: -YY_RULE_SETUP -#line 311 "./pl.l" -{yylval.yint = C_S_TOPAXIS; return(CHARMEASURE); } - YY_BREAK -case 190: -YY_RULE_SETUP -#line 312 "./pl.l" -{yylval.yint = C_S_TOPAXISBIs; return(CHARMEASURE); } - YY_BREAK -case 191: -YY_RULE_SETUP -#line 313 "./pl.l" -{yylval.yint = C_S_BOTAXIS; return(CHARMEASURE); } - YY_BREAK -case 192: -YY_RULE_SETUP -#line 314 "./pl.l" -{yylval.yint = C_S_BOTAXISBIS; return(CHARMEASURE); } - YY_BREAK -case 193: -YY_RULE_SETUP -#line 315 "./pl.l" -{yylval.yint = C_S_MIDHOR; return(CHARMEASURE); } - YY_BREAK -case 194: -YY_RULE_SETUP -#line 316 "./pl.l" -{yylval.yint = C_S_MIDVERT; return(CHARMEASURE); } - YY_BREAK -case 195: -YY_RULE_SETUP -#line 317 "./pl.l" -{yylval.yint = C_S_BASESLANT; return(CHARMEASURE); } - YY_BREAK -case 196: -YY_RULE_SETUP -#line 319 "./pl.l" -{lex_error_1("unexpected character (%x); ignored", - yytext[0]);} - YY_BREAK -case 197: -YY_RULE_SETUP -#line 321 "./pl.l" -ECHO; - YY_BREAK -#line 2284 "lex.yy.c" - case YY_STATE_EOF(INITIAL): - yyterminate(); - - case YY_END_OF_BUFFER: - { - /* Amount of text matched not including the EOB char. */ - int yy_amount_of_matched_text = (int) (yy_cp - (yytext_ptr)) - 1; - - /* Undo the effects of YY_DO_BEFORE_ACTION. */ - *yy_cp = (yy_hold_char); - YY_RESTORE_YY_MORE_OFFSET - - if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW ) - { - /* We're scanning a new file or input source. It's - * possible that this happened because the user - * just pointed yyin at a new source and called - * yylex(). If so, then we have to assure - * consistency between YY_CURRENT_BUFFER and our - * globals. Here is the right place to do so, because - * this is the first action (other than possibly a - * back-up) that will match for the new input source. - */ - (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; - YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin; - YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL; - } - - /* Note that here we test for yy_c_buf_p "<=" to the position - * of the first EOB in the buffer, since yy_c_buf_p will - * already have been incremented past the NUL character - * (since all states make transitions on EOB to the - * end-of-buffer state). Contrast this with the test - * in input(). - */ - if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] ) - { /* This was really a NUL. */ - yy_state_type yy_next_state; - - (yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text; - - yy_current_state = yy_get_previous_state( ); - - /* Okay, we're now positioned to make the NUL - * transition. We couldn't have - * yy_get_previous_state() go ahead and do it - * for us because it doesn't know how to deal - * with the possibility of jamming (and we don't - * want to build jamming into it because then it - * will run more slowly). - */ - - yy_next_state = yy_try_NUL_trans( yy_current_state ); - - yy_bp = (yytext_ptr) + YY_MORE_ADJ; - - if ( yy_next_state ) - { - /* Consume the NUL. */ - yy_cp = ++(yy_c_buf_p); - yy_current_state = yy_next_state; - goto yy_match; - } - - else - { - yy_cp = (yy_c_buf_p); - goto yy_find_action; - } - } - - else switch ( yy_get_next_buffer( ) ) - { - case EOB_ACT_END_OF_FILE: - { - (yy_did_buffer_switch_on_eof) = 0; - - if ( yywrap( ) ) - { - /* Note: because we've taken care in - * yy_get_next_buffer() to have set up - * yytext, we can now set up - * yy_c_buf_p so that if some total - * hoser (like flex itself) wants to - * call the scanner after we return the - * YY_NULL, it'll still work - another - * YY_NULL will get returned. - */ - (yy_c_buf_p) = (yytext_ptr) + YY_MORE_ADJ; - - yy_act = YY_STATE_EOF(YY_START); - goto do_action; - } - - else - { - if ( ! (yy_did_buffer_switch_on_eof) ) - YY_NEW_FILE; - } - break; - } - - case EOB_ACT_CONTINUE_SCAN: - (yy_c_buf_p) = - (yytext_ptr) + yy_amount_of_matched_text; - - yy_current_state = yy_get_previous_state( ); - - yy_cp = (yy_c_buf_p); - yy_bp = (yytext_ptr) + YY_MORE_ADJ; - goto yy_match; - - case EOB_ACT_LAST_MATCH: - (yy_c_buf_p) = - &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)]; - - yy_current_state = yy_get_previous_state( ); - - yy_cp = (yy_c_buf_p); - yy_bp = (yytext_ptr) + YY_MORE_ADJ; - goto yy_find_action; - } - break; - } - - default: - YY_FATAL_ERROR( - "fatal flex scanner internal error--no action found" ); - } /* end of action switch */ - } /* end of scanning one token */ -} /* end of yylex */ - -/* yy_get_next_buffer - try to read in a new buffer - * - * Returns a code representing an action: - * EOB_ACT_LAST_MATCH - - * EOB_ACT_CONTINUE_SCAN - continue scanning from current position - * EOB_ACT_END_OF_FILE - end of file - */ -static int yy_get_next_buffer (void) -{ - register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf; - register char *source = (yytext_ptr); - register int number_to_move, i; - int ret_val; - - if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] ) - YY_FATAL_ERROR( - "fatal flex scanner internal error--end of buffer missed" ); - - if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 ) - { /* Don't try to fill the buffer, so this is an EOF. */ - if ( (yy_c_buf_p) - (yytext_ptr) - YY_MORE_ADJ == 1 ) - { - /* We matched a single character, the EOB, so - * treat this as a final EOF. - */ - return EOB_ACT_END_OF_FILE; - } - - else - { - /* We matched some text prior to the EOB, first - * process it. - */ - return EOB_ACT_LAST_MATCH; - } - } - - /* Try to read more data. */ - - /* First move last chars to start of buffer. */ - number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr)) - 1; - - for ( i = 0; i < number_to_move; ++i ) - *(dest++) = *(source++); - - if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING ) - /* don't do the read, it's not guaranteed to return an EOF, - * just force an EOF - */ - YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0; - - else - { - size_t num_to_read = - YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1; - - while ( num_to_read <= 0 ) - { /* Not enough room in the buffer - grow it. */ - - YY_FATAL_ERROR( -"input buffer overflow, can't enlarge buffer because scanner uses REJECT" ); - - } - - if ( num_to_read > YY_READ_BUF_SIZE ) - num_to_read = YY_READ_BUF_SIZE; - - /* Read in more data. */ - YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]), - (yy_n_chars), num_to_read ); - - YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); - } - - if ( (yy_n_chars) == 0 ) - { - if ( number_to_move == YY_MORE_ADJ ) - { - ret_val = EOB_ACT_END_OF_FILE; - yyrestart(yyin ); - } - - else - { - ret_val = EOB_ACT_LAST_MATCH; - YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = - YY_BUFFER_EOF_PENDING; - } - } - - else - ret_val = EOB_ACT_CONTINUE_SCAN; - - (yy_n_chars) += number_to_move; - YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR; - YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR; - - (yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0]; - - return ret_val; -} - -/* yy_get_previous_state - get the state just before the EOB char was reached */ - - static yy_state_type yy_get_previous_state (void) -{ - register yy_state_type yy_current_state; - register char *yy_cp; - - yy_current_state = (yy_start); - - (yy_state_ptr) = (yy_state_buf); - *(yy_state_ptr)++ = yy_current_state; - - for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp ) - { - register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1); - while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) - { - yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 783 ) - yy_c = yy_meta[(unsigned int) yy_c]; - } - yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; - *(yy_state_ptr)++ = yy_current_state; - } - - return yy_current_state; -} - -/* yy_try_NUL_trans - try to make a transition on the NUL character - * - * synopsis - * next_state = yy_try_NUL_trans( current_state ); - */ - static yy_state_type yy_try_NUL_trans (yy_state_type yy_current_state ) -{ - register int yy_is_jam; - - register YY_CHAR yy_c = 1; - while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) - { - yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 783 ) - yy_c = yy_meta[(unsigned int) yy_c]; - } - yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; - yy_is_jam = (yy_current_state == 782); - if ( ! yy_is_jam ) - *(yy_state_ptr)++ = yy_current_state; - - return yy_is_jam ? 0 : yy_current_state; -} - - static void yyunput (int c, register char * yy_bp ) -{ - register char *yy_cp; - - yy_cp = (yy_c_buf_p); - - /* undo effects of setting up yytext */ - *yy_cp = (yy_hold_char); - - if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 ) - { /* need to shift things up to make room */ - /* +2 for EOB chars. */ - register int number_to_move = (yy_n_chars) + 2; - register char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[ - YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2]; - register char *source = - &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]; - - while ( source > YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) - *--dest = *--source; - - yy_cp += (int) (dest - source); - yy_bp += (int) (dest - source); - YY_CURRENT_BUFFER_LVALUE->yy_n_chars = - (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_buf_size; - - if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 ) - YY_FATAL_ERROR( "flex scanner push-back overflow" ); - } - - *--yy_cp = (char) c; - - if ( c == '\n' ){ - --yylineno; - } - - (yytext_ptr) = yy_bp; - (yy_hold_char) = *yy_cp; - (yy_c_buf_p) = yy_cp; -} - -#ifndef YY_NO_INPUT -#ifdef __cplusplus - static int yyinput (void) -#else - static int input (void) -#endif - -{ - int c; - - *(yy_c_buf_p) = (yy_hold_char); - - if ( *(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR ) - { - /* yy_c_buf_p now points to the character we want to return. - * If this occurs *before* the EOB characters, then it's a - * valid NUL; if not, then we've hit the end of the buffer. - */ - if ( (yy_c_buf_p) < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] ) - /* This was really a NUL. */ - *(yy_c_buf_p) = '\0'; - - else - { /* need more input */ - int offset = (yy_c_buf_p) - (yytext_ptr); - ++(yy_c_buf_p); - - switch ( yy_get_next_buffer( ) ) - { - case EOB_ACT_LAST_MATCH: - /* This happens because yy_g_n_b() - * sees that we've accumulated a - * token and flags that we need to - * try matching the token before - * proceeding. But for input(), - * there's no matching to consider. - * So convert the EOB_ACT_LAST_MATCH - * to EOB_ACT_END_OF_FILE. - */ - - /* Reset buffer status. */ - yyrestart(yyin ); - - /*FALLTHROUGH*/ - - case EOB_ACT_END_OF_FILE: - { - if ( yywrap( ) ) - return EOF; - - if ( ! (yy_did_buffer_switch_on_eof) ) - YY_NEW_FILE; -#ifdef __cplusplus - return yyinput(); -#else - return input(); -#endif - } - - case EOB_ACT_CONTINUE_SCAN: - (yy_c_buf_p) = (yytext_ptr) + offset; - break; - } - } - } - - c = *(unsigned char *) (yy_c_buf_p); /* cast for 8-bit char's */ - *(yy_c_buf_p) = '\0'; /* preserve yytext */ - (yy_hold_char) = *++(yy_c_buf_p); - - if ( c == '\n' ) - - yylineno++; -; - - return c; -} -#endif /* ifndef YY_NO_INPUT */ - -/** Immediately switch to a different input stream. - * @param input_file A readable stream. - * - * @note This function does not reset the start condition to @c INITIAL . - */ - void yyrestart (FILE * input_file ) -{ - - if ( ! YY_CURRENT_BUFFER ){ - yyensure_buffer_stack (); - YY_CURRENT_BUFFER_LVALUE = - yy_create_buffer(yyin,YY_BUF_SIZE ); - } - - yy_init_buffer(YY_CURRENT_BUFFER,input_file ); - yy_load_buffer_state( ); -} - -/** Switch to a different input buffer. - * @param new_buffer The new input buffer. - * - */ - void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer ) -{ - - /* TODO. We should be able to replace this entire function body - * with - * yypop_buffer_state(); - * yypush_buffer_state(new_buffer); - */ - yyensure_buffer_stack (); - if ( YY_CURRENT_BUFFER == new_buffer ) - return; - - if ( YY_CURRENT_BUFFER ) - { - /* Flush out information for old buffer. */ - *(yy_c_buf_p) = (yy_hold_char); - YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p); - YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); - } - - YY_CURRENT_BUFFER_LVALUE = new_buffer; - yy_load_buffer_state( ); - - /* We don't actually know whether we did this switch during - * EOF (yywrap()) processing, but the only time this flag - * is looked at is after yywrap() is called, so it's safe - * to go ahead and always set it. - */ - (yy_did_buffer_switch_on_eof) = 1; -} - -static void yy_load_buffer_state (void) -{ - (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; - (yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos; - yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file; - (yy_hold_char) = *(yy_c_buf_p); -} - -/** Allocate and initialize an input buffer state. - * @param file A readable stream. - * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE. - * - * @return the allocated buffer state. - */ - YY_BUFFER_STATE yy_create_buffer (FILE * file, int size ) -{ - YY_BUFFER_STATE b; - - b = (YY_BUFFER_STATE) yyalloc(sizeof( struct yy_buffer_state ) ); - if ( ! b ) - YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); - - b->yy_buf_size = size; - - /* yy_ch_buf has to be 2 characters longer than the size given because - * we need to put in 2 end-of-buffer characters. - */ - b->yy_ch_buf = (char *) yyalloc(b->yy_buf_size + 2 ); - if ( ! b->yy_ch_buf ) - YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); - - b->yy_is_our_buffer = 1; - - yy_init_buffer(b,file ); - - return b; -} - -/** Destroy the buffer. - * @param b a buffer created with yy_create_buffer() - * - */ - void yy_delete_buffer (YY_BUFFER_STATE b ) -{ - - if ( ! b ) - return; - - if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */ - YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0; - - if ( b->yy_is_our_buffer ) - yyfree((void *) b->yy_ch_buf ); - - yyfree((void *) b ); -} - -#ifndef __cplusplus -extern int isatty (int ); -#endif /* __cplusplus */ - -/* Initializes or reinitializes a buffer. - * This function is sometimes called more than once on the same buffer, - * such as during a yyrestart() or at EOF. - */ - static void yy_init_buffer (YY_BUFFER_STATE b, FILE * file ) - -{ - int oerrno = errno; - - yy_flush_buffer(b ); - - b->yy_input_file = file; - b->yy_fill_buffer = 1; - - /* If b is the current buffer, then yy_init_buffer was _probably_ - * called from yyrestart() or through yy_get_next_buffer. - * In that case, we don't want to reset the lineno or column. - */ - if (b != YY_CURRENT_BUFFER){ - b->yy_bs_lineno = 1; - b->yy_bs_column = 0; - } - - b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0; - - errno = oerrno; -} - -/** Discard all buffered characters. On the next scan, YY_INPUT will be called. - * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER. - * - */ - void yy_flush_buffer (YY_BUFFER_STATE b ) -{ - if ( ! b ) - return; - - b->yy_n_chars = 0; - - /* We always need two end-of-buffer characters. The first causes - * a transition to the end-of-buffer state. The second causes - * a jam in that state. - */ - b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR; - b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR; - - b->yy_buf_pos = &b->yy_ch_buf[0]; - - b->yy_at_bol = 1; - b->yy_buffer_status = YY_BUFFER_NEW; - - if ( b == YY_CURRENT_BUFFER ) - yy_load_buffer_state( ); -} - -/** Pushes the new state onto the stack. The new state becomes - * the current state. This function will allocate the stack - * if necessary. - * @param new_buffer The new state. - * - */ -void yypush_buffer_state (YY_BUFFER_STATE new_buffer ) -{ - if (new_buffer == NULL) - return; - - yyensure_buffer_stack(); - - /* This block is copied from yy_switch_to_buffer. */ - if ( YY_CURRENT_BUFFER ) - { - /* Flush out information for old buffer. */ - *(yy_c_buf_p) = (yy_hold_char); - YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p); - YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); - } - - /* Only push if top exists. Otherwise, replace top. */ - if (YY_CURRENT_BUFFER) - (yy_buffer_stack_top)++; - YY_CURRENT_BUFFER_LVALUE = new_buffer; - - /* copied from yy_switch_to_buffer. */ - yy_load_buffer_state( ); - (yy_did_buffer_switch_on_eof) = 1; -} - -/** Removes and deletes the top of the stack, if present. - * The next element becomes the new top. - * - */ -void yypop_buffer_state (void) -{ - if (!YY_CURRENT_BUFFER) - return; - - yy_delete_buffer(YY_CURRENT_BUFFER ); - YY_CURRENT_BUFFER_LVALUE = NULL; - if ((yy_buffer_stack_top) > 0) - --(yy_buffer_stack_top); - - if (YY_CURRENT_BUFFER) { - yy_load_buffer_state( ); - (yy_did_buffer_switch_on_eof) = 1; - } -} - -/* Allocates the stack if it does not exist. - * Guarantees space for at least one push. - */ -static void yyensure_buffer_stack (void) -{ - int num_to_alloc; - - if (!(yy_buffer_stack)) { - - /* First allocation is just for 2 elements, since we don't know if this - * scanner will even need a stack. We use 2 instead of 1 to avoid an - * immediate realloc on the next call. - */ - num_to_alloc = 1; - (yy_buffer_stack) = (struct yy_buffer_state**)yyalloc - (num_to_alloc * sizeof(struct yy_buffer_state*) - ); - - memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*)); - - (yy_buffer_stack_max) = num_to_alloc; - (yy_buffer_stack_top) = 0; - return; - } - - if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){ - - /* Increase the buffer to prepare for a possible push. */ - int grow_size = 8 /* arbitrary grow size */; - - num_to_alloc = (yy_buffer_stack_max) + grow_size; - (yy_buffer_stack) = (struct yy_buffer_state**)yyrealloc - ((yy_buffer_stack), - num_to_alloc * sizeof(struct yy_buffer_state*) - ); - - /* zero only the new slots.*/ - memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*)); - (yy_buffer_stack_max) = num_to_alloc; - } -} - -/** Setup the input buffer state to scan directly from a user-specified character buffer. - * @param base the character buffer - * @param size the size in bytes of the character buffer - * - * @return the newly allocated buffer state object. - */ -YY_BUFFER_STATE yy_scan_buffer (char * base, yy_size_t size ) -{ - YY_BUFFER_STATE b; - - if ( size < 2 || - base[size-2] != YY_END_OF_BUFFER_CHAR || - base[size-1] != YY_END_OF_BUFFER_CHAR ) - /* They forgot to leave room for the EOB's. */ - return 0; - - b = (YY_BUFFER_STATE) yyalloc(sizeof( struct yy_buffer_state ) ); - if ( ! b ) - YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" ); - - b->yy_buf_size = size - 2; /* "- 2" to take care of EOB's */ - b->yy_buf_pos = b->yy_ch_buf = base; - b->yy_is_our_buffer = 0; - b->yy_input_file = 0; - b->yy_n_chars = b->yy_buf_size; - b->yy_is_interactive = 0; - b->yy_at_bol = 1; - b->yy_fill_buffer = 0; - b->yy_buffer_status = YY_BUFFER_NEW; - - yy_switch_to_buffer(b ); - - return b; -} - -/** Setup the input buffer state to scan a string. The next call to yylex() will - * scan from a @e copy of @a str. - * @param str a NUL-terminated string to scan - * - * @return the newly allocated buffer state object. - * @note If you want to scan bytes that may contain NUL values, then use - * yy_scan_bytes() instead. - */ -YY_BUFFER_STATE yy_scan_string (yyconst char * yy_str ) -{ - - return yy_scan_bytes(yy_str,strlen(yy_str) ); -} - -/** Setup the input buffer state to scan the given bytes. The next call to yylex() will - * scan from a @e copy of @a bytes. - * @param bytes the byte buffer to scan - * @param len the number of bytes in the buffer pointed to by @a bytes. - * - * @return the newly allocated buffer state object. - */ -YY_BUFFER_STATE yy_scan_bytes (yyconst char * bytes, int len ) -{ - YY_BUFFER_STATE b; - char *buf; - yy_size_t n; - int i; - - /* Get memory for full buffer, including space for trailing EOB's. */ - n = len + 2; - buf = (char *) yyalloc(n ); - if ( ! buf ) - YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" ); - - for ( i = 0; i < len; ++i ) - buf[i] = bytes[i]; - - buf[len] = buf[len+1] = YY_END_OF_BUFFER_CHAR; - - b = yy_scan_buffer(buf,n ); - if ( ! b ) - YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" ); - - /* It's okay to grow etc. this buffer, and we should throw it - * away when we're done. - */ - b->yy_is_our_buffer = 1; - - return b; -} - -#ifndef YY_EXIT_FAILURE -#define YY_EXIT_FAILURE 2 -#endif - -static void yy_fatal_error (yyconst char* msg ) -{ - (void) fprintf( stderr, "%s\n", msg ); - exit( YY_EXIT_FAILURE ); -} - -/* Redefine yyless() so it works in section 3 code. */ - -#undef yyless -#define yyless(n) \ - do \ - { \ - /* Undo effects of setting up yytext. */ \ - int yyless_macro_arg = (n); \ - YY_LESS_LINENO(yyless_macro_arg);\ - yytext[yyleng] = (yy_hold_char); \ - (yy_c_buf_p) = yytext + yyless_macro_arg; \ - (yy_hold_char) = *(yy_c_buf_p); \ - *(yy_c_buf_p) = '\0'; \ - yyleng = yyless_macro_arg; \ - } \ - while ( 0 ) - -/* Accessor methods (get/set functions) to struct members. */ - -/** Get the current line number. - * - */ -int yyget_lineno (void) -{ - - return yylineno; -} - -/** Get the input stream. - * - */ -FILE *yyget_in (void) -{ - return yyin; -} - -/** Get the output stream. - * - */ -FILE *yyget_out (void) -{ - return yyout; -} - -/** Get the length of the current token. - * - */ -int yyget_leng (void) -{ - return yyleng; -} - -/** Get the current token. - * - */ - -char *yyget_text (void) -{ - return yytext; -} - -/** Set the current line number. - * @param line_number - * - */ -void yyset_lineno (int line_number ) -{ - - yylineno = line_number; -} - -/** Set the input stream. This does not discard the current - * input buffer. - * @param in_str A readable stream. - * - * @see yy_switch_to_buffer - */ -void yyset_in (FILE * in_str ) -{ - yyin = in_str ; -} - -void yyset_out (FILE * out_str ) -{ - yyout = out_str ; -} - -int yyget_debug (void) -{ - return yy_flex_debug; -} - -void yyset_debug (int bdebug ) -{ - yy_flex_debug = bdebug ; -} - -/* yylex_destroy is for both reentrant and non-reentrant scanners. */ -int yylex_destroy (void) -{ - - /* Pop the buffer stack, destroying each element. */ - while(YY_CURRENT_BUFFER){ - yy_delete_buffer(YY_CURRENT_BUFFER ); - YY_CURRENT_BUFFER_LVALUE = NULL; - yypop_buffer_state(); - } - - /* Destroy the stack itself. */ - yyfree((yy_buffer_stack) ); - (yy_buffer_stack) = NULL; - - yyfree ( (yy_state_buf) ); - - return 0; -} - -/* - * Internal utility routines. - */ - -#ifndef yytext_ptr -static void yy_flex_strncpy (char* s1, yyconst char * s2, int n ) -{ - register int i; - for ( i = 0; i < n; ++i ) - s1[i] = s2[i]; -} -#endif - -#ifdef YY_NEED_STRLEN -static int yy_flex_strlen (yyconst char * s ) -{ - register int n; - for ( n = 0; s[n]; ++n ) - ; - - return n; -} -#endif - -void *yyalloc (yy_size_t size ) -{ - return (void *) malloc( size ); -} - -void *yyrealloc (void * ptr, yy_size_t size ) -{ - /* The cast to (char *) in the following accommodates both - * implementations that use char* generic pointers, and those - * that use void* generic pointers. It works with the latter - * because both ANSI C and C++ allow castless assignment from - * any pointer type to void*, and deal with argument conversions - * as though doing an assignment. - */ - return (void *) realloc( (char *) ptr, size ); -} - -void yyfree (void * ptr ) -{ - free( (char *) ptr ); /* see yyrealloc() for (char *) cast */ -} - -#define YYTABLES_NAME "yytables" - -#undef YY_NEW_FILE -#undef YY_FLUSH_BUFFER -#undef yy_set_bol -#undef yy_new_buffer -#undef yy_set_interactive -#undef yytext_ptr -#undef YY_DO_BEFORE_ACTION - -#ifdef YY_DECL_IS_OURS -#undef YY_DECL_IS_OURS -#undef YY_DECL -#endif -#line 321 "./pl.l" - - - -/* added by Thomas Esser, suggested by Olaf Weber */ -#ifdef yywrap -#undef yywrap -#endif - -int -yywrap (void) -{ return 1; } - -void -scan_int(unsigned base) -{ - register unsigned j, q = 0x10000 / base, c0=0, c1=0, i=1; - - if ((baseBASE_MAX)) - internal_error_1("scan_int (base=%d)", base); - while ((yytext[i]==' ') || (yytext[i]=='\t')) { - yytext[i] = ' '; - i++; - } - for (; i='A') j = j + '0' + 10 - 'A' ; - c0 = base*c0 + (c1 / q); - c1 = base*(c1 % q) + j - '0'; - if (c0 > 0xffff) { - lex_error_s("numeric value (%s) too large; set to 0", yytext); - c0=0; c1=0; break; - } - } - yylval.yint = c0 * 0x10000 + c1; -} - -void -scan_fix(void) -{ - unsigned i=1; - unsigned sign = 1; - unsigned j=0; - unsigned acc=0; - unsigned int_part; - unsigned fraction_digits[7]; - - while ((yytext[i]==' ') || (yytext[i]=='\t') || - (yytext[i]=='+') || (yytext[i]=='-')) { - if (yytext[i]=='\t') yytext[i] = ' '; - if (yytext[i]=='-') sign *= -1; - i++; - } - acc=0; - while ((i=0x800 ) { - lex_error_s("fix value (%s) too large; set to 0", yytext); - yylval.yfix = 0; - return; - } - } - int_part = acc; acc = 0; - if (i < yyleng) { - i++; - while ((i0) {acc = fraction_digits[--j] + acc / 10;} - acc = (acc + 10) / 20; - } - if ((acc > UNITY) && (int_part=2047)) { - lex_error_s("fix value (%s) too large; set to 0", yytext); - yylval.yfix = 0; - return; - } - yylval.yfix = sign * (int_part*UNITY + acc); -} - -void -scan_char(void) -{ - register unsigned i=1; - - while ((yytext[i]==' ') || (yytext[i]=='\t')) i++; - if ((yytext[i]<041) || (yytext[i]>0176) || - (yytext[i]=='(') || (yytext[i]==')')) { - lex_error_1("C value (H %X) must be ASCII (not paren); " - "set to 'A'", yytext[i]); - yylval.yint = 'A'; - } else yylval.yint = yytext[i]; -} - -void -scan_string(char *attribute, unsigned keep, unsigned length) -{ - register unsigned c, saved_ptr = 0, paren_level = 0; - unsigned error_msg = FALSE; - - if ((keepKEEP_MAX)) - internal_error_1("scan_string (keep=%d)", keep); - while (((c = input()) != EOF) && - ((c == ' ') || (c == '\t') || (c == '\n'))) { - if (c == '\n') {line_number++;} - } - if (c==EOF) fatal_error_s("EOF while scanning %s", attribute); - while ((c != EOF) && - ((c != ')') || (paren_level>0))) { - if (c==')') { - paren_level--; - if (keep==KEEP_CONVERT) { - lex_error_s_1("%s character (H %X) converted to slash", - attribute, c); - c = '/'; - } - } else if (c=='(') { - paren_level++; - if (keep==KEEP_CONVERT) { - lex_error_s_1("%s character (H %X) converted to slash", - attribute, c); - c = '/'; - } - } else if ((c<' ') || (c>='~')) { - if (c=='\n') line_number++; - if (keep==KEEP_CONVERT) { - lex_error_s_1("%s character (H %X) converted to blank", - attribute, c); - c = ' '; - } - } - if (saved_ptr<(MAX_PTR-3)) - saved_text[saved_ptr++] = c; - else if (error_msg == FALSE) { - lex_error_s_1("%s string longer than %d characters; truncating", - attribute, MAX_PTR); - error_msg = TRUE; - } - c = input(); - } - if (c==EOF) fatal_error_s("EOF while scanning %s", attribute); - unput(')'); - saved_text[saved_ptr++] = '\0'; - if (keep!=KEEP_NONE) { - if ((length != 0) && (strlen(saved_text)>length)) { - lex_error_s_1("%s string limited to %d characters; truncated", - attribute, length); - saved_text[length] = '\0'; - } - yylval.ystring = xstrdup(saved_text); - } else { - yylval.ystring = NULL; - } -} - -void -scan_hex_string(void) -{ - register unsigned i=10; - - while ((yytext[i]==' ') || (yytext[i]=='\t')) i++; - yylval.ystring = xstrdup(yytext+i); -} - diff --git a/Build/source/texk/web2c/omegafonts/pl-lexer.l b/Build/source/texk/web2c/omegafonts/pl-lexer.l new file mode 100644 index 00000000000..beed1ace77f --- /dev/null +++ b/Build/source/texk/web2c/omegafonts/pl-lexer.l @@ -0,0 +1,482 @@ +%{ +/* pl.l: Lexical analysis of property list files. + +This file is part of Omega, +which is based on the web2c distribution of TeX, + +Copyright (c) 1994--2001 John Plaice and Yannis Haralambous +Copyright (c) 2002 Roozbeh Pournader + +Omega 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 of the License, or +(at your option) any later version. + +Omega 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 Omega; if not, write to the Free Software Foundation, Inc., +59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. + +*/ + +#include +#ifdef WIN32 +#include +#endif +#include "parser.h" +#include "kpathsea/types.h" +#include "y_tab.h" +#include "manifests.h" +#include "error_routines.h" +#ifdef __cplusplus +#define yyinput input +#endif + +int line_number = 1; +extern YYSTYPE yylval; + +/* POTENTIAL BUG: saved_text could be run over; should check */ +#define MAX_PTR 10000 +char saved_text[MAX_PTR]; + +extern void scan_int(unsigned); +extern void scan_char(void); +extern void scan_fix(void); +extern void scan_string(char *, unsigned, unsigned); +extern void scan_hex_string(); + +/* from kpathsea, but avoid including kpathsea header files */ +extern char *xstrdup (const char *); + +#define KEEP_MIN 0 +#define KEEP_NONE 0 +#define KEEP_ALL 1 +#define KEEP_CONVERT 2 +#define KEEP_MAX 2 + +#define BASE_MIN 2 +#define BASE_MAX 16 + +%} + +/* For Solaris's lex, to increase tables sizes --RP */ +/* Space before number keeps ancient flex happy. */ +%e 4000 +%p 7000 +%n 1000 + +ws [ \t]+ +hexnumber H{ws}[A-F0-9]+ +octnumber O{ws}[0-7]+ +decnumber D{ws}[0-9]+ +realnumber R[ \t+-]+[0-9]*("."[0-9]*){0,1} +charnumber C{ws}. +hexstring ([A-F0-9][A-F0-9])* + +%% + +{ws} {} +\n {line_number++; } + +"(" return(LEFT); +")" return(RIGHT); + +{octnumber} {scan_int(8); return(NUMBER); } +{decnumber} {scan_int(10); return(NUMBER); } +{hexnumber} {scan_int(16); return(NUMBER); } +{charnumber} {scan_char(); return(NUMBER); } +{realnumber} {scan_fix(); return(FIX); } + +CODINGSCHEME {scan_string("CODINGSCHEME", KEEP_CONVERT, LEN_CODING_SCHEME); + return(CODINGSCHEME); } +FAMILY {scan_string("FAMILY", KEEP_CONVERT, LEN_FAMILY); + return(FAMILY); } +VTITLE {scan_string("VTITLE", KEEP_ALL, LEN_VTITLE); + return(VTITLE); } +FONTNAME {scan_string("FONTNAME", KEEP_ALL, LEN_FONT_NAME); + return(FONTNAME); } +FONTAREA {scan_string("FONTAREA", KEEP_ALL, LEN_FONT_AREA); + return(FONTAREA); } +SPECIAL {scan_string("SPECIAL", KEEP_ALL, 0); + return(SPECIAL); } +COMMENT {scan_string("COMMENT", KEEP_NONE, 0); + return(COMMENT); } + +SPECIALHEX{ws}{hexstring} {scan_hex_string(); return(SPECIALHEX); } + + +SEVENBITSAFEFLAG{ws}TRUE {yylval.yint=1; return(SEVENBITSAFEFLAG); } +SEVENBITSAFEFLAG{ws}FALSE {yylval.yint=0; return(SEVENBITSAFEFLAG); } + +CHECKSUM return(CHECKSUM); +DESIGNSIZE return(DESIGNSIZE); +DESIGNUNITS return(DESIGNUNITS); +FACE return(FACE); +HEADER return(HEADER); +BOUNDARYCHAR return(BOUNDARYCHAR); +FONTDIMEN return(FONTDIMEN); +LIGTABLE return(LIGTABLE); +CHARACTER return(CHARACTER); + +PARAMETER return(PARAMETER); +LABEL return(LABEL); +KRN return(KRN); +STOP return(STOP); +SKIP return(SKIP); +NEXTLARGER return(NEXTLARGER); +VARCHAR return(VARCHAR); + +CHARWD {yylval.yint = C_WD; return(CHARMEASURE); } +CHARHT {yylval.yint = C_HT; return(CHARMEASURE); } +CHARDP {yylval.yint = C_DP; return(CHARMEASURE); } +CHARIC {yylval.yint = C_IC; return(CHARMEASURE); } + +TOP {yylval.yint = E_TOP; return(EXTEN); } +MID {yylval.yint = E_MID; return(EXTEN); } +BOT {yylval.yint = E_BOT; return(EXTEN); } +REP {yylval.yint = E_REP; return(EXTEN); } + +LIG {yylval.yint = L_0; return(LIG); } +"LIG/" {yylval.yint = L_B; return(LIG); } +"/LIG" {yylval.yint = L_A; return(LIG); } +"/LIG/" {yylval.yint = L_AB; return(LIG); } +"LIG/>" {yylval.yint = L_Bx; return(LIG); } +"/LIG>" {yylval.yint = L_Ax; return(LIG); } +"/LIG/>" {yylval.yint = L_ABx; return(LIG); } +"/LIG/>>" {yylval.yint = L_ABxx; return(LIG); } + +F{ws}MRR {yylval.yint = F_MRR; return(NUMBER); } +F{ws}MIR {yylval.yint = F_MIR; return(NUMBER); } +F{ws}BRR {yylval.yint = F_BRR; return(NUMBER); } +F{ws}BIR {yylval.yint = F_BIR; return(NUMBER); } +F{ws}LRR {yylval.yint = F_LRR; return(NUMBER); } +F{ws}LIR {yylval.yint = F_LIR; return(NUMBER); } +F{ws}MRC {yylval.yint = F_MRC; return(NUMBER); } +F{ws}MIC {yylval.yint = F_MIC; return(NUMBER); } +F{ws}BRC {yylval.yint = F_BRC; return(NUMBER); } +F{ws}BIC {yylval.yint = F_BIC; return(NUMBER); } +F{ws}LRC {yylval.yint = F_LRC; return(NUMBER); } +F{ws}LIC {yylval.yint = F_LIC; return(NUMBER); } +F{ws}MRE {yylval.yint = F_MRE; return(NUMBER); } +F{ws}MIE {yylval.yint = F_MIE; return(NUMBER); } +F{ws}BRE {yylval.yint = F_BRE; return(NUMBER); } +F{ws}BIE {yylval.yint = F_BIE; return(NUMBER); } +F{ws}LRE {yylval.yint = F_LRE; return(NUMBER); } +F{ws}LIE {yylval.yint = F_LIE; return(NUMBER); } + +SLANT {yylval.yint = P_SLANT; return(NAMEDPARAMETER); } +SPACE {yylval.yint = P_SPACE; return(NAMEDPARAMETER); } +STRETCH {yylval.yint = P_STRETCH; return(NAMEDPARAMETER); } +SHRINK {yylval.yint = P_SHRINK; return(NAMEDPARAMETER); } +XHEIGHT {yylval.yint = P_XHEIGHT; return(NAMEDPARAMETER); } +QUAD {yylval.yint = P_QUAD; return(NAMEDPARAMETER); } +EXTRASPACE {yylval.yint = P_EXTRASPACE; return(NAMEDPARAMETER); } +NUM1 {yylval.yint = P_NUM1; return(NAMEDPARAMETER); } +NUM2 {yylval.yint = P_NUM2; return(NAMEDPARAMETER); } +NUM3 {yylval.yint = P_NUM3; return(NAMEDPARAMETER); } +DENOM1 {yylval.yint = P_DENOM1; return(NAMEDPARAMETER); } +DENOM2 {yylval.yint = P_DENOM2; return(NAMEDPARAMETER); } +SUP1 {yylval.yint = P_SUP1; return(NAMEDPARAMETER); } +SUP2 {yylval.yint = P_SUP2; return(NAMEDPARAMETER); } +SUP3 {yylval.yint = P_SUP3; return(NAMEDPARAMETER); } +SUB1 {yylval.yint = P_SUB1; return(NAMEDPARAMETER); } +SUB2 {yylval.yint = P_SUB2; return(NAMEDPARAMETER); } +SUPDROP {yylval.yint = P_SUPDROP; return(NAMEDPARAMETER); } +SUBDROP {yylval.yint = P_SUBDROP; return(NAMEDPARAMETER); } +DELIM1 {yylval.yint = P_DELIM1; return(NAMEDPARAMETER); } +DELIM2 {yylval.yint = P_DELIM2; return(NAMEDPARAMETER); } +AXISHEIGHT {yylval.yint = P_AXISHEIGHT; return(NAMEDPARAMETER); } + +DEFAULTRULETHICKNESS {yylval.yint = P_DEFAULTRULETHICKNESS; + return(NAMEDPARAMETER); } +BIGOPSPACING1 {yylval.yint = P_BIGOPSPACING1; return(NAMEDPARAMETER); } +BIGOPSPACING2 {yylval.yint = P_BIGOPSPACING2; return(NAMEDPARAMETER); } +BIGOPSPACING3 {yylval.yint = P_BIGOPSPACING3; return(NAMEDPARAMETER); } +BIGOPSPACING4 {yylval.yint = P_BIGOPSPACING4; return(NAMEDPARAMETER); } +BIGOPSPACING5 {yylval.yint = P_BIGOPSPACING5; return(NAMEDPARAMETER); } + +MAPFONT {return(MAPFONT); } +FONTCHECKSUM {return(FONTCHECKSUM); } +FONTAT {return(FONTAT); } +FONTDSIZE {return(FONTDSIZE); } +MAP {return(MAP); } +SELECTFONT {return(SELECTFONT); } +SETCHAR {return(SETCHAR); } +SETRULE {return(SETRULE); } +PUSH {return(PUSH); } +POP {return(POP); } + +MOVERIGHT {yylval.yint = M_RIGHT; return(MOVE); } +MOVELEFT {yylval.yint = M_LEFT; return(MOVE); } +MOVEUP {yylval.yint = M_UP; return(MOVE); } +MOVEDOWN {yylval.yint = M_DOWN; return(MOVE); } + +OFMLEVEL return(OFMLEVEL); +TOPACCENT {yylval.yint = ACC_TOP; return(ACCENT); } +MIDACCENT {yylval.yint = ACC_MID; return(ACCENT); } +BOTACCENT {yylval.yint = ACC_BOT; return(ACCENT); } + +FONTDIR{ws}TL {yylval.yint = DIR_ORD+DIR_TL; return(FONTDIR);} +FONTDIR{ws}LT {yylval.yint = DIR_ORD+DIR_LT; return(FONTDIR);} +FONTDIR{ws}TR {yylval.yint = DIR_ORD+DIR_TR; return(FONTDIR);} +FONTDIR{ws}LB {yylval.yint = DIR_ORD+DIR_LB; return(FONTDIR);} +FONTDIR{ws}BL {yylval.yint = DIR_ORD+DIR_BL; return(FONTDIR);} +FONTDIR{ws}RT {yylval.yint = DIR_ORD+DIR_RT; return(FONTDIR);} +FONTDIR{ws}BR {yylval.yint = DIR_ORD+DIR_BR; return(FONTDIR);} +FONTDIR{ws}RB {yylval.yint = DIR_ORD+DIR_RB; return(FONTDIR);} +NATURALFONTDIR{ws}TL {yylval.yint = DIR_NAT+DIR_TL; return(FONTDIR);} +NATURALFONTDIR{ws}LT {yylval.yint = DIR_NAT+DIR_LT; return(FONTDIR);} +NATURALFONTDIR{ws}TR {yylval.yint = DIR_NAT+DIR_TR; return(FONTDIR);} +NATURALFONTDIR{ws}LB {yylval.yint = DIR_NAT+DIR_LB; return(FONTDIR);} +NATURALFONTDIR{ws}BL {yylval.yint = DIR_NAT+DIR_BL; return(FONTDIR);} +NATURALFONTDIR{ws}RT {yylval.yint = DIR_NAT+DIR_RT; return(FONTDIR);} +NATURALFONTDIR{ws}BR {yylval.yint = DIR_NAT+DIR_BR; return(FONTDIR);} +NATURALFONTDIR{ws}RB {yylval.yint = DIR_NAT+DIR_RB; return(FONTDIR);} + +FONTIVALUE return(FONTIVALUE); +FONTFVALUE return(FONTFVALUE); +FONTMVALUE return(FONTMVALUE); +FONTPENALTY return(FONTPENALTY); +FONTRULE return(FONTRULE); +FONTGLUE return(FONTGLUE); + +IVALUE return(IVALUE); +FVALUE return(FVALUE); +MVALUE return(MVALUE); +PENALTY return(PENALTY); +RULE return(RULE); +GLUE return(GLUE); + +IVALUEVAL return(IVALUEVAL); +FVALUEVAL return(FVALUEVAL); +MVALUEVAL return(MVALUEVAL); +PENALTYVAL return(PENALTYVAL); + +RULEWD { yylval.yint = RULE_WD; return(RULEMEASURE); } +RULEHT { yylval.yint = RULE_HT; return(RULEMEASURE); } +RULEDP { yylval.yint = RULE_DP; return(RULEMEASURE); } + +GLUEWD return(GLUEWD); +GLUESTRETCH { yylval.yint = GLUE_STRETCH; return(GLUESHRINKSTRETCH); } +GLUESHRINK { yylval.yint = GLUE_SHRINK; return(GLUESHRINKSTRETCH); } + +GLUETYPE return(GLUETYPE); +GLUERULE return(GLUERULE); +GLUECHAR return(GLUECHAR); + +CHARIVALUE return(CHARIVALUE); +CHARFVALUE return(CHARFVALUE); +CHARMVALUE return(CHARMVALUE); +CHARPENALTY return(CHARPENALTY); +CHARRULE return(CHARRULE); +CHARGLUE return(CHARGLUE); + +CKRN return(CKRN); +CGLUE return(CGLUE); +CPENALTY return(CPENALTY); +CPENGLUE return(CPENGLUE); +CLABEL return(CLABEL); + +CHARREPEAT return(CHARREPEAT); + + +FILLL {yylval.yint = O_FILLL; return(GLUEORDER); } +FILL {yylval.yint = O_FILL; return(GLUEORDER); } +FIL {yylval.yint = O_FIL; return(GLUEORDER); } +FI {yylval.yint = O_FI; return(GLUEORDER); } +UNIT {yylval.yint = O_UNIT; return(GLUEORDER); } + +NORMAL {yylval.yint = K_NORMAL; return(GLUEKIND); } +ALEADERS {yylval.yint = K_ALEADERS; return(GLUEKIND); } +CLEADERS {yylval.yint = K_CLEADERS; return(GLUEKIND); } +XLEADERS {yylval.yint = K_XLEADERS; return(GLUEKIND); } + +SECWD {yylval.yint = C_SECWD; return(CHARMEASURE); } +SECHT {yylval.yint = C_SECHT; return(CHARMEASURE); } +SECDP {yylval.yint = C_SECDP; return(CHARMEASURE); } +SECIC {yylval.yint = C_SECIC; return(CHARMEASURE); } + +PRIMTOPAXIS {yylval.yint = C_P_TOPAXIS; return(CHARMEASURE); } +PRIMTOPAXISBIS {yylval.yint = C_P_TOPAXISBIs; return(CHARMEASURE); } +PRIMBOTAXIS {yylval.yint = C_P_BOTAXIS; return(CHARMEASURE); } +PRIMBOTAXISBIS {yylval.yint = C_P_BOTAXISBIS; return(CHARMEASURE); } +PRIMMIDHOR {yylval.yint = C_P_MIDHOR; return(CHARMEASURE); } +PRIMMIDVERT {yylval.yint = C_P_MIDVERT; return(CHARMEASURE); } +PRIMBASESLANT {yylval.yint = C_P_BASESLANT; return(CHARMEASURE); } + +SECTOPAXIS {yylval.yint = C_S_TOPAXIS; return(CHARMEASURE); } +SECTOPAXISBIS {yylval.yint = C_S_TOPAXISBIs; return(CHARMEASURE); } +SECBOTAXIS {yylval.yint = C_S_BOTAXIS; return(CHARMEASURE); } +SECBOTAXISBIS {yylval.yint = C_S_BOTAXISBIS; return(CHARMEASURE); } +SECMIDHOR {yylval.yint = C_S_MIDHOR; return(CHARMEASURE); } +SECMIDVERT {yylval.yint = C_S_MIDVERT; return(CHARMEASURE); } +SECBASESLANT {yylval.yint = C_S_BASESLANT; return(CHARMEASURE); } + +. {lex_error_1("unexpected character (%x); ignored", + yytext[0]);} +%% + +/* added by Thomas Esser, suggested by Olaf Weber */ +#ifdef yywrap +#undef yywrap +#endif + +int +yywrap (void) +{ return 1; } + +void +scan_int(unsigned base) +{ + register unsigned j, q = 0x10000 / base, c0=0, c1=0, i=1; + + if ((baseBASE_MAX)) + internal_error_1("scan_int (base=%d)", base); + while ((yytext[i]==' ') || (yytext[i]=='\t')) { + yytext[i] = ' '; + i++; + } + for (; i='A') j = j + '0' + 10 - 'A' ; + c0 = base*c0 + (c1 / q); + c1 = base*(c1 % q) + j - '0'; + if (c0 > 0xffff) { + lex_error_s("numeric value (%s) too large; set to 0", yytext); + c0=0; c1=0; break; + } + } + yylval.yint = c0 * 0x10000 + c1; +} + +void +scan_fix(void) +{ + unsigned i=1; + unsigned sign = 1; + unsigned j=0; + unsigned acc=0; + unsigned int_part; + unsigned fraction_digits[7]; + + while ((yytext[i]==' ') || (yytext[i]=='\t') || + (yytext[i]=='+') || (yytext[i]=='-')) { + if (yytext[i]=='\t') yytext[i] = ' '; + if (yytext[i]=='-') sign *= -1; + i++; + } + acc=0; + while ((i=0x800 ) { + lex_error_s("fix value (%s) too large; set to 0", yytext); + yylval.yfix = 0; + return; + } + } + int_part = acc; acc = 0; + if (i < yyleng) { + i++; + while ((i0) {acc = fraction_digits[--j] + acc / 10;} + acc = (acc + 10) / 20; + } + if ((acc > UNITY) && (int_part=2047)) { + lex_error_s("fix value (%s) too large; set to 0", yytext); + yylval.yfix = 0; + return; + } + yylval.yfix = sign * (int_part*UNITY + acc); +} + +void +scan_char(void) +{ + register unsigned i=1; + + while ((yytext[i]==' ') || (yytext[i]=='\t')) i++; + if ((yytext[i]<041) || (yytext[i]>0176) || + (yytext[i]=='(') || (yytext[i]==')')) { + lex_error_1("C value (H %X) must be ASCII (not paren); " + "set to 'A'", yytext[i]); + yylval.yint = 'A'; + } else yylval.yint = yytext[i]; +} + +void +scan_string(char *attribute, unsigned keep, unsigned length) +{ + register unsigned c, saved_ptr = 0, paren_level = 0; + unsigned error_msg = FALSE; + + if ((keepKEEP_MAX)) + internal_error_1("scan_string (keep=%d)", keep); + while (((c = input()) != EOF) && + ((c == ' ') || (c == '\t') || (c == '\n'))) { + if (c == '\n') {line_number++;} + } + if (c==EOF) fatal_error_s("EOF while scanning %s", attribute); + while ((c != EOF) && + ((c != ')') || (paren_level>0))) { + if (c==')') { + paren_level--; + if (keep==KEEP_CONVERT) { + lex_error_s_1("%s character (H %X) converted to slash", + attribute, c); + c = '/'; + } + } else if (c=='(') { + paren_level++; + if (keep==KEEP_CONVERT) { + lex_error_s_1("%s character (H %X) converted to slash", + attribute, c); + c = '/'; + } + } else if ((c<' ') || (c>='~')) { + if (c=='\n') line_number++; + if (keep==KEEP_CONVERT) { + lex_error_s_1("%s character (H %X) converted to blank", + attribute, c); + c = ' '; + } + } + if (saved_ptr<(MAX_PTR-3)) + saved_text[saved_ptr++] = c; + else if (error_msg == FALSE) { + lex_error_s_1("%s string longer than %d characters; truncating", + attribute, MAX_PTR); + error_msg = TRUE; + } + c = input(); + } + if (c==EOF) fatal_error_s("EOF while scanning %s", attribute); + unput(')'); + saved_text[saved_ptr++] = '\0'; + if (keep!=KEEP_NONE) { + if ((length != 0) && (strlen(saved_text)>length)) { + lex_error_s_1("%s string limited to %d characters; truncated", + attribute, length); + saved_text[length] = '\0'; + } + yylval.ystring = xstrdup(saved_text); + } else { + yylval.ystring = NULL; + } +} + +void +scan_hex_string(void) +{ + register unsigned i=10; + + while ((yytext[i]==' ') || (yytext[i]=='\t')) i++; + yylval.ystring = xstrdup(yytext+i); +} diff --git a/Build/source/texk/web2c/omegafonts/pl.l b/Build/source/texk/web2c/omegafonts/pl.l deleted file mode 100644 index beed1ace77f..00000000000 --- a/Build/source/texk/web2c/omegafonts/pl.l +++ /dev/null @@ -1,482 +0,0 @@ -%{ -/* pl.l: Lexical analysis of property list files. - -This file is part of Omega, -which is based on the web2c distribution of TeX, - -Copyright (c) 1994--2001 John Plaice and Yannis Haralambous -Copyright (c) 2002 Roozbeh Pournader - -Omega 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 of the License, or -(at your option) any later version. - -Omega 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 Omega; if not, write to the Free Software Foundation, Inc., -59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. - -*/ - -#include -#ifdef WIN32 -#include -#endif -#include "parser.h" -#include "kpathsea/types.h" -#include "y_tab.h" -#include "manifests.h" -#include "error_routines.h" -#ifdef __cplusplus -#define yyinput input -#endif - -int line_number = 1; -extern YYSTYPE yylval; - -/* POTENTIAL BUG: saved_text could be run over; should check */ -#define MAX_PTR 10000 -char saved_text[MAX_PTR]; - -extern void scan_int(unsigned); -extern void scan_char(void); -extern void scan_fix(void); -extern void scan_string(char *, unsigned, unsigned); -extern void scan_hex_string(); - -/* from kpathsea, but avoid including kpathsea header files */ -extern char *xstrdup (const char *); - -#define KEEP_MIN 0 -#define KEEP_NONE 0 -#define KEEP_ALL 1 -#define KEEP_CONVERT 2 -#define KEEP_MAX 2 - -#define BASE_MIN 2 -#define BASE_MAX 16 - -%} - -/* For Solaris's lex, to increase tables sizes --RP */ -/* Space before number keeps ancient flex happy. */ -%e 4000 -%p 7000 -%n 1000 - -ws [ \t]+ -hexnumber H{ws}[A-F0-9]+ -octnumber O{ws}[0-7]+ -decnumber D{ws}[0-9]+ -realnumber R[ \t+-]+[0-9]*("."[0-9]*){0,1} -charnumber C{ws}. -hexstring ([A-F0-9][A-F0-9])* - -%% - -{ws} {} -\n {line_number++; } - -"(" return(LEFT); -")" return(RIGHT); - -{octnumber} {scan_int(8); return(NUMBER); } -{decnumber} {scan_int(10); return(NUMBER); } -{hexnumber} {scan_int(16); return(NUMBER); } -{charnumber} {scan_char(); return(NUMBER); } -{realnumber} {scan_fix(); return(FIX); } - -CODINGSCHEME {scan_string("CODINGSCHEME", KEEP_CONVERT, LEN_CODING_SCHEME); - return(CODINGSCHEME); } -FAMILY {scan_string("FAMILY", KEEP_CONVERT, LEN_FAMILY); - return(FAMILY); } -VTITLE {scan_string("VTITLE", KEEP_ALL, LEN_VTITLE); - return(VTITLE); } -FONTNAME {scan_string("FONTNAME", KEEP_ALL, LEN_FONT_NAME); - return(FONTNAME); } -FONTAREA {scan_string("FONTAREA", KEEP_ALL, LEN_FONT_AREA); - return(FONTAREA); } -SPECIAL {scan_string("SPECIAL", KEEP_ALL, 0); - return(SPECIAL); } -COMMENT {scan_string("COMMENT", KEEP_NONE, 0); - return(COMMENT); } - -SPECIALHEX{ws}{hexstring} {scan_hex_string(); return(SPECIALHEX); } - - -SEVENBITSAFEFLAG{ws}TRUE {yylval.yint=1; return(SEVENBITSAFEFLAG); } -SEVENBITSAFEFLAG{ws}FALSE {yylval.yint=0; return(SEVENBITSAFEFLAG); } - -CHECKSUM return(CHECKSUM); -DESIGNSIZE return(DESIGNSIZE); -DESIGNUNITS return(DESIGNUNITS); -FACE return(FACE); -HEADER return(HEADER); -BOUNDARYCHAR return(BOUNDARYCHAR); -FONTDIMEN return(FONTDIMEN); -LIGTABLE return(LIGTABLE); -CHARACTER return(CHARACTER); - -PARAMETER return(PARAMETER); -LABEL return(LABEL); -KRN return(KRN); -STOP return(STOP); -SKIP return(SKIP); -NEXTLARGER return(NEXTLARGER); -VARCHAR return(VARCHAR); - -CHARWD {yylval.yint = C_WD; return(CHARMEASURE); } -CHARHT {yylval.yint = C_HT; return(CHARMEASURE); } -CHARDP {yylval.yint = C_DP; return(CHARMEASURE); } -CHARIC {yylval.yint = C_IC; return(CHARMEASURE); } - -TOP {yylval.yint = E_TOP; return(EXTEN); } -MID {yylval.yint = E_MID; return(EXTEN); } -BOT {yylval.yint = E_BOT; return(EXTEN); } -REP {yylval.yint = E_REP; return(EXTEN); } - -LIG {yylval.yint = L_0; return(LIG); } -"LIG/" {yylval.yint = L_B; return(LIG); } -"/LIG" {yylval.yint = L_A; return(LIG); } -"/LIG/" {yylval.yint = L_AB; return(LIG); } -"LIG/>" {yylval.yint = L_Bx; return(LIG); } -"/LIG>" {yylval.yint = L_Ax; return(LIG); } -"/LIG/>" {yylval.yint = L_ABx; return(LIG); } -"/LIG/>>" {yylval.yint = L_ABxx; return(LIG); } - -F{ws}MRR {yylval.yint = F_MRR; return(NUMBER); } -F{ws}MIR {yylval.yint = F_MIR; return(NUMBER); } -F{ws}BRR {yylval.yint = F_BRR; return(NUMBER); } -F{ws}BIR {yylval.yint = F_BIR; return(NUMBER); } -F{ws}LRR {yylval.yint = F_LRR; return(NUMBER); } -F{ws}LIR {yylval.yint = F_LIR; return(NUMBER); } -F{ws}MRC {yylval.yint = F_MRC; return(NUMBER); } -F{ws}MIC {yylval.yint = F_MIC; return(NUMBER); } -F{ws}BRC {yylval.yint = F_BRC; return(NUMBER); } -F{ws}BIC {yylval.yint = F_BIC; return(NUMBER); } -F{ws}LRC {yylval.yint = F_LRC; return(NUMBER); } -F{ws}LIC {yylval.yint = F_LIC; return(NUMBER); } -F{ws}MRE {yylval.yint = F_MRE; return(NUMBER); } -F{ws}MIE {yylval.yint = F_MIE; return(NUMBER); } -F{ws}BRE {yylval.yint = F_BRE; return(NUMBER); } -F{ws}BIE {yylval.yint = F_BIE; return(NUMBER); } -F{ws}LRE {yylval.yint = F_LRE; return(NUMBER); } -F{ws}LIE {yylval.yint = F_LIE; return(NUMBER); } - -SLANT {yylval.yint = P_SLANT; return(NAMEDPARAMETER); } -SPACE {yylval.yint = P_SPACE; return(NAMEDPARAMETER); } -STRETCH {yylval.yint = P_STRETCH; return(NAMEDPARAMETER); } -SHRINK {yylval.yint = P_SHRINK; return(NAMEDPARAMETER); } -XHEIGHT {yylval.yint = P_XHEIGHT; return(NAMEDPARAMETER); } -QUAD {yylval.yint = P_QUAD; return(NAMEDPARAMETER); } -EXTRASPACE {yylval.yint = P_EXTRASPACE; return(NAMEDPARAMETER); } -NUM1 {yylval.yint = P_NUM1; return(NAMEDPARAMETER); } -NUM2 {yylval.yint = P_NUM2; return(NAMEDPARAMETER); } -NUM3 {yylval.yint = P_NUM3; return(NAMEDPARAMETER); } -DENOM1 {yylval.yint = P_DENOM1; return(NAMEDPARAMETER); } -DENOM2 {yylval.yint = P_DENOM2; return(NAMEDPARAMETER); } -SUP1 {yylval.yint = P_SUP1; return(NAMEDPARAMETER); } -SUP2 {yylval.yint = P_SUP2; return(NAMEDPARAMETER); } -SUP3 {yylval.yint = P_SUP3; return(NAMEDPARAMETER); } -SUB1 {yylval.yint = P_SUB1; return(NAMEDPARAMETER); } -SUB2 {yylval.yint = P_SUB2; return(NAMEDPARAMETER); } -SUPDROP {yylval.yint = P_SUPDROP; return(NAMEDPARAMETER); } -SUBDROP {yylval.yint = P_SUBDROP; return(NAMEDPARAMETER); } -DELIM1 {yylval.yint = P_DELIM1; return(NAMEDPARAMETER); } -DELIM2 {yylval.yint = P_DELIM2; return(NAMEDPARAMETER); } -AXISHEIGHT {yylval.yint = P_AXISHEIGHT; return(NAMEDPARAMETER); } - -DEFAULTRULETHICKNESS {yylval.yint = P_DEFAULTRULETHICKNESS; - return(NAMEDPARAMETER); } -BIGOPSPACING1 {yylval.yint = P_BIGOPSPACING1; return(NAMEDPARAMETER); } -BIGOPSPACING2 {yylval.yint = P_BIGOPSPACING2; return(NAMEDPARAMETER); } -BIGOPSPACING3 {yylval.yint = P_BIGOPSPACING3; return(NAMEDPARAMETER); } -BIGOPSPACING4 {yylval.yint = P_BIGOPSPACING4; return(NAMEDPARAMETER); } -BIGOPSPACING5 {yylval.yint = P_BIGOPSPACING5; return(NAMEDPARAMETER); } - -MAPFONT {return(MAPFONT); } -FONTCHECKSUM {return(FONTCHECKSUM); } -FONTAT {return(FONTAT); } -FONTDSIZE {return(FONTDSIZE); } -MAP {return(MAP); } -SELECTFONT {return(SELECTFONT); } -SETCHAR {return(SETCHAR); } -SETRULE {return(SETRULE); } -PUSH {return(PUSH); } -POP {return(POP); } - -MOVERIGHT {yylval.yint = M_RIGHT; return(MOVE); } -MOVELEFT {yylval.yint = M_LEFT; return(MOVE); } -MOVEUP {yylval.yint = M_UP; return(MOVE); } -MOVEDOWN {yylval.yint = M_DOWN; return(MOVE); } - -OFMLEVEL return(OFMLEVEL); -TOPACCENT {yylval.yint = ACC_TOP; return(ACCENT); } -MIDACCENT {yylval.yint = ACC_MID; return(ACCENT); } -BOTACCENT {yylval.yint = ACC_BOT; return(ACCENT); } - -FONTDIR{ws}TL {yylval.yint = DIR_ORD+DIR_TL; return(FONTDIR);} -FONTDIR{ws}LT {yylval.yint = DIR_ORD+DIR_LT; return(FONTDIR);} -FONTDIR{ws}TR {yylval.yint = DIR_ORD+DIR_TR; return(FONTDIR);} -FONTDIR{ws}LB {yylval.yint = DIR_ORD+DIR_LB; return(FONTDIR);} -FONTDIR{ws}BL {yylval.yint = DIR_ORD+DIR_BL; return(FONTDIR);} -FONTDIR{ws}RT {yylval.yint = DIR_ORD+DIR_RT; return(FONTDIR);} -FONTDIR{ws}BR {yylval.yint = DIR_ORD+DIR_BR; return(FONTDIR);} -FONTDIR{ws}RB {yylval.yint = DIR_ORD+DIR_RB; return(FONTDIR);} -NATURALFONTDIR{ws}TL {yylval.yint = DIR_NAT+DIR_TL; return(FONTDIR);} -NATURALFONTDIR{ws}LT {yylval.yint = DIR_NAT+DIR_LT; return(FONTDIR);} -NATURALFONTDIR{ws}TR {yylval.yint = DIR_NAT+DIR_TR; return(FONTDIR);} -NATURALFONTDIR{ws}LB {yylval.yint = DIR_NAT+DIR_LB; return(FONTDIR);} -NATURALFONTDIR{ws}BL {yylval.yint = DIR_NAT+DIR_BL; return(FONTDIR);} -NATURALFONTDIR{ws}RT {yylval.yint = DIR_NAT+DIR_RT; return(FONTDIR);} -NATURALFONTDIR{ws}BR {yylval.yint = DIR_NAT+DIR_BR; return(FONTDIR);} -NATURALFONTDIR{ws}RB {yylval.yint = DIR_NAT+DIR_RB; return(FONTDIR);} - -FONTIVALUE return(FONTIVALUE); -FONTFVALUE return(FONTFVALUE); -FONTMVALUE return(FONTMVALUE); -FONTPENALTY return(FONTPENALTY); -FONTRULE return(FONTRULE); -FONTGLUE return(FONTGLUE); - -IVALUE return(IVALUE); -FVALUE return(FVALUE); -MVALUE return(MVALUE); -PENALTY return(PENALTY); -RULE return(RULE); -GLUE return(GLUE); - -IVALUEVAL return(IVALUEVAL); -FVALUEVAL return(FVALUEVAL); -MVALUEVAL return(MVALUEVAL); -PENALTYVAL return(PENALTYVAL); - -RULEWD { yylval.yint = RULE_WD; return(RULEMEASURE); } -RULEHT { yylval.yint = RULE_HT; return(RULEMEASURE); } -RULEDP { yylval.yint = RULE_DP; return(RULEMEASURE); } - -GLUEWD return(GLUEWD); -GLUESTRETCH { yylval.yint = GLUE_STRETCH; return(GLUESHRINKSTRETCH); } -GLUESHRINK { yylval.yint = GLUE_SHRINK; return(GLUESHRINKSTRETCH); } - -GLUETYPE return(GLUETYPE); -GLUERULE return(GLUERULE); -GLUECHAR return(GLUECHAR); - -CHARIVALUE return(CHARIVALUE); -CHARFVALUE return(CHARFVALUE); -CHARMVALUE return(CHARMVALUE); -CHARPENALTY return(CHARPENALTY); -CHARRULE return(CHARRULE); -CHARGLUE return(CHARGLUE); - -CKRN return(CKRN); -CGLUE return(CGLUE); -CPENALTY return(CPENALTY); -CPENGLUE return(CPENGLUE); -CLABEL return(CLABEL); - -CHARREPEAT return(CHARREPEAT); - - -FILLL {yylval.yint = O_FILLL; return(GLUEORDER); } -FILL {yylval.yint = O_FILL; return(GLUEORDER); } -FIL {yylval.yint = O_FIL; return(GLUEORDER); } -FI {yylval.yint = O_FI; return(GLUEORDER); } -UNIT {yylval.yint = O_UNIT; return(GLUEORDER); } - -NORMAL {yylval.yint = K_NORMAL; return(GLUEKIND); } -ALEADERS {yylval.yint = K_ALEADERS; return(GLUEKIND); } -CLEADERS {yylval.yint = K_CLEADERS; return(GLUEKIND); } -XLEADERS {yylval.yint = K_XLEADERS; return(GLUEKIND); } - -SECWD {yylval.yint = C_SECWD; return(CHARMEASURE); } -SECHT {yylval.yint = C_SECHT; return(CHARMEASURE); } -SECDP {yylval.yint = C_SECDP; return(CHARMEASURE); } -SECIC {yylval.yint = C_SECIC; return(CHARMEASURE); } - -PRIMTOPAXIS {yylval.yint = C_P_TOPAXIS; return(CHARMEASURE); } -PRIMTOPAXISBIS {yylval.yint = C_P_TOPAXISBIs; return(CHARMEASURE); } -PRIMBOTAXIS {yylval.yint = C_P_BOTAXIS; return(CHARMEASURE); } -PRIMBOTAXISBIS {yylval.yint = C_P_BOTAXISBIS; return(CHARMEASURE); } -PRIMMIDHOR {yylval.yint = C_P_MIDHOR; return(CHARMEASURE); } -PRIMMIDVERT {yylval.yint = C_P_MIDVERT; return(CHARMEASURE); } -PRIMBASESLANT {yylval.yint = C_P_BASESLANT; return(CHARMEASURE); } - -SECTOPAXIS {yylval.yint = C_S_TOPAXIS; return(CHARMEASURE); } -SECTOPAXISBIS {yylval.yint = C_S_TOPAXISBIs; return(CHARMEASURE); } -SECBOTAXIS {yylval.yint = C_S_BOTAXIS; return(CHARMEASURE); } -SECBOTAXISBIS {yylval.yint = C_S_BOTAXISBIS; return(CHARMEASURE); } -SECMIDHOR {yylval.yint = C_S_MIDHOR; return(CHARMEASURE); } -SECMIDVERT {yylval.yint = C_S_MIDVERT; return(CHARMEASURE); } -SECBASESLANT {yylval.yint = C_S_BASESLANT; return(CHARMEASURE); } - -. {lex_error_1("unexpected character (%x); ignored", - yytext[0]);} -%% - -/* added by Thomas Esser, suggested by Olaf Weber */ -#ifdef yywrap -#undef yywrap -#endif - -int -yywrap (void) -{ return 1; } - -void -scan_int(unsigned base) -{ - register unsigned j, q = 0x10000 / base, c0=0, c1=0, i=1; - - if ((baseBASE_MAX)) - internal_error_1("scan_int (base=%d)", base); - while ((yytext[i]==' ') || (yytext[i]=='\t')) { - yytext[i] = ' '; - i++; - } - for (; i='A') j = j + '0' + 10 - 'A' ; - c0 = base*c0 + (c1 / q); - c1 = base*(c1 % q) + j - '0'; - if (c0 > 0xffff) { - lex_error_s("numeric value (%s) too large; set to 0", yytext); - c0=0; c1=0; break; - } - } - yylval.yint = c0 * 0x10000 + c1; -} - -void -scan_fix(void) -{ - unsigned i=1; - unsigned sign = 1; - unsigned j=0; - unsigned acc=0; - unsigned int_part; - unsigned fraction_digits[7]; - - while ((yytext[i]==' ') || (yytext[i]=='\t') || - (yytext[i]=='+') || (yytext[i]=='-')) { - if (yytext[i]=='\t') yytext[i] = ' '; - if (yytext[i]=='-') sign *= -1; - i++; - } - acc=0; - while ((i=0x800 ) { - lex_error_s("fix value (%s) too large; set to 0", yytext); - yylval.yfix = 0; - return; - } - } - int_part = acc; acc = 0; - if (i < yyleng) { - i++; - while ((i0) {acc = fraction_digits[--j] + acc / 10;} - acc = (acc + 10) / 20; - } - if ((acc > UNITY) && (int_part=2047)) { - lex_error_s("fix value (%s) too large; set to 0", yytext); - yylval.yfix = 0; - return; - } - yylval.yfix = sign * (int_part*UNITY + acc); -} - -void -scan_char(void) -{ - register unsigned i=1; - - while ((yytext[i]==' ') || (yytext[i]=='\t')) i++; - if ((yytext[i]<041) || (yytext[i]>0176) || - (yytext[i]=='(') || (yytext[i]==')')) { - lex_error_1("C value (H %X) must be ASCII (not paren); " - "set to 'A'", yytext[i]); - yylval.yint = 'A'; - } else yylval.yint = yytext[i]; -} - -void -scan_string(char *attribute, unsigned keep, unsigned length) -{ - register unsigned c, saved_ptr = 0, paren_level = 0; - unsigned error_msg = FALSE; - - if ((keepKEEP_MAX)) - internal_error_1("scan_string (keep=%d)", keep); - while (((c = input()) != EOF) && - ((c == ' ') || (c == '\t') || (c == '\n'))) { - if (c == '\n') {line_number++;} - } - if (c==EOF) fatal_error_s("EOF while scanning %s", attribute); - while ((c != EOF) && - ((c != ')') || (paren_level>0))) { - if (c==')') { - paren_level--; - if (keep==KEEP_CONVERT) { - lex_error_s_1("%s character (H %X) converted to slash", - attribute, c); - c = '/'; - } - } else if (c=='(') { - paren_level++; - if (keep==KEEP_CONVERT) { - lex_error_s_1("%s character (H %X) converted to slash", - attribute, c); - c = '/'; - } - } else if ((c<' ') || (c>='~')) { - if (c=='\n') line_number++; - if (keep==KEEP_CONVERT) { - lex_error_s_1("%s character (H %X) converted to blank", - attribute, c); - c = ' '; - } - } - if (saved_ptr<(MAX_PTR-3)) - saved_text[saved_ptr++] = c; - else if (error_msg == FALSE) { - lex_error_s_1("%s string longer than %d characters; truncating", - attribute, MAX_PTR); - error_msg = TRUE; - } - c = input(); - } - if (c==EOF) fatal_error_s("EOF while scanning %s", attribute); - unput(')'); - saved_text[saved_ptr++] = '\0'; - if (keep!=KEEP_NONE) { - if ((length != 0) && (strlen(saved_text)>length)) { - lex_error_s_1("%s string limited to %d characters; truncated", - attribute, length); - saved_text[length] = '\0'; - } - yylval.ystring = xstrdup(saved_text); - } else { - yylval.ystring = NULL; - } -} - -void -scan_hex_string(void) -{ - register unsigned i=10; - - while ((yytext[i]==' ') || (yytext[i]=='\t')) i++; - yylval.ystring = xstrdup(yytext+i); -} diff --git a/Build/source/texk/web2c/omegafonts/y_tab.c-dist b/Build/source/texk/web2c/omegafonts/y_tab.c-dist deleted file mode 100644 index 10b79adf607..00000000000 --- a/Build/source/texk/web2c/omegafonts/y_tab.c-dist +++ /dev/null @@ -1,2030 +0,0 @@ -/* A Bison parser, made by GNU Bison 1.875a. */ - -/* Skeleton parser for Yacc-like parsing with Bison, - Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003 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. */ - -/* As a special exception, when this file is copied by Bison into a - Bison output file, you may use that output file without restriction. - This special exception was added by the Free Software Foundation - in version 1.24 of Bison. */ - -/* 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 - variables, as they might otherwise be expanded by user macros. - There are some unavoidable exceptions within include files to - define necessary library symbols; they are noted "INFRINGES ON - USER NAME SPACE" below. */ - -/* Identify Bison output. */ -#define YYBISON 1 - -/* Skeleton name. */ -#define YYSKELETON_NAME "yacc.c" - -/* Pure parsers. */ -#define YYPURE 0 - -/* Using locations. */ -#define YYLSP_NEEDED 0 - - - -/* Tokens. */ -#ifndef YYTOKENTYPE -# define YYTOKENTYPE - /* Put the tokens into the symbol table, so that GDB and other debuggers - know about them. */ - enum yytokentype { - LEFT = 258, - RIGHT = 259, - NUMBER = 260, - FIX = 261, - COMMENT = 262, - CHECKSUM = 263, - DESIGNSIZE = 264, - DESIGNUNITS = 265, - CODINGSCHEME = 266, - FAMILY = 267, - FACE = 268, - SEVENBITSAFEFLAG = 269, - HEADER = 270, - FONTDIMEN = 271, - LIGTABLE = 272, - BOUNDARYCHAR = 273, - CHARACTER = 274, - NAMEDPARAMETER = 275, - PARAMETER = 276, - CHARMEASURE = 277, - NEXTLARGER = 278, - VARCHAR = 279, - EXTEN = 280, - LABEL = 281, - LIG = 282, - KRN = 283, - STOP = 284, - SKIP = 285, - VTITLE = 286, - MAPFONT = 287, - FONTNAME = 288, - FONTAREA = 289, - FONTCHECKSUM = 290, - FONTAT = 291, - FONTDSIZE = 292, - MAP = 293, - SELECTFONT = 294, - SETCHAR = 295, - SETRULE = 296, - MOVE = 297, - PUSH = 298, - POP = 299, - SPECIAL = 300, - SPECIALHEX = 301, - CHARREPEAT = 302, - FONTIVALUE = 303, - FONTFVALUE = 304, - FONTMVALUE = 305, - FONTPENALTY = 306, - FONTRULE = 307, - FONTGLUE = 308, - CLABEL = 309, - CKRN = 310, - CGLUE = 311, - CPENALTY = 312, - CPENGLUE = 313, - CHARIVALUE = 314, - CHARFVALUE = 315, - CHARMVALUE = 316, - CHARPENALTY = 317, - CHARRULE = 318, - CHARGLUE = 319, - IVALUE = 320, - IVALUEVAL = 321, - MVALUE = 322, - MVALUEVAL = 323, - FVALUE = 324, - FVALUEVAL = 325, - PENALTY = 326, - PENALTYVAL = 327, - RULE = 328, - RULEMEASURE = 329, - GLUE = 330, - GLUEWD = 331, - GLUETYPE = 332, - GLUEKIND = 333, - GLUERULE = 334, - GLUECHAR = 335, - GLUESHRINKSTRETCH = 336, - GLUEORDER = 337, - OFMLEVEL = 338, - FONTDIR = 339, - ACCENT = 340 - }; -#endif -#define LEFT 258 -#define RIGHT 259 -#define NUMBER 260 -#define FIX 261 -#define COMMENT 262 -#define CHECKSUM 263 -#define DESIGNSIZE 264 -#define DESIGNUNITS 265 -#define CODINGSCHEME 266 -#define FAMILY 267 -#define FACE 268 -#define SEVENBITSAFEFLAG 269 -#define HEADER 270 -#define FONTDIMEN 271 -#define LIGTABLE 272 -#define BOUNDARYCHAR 273 -#define CHARACTER 274 -#define NAMEDPARAMETER 275 -#define PARAMETER 276 -#define CHARMEASURE 277 -#define NEXTLARGER 278 -#define VARCHAR 279 -#define EXTEN 280 -#define LABEL 281 -#define LIG 282 -#define KRN 283 -#define STOP 284 -#define SKIP 285 -#define VTITLE 286 -#define MAPFONT 287 -#define FONTNAME 288 -#define FONTAREA 289 -#define FONTCHECKSUM 290 -#define FONTAT 291 -#define FONTDSIZE 292 -#define MAP 293 -#define SELECTFONT 294 -#define SETCHAR 295 -#define SETRULE 296 -#define MOVE 297 -#define PUSH 298 -#define POP 299 -#define SPECIAL 300 -#define SPECIALHEX 301 -#define CHARREPEAT 302 -#define FONTIVALUE 303 -#define FONTFVALUE 304 -#define FONTMVALUE 305 -#define FONTPENALTY 306 -#define FONTRULE 307 -#define FONTGLUE 308 -#define CLABEL 309 -#define CKRN 310 -#define CGLUE 311 -#define CPENALTY 312 -#define CPENGLUE 313 -#define CHARIVALUE 314 -#define CHARFVALUE 315 -#define CHARMVALUE 316 -#define CHARPENALTY 317 -#define CHARRULE 318 -#define CHARGLUE 319 -#define IVALUE 320 -#define IVALUEVAL 321 -#define MVALUE 322 -#define MVALUEVAL 323 -#define FVALUE 324 -#define FVALUEVAL 325 -#define PENALTY 326 -#define PENALTYVAL 327 -#define RULE 328 -#define RULEMEASURE 329 -#define GLUE 330 -#define GLUEWD 331 -#define GLUETYPE 332 -#define GLUEKIND 333 -#define GLUERULE 334 -#define GLUECHAR 335 -#define GLUESHRINKSTRETCH 336 -#define GLUEORDER 337 -#define OFMLEVEL 338 -#define FONTDIR 339 -#define ACCENT 340 - - - - -/* Copy the first part of user declarations. */ -#line 1 "./pl.y" - -/* pl.y: Grammar for reading property list files - -This file is part of Omega, -which is based on the web2c distribution of TeX, - -Copyright (c) 1994--2001 John Plaice and Yannis Haralambous - -Omega 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 of the License, or -(at your option) any later version. - -Omega 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 Omega; if not, write to the Free Software Foundation, Inc., -59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. - -*/ - -#include "cpascal.h" -#include "parser.h" -#include "manifests.h" -#include "list_routines.h" -#include "error_routines.h" -#include "out_routines.h" -#include "char_routines.h" -#include "header_routines.h" -#include "param_routines.h" -#include "dimen_routines.h" -#include "ligkern_routines.h" -#include "print_routines.h" -#include "font_routines.h" -#include "extra_routines.h" - - - -/* Enabling traces. */ -#ifndef YYDEBUG -# define YYDEBUG 0 -#endif - -/* Enabling verbose error messages. */ -#ifdef YYERROR_VERBOSE -# undef YYERROR_VERBOSE -# define YYERROR_VERBOSE 1 -#else -# define YYERROR_VERBOSE 0 -#endif - -#if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED) -typedef int YYSTYPE; -# define yystype YYSTYPE /* obsolescent; will be withdrawn */ -# define YYSTYPE_IS_DECLARED 1 -# define YYSTYPE_IS_TRIVIAL 1 -#endif - - - -/* Copy the second part of user declarations. */ - - -/* Line 214 of yacc.c. */ -#line 298 "y.tab.c" - -#if ! defined (yyoverflow) || YYERROR_VERBOSE - -/* The parser invokes alloca or malloc; define the necessary symbols. */ - -# if YYSTACK_USE_ALLOCA -# define YYSTACK_ALLOC alloca -# else -# ifndef YYSTACK_USE_ALLOCA -# if defined (alloca) || defined (_ALLOCA_H) -# define YYSTACK_ALLOC alloca -# else -# ifdef __GNUC__ -# define YYSTACK_ALLOC __builtin_alloca -# endif -# endif -# endif -# endif - -# ifdef YYSTACK_ALLOC - /* Pacify GCC's `empty if-body' warning. */ -# define YYSTACK_FREE(Ptr) do { /* empty */; } while (0) -# else -# if defined (__STDC__) || defined (__cplusplus) -# include /* INFRINGES ON USER NAME SPACE */ -# define YYSIZE_T size_t -# endif -# define YYSTACK_ALLOC malloc -# define YYSTACK_FREE free -# endif -#endif /* ! defined (yyoverflow) || YYERROR_VERBOSE */ - - -#if (! defined (yyoverflow) \ - && (! defined (__cplusplus) \ - || (YYSTYPE_IS_TRIVIAL))) - -/* A type that is properly aligned for any stack member. */ -union yyalloc -{ - short yyss; - YYSTYPE yyvs; - }; - -/* The size of the maximum gap between one aligned stack and the next. */ -# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1) - -/* The size of an array large to enough to hold all stacks, each with - N elements. */ -# define YYSTACK_BYTES(N) \ - ((N) * (sizeof (short) + sizeof (YYSTYPE)) \ - + YYSTACK_GAP_MAXIMUM) - -/* Copy COUNT objects from FROM to TO. The source and destination do - not overlap. */ -# ifndef YYCOPY -# if 1 < __GNUC__ -# define YYCOPY(To, From, Count) \ - __builtin_memcpy (To, From, (Count) * sizeof (*(From))) -# else -# define YYCOPY(To, From, Count) \ - do \ - { \ - register YYSIZE_T yyi; \ - for (yyi = 0; yyi < (Count); yyi++) \ - (To)[yyi] = (From)[yyi]; \ - } \ - while (0) -# endif -# endif - -/* Relocate STACK from its old location to the new one. The - local variables YYSIZE and YYSTACKSIZE give the old and new number of - elements in the stack, and YYPTR gives the new location of the - stack. Advance YYPTR to a properly aligned location for the next - stack. */ -# define YYSTACK_RELOCATE(Stack) \ - do \ - { \ - YYSIZE_T yynewbytes; \ - YYCOPY (&yyptr->Stack, Stack, yysize); \ - Stack = &yyptr->Stack; \ - yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ - yyptr += yynewbytes / sizeof (*yyptr); \ - } \ - while (0) - -#endif - -#if defined (__STDC__) || defined (__cplusplus) - typedef signed char yysigned_char; -#else - typedef short yysigned_char; -#endif - -/* YYFINAL -- State number of the termination state. */ -#define YYFINAL 3 -/* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 221 - -/* YYNTOKENS -- Number of terminals. */ -#define YYNTOKENS 86 -/* YYNNTS -- Number of nonterminals. */ -#define YYNNTS 59 -/* YYNRULES -- Number of rules. */ -#define YYNRULES 154 -/* YYNRULES -- Number of states. */ -#define YYNSTATES 272 - -/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ -#define YYUNDEFTOK 2 -#define YYMAXUTOK 340 - -#define YYTRANSLATE(YYX) \ - ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) - -/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */ -static const unsigned char yytranslate[] = -{ - 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 1, 2, 3, 4, - 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, - 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, - 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, - 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, - 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, - 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, - 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, - 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, - 85 -}; - -#if YYDEBUG -/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in - YYRHS. */ -static const unsigned short yyprhs[] = -{ - 0, 0, 3, 5, 6, 11, 14, 17, 20, 22, - 24, 27, 29, 33, 34, 38, 39, 43, 46, 47, - 52, 54, 56, 57, 62, 65, 67, 68, 74, 75, - 80, 81, 86, 87, 92, 93, 98, 99, 104, 105, - 110, 111, 116, 119, 123, 125, 126, 131, 134, 137, - 141, 145, 147, 150, 152, 155, 159, 163, 167, 172, - 173, 178, 181, 184, 185, 189, 191, 192, 196, 198, - 202, 206, 210, 214, 218, 222, 223, 228, 231, 233, - 234, 239, 241, 243, 246, 249, 252, 254, 255, 260, - 263, 266, 270, 273, 275, 277, 279, 281, 282, 287, - 288, 293, 295, 296, 301, 304, 306, 307, 312, 313, - 318, 320, 321, 326, 329, 331, 332, 337, 338, 343, - 345, 346, 351, 354, 356, 357, 362, 363, 368, 370, - 371, 376, 379, 381, 382, 387, 388, 393, 395, 396, - 401, 404, 406, 407, 412, 413, 418, 420, 421, 426, - 429, 432, 435, 439, 443 -}; - -/* YYRHS -- A `-1'-separated list of the rules' RHS. */ -static const short yyrhs[] = -{ - 87, 0, -1, 88, -1, -1, 88, 3, 89, 4, - -1, 8, 5, -1, 9, 6, -1, 10, 6, -1, - 11, -1, 12, -1, 13, 5, -1, 14, -1, 15, - 5, 5, -1, -1, 16, 90, 101, -1, -1, 17, - 91, 103, -1, 18, 5, -1, -1, 19, 5, 92, - 105, -1, 7, -1, 31, -1, -1, 32, 5, 93, - 111, -1, 83, 5, -1, 84, -1, -1, 47, 5, - 5, 94, 105, -1, -1, 48, 5, 95, 115, -1, - -1, 50, 5, 96, 120, -1, -1, 49, 5, 97, - 125, -1, -1, 51, 5, 98, 130, -1, -1, 52, - 5, 99, 135, -1, -1, 53, 5, 100, 140, -1, - -1, 101, 3, 102, 4, -1, 20, 6, -1, 21, - 5, 6, -1, 7, -1, -1, 103, 3, 104, 4, - -1, 26, 5, -1, 26, 18, -1, 27, 5, 5, - -1, 28, 5, 6, -1, 29, -1, 30, 5, -1, - 7, -1, 54, 5, -1, 55, 5, 6, -1, 56, - 5, 5, -1, 57, 5, 5, -1, 58, 5, 5, - 5, -1, -1, 105, 3, 106, 4, -1, 22, 6, - -1, 23, 5, -1, -1, 24, 107, 109, -1, 7, - -1, -1, 38, 108, 113, -1, 85, -1, 59, 5, - 5, -1, 61, 5, 5, -1, 60, 5, 5, -1, - 62, 5, 5, -1, 63, 5, 5, -1, 64, 5, - 5, -1, -1, 109, 3, 110, 4, -1, 25, 5, - -1, 7, -1, -1, 111, 3, 112, 4, -1, 33, - -1, 34, -1, 35, 5, -1, 36, 6, -1, 37, - 6, -1, 7, -1, -1, 113, 3, 114, 4, -1, - 39, 5, -1, 40, 5, -1, 41, 6, 6, -1, - 42, 6, -1, 43, -1, 44, -1, 45, -1, 46, - -1, -1, 115, 3, 116, 4, -1, -1, 65, 5, - 117, 118, -1, 7, -1, -1, 118, 3, 119, 4, - -1, 66, 5, -1, 7, -1, -1, 120, 3, 121, - 4, -1, -1, 67, 5, 122, 123, -1, 7, -1, - -1, 123, 3, 124, 4, -1, 68, 6, -1, 7, - -1, -1, 125, 3, 126, 4, -1, -1, 69, 5, - 127, 128, -1, 7, -1, -1, 128, 3, 129, 4, - -1, 70, 6, -1, 7, -1, -1, 130, 3, 131, - 4, -1, -1, 71, 5, 132, 133, -1, 7, -1, - -1, 133, 3, 134, 4, -1, 72, 5, -1, 7, - -1, -1, 135, 3, 136, 4, -1, -1, 73, 5, - 137, 138, -1, 7, -1, -1, 138, 3, 139, 4, - -1, 74, 6, -1, 7, -1, -1, 140, 3, 141, - 4, -1, -1, 75, 5, 142, 143, -1, 7, -1, - -1, 143, 3, 144, 4, -1, 77, 78, -1, 76, - 6, -1, 80, 5, -1, 79, 5, 5, -1, 81, - 6, 82, -1, 7, -1 -}; - -/* YYRLINE[YYN] -- source line where rule number YYN was defined. */ -static const unsigned short yyrline[] = -{ - 0, 155, 155, 158, 160, 168, 170, 172, 174, 176, - 178, 180, 182, 185, 184, 188, 187, 190, 193, 192, - 195, 199, 202, 201, 207, 209, 212, 211, 216, 215, - 219, 218, 222, 221, 225, 224, 228, 227, 231, 230, - 235, 237, 242, 244, 246, 249, 251, 256, 258, 260, - 262, 264, 266, 268, 272, 274, 276, 278, 280, 284, - 286, 291, 293, 296, 295, 298, 303, 302, 309, 311, - 313, 315, 317, 319, 321, 326, 328, 333, 335, 341, - 343, 348, 350, 352, 354, 356, 358, 361, 363, 368, - 370, 372, 374, 376, 378, 380, 382, 388, 390, 396, - 395, 398, 401, 403, 408, 410, 413, 415, 421, 420, - 423, 426, 428, 433, 435, 438, 440, 446, 445, 448, - 451, 453, 458, 460, 463, 465, 471, 470, 473, 476, - 478, 483, 485, 488, 490, 496, 495, 498, 501, 503, - 508, 510, 513, 515, 521, 520, 523, 526, 528, 533, - 535, 537, 539, 541, 543 -}; -#endif - -#if YYDEBUG || YYERROR_VERBOSE -/* YYTNME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. - First, the terminals, then, starting at YYNTOKENS, nonterminals. */ -static const char *const yytname[] = -{ - "$end", "error", "$undefined", "LEFT", "RIGHT", "NUMBER", "FIX", - "COMMENT", "CHECKSUM", "DESIGNSIZE", "DESIGNUNITS", "CODINGSCHEME", - "FAMILY", "FACE", "SEVENBITSAFEFLAG", "HEADER", "FONTDIMEN", "LIGTABLE", - "BOUNDARYCHAR", "CHARACTER", "NAMEDPARAMETER", "PARAMETER", - "CHARMEASURE", "NEXTLARGER", "VARCHAR", "EXTEN", "LABEL", "LIG", "KRN", - "STOP", "SKIP", "VTITLE", "MAPFONT", "FONTNAME", "FONTAREA", - "FONTCHECKSUM", "FONTAT", "FONTDSIZE", "MAP", "SELECTFONT", "SETCHAR", - "SETRULE", "MOVE", "PUSH", "POP", "SPECIAL", "SPECIALHEX", "CHARREPEAT", - "FONTIVALUE", "FONTFVALUE", "FONTMVALUE", "FONTPENALTY", "FONTRULE", - "FONTGLUE", "CLABEL", "CKRN", "CGLUE", "CPENALTY", "CPENGLUE", - "CHARIVALUE", "CHARFVALUE", "CHARMVALUE", "CHARPENALTY", "CHARRULE", - "CHARGLUE", "IVALUE", "IVALUEVAL", "MVALUE", "MVALUEVAL", "FVALUE", - "FVALUEVAL", "PENALTY", "PENALTYVAL", "RULE", "RULEMEASURE", "GLUE", - "GLUEWD", "GLUETYPE", "GLUEKIND", "GLUERULE", "GLUECHAR", - "GLUESHRINKSTRETCH", "GLUEORDER", "OFMLEVEL", "FONTDIR", "ACCENT", - "$accept", "File", "Entries", "OneEntry", "@1", "@2", "@3", "@4", "@5", - "@6", "@7", "@8", "@9", "@10", "@11", "FontParameters", - "OneFontParameter", "LigKernEntries", "OneLigKernEntry", - "CharacterEntries", "OneCharacterEntry", "@12", "@13", - "VarCharParameters", "OneVarCharParameter", "MapFontEntries", - "OneMapFontEntry", "MapEntries", "OneMapEntry", "FontIvalueEntries", - "OneFontIvalueEntry", "@14", "IvalueDefinition", "OneIvalueDefinition", - "FontMvalueEntries", "OneFontMvalueEntry", "@15", "MvalueDefinition", - "OneMvalueDefinition", "FontFvalueEntries", "OneFontFvalueEntry", "@16", - "FvalueDefinition", "OneFvalueDefinition", "FontPenaltyEntries", - "OneFontPenaltyEntry", "@17", "PenaltyDefinition", - "OnePenaltyDefinition", "FontRuleEntries", "OneFontRuleEntry", "@18", - "RuleDefinition", "OneRuleDefinition", "FontGlueEntries", - "OneFontGlueEntry", "@19", "GlueDefinition", "OneGlueDefinition", 0 -}; -#endif - -# ifdef YYPRINT -/* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to - token YYLEX-NUM. */ -static const unsigned short yytoknum[] = -{ - 0, 256, 257, 258, 259, 260, 261, 262, 263, 264, - 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, - 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, - 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, - 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, - 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, - 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, - 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, - 335, 336, 337, 338, 339, 340 -}; -# endif - -/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ -static const unsigned char yyr1[] = -{ - 0, 86, 87, 88, 88, 89, 89, 89, 89, 89, - 89, 89, 89, 90, 89, 91, 89, 89, 92, 89, - 89, 89, 93, 89, 89, 89, 94, 89, 95, 89, - 96, 89, 97, 89, 98, 89, 99, 89, 100, 89, - 101, 101, 102, 102, 102, 103, 103, 104, 104, 104, - 104, 104, 104, 104, 104, 104, 104, 104, 104, 105, - 105, 106, 106, 107, 106, 106, 108, 106, 106, 106, - 106, 106, 106, 106, 106, 109, 109, 110, 110, 111, - 111, 112, 112, 112, 112, 112, 112, 113, 113, 114, - 114, 114, 114, 114, 114, 114, 114, 115, 115, 117, - 116, 116, 118, 118, 119, 119, 120, 120, 122, 121, - 121, 123, 123, 124, 124, 125, 125, 127, 126, 126, - 128, 128, 129, 129, 130, 130, 132, 131, 131, 133, - 133, 134, 134, 135, 135, 137, 136, 136, 138, 138, - 139, 139, 140, 140, 142, 141, 141, 143, 143, 144, - 144, 144, 144, 144, 144 -}; - -/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ -static const unsigned char yyr2[] = -{ - 0, 2, 1, 0, 4, 2, 2, 2, 1, 1, - 2, 1, 3, 0, 3, 0, 3, 2, 0, 4, - 1, 1, 0, 4, 2, 1, 0, 5, 0, 4, - 0, 4, 0, 4, 0, 4, 0, 4, 0, 4, - 0, 4, 2, 3, 1, 0, 4, 2, 2, 3, - 3, 1, 2, 1, 2, 3, 3, 3, 4, 0, - 4, 2, 2, 0, 3, 1, 0, 3, 1, 3, - 3, 3, 3, 3, 3, 0, 4, 2, 1, 0, - 4, 1, 1, 2, 2, 2, 1, 0, 4, 2, - 2, 3, 2, 1, 1, 1, 1, 0, 4, 0, - 4, 1, 0, 4, 2, 1, 0, 4, 0, 4, - 1, 0, 4, 2, 1, 0, 4, 0, 4, 1, - 0, 4, 2, 1, 0, 4, 0, 4, 1, 0, - 4, 2, 1, 0, 4, 0, 4, 1, 0, 4, - 2, 1, 0, 4, 0, 4, 1, 0, 4, 2, - 2, 2, 3, 3, 1 -}; - -/* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state - STATE-NUM when YYTABLE doesn't specify something else to do. Zero - means the default is an error. */ -static const unsigned char yydefact[] = -{ - 3, 0, 2, 1, 0, 20, 0, 0, 0, 8, - 9, 0, 11, 0, 13, 15, 0, 0, 21, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, - 5, 6, 7, 10, 0, 40, 45, 17, 18, 22, - 0, 28, 32, 30, 34, 36, 38, 24, 4, 12, - 14, 16, 59, 79, 26, 97, 115, 106, 124, 133, - 142, 0, 0, 19, 23, 59, 29, 33, 31, 35, - 37, 39, 44, 0, 0, 0, 53, 0, 0, 0, - 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 27, 0, 0, 0, 0, 0, 0, 42, 0, 41, - 47, 48, 0, 0, 52, 54, 0, 0, 0, 0, - 46, 65, 0, 0, 63, 66, 0, 0, 0, 0, - 0, 0, 68, 0, 86, 81, 82, 0, 0, 0, - 0, 101, 0, 0, 119, 0, 0, 110, 0, 0, - 128, 0, 0, 137, 0, 0, 146, 0, 0, 43, - 49, 50, 55, 56, 57, 0, 61, 62, 75, 87, - 0, 0, 0, 0, 0, 0, 60, 83, 84, 85, - 80, 99, 98, 117, 116, 108, 107, 126, 125, 135, - 134, 144, 143, 58, 64, 67, 69, 71, 70, 72, - 73, 74, 102, 120, 111, 129, 138, 147, 0, 0, - 100, 118, 109, 127, 136, 145, 78, 0, 0, 0, - 0, 0, 0, 93, 94, 95, 96, 0, 0, 0, - 0, 0, 0, 0, 77, 76, 89, 90, 0, 92, - 88, 105, 0, 0, 123, 0, 0, 114, 0, 0, - 132, 0, 0, 141, 0, 0, 154, 0, 0, 0, - 0, 0, 0, 91, 104, 103, 122, 121, 113, 112, - 131, 130, 140, 139, 150, 149, 0, 151, 0, 148, - 152, 153 -}; - -/* YYDEFGOTO[NTERM-NUM]. */ -static const short yydefgoto[] = -{ - -1, 1, 2, 29, 35, 36, 52, 53, 65, 55, - 57, 56, 58, 59, 60, 50, 75, 51, 87, 63, - 123, 158, 159, 184, 208, 64, 130, 185, 217, 66, - 133, 192, 200, 233, 68, 139, 194, 202, 239, 67, - 136, 193, 201, 236, 69, 142, 195, 203, 242, 70, - 145, 196, 204, 245, 71, 148, 197, 205, 252 -}; - -/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing - STATE-NUM. */ -#define YYPACT_NINF -8 -static const short yypact[] = -{ - -8, 8, 9, -8, 11, -8, 4, 5, 29, -8, - -8, 34, -8, 35, -8, -8, 36, 39, -8, 40, - 41, 44, 46, 76, 77, 79, 81, 82, -8, 10, - -8, -8, -8, -8, 83, -8, -8, -8, -8, -8, - 84, -8, -8, -8, -8, -8, -8, -8, -8, -8, - 33, 80, -8, -8, -8, -8, -8, -8, -8, -8, - -8, 27, 72, 87, 88, -8, 89, 101, 102, 108, - 109, 118, -8, 116, 119, 121, -8, 32, 126, 127, - -8, 128, 129, 130, 131, 132, 133, 135, -7, 73, - 87, 0, -2, -1, 6, 3, -3, -8, 117, -8, - -8, -8, 136, 134, -8, -8, 137, 139, 140, 141, - -8, -8, 142, 144, -8, -8, 145, 146, 147, 148, - 149, 150, -8, 138, -8, -8, -8, 151, 152, 153, - 143, -8, 155, 157, -8, 158, 160, -8, 161, 163, - -8, 164, 166, -8, 167, 169, -8, 170, 172, -8, - -8, -8, -8, -8, -8, 173, -8, -8, -8, -8, - 174, 175, 176, 177, 178, 179, -8, -8, -8, -8, - -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, - -8, -8, -8, -8, 154, 159, -8, -8, -8, -8, - -8, -8, -8, -8, -8, -8, -8, -8, 78, 74, - 162, 165, 168, 171, 182, 183, -8, 184, 186, 187, - 188, 181, 185, -8, -8, -8, -8, 190, 31, 26, - 25, -4, -5, -6, -8, -8, -8, -8, 189, -8, - -8, -8, 191, 193, -8, 192, 195, -8, 194, 197, - -8, 198, 200, -8, 196, 201, -8, 202, 99, 204, - 205, 206, 203, -8, -8, -8, -8, -8, -8, -8, - -8, -8, -8, -8, -8, -8, 208, -8, 106, -8, - -8, -8 -}; - -/* YYPGOTO[NTERM-NUM]. */ -static const short yypgoto[] = -{ - -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, - -8, -8, -8, -8, -8, -8, -8, -8, -8, 156, - -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, - -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, - -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, - -8, -8, -8, -8, -8, -8, -8, -8, -8 -}; - -/* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If - positive, shift that token. If negative, reduce the rule which - number is the opposite. If zero, do what YYDEFACT says. - If YYTABLE_NINF, syntax error. */ -#define YYTABLE_NINF -1 -static const unsigned short yytable[] = -{ - 111, 246, 243, 240, 146, 134, 137, 131, 3, 30, - 143, 31, 4, 140, 48, 112, 113, 114, 5, 6, - 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, - 17, 115, 237, 234, 72, 32, 61, 100, 231, 33, - 34, 37, 18, 19, 38, 39, 40, 73, 74, 41, - 101, 42, 116, 117, 118, 119, 120, 121, 20, 21, - 22, 23, 24, 25, 26, 132, 138, 135, 241, 244, - 247, 248, 147, 249, 250, 251, 144, 141, 122, 76, - 124, 43, 44, 62, 45, 206, 46, 47, 49, 54, - 88, 89, 91, 238, 27, 28, 235, 232, 77, 78, - 79, 80, 81, 207, 92, 93, 125, 126, 127, 128, - 129, 94, 95, 209, 210, 211, 212, 213, 214, 215, - 216, 96, 97, 149, 98, 99, 82, 83, 84, 85, - 86, 102, 103, 104, 105, 106, 107, 108, 109, 110, - 151, 150, 166, 152, 153, 154, 155, 170, 156, 157, - 160, 161, 162, 163, 164, 165, 167, 198, 168, 169, - 171, 172, 199, 173, 174, 218, 175, 176, 219, 177, - 178, 220, 179, 180, 221, 181, 182, 265, 183, 186, - 187, 188, 189, 190, 191, 222, 223, 228, 271, 224, - 225, 229, 226, 227, 230, 253, 254, 255, 256, 257, - 258, 259, 262, 260, 261, 263, 0, 269, 264, 266, - 267, 0, 268, 270, 0, 0, 0, 0, 0, 0, - 0, 90 -}; - -static const yysigned_char yycheck[] = -{ - 7, 7, 7, 7, 7, 7, 7, 7, 0, 5, - 7, 6, 3, 7, 4, 22, 23, 24, 7, 8, - 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, - 19, 38, 7, 7, 7, 6, 3, 5, 7, 5, - 5, 5, 31, 32, 5, 5, 5, 20, 21, 5, - 18, 5, 59, 60, 61, 62, 63, 64, 47, 48, - 49, 50, 51, 52, 53, 65, 67, 69, 72, 74, - 76, 77, 75, 79, 80, 81, 73, 71, 85, 7, - 7, 5, 5, 3, 5, 7, 5, 5, 5, 5, - 3, 3, 3, 68, 83, 84, 70, 66, 26, 27, - 28, 29, 30, 25, 3, 3, 33, 34, 35, 36, - 37, 3, 3, 39, 40, 41, 42, 43, 44, 45, - 46, 3, 6, 6, 5, 4, 54, 55, 56, 57, - 58, 5, 5, 5, 5, 5, 5, 5, 5, 4, - 6, 5, 4, 6, 5, 5, 5, 4, 6, 5, - 5, 5, 5, 5, 5, 5, 5, 3, 6, 6, - 5, 4, 3, 5, 4, 3, 5, 4, 3, 5, - 4, 3, 5, 4, 3, 5, 4, 78, 5, 5, - 5, 5, 5, 5, 5, 3, 3, 6, 82, 5, - 4, 6, 5, 5, 4, 6, 5, 4, 6, 4, - 6, 4, 6, 5, 4, 4, -1, 4, 6, 5, - 5, -1, 6, 5, -1, -1, -1, -1, -1, -1, - -1, 65 -}; - -/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing - symbol of state STATE-NUM. */ -static const unsigned char yystos[] = -{ - 0, 87, 88, 0, 3, 7, 8, 9, 10, 11, - 12, 13, 14, 15, 16, 17, 18, 19, 31, 32, - 47, 48, 49, 50, 51, 52, 53, 83, 84, 89, - 5, 6, 6, 5, 5, 90, 91, 5, 5, 5, - 5, 5, 5, 5, 5, 5, 5, 5, 4, 5, - 101, 103, 92, 93, 5, 95, 97, 96, 98, 99, - 100, 3, 3, 105, 111, 94, 115, 125, 120, 130, - 135, 140, 7, 20, 21, 102, 7, 26, 27, 28, - 29, 30, 54, 55, 56, 57, 58, 104, 3, 3, - 105, 3, 3, 3, 3, 3, 3, 6, 5, 4, - 5, 18, 5, 5, 5, 5, 5, 5, 5, 5, - 4, 7, 22, 23, 24, 38, 59, 60, 61, 62, - 63, 64, 85, 106, 7, 33, 34, 35, 36, 37, - 112, 7, 65, 116, 7, 69, 126, 7, 67, 121, - 7, 71, 131, 7, 73, 136, 7, 75, 141, 6, - 5, 6, 6, 5, 5, 5, 6, 5, 107, 108, - 5, 5, 5, 5, 5, 5, 4, 5, 6, 6, - 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, - 4, 5, 4, 5, 109, 113, 5, 5, 5, 5, - 5, 5, 117, 127, 122, 132, 137, 142, 3, 3, - 118, 128, 123, 133, 138, 143, 7, 25, 110, 39, - 40, 41, 42, 43, 44, 45, 46, 114, 3, 3, - 3, 3, 3, 3, 5, 4, 5, 5, 6, 6, - 4, 7, 66, 119, 7, 70, 129, 7, 68, 124, - 7, 72, 134, 7, 74, 139, 7, 76, 77, 79, - 80, 81, 144, 6, 5, 4, 6, 4, 6, 4, - 5, 4, 6, 4, 6, 78, 5, 5, 6, 4, - 5, 82 -}; - -#if ! defined (YYSIZE_T) && defined (__SIZE_TYPE__) -# define YYSIZE_T __SIZE_TYPE__ -#endif -#if ! defined (YYSIZE_T) && defined (size_t) -# define YYSIZE_T size_t -#endif -#if ! defined (YYSIZE_T) -# if defined (__STDC__) || defined (__cplusplus) -# include /* INFRINGES ON USER NAME SPACE */ -# define YYSIZE_T size_t -# endif -#endif -#if ! defined (YYSIZE_T) -# define YYSIZE_T unsigned int -#endif - -#define yyerrok (yyerrstatus = 0) -#define yyclearin (yychar = YYEMPTY) -#define YYEMPTY (-2) -#define YYEOF 0 - -#define YYACCEPT goto yyacceptlab -#define YYABORT goto yyabortlab -#define YYERROR goto yyerrlab1 - - -/* Like YYERROR except do call yyerror. This remains here temporarily - to ease the transition to the new meaning of YYERROR, for GCC. - Once GCC version 2 has supplanted version 1, this can go. */ - -#define YYFAIL goto yyerrlab - -#define YYRECOVERING() (!!yyerrstatus) - -#define YYBACKUP(Token, Value) \ -do \ - if (yychar == YYEMPTY && yylen == 1) \ - { \ - yychar = (Token); \ - yylval = (Value); \ - yytoken = YYTRANSLATE (yychar); \ - YYPOPSTACK; \ - goto yybackup; \ - } \ - else \ - { \ - yyerror ("syntax error: cannot back up");\ - YYERROR; \ - } \ -while (0) - -#define YYTERROR 1 -#define YYERRCODE 256 - -/* YYLLOC_DEFAULT -- Compute the default location (before the actions - are run). */ - -#ifndef YYLLOC_DEFAULT -# define YYLLOC_DEFAULT(Current, Rhs, N) \ - Current.first_line = Rhs[1].first_line; \ - Current.first_column = Rhs[1].first_column; \ - Current.last_line = Rhs[N].last_line; \ - Current.last_column = Rhs[N].last_column; -#endif - -/* YYLEX -- calling `yylex' with the right arguments. */ - -#ifdef YYLEX_PARAM -# define YYLEX yylex (YYLEX_PARAM) -#else -# define YYLEX yylex () -#endif - -/* Enable debugging if requested. */ -#if YYDEBUG - -# ifndef YYFPRINTF -# include /* INFRINGES ON USER NAME SPACE */ -# define YYFPRINTF fprintf -# endif - -# define YYDPRINTF(Args) \ -do { \ - if (yydebug) \ - YYFPRINTF Args; \ -} while (0) - -# define YYDSYMPRINT(Args) \ -do { \ - if (yydebug) \ - yysymprint Args; \ -} while (0) - -# define YYDSYMPRINTF(Title, Token, Value, Location) \ -do { \ - if (yydebug) \ - { \ - YYFPRINTF (stderr, "%s ", Title); \ - yysymprint (stderr, \ - Token, Value); \ - YYFPRINTF (stderr, "\n"); \ - } \ -} while (0) - -/*------------------------------------------------------------------. -| yy_stack_print -- Print the state stack from its BOTTOM up to its | -| TOP (cinluded). | -`------------------------------------------------------------------*/ - -#if defined (__STDC__) || defined (__cplusplus) -static void -yy_stack_print (short *bottom, short *top) -#else -static void -yy_stack_print (bottom, top) - short *bottom; - short *top; -#endif -{ - YYFPRINTF (stderr, "Stack now"); - for (/* Nothing. */; bottom <= top; ++bottom) - YYFPRINTF (stderr, " %d", *bottom); - YYFPRINTF (stderr, "\n"); -} - -# define YY_STACK_PRINT(Bottom, Top) \ -do { \ - if (yydebug) \ - yy_stack_print ((Bottom), (Top)); \ -} while (0) - - -/*------------------------------------------------. -| Report that the YYRULE is going to be reduced. | -`------------------------------------------------*/ - -#if defined (__STDC__) || defined (__cplusplus) -static void -yy_reduce_print (int yyrule) -#else -static void -yy_reduce_print (yyrule) - int yyrule; -#endif -{ - int yyi; - unsigned int yylineno = yyrline[yyrule]; - YYFPRINTF (stderr, "Reducing stack by rule %d (line %u), ", - yyrule - 1, yylineno); - /* Print the symbols being reduced, and their result. */ - for (yyi = yyprhs[yyrule]; 0 <= yyrhs[yyi]; yyi++) - YYFPRINTF (stderr, "%s ", yytname [yyrhs[yyi]]); - YYFPRINTF (stderr, "-> %s\n", yytname [yyr1[yyrule]]); -} - -# define YY_REDUCE_PRINT(Rule) \ -do { \ - if (yydebug) \ - yy_reduce_print (Rule); \ -} while (0) - -/* Nonzero means print parse trace. It is left uninitialized so that - multiple parsers can coexist. */ -int yydebug; -#else /* !YYDEBUG */ -# define YYDPRINTF(Args) -# define YYDSYMPRINT(Args) -# define YYDSYMPRINTF(Title, Token, Value, Location) -# define YY_STACK_PRINT(Bottom, Top) -# define YY_REDUCE_PRINT(Rule) -#endif /* !YYDEBUG */ - - -/* YYINITDEPTH -- initial size of the parser's stacks. */ -#ifndef YYINITDEPTH -# define YYINITDEPTH 200 -#endif - -/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only - if the built-in stack extension method is used). - - Do not make this value too large; the results are undefined if - SIZE_MAX < YYSTACK_BYTES (YYMAXDEPTH) - evaluated with infinite-precision integer arithmetic. */ - -#if YYMAXDEPTH == 0 -# undef YYMAXDEPTH -#endif - -#ifndef YYMAXDEPTH -# define YYMAXDEPTH 10000 -#endif - - - -#if YYERROR_VERBOSE - -# ifndef yystrlen -# if defined (__GLIBC__) && defined (_STRING_H) -# define yystrlen strlen -# else -/* Return the length of YYSTR. */ -static YYSIZE_T -# if defined (__STDC__) || defined (__cplusplus) -yystrlen (const char *yystr) -# else -yystrlen (yystr) - const char *yystr; -# endif -{ - register const char *yys = yystr; - - while (*yys++ != '\0') - continue; - - return yys - yystr - 1; -} -# endif -# endif - -# ifndef yystpcpy -# if defined (__GLIBC__) && defined (_STRING_H) && defined (_GNU_SOURCE) -# define yystpcpy stpcpy -# else -/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in - YYDEST. */ -static char * -# if defined (__STDC__) || defined (__cplusplus) -yystpcpy (char *yydest, const char *yysrc) -# else -yystpcpy (yydest, yysrc) - char *yydest; - const char *yysrc; -# endif -{ - register char *yyd = yydest; - register const char *yys = yysrc; - - while ((*yyd++ = *yys++) != '\0') - continue; - - return yyd - 1; -} -# endif -# endif - -#endif /* !YYERROR_VERBOSE */ - - - -#if YYDEBUG -/*--------------------------------. -| Print this symbol on YYOUTPUT. | -`--------------------------------*/ - -#if defined (__STDC__) || defined (__cplusplus) -static void -yysymprint (FILE *yyoutput, int yytype, YYSTYPE *yyvaluep) -#else -static void -yysymprint (yyoutput, yytype, yyvaluep) - FILE *yyoutput; - int yytype; - YYSTYPE *yyvaluep; -#endif -{ - /* Pacify ``unused variable'' warnings. */ - (void) yyvaluep; - - if (yytype < YYNTOKENS) - { - YYFPRINTF (yyoutput, "token %s (", yytname[yytype]); -# ifdef YYPRINT - YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep); -# endif - } - else - YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]); - - switch (yytype) - { - default: - break; - } - YYFPRINTF (yyoutput, ")"); -} - -#endif /* ! YYDEBUG */ -/*-----------------------------------------------. -| Release the memory associated to this symbol. | -`-----------------------------------------------*/ - -#if defined (__STDC__) || defined (__cplusplus) -static void -yydestruct (int yytype, YYSTYPE *yyvaluep) -#else -static void -yydestruct (yytype, yyvaluep) - int yytype; - YYSTYPE *yyvaluep; -#endif -{ - /* Pacify ``unused variable'' warnings. */ - (void) yyvaluep; - - switch (yytype) - { - - default: - break; - } -} - - -/* Prevent warnings from -Wmissing-prototypes. */ - -#ifdef YYPARSE_PARAM -# if defined (__STDC__) || defined (__cplusplus) -int yyparse (void *YYPARSE_PARAM); -# else -int yyparse (); -# endif -#else /* ! YYPARSE_PARAM */ -#if defined (__STDC__) || defined (__cplusplus) -int yyparse (void); -#else -int yyparse (); -#endif -#endif /* ! YYPARSE_PARAM */ - - - -/* The lookahead symbol. */ -int yychar; - -/* The semantic value of the lookahead symbol. */ -YYSTYPE yylval; - -/* Number of syntax errors so far. */ -int yynerrs; - - - -/*----------. -| yyparse. | -`----------*/ - -#ifdef YYPARSE_PARAM -# if defined (__STDC__) || defined (__cplusplus) -int yyparse (void *YYPARSE_PARAM) -# else -int yyparse (YYPARSE_PARAM) - void *YYPARSE_PARAM; -# endif -#else /* ! YYPARSE_PARAM */ -#if defined (__STDC__) || defined (__cplusplus) -int -yyparse (void) -#else -int -yyparse () - -#endif -#endif -{ - - register int yystate; - register int yyn; - int yyresult; - /* Number of tokens to shift before error messages enabled. */ - int yyerrstatus; - /* Lookahead token as an internal (translated) token number. */ - int yytoken = 0; - - /* Three stacks and their tools: - `yyss': related to states, - `yyvs': related to semantic values, - `yyls': related to locations. - - Refer to the stacks thru separate pointers, to allow yyoverflow - to reallocate them elsewhere. */ - - /* The state stack. */ - short yyssa[YYINITDEPTH]; - short *yyss = yyssa; - register short *yyssp; - - /* The semantic value stack. */ - YYSTYPE yyvsa[YYINITDEPTH]; - YYSTYPE *yyvs = yyvsa; - register YYSTYPE *yyvsp; - - - -#define YYPOPSTACK (yyvsp--, yyssp--) - - YYSIZE_T yystacksize = YYINITDEPTH; - - /* The variables used to return semantic value and location from the - action routines. */ - YYSTYPE yyval; - - - /* When reducing, the number of symbols on the RHS of the reduced - rule. */ - int yylen; - - YYDPRINTF ((stderr, "Starting parse\n")); - - yystate = 0; - yyerrstatus = 0; - yynerrs = 0; - yychar = YYEMPTY; /* Cause a token to be read. */ - - /* Initialize stack pointers. - Waste one element of value and location stack - so that they stay on the same level as the state stack. - The wasted elements are never initialized. */ - - yyssp = yyss; - yyvsp = yyvs; - - goto yysetstate; - -/*------------------------------------------------------------. -| yynewstate -- Push a new state, which is found in yystate. | -`------------------------------------------------------------*/ - yynewstate: - /* In all cases, when you get here, the value and location stacks - have just been pushed. so pushing a state here evens the stacks. - */ - yyssp++; - - yysetstate: - *yyssp = yystate; - - if (yyss + yystacksize - 1 <= yyssp) - { - /* Get the current used size of the three stacks, in elements. */ - YYSIZE_T yysize = yyssp - yyss + 1; - -#ifdef yyoverflow - { - /* Give user a chance to reallocate the stack. Use copies of - these so that the &'s don't force the real ones into - memory. */ - YYSTYPE *yyvs1 = yyvs; - short *yyss1 = yyss; - - - /* Each stack pointer address is followed by the size of the - data in use in that stack, in bytes. This used to be a - conditional around just the two extra args, but that might - be undefined if yyoverflow is a macro. */ - yyoverflow ("parser stack overflow", - &yyss1, yysize * sizeof (*yyssp), - &yyvs1, yysize * sizeof (*yyvsp), - - &yystacksize); - - yyss = yyss1; - yyvs = yyvs1; - } -#else /* no yyoverflow */ -# ifndef YYSTACK_RELOCATE - goto yyoverflowlab; -# else - /* Extend the stack our own way. */ - if (YYMAXDEPTH <= yystacksize) - goto yyoverflowlab; - yystacksize *= 2; - if (YYMAXDEPTH < yystacksize) - yystacksize = YYMAXDEPTH; - - { - short *yyss1 = yyss; - union yyalloc *yyptr = - (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); - if (! yyptr) - goto yyoverflowlab; - YYSTACK_RELOCATE (yyss); - YYSTACK_RELOCATE (yyvs); - -# undef YYSTACK_RELOCATE - if (yyss1 != yyssa) - YYSTACK_FREE (yyss1); - } -# endif -#endif /* no yyoverflow */ - - yyssp = yyss + yysize - 1; - yyvsp = yyvs + yysize - 1; - - - YYDPRINTF ((stderr, "Stack size increased to %lu\n", - (unsigned long int) yystacksize)); - - if (yyss + yystacksize - 1 <= yyssp) - YYABORT; - } - - YYDPRINTF ((stderr, "Entering state %d\n", yystate)); - - goto yybackup; - -/*-----------. -| yybackup. | -`-----------*/ -yybackup: - -/* Do appropriate processing given the current state. */ -/* Read a lookahead token if we need one and don't already have one. */ -/* yyresume: */ - - /* First try to decide what to do without reference to lookahead token. */ - - yyn = yypact[yystate]; - if (yyn == YYPACT_NINF) - goto yydefault; - - /* Not known => get a lookahead token if don't already have one. */ - - /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol. */ - if (yychar == YYEMPTY) - { - YYDPRINTF ((stderr, "Reading a token: ")); - yychar = YYLEX; - } - - if (yychar <= YYEOF) - { - yychar = yytoken = YYEOF; - YYDPRINTF ((stderr, "Now at end of input.\n")); - } - else - { - yytoken = YYTRANSLATE (yychar); - YYDSYMPRINTF ("Next token is", yytoken, &yylval, &yylloc); - } - - /* If the proper action on seeing token YYTOKEN is to reduce or to - detect an error, take that action. */ - yyn += yytoken; - if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken) - goto yydefault; - yyn = yytable[yyn]; - if (yyn <= 0) - { - if (yyn == 0 || yyn == YYTABLE_NINF) - goto yyerrlab; - yyn = -yyn; - goto yyreduce; - } - - if (yyn == YYFINAL) - YYACCEPT; - - /* Shift the lookahead token. */ - YYDPRINTF ((stderr, "Shifting token %s, ", yytname[yytoken])); - - /* Discard the token being shifted unless it is eof. */ - if (yychar != YYEOF) - yychar = YYEMPTY; - - *++yyvsp = yylval; - - - /* Count tokens shifted since error; after three, turn off error - status. */ - if (yyerrstatus) - yyerrstatus--; - - yystate = yyn; - goto yynewstate; - - -/*-----------------------------------------------------------. -| yydefault -- do the default action for the current state. | -`-----------------------------------------------------------*/ -yydefault: - yyn = yydefact[yystate]; - if (yyn == 0) - goto yyerrlab; - goto yyreduce; - - -/*-----------------------------. -| yyreduce -- Do a reduction. | -`-----------------------------*/ -yyreduce: - /* yyn is the number of a rule to reduce with. */ - yylen = yyr2[yyn]; - - /* If YYLEN is nonzero, implement the default value of the action: - `$$ = $1'. - - Otherwise, the following line sets YYVAL to garbage. - This behavior is undocumented and Bison - users should not rely upon it. Assigning to YYVAL - unconditionally makes the parser a bit smaller, and it avoids a - GCC warning that YYVAL may be used uninitialized. */ - yyval = yyvsp[1-yylen]; - - - YY_REDUCE_PRINT (yyn); - switch (yyn) - { - case 5: -#line 169 "./pl.y" - { set_check_sum(yyvsp[0].yint); } - break; - - case 6: -#line 171 "./pl.y" - { set_design_size(yyvsp[0].yfix); } - break; - - case 7: -#line 173 "./pl.y" - { set_design_units(yyvsp[0].yfix); } - break; - - case 8: -#line 175 "./pl.y" - { set_coding_scheme(yyvsp[0].ystring); } - break; - - case 9: -#line 177 "./pl.y" - { set_family(yyvsp[0].ystring); } - break; - - case 10: -#line 179 "./pl.y" - { set_face(yyvsp[0].yint); } - break; - - case 11: -#line 181 "./pl.y" - { set_seven_bit_safe_flag(yyvsp[0].yint); } - break; - - case 12: -#line 183 "./pl.y" - { set_header_word(yyvsp[-1].yint, yyvsp[0].yint); } - break; - - case 13: -#line 185 "./pl.y" - { init_parameters(); } - break; - - case 15: -#line 188 "./pl.y" - { init_ligkern(); } - break; - - case 17: -#line 191 "./pl.y" - { set_boundary_character(yyvsp[0].yint); } - break; - - case 18: -#line 193 "./pl.y" - { init_character(yyvsp[0].yint, NULL); } - break; - - case 21: -#line 200 "./pl.y" - { set_vtitle(yyvsp[0].ystring); } - break; - - case 22: -#line 202 "./pl.y" - { init_map_font(yyvsp[0].yint); } - break; - - case 24: -#line 208 "./pl.y" - { set_ofm_level(yyvsp[0].yint); } - break; - - case 25: -#line 210 "./pl.y" - { set_font_dir(yyvsp[0].yint); } - break; - - case 26: -#line 212 "./pl.y" - { init_character(yyvsp[-1].yint,NULL); } - break; - - case 27: -#line 214 "./pl.y" - { copy_characters(yyvsp[-3].yint,yyvsp[-2].yint); } - break; - - case 28: -#line 216 "./pl.y" - {init_font_ivalue(yyvsp[0].yint);} - break; - - case 30: -#line 219 "./pl.y" - { init_font_mvalue(yyvsp[0].yint);} - break; - - case 32: -#line 222 "./pl.y" - { init_font_fvalue(yyvsp[0].yint);} - break; - - case 34: -#line 225 "./pl.y" - { init_font_penalty(yyvsp[0].yint);} - break; - - case 36: -#line 228 "./pl.y" - { init_font_rule(yyvsp[0].yint);} - break; - - case 38: -#line 231 "./pl.y" - { init_font_glue(yyvsp[0].yint);} - break; - - case 42: -#line 243 "./pl.y" - { set_param_word(yyvsp[-1].yint, yyvsp[0].yfix); } - break; - - case 43: -#line 245 "./pl.y" - { set_param_word(yyvsp[-1].yint, yyvsp[0].yfix); } - break; - - case 47: -#line 257 "./pl.y" - { set_label_command(yyvsp[0].yint); } - break; - - case 48: -#line 259 "./pl.y" - { set_label_command(CHAR_BOUNDARY); } - break; - - case 49: -#line 261 "./pl.y" - { set_ligature_command(yyvsp[-2].yint, yyvsp[-1].yint, yyvsp[0].yint); } - break; - - case 50: -#line 263 "./pl.y" - { set_kerning_command(yyvsp[-1].yint, yyvsp[0].yfix); } - break; - - case 51: -#line 265 "./pl.y" - { set_stop_command(); } - break; - - case 52: -#line 267 "./pl.y" - { set_skip_command(yyvsp[0].yint); } - break; - - case 54: -#line 273 "./pl.y" - { set_c_label_command(yyvsp[0].yint); } - break; - - case 55: -#line 275 "./pl.y" - { set_c_kerning_command(yyvsp[-1].yint, yyvsp[0].yfix); } - break; - - case 56: -#line 277 "./pl.y" - { set_c_glue_command(yyvsp[-1].yint, yyvsp[0].yint); } - break; - - case 57: -#line 279 "./pl.y" - { set_c_penalty_command(yyvsp[-1].yint, yyvsp[0].yint); } - break; - - case 58: -#line 281 "./pl.y" - { set_c_penglue_command(yyvsp[-2].yint, yyvsp[-1].yint, yyvsp[0].yint); } - break; - - case 61: -#line 292 "./pl.y" - { set_character_measure(yyvsp[-1].yint, yyvsp[0].yfix); } - break; - - case 62: -#line 294 "./pl.y" - { set_next_larger(yyvsp[0].yint); } - break; - - case 63: -#line 296 "./pl.y" - { init_var_character(); } - break; - - case 66: -#line 303 "./pl.y" - { init_map(); } - break; - - case 67: -#line 305 "./pl.y" - { end_map(); } - break; - - case 68: -#line 310 "./pl.y" - { set_accent(yyvsp[0].yint); } - break; - - case 69: -#line 312 "./pl.y" - { set_character_ivalue(yyvsp[-1].yint, yyvsp[0].yint); } - break; - - case 70: -#line 314 "./pl.y" - { set_character_mvalue(yyvsp[-1].yint, yyvsp[0].yint); } - break; - - case 71: -#line 316 "./pl.y" - { set_character_fvalue(yyvsp[-1].yint, yyvsp[0].yint); } - break; - - case 72: -#line 318 "./pl.y" - { set_character_penalty(yyvsp[-1].yint, yyvsp[0].yint); } - break; - - case 73: -#line 320 "./pl.y" - { set_character_rule(yyvsp[-1].yint, yyvsp[0].yint); } - break; - - case 74: -#line 322 "./pl.y" - { set_character_glue(yyvsp[-1].yint, yyvsp[0].yint); } - break; - - case 77: -#line 334 "./pl.y" - { set_extensible_piece(yyvsp[-1].yint, yyvsp[0].yint); } - break; - - case 81: -#line 349 "./pl.y" - { set_font_name(yyvsp[0].ystring); } - break; - - case 82: -#line 351 "./pl.y" - { set_font_area(yyvsp[0].ystring); } - break; - - case 83: -#line 353 "./pl.y" - { set_font_check_sum(yyvsp[0].yint); } - break; - - case 84: -#line 355 "./pl.y" - { set_font_at(yyvsp[0].yfix); } - break; - - case 85: -#line 357 "./pl.y" - { set_font_design_size(yyvsp[0].yfix); } - break; - - case 89: -#line 369 "./pl.y" - { set_select_font(yyvsp[0].yint); } - break; - - case 90: -#line 371 "./pl.y" - { set_set_char(yyvsp[0].yint); } - break; - - case 91: -#line 373 "./pl.y" - { set_set_rule(yyvsp[-1].yfix, yyvsp[0].yfix); } - break; - - case 92: -#line 375 "./pl.y" - { set_move(yyvsp[-1].yint, yyvsp[0].yfix); } - break; - - case 93: -#line 377 "./pl.y" - { set_push(); } - break; - - case 94: -#line 379 "./pl.y" - { set_pop(); } - break; - - case 95: -#line 381 "./pl.y" - { set_special(yyvsp[0].ystring); } - break; - - case 96: -#line 383 "./pl.y" - { set_special_hex(yyvsp[0].ystring); } - break; - - case 99: -#line 396 "./pl.y" - { init_font_ivalue_entry(yyvsp[0].yint); } - break; - - case 104: -#line 409 "./pl.y" - { set_font_ivalue_definition(yyvsp[0].yint); } - break; - - case 108: -#line 421 "./pl.y" - { init_font_mvalue_entry(yyvsp[0].yint); } - break; - - case 113: -#line 434 "./pl.y" - { set_font_mvalue_definition(yyvsp[0].yfix); } - break; - - case 117: -#line 446 "./pl.y" - { init_font_fvalue_entry(yyvsp[0].yint); } - break; - - case 122: -#line 459 "./pl.y" - { set_font_fvalue_definition(yyvsp[0].yfix); } - break; - - case 126: -#line 471 "./pl.y" - { init_font_penalty_entry(yyvsp[0].yint); } - break; - - case 131: -#line 484 "./pl.y" - { set_font_penalty_definition(yyvsp[0].yint); } - break; - - case 135: -#line 496 "./pl.y" - { init_font_rule_entry(yyvsp[0].yint); } - break; - - case 140: -#line 509 "./pl.y" - { set_font_rule_measure(yyvsp[-1].yint, yyvsp[0].yfix); } - break; - - case 144: -#line 521 "./pl.y" - { init_font_glue_entry(yyvsp[0].yint); } - break; - - case 149: -#line 534 "./pl.y" - { set_font_glue_type(yyvsp[0].yint); } - break; - - case 150: -#line 536 "./pl.y" - { set_font_glue_width(yyvsp[0].yfix); } - break; - - case 151: -#line 538 "./pl.y" - { set_font_glue_character(yyvsp[0].yint); } - break; - - case 152: -#line 540 "./pl.y" - { set_font_glue_rule(yyvsp[-1].yint, yyvsp[0].yint); } - break; - - case 153: -#line 542 "./pl.y" - { set_font_glue_shrink_stretch(yyvsp[-2].yint, yyvsp[-1].yfix, yyvsp[0].yint); } - break; - - - } - -/* Line 999 of yacc.c. */ -#line 1837 "y.tab.c" - - yyvsp -= yylen; - yyssp -= yylen; - - - YY_STACK_PRINT (yyss, yyssp); - - *++yyvsp = yyval; - - - /* Now `shift' the result of the reduction. Determine what state - that goes to, based on the state we popped back to and the rule - number reduced by. */ - - yyn = yyr1[yyn]; - - yystate = yypgoto[yyn - YYNTOKENS] + *yyssp; - if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp) - yystate = yytable[yystate]; - else - yystate = yydefgoto[yyn - YYNTOKENS]; - - goto yynewstate; - - -/*------------------------------------. -| yyerrlab -- here on detecting error | -`------------------------------------*/ -yyerrlab: - /* If not already recovering from an error, report this error. */ - if (!yyerrstatus) - { - ++yynerrs; -#if YYERROR_VERBOSE - yyn = yypact[yystate]; - - if (YYPACT_NINF < yyn && yyn < YYLAST) - { - YYSIZE_T yysize = 0; - int yytype = YYTRANSLATE (yychar); - char *yymsg; - int yyx, yycount; - - yycount = 0; - /* Start YYX at -YYN if negative to avoid negative indexes in - YYCHECK. */ - for (yyx = yyn < 0 ? -yyn : 0; - yyx < (int) (sizeof (yytname) / sizeof (char *)); yyx++) - if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR) - yysize += yystrlen (yytname[yyx]) + 15, yycount++; - yysize += yystrlen ("syntax error, unexpected ") + 1; - yysize += yystrlen (yytname[yytype]); - yymsg = (char *) YYSTACK_ALLOC (yysize); - if (yymsg != 0) - { - char *yyp = yystpcpy (yymsg, "syntax error, unexpected "); - yyp = yystpcpy (yyp, yytname[yytype]); - - if (yycount < 5) - { - yycount = 0; - for (yyx = yyn < 0 ? -yyn : 0; - yyx < (int) (sizeof (yytname) / sizeof (char *)); - yyx++) - if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR) - { - const char *yyq = ! yycount ? ", expecting " : " or "; - yyp = yystpcpy (yyp, yyq); - yyp = yystpcpy (yyp, yytname[yyx]); - yycount++; - } - } - yyerror (yymsg); - YYSTACK_FREE (yymsg); - } - else - yyerror ("syntax error; also virtual memory exhausted"); - } - else -#endif /* YYERROR_VERBOSE */ - yyerror ("syntax error"); - } - - - - if (yyerrstatus == 3) - { - /* If just tried and failed to reuse lookahead token after an - error, discard it. */ - - /* Return failure if at end of input. */ - if (yychar == YYEOF) - { - /* Pop the error token. */ - YYPOPSTACK; - /* Pop the rest of the stack. */ - while (yyss < yyssp) - { - YYDSYMPRINTF ("Error: popping", yystos[*yyssp], yyvsp, yylsp); - yydestruct (yystos[*yyssp], yyvsp); - YYPOPSTACK; - } - YYABORT; - } - - YYDSYMPRINTF ("Error: discarding", yytoken, &yylval, &yylloc); - yydestruct (yytoken, &yylval); - yychar = YYEMPTY; - - } - - /* Else will try to reuse lookahead token after shifting the error - token. */ - goto yyerrlab1; - - -/*----------------------------------------------------. -| yyerrlab1 -- error raised explicitly by an action. | -`----------------------------------------------------*/ -yyerrlab1: - yyerrstatus = 3; /* Each real token shifted decrements this. */ - - for (;;) - { - yyn = yypact[yystate]; - if (yyn != YYPACT_NINF) - { - yyn += YYTERROR; - if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR) - { - yyn = yytable[yyn]; - if (0 < yyn) - break; - } - } - - /* Pop the current state because it cannot handle the error token. */ - if (yyssp == yyss) - YYABORT; - - YYDSYMPRINTF ("Error: popping", yystos[*yyssp], yyvsp, yylsp); - yydestruct (yystos[yystate], yyvsp); - yyvsp--; - yystate = *--yyssp; - - YY_STACK_PRINT (yyss, yyssp); - } - - if (yyn == YYFINAL) - YYACCEPT; - - YYDPRINTF ((stderr, "Shifting error token, ")); - - *++yyvsp = yylval; - - - yystate = yyn; - goto yynewstate; - - -/*-------------------------------------. -| yyacceptlab -- YYACCEPT comes here. | -`-------------------------------------*/ -yyacceptlab: - yyresult = 0; - goto yyreturn; - -/*-----------------------------------. -| yyabortlab -- YYABORT comes here. | -`-----------------------------------*/ -yyabortlab: - yyresult = 1; - goto yyreturn; - -#ifndef yyoverflow -/*----------------------------------------------. -| yyoverflowlab -- parser overflow comes here. | -`----------------------------------------------*/ -yyoverflowlab: - yyerror ("parser stack overflow"); - yyresult = 2; - /* Fall through. */ -#endif - -yyreturn: -#ifndef yyoverflow - if (yyss != yyssa) - YYSTACK_FREE (yyss); -#endif - return yyresult; -} - - - diff --git a/Build/source/texk/web2c/omegafonts/y_tab.h-dist b/Build/source/texk/web2c/omegafonts/y_tab.h-dist deleted file mode 100644 index 6c108f3e665..00000000000 --- a/Build/source/texk/web2c/omegafonts/y_tab.h-dist +++ /dev/null @@ -1,214 +0,0 @@ -/* A Bison parser, made by GNU Bison 1.875a. */ - -/* Skeleton parser for Yacc-like parsing with Bison, - Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003 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. */ - -/* As a special exception, when this file is copied by Bison into a - Bison output file, you may use that output file without restriction. - This special exception was added by the Free Software Foundation - in version 1.24 of Bison. */ - -/* Tokens. */ -#ifndef YYTOKENTYPE -# define YYTOKENTYPE - /* Put the tokens into the symbol table, so that GDB and other debuggers - know about them. */ - enum yytokentype { - LEFT = 258, - RIGHT = 259, - NUMBER = 260, - FIX = 261, - COMMENT = 262, - CHECKSUM = 263, - DESIGNSIZE = 264, - DESIGNUNITS = 265, - CODINGSCHEME = 266, - FAMILY = 267, - FACE = 268, - SEVENBITSAFEFLAG = 269, - HEADER = 270, - FONTDIMEN = 271, - LIGTABLE = 272, - BOUNDARYCHAR = 273, - CHARACTER = 274, - NAMEDPARAMETER = 275, - PARAMETER = 276, - CHARMEASURE = 277, - NEXTLARGER = 278, - VARCHAR = 279, - EXTEN = 280, - LABEL = 281, - LIG = 282, - KRN = 283, - STOP = 284, - SKIP = 285, - VTITLE = 286, - MAPFONT = 287, - FONTNAME = 288, - FONTAREA = 289, - FONTCHECKSUM = 290, - FONTAT = 291, - FONTDSIZE = 292, - MAP = 293, - SELECTFONT = 294, - SETCHAR = 295, - SETRULE = 296, - MOVE = 297, - PUSH = 298, - POP = 299, - SPECIAL = 300, - SPECIALHEX = 301, - CHARREPEAT = 302, - FONTIVALUE = 303, - FONTFVALUE = 304, - FONTMVALUE = 305, - FONTPENALTY = 306, - FONTRULE = 307, - FONTGLUE = 308, - CLABEL = 309, - CKRN = 310, - CGLUE = 311, - CPENALTY = 312, - CPENGLUE = 313, - CHARIVALUE = 314, - CHARFVALUE = 315, - CHARMVALUE = 316, - CHARPENALTY = 317, - CHARRULE = 318, - CHARGLUE = 319, - IVALUE = 320, - IVALUEVAL = 321, - MVALUE = 322, - MVALUEVAL = 323, - FVALUE = 324, - FVALUEVAL = 325, - PENALTY = 326, - PENALTYVAL = 327, - RULE = 328, - RULEMEASURE = 329, - GLUE = 330, - GLUEWD = 331, - GLUETYPE = 332, - GLUEKIND = 333, - GLUERULE = 334, - GLUECHAR = 335, - GLUESHRINKSTRETCH = 336, - GLUEORDER = 337, - OFMLEVEL = 338, - FONTDIR = 339, - ACCENT = 340 - }; -#endif -#define LEFT 258 -#define RIGHT 259 -#define NUMBER 260 -#define FIX 261 -#define COMMENT 262 -#define CHECKSUM 263 -#define DESIGNSIZE 264 -#define DESIGNUNITS 265 -#define CODINGSCHEME 266 -#define FAMILY 267 -#define FACE 268 -#define SEVENBITSAFEFLAG 269 -#define HEADER 270 -#define FONTDIMEN 271 -#define LIGTABLE 272 -#define BOUNDARYCHAR 273 -#define CHARACTER 274 -#define NAMEDPARAMETER 275 -#define PARAMETER 276 -#define CHARMEASURE 277 -#define NEXTLARGER 278 -#define VARCHAR 279 -#define EXTEN 280 -#define LABEL 281 -#define LIG 282 -#define KRN 283 -#define STOP 284 -#define SKIP 285 -#define VTITLE 286 -#define MAPFONT 287 -#define FONTNAME 288 -#define FONTAREA 289 -#define FONTCHECKSUM 290 -#define FONTAT 291 -#define FONTDSIZE 292 -#define MAP 293 -#define SELECTFONT 294 -#define SETCHAR 295 -#define SETRULE 296 -#define MOVE 297 -#define PUSH 298 -#define POP 299 -#define SPECIAL 300 -#define SPECIALHEX 301 -#define CHARREPEAT 302 -#define FONTIVALUE 303 -#define FONTFVALUE 304 -#define FONTMVALUE 305 -#define FONTPENALTY 306 -#define FONTRULE 307 -#define FONTGLUE 308 -#define CLABEL 309 -#define CKRN 310 -#define CGLUE 311 -#define CPENALTY 312 -#define CPENGLUE 313 -#define CHARIVALUE 314 -#define CHARFVALUE 315 -#define CHARMVALUE 316 -#define CHARPENALTY 317 -#define CHARRULE 318 -#define CHARGLUE 319 -#define IVALUE 320 -#define IVALUEVAL 321 -#define MVALUE 322 -#define MVALUEVAL 323 -#define FVALUE 324 -#define FVALUEVAL 325 -#define PENALTY 326 -#define PENALTYVAL 327 -#define RULE 328 -#define RULEMEASURE 329 -#define GLUE 330 -#define GLUEWD 331 -#define GLUETYPE 332 -#define GLUEKIND 333 -#define GLUERULE 334 -#define GLUECHAR 335 -#define GLUESHRINKSTRETCH 336 -#define GLUEORDER 337 -#define OFMLEVEL 338 -#define FONTDIR 339 -#define ACCENT 340 - - - - -#if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED) -typedef int YYSTYPE; -# define yystype YYSTYPE /* obsolescent; will be withdrawn */ -# define YYSTYPE_IS_DECLARED 1 -# define YYSTYPE_IS_TRIVIAL 1 -#endif - -extern YYSTYPE yylval; - - - diff --git a/Build/source/texk/web2c/otps/lex.yy.c-dist b/Build/source/texk/web2c/otps/lex.yy.c-dist deleted file mode 100644 index 7211b4da704..00000000000 --- a/Build/source/texk/web2c/otps/lex.yy.c-dist +++ /dev/null @@ -1,1828 +0,0 @@ -/* A lexical scanner generated by flex*/ - -/* Scanner skeleton version: - * $Header: /home/daffy/u0/vern/flex/RCS/flex.skl,v 2.91 96/09/10 16:58:48 vern Exp $ - */ - -#define FLEX_SCANNER -#define YY_FLEX_MAJOR_VERSION 2 -#define YY_FLEX_MINOR_VERSION 5 - -#include -#include - - -/* cfront 1.2 defines "c_plusplus" instead of "__cplusplus" */ -#ifdef c_plusplus -#ifndef __cplusplus -#define __cplusplus -#endif -#endif - - -#ifdef __cplusplus - -#include - -/* Use prototypes in function declarations. */ -#define YY_USE_PROTOS - -/* The "const" storage-class-modifier is valid. */ -#define YY_USE_CONST - -#else /* ! __cplusplus */ - -#if __STDC__ - -#define YY_USE_PROTOS -#define YY_USE_CONST - -#endif /* __STDC__ */ -#endif /* ! __cplusplus */ - -#ifdef __TURBOC__ - #pragma warn -rch - #pragma warn -use -#include -#include -#define YY_USE_CONST -#define YY_USE_PROTOS -#endif - -#ifdef YY_USE_CONST -#define yyconst const -#else -#define yyconst -#endif - - -#ifdef YY_USE_PROTOS -#define YY_PROTO(proto) proto -#else -#define YY_PROTO(proto) () -#endif - -/* Returned upon end-of-file. */ -#define YY_NULL 0 - -/* Promotes a possibly negative, possibly signed char to an unsigned - * integer for use as an array index. If the signed char is negative, - * we want to instead treat it as an 8-bit unsigned char, hence the - * double cast. - */ -#define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c) - -/* Enter a start condition. This macro really ought to take a parameter, - * but we do it the disgusting crufty way forced on us by the ()-less - * definition of BEGIN. - */ -#define BEGIN yy_start = 1 + 2 * - -/* Translate the current start state into a value that can be later handed - * to BEGIN to return to the state. The YYSTATE alias is for lex - * compatibility. - */ -#define YY_START ((yy_start - 1) / 2) -#define YYSTATE YY_START - -/* Action number for EOF rule of a given start state. */ -#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1) - -/* Special action meaning "start processing a new file". */ -#define YY_NEW_FILE yyrestart( yyin ) - -#define YY_END_OF_BUFFER_CHAR 0 - -/* Size of default input buffer. */ -#define YY_BUF_SIZE 16384 - -typedef struct yy_buffer_state *YY_BUFFER_STATE; - -extern int yyleng; -extern FILE *yyin, *yyout; - -#define EOB_ACT_CONTINUE_SCAN 0 -#define EOB_ACT_END_OF_FILE 1 -#define EOB_ACT_LAST_MATCH 2 - -/* The funky do-while in the following #define is used to turn the definition - * int a single C statement (which needs a semi-colon terminator). This - * avoids problems with code like: - * - * if ( condition_holds ) - * yyless( 5 ); - * else - * do_something_else(); - * - * Prior to using the do-while the compiler would get upset at the - * "else" because it interpreted the "if" statement as being all - * done when it reached the ';' after the yyless() call. - */ - -/* Return all but the first 'n' matched characters back to the input stream. */ - -#define yyless(n) \ - do \ - { \ - /* Undo effects of setting up yytext. */ \ - *yy_cp = yy_hold_char; \ - YY_RESTORE_YY_MORE_OFFSET \ - yy_c_buf_p = yy_cp = yy_bp + n - YY_MORE_ADJ; \ - YY_DO_BEFORE_ACTION; /* set up yytext again */ \ - } \ - while ( 0 ) - -#define unput(c) yyunput( c, yytext_ptr ) - -/* Some routines like yy_flex_realloc() are emitted as static but are - not called by all lexers. This generates warnings in some compilers, - notably GCC. Arrange to suppress these. */ -#ifdef __GNUC__ -#define YY_MAY_BE_UNUSED __attribute__((unused)) -#else -#define YY_MAY_BE_UNUSED -#endif - -/* The following is because we cannot portably get our hands on size_t - * (without autoconf's help, which isn't available because we want - * flex-generated scanners to compile on their own). - */ -typedef unsigned int yy_size_t; - - -struct yy_buffer_state - { - FILE *yy_input_file; - - char *yy_ch_buf; /* input buffer */ - char *yy_buf_pos; /* current position in input buffer */ - - /* Size of input buffer in bytes, not including room for EOB - * characters. - */ - yy_size_t yy_buf_size; - - /* Number of characters read into yy_ch_buf, not including EOB - * characters. - */ - int yy_n_chars; - - /* Whether we "own" the buffer - i.e., we know we created it, - * and can realloc() it to grow it, and should free() it to - * delete it. - */ - int yy_is_our_buffer; - - /* Whether this is an "interactive" input source; if so, and - * if we're using stdio for input, then we want to use getc() - * instead of fread(), to make sure we stop fetching input after - * each newline. - */ - int yy_is_interactive; - - /* Whether we're considered to be at the beginning of a line. - * If so, '^' rules will be active on the next match, otherwise - * not. - */ - int yy_at_bol; - - /* Whether to try to fill the input buffer when we reach the - * end of it. - */ - int yy_fill_buffer; - - int yy_buffer_status; -#define YY_BUFFER_NEW 0 -#define YY_BUFFER_NORMAL 1 - /* When an EOF's been seen but there's still some text to process - * then we mark the buffer as YY_EOF_PENDING, to indicate that we - * shouldn't try reading from the input source any more. We might - * still have a bunch of tokens to match, though, because of - * possible backing-up. - * - * When we actually see the EOF, we change the status to "new" - * (via yyrestart()), so that the user can continue scanning by - * just pointing yyin at a new input file. - */ -#define YY_BUFFER_EOF_PENDING 2 - }; - -static YY_BUFFER_STATE yy_current_buffer = 0; - -/* We provide macros for accessing buffer states in case in the - * future we want to put the buffer states in a more general - * "scanner state". - */ -#define YY_CURRENT_BUFFER yy_current_buffer - - -/* yy_hold_char holds the character lost when yytext is formed. */ -static char yy_hold_char; - -static int yy_n_chars; /* number of characters read into yy_ch_buf */ - - -int yyleng; - -/* Points to current character in buffer. */ -static char *yy_c_buf_p = (char *) 0; -static int yy_init = 1; /* whether we need to initialize */ -static int yy_start = 0; /* start state number */ - -/* Flag which is used to allow yywrap()'s to do buffer switches - * instead of setting up a fresh yyin. A bit of a hack ... - */ -static int yy_did_buffer_switch_on_eof; - -void yyrestart YY_PROTO(( FILE *input_file )); - -void yy_switch_to_buffer YY_PROTO(( YY_BUFFER_STATE new_buffer )); -void yy_load_buffer_state YY_PROTO(( void )); -YY_BUFFER_STATE yy_create_buffer YY_PROTO(( FILE *file, int size )); -void yy_delete_buffer YY_PROTO(( YY_BUFFER_STATE b )); -void yy_init_buffer YY_PROTO(( YY_BUFFER_STATE b, FILE *file )); -void yy_flush_buffer YY_PROTO(( YY_BUFFER_STATE b )); -#define YY_FLUSH_BUFFER yy_flush_buffer( yy_current_buffer ) - -YY_BUFFER_STATE yy_scan_buffer YY_PROTO(( char *base, yy_size_t size )); -YY_BUFFER_STATE yy_scan_string YY_PROTO(( yyconst char *yy_str )); -YY_BUFFER_STATE yy_scan_bytes YY_PROTO(( yyconst char *bytes, int len )); - -static void *yy_flex_alloc YY_PROTO(( yy_size_t )); -static void *yy_flex_realloc YY_PROTO(( void *, yy_size_t )) YY_MAY_BE_UNUSED; -static void yy_flex_free YY_PROTO(( void * )); - -#define yy_new_buffer yy_create_buffer - -#define yy_set_interactive(is_interactive) \ - { \ - if ( ! yy_current_buffer ) \ - yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \ - yy_current_buffer->yy_is_interactive = is_interactive; \ - } - -#define yy_set_bol(at_bol) \ - { \ - if ( ! yy_current_buffer ) \ - yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \ - yy_current_buffer->yy_at_bol = at_bol; \ - } - -#define YY_AT_BOL() (yy_current_buffer->yy_at_bol) - - -#define YY_USES_REJECT -typedef unsigned char YY_CHAR; -FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0; -typedef int yy_state_type; -#define YY_FLEX_LEX_COMPAT -extern int yylineno; -int yylineno = 1; -extern char yytext[]; - - -static yy_state_type yy_get_previous_state YY_PROTO(( void )); -static yy_state_type yy_try_NUL_trans YY_PROTO(( yy_state_type current_state )); -static int yy_get_next_buffer YY_PROTO(( void )); -static void yy_fatal_error YY_PROTO(( yyconst char msg[] )); - -/* Done after the current pattern has been matched and before the - * corresponding action - sets up yytext. - */ -#define YY_DO_BEFORE_ACTION \ - yytext_ptr = yy_bp; \ - yyleng = (int) (yy_cp - yy_bp); \ - yy_hold_char = *yy_cp; \ - *yy_cp = '\0'; \ - if ( yyleng + yy_more_offset >= YYLMAX ) \ - YY_FATAL_ERROR( "token too large, exceeds YYLMAX" ); \ - yy_flex_strncpy( &yytext[yy_more_offset], yytext_ptr, yyleng + 1 ); \ - yyleng += yy_more_offset; \ - yy_prev_more_offset = yy_more_offset; \ - yy_more_offset = 0; \ - yy_c_buf_p = yy_cp; - -#define YY_NUM_RULES 25 -#define YY_END_OF_BUFFER 26 -static yyconst short int yy_acclist[130] = - { 0, - 26, 24, 25, 1, 24, 25, 3, 25, 3, 24, - 25, 24, 25, 24, 25, 6, 24, 25, 24, 25, - 24, 25, 24, 25, 8, 24, 25, 24, 25, 8, - 24, 25, 8, 24, 25, 8, 24, 25, 8, 24, - 25, 8, 24, 25, 8, 24, 25, 8, 24, 25, - 8, 24, 25, 8, 24, 25, 8, 24, 25, 3, - 9, 2, 6, 11, 10, 8, 8, 8, 8, 8, - 8, 8, 8, 8, 8, 8, 8, 8, 4, 5, - 7, 8, 8, 8, 8, 8, 8, 8, 8, 8, - 8, 8, 8, 8, 22, 20, 23, 8, 8, 21, - - 8, 19, 8, 8, 8, 8, 8, 8, 8, 18, - 8, 8, 8, 8, 12, 8, 8, 8, 8, 8, - 13, 15, 16, 14, 8, 8, 8, 8, 17 - } ; - -static yyconst short int yy_accept[103] = - { 0, - 1, 1, 1, 2, 4, 7, 9, 12, 14, 16, - 19, 21, 23, 25, 28, 30, 33, 36, 39, 42, - 45, 48, 51, 54, 57, 60, 61, 61, 62, 62, - 63, 64, 65, 66, 66, 66, 67, 67, 68, 69, - 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, - 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, - 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, - 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, - 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, - - 130, 130 - } ; - -static yyconst int yy_ec[256] = - { 0, - 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, - 1, 1, 4, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 5, 6, 7, 6, 6, 8, 6, 9, 6, - 6, 6, 6, 6, 6, 6, 6, 10, 10, 10, - 10, 10, 10, 10, 10, 11, 11, 12, 6, 13, - 14, 15, 6, 16, 17, 17, 17, 17, 17, 17, - 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, - 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, - 6, 6, 6, 6, 19, 20, 21, 22, 17, 23, - - 24, 17, 25, 26, 27, 18, 18, 28, 29, 30, - 31, 32, 18, 33, 34, 35, 36, 37, 18, 38, - 18, 18, 6, 6, 6, 6, 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 - } ; - -static yyconst int yy_meta[39] = - { 0, - 1, 1, 1, 1, 2, 2, 2, 2, 2, 3, - 3, 2, 2, 2, 2, 2, 3, 4, 4, 2, - 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, - 4, 4, 4, 4, 4, 4, 4, 4 - } ; - -static yyconst short int yy_base[107] = - { 0, - 0, 0, 130, 131, 131, 131, 126, 121, 124, 29, - 112, 110, 34, 0, 0, 96, 99, 95, 12, 91, - 89, 83, 13, 83, 96, 131, 109, 108, 111, 131, - 35, 131, 131, 0, 103, 0, 103, 84, 85, 72, - 85, 75, 74, 82, 69, 71, 68, 80, 78, 0, - 89, 131, 77, 85, 84, 83, 61, 57, 80, 59, - 78, 63, 53, 59, 52, 131, 131, 131, 61, 49, - 131, 47, 131, 70, 57, 56, 55, 44, 65, 41, - 131, 41, 40, 39, 38, 131, 59, 58, 57, 56, - 40, 131, 131, 131, 131, 35, 35, 30, 36, 131, - - 131, 50, 54, 56, 59, 44 - } ; - -static yyconst short int yy_def[107] = - { 0, - 101, 1, 101, 101, 101, 101, 101, 102, 103, 101, - 101, 101, 101, 104, 105, 104, 104, 104, 104, 104, - 104, 104, 104, 104, 104, 101, 102, 101, 103, 101, - 101, 101, 101, 106, 101, 104, 101, 104, 104, 104, - 104, 104, 104, 104, 104, 104, 104, 104, 104, 106, - 101, 101, 104, 104, 104, 104, 104, 104, 104, 104, - 104, 104, 104, 104, 104, 101, 101, 101, 104, 104, - 101, 104, 101, 104, 104, 104, 104, 104, 104, 104, - 101, 104, 104, 104, 104, 101, 104, 104, 104, 104, - 104, 101, 101, 101, 101, 104, 104, 104, 104, 101, - - 0, 101, 101, 101, 101, 101 - } ; - -static yyconst short int yy_nxt[170] = - { 0, - 4, 5, 6, 7, 5, 4, 8, 9, 4, 10, - 10, 4, 11, 12, 4, 13, 14, 14, 4, 15, - 16, 17, 18, 19, 14, 14, 20, 14, 21, 14, - 22, 23, 14, 24, 25, 14, 14, 14, 31, 31, - 34, 41, 35, 46, 31, 31, 50, 100, 47, 42, - 27, 27, 27, 27, 29, 29, 29, 29, 36, 36, - 37, 37, 37, 99, 98, 97, 96, 95, 94, 93, - 92, 91, 90, 89, 88, 87, 86, 85, 84, 83, - 82, 81, 80, 79, 78, 77, 76, 75, 74, 73, - 72, 71, 70, 69, 68, 67, 66, 65, 51, 64, - - 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, - 53, 52, 51, 30, 27, 28, 49, 48, 45, 44, - 43, 40, 39, 38, 33, 32, 30, 28, 26, 101, - 3, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101 - } ; - -static yyconst short int yy_chk[170] = - { 0, - 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, 10, 10, - 13, 19, 13, 23, 31, 31, 106, 99, 23, 19, - 102, 102, 102, 102, 103, 103, 103, 103, 104, 104, - 105, 105, 105, 98, 97, 96, 91, 90, 89, 88, - 87, 85, 84, 83, 82, 80, 79, 78, 77, 76, - 75, 74, 72, 70, 69, 65, 64, 63, 62, 61, - 60, 59, 58, 57, 56, 55, 54, 53, 51, 49, - - 48, 47, 46, 45, 44, 43, 42, 41, 40, 39, - 38, 37, 35, 29, 28, 27, 25, 24, 22, 21, - 20, 18, 17, 16, 12, 11, 9, 8, 7, 3, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101 - } ; - -static yy_state_type yy_state_buf[YY_BUF_SIZE + 2], *yy_state_ptr; -static char *yy_full_match; -static int yy_lp; -#define REJECT \ -{ \ -*yy_cp = yy_hold_char; /* undo effects of setting up yytext */ \ -yy_cp = yy_full_match; /* restore poss. backed-over text */ \ -++yy_lp; \ -goto find_rule; \ -} -static int yy_more_offset = 0; -static int yy_prev_more_offset = 0; -#define yymore() (yy_more_offset = yy_flex_strlen( yytext )) -#define YY_NEED_STRLEN -#define YY_MORE_ADJ 0 -#define YY_RESTORE_YY_MORE_OFFSET \ - { \ - yy_more_offset = yy_prev_more_offset; \ - yyleng -= yy_more_offset; \ - } -#ifndef YYLMAX -#define YYLMAX 8192 -#endif - -char yytext[YYLMAX]; -char *yytext_ptr; -#line 1 "./otp.l" -#define INITIAL 0 -/* otp.l: Lexical analysis for OTP files - -This file is part of Omega, -which is based on the web2c distribution of TeX, - -Copyright (c) 1994--2001 John Plaice and Yannis Haralambous -Copyright (c) 2002 Behdad Esfahbod -Copyright (C) 2002, 2005, 2006 Roozbeh Pournader - -Omega 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 of the License, or -(at your option) any later version. - -Omega 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 Omega; if not, write to the Free Software Foundation, Inc., -59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. - -*/ -#line 27 "./otp.l" -#include "routines.h" -#include "yystype.h" -#include "y_tab.h" -#define YY_NO_UNPUT -#define OTP_MAXCODE 0xFFFF -int line_number = 1; -int i,j,last; -extern YYSTYPE yylval; -#line 519 "lex.yy.c" - -/* Macros after this point can all be overridden by user definitions in - * section 1. - */ - -#ifndef YY_SKIP_YYWRAP -#ifdef __cplusplus -extern "C" int yywrap YY_PROTO(( void )); -#else -extern int yywrap YY_PROTO(( void )); -#endif -#endif - -#ifndef YY_NO_UNPUT -static void yyunput YY_PROTO(( int c, char *buf_ptr )); -#endif - -#ifndef yytext_ptr -static void yy_flex_strncpy YY_PROTO(( char *, yyconst char *, int )); -#endif - -#ifdef YY_NEED_STRLEN -static int yy_flex_strlen YY_PROTO(( yyconst char * )); -#endif - -#ifndef YY_NO_INPUT -#ifdef __cplusplus -static int yyinput YY_PROTO(( void )); -#else -static int input YY_PROTO(( void )); -#endif -#endif - -#if YY_STACK_USED -static int yy_start_stack_ptr = 0; -static int yy_start_stack_depth = 0; -static int *yy_start_stack = 0; -#ifndef YY_NO_PUSH_STATE -static void yy_push_state YY_PROTO(( int new_state )); -#endif -#ifndef YY_NO_POP_STATE -static void yy_pop_state YY_PROTO(( void )); -#endif -#ifndef YY_NO_TOP_STATE -static int yy_top_state YY_PROTO(( void )); -#endif - -#else -#define YY_NO_PUSH_STATE 1 -#define YY_NO_POP_STATE 1 -#define YY_NO_TOP_STATE 1 -#endif - -#ifdef YY_MALLOC_DECL -YY_MALLOC_DECL -#else -#if __STDC__ -#ifndef __cplusplus -#include -#endif -#else -/* Just try to get by without declaring the routines. This will fail - * miserably on non-ANSI systems for which sizeof(size_t) != sizeof(int) - * or sizeof(void*) != sizeof(int). - */ -#endif -#endif - -/* Amount of stuff to slurp up with each read. */ -#ifndef YY_READ_BUF_SIZE -#define YY_READ_BUF_SIZE 8192 -#endif - -/* Copy whatever the last rule matched to the standard output. */ - -#ifndef ECHO -/* This used to be an fputs(), but since the string might contain NUL's, - * we now use fwrite(). - */ -#define ECHO (void) fwrite( yytext, yyleng, 1, yyout ) -#endif - -/* Gets input and stuffs it into "buf". number of characters read, or YY_NULL, - * is returned in "result". - */ -#ifndef YY_INPUT -#define YY_INPUT(buf,result,max_size) \ - if ( yy_current_buffer->yy_is_interactive ) \ - { \ - int c = '*', n; \ - for ( n = 0; n < max_size && \ - (c = getc( yyin )) != EOF && c != '\n'; ++n ) \ - buf[n] = (char) c; \ - if ( c == '\n' ) \ - buf[n++] = (char) c; \ - if ( c == EOF && ferror( yyin ) ) \ - YY_FATAL_ERROR( "input in flex scanner failed" ); \ - result = n; \ - } \ - else if ( ((result = fread( buf, 1, max_size, yyin )) == 0) \ - && ferror( yyin ) ) \ - YY_FATAL_ERROR( "input in flex scanner failed" ); -#endif - -/* No semi-colon after return; correct usage is to write "yyterminate();" - - * we don't want an extra ';' after the "return" because that will cause - * some compilers to complain about unreachable statements. - */ -#ifndef yyterminate -#define yyterminate() return YY_NULL -#endif - -/* Number of entries by which start-condition stack grows. */ -#ifndef YY_START_STACK_INCR -#define YY_START_STACK_INCR 25 -#endif - -/* Report a fatal error. */ -#ifndef YY_FATAL_ERROR -#define YY_FATAL_ERROR(msg) yy_fatal_error( msg ) -#endif - -/* Default declaration of generated scanner - a define so the user can - * easily add parameters. - */ -#ifndef YY_DECL -#define YY_DECL int yylex YY_PROTO(( void )) -#endif - -/* Code executed at the beginning of each rule, after yytext and yyleng - * have been set up. - */ -#ifndef YY_USER_ACTION -#define YY_USER_ACTION -#endif - -/* Code executed at the end of each rule. */ -#ifndef YY_BREAK -#define YY_BREAK break; -#endif - -#define YY_RULE_SETUP \ - YY_USER_ACTION - -YY_DECL - { - register yy_state_type yy_current_state; - register char *yy_cp = NULL, *yy_bp = NULL; - register int yy_act; - -#line 44 "./otp.l" - -#line 672 "lex.yy.c" - - if ( yy_init ) - { - yy_init = 0; - -#ifdef YY_USER_INIT - YY_USER_INIT; -#endif - - if ( ! yy_start ) - yy_start = 1; /* first start state */ - - if ( ! yyin ) - yyin = stdin; - - if ( ! yyout ) - yyout = stdout; - - if ( ! yy_current_buffer ) - yy_current_buffer = - yy_create_buffer( yyin, YY_BUF_SIZE ); - - yy_load_buffer_state(); - } - - while ( 1 ) /* loops until end-of-file is reached */ - { - yy_cp = yy_c_buf_p; - - /* Support of yytext. */ - *yy_cp = yy_hold_char; - - /* yy_bp points to the position in yy_ch_buf of the start of - * the current run. - */ - yy_bp = yy_cp; - - yy_current_state = yy_start; - yy_state_ptr = yy_state_buf; - *yy_state_ptr++ = yy_current_state; -yy_match: - do - { - register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)]; - while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) - { - yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 102 ) - yy_c = yy_meta[(unsigned int) yy_c]; - } - yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; - *yy_state_ptr++ = yy_current_state; - ++yy_cp; - } - while ( yy_base[yy_current_state] != 131 ); - -yy_find_action: - yy_current_state = *--yy_state_ptr; - yy_lp = yy_accept[yy_current_state]; -find_rule: /* we branch to this label when backing up */ - for ( ; ; ) /* until we find what rule we matched */ - { - if ( yy_lp && yy_lp < yy_accept[yy_current_state + 1] ) - { - yy_act = yy_acclist[yy_lp]; - { - yy_full_match = yy_cp; - break; - } - } - --yy_cp; - yy_current_state = *--yy_state_ptr; - yy_lp = yy_accept[yy_current_state]; - } - - YY_DO_BEFORE_ACTION; - - if ( yy_act != YY_END_OF_BUFFER ) - { - int yyl; - for ( yyl = 0; yyl < yyleng; ++yyl ) - if ( yytext[yyl] == '\n' ) - ++yylineno; - } - -do_action: /* This label is used only to access EOF actions. */ - - - switch ( yy_act ) - { /* beginning of action switch */ -case 1: -YY_RULE_SETUP -#line 45 "./otp.l" -{} - YY_BREAK -case 2: -YY_RULE_SETUP -#line 46 "./otp.l" -{ line_number++;} - YY_BREAK -case 3: -YY_RULE_SETUP -#line 47 "./otp.l" -{ line_number++;} - YY_BREAK -case 4: -YY_RULE_SETUP -#line 48 "./otp.l" -{ - yylval.yint=0; - for (i=2; i='0')&&(j<='9')) { - yylval.yint = (yylval.yint*16)+(j-'0'); - } else if ((j>='a')&&(j<='f')) { - yylval.yint = (yylval.yint*16)+(j-'a'+10); - } else { /* ((j>='A') && (j>='F')) */ - yylval.yint = (yylval.yint*16)+(j-'A'+10); - } - if (yylval.yint>OTP_MAXCODE) { - fprintf(stderr, "line %d: value too large (%x)\n", - line_number, yylval.yint); - exit(1); - } - } - return(NUMBER); - } - YY_BREAK -case 5: -YY_RULE_SETUP -#line 67 "./otp.l" -{ - yylval.yint=0; - for (i=2; iOTP_MAXCODE) { - fprintf(stderr, "line %d: value too large (%o)\n", - line_number, yylval.yint); - exit(1); - } - } - return(NUMBER); - } - YY_BREAK -case 6: -YY_RULE_SETUP -#line 80 "./otp.l" -{ - yylval.yint=0; - for (i=0; iOTP_MAXCODE) { - fprintf(stderr, "line %d: value too large (%d)\n", - line_number, yylval.yint); - exit(1); - } - } - return(NUMBER); - } - YY_BREAK -case 7: -YY_RULE_SETUP -#line 93 "./otp.l" -{ - yylval.yint=yytext[1]; - return(NUMBER); - } - YY_BREAK -case 8: -YY_RULE_SETUP -#line 97 "./otp.l" -{ yylval.ystring=xstrdup(yytext); return(ID); } - YY_BREAK -case 9: -YY_RULE_SETUP -#line 98 "./otp.l" -{ - char *newtext; - last=yyleng-2; - i=0; - j=1; - newtext=yylval.ystring=xstrdup(yytext); - while (j<=last) { - newtext[i]=yytext[j]; - if ((yytext[j]=='"') && (yytext[j+1]=='"')) j=j+2; - else j++; - i++; - } - newtext[i]='\0'; - return(STRING); - } - YY_BREAK -case 10: -YY_RULE_SETUP -#line 113 "./otp.l" -return(RIGHTARROW); - YY_BREAK -case 11: -YY_RULE_SETUP -#line 114 "./otp.l" -return(LEFTARROW); - YY_BREAK -case 12: -YY_RULE_SETUP -#line 115 "./otp.l" -return(INPUT); - YY_BREAK -case 13: -YY_RULE_SETUP -#line 116 "./otp.l" -return(OUTPUT); - YY_BREAK -case 14: -YY_RULE_SETUP -#line 117 "./otp.l" -return(ALIASES); - YY_BREAK -case 15: -YY_RULE_SETUP -#line 118 "./otp.l" -return(STATES); - YY_BREAK -case 16: -YY_RULE_SETUP -#line 119 "./otp.l" -return(TABLES); - YY_BREAK -case 17: -YY_RULE_SETUP -#line 120 "./otp.l" -return(EXPRESSIONS); - YY_BREAK -case 18: -YY_RULE_SETUP -#line 121 "./otp.l" -return(PUSH); - YY_BREAK -case 19: -YY_RULE_SETUP -#line 122 "./otp.l" -return(POP); - YY_BREAK -case 20: -YY_RULE_SETUP -#line 123 "./otp.l" -return(DIV); - YY_BREAK -case 21: -YY_RULE_SETUP -#line 124 "./otp.l" -return(MOD); - YY_BREAK -case 22: -YY_RULE_SETUP -#line 125 "./otp.l" -return(BEG); - YY_BREAK -case 23: -YY_RULE_SETUP -#line 126 "./otp.l" -return(END); - YY_BREAK -case 24: -YY_RULE_SETUP -#line 127 "./otp.l" -return(yytext[0]); - YY_BREAK -case 25: -YY_RULE_SETUP -#line 129 "./otp.l" -ECHO; - YY_BREAK -#line 947 "lex.yy.c" - case YY_STATE_EOF(INITIAL): - yyterminate(); - - case YY_END_OF_BUFFER: - { - /* Amount of text matched not including the EOB char. */ - int yy_amount_of_matched_text = (int) (yy_cp - yytext_ptr) - 1; - - /* Undo the effects of YY_DO_BEFORE_ACTION. */ - *yy_cp = yy_hold_char; - YY_RESTORE_YY_MORE_OFFSET - - if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_NEW ) - { - /* We're scanning a new file or input source. It's - * possible that this happened because the user - * just pointed yyin at a new source and called - * yylex(). If so, then we have to assure - * consistency between yy_current_buffer and our - * globals. Here is the right place to do so, because - * this is the first action (other than possibly a - * back-up) that will match for the new input source. - */ - yy_n_chars = yy_current_buffer->yy_n_chars; - yy_current_buffer->yy_input_file = yyin; - yy_current_buffer->yy_buffer_status = YY_BUFFER_NORMAL; - } - - /* Note that here we test for yy_c_buf_p "<=" to the position - * of the first EOB in the buffer, since yy_c_buf_p will - * already have been incremented past the NUL character - * (since all states make transitions on EOB to the - * end-of-buffer state). Contrast this with the test - * in input(). - */ - if ( yy_c_buf_p <= &yy_current_buffer->yy_ch_buf[yy_n_chars] ) - { /* This was really a NUL. */ - yy_state_type yy_next_state; - - yy_c_buf_p = yytext_ptr + yy_amount_of_matched_text; - - yy_current_state = yy_get_previous_state(); - - /* Okay, we're now positioned to make the NUL - * transition. We couldn't have - * yy_get_previous_state() go ahead and do it - * for us because it doesn't know how to deal - * with the possibility of jamming (and we don't - * want to build jamming into it because then it - * will run more slowly). - */ - - yy_next_state = yy_try_NUL_trans( yy_current_state ); - - yy_bp = yytext_ptr + YY_MORE_ADJ; - - if ( yy_next_state ) - { - /* Consume the NUL. */ - yy_cp = ++yy_c_buf_p; - yy_current_state = yy_next_state; - goto yy_match; - } - - else - { - yy_cp = yy_c_buf_p; - goto yy_find_action; - } - } - - else switch ( yy_get_next_buffer() ) - { - case EOB_ACT_END_OF_FILE: - { - yy_did_buffer_switch_on_eof = 0; - - if ( yywrap() ) - { - /* Note: because we've taken care in - * yy_get_next_buffer() to have set up - * yytext, we can now set up - * yy_c_buf_p so that if some total - * hoser (like flex itself) wants to - * call the scanner after we return the - * YY_NULL, it'll still work - another - * YY_NULL will get returned. - */ - yy_c_buf_p = yytext_ptr + YY_MORE_ADJ; - - yy_act = YY_STATE_EOF(YY_START); - goto do_action; - } - - else - { - if ( ! yy_did_buffer_switch_on_eof ) - YY_NEW_FILE; - } - break; - } - - case EOB_ACT_CONTINUE_SCAN: - yy_c_buf_p = - yytext_ptr + yy_amount_of_matched_text; - - yy_current_state = yy_get_previous_state(); - - yy_cp = yy_c_buf_p; - yy_bp = yytext_ptr + YY_MORE_ADJ; - goto yy_match; - - case EOB_ACT_LAST_MATCH: - yy_c_buf_p = - &yy_current_buffer->yy_ch_buf[yy_n_chars]; - - yy_current_state = yy_get_previous_state(); - - yy_cp = yy_c_buf_p; - yy_bp = yytext_ptr + YY_MORE_ADJ; - goto yy_find_action; - } - break; - } - - default: - YY_FATAL_ERROR( - "fatal flex scanner internal error--no action found" ); - } /* end of action switch */ - } /* end of scanning one token */ - } /* end of yylex */ - - -/* yy_get_next_buffer - try to read in a new buffer - * - * Returns a code representing an action: - * EOB_ACT_LAST_MATCH - - * EOB_ACT_CONTINUE_SCAN - continue scanning from current position - * EOB_ACT_END_OF_FILE - end of file - */ - -static int yy_get_next_buffer() - { - register char *dest = yy_current_buffer->yy_ch_buf; - register char *source = yytext_ptr; - register int number_to_move, i; - int ret_val; - - if ( yy_c_buf_p > &yy_current_buffer->yy_ch_buf[yy_n_chars + 1] ) - YY_FATAL_ERROR( - "fatal flex scanner internal error--end of buffer missed" ); - - if ( yy_current_buffer->yy_fill_buffer == 0 ) - { /* Don't try to fill the buffer, so this is an EOF. */ - if ( yy_c_buf_p - yytext_ptr - YY_MORE_ADJ == 1 ) - { - /* We matched a single character, the EOB, so - * treat this as a final EOF. - */ - return EOB_ACT_END_OF_FILE; - } - - else - { - /* We matched some text prior to the EOB, first - * process it. - */ - return EOB_ACT_LAST_MATCH; - } - } - - /* Try to read more data. */ - - /* First move last chars to start of buffer. */ - number_to_move = (int) (yy_c_buf_p - yytext_ptr) - 1; - - for ( i = 0; i < number_to_move; ++i ) - *(dest++) = *(source++); - - if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_EOF_PENDING ) - /* don't do the read, it's not guaranteed to return an EOF, - * just force an EOF - */ - yy_current_buffer->yy_n_chars = yy_n_chars = 0; - - else - { - int num_to_read = - yy_current_buffer->yy_buf_size - number_to_move - 1; - - while ( num_to_read <= 0 ) - { /* Not enough room in the buffer - grow it. */ -#ifdef YY_USES_REJECT - YY_FATAL_ERROR( -"input buffer overflow, can't enlarge buffer because scanner uses REJECT" ); -#else - - /* just a shorter name for the current buffer */ - YY_BUFFER_STATE b = yy_current_buffer; - - int yy_c_buf_p_offset = - (int) (yy_c_buf_p - b->yy_ch_buf); - - if ( b->yy_is_our_buffer ) - { - int new_size = b->yy_buf_size * 2; - - if ( new_size <= 0 ) - b->yy_buf_size += b->yy_buf_size / 8; - else - b->yy_buf_size *= 2; - - b->yy_ch_buf = (char *) - /* Include room in for 2 EOB chars. */ - yy_flex_realloc( (void *) b->yy_ch_buf, - b->yy_buf_size + 2 ); - } - else - /* Can't grow it, we don't own it. */ - b->yy_ch_buf = 0; - - if ( ! b->yy_ch_buf ) - YY_FATAL_ERROR( - "fatal error - scanner input buffer overflow" ); - - yy_c_buf_p = &b->yy_ch_buf[yy_c_buf_p_offset]; - - num_to_read = yy_current_buffer->yy_buf_size - - number_to_move - 1; -#endif - } - - if ( num_to_read > YY_READ_BUF_SIZE ) - num_to_read = YY_READ_BUF_SIZE; - - /* Read in more data. */ - YY_INPUT( (&yy_current_buffer->yy_ch_buf[number_to_move]), - yy_n_chars, num_to_read ); - - yy_current_buffer->yy_n_chars = yy_n_chars; - } - - if ( yy_n_chars == 0 ) - { - if ( number_to_move == YY_MORE_ADJ ) - { - ret_val = EOB_ACT_END_OF_FILE; - yyrestart( yyin ); - } - - else - { - ret_val = EOB_ACT_LAST_MATCH; - yy_current_buffer->yy_buffer_status = - YY_BUFFER_EOF_PENDING; - } - } - - else - ret_val = EOB_ACT_CONTINUE_SCAN; - - yy_n_chars += number_to_move; - yy_current_buffer->yy_ch_buf[yy_n_chars] = YY_END_OF_BUFFER_CHAR; - yy_current_buffer->yy_ch_buf[yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR; - - yytext_ptr = &yy_current_buffer->yy_ch_buf[0]; - - return ret_val; - } - - -/* yy_get_previous_state - get the state just before the EOB char was reached */ - -static yy_state_type yy_get_previous_state() - { - register yy_state_type yy_current_state; - register char *yy_cp; - - yy_current_state = yy_start; - yy_state_ptr = yy_state_buf; - *yy_state_ptr++ = yy_current_state; - - for ( yy_cp = yytext_ptr + YY_MORE_ADJ; yy_cp < yy_c_buf_p; ++yy_cp ) - { - register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1); - while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) - { - yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 102 ) - yy_c = yy_meta[(unsigned int) yy_c]; - } - yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; - *yy_state_ptr++ = yy_current_state; - } - - return yy_current_state; - } - - -/* yy_try_NUL_trans - try to make a transition on the NUL character - * - * synopsis - * next_state = yy_try_NUL_trans( current_state ); - */ - -#ifdef YY_USE_PROTOS -static yy_state_type yy_try_NUL_trans( yy_state_type yy_current_state ) -#else -static yy_state_type yy_try_NUL_trans( yy_current_state ) -yy_state_type yy_current_state; -#endif - { - register int yy_is_jam; - - register YY_CHAR yy_c = 1; - while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) - { - yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 102 ) - yy_c = yy_meta[(unsigned int) yy_c]; - } - yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; - yy_is_jam = (yy_current_state == 101); - if ( ! yy_is_jam ) - *yy_state_ptr++ = yy_current_state; - - return yy_is_jam ? 0 : yy_current_state; - } - - -#ifndef YY_NO_UNPUT -#ifdef YY_USE_PROTOS -static void yyunput( int c, register char *yy_bp ) -#else -static void yyunput( c, yy_bp ) -int c; -register char *yy_bp; -#endif - { - register char *yy_cp = yy_c_buf_p; - - /* undo effects of setting up yytext */ - *yy_cp = yy_hold_char; - - if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 ) - { /* need to shift things up to make room */ - /* +2 for EOB chars. */ - register int number_to_move = yy_n_chars + 2; - register char *dest = &yy_current_buffer->yy_ch_buf[ - yy_current_buffer->yy_buf_size + 2]; - register char *source = - &yy_current_buffer->yy_ch_buf[number_to_move]; - - while ( source > yy_current_buffer->yy_ch_buf ) - *--dest = *--source; - - yy_cp += (int) (dest - source); - yy_bp += (int) (dest - source); - yy_current_buffer->yy_n_chars = - yy_n_chars = yy_current_buffer->yy_buf_size; - - if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 ) - YY_FATAL_ERROR( "flex scanner push-back overflow" ); - } - - *--yy_cp = (char) c; - - if ( c == '\n' ) - --yylineno; - - yytext_ptr = yy_bp; - yy_hold_char = *yy_cp; - yy_c_buf_p = yy_cp; - } -#endif /* ifndef YY_NO_UNPUT */ - - -#ifndef YY_NO_INPUT -#ifdef __cplusplus -static int yyinput() -#else -static int input() -#endif - { - int c; - - *yy_c_buf_p = yy_hold_char; - - if ( *yy_c_buf_p == YY_END_OF_BUFFER_CHAR ) - { - /* yy_c_buf_p now points to the character we want to return. - * If this occurs *before* the EOB characters, then it's a - * valid NUL; if not, then we've hit the end of the buffer. - */ - if ( yy_c_buf_p < &yy_current_buffer->yy_ch_buf[yy_n_chars] ) - /* This was really a NUL. */ - *yy_c_buf_p = '\0'; - - else - { /* need more input */ - int offset = yy_c_buf_p - yytext_ptr; - ++yy_c_buf_p; - - switch ( yy_get_next_buffer() ) - { - case EOB_ACT_LAST_MATCH: - /* This happens because yy_g_n_b() - * sees that we've accumulated a - * token and flags that we need to - * try matching the token before - * proceeding. But for input(), - * there's no matching to consider. - * So convert the EOB_ACT_LAST_MATCH - * to EOB_ACT_END_OF_FILE. - */ - - /* Reset buffer status. */ - yyrestart( yyin ); - - /* fall through */ - - case EOB_ACT_END_OF_FILE: - { - if ( yywrap() ) - return EOF; - - if ( ! yy_did_buffer_switch_on_eof ) - YY_NEW_FILE; -#ifdef __cplusplus - return yyinput(); -#else - return input(); -#endif - } - - case EOB_ACT_CONTINUE_SCAN: - yy_c_buf_p = yytext_ptr + offset; - break; - } - } - } - - c = *(unsigned char *) yy_c_buf_p; /* cast for 8-bit char's */ - *yy_c_buf_p = '\0'; /* preserve yytext */ - yy_hold_char = *++yy_c_buf_p; - - if ( c == '\n' ) - ++yylineno; - - return c; - } -#endif /* YY_NO_INPUT */ - -#ifdef YY_USE_PROTOS -void yyrestart( FILE *input_file ) -#else -void yyrestart( input_file ) -FILE *input_file; -#endif - { - if ( ! yy_current_buffer ) - yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); - - yy_init_buffer( yy_current_buffer, input_file ); - yy_load_buffer_state(); - } - - -#ifdef YY_USE_PROTOS -void yy_switch_to_buffer( YY_BUFFER_STATE new_buffer ) -#else -void yy_switch_to_buffer( new_buffer ) -YY_BUFFER_STATE new_buffer; -#endif - { - if ( yy_current_buffer == new_buffer ) - return; - - if ( yy_current_buffer ) - { - /* Flush out information for old buffer. */ - *yy_c_buf_p = yy_hold_char; - yy_current_buffer->yy_buf_pos = yy_c_buf_p; - yy_current_buffer->yy_n_chars = yy_n_chars; - } - - yy_current_buffer = new_buffer; - yy_load_buffer_state(); - - /* We don't actually know whether we did this switch during - * EOF (yywrap()) processing, but the only time this flag - * is looked at is after yywrap() is called, so it's safe - * to go ahead and always set it. - */ - yy_did_buffer_switch_on_eof = 1; - } - - -#ifdef YY_USE_PROTOS -void yy_load_buffer_state( void ) -#else -void yy_load_buffer_state() -#endif - { - yy_n_chars = yy_current_buffer->yy_n_chars; - yytext_ptr = yy_c_buf_p = yy_current_buffer->yy_buf_pos; - yyin = yy_current_buffer->yy_input_file; - yy_hold_char = *yy_c_buf_p; - } - - -#ifdef YY_USE_PROTOS -YY_BUFFER_STATE yy_create_buffer( FILE *file, int size ) -#else -YY_BUFFER_STATE yy_create_buffer( file, size ) -FILE *file; -int size; -#endif - { - YY_BUFFER_STATE b; - - b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) ); - if ( ! b ) - YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); - - b->yy_buf_size = size; - - /* yy_ch_buf has to be 2 characters longer than the size given because - * we need to put in 2 end-of-buffer characters. - */ - b->yy_ch_buf = (char *) yy_flex_alloc( b->yy_buf_size + 2 ); - if ( ! b->yy_ch_buf ) - YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); - - b->yy_is_our_buffer = 1; - - yy_init_buffer( b, file ); - - return b; - } - - -#ifdef YY_USE_PROTOS -void yy_delete_buffer( YY_BUFFER_STATE b ) -#else -void yy_delete_buffer( b ) -YY_BUFFER_STATE b; -#endif - { - if ( ! b ) - return; - - if ( b == yy_current_buffer ) - yy_current_buffer = (YY_BUFFER_STATE) 0; - - if ( b->yy_is_our_buffer ) - yy_flex_free( (void *) b->yy_ch_buf ); - - yy_flex_free( (void *) b ); - } - - - -#ifdef YY_USE_PROTOS -void yy_init_buffer( YY_BUFFER_STATE b, FILE *file ) -#else -void yy_init_buffer( b, file ) -YY_BUFFER_STATE b; -FILE *file; -#endif - - - { - yy_flush_buffer( b ); - - b->yy_input_file = file; - b->yy_fill_buffer = 1; - -#if YY_ALWAYS_INTERACTIVE - b->yy_is_interactive = 1; -#else -#if YY_NEVER_INTERACTIVE - b->yy_is_interactive = 0; -#else - b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0; -#endif -#endif - } - - -#ifdef YY_USE_PROTOS -void yy_flush_buffer( YY_BUFFER_STATE b ) -#else -void yy_flush_buffer( b ) -YY_BUFFER_STATE b; -#endif - - { - if ( ! b ) - return; - - b->yy_n_chars = 0; - - /* We always need two end-of-buffer characters. The first causes - * a transition to the end-of-buffer state. The second causes - * a jam in that state. - */ - b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR; - b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR; - - b->yy_buf_pos = &b->yy_ch_buf[0]; - - b->yy_at_bol = 1; - b->yy_buffer_status = YY_BUFFER_NEW; - - if ( b == yy_current_buffer ) - yy_load_buffer_state(); - } - - -#ifndef YY_NO_SCAN_BUFFER -#ifdef YY_USE_PROTOS -YY_BUFFER_STATE yy_scan_buffer( char *base, yy_size_t size ) -#else -YY_BUFFER_STATE yy_scan_buffer( base, size ) -char *base; -yy_size_t size; -#endif - { - YY_BUFFER_STATE b; - - if ( size < 2 || - base[size-2] != YY_END_OF_BUFFER_CHAR || - base[size-1] != YY_END_OF_BUFFER_CHAR ) - /* They forgot to leave room for the EOB's. */ - return 0; - - b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) ); - if ( ! b ) - YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" ); - - b->yy_buf_size = size - 2; /* "- 2" to take care of EOB's */ - b->yy_buf_pos = b->yy_ch_buf = base; - b->yy_is_our_buffer = 0; - b->yy_input_file = 0; - b->yy_n_chars = b->yy_buf_size; - b->yy_is_interactive = 0; - b->yy_at_bol = 1; - b->yy_fill_buffer = 0; - b->yy_buffer_status = YY_BUFFER_NEW; - - yy_switch_to_buffer( b ); - - return b; - } -#endif - - -#ifndef YY_NO_SCAN_STRING -#ifdef YY_USE_PROTOS -YY_BUFFER_STATE yy_scan_string( yyconst char *yy_str ) -#else -YY_BUFFER_STATE yy_scan_string( yy_str ) -yyconst char *yy_str; -#endif - { - int len; - for ( len = 0; yy_str[len]; ++len ) - ; - - return yy_scan_bytes( yy_str, len ); - } -#endif - - -#ifndef YY_NO_SCAN_BYTES -#ifdef YY_USE_PROTOS -YY_BUFFER_STATE yy_scan_bytes( yyconst char *bytes, int len ) -#else -YY_BUFFER_STATE yy_scan_bytes( bytes, len ) -yyconst char *bytes; -int len; -#endif - { - YY_BUFFER_STATE b; - char *buf; - yy_size_t n; - int i; - - /* Get memory for full buffer, including space for trailing EOB's. */ - n = len + 2; - buf = (char *) yy_flex_alloc( n ); - if ( ! buf ) - YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" ); - - for ( i = 0; i < len; ++i ) - buf[i] = bytes[i]; - - buf[len] = buf[len+1] = YY_END_OF_BUFFER_CHAR; - - b = yy_scan_buffer( buf, n ); - if ( ! b ) - YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" ); - - /* It's okay to grow etc. this buffer, and we should throw it - * away when we're done. - */ - b->yy_is_our_buffer = 1; - - return b; - } -#endif - - -#ifndef YY_NO_PUSH_STATE -#ifdef YY_USE_PROTOS -static void yy_push_state( int new_state ) -#else -static void yy_push_state( new_state ) -int new_state; -#endif - { - if ( yy_start_stack_ptr >= yy_start_stack_depth ) - { - yy_size_t new_size; - - yy_start_stack_depth += YY_START_STACK_INCR; - new_size = yy_start_stack_depth * sizeof( int ); - - if ( ! yy_start_stack ) - yy_start_stack = (int *) yy_flex_alloc( new_size ); - - else - yy_start_stack = (int *) yy_flex_realloc( - (void *) yy_start_stack, new_size ); - - if ( ! yy_start_stack ) - YY_FATAL_ERROR( - "out of memory expanding start-condition stack" ); - } - - yy_start_stack[yy_start_stack_ptr++] = YY_START; - - BEGIN(new_state); - } -#endif - - -#ifndef YY_NO_POP_STATE -static void yy_pop_state() - { - if ( --yy_start_stack_ptr < 0 ) - YY_FATAL_ERROR( "start-condition stack underflow" ); - - BEGIN(yy_start_stack[yy_start_stack_ptr]); - } -#endif - - -#ifndef YY_NO_TOP_STATE -static int yy_top_state() - { - return yy_start_stack[yy_start_stack_ptr - 1]; - } -#endif - -#ifndef YY_EXIT_FAILURE -#define YY_EXIT_FAILURE 2 -#endif - -#ifdef YY_USE_PROTOS -static void yy_fatal_error( yyconst char msg[] ) -#else -static void yy_fatal_error( msg ) -char msg[]; -#endif - { - (void) fprintf( stderr, "%s\n", msg ); - exit( YY_EXIT_FAILURE ); - } - - - -/* Redefine yyless() so it works in section 3 code. */ - -#undef yyless -#define yyless(n) \ - do \ - { \ - /* Undo effects of setting up yytext. */ \ - yytext[yyleng] = yy_hold_char; \ - yy_c_buf_p = yytext + n; \ - yy_hold_char = *yy_c_buf_p; \ - *yy_c_buf_p = '\0'; \ - yyleng = n; \ - } \ - while ( 0 ) - - -/* Internal utility routines. */ - -#ifndef yytext_ptr -#ifdef YY_USE_PROTOS -static void yy_flex_strncpy( char *s1, yyconst char *s2, int n ) -#else -static void yy_flex_strncpy( s1, s2, n ) -char *s1; -yyconst char *s2; -int n; -#endif - { - register int i; - for ( i = 0; i < n; ++i ) - s1[i] = s2[i]; - } -#endif - -#ifdef YY_NEED_STRLEN -#ifdef YY_USE_PROTOS -static int yy_flex_strlen( yyconst char *s ) -#else -static int yy_flex_strlen( s ) -yyconst char *s; -#endif - { - register int n; - for ( n = 0; s[n]; ++n ) - ; - - return n; - } -#endif - - -#ifdef YY_USE_PROTOS -static void *yy_flex_alloc( yy_size_t size ) -#else -static void *yy_flex_alloc( size ) -yy_size_t size; -#endif - { - return (void *) malloc( size ); - } - -#ifdef YY_USE_PROTOS -static void *yy_flex_realloc( void *ptr, yy_size_t size ) -#else -static void *yy_flex_realloc( ptr, size ) -void *ptr; -yy_size_t size; -#endif - { - /* The cast to (char *) in the following accommodates both - * implementations that use char* generic pointers, and those - * that use void* generic pointers. It works with the latter - * because both ANSI C and C++ allow castless assignment from - * any pointer type to void*, and deal with argument conversions - * as though doing an assignment. - */ - return (void *) realloc( (char *) ptr, size ); - } - -#ifdef YY_USE_PROTOS -static void yy_flex_free( void *ptr ) -#else -static void yy_flex_free( ptr ) -void *ptr; -#endif - { - free( ptr ); - } - -#if YY_MAIN -int main() - { - yylex(); - return 0; - } -#endif -#line 129 "./otp.l" - - diff --git a/Build/source/texk/web2c/otps/otp-lexer.l b/Build/source/texk/web2c/otps/otp-lexer.l new file mode 100644 index 00000000000..9e4057d412a --- /dev/null +++ b/Build/source/texk/web2c/otps/otp-lexer.l @@ -0,0 +1,130 @@ +/* otp.l: Lexical analysis for OTP files + +This file is part of Omega, +which is based on the web2c distribution of TeX, + +Copyright (c) 1994--2001 John Plaice and Yannis Haralambous +Copyright (c) 2002 Behdad Esfahbod +Copyright (C) 2002, 2005, 2006 Roozbeh Pournader + +Omega 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 of the License, or +(at your option) any later version. + +Omega 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 Omega; if not, write to the Free Software Foundation, Inc., +59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. + +*/ + +%{ +#include "routines.h" +#include "yystype.h" +#include "y_tab.h" +#define YY_NO_UNPUT +#define OTP_MAXCODE 0xFFFF +int line_number = 1; +int i,j,last; +extern YYSTYPE yylval; +%} + + +hexnumber @\"[a-fA-F0-9]+ +octnumber @'[0-7]+ +decnumber [0-9]+ +id ([a-zA-Z][_a-zA-Z0-9]*) +string \"([^\"]|\"\")*\" + +%% +[ \t] {} +"%".*\n { line_number++;} +\r\n|\n|\r { line_number++;} +{hexnumber} { + yylval.yint=0; + for (i=2; i='0')&&(j<='9')) { + yylval.yint = (yylval.yint*16)+(j-'0'); + } else if ((j>='a')&&(j<='f')) { + yylval.yint = (yylval.yint*16)+(j-'a'+10); + } else { /* ((j>='A') && (j>='F')) */ + yylval.yint = (yylval.yint*16)+(j-'A'+10); + } + if (yylval.yint>OTP_MAXCODE) { + fprintf(stderr, "line %d: value too large (%x)\n", + line_number, yylval.yint); + exit(1); + } + } + return(NUMBER); + } +{octnumber} { + yylval.yint=0; + for (i=2; iOTP_MAXCODE) { + fprintf(stderr, "line %d: value too large (%o)\n", + line_number, yylval.yint); + exit(1); + } + } + return(NUMBER); + } +{decnumber} { + yylval.yint=0; + for (i=0; iOTP_MAXCODE) { + fprintf(stderr, "line %d: value too large (%d)\n", + line_number, yylval.yint); + exit(1); + } + } + return(NUMBER); + } +"`"[\x20-\x7e]"'" { + yylval.yint=yytext[1]; + return(NUMBER); + } +{id} { yylval.ystring=xstrdup(yytext); return(ID); } +{string} { + char *newtext; + last=yyleng-2; + i=0; + j=1; + newtext=yylval.ystring=xstrdup(yytext); + while (j<=last) { + newtext[i]=yytext[j]; + if ((yytext[j]=='"') && (yytext[j+1]=='"')) j=j+2; + else j++; + i++; + } + newtext[i]='\0'; + return(STRING); + } +=> return(RIGHTARROW); +"<"= return(LEFTARROW); +input: return(INPUT); +output: return(OUTPUT); +aliases: return(ALIASES); +states: return(STATES); +tables: return(TABLES); +expressions: return(EXPRESSIONS); +push: return(PUSH); +pop: return(POP); +div: return(DIV); +mod: return(MOD); +beg: return(BEG); +end: return(END); +. return(yytext[0]); + +%% + diff --git a/Build/source/texk/web2c/otps/otp-parser.y b/Build/source/texk/web2c/otps/otp-parser.y new file mode 100644 index 00000000000..a67c6a1c06d --- /dev/null +++ b/Build/source/texk/web2c/otps/otp-parser.y @@ -0,0 +1,330 @@ +/* otp.y: Grammar for OTP files. + +This file is part of Omega, +which is based on the web2c distribution of TeX. + +Copyright (c) 1994--2001 John Plaice and Yannis Haralambous +Copyright (C) 2005, 2006 Roozbeh Pournader + +Omega 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 of the License, or +(at your option) any later version. + +Omega 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 Omega; if not, write to the Free Software Foundation, Inc., +59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. + +*/ + +%{ +#include "otp.h" +#include "routines.h" +#include "yystype.h" +int k, len; + +void yyerror(char * msg) +{ +fprintf(stderr, "line %d: %s\n", line_number, msg); +} +%} + +%token NUMBER +%token ID +%token STRING +%token LEFTARROW +%token RIGHTARROW +%token INPUT +%token OUTPUT +%token ALIASES +%token STATES +%token TABLES +%token EXPRESSIONS +%token PUSH +%token POP +%token DIV +%token MOD +%token BEG +%token END + +%left '+' '-' +%left '*' DIV MOD + +%% + +File : + Input + Output + Tables + States + Aliases + Expressions + ; + +Input : + /* Empty */ + { input_bytes=2; } + | INPUT NUMBER ';' + { input_bytes=$2.yint; } + ; + +Output : + /* Empty */ + { output_bytes=2; } + | OUTPUT NUMBER ';' + { output_bytes=$2.yint; } + ; + +Tables : + /* Empty */ + | TABLES MoreTables + ; + +MoreTables : + OneTable + | MoreTables OneTable + ; + +OneTable : + ID '[' NUMBER ']' + { store_table($1.ystring, $3.yint); } + '=' '{' Numbers '}' ';' + ; + +Numbers : + /* Empty */ + | MoreNumbers + ; + +MoreNumbers : + NUMBER + { add_to_table($1.yint); } + | MoreNumbers ',' NUMBER + { add_to_table($3.yint); } + ; + +States : + /* Empty */ + | STATES MoreStates ';' + ; + +MoreStates : + ID + { store_state($1.ystring); } + | MoreStates ',' ID + { store_state($3.ystring); } + ; + +Aliases : + /* Empty */ + | ALIASES MoreAliases + ; + +MoreAliases : + OneAlias + | MoreAliases OneAlias + ; + +OneAlias : + ID '=' OneCompleteLeft ';' + { store_alias($1.ystring, $3.yleft); } + ; + +OneCompleteLeft : + STRING + { $$.yleft = StringLeft($1.ystring); } + | OneLeft '<' NUMBER ',' NUMBER '>' + { $$.yleft = CompleteLeft($1.yleft, $3.yint, $5.yint); } + | OneLeft '<' NUMBER ',' '>' + { $$.yleft = PlusLeft($1.yleft, $3.yint); } + | OneLeft '<' NUMBER '>' + { $$.yleft = CompleteLeft($1.yleft, $3.yint, $3.yint); } + | OneLeft + { $$.yleft = $1.yleft; } + ; + +OneLeft : + NUMBER + { $$.yleft = SingleLeft($1.yint); } + | NUMBER '-' NUMBER + { $$.yleft = DoubleLeft($1.yint, $3.yint); } + | '.' + { $$.yleft = WildCard(); } + | '^' '(' ChoiceLeft ')' + { $$.yleft = NotChoiceLeft($3.ylleft); } + | '(' ChoiceLeft ')' + { $$.yleft = ChoiceLeft($2.ylleft); } + | '{' ID '}' + { $$.yleft = lookup_alias($2.ystring); } + ; + +ChoiceLeft : + OneLeft + { $$.ylleft = llist1($1.yleft); } + | ChoiceLeft '|' OneLeft + { $$.ylleft = lappend1($1.ylleft, $3.yleft); } + ; + +Expressions : + EXPRESSIONS MoreExpressions + { + for(cur_state=0; cur_state' + { cur_state = lookup_state($2.ystring); } + ; + +TotalLeft : + BegLeft Left EndLeft + { $$.ylleft = lappend($1.ylleft, lappend($2.ylleft, $3.ylleft)); } +| BegLeft EndLeft + { $$.ylleft = lappend($1.ylleft, $2.ylleft); } + ; + +BegLeft : + /* Empty */ + { $$.ylleft = nil; } + | BEG + { $$.ylleft = llist1(BeginningLeft()); } + ; + +EndLeft : + /* Empty */ + { $$.ylleft = nil; } + | END + { $$.ylleft = llist1(EndLeft()); } + ; + +Left : + OneCompleteLeft + { $$.ylleft = llist1($1.yleft); } + | Left OneCompleteLeft + { $$.ylleft = lappend1($1.ylleft, $2.yleft); } + ; + +Right : + /* Empty */ + | Right OneRight + ; + +OneRight : + STRING + { + len=strlen($1.ystring); + for (k=0; k' + { out_int(OTP_STATE_CHANGE, 0); } + | '<' ID '>' + { out_int(OTP_STATE_CHANGE, lookup_state($2.ystring)); } + | '<' PUSH ID '>' + { out_int(OTP_STATE_PUSH, lookup_state($3.ystring)); } + | '<' POP '>' + { out_int(OTP_STATE_POP, 0); } + ; +%% diff --git a/Build/source/texk/web2c/otps/otp.l b/Build/source/texk/web2c/otps/otp.l deleted file mode 100644 index 9e4057d412a..00000000000 --- a/Build/source/texk/web2c/otps/otp.l +++ /dev/null @@ -1,130 +0,0 @@ -/* otp.l: Lexical analysis for OTP files - -This file is part of Omega, -which is based on the web2c distribution of TeX, - -Copyright (c) 1994--2001 John Plaice and Yannis Haralambous -Copyright (c) 2002 Behdad Esfahbod -Copyright (C) 2002, 2005, 2006 Roozbeh Pournader - -Omega 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 of the License, or -(at your option) any later version. - -Omega 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 Omega; if not, write to the Free Software Foundation, Inc., -59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. - -*/ - -%{ -#include "routines.h" -#include "yystype.h" -#include "y_tab.h" -#define YY_NO_UNPUT -#define OTP_MAXCODE 0xFFFF -int line_number = 1; -int i,j,last; -extern YYSTYPE yylval; -%} - - -hexnumber @\"[a-fA-F0-9]+ -octnumber @'[0-7]+ -decnumber [0-9]+ -id ([a-zA-Z][_a-zA-Z0-9]*) -string \"([^\"]|\"\")*\" - -%% -[ \t] {} -"%".*\n { line_number++;} -\r\n|\n|\r { line_number++;} -{hexnumber} { - yylval.yint=0; - for (i=2; i='0')&&(j<='9')) { - yylval.yint = (yylval.yint*16)+(j-'0'); - } else if ((j>='a')&&(j<='f')) { - yylval.yint = (yylval.yint*16)+(j-'a'+10); - } else { /* ((j>='A') && (j>='F')) */ - yylval.yint = (yylval.yint*16)+(j-'A'+10); - } - if (yylval.yint>OTP_MAXCODE) { - fprintf(stderr, "line %d: value too large (%x)\n", - line_number, yylval.yint); - exit(1); - } - } - return(NUMBER); - } -{octnumber} { - yylval.yint=0; - for (i=2; iOTP_MAXCODE) { - fprintf(stderr, "line %d: value too large (%o)\n", - line_number, yylval.yint); - exit(1); - } - } - return(NUMBER); - } -{decnumber} { - yylval.yint=0; - for (i=0; iOTP_MAXCODE) { - fprintf(stderr, "line %d: value too large (%d)\n", - line_number, yylval.yint); - exit(1); - } - } - return(NUMBER); - } -"`"[\x20-\x7e]"'" { - yylval.yint=yytext[1]; - return(NUMBER); - } -{id} { yylval.ystring=xstrdup(yytext); return(ID); } -{string} { - char *newtext; - last=yyleng-2; - i=0; - j=1; - newtext=yylval.ystring=xstrdup(yytext); - while (j<=last) { - newtext[i]=yytext[j]; - if ((yytext[j]=='"') && (yytext[j+1]=='"')) j=j+2; - else j++; - i++; - } - newtext[i]='\0'; - return(STRING); - } -=> return(RIGHTARROW); -"<"= return(LEFTARROW); -input: return(INPUT); -output: return(OUTPUT); -aliases: return(ALIASES); -states: return(STATES); -tables: return(TABLES); -expressions: return(EXPRESSIONS); -push: return(PUSH); -pop: return(POP); -div: return(DIV); -mod: return(MOD); -beg: return(BEG); -end: return(END); -. return(yytext[0]); - -%% - diff --git a/Build/source/texk/web2c/otps/otp.y b/Build/source/texk/web2c/otps/otp.y deleted file mode 100644 index a67c6a1c06d..00000000000 --- a/Build/source/texk/web2c/otps/otp.y +++ /dev/null @@ -1,330 +0,0 @@ -/* otp.y: Grammar for OTP files. - -This file is part of Omega, -which is based on the web2c distribution of TeX. - -Copyright (c) 1994--2001 John Plaice and Yannis Haralambous -Copyright (C) 2005, 2006 Roozbeh Pournader - -Omega 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 of the License, or -(at your option) any later version. - -Omega 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 Omega; if not, write to the Free Software Foundation, Inc., -59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. - -*/ - -%{ -#include "otp.h" -#include "routines.h" -#include "yystype.h" -int k, len; - -void yyerror(char * msg) -{ -fprintf(stderr, "line %d: %s\n", line_number, msg); -} -%} - -%token NUMBER -%token ID -%token STRING -%token LEFTARROW -%token RIGHTARROW -%token INPUT -%token OUTPUT -%token ALIASES -%token STATES -%token TABLES -%token EXPRESSIONS -%token PUSH -%token POP -%token DIV -%token MOD -%token BEG -%token END - -%left '+' '-' -%left '*' DIV MOD - -%% - -File : - Input - Output - Tables - States - Aliases - Expressions - ; - -Input : - /* Empty */ - { input_bytes=2; } - | INPUT NUMBER ';' - { input_bytes=$2.yint; } - ; - -Output : - /* Empty */ - { output_bytes=2; } - | OUTPUT NUMBER ';' - { output_bytes=$2.yint; } - ; - -Tables : - /* Empty */ - | TABLES MoreTables - ; - -MoreTables : - OneTable - | MoreTables OneTable - ; - -OneTable : - ID '[' NUMBER ']' - { store_table($1.ystring, $3.yint); } - '=' '{' Numbers '}' ';' - ; - -Numbers : - /* Empty */ - | MoreNumbers - ; - -MoreNumbers : - NUMBER - { add_to_table($1.yint); } - | MoreNumbers ',' NUMBER - { add_to_table($3.yint); } - ; - -States : - /* Empty */ - | STATES MoreStates ';' - ; - -MoreStates : - ID - { store_state($1.ystring); } - | MoreStates ',' ID - { store_state($3.ystring); } - ; - -Aliases : - /* Empty */ - | ALIASES MoreAliases - ; - -MoreAliases : - OneAlias - | MoreAliases OneAlias - ; - -OneAlias : - ID '=' OneCompleteLeft ';' - { store_alias($1.ystring, $3.yleft); } - ; - -OneCompleteLeft : - STRING - { $$.yleft = StringLeft($1.ystring); } - | OneLeft '<' NUMBER ',' NUMBER '>' - { $$.yleft = CompleteLeft($1.yleft, $3.yint, $5.yint); } - | OneLeft '<' NUMBER ',' '>' - { $$.yleft = PlusLeft($1.yleft, $3.yint); } - | OneLeft '<' NUMBER '>' - { $$.yleft = CompleteLeft($1.yleft, $3.yint, $3.yint); } - | OneLeft - { $$.yleft = $1.yleft; } - ; - -OneLeft : - NUMBER - { $$.yleft = SingleLeft($1.yint); } - | NUMBER '-' NUMBER - { $$.yleft = DoubleLeft($1.yint, $3.yint); } - | '.' - { $$.yleft = WildCard(); } - | '^' '(' ChoiceLeft ')' - { $$.yleft = NotChoiceLeft($3.ylleft); } - | '(' ChoiceLeft ')' - { $$.yleft = ChoiceLeft($2.ylleft); } - | '{' ID '}' - { $$.yleft = lookup_alias($2.ystring); } - ; - -ChoiceLeft : - OneLeft - { $$.ylleft = llist1($1.yleft); } - | ChoiceLeft '|' OneLeft - { $$.ylleft = lappend1($1.ylleft, $3.yleft); } - ; - -Expressions : - EXPRESSIONS MoreExpressions - { - for(cur_state=0; cur_state' - { cur_state = lookup_state($2.ystring); } - ; - -TotalLeft : - BegLeft Left EndLeft - { $$.ylleft = lappend($1.ylleft, lappend($2.ylleft, $3.ylleft)); } -| BegLeft EndLeft - { $$.ylleft = lappend($1.ylleft, $2.ylleft); } - ; - -BegLeft : - /* Empty */ - { $$.ylleft = nil; } - | BEG - { $$.ylleft = llist1(BeginningLeft()); } - ; - -EndLeft : - /* Empty */ - { $$.ylleft = nil; } - | END - { $$.ylleft = llist1(EndLeft()); } - ; - -Left : - OneCompleteLeft - { $$.ylleft = llist1($1.yleft); } - | Left OneCompleteLeft - { $$.ylleft = lappend1($1.ylleft, $2.yleft); } - ; - -Right : - /* Empty */ - | Right OneRight - ; - -OneRight : - STRING - { - len=strlen($1.ystring); - for (k=0; k' - { out_int(OTP_STATE_CHANGE, 0); } - | '<' ID '>' - { out_int(OTP_STATE_CHANGE, lookup_state($2.ystring)); } - | '<' PUSH ID '>' - { out_int(OTP_STATE_PUSH, lookup_state($3.ystring)); } - | '<' POP '>' - { out_int(OTP_STATE_POP, 0); } - ; -%% diff --git a/Build/source/texk/web2c/otps/y_tab.c-dist b/Build/source/texk/web2c/otps/y_tab.c-dist deleted file mode 100644 index c221ac08b61..00000000000 --- a/Build/source/texk/web2c/otps/y_tab.c-dist +++ /dev/null @@ -1,1764 +0,0 @@ -/* A Bison parser, made by GNU Bison 2.0. */ - -/* Skeleton parser for Yacc-like parsing with Bison, - Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004 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. */ - -/* As a special exception, when this file is copied by Bison into a - Bison output file, you may use that output file without restriction. - This special exception was added by the Free Software Foundation - in version 1.24 of Bison. */ - -/* 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 - variables, as they might otherwise be expanded by user macros. - There are some unavoidable exceptions within include files to - define necessary library symbols; they are noted "INFRINGES ON - USER NAME SPACE" below. */ - -/* Identify Bison output. */ -#define YYBISON 1 - -/* Skeleton name. */ -#define YYSKELETON_NAME "yacc.c" - -/* Pure parsers. */ -#define YYPURE 0 - -/* Using locations. */ -#define YYLSP_NEEDED 0 - - - -/* Tokens. */ -#ifndef YYTOKENTYPE -# define YYTOKENTYPE - /* Put the tokens into the symbol table, so that GDB and other debuggers - know about them. */ - enum yytokentype { - NUMBER = 258, - ID = 259, - STRING = 260, - LEFTARROW = 261, - RIGHTARROW = 262, - INPUT = 263, - OUTPUT = 264, - ALIASES = 265, - STATES = 266, - TABLES = 267, - EXPRESSIONS = 268, - PUSH = 269, - POP = 270, - DIV = 271, - MOD = 272, - BEG = 273, - END = 274 - }; -#endif -#define NUMBER 258 -#define ID 259 -#define STRING 260 -#define LEFTARROW 261 -#define RIGHTARROW 262 -#define INPUT 263 -#define OUTPUT 264 -#define ALIASES 265 -#define STATES 266 -#define TABLES 267 -#define EXPRESSIONS 268 -#define PUSH 269 -#define POP 270 -#define DIV 271 -#define MOD 272 -#define BEG 273 -#define END 274 - - - - -/* Copy the first part of user declarations. */ -#line 25 "./otp.y" - -#include "otp.h" -#include "routines.h" -#include "yystype.h" -int k, len; - -void yyerror(char * msg) -{ -fprintf(stderr, "line %d: %s\n", line_number, msg); -} - - -/* Enabling traces. */ -#ifndef YYDEBUG -# define YYDEBUG 0 -#endif - -/* Enabling verbose error messages. */ -#ifdef YYERROR_VERBOSE -# undef YYERROR_VERBOSE -# define YYERROR_VERBOSE 1 -#else -# define YYERROR_VERBOSE 0 -#endif - -#if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED) -typedef int YYSTYPE; -# define yystype YYSTYPE /* obsolescent; will be withdrawn */ -# define YYSTYPE_IS_DECLARED 1 -# define YYSTYPE_IS_TRIVIAL 1 -#endif - - - -/* Copy the second part of user declarations. */ - - -/* Line 213 of yacc.c. */ -#line 137 "y.tab.c" - -#if ! defined (yyoverflow) || YYERROR_VERBOSE - -# ifndef YYFREE -# define YYFREE free -# endif -# ifndef YYMALLOC -# define YYMALLOC malloc -# endif - -/* The parser invokes alloca or malloc; define the necessary symbols. */ - -# ifdef YYSTACK_USE_ALLOCA -# if YYSTACK_USE_ALLOCA -# ifdef __GNUC__ -# define YYSTACK_ALLOC __builtin_alloca -# else -# define YYSTACK_ALLOC alloca -# endif -# endif -# endif - -# ifdef YYSTACK_ALLOC - /* Pacify GCC's `empty if-body' warning. */ -# define YYSTACK_FREE(Ptr) do { /* empty */; } while (0) -# else -# if defined (__STDC__) || defined (__cplusplus) -# include /* INFRINGES ON USER NAME SPACE */ -# define YYSIZE_T size_t -# endif -# define YYSTACK_ALLOC YYMALLOC -# define YYSTACK_FREE YYFREE -# endif -#endif /* ! defined (yyoverflow) || YYERROR_VERBOSE */ - - -#if (! defined (yyoverflow) \ - && (! defined (__cplusplus) \ - || (defined (YYSTYPE_IS_TRIVIAL) && YYSTYPE_IS_TRIVIAL))) - -/* A type that is properly aligned for any stack member. */ -union yyalloc -{ - short int yyss; - YYSTYPE yyvs; - }; - -/* The size of the maximum gap between one aligned stack and the next. */ -# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1) - -/* The size of an array large to enough to hold all stacks, each with - N elements. */ -# define YYSTACK_BYTES(N) \ - ((N) * (sizeof (short int) + sizeof (YYSTYPE)) \ - + YYSTACK_GAP_MAXIMUM) - -/* Copy COUNT objects from FROM to TO. The source and destination do - not overlap. */ -# ifndef YYCOPY -# if defined (__GNUC__) && 1 < __GNUC__ -# define YYCOPY(To, From, Count) \ - __builtin_memcpy (To, From, (Count) * sizeof (*(From))) -# else -# define YYCOPY(To, From, Count) \ - do \ - { \ - register YYSIZE_T yyi; \ - for (yyi = 0; yyi < (Count); yyi++) \ - (To)[yyi] = (From)[yyi]; \ - } \ - while (0) -# endif -# endif - -/* Relocate STACK from its old location to the new one. The - local variables YYSIZE and YYSTACKSIZE give the old and new number of - elements in the stack, and YYPTR gives the new location of the - stack. Advance YYPTR to a properly aligned location for the next - stack. */ -# define YYSTACK_RELOCATE(Stack) \ - do \ - { \ - YYSIZE_T yynewbytes; \ - YYCOPY (&yyptr->Stack, Stack, yysize); \ - Stack = &yyptr->Stack; \ - yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ - yyptr += yynewbytes / sizeof (*yyptr); \ - } \ - while (0) - -#endif - -#if defined (__STDC__) || defined (__cplusplus) - typedef signed char yysigned_char; -#else - typedef short int yysigned_char; -#endif - -/* YYFINAL -- State number of the termination state. */ -#define YYFINAL 5 -/* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 173 - -/* YYNTOKENS -- Number of terminals. */ -#define YYNTOKENS 40 -/* YYNNTS -- Number of nonterminals. */ -#define YYNNTS 36 -/* YYNRULES -- Number of rules. */ -#define YYNRULES 87 -/* YYNRULES -- Number of states. */ -#define YYNSTATES 161 - -/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ -#define YYUNDEFTOK 2 -#define YYMAXUTOK 274 - -#define YYTRANSLATE(YYX) \ - ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) - -/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */ -static const unsigned char yytranslate[] = -{ - 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 39, 38, 2, 2, 2, - 34, 35, 22, 20, 29, 21, 32, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 23, - 30, 26, 31, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 24, 37, 25, 33, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 27, 36, 28, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 1, 2, 3, 4, - 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, - 15, 16, 17, 18, 19 -}; - -#if YYDEBUG -/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in - YYRHS. */ -static const unsigned short int yyprhs[] = -{ - 0, 0, 3, 10, 11, 15, 16, 20, 21, 24, - 26, 29, 30, 41, 42, 44, 46, 50, 51, 55, - 57, 61, 62, 65, 67, 70, 75, 77, 84, 90, - 95, 97, 99, 103, 105, 110, 114, 118, 120, 124, - 127, 129, 132, 133, 134, 135, 146, 147, 150, 151, - 155, 159, 162, 163, 165, 166, 168, 170, 173, 174, - 177, 179, 181, 184, 187, 194, 197, 204, 211, 220, - 223, 225, 229, 233, 237, 241, 245, 246, 252, 254, - 257, 260, 267, 271, 272, 275, 279, 284 -}; - -/* YYRHS -- A `-1'-separated list of the rules' RHS. */ -static const yysigned_char yyrhs[] = -{ - 41, 0, -1, 42, 43, 44, 50, 52, 58, -1, - -1, 8, 3, 23, -1, -1, 9, 3, 23, -1, - -1, 12, 45, -1, 46, -1, 45, 46, -1, -1, - 4, 24, 3, 25, 47, 26, 27, 48, 28, 23, - -1, -1, 49, -1, 3, -1, 49, 29, 3, -1, - -1, 11, 51, 23, -1, 4, -1, 51, 29, 4, - -1, -1, 10, 53, -1, 54, -1, 53, 54, -1, - 4, 26, 55, 23, -1, 5, -1, 56, 30, 3, - 29, 3, 31, -1, 56, 30, 3, 29, 31, -1, - 56, 30, 3, 31, -1, 56, -1, 3, -1, 3, - 21, 3, -1, 32, -1, 33, 34, 57, 35, -1, - 34, 57, 35, -1, 27, 4, 28, -1, 56, -1, - 57, 36, 56, -1, 13, 59, -1, 60, -1, 59, - 60, -1, -1, -1, -1, 65, 61, 66, 62, 7, - 70, 63, 64, 75, 23, -1, -1, 6, 70, -1, - -1, 30, 4, 31, -1, 67, 69, 68, -1, 67, - 68, -1, -1, 18, -1, -1, 19, -1, 55, -1, - 69, 55, -1, -1, 70, 71, -1, 5, -1, 3, - -1, 37, 3, -1, 37, 38, -1, 37, 34, 38, - 21, 3, 35, -1, 37, 22, -1, 37, 34, 22, - 20, 3, 35, -1, 37, 34, 22, 21, 3, 35, - -1, 37, 34, 22, 20, 3, 21, 3, 35, -1, - 39, 74, -1, 74, -1, 72, 20, 74, -1, 72, - 21, 74, -1, 72, 22, 74, -1, 72, 16, 74, - -1, 72, 17, 74, -1, -1, 4, 73, 24, 72, - 25, -1, 3, -1, 37, 3, -1, 37, 38, -1, - 37, 34, 38, 21, 3, 35, -1, 34, 72, 35, - -1, -1, 30, 31, -1, 30, 4, 31, -1, 30, - 14, 4, 31, -1, 30, 15, 31, -1 -}; - -/* YYRLINE[YYN] -- source line where rule number YYN was defined. */ -static const unsigned short int yyrline[] = -{ - 0, 61, 61, 71, 72, 78, 79, 83, 85, 89, - 90, 95, 94, 99, 101, 105, 107, 111, 113, 117, - 119, 123, 125, 129, 130, 134, 139, 141, 143, 145, - 147, 152, 154, 156, 158, 160, 162, 167, 169, 174, - 189, 190, 195, 197, 199, 194, 204, 206, 211, 212, - 217, 219, 225, 226, 232, 233, 238, 240, 244, 246, - 250, 257, 259, 261, 263, 265, 270, 275, 280, 285, - 290, 291, 293, 295, 297, 299, 302, 301, 308, 310, - 312, 314, 316, 319, 321, 323, 325, 327 -}; -#endif - -#if YYDEBUG || YYERROR_VERBOSE -/* YYTNME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. - First, the terminals, then, starting at YYNTOKENS, nonterminals. */ -static const char *const yytname[] = -{ - "$end", "error", "$undefined", "NUMBER", "ID", "STRING", "LEFTARROW", - "RIGHTARROW", "INPUT", "OUTPUT", "ALIASES", "STATES", "TABLES", - "EXPRESSIONS", "PUSH", "POP", "DIV", "MOD", "BEG", "END", "'+'", "'-'", - "'*'", "';'", "'['", "']'", "'='", "'{'", "'}'", "','", "'<'", "'>'", - "'.'", "'^'", "'('", "')'", "'|'", "'\\\\'", "'$'", "'#'", "$accept", - "File", "Input", "Output", "Tables", "MoreTables", "OneTable", "@1", - "Numbers", "MoreNumbers", "States", "MoreStates", "Aliases", - "MoreAliases", "OneAlias", "OneCompleteLeft", "OneLeft", "ChoiceLeft", - "Expressions", "MoreExpressions", "OneExpr", "@2", "@3", "@4", - "PushBack", "LeftState", "TotalLeft", "BegLeft", "EndLeft", "Left", - "Right", "OneRight", "RestRightExpr", "@5", "OneRightExpr", "RightState", 0 -}; -#endif - -# ifdef YYPRINT -/* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to - token YYLEX-NUM. */ -static const unsigned short int yytoknum[] = -{ - 0, 256, 257, 258, 259, 260, 261, 262, 263, 264, - 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, - 43, 45, 42, 59, 91, 93, 61, 123, 125, 44, - 60, 62, 46, 94, 40, 41, 124, 92, 36, 35 -}; -# endif - -/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ -static const unsigned char yyr1[] = -{ - 0, 40, 41, 42, 42, 43, 43, 44, 44, 45, - 45, 47, 46, 48, 48, 49, 49, 50, 50, 51, - 51, 52, 52, 53, 53, 54, 55, 55, 55, 55, - 55, 56, 56, 56, 56, 56, 56, 57, 57, 58, - 59, 59, 61, 62, 63, 60, 64, 64, 65, 65, - 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, - 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, - 72, 72, 72, 72, 72, 72, 73, 72, 74, 74, - 74, 74, 74, 75, 75, 75, 75, 75 -}; - -/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ -static const unsigned char yyr2[] = -{ - 0, 2, 6, 0, 3, 0, 3, 0, 2, 1, - 2, 0, 10, 0, 1, 1, 3, 0, 3, 1, - 3, 0, 2, 1, 2, 4, 1, 6, 5, 4, - 1, 1, 3, 1, 4, 3, 3, 1, 3, 2, - 1, 2, 0, 0, 0, 10, 0, 2, 0, 3, - 3, 2, 0, 1, 0, 1, 1, 2, 0, 2, - 1, 1, 2, 2, 6, 2, 6, 6, 8, 2, - 1, 3, 3, 3, 3, 3, 0, 5, 1, 2, - 2, 6, 3, 0, 2, 3, 4, 3 -}; - -/* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state - STATE-NUM when YYTABLE doesn't specify something else to do. Zero - means the default is an error. */ -static const unsigned char yydefact[] = -{ - 3, 0, 0, 5, 0, 1, 0, 7, 4, 0, - 0, 17, 6, 0, 8, 9, 0, 21, 0, 10, - 19, 0, 0, 0, 0, 18, 0, 0, 22, 23, - 48, 2, 11, 20, 0, 24, 0, 48, 40, 42, - 0, 31, 26, 0, 33, 0, 0, 0, 30, 0, - 41, 52, 0, 0, 0, 0, 37, 0, 25, 0, - 49, 53, 43, 54, 13, 32, 36, 0, 35, 0, - 0, 0, 55, 56, 51, 54, 15, 0, 14, 34, - 38, 0, 29, 58, 57, 50, 0, 0, 0, 28, - 44, 12, 16, 27, 61, 60, 0, 0, 46, 59, - 62, 65, 0, 63, 78, 0, 0, 69, 58, 83, - 0, 0, 76, 0, 70, 79, 0, 80, 47, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 82, 0, 0, 0, 0, 84, 45, 0, 0, 0, - 0, 74, 75, 71, 72, 73, 0, 85, 0, 87, - 0, 66, 67, 64, 0, 0, 86, 0, 77, 81, - 68 -}; - -/* YYDEFGOTO[NTERM-NUM]. */ -static const yysigned_char yydefgoto[] = -{ - -1, 2, 3, 7, 11, 14, 15, 40, 77, 78, - 17, 21, 23, 28, 29, 47, 48, 57, 31, 37, - 38, 51, 71, 98, 109, 39, 62, 63, 74, 75, - 90, 99, 113, 124, 114, 120 -}; - -/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing - STATE-NUM. */ -#define YYPACT_NINF -97 -static const short int yypact[] = -{ - 0, 13, 18, 11, 34, -97, 69, 66, -97, 65, - 85, 79, -97, 67, 85, -97, 88, 83, 91, -97, - -97, 56, 92, 82, 72, -97, 94, 73, 92, -97, - 70, -97, -97, -97, 22, -97, 97, 17, -97, -97, - 76, 84, -97, 99, -97, 74, 41, 81, 77, 75, - -97, 93, 86, 106, 87, 41, -97, 47, -97, 107, - -97, -97, -97, 19, 109, -97, -97, 51, -97, 41, - -16, 110, -97, -97, -97, 19, -97, 90, 95, -97, - -97, 45, -97, -97, -97, -97, 96, 111, 89, -97, - -3, -97, -97, -97, -97, -97, 1, 8, 115, -97, - -97, -97, -17, -97, -97, 6, 3, -97, -97, 98, - 60, 101, -97, 49, -97, -97, 78, -97, -3, 46, - 100, 122, 123, 124, 105, 8, 8, 8, 8, 8, - -97, 112, 103, 126, 104, -97, -97, -7, 102, 108, - 6, -97, -97, -97, -97, -97, 128, -97, 113, -97, - 129, -97, -97, -97, 42, 114, -97, 116, -97, -97, - -97 -}; - -/* YYPGOTO[NTERM-NUM]. */ -static const yysigned_char yypgoto[] = -{ - -97, -97, -97, -97, -97, -97, 125, -97, -97, -97, - -97, -97, -97, -97, 117, -56, -43, 118, -97, -97, - 119, -97, -97, -97, -97, -97, -97, -97, 61, -97, - 30, -97, 2, -97, -96, -97 -}; - -/* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If - positive, shift that token. If negative, reduce the rule which - number is the opposite. If zero, do what YYDEFACT says. - If YYTABLE_NINF, syntax error. */ -#define YYTABLE_NINF -40 -static const short int yytable[] = -{ - 94, 107, 95, 56, 100, 110, 115, 73, 1, 104, - 112, 104, 56, 81, 150, 82, 4, -39, 5, 84, - 6, 111, 41, 101, 42, 41, 80, 42, 151, 141, - 142, 143, 144, 145, 96, 102, 97, 116, 72, 103, - 105, 117, 105, 106, 41, 106, 43, 36, 88, 43, - 132, 44, 45, 46, 44, 45, 46, 8, 125, 126, - 133, 134, 127, 128, 129, 125, 126, 158, 43, 127, - 128, 129, 9, 44, 45, 46, 89, 135, 10, 25, - 121, 122, 68, 69, 130, 26, 79, 69, 12, 13, - 16, 18, 20, 22, 24, 30, 27, 32, 33, 34, - 36, 49, 52, 54, 58, 53, 60, 59, 55, 65, - 70, 61, 76, 64, 92, 66, 131, 83, 86, 91, - 93, 108, 123, 136, 87, 137, 138, 139, 119, 140, - 148, 155, 157, 146, 147, 149, 85, 152, 118, 19, - 0, 0, 154, 153, 156, 35, 0, 0, 0, 159, - 0, 160, 0, 0, 0, 0, 50, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 67 -}; - -static const short int yycheck[] = -{ - 3, 97, 5, 46, 3, 22, 3, 63, 8, 3, - 4, 3, 55, 29, 21, 31, 3, 0, 0, 75, - 9, 38, 3, 22, 5, 3, 69, 5, 35, 125, - 126, 127, 128, 129, 37, 34, 39, 34, 19, 38, - 34, 38, 34, 37, 3, 37, 27, 30, 3, 27, - 4, 32, 33, 34, 32, 33, 34, 23, 16, 17, - 14, 15, 20, 21, 22, 16, 17, 25, 27, 20, - 21, 22, 3, 32, 33, 34, 31, 31, 12, 23, - 20, 21, 35, 36, 35, 29, 35, 36, 23, 4, - 11, 24, 4, 10, 3, 13, 4, 25, 4, 26, - 30, 4, 26, 4, 23, 21, 31, 30, 34, 3, - 3, 18, 3, 27, 3, 28, 38, 7, 28, 23, - 31, 6, 21, 23, 29, 3, 3, 3, 30, 24, - 4, 3, 3, 21, 31, 31, 75, 35, 108, 14, - -1, -1, 140, 35, 31, 28, -1, -1, -1, 35, - -1, 35, -1, -1, -1, -1, 37, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 55 -}; - -/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing - symbol of state STATE-NUM. */ -static const unsigned char yystos[] = -{ - 0, 8, 41, 42, 3, 0, 9, 43, 23, 3, - 12, 44, 23, 4, 45, 46, 11, 50, 24, 46, - 4, 51, 10, 52, 3, 23, 29, 4, 53, 54, - 13, 58, 25, 4, 26, 54, 30, 59, 60, 65, - 47, 3, 5, 27, 32, 33, 34, 55, 56, 4, - 60, 61, 26, 21, 4, 34, 56, 57, 23, 30, - 31, 18, 66, 67, 27, 3, 28, 57, 35, 36, - 3, 62, 19, 55, 68, 69, 3, 48, 49, 35, - 56, 29, 31, 7, 55, 68, 28, 29, 3, 31, - 70, 23, 3, 31, 3, 5, 37, 39, 63, 71, - 3, 22, 34, 38, 3, 34, 37, 74, 6, 64, - 22, 38, 4, 72, 74, 3, 34, 38, 70, 30, - 75, 20, 21, 21, 73, 16, 17, 20, 21, 22, - 35, 38, 4, 14, 15, 31, 23, 3, 3, 3, - 24, 74, 74, 74, 74, 74, 21, 31, 4, 31, - 21, 35, 35, 35, 72, 3, 31, 3, 25, 35, - 35 -}; - -#if ! defined (YYSIZE_T) && defined (__SIZE_TYPE__) -# define YYSIZE_T __SIZE_TYPE__ -#endif -#if ! defined (YYSIZE_T) && defined (size_t) -# define YYSIZE_T size_t -#endif -#if ! defined (YYSIZE_T) -# if defined (__STDC__) || defined (__cplusplus) -# include /* INFRINGES ON USER NAME SPACE */ -# define YYSIZE_T size_t -# endif -#endif -#if ! defined (YYSIZE_T) -# define YYSIZE_T unsigned int -#endif - -#define yyerrok (yyerrstatus = 0) -#define yyclearin (yychar = YYEMPTY) -#define YYEMPTY (-2) -#define YYEOF 0 - -#define YYACCEPT goto yyacceptlab -#define YYABORT goto yyabortlab -#define YYERROR goto yyerrorlab - - -/* Like YYERROR except do call yyerror. This remains here temporarily - to ease the transition to the new meaning of YYERROR, for GCC. - Once GCC version 2 has supplanted version 1, this can go. */ - -#define YYFAIL goto yyerrlab - -#define YYRECOVERING() (!!yyerrstatus) - -#define YYBACKUP(Token, Value) \ -do \ - if (yychar == YYEMPTY && yylen == 1) \ - { \ - yychar = (Token); \ - yylval = (Value); \ - yytoken = YYTRANSLATE (yychar); \ - YYPOPSTACK; \ - goto yybackup; \ - } \ - else \ - { \ - yyerror ("syntax error: cannot back up");\ - YYERROR; \ - } \ -while (0) - - -#define YYTERROR 1 -#define YYERRCODE 256 - - -/* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N]. - If N is 0, then set CURRENT to the empty location which ends - the previous symbol: RHS[0] (always defined). */ - -#define YYRHSLOC(Rhs, K) ((Rhs)[K]) -#ifndef YYLLOC_DEFAULT -# define YYLLOC_DEFAULT(Current, Rhs, N) \ - do \ - if (N) \ - { \ - (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \ - (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \ - (Current).last_line = YYRHSLOC (Rhs, N).last_line; \ - (Current).last_column = YYRHSLOC (Rhs, N).last_column; \ - } \ - else \ - { \ - (Current).first_line = (Current).last_line = \ - YYRHSLOC (Rhs, 0).last_line; \ - (Current).first_column = (Current).last_column = \ - YYRHSLOC (Rhs, 0).last_column; \ - } \ - while (0) -#endif - - -/* YY_LOCATION_PRINT -- Print the location on the stream. - This macro was not mandated originally: define only if we know - we won't break user code: when these are the locations we know. */ - -#ifndef YY_LOCATION_PRINT -# if YYLTYPE_IS_TRIVIAL -# define YY_LOCATION_PRINT(File, Loc) \ - fprintf (File, "%d.%d-%d.%d", \ - (Loc).first_line, (Loc).first_column, \ - (Loc).last_line, (Loc).last_column) -# else -# define YY_LOCATION_PRINT(File, Loc) ((void) 0) -# endif -#endif - - -/* YYLEX -- calling `yylex' with the right arguments. */ - -#ifdef YYLEX_PARAM -# define YYLEX yylex (YYLEX_PARAM) -#else -# define YYLEX yylex () -#endif - -/* Enable debugging if requested. */ -#if YYDEBUG - -# ifndef YYFPRINTF -# include /* INFRINGES ON USER NAME SPACE */ -# define YYFPRINTF fprintf -# endif - -# define YYDPRINTF(Args) \ -do { \ - if (yydebug) \ - YYFPRINTF Args; \ -} while (0) - -# define YY_SYMBOL_PRINT(Title, Type, Value, Location) \ -do { \ - if (yydebug) \ - { \ - YYFPRINTF (stderr, "%s ", Title); \ - yysymprint (stderr, \ - Type, Value); \ - YYFPRINTF (stderr, "\n"); \ - } \ -} while (0) - -/*------------------------------------------------------------------. -| yy_stack_print -- Print the state stack from its BOTTOM up to its | -| TOP (included). | -`------------------------------------------------------------------*/ - -#if defined (__STDC__) || defined (__cplusplus) -static void -yy_stack_print (short int *bottom, short int *top) -#else -static void -yy_stack_print (bottom, top) - short int *bottom; - short int *top; -#endif -{ - YYFPRINTF (stderr, "Stack now"); - for (/* Nothing. */; bottom <= top; ++bottom) - YYFPRINTF (stderr, " %d", *bottom); - YYFPRINTF (stderr, "\n"); -} - -# define YY_STACK_PRINT(Bottom, Top) \ -do { \ - if (yydebug) \ - yy_stack_print ((Bottom), (Top)); \ -} while (0) - - -/*------------------------------------------------. -| Report that the YYRULE is going to be reduced. | -`------------------------------------------------*/ - -#if defined (__STDC__) || defined (__cplusplus) -static void -yy_reduce_print (int yyrule) -#else -static void -yy_reduce_print (yyrule) - int yyrule; -#endif -{ - int yyi; - unsigned int yylno = yyrline[yyrule]; - YYFPRINTF (stderr, "Reducing stack by rule %d (line %u), ", - yyrule - 1, yylno); - /* Print the symbols being reduced, and their result. */ - for (yyi = yyprhs[yyrule]; 0 <= yyrhs[yyi]; yyi++) - YYFPRINTF (stderr, "%s ", yytname [yyrhs[yyi]]); - YYFPRINTF (stderr, "-> %s\n", yytname [yyr1[yyrule]]); -} - -# define YY_REDUCE_PRINT(Rule) \ -do { \ - if (yydebug) \ - yy_reduce_print (Rule); \ -} while (0) - -/* Nonzero means print parse trace. It is left uninitialized so that - multiple parsers can coexist. */ -int yydebug; -#else /* !YYDEBUG */ -# define YYDPRINTF(Args) -# define YY_SYMBOL_PRINT(Title, Type, Value, Location) -# define YY_STACK_PRINT(Bottom, Top) -# define YY_REDUCE_PRINT(Rule) -#endif /* !YYDEBUG */ - - -/* YYINITDEPTH -- initial size of the parser's stacks. */ -#ifndef YYINITDEPTH -# define YYINITDEPTH 200 -#endif - -/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only - if the built-in stack extension method is used). - - Do not make this value too large; the results are undefined if - SIZE_MAX < YYSTACK_BYTES (YYMAXDEPTH) - evaluated with infinite-precision integer arithmetic. */ - -#ifndef YYMAXDEPTH -# define YYMAXDEPTH 10000 -#endif - - - -#if YYERROR_VERBOSE - -# ifndef yystrlen -# if defined (__GLIBC__) && defined (_STRING_H) -# define yystrlen strlen -# else -/* Return the length of YYSTR. */ -static YYSIZE_T -# if defined (__STDC__) || defined (__cplusplus) -yystrlen (const char *yystr) -# else -yystrlen (yystr) - const char *yystr; -# endif -{ - register const char *yys = yystr; - - while (*yys++ != '\0') - continue; - - return yys - yystr - 1; -} -# endif -# endif - -# ifndef yystpcpy -# if defined (__GLIBC__) && defined (_STRING_H) && defined (_GNU_SOURCE) -# define yystpcpy stpcpy -# else -/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in - YYDEST. */ -static char * -# if defined (__STDC__) || defined (__cplusplus) -yystpcpy (char *yydest, const char *yysrc) -# else -yystpcpy (yydest, yysrc) - char *yydest; - const char *yysrc; -# endif -{ - register char *yyd = yydest; - register const char *yys = yysrc; - - while ((*yyd++ = *yys++) != '\0') - continue; - - return yyd - 1; -} -# endif -# endif - -#endif /* !YYERROR_VERBOSE */ - - - -#if YYDEBUG -/*--------------------------------. -| Print this symbol on YYOUTPUT. | -`--------------------------------*/ - -#if defined (__STDC__) || defined (__cplusplus) -static void -yysymprint (FILE *yyoutput, int yytype, YYSTYPE *yyvaluep) -#else -static void -yysymprint (yyoutput, yytype, yyvaluep) - FILE *yyoutput; - int yytype; - YYSTYPE *yyvaluep; -#endif -{ - /* Pacify ``unused variable'' warnings. */ - (void) yyvaluep; - - if (yytype < YYNTOKENS) - YYFPRINTF (yyoutput, "token %s (", yytname[yytype]); - else - YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]); - - -# ifdef YYPRINT - if (yytype < YYNTOKENS) - YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep); -# endif - switch (yytype) - { - default: - break; - } - YYFPRINTF (yyoutput, ")"); -} - -#endif /* ! YYDEBUG */ -/*-----------------------------------------------. -| Release the memory associated to this symbol. | -`-----------------------------------------------*/ - -#if defined (__STDC__) || defined (__cplusplus) -static void -yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep) -#else -static void -yydestruct (yymsg, yytype, yyvaluep) - const char *yymsg; - int yytype; - YYSTYPE *yyvaluep; -#endif -{ - /* Pacify ``unused variable'' warnings. */ - (void) yyvaluep; - - if (!yymsg) - yymsg = "Deleting"; - YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp); - - switch (yytype) - { - - default: - break; - } -} - - -/* Prevent warnings from -Wmissing-prototypes. */ - -#ifdef YYPARSE_PARAM -# if defined (__STDC__) || defined (__cplusplus) -int yyparse (void *YYPARSE_PARAM); -# else -int yyparse (); -# endif -#else /* ! YYPARSE_PARAM */ -#if defined (__STDC__) || defined (__cplusplus) -int yyparse (void); -#else -int yyparse (); -#endif -#endif /* ! YYPARSE_PARAM */ - - - -/* The look-ahead symbol. */ -int yychar; - -/* The semantic value of the look-ahead symbol. */ -YYSTYPE yylval; - -/* Number of syntax errors so far. */ -int yynerrs; - - - -/*----------. -| yyparse. | -`----------*/ - -#ifdef YYPARSE_PARAM -# if defined (__STDC__) || defined (__cplusplus) -int yyparse (void *YYPARSE_PARAM) -# else -int yyparse (YYPARSE_PARAM) - void *YYPARSE_PARAM; -# endif -#else /* ! YYPARSE_PARAM */ -#if defined (__STDC__) || defined (__cplusplus) -int -yyparse (void) -#else -int -yyparse () - -#endif -#endif -{ - - register int yystate; - register int yyn; - int yyresult; - /* Number of tokens to shift before error messages enabled. */ - int yyerrstatus; - /* Look-ahead token as an internal (translated) token number. */ - int yytoken = 0; - - /* Three stacks and their tools: - `yyss': related to states, - `yyvs': related to semantic values, - `yyls': related to locations. - - Refer to the stacks thru separate pointers, to allow yyoverflow - to reallocate them elsewhere. */ - - /* The state stack. */ - short int yyssa[YYINITDEPTH]; - short int *yyss = yyssa; - register short int *yyssp; - - /* The semantic value stack. */ - YYSTYPE yyvsa[YYINITDEPTH]; - YYSTYPE *yyvs = yyvsa; - register YYSTYPE *yyvsp; - - - -#define YYPOPSTACK (yyvsp--, yyssp--) - - YYSIZE_T yystacksize = YYINITDEPTH; - - /* The variables used to return semantic value and location from the - action routines. */ - YYSTYPE yyval; - - - /* When reducing, the number of symbols on the RHS of the reduced - rule. */ - int yylen; - - YYDPRINTF ((stderr, "Starting parse\n")); - - yystate = 0; - yyerrstatus = 0; - yynerrs = 0; - yychar = YYEMPTY; /* Cause a token to be read. */ - - /* Initialize stack pointers. - Waste one element of value and location stack - so that they stay on the same level as the state stack. - The wasted elements are never initialized. */ - - yyssp = yyss; - yyvsp = yyvs; - - - yyvsp[0] = yylval; - - goto yysetstate; - -/*------------------------------------------------------------. -| yynewstate -- Push a new state, which is found in yystate. | -`------------------------------------------------------------*/ - yynewstate: - /* In all cases, when you get here, the value and location stacks - have just been pushed. so pushing a state here evens the stacks. - */ - yyssp++; - - yysetstate: - *yyssp = yystate; - - if (yyss + yystacksize - 1 <= yyssp) - { - /* Get the current used size of the three stacks, in elements. */ - YYSIZE_T yysize = yyssp - yyss + 1; - -#ifdef yyoverflow - { - /* Give user a chance to reallocate the stack. Use copies of - these so that the &'s don't force the real ones into - memory. */ - YYSTYPE *yyvs1 = yyvs; - short int *yyss1 = yyss; - - - /* Each stack pointer address is followed by the size of the - data in use in that stack, in bytes. This used to be a - conditional around just the two extra args, but that might - be undefined if yyoverflow is a macro. */ - yyoverflow ("parser stack overflow", - &yyss1, yysize * sizeof (*yyssp), - &yyvs1, yysize * sizeof (*yyvsp), - - &yystacksize); - - yyss = yyss1; - yyvs = yyvs1; - } -#else /* no yyoverflow */ -# ifndef YYSTACK_RELOCATE - goto yyoverflowlab; -# else - /* Extend the stack our own way. */ - if (YYMAXDEPTH <= yystacksize) - goto yyoverflowlab; - yystacksize *= 2; - if (YYMAXDEPTH < yystacksize) - yystacksize = YYMAXDEPTH; - - { - short int *yyss1 = yyss; - union yyalloc *yyptr = - (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); - if (! yyptr) - goto yyoverflowlab; - YYSTACK_RELOCATE (yyss); - YYSTACK_RELOCATE (yyvs); - -# undef YYSTACK_RELOCATE - if (yyss1 != yyssa) - YYSTACK_FREE (yyss1); - } -# endif -#endif /* no yyoverflow */ - - yyssp = yyss + yysize - 1; - yyvsp = yyvs + yysize - 1; - - - YYDPRINTF ((stderr, "Stack size increased to %lu\n", - (unsigned long int) yystacksize)); - - if (yyss + yystacksize - 1 <= yyssp) - YYABORT; - } - - YYDPRINTF ((stderr, "Entering state %d\n", yystate)); - - goto yybackup; - -/*-----------. -| yybackup. | -`-----------*/ -yybackup: - -/* Do appropriate processing given the current state. */ -/* Read a look-ahead token if we need one and don't already have one. */ -/* yyresume: */ - - /* First try to decide what to do without reference to look-ahead token. */ - - yyn = yypact[yystate]; - if (yyn == YYPACT_NINF) - goto yydefault; - - /* Not known => get a look-ahead token if don't already have one. */ - - /* YYCHAR is either YYEMPTY or YYEOF or a valid look-ahead symbol. */ - if (yychar == YYEMPTY) - { - YYDPRINTF ((stderr, "Reading a token: ")); - yychar = YYLEX; - } - - if (yychar <= YYEOF) - { - yychar = yytoken = YYEOF; - YYDPRINTF ((stderr, "Now at end of input.\n")); - } - else - { - yytoken = YYTRANSLATE (yychar); - YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc); - } - - /* If the proper action on seeing token YYTOKEN is to reduce or to - detect an error, take that action. */ - yyn += yytoken; - if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken) - goto yydefault; - yyn = yytable[yyn]; - if (yyn <= 0) - { - if (yyn == 0 || yyn == YYTABLE_NINF) - goto yyerrlab; - yyn = -yyn; - goto yyreduce; - } - - if (yyn == YYFINAL) - YYACCEPT; - - /* Shift the look-ahead token. */ - YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc); - - /* Discard the token being shifted unless it is eof. */ - if (yychar != YYEOF) - yychar = YYEMPTY; - - *++yyvsp = yylval; - - - /* Count tokens shifted since error; after three, turn off error - status. */ - if (yyerrstatus) - yyerrstatus--; - - yystate = yyn; - goto yynewstate; - - -/*-----------------------------------------------------------. -| yydefault -- do the default action for the current state. | -`-----------------------------------------------------------*/ -yydefault: - yyn = yydefact[yystate]; - if (yyn == 0) - goto yyerrlab; - goto yyreduce; - - -/*-----------------------------. -| yyreduce -- Do a reduction. | -`-----------------------------*/ -yyreduce: - /* yyn is the number of a rule to reduce with. */ - yylen = yyr2[yyn]; - - /* If YYLEN is nonzero, implement the default value of the action: - `$$ = $1'. - - Otherwise, the following line sets YYVAL to garbage. - This behavior is undocumented and Bison - users should not rely upon it. Assigning to YYVAL - unconditionally makes the parser a bit smaller, and it avoids a - GCC warning that YYVAL may be used uninitialized. */ - yyval = yyvsp[1-yylen]; - - - YY_REDUCE_PRINT (yyn); - switch (yyn) - { - case 3: -#line 71 "./otp.y" - { input_bytes=2; } - break; - - case 4: -#line 73 "./otp.y" - { input_bytes=(yyvsp[-1]).yint; } - break; - - case 5: -#line 78 "./otp.y" - { output_bytes=2; } - break; - - case 6: -#line 80 "./otp.y" - { output_bytes=(yyvsp[-1]).yint; } - break; - - case 11: -#line 95 "./otp.y" - { store_table((yyvsp[-3]).ystring, (yyvsp[-1]).yint); } - break; - - case 15: -#line 106 "./otp.y" - { add_to_table((yyvsp[0]).yint); } - break; - - case 16: -#line 108 "./otp.y" - { add_to_table((yyvsp[0]).yint); } - break; - - case 19: -#line 118 "./otp.y" - { store_state((yyvsp[0]).ystring); } - break; - - case 20: -#line 120 "./otp.y" - { store_state((yyvsp[0]).ystring); } - break; - - case 25: -#line 135 "./otp.y" - { store_alias((yyvsp[-3]).ystring, (yyvsp[-1]).yleft); } - break; - - case 26: -#line 140 "./otp.y" - { (yyval).yleft = StringLeft((yyvsp[0]).ystring); } - break; - - case 27: -#line 142 "./otp.y" - { (yyval).yleft = CompleteLeft((yyvsp[-5]).yleft, (yyvsp[-3]).yint, (yyvsp[-1]).yint); } - break; - - case 28: -#line 144 "./otp.y" - { (yyval).yleft = PlusLeft((yyvsp[-4]).yleft, (yyvsp[-2]).yint); } - break; - - case 29: -#line 146 "./otp.y" - { (yyval).yleft = CompleteLeft((yyvsp[-3]).yleft, (yyvsp[-1]).yint, (yyvsp[-1]).yint); } - break; - - case 30: -#line 148 "./otp.y" - { (yyval).yleft = (yyvsp[0]).yleft; } - break; - - case 31: -#line 153 "./otp.y" - { (yyval).yleft = SingleLeft((yyvsp[0]).yint); } - break; - - case 32: -#line 155 "./otp.y" - { (yyval).yleft = DoubleLeft((yyvsp[-2]).yint, (yyvsp[0]).yint); } - break; - - case 33: -#line 157 "./otp.y" - { (yyval).yleft = WildCard(); } - break; - - case 34: -#line 159 "./otp.y" - { (yyval).yleft = NotChoiceLeft((yyvsp[-1]).ylleft); } - break; - - case 35: -#line 161 "./otp.y" - { (yyval).yleft = ChoiceLeft((yyvsp[-1]).ylleft); } - break; - - case 36: -#line 163 "./otp.y" - { (yyval).yleft = lookup_alias((yyvsp[-1]).ystring); } - break; - - case 37: -#line 168 "./otp.y" - { (yyval).ylleft = llist1((yyvsp[0]).yleft); } - break; - - case 38: -#line 170 "./otp.y" - { (yyval).ylleft = lappend1((yyvsp[-2]).ylleft, (yyvsp[0]).yleft); } - break; - - case 39: -#line 175 "./otp.y" - { - for(cur_state=0; cur_state&2 - exit 1 -fi - basefile= while test $# -gt 0; do case $1 in @@ -72,7 +59,7 @@ case $basefile in web2c_options="-m -c${basefile}coerce" hfile=texmfmp.h midcmd="| sed -f $srcdir/web2c/cvtmf2.sed" - postcmd="| $native/web2c/splitup $splitup_options $basefile" + postcmd="| ./web2c/splitup $splitup_options $basefile" cfile=${basefile}1.c # last output file, or thereabouts output= output_files="$basefile[0-9].c ${basefile}ini.c ${basefile}d.h \ @@ -89,7 +76,7 @@ ${basefile}coerce.h" web2c_options="-m -c${basefile}coerce" hfile=texmfmp.h midcmd="| sed -f $srcdir/web2c/cvtmf2.sed" - postcmd="| $native/web2c/splitup $splitup_options $basefile" + postcmd="| ./web2c/splitup $splitup_options $basefile" cfile=${basefile}2.c # last output file, or thereabouts output= output_files="$basefile[0-9].c ${basefile}ini.c ${basefile}d.h \ @@ -105,7 +92,7 @@ ${basefile}coerce.h" web2c_options="-t -c${basefile}coerce" hfile=texmfmp.h fixwrites_options=-t - postcmd="| $native/web2c/splitup $splitup_options ${basefile}" + postcmd="| ./web2c/splitup $splitup_options ${basefile}" cfile=${basefile}2.c # last output file, or thereabouts output= output_files="$basefile[0-9].c ${basefile}ini.c ${basefile}d.h \ @@ -122,7 +109,7 @@ ${basefile}coerce.h" hfile=texmfmp.h fixwrites_options=-t splitup_options="-i -l 13500" - postcmd="| $native/web2c/splitup $splitup_options ${basefile}" + postcmd="| ./web2c/splitup $splitup_options ${basefile}" cfile=${basefile}2.c # last output file, or thereabouts output= output_files="$basefile[0-9].c ${basefile}ini.c ${basefile}d.h \ @@ -134,9 +121,9 @@ esac #set -x eval "cat $srcdir/web2c/common.defines $more_defines $pascalfile \ $precmd \ - | $native/web2c/web2c -h$hfile $web2c_options \ + | ./web2c/web2c -h$hfile $web2c_options \ $midcmd \ - | $native/web2c/fixwrites $fixwrites_options $basefile \ + | ./web2c/fixwrites $fixwrites_options $basefile \ $postcmd \ $output" diff --git a/Build/source/texk/web2c/web2c/lex.yy.c-dist b/Build/source/texk/web2c/web2c/lex.yy.c-dist deleted file mode 100644 index 546c9ad2ace..00000000000 --- a/Build/source/texk/web2c/web2c/lex.yy.c-dist +++ /dev/null @@ -1,2492 +0,0 @@ - -#line 3 "lex.yy.c" - -#define YY_INT_ALIGNED short int - -/* A lexical scanner generated by flex */ - -#define FLEX_SCANNER -#define YY_FLEX_MAJOR_VERSION 2 -#define YY_FLEX_MINOR_VERSION 5 -#define YY_FLEX_SUBMINOR_VERSION 31 -#if YY_FLEX_SUBMINOR_VERSION > 0 -#define FLEX_BETA -#endif - -/* First, we deal with platform-specific or compiler-specific issues. */ - -/* begin standard C headers. */ -#include -#include -#include -#include - -/* end standard C headers. */ - -/* flex integer type definitions */ - -#ifndef FLEXINT_H -#define FLEXINT_H - -/* C99 systems have . Non-C99 systems may or may not. */ - -#if defined __STDC_VERSION__ && __STDC_VERSION__ >= 199901L -#include -typedef int8_t flex_int8_t; -typedef uint8_t flex_uint8_t; -typedef int16_t flex_int16_t; -typedef uint16_t flex_uint16_t; -typedef int32_t flex_int32_t; -typedef uint32_t flex_uint32_t; -#else -typedef signed char flex_int8_t; -typedef short int flex_int16_t; -typedef int flex_int32_t; -typedef unsigned char flex_uint8_t; -typedef unsigned short int flex_uint16_t; -typedef unsigned int flex_uint32_t; -#endif /* ! C99 */ - -/* Limits of integral types. */ -#ifndef INT8_MIN -#define INT8_MIN (-128) -#endif -#ifndef INT16_MIN -#define INT16_MIN (-32767-1) -#endif -#ifndef INT32_MIN -#define INT32_MIN (-2147483647-1) -#endif -#ifndef INT8_MAX -#define INT8_MAX (127) -#endif -#ifndef INT16_MAX -#define INT16_MAX (32767) -#endif -#ifndef INT32_MAX -#define INT32_MAX (2147483647) -#endif -#ifndef UINT8_MAX -#define UINT8_MAX (255U) -#endif -#ifndef UINT16_MAX -#define UINT16_MAX (65535U) -#endif -#ifndef UINT32_MAX -#define UINT32_MAX (4294967295U) -#endif - -#endif /* ! FLEXINT_H */ - -#ifdef __cplusplus - -/* The "const" storage-class-modifier is valid. */ -#define YY_USE_CONST - -#else /* ! __cplusplus */ - -#if __STDC__ - -#define YY_USE_CONST - -#endif /* __STDC__ */ -#endif /* ! __cplusplus */ - -#ifdef YY_USE_CONST -#define yyconst const -#else -#define yyconst -#endif - -/* Returned upon end-of-file. */ -#define YY_NULL 0 - -/* Promotes a possibly negative, possibly signed char to an unsigned - * integer for use as an array index. If the signed char is negative, - * we want to instead treat it as an 8-bit unsigned char, hence the - * double cast. - */ -#define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c) - -/* Enter a start condition. This macro really ought to take a parameter, - * but we do it the disgusting crufty way forced on us by the ()-less - * definition of BEGIN. - */ -#define BEGIN (yy_start) = 1 + 2 * - -/* Translate the current start state into a value that can be later handed - * to BEGIN to return to the state. The YYSTATE alias is for lex - * compatibility. - */ -#define YY_START (((yy_start) - 1) / 2) -#define YYSTATE YY_START - -/* Action number for EOF rule of a given start state. */ -#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1) - -/* Special action meaning "start processing a new file". */ -#define YY_NEW_FILE yyrestart(yyin ) - -#define YY_END_OF_BUFFER_CHAR 0 - -/* Size of default input buffer. */ -#ifndef YY_BUF_SIZE -#define YY_BUF_SIZE 16384 -#endif - -#ifndef YY_TYPEDEF_YY_BUFFER_STATE -#define YY_TYPEDEF_YY_BUFFER_STATE -typedef struct yy_buffer_state *YY_BUFFER_STATE; -#endif - -extern int yyleng; - -extern FILE *yyin, *yyout; - -#define EOB_ACT_CONTINUE_SCAN 0 -#define EOB_ACT_END_OF_FILE 1 -#define EOB_ACT_LAST_MATCH 2 - - /* Note: We specifically omit the test for yy_rule_can_match_eol because it requires - * access to the local variable yy_act. Since yyless() is a macro, it would break - * existing scanners that call yyless() from OUTSIDE yylex. - * One obvious solution it to make yy_act a global. I tried that, and saw - * a 5% performance hit in a non-yylineno scanner, because yy_act is - * normally declared as a register variable-- so it is not worth it. - */ - #define YY_LESS_LINENO(n) \ - do { \ - int yyl;\ - for ( yyl = n; yyl < yyleng; ++yyl )\ - if ( yytext[yyl] == '\n' )\ - --yylineno;\ - }while(0) - -/* Return all but the first "n" matched characters back to the input stream. */ -#define yyless(n) \ - do \ - { \ - /* Undo effects of setting up yytext. */ \ - int yyless_macro_arg = (n); \ - YY_LESS_LINENO(yyless_macro_arg);\ - *yy_cp = (yy_hold_char); \ - YY_RESTORE_YY_MORE_OFFSET \ - (yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \ - YY_DO_BEFORE_ACTION; /* set up yytext again */ \ - } \ - while ( 0 ) - -#define unput(c) yyunput( c, (yytext_ptr) ) - -/* The following is because we cannot portably get our hands on size_t - * (without autoconf's help, which isn't available because we want - * flex-generated scanners to compile on their own). - */ - -#ifndef YY_TYPEDEF_YY_SIZE_T -#define YY_TYPEDEF_YY_SIZE_T -typedef unsigned int yy_size_t; -#endif - -#ifndef YY_STRUCT_YY_BUFFER_STATE -#define YY_STRUCT_YY_BUFFER_STATE -struct yy_buffer_state - { - FILE *yy_input_file; - - char *yy_ch_buf; /* input buffer */ - char *yy_buf_pos; /* current position in input buffer */ - - /* Size of input buffer in bytes, not including room for EOB - * characters. - */ - yy_size_t yy_buf_size; - - /* Number of characters read into yy_ch_buf, not including EOB - * characters. - */ - int yy_n_chars; - - /* Whether we "own" the buffer - i.e., we know we created it, - * and can realloc() it to grow it, and should free() it to - * delete it. - */ - int yy_is_our_buffer; - - /* Whether this is an "interactive" input source; if so, and - * if we're using stdio for input, then we want to use getc() - * instead of fread(), to make sure we stop fetching input after - * each newline. - */ - int yy_is_interactive; - - /* Whether we're considered to be at the beginning of a line. - * If so, '^' rules will be active on the next match, otherwise - * not. - */ - int yy_at_bol; - - int yy_bs_lineno; /**< The line count. */ - int yy_bs_column; /**< The column count. */ - - /* Whether to try to fill the input buffer when we reach the - * end of it. - */ - int yy_fill_buffer; - - int yy_buffer_status; - -#define YY_BUFFER_NEW 0 -#define YY_BUFFER_NORMAL 1 - /* When an EOF's been seen but there's still some text to process - * then we mark the buffer as YY_EOF_PENDING, to indicate that we - * shouldn't try reading from the input source any more. We might - * still have a bunch of tokens to match, though, because of - * possible backing-up. - * - * When we actually see the EOF, we change the status to "new" - * (via yyrestart()), so that the user can continue scanning by - * just pointing yyin at a new input file. - */ -#define YY_BUFFER_EOF_PENDING 2 - - }; -#endif /* !YY_STRUCT_YY_BUFFER_STATE */ - -/* Stack of input buffers. */ -static size_t yy_buffer_stack_top = 0; /**< index of top of stack. */ -static size_t yy_buffer_stack_max = 0; /**< capacity of stack. */ -static YY_BUFFER_STATE * yy_buffer_stack = 0; /**< Stack as an array. */ - -/* We provide macros for accessing buffer states in case in the - * future we want to put the buffer states in a more general - * "scanner state". - * - * Returns the top of the stack, or NULL. - */ -#define YY_CURRENT_BUFFER ( (yy_buffer_stack) \ - ? (yy_buffer_stack)[(yy_buffer_stack_top)] \ - : NULL) - -/* Same as previous macro, but useful when we know that the buffer stack is not - * NULL or when we need an lvalue. For internal use only. - */ -#define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)] - -/* yy_hold_char holds the character lost when yytext is formed. */ -static char yy_hold_char; -static int yy_n_chars; /* number of characters read into yy_ch_buf */ -int yyleng; - -/* Points to current character in buffer. */ -static char *yy_c_buf_p = (char *) 0; -static int yy_init = 1; /* whether we need to initialize */ -static int yy_start = 0; /* start state number */ - -/* Flag which is used to allow yywrap()'s to do buffer switches - * instead of setting up a fresh yyin. A bit of a hack ... - */ -static int yy_did_buffer_switch_on_eof; - -void yyrestart (FILE *input_file ); -void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer ); -YY_BUFFER_STATE yy_create_buffer (FILE *file,int size ); -void yy_delete_buffer (YY_BUFFER_STATE b ); -void yy_flush_buffer (YY_BUFFER_STATE b ); -void yypush_buffer_state (YY_BUFFER_STATE new_buffer ); -void yypop_buffer_state (void ); - -static void yyensure_buffer_stack (void ); -static void yy_load_buffer_state (void ); -static void yy_init_buffer (YY_BUFFER_STATE b,FILE *file ); - -#define YY_FLUSH_BUFFER yy_flush_buffer(YY_CURRENT_BUFFER ) - -YY_BUFFER_STATE yy_scan_buffer (char *base,yy_size_t size ); -YY_BUFFER_STATE yy_scan_string (yyconst char *yy_str ); -YY_BUFFER_STATE yy_scan_bytes (yyconst char *bytes,int len ); - -void *yyalloc (yy_size_t ); -void *yyrealloc (void *,yy_size_t ); -void yyfree (void * ); - -#define yy_new_buffer yy_create_buffer - -#define yy_set_interactive(is_interactive) \ - { \ - if ( ! YY_CURRENT_BUFFER ){ \ - yyensure_buffer_stack (); \ - YY_CURRENT_BUFFER_LVALUE = \ - yy_create_buffer(yyin,YY_BUF_SIZE ); \ - } \ - YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \ - } - -#define yy_set_bol(at_bol) \ - { \ - if ( ! YY_CURRENT_BUFFER ){\ - yyensure_buffer_stack (); \ - YY_CURRENT_BUFFER_LVALUE = \ - yy_create_buffer(yyin,YY_BUF_SIZE ); \ - } \ - YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \ - } - -#define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol) - -/* Begin user sect3 */ - -typedef unsigned char YY_CHAR; - -FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0; - -typedef int yy_state_type; - -#define YY_FLEX_LEX_COMPAT -extern int yylineno; - -int yylineno = 1; - -extern char yytext[]; - -static yy_state_type yy_get_previous_state (void ); -static yy_state_type yy_try_NUL_trans (yy_state_type current_state ); -static int yy_get_next_buffer (void ); -static void yy_fatal_error (yyconst char msg[] ); - -/* Done after the current pattern has been matched and before the - * corresponding action - sets up yytext. - */ -#define YY_DO_BEFORE_ACTION \ - (yytext_ptr) = yy_bp; \ - yyleng = (size_t) (yy_cp - yy_bp); \ - (yy_hold_char) = *yy_cp; \ - *yy_cp = '\0'; \ - if ( yyleng + (yy_more_offset) >= YYLMAX ) \ - YY_FATAL_ERROR( "token too large, exceeds YYLMAX" ); \ - yy_flex_strncpy( &yytext[(yy_more_offset)], (yytext_ptr), yyleng + 1 ); \ - yyleng += (yy_more_offset); \ - (yy_prev_more_offset) = (yy_more_offset); \ - (yy_more_offset) = 0; \ - (yy_c_buf_p) = yy_cp; - -#define YY_NUM_RULES 73 -#define YY_END_OF_BUFFER 74 -/* This struct is not used in this scanner, - but its presence is necessary. */ -struct yy_trans_info - { - flex_int32_t yy_verify; - flex_int32_t yy_nxt; - }; -static yyconst flex_int16_t yy_acclist[312] = - { 0, - 74, 72, 73, 1, 72, 73, 1, 73, 3, 72, - 73, 72, 73, 60, 72, 73, 61, 72, 73, 52, - 72, 73, 50, 72, 73, 67, 72, 73, 51, 72, - 73, 66, 72, 73, 53, 72, 73, 47, 72, 73, - 69, 72, 73, 68, 72, 73, 56, 72, 73, 54, - 72, 73, 57, 72, 73, 72, 73, 71, 72, 73, - 62, 72, 73, 63, 72, 73, 70, 72, 73, 71, - 72, 73, 71, 72, 73, 71, 72, 73, 71, 72, - 73, 71, 72, 73, 71, 72, 73, 71, 72, 73, - 71, 72, 73, 71, 72, 73, 71, 72, 73, 71, - - 72, 73, 71, 72, 73, 71, 72, 73, 71, 72, - 73, 71, 72, 73, 71, 72, 73, 71, 72, 73, - 71, 72, 73, 71, 72, 73, 2, 72, 73, 1, - 49, 65, 47, 64, 58, 55, 59, 71, 71, 71, - 71, 71, 71, 71, 71, 19, 71, 71, 71, 71, - 71, 71, 71, 71, 27, 71, 71, 71, 71, 31, - 71, 32, 71, 71, 71, 71, 71, 71, 40, 71, - 71, 71, 71, 71, 48, 49, 46, 46, 12, 71, - 71, 71, 71, 71, 71, 17, 71, 71, 71, 22, - 71, 71, 24, 71, 71, 71, 71, 71, 71, 71, - - 29, 71, 30, 71, 71, 71, 71, 71, 71, 71, - 71, 71, 43, 71, 71, 49, 71, 71, 71, 15, - 71, 71, 71, 21, 71, 71, 23, 71, 71, 26, - 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, - 71, 39, 71, 41, 71, 71, 71, 46, 13, 71, - 14, 71, 18, 71, 16, 71, 71, 71, 71, 37, - 38, 71, 71, 71, 28, 71, 71, 71, 71, 71, - 71, 71, 42, 71, 44, 71, 11, 20, 71, 5, - 71, 71, 71, 4, 71, 45, 71, 71, 71, 71, - 35, 71, 36, 71, 10, 7, 71, 71, 6, 1, - - 71, 34, 71, 25, 71, 71, 71, 33, 71, 9, - 8 - } ; - -static yyconst flex_int16_t yy_accept[273] = - { 0, - 1, 1, 1, 2, 4, 7, 9, 12, 14, 17, - 20, 23, 26, 29, 32, 35, 38, 41, 44, 47, - 50, 53, 56, 58, 61, 64, 67, 70, 73, 76, - 79, 82, 85, 88, 91, 94, 97, 100, 103, 106, - 109, 112, 115, 118, 121, 124, 127, 130, 131, 131, - 131, 132, 133, 133, 134, 134, 135, 136, 137, 138, - 138, 138, 139, 140, 141, 142, 143, 144, 145, 146, - 148, 149, 150, 151, 152, 153, 154, 155, 157, 158, - 159, 160, 162, 164, 165, 166, 167, 168, 169, 171, - 172, 173, 174, 175, 175, 175, 177, 178, 178, 179, - - 179, 179, 181, 182, 183, 184, 185, 186, 188, 189, - 190, 192, 193, 195, 196, 197, 197, 197, 197, 198, - 198, 199, 200, 201, 203, 205, 206, 207, 208, 209, - 210, 211, 212, 213, 215, 216, 216, 217, 217, 217, - 217, 218, 219, 220, 222, 223, 224, 226, 227, 229, - 230, 232, 232, 232, 232, 232, 232, 232, 232, 233, - 233, 233, 234, 235, 236, 237, 238, 239, 240, 241, - 242, 244, 246, 247, 248, 248, 248, 249, 249, 249, - 251, 253, 255, 257, 258, 259, 260, 260, 260, 260, - 260, 261, 262, 262, 262, 262, 263, 264, 265, 267, - - 268, 269, 270, 271, 272, 273, 275, 277, 277, 277, - 278, 280, 281, 282, 283, 283, 283, 283, 283, 284, - 285, 286, 288, 289, 290, 291, 293, 295, 295, 296, - 297, 298, 298, 298, 299, 300, 301, 302, 304, 306, - 306, 306, 307, 308, 308, 308, 308, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 311, 311, - 312, 312 - } ; - -static yyconst flex_int32_t yy_ec[256] = - { 0, - 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 4, 1, 1, 5, 1, 1, 1, 6, 7, - 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, - 17, 17, 17, 17, 17, 17, 17, 18, 19, 20, - 21, 22, 1, 23, 24, 24, 24, 24, 24, 24, - 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, - 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, - 25, 1, 26, 27, 1, 1, 28, 29, 30, 31, - - 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, - 42, 43, 37, 44, 45, 46, 47, 48, 49, 37, - 50, 37, 51, 1, 52, 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 - } ; - -static yyconst flex_int32_t yy_meta[53] = - { 0, - 1, 1, 1, 1, 1, 1, 2, 2, 1, 1, - 2, 1, 1, 1, 3, 3, 3, 2, 1, 1, - 1, 1, 1, 3, 1, 1, 1, 4, 4, 4, - 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, - 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, - 1, 1 - } ; - -static yyconst flex_int16_t yy_base[281] = - { 0, - 0, 0, 396, 397, 51, 54, 397, 389, 397, 397, - 397, 397, 397, 397, 381, 397, 46, 372, 397, 43, - 397, 371, 35, 0, 397, 397, 397, 26, 28, 41, - 35, 34, 38, 349, 355, 356, 360, 345, 344, 43, - 51, 353, 46, 343, 355, 347, 397, 88, 353, 374, - 373, 397, 83, 88, 96, 397, 397, 397, 397, 346, - 341, 0, 345, 331, 340, 341, 327, 330, 322, 320, - 323, 336, 327, 321, 323, 317, 112, 76, 333, 330, - 314, 0, 0, 324, 328, 315, 79, 324, 0, 312, - 308, 309, 316, 321, 344, 343, 111, 117, 120, 315, - - 315, 0, 318, 309, 316, 311, 297, 0, 300, 308, - 303, 306, 0, 307, 294, 137, 326, 144, 306, 281, - 300, 300, 298, 0, 0, 297, 290, 52, 285, 294, - 284, 292, 287, 0, 283, 283, 314, 142, 283, 279, - 267, 275, 277, 0, 268, 267, 0, 279, 0, 265, - 0, 282, 300, 162, 299, 108, 279, 254, 275, 252, - 168, 270, 270, 262, 256, 267, 266, 253, 252, 267, - 0, 0, 255, 261, 260, 145, 161, 250, 259, 0, - 0, 0, 0, 247, 77, 252, 257, 277, 277, 275, - 397, 397, 253, 230, 194, 243, 272, 217, 0, 204, - - 217, 216, 216, 212, 196, 0, 0, 210, 208, 397, - 0, 397, 232, 194, 197, 225, 224, 193, 198, 397, - 222, 0, 224, 180, 186, 0, 0, 221, 397, 397, - 177, 182, 180, 179, 397, 181, 162, 0, 196, 168, - 163, 189, 160, 0, 186, 185, 182, 163, 0, 200, - 160, 205, 132, 213, 124, 218, 125, 107, 109, 121, - 96, 98, 110, 99, 85, 102, 79, 397, 83, 397, - 397, 251, 253, 257, 261, 265, 269, 273, 276, 89 - } ; - -static yyconst flex_int16_t yy_def[281] = - { 0, - 271, 1, 271, 271, 271, 271, 271, 272, 271, 271, - 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, - 271, 271, 271, 273, 271, 271, 271, 273, 273, 273, - 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, - 273, 273, 273, 273, 273, 273, 271, 271, 271, 274, - 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, - 271, 273, 273, 273, 273, 273, 273, 273, 273, 273, - 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, - 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, - 273, 273, 273, 271, 274, 271, 271, 271, 271, 271, - - 271, 273, 273, 273, 273, 273, 273, 273, 273, 273, - 273, 273, 273, 273, 273, 271, 271, 271, 273, 275, - 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, - 273, 273, 273, 273, 273, 271, 271, 271, 271, 271, - 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, - 273, 271, 276, 271, 271, 271, 271, 277, 273, 275, - 271, 273, 273, 273, 273, 273, 273, 273, 273, 273, - 273, 273, 273, 273, 271, 271, 271, 271, 271, 273, - 273, 273, 273, 273, 273, 273, 271, 276, 276, 278, - 271, 271, 271, 277, 271, 273, 273, 273, 273, 273, - - 273, 273, 273, 273, 273, 273, 273, 271, 271, 271, - 273, 271, 273, 273, 271, 278, 278, 271, 273, 271, - 273, 273, 273, 273, 273, 273, 273, 271, 271, 271, - 273, 271, 271, 273, 271, 271, 273, 273, 273, 271, - 271, 273, 273, 279, 271, 271, 273, 279, 280, 271, - 280, 271, 271, 271, 271, 271, 271, 271, 271, 271, - 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, - 0, 271, 271, 271, 271, 271, 271, 271, 271, 271 - } ; - -static yyconst flex_int16_t yy_nxt[450] = - { 0, - 4, 5, 6, 5, 7, 8, 9, 10, 11, 12, - 13, 14, 15, 16, 17, 17, 17, 18, 19, 20, - 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, - 31, 32, 33, 34, 35, 36, 24, 24, 37, 38, - 39, 40, 41, 42, 24, 43, 44, 45, 46, 24, - 47, 4, 48, 48, 48, 48, 48, 48, 53, 65, - 54, 54, 54, 57, 58, 60, 63, 61, 67, 64, - 69, 66, 71, 73, 72, 82, 70, 55, 85, 74, - 88, 167, 68, 212, 75, 168, 83, 89, 84, 48, - 48, 48, 251, 49, 86, 90, 49, 97, 97, 97, - - 53, 270, 54, 54, 54, 98, 121, 98, 129, 269, - 99, 99, 99, 116, 116, 116, 122, 213, 117, 55, - 268, 130, 191, 192, 118, 97, 97, 97, 267, 266, - 49, 99, 99, 99, 99, 99, 99, 265, 116, 116, - 116, 264, 138, 117, 263, 154, 154, 154, 262, 118, - 155, 176, 261, 176, 119, 260, 177, 177, 177, 177, - 177, 177, 120, 154, 154, 154, 259, 258, 155, 116, - 116, 116, 156, 255, 117, 177, 177, 177, 254, 152, - 118, 250, 48, 48, 48, 249, 157, 120, 195, 161, - 156, 247, 161, 246, 158, 154, 154, 154, 245, 244, - - 155, 252, 252, 252, 157, 243, 252, 252, 252, 242, - 152, 241, 158, 240, 256, 256, 256, 239, 120, 256, - 256, 256, 156, 49, 236, 238, 237, 236, 235, 234, - 233, 195, 253, 217, 232, 231, 157, 253, 230, 229, - 228, 227, 226, 225, 158, 257, 224, 223, 222, 221, - 257, 50, 50, 50, 50, 62, 62, 95, 95, 95, - 95, 160, 160, 160, 160, 188, 188, 188, 188, 194, - 194, 194, 194, 216, 216, 216, 216, 248, 220, 248, - 219, 195, 218, 217, 161, 189, 215, 214, 211, 210, - 209, 208, 207, 206, 205, 204, 203, 202, 201, 200, - - 199, 198, 197, 161, 196, 195, 193, 190, 189, 187, - 186, 185, 184, 183, 182, 181, 180, 179, 178, 95, - 175, 174, 173, 172, 171, 170, 169, 166, 165, 164, - 163, 162, 161, 159, 153, 151, 150, 149, 148, 147, - 146, 145, 144, 143, 142, 141, 140, 139, 95, 137, - 136, 135, 134, 133, 132, 131, 128, 127, 126, 125, - 124, 123, 115, 114, 113, 112, 111, 110, 109, 108, - 107, 106, 105, 104, 103, 102, 101, 100, 50, 96, - 94, 93, 92, 91, 87, 81, 80, 79, 78, 77, - 76, 59, 56, 52, 51, 271, 3, 271, 271, 271, - - 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, - 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, - 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, - 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, - 271, 271, 271, 271, 271, 271, 271, 271, 271 - } ; - -static yyconst flex_int16_t yy_chk[450] = - { 0, - 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, 5, 5, 5, 6, 6, 6, 17, 29, - 17, 17, 17, 20, 20, 23, 28, 23, 30, 28, - 31, 29, 32, 33, 32, 40, 31, 17, 41, 33, - 43, 128, 30, 185, 33, 128, 40, 43, 40, 48, - 48, 48, 280, 5, 41, 43, 6, 53, 53, 53, - - 54, 269, 54, 54, 54, 55, 78, 55, 87, 267, - 55, 55, 55, 77, 77, 77, 78, 185, 77, 54, - 266, 87, 156, 156, 77, 97, 97, 97, 265, 264, - 48, 98, 98, 98, 99, 99, 99, 263, 116, 116, - 116, 262, 97, 116, 261, 118, 118, 118, 260, 116, - 118, 138, 259, 138, 77, 258, 138, 138, 138, 176, - 176, 176, 77, 154, 154, 154, 257, 255, 154, 161, - 161, 161, 118, 253, 161, 177, 177, 177, 251, 116, - 161, 248, 236, 236, 236, 247, 118, 116, 246, 245, - 154, 243, 242, 241, 118, 195, 195, 195, 240, 239, - - 195, 250, 250, 250, 154, 237, 252, 252, 252, 234, - 161, 233, 154, 232, 254, 254, 254, 231, 161, 256, - 256, 256, 195, 236, 228, 225, 224, 223, 221, 219, - 218, 217, 250, 216, 215, 214, 195, 252, 213, 209, - 208, 205, 204, 203, 195, 254, 202, 201, 200, 198, - 256, 272, 272, 272, 272, 273, 273, 274, 274, 274, - 274, 275, 275, 275, 275, 276, 276, 276, 276, 277, - 277, 277, 277, 278, 278, 278, 278, 279, 197, 279, - 196, 194, 193, 190, 189, 188, 187, 186, 184, 179, - 178, 175, 174, 173, 170, 169, 168, 167, 166, 165, - - 164, 163, 162, 160, 159, 158, 157, 155, 153, 152, - 150, 148, 146, 145, 143, 142, 141, 140, 139, 137, - 136, 135, 133, 132, 131, 130, 129, 127, 126, 123, - 122, 121, 120, 119, 117, 115, 114, 112, 111, 110, - 109, 107, 106, 105, 104, 103, 101, 100, 96, 95, - 94, 93, 92, 91, 90, 88, 86, 85, 84, 81, - 80, 79, 76, 75, 74, 73, 72, 71, 70, 69, - 68, 67, 66, 65, 64, 63, 61, 60, 51, 50, - 49, 46, 45, 44, 42, 39, 38, 37, 36, 35, - 34, 22, 18, 15, 8, 3, 271, 271, 271, 271, - - 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, - 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, - 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, - 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, - 271, 271, 271, 271, 271, 271, 271, 271, 271 - } ; - -/* Table of booleans, true if rule could match eol. */ -static yyconst flex_int32_t yy_rule_can_match_eol[74] = - { 0, -1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 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, 1, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }; - -extern int yy_flex_debug; -int yy_flex_debug = 0; - -static yy_state_type *yy_state_buf=0, *yy_state_ptr=0; -static char *yy_full_match; -static int yy_lp; -#define REJECT \ -{ \ -*yy_cp = (yy_hold_char); /* undo effects of setting up yytext */ \ -yy_cp = (yy_full_match); /* restore poss. backed-over text */ \ -++(yy_lp); \ -goto find_rule; \ -} - -static int yy_more_offset = 0; -static int yy_prev_more_offset = 0; -#define yymore() ((yy_more_offset) = yy_flex_strlen( yytext )) -#define YY_NEED_STRLEN -#define YY_MORE_ADJ 0 -#define YY_RESTORE_YY_MORE_OFFSET \ - { \ - (yy_more_offset) = (yy_prev_more_offset); \ - yyleng -= (yy_more_offset); \ - } -#ifndef YYLMAX -#define YYLMAX 8192 -#endif - -char yytext[YYLMAX]; -char *yytext_ptr; -#line 1 "./web2c.l" -#line 2 "./web2c.l" -/* web2c.l -- lexical analysis for Tangle output. Public domain. */ - -#include "web2c.h" -#include "y_tab.h" - -/* Hack to make it possible to compile the generated code with C++ - Required if you use flex. */ -#ifdef __cplusplus -#define webinput yyinput -#else -#define webinput input -#endif - -/* For some reason flex wants to do a system call, so we must lose our - definition of the Pascal read. */ -#undef read - -char conditional[20], negbuf[2], temp[20]; -extern boolean doing_statements; - - -/* We only read one input file. This is the default definition, but - giving it ourselves avoids the need to find -lfl or -ll at link time. - This is a good thing, since libfl.a is often installed somewhere that - the linker doesn't search by default. */ -int -yywrap P1H(void) -{ - return 1; -} -#define YY_SKIP_YYWRAP /* not that it matters */ -#line 743 "lex.yy.c" - -#define INITIAL 0 - -#ifndef YY_NO_UNISTD_H -/* Special case for "unistd.h", since it is non-ANSI. We include it way - * down here because we want the user's section 1 to have been scanned first. - * The user has a chance to override it with an option. - */ -#include -#endif - -#ifndef YY_EXTRA_TYPE -#define YY_EXTRA_TYPE void * -#endif - -/* Macros after this point can all be overridden by user definitions in - * section 1. - */ - -#ifndef YY_SKIP_YYWRAP -#ifdef __cplusplus -extern "C" int yywrap (void ); -#else -extern int yywrap (void ); -#endif -#endif - - static void yyunput (int c,char *buf_ptr ); - -#ifndef yytext_ptr -static void yy_flex_strncpy (char *,yyconst char *,int ); -#endif - -#ifdef YY_NEED_STRLEN -static int yy_flex_strlen (yyconst char * ); -#endif - -#ifndef YY_NO_INPUT - -#ifdef __cplusplus -static int yyinput (void ); -#else -static int input (void ); -#endif - -#endif - -/* Amount of stuff to slurp up with each read. */ -#ifndef YY_READ_BUF_SIZE -#define YY_READ_BUF_SIZE 8192 -#endif - -/* Copy whatever the last rule matched to the standard output. */ -#ifndef ECHO -/* This used to be an fputs(), but since the string might contain NUL's, - * we now use fwrite(). - */ -#define ECHO (void) fwrite( yytext, yyleng, 1, yyout ) -#endif - -/* Gets input and stuffs it into "buf". number of characters read, or YY_NULL, - * is returned in "result". - */ -#ifndef YY_INPUT -#define YY_INPUT(buf,result,max_size) \ - if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \ - { \ - int c = '*'; \ - size_t n; \ - for ( n = 0; n < max_size && \ - (c = getc( yyin )) != EOF && c != '\n'; ++n ) \ - buf[n] = (char) c; \ - if ( c == '\n' ) \ - buf[n++] = (char) c; \ - if ( c == EOF && ferror( yyin ) ) \ - YY_FATAL_ERROR( "input in flex scanner failed" ); \ - result = n; \ - } \ - else \ - { \ - errno=0; \ - while ( (result = fread(buf, 1, max_size, yyin))==0 && ferror(yyin)) \ - { \ - if( errno != EINTR) \ - { \ - YY_FATAL_ERROR( "input in flex scanner failed" ); \ - break; \ - } \ - errno=0; \ - clearerr(yyin); \ - } \ - }\ -\ - -#endif - -/* No semi-colon after return; correct usage is to write "yyterminate();" - - * we don't want an extra ';' after the "return" because that will cause - * some compilers to complain about unreachable statements. - */ -#ifndef yyterminate -#define yyterminate() return YY_NULL -#endif - -/* Number of entries by which start-condition stack grows. */ -#ifndef YY_START_STACK_INCR -#define YY_START_STACK_INCR 25 -#endif - -/* Report a fatal error. */ -#ifndef YY_FATAL_ERROR -#define YY_FATAL_ERROR(msg) yy_fatal_error( msg ) -#endif - -/* end tables serialization structures and prototypes */ - -/* Default declaration of generated scanner - a define so the user can - * easily add parameters. - */ -#ifndef YY_DECL -#define YY_DECL_IS_OURS 1 - -extern int yylex (void); - -#define YY_DECL int yylex (void) -#endif /* !YY_DECL */ - -/* Code executed at the beginning of each rule, after yytext and yyleng - * have been set up. - */ -#ifndef YY_USER_ACTION -#define YY_USER_ACTION -#endif - -/* Code executed at the end of each rule. */ -#ifndef YY_BREAK -#define YY_BREAK break; -#endif - -#define YY_RULE_SETUP \ - YY_USER_ACTION - -/** The main scanner function which does all the work. - */ -YY_DECL -{ - register yy_state_type yy_current_state; - register char *yy_cp, *yy_bp; - register int yy_act; - -#line 49 "./web2c.l" - -#line 896 "lex.yy.c" - - if ( (yy_init) ) - { - (yy_init) = 0; - -#ifdef YY_USER_INIT - YY_USER_INIT; -#endif - - if ( ! (yy_state_buf) ) - (yy_state_buf) = (yy_state_type *)yyalloc(YY_BUF_SIZE + 2 ); - - if ( ! (yy_start) ) - (yy_start) = 1; /* first start state */ - - if ( ! yyin ) - yyin = stdin; - - if ( ! yyout ) - yyout = stdout; - - if ( ! YY_CURRENT_BUFFER ) { - yyensure_buffer_stack (); - YY_CURRENT_BUFFER_LVALUE = - yy_create_buffer(yyin,YY_BUF_SIZE ); - } - - yy_load_buffer_state( ); - } - - while ( 1 ) /* loops until end-of-file is reached */ - { - yy_cp = (yy_c_buf_p); - - /* Support of yytext. */ - *yy_cp = (yy_hold_char); - - /* yy_bp points to the position in yy_ch_buf of the start of - * the current run. - */ - yy_bp = yy_cp; - - yy_current_state = (yy_start); - - (yy_state_ptr) = (yy_state_buf); - *(yy_state_ptr)++ = yy_current_state; - -yy_match: - do - { - register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)]; - while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) - { - yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 272 ) - yy_c = yy_meta[(unsigned int) yy_c]; - } - yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; - *(yy_state_ptr)++ = yy_current_state; - ++yy_cp; - } - while ( yy_base[yy_current_state] != 397 ); - -yy_find_action: - yy_current_state = *--(yy_state_ptr); - (yy_lp) = yy_accept[yy_current_state]; -find_rule: /* we branch to this label when backing up */ - for ( ; ; ) /* until we find what rule we matched */ - { - if ( (yy_lp) && (yy_lp) < yy_accept[yy_current_state + 1] ) - { - yy_act = yy_acclist[(yy_lp)]; - { - (yy_full_match) = yy_cp; - break; - } - } - --yy_cp; - yy_current_state = *--(yy_state_ptr); - (yy_lp) = yy_accept[yy_current_state]; - } - - YY_DO_BEFORE_ACTION; - - if ( yy_act != YY_END_OF_BUFFER && yy_rule_can_match_eol[yy_act] ) - { - int yyl; - for ( yyl = (yy_prev_more_offset); yyl < yyleng; ++yyl ) - if ( yytext[yyl] == '\n' ) - - yylineno++; -; - } - -do_action: /* This label is used only to access EOF actions. */ - - switch ( yy_act ) - { /* beginning of action switch */ -case 1: -/* rule 1 can match eol */ -YY_RULE_SETUP -#line 50 "./web2c.l" -; - YY_BREAK -case 2: -YY_RULE_SETUP -#line 51 "./web2c.l" -{ while (webinput() != '}'); } - YY_BREAK -case 3: -YY_RULE_SETUP -#line 53 "./web2c.l" -{ - register int c; - putc('#', out); - while ((c = webinput()) && c != ';') - putc(c, out); - putc('\n', out); - } - YY_BREAK -case 4: -YY_RULE_SETUP -#line 61 "./web2c.l" -{register int c; - register char *cp=conditional; - new_line(); - while ((c = webinput()) != '\'') - ; - while ((c = webinput()) != '\'') - *cp++ = c; - *cp = '\0'; - (void) webinput(); - if (doing_statements) fputs("\t;\n", out); - fprintf(out, "#ifdef %s\n", conditional); - } - YY_BREAK -case 5: -YY_RULE_SETUP -#line 74 "./web2c.l" -{register int c; - new_line(); - fputs("#endif /* ", out); - while ((c = webinput()) != '\'') - ; - while ((c = webinput()) != '\'') - (void) putc(c, out); - (void) webinput(); - conditional[0] = '\0'; - fputs(" */\n", out); - } - YY_BREAK -case 6: -YY_RULE_SETUP -#line 86 "./web2c.l" -{register int c; - register char *cp=conditional; - new_line(); - while ((c = webinput()) != '\'') - ; - while ((c = webinput()) != '\'') - *cp++ = c; - *cp = '\0'; - (void) webinput(); - if (doing_statements) fputs("\t;\n", out); - fprintf(out, "#ifndef %s\n", conditional); - } - YY_BREAK -case 7: -YY_RULE_SETUP -#line 99 "./web2c.l" -{register int c; - new_line(); - fputs("#endif /* not ", out); - while ((c = webinput()) != '\'') - ; - while ((c = webinput()) != '\'') - putc(c, out); - (void) webinput(); - conditional[0] = '\0'; - fputs(" */\n", out); - } - YY_BREAK -case 8: -/* rule 8 can match eol */ -YY_RULE_SETUP -#line 112 "./web2c.l" -; - YY_BREAK -case 9: -/* rule 9 can match eol */ -YY_RULE_SETUP -#line 114 "./web2c.l" -; - YY_BREAK -case 10: -YY_RULE_SETUP -#line 116 "./web2c.l" -return last_tok=define_tok; - YY_BREAK -case 11: -YY_RULE_SETUP -#line 117 "./web2c.l" -return last_tok=field_tok; - YY_BREAK -case 12: -YY_RULE_SETUP -#line 118 "./web2c.l" -return last_tok=and_tok; - YY_BREAK -case 13: -YY_RULE_SETUP -#line 119 "./web2c.l" -return last_tok=array_tok; - YY_BREAK -case 14: -YY_RULE_SETUP -#line 120 "./web2c.l" -return last_tok=begin_tok; - YY_BREAK -case 15: -YY_RULE_SETUP -#line 121 "./web2c.l" -return last_tok=case_tok; - YY_BREAK -case 16: -YY_RULE_SETUP -#line 122 "./web2c.l" -return last_tok=const_tok; - YY_BREAK -case 17: -YY_RULE_SETUP -#line 123 "./web2c.l" -return last_tok=div_tok; - YY_BREAK -case 18: -YY_RULE_SETUP -#line 124 "./web2c.l" -return last_tok=break_tok; - YY_BREAK -case 19: -YY_RULE_SETUP -#line 125 "./web2c.l" -return last_tok=do_tok; - YY_BREAK -case 20: -YY_RULE_SETUP -#line 126 "./web2c.l" -return last_tok=downto_tok; - YY_BREAK -case 21: -YY_RULE_SETUP -#line 127 "./web2c.l" -return last_tok=else_tok; - YY_BREAK -case 22: -YY_RULE_SETUP -#line 128 "./web2c.l" -return last_tok=end_tok; - YY_BREAK -case 23: -YY_RULE_SETUP -#line 129 "./web2c.l" -return last_tok=file_tok; - YY_BREAK -case 24: -YY_RULE_SETUP -#line 130 "./web2c.l" -return last_tok=for_tok; - YY_BREAK -case 25: -YY_RULE_SETUP -#line 131 "./web2c.l" -return last_tok=function_tok; - YY_BREAK -case 26: -YY_RULE_SETUP -#line 132 "./web2c.l" -return last_tok=goto_tok; - YY_BREAK -case 27: -YY_RULE_SETUP -#line 133 "./web2c.l" -return last_tok=if_tok; - YY_BREAK -case 28: -YY_RULE_SETUP -#line 134 "./web2c.l" -return last_tok=label_tok; - YY_BREAK -case 29: -YY_RULE_SETUP -#line 135 "./web2c.l" -return last_tok=mod_tok; - YY_BREAK -case 30: -YY_RULE_SETUP -#line 136 "./web2c.l" -return last_tok=not_tok; - YY_BREAK -case 31: -YY_RULE_SETUP -#line 137 "./web2c.l" -return last_tok=of_tok; - YY_BREAK -case 32: -YY_RULE_SETUP -#line 138 "./web2c.l" -return last_tok=or_tok; - YY_BREAK -case 33: -YY_RULE_SETUP -#line 139 "./web2c.l" -return last_tok=procedure_tok; - YY_BREAK -case 34: -YY_RULE_SETUP -#line 140 "./web2c.l" -return last_tok=program_tok; - YY_BREAK -case 35: -YY_RULE_SETUP -#line 141 "./web2c.l" -return last_tok=record_tok; - YY_BREAK -case 36: -YY_RULE_SETUP -#line 142 "./web2c.l" -return last_tok=repeat_tok; - YY_BREAK -case 37: -/* rule 37 can match eol */ -YY_RULE_SETUP -#line 143 "./web2c.l" -return last_tok=hhb0_tok; - YY_BREAK -case 38: -/* rule 38 can match eol */ -YY_RULE_SETUP -#line 144 "./web2c.l" -return last_tok=hhb1_tok; - YY_BREAK -case 39: -YY_RULE_SETUP -#line 145 "./web2c.l" -return last_tok=then_tok; - YY_BREAK -case 40: -YY_RULE_SETUP -#line 146 "./web2c.l" -return last_tok=to_tok; - YY_BREAK -case 41: -YY_RULE_SETUP -#line 147 "./web2c.l" -return last_tok=type_tok; - YY_BREAK -case 42: -YY_RULE_SETUP -#line 148 "./web2c.l" -return last_tok=until_tok; - YY_BREAK -case 43: -YY_RULE_SETUP -#line 149 "./web2c.l" -return last_tok=var_tok; - YY_BREAK -case 44: -YY_RULE_SETUP -#line 150 "./web2c.l" -return last_tok=while_tok; - YY_BREAK -case 45: -YY_RULE_SETUP -#line 151 "./web2c.l" -return last_tok=others_tok; - YY_BREAK -case 46: -YY_RULE_SETUP -#line 153 "./web2c.l" -{ - sprintf (temp, "%s%s", negbuf, yytext); - negbuf[0] = '\0'; - return last_tok=r_num_tok; - } - YY_BREAK -case 47: -YY_RULE_SETUP -#line 159 "./web2c.l" -{ - sprintf (temp, "%s%s", negbuf, yytext); - negbuf[0] = '\0'; - return last_tok=i_num_tok; - } - YY_BREAK -case 48: -/* rule 48 can match eol */ -YY_RULE_SETUP -#line 165 "./web2c.l" -return last_tok=single_char_tok; - YY_BREAK -case 49: -/* rule 49 can match eol */ -YY_RULE_SETUP -#line 167 "./web2c.l" -return last_tok=string_literal_tok; - YY_BREAK -case 50: -YY_RULE_SETUP -#line 169 "./web2c.l" -{ if ((last_tok>=undef_id_tok && - last_tok<=field_id_tok) || - last_tok==i_num_tok || - last_tok==r_num_tok || - last_tok==')' || - last_tok==']') - return last_tok='+'; - else return last_tok=unary_plus_tok; } - YY_BREAK -case 51: -YY_RULE_SETUP -#line 178 "./web2c.l" -{ if ((last_tok>=undef_id_tok && - last_tok<=field_id_tok) || - last_tok==i_num_tok || - last_tok==r_num_tok || - last_tok==')' || - last_tok==']') - return last_tok='-'; - else { - int c; - while ((c = webinput()) == ' ' || c == '\t') - ; - unput(c); - if (c < '0' || c > '9') { - return last_tok = unary_minus_tok; - } - negbuf[0] = '-'; - }} - YY_BREAK -case 52: -YY_RULE_SETUP -#line 196 "./web2c.l" -return last_tok='*'; - YY_BREAK -case 53: -YY_RULE_SETUP -#line 197 "./web2c.l" -return last_tok='/'; - YY_BREAK -case 54: -YY_RULE_SETUP -#line 198 "./web2c.l" -return last_tok='='; - YY_BREAK -case 55: -YY_RULE_SETUP -#line 199 "./web2c.l" -return last_tok=not_eq_tok; - YY_BREAK -case 56: -YY_RULE_SETUP -#line 200 "./web2c.l" -return last_tok='<'; - YY_BREAK -case 57: -YY_RULE_SETUP -#line 201 "./web2c.l" -return last_tok='>'; - YY_BREAK -case 58: -YY_RULE_SETUP -#line 202 "./web2c.l" -return last_tok=less_eq_tok; - YY_BREAK -case 59: -YY_RULE_SETUP -#line 203 "./web2c.l" -return last_tok=great_eq_tok; - YY_BREAK -case 60: -YY_RULE_SETUP -#line 204 "./web2c.l" -return last_tok='('; - YY_BREAK -case 61: -YY_RULE_SETUP -#line 205 "./web2c.l" -return last_tok=')'; - YY_BREAK -case 62: -YY_RULE_SETUP -#line 206 "./web2c.l" -return last_tok='['; - YY_BREAK -case 63: -YY_RULE_SETUP -#line 207 "./web2c.l" -return last_tok=']'; - YY_BREAK -case 64: -YY_RULE_SETUP -#line 208 "./web2c.l" -return last_tok=assign_tok; - YY_BREAK -case 65: -YY_RULE_SETUP -#line 209 "./web2c.l" -return last_tok=two_dots_tok; - YY_BREAK -case 66: -YY_RULE_SETUP -#line 210 "./web2c.l" -return last_tok='.'; - YY_BREAK -case 67: -YY_RULE_SETUP -#line 211 "./web2c.l" -return last_tok=','; - YY_BREAK -case 68: -YY_RULE_SETUP -#line 212 "./web2c.l" -return last_tok=';'; - YY_BREAK -case 69: -YY_RULE_SETUP -#line 213 "./web2c.l" -return last_tok=':'; - YY_BREAK -case 70: -YY_RULE_SETUP -#line 214 "./web2c.l" -return last_tok='^'; - YY_BREAK -case 71: -YY_RULE_SETUP -#line 216 "./web2c.l" -{ strcpy (last_id, yytext); - l_s = search_table (last_id); - return - last_tok = (l_s == -1 ? undef_id_tok : sym_table[l_s].typ); - } - YY_BREAK -case 72: -YY_RULE_SETUP -#line 223 "./web2c.l" -{ /* Any bizarre token will do. */ - return last_tok = two_dots_tok; } - YY_BREAK -case 73: -YY_RULE_SETUP -#line 225 "./web2c.l" -ECHO; - YY_BREAK -#line 1451 "lex.yy.c" - case YY_STATE_EOF(INITIAL): - yyterminate(); - - case YY_END_OF_BUFFER: - { - /* Amount of text matched not including the EOB char. */ - int yy_amount_of_matched_text = (int) (yy_cp - (yytext_ptr)) - 1; - - /* Undo the effects of YY_DO_BEFORE_ACTION. */ - *yy_cp = (yy_hold_char); - YY_RESTORE_YY_MORE_OFFSET - - if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW ) - { - /* We're scanning a new file or input source. It's - * possible that this happened because the user - * just pointed yyin at a new source and called - * yylex(). If so, then we have to assure - * consistency between YY_CURRENT_BUFFER and our - * globals. Here is the right place to do so, because - * this is the first action (other than possibly a - * back-up) that will match for the new input source. - */ - (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; - YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin; - YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL; - } - - /* Note that here we test for yy_c_buf_p "<=" to the position - * of the first EOB in the buffer, since yy_c_buf_p will - * already have been incremented past the NUL character - * (since all states make transitions on EOB to the - * end-of-buffer state). Contrast this with the test - * in input(). - */ - if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] ) - { /* This was really a NUL. */ - yy_state_type yy_next_state; - - (yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text; - - yy_current_state = yy_get_previous_state( ); - - /* Okay, we're now positioned to make the NUL - * transition. We couldn't have - * yy_get_previous_state() go ahead and do it - * for us because it doesn't know how to deal - * with the possibility of jamming (and we don't - * want to build jamming into it because then it - * will run more slowly). - */ - - yy_next_state = yy_try_NUL_trans( yy_current_state ); - - yy_bp = (yytext_ptr) + YY_MORE_ADJ; - - if ( yy_next_state ) - { - /* Consume the NUL. */ - yy_cp = ++(yy_c_buf_p); - yy_current_state = yy_next_state; - goto yy_match; - } - - else - { - yy_cp = (yy_c_buf_p); - goto yy_find_action; - } - } - - else switch ( yy_get_next_buffer( ) ) - { - case EOB_ACT_END_OF_FILE: - { - (yy_did_buffer_switch_on_eof) = 0; - - if ( yywrap( ) ) - { - /* Note: because we've taken care in - * yy_get_next_buffer() to have set up - * yytext, we can now set up - * yy_c_buf_p so that if some total - * hoser (like flex itself) wants to - * call the scanner after we return the - * YY_NULL, it'll still work - another - * YY_NULL will get returned. - */ - (yy_c_buf_p) = (yytext_ptr) + YY_MORE_ADJ; - - yy_act = YY_STATE_EOF(YY_START); - goto do_action; - } - - else - { - if ( ! (yy_did_buffer_switch_on_eof) ) - YY_NEW_FILE; - } - break; - } - - case EOB_ACT_CONTINUE_SCAN: - (yy_c_buf_p) = - (yytext_ptr) + yy_amount_of_matched_text; - - yy_current_state = yy_get_previous_state( ); - - yy_cp = (yy_c_buf_p); - yy_bp = (yytext_ptr) + YY_MORE_ADJ; - goto yy_match; - - case EOB_ACT_LAST_MATCH: - (yy_c_buf_p) = - &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)]; - - yy_current_state = yy_get_previous_state( ); - - yy_cp = (yy_c_buf_p); - yy_bp = (yytext_ptr) + YY_MORE_ADJ; - goto yy_find_action; - } - break; - } - - default: - YY_FATAL_ERROR( - "fatal flex scanner internal error--no action found" ); - } /* end of action switch */ - } /* end of scanning one token */ -} /* end of yylex */ - -/* yy_get_next_buffer - try to read in a new buffer - * - * Returns a code representing an action: - * EOB_ACT_LAST_MATCH - - * EOB_ACT_CONTINUE_SCAN - continue scanning from current position - * EOB_ACT_END_OF_FILE - end of file - */ -static int yy_get_next_buffer (void) -{ - register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf; - register char *source = (yytext_ptr); - register int number_to_move, i; - int ret_val; - - if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] ) - YY_FATAL_ERROR( - "fatal flex scanner internal error--end of buffer missed" ); - - if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 ) - { /* Don't try to fill the buffer, so this is an EOF. */ - if ( (yy_c_buf_p) - (yytext_ptr) - YY_MORE_ADJ == 1 ) - { - /* We matched a single character, the EOB, so - * treat this as a final EOF. - */ - return EOB_ACT_END_OF_FILE; - } - - else - { - /* We matched some text prior to the EOB, first - * process it. - */ - return EOB_ACT_LAST_MATCH; - } - } - - /* Try to read more data. */ - - /* First move last chars to start of buffer. */ - number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr)) - 1; - - for ( i = 0; i < number_to_move; ++i ) - *(dest++) = *(source++); - - if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING ) - /* don't do the read, it's not guaranteed to return an EOF, - * just force an EOF - */ - YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0; - - else - { - size_t num_to_read = - YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1; - - while ( num_to_read <= 0 ) - { /* Not enough room in the buffer - grow it. */ - - YY_FATAL_ERROR( -"input buffer overflow, can't enlarge buffer because scanner uses REJECT" ); - - } - - if ( num_to_read > YY_READ_BUF_SIZE ) - num_to_read = YY_READ_BUF_SIZE; - - /* Read in more data. */ - YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]), - (yy_n_chars), num_to_read ); - - YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); - } - - if ( (yy_n_chars) == 0 ) - { - if ( number_to_move == YY_MORE_ADJ ) - { - ret_val = EOB_ACT_END_OF_FILE; - yyrestart(yyin ); - } - - else - { - ret_val = EOB_ACT_LAST_MATCH; - YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = - YY_BUFFER_EOF_PENDING; - } - } - - else - ret_val = EOB_ACT_CONTINUE_SCAN; - - (yy_n_chars) += number_to_move; - YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR; - YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR; - - (yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0]; - - return ret_val; -} - -/* yy_get_previous_state - get the state just before the EOB char was reached */ - - static yy_state_type yy_get_previous_state (void) -{ - register yy_state_type yy_current_state; - register char *yy_cp; - - yy_current_state = (yy_start); - - (yy_state_ptr) = (yy_state_buf); - *(yy_state_ptr)++ = yy_current_state; - - for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp ) - { - register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1); - while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) - { - yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 272 ) - yy_c = yy_meta[(unsigned int) yy_c]; - } - yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; - *(yy_state_ptr)++ = yy_current_state; - } - - return yy_current_state; -} - -/* yy_try_NUL_trans - try to make a transition on the NUL character - * - * synopsis - * next_state = yy_try_NUL_trans( current_state ); - */ - static yy_state_type yy_try_NUL_trans (yy_state_type yy_current_state ) -{ - register int yy_is_jam; - - register YY_CHAR yy_c = 1; - while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) - { - yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 272 ) - yy_c = yy_meta[(unsigned int) yy_c]; - } - yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; - yy_is_jam = (yy_current_state == 271); - if ( ! yy_is_jam ) - *(yy_state_ptr)++ = yy_current_state; - - return yy_is_jam ? 0 : yy_current_state; -} - - static void yyunput (int c, register char * yy_bp ) -{ - register char *yy_cp; - - yy_cp = (yy_c_buf_p); - - /* undo effects of setting up yytext */ - *yy_cp = (yy_hold_char); - - if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 ) - { /* need to shift things up to make room */ - /* +2 for EOB chars. */ - register int number_to_move = (yy_n_chars) + 2; - register char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[ - YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2]; - register char *source = - &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]; - - while ( source > YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) - *--dest = *--source; - - yy_cp += (int) (dest - source); - yy_bp += (int) (dest - source); - YY_CURRENT_BUFFER_LVALUE->yy_n_chars = - (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_buf_size; - - if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 ) - YY_FATAL_ERROR( "flex scanner push-back overflow" ); - } - - *--yy_cp = (char) c; - - if ( c == '\n' ){ - --yylineno; - } - - (yytext_ptr) = yy_bp; - (yy_hold_char) = *yy_cp; - (yy_c_buf_p) = yy_cp; -} - -#ifndef YY_NO_INPUT -#ifdef __cplusplus - static int yyinput (void) -#else - static int input (void) -#endif - -{ - int c; - - *(yy_c_buf_p) = (yy_hold_char); - - if ( *(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR ) - { - /* yy_c_buf_p now points to the character we want to return. - * If this occurs *before* the EOB characters, then it's a - * valid NUL; if not, then we've hit the end of the buffer. - */ - if ( (yy_c_buf_p) < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] ) - /* This was really a NUL. */ - *(yy_c_buf_p) = '\0'; - - else - { /* need more input */ - int offset = (yy_c_buf_p) - (yytext_ptr); - ++(yy_c_buf_p); - - switch ( yy_get_next_buffer( ) ) - { - case EOB_ACT_LAST_MATCH: - /* This happens because yy_g_n_b() - * sees that we've accumulated a - * token and flags that we need to - * try matching the token before - * proceeding. But for input(), - * there's no matching to consider. - * So convert the EOB_ACT_LAST_MATCH - * to EOB_ACT_END_OF_FILE. - */ - - /* Reset buffer status. */ - yyrestart(yyin ); - - /*FALLTHROUGH*/ - - case EOB_ACT_END_OF_FILE: - { - if ( yywrap( ) ) - return EOF; - - if ( ! (yy_did_buffer_switch_on_eof) ) - YY_NEW_FILE; -#ifdef __cplusplus - return yyinput(); -#else - return input(); -#endif - } - - case EOB_ACT_CONTINUE_SCAN: - (yy_c_buf_p) = (yytext_ptr) + offset; - break; - } - } - } - - c = *(unsigned char *) (yy_c_buf_p); /* cast for 8-bit char's */ - *(yy_c_buf_p) = '\0'; /* preserve yytext */ - (yy_hold_char) = *++(yy_c_buf_p); - - if ( c == '\n' ) - - yylineno++; -; - - return c; -} -#endif /* ifndef YY_NO_INPUT */ - -/** Immediately switch to a different input stream. - * @param input_file A readable stream. - * - * @note This function does not reset the start condition to @c INITIAL . - */ - void yyrestart (FILE * input_file ) -{ - - if ( ! YY_CURRENT_BUFFER ){ - yyensure_buffer_stack (); - YY_CURRENT_BUFFER_LVALUE = - yy_create_buffer(yyin,YY_BUF_SIZE ); - } - - yy_init_buffer(YY_CURRENT_BUFFER,input_file ); - yy_load_buffer_state( ); -} - -/** Switch to a different input buffer. - * @param new_buffer The new input buffer. - * - */ - void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer ) -{ - - /* TODO. We should be able to replace this entire function body - * with - * yypop_buffer_state(); - * yypush_buffer_state(new_buffer); - */ - yyensure_buffer_stack (); - if ( YY_CURRENT_BUFFER == new_buffer ) - return; - - if ( YY_CURRENT_BUFFER ) - { - /* Flush out information for old buffer. */ - *(yy_c_buf_p) = (yy_hold_char); - YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p); - YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); - } - - YY_CURRENT_BUFFER_LVALUE = new_buffer; - yy_load_buffer_state( ); - - /* We don't actually know whether we did this switch during - * EOF (yywrap()) processing, but the only time this flag - * is looked at is after yywrap() is called, so it's safe - * to go ahead and always set it. - */ - (yy_did_buffer_switch_on_eof) = 1; -} - -static void yy_load_buffer_state (void) -{ - (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; - (yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos; - yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file; - (yy_hold_char) = *(yy_c_buf_p); -} - -/** Allocate and initialize an input buffer state. - * @param file A readable stream. - * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE. - * - * @return the allocated buffer state. - */ - YY_BUFFER_STATE yy_create_buffer (FILE * file, int size ) -{ - YY_BUFFER_STATE b; - - b = (YY_BUFFER_STATE) yyalloc(sizeof( struct yy_buffer_state ) ); - if ( ! b ) - YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); - - b->yy_buf_size = size; - - /* yy_ch_buf has to be 2 characters longer than the size given because - * we need to put in 2 end-of-buffer characters. - */ - b->yy_ch_buf = (char *) yyalloc(b->yy_buf_size + 2 ); - if ( ! b->yy_ch_buf ) - YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); - - b->yy_is_our_buffer = 1; - - yy_init_buffer(b,file ); - - return b; -} - -/** Destroy the buffer. - * @param b a buffer created with yy_create_buffer() - * - */ - void yy_delete_buffer (YY_BUFFER_STATE b ) -{ - - if ( ! b ) - return; - - if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */ - YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0; - - if ( b->yy_is_our_buffer ) - yyfree((void *) b->yy_ch_buf ); - - yyfree((void *) b ); -} - -#ifndef __cplusplus -extern int isatty (int ); -#endif /* __cplusplus */ - -/* Initializes or reinitializes a buffer. - * This function is sometimes called more than once on the same buffer, - * such as during a yyrestart() or at EOF. - */ - static void yy_init_buffer (YY_BUFFER_STATE b, FILE * file ) - -{ - int oerrno = errno; - - yy_flush_buffer(b ); - - b->yy_input_file = file; - b->yy_fill_buffer = 1; - - /* If b is the current buffer, then yy_init_buffer was _probably_ - * called from yyrestart() or through yy_get_next_buffer. - * In that case, we don't want to reset the lineno or column. - */ - if (b != YY_CURRENT_BUFFER){ - b->yy_bs_lineno = 1; - b->yy_bs_column = 0; - } - - b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0; - - errno = oerrno; -} - -/** Discard all buffered characters. On the next scan, YY_INPUT will be called. - * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER. - * - */ - void yy_flush_buffer (YY_BUFFER_STATE b ) -{ - if ( ! b ) - return; - - b->yy_n_chars = 0; - - /* We always need two end-of-buffer characters. The first causes - * a transition to the end-of-buffer state. The second causes - * a jam in that state. - */ - b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR; - b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR; - - b->yy_buf_pos = &b->yy_ch_buf[0]; - - b->yy_at_bol = 1; - b->yy_buffer_status = YY_BUFFER_NEW; - - if ( b == YY_CURRENT_BUFFER ) - yy_load_buffer_state( ); -} - -/** Pushes the new state onto the stack. The new state becomes - * the current state. This function will allocate the stack - * if necessary. - * @param new_buffer The new state. - * - */ -void yypush_buffer_state (YY_BUFFER_STATE new_buffer ) -{ - if (new_buffer == NULL) - return; - - yyensure_buffer_stack(); - - /* This block is copied from yy_switch_to_buffer. */ - if ( YY_CURRENT_BUFFER ) - { - /* Flush out information for old buffer. */ - *(yy_c_buf_p) = (yy_hold_char); - YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p); - YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); - } - - /* Only push if top exists. Otherwise, replace top. */ - if (YY_CURRENT_BUFFER) - (yy_buffer_stack_top)++; - YY_CURRENT_BUFFER_LVALUE = new_buffer; - - /* copied from yy_switch_to_buffer. */ - yy_load_buffer_state( ); - (yy_did_buffer_switch_on_eof) = 1; -} - -/** Removes and deletes the top of the stack, if present. - * The next element becomes the new top. - * - */ -void yypop_buffer_state (void) -{ - if (!YY_CURRENT_BUFFER) - return; - - yy_delete_buffer(YY_CURRENT_BUFFER ); - YY_CURRENT_BUFFER_LVALUE = NULL; - if ((yy_buffer_stack_top) > 0) - --(yy_buffer_stack_top); - - if (YY_CURRENT_BUFFER) { - yy_load_buffer_state( ); - (yy_did_buffer_switch_on_eof) = 1; - } -} - -/* Allocates the stack if it does not exist. - * Guarantees space for at least one push. - */ -static void yyensure_buffer_stack (void) -{ - int num_to_alloc; - - if (!(yy_buffer_stack)) { - - /* First allocation is just for 2 elements, since we don't know if this - * scanner will even need a stack. We use 2 instead of 1 to avoid an - * immediate realloc on the next call. - */ - num_to_alloc = 1; - (yy_buffer_stack) = (struct yy_buffer_state**)yyalloc - (num_to_alloc * sizeof(struct yy_buffer_state*) - ); - - memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*)); - - (yy_buffer_stack_max) = num_to_alloc; - (yy_buffer_stack_top) = 0; - return; - } - - if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){ - - /* Increase the buffer to prepare for a possible push. */ - int grow_size = 8 /* arbitrary grow size */; - - num_to_alloc = (yy_buffer_stack_max) + grow_size; - (yy_buffer_stack) = (struct yy_buffer_state**)yyrealloc - ((yy_buffer_stack), - num_to_alloc * sizeof(struct yy_buffer_state*) - ); - - /* zero only the new slots.*/ - memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*)); - (yy_buffer_stack_max) = num_to_alloc; - } -} - -/** Setup the input buffer state to scan directly from a user-specified character buffer. - * @param base the character buffer - * @param size the size in bytes of the character buffer - * - * @return the newly allocated buffer state object. - */ -YY_BUFFER_STATE yy_scan_buffer (char * base, yy_size_t size ) -{ - YY_BUFFER_STATE b; - - if ( size < 2 || - base[size-2] != YY_END_OF_BUFFER_CHAR || - base[size-1] != YY_END_OF_BUFFER_CHAR ) - /* They forgot to leave room for the EOB's. */ - return 0; - - b = (YY_BUFFER_STATE) yyalloc(sizeof( struct yy_buffer_state ) ); - if ( ! b ) - YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" ); - - b->yy_buf_size = size - 2; /* "- 2" to take care of EOB's */ - b->yy_buf_pos = b->yy_ch_buf = base; - b->yy_is_our_buffer = 0; - b->yy_input_file = 0; - b->yy_n_chars = b->yy_buf_size; - b->yy_is_interactive = 0; - b->yy_at_bol = 1; - b->yy_fill_buffer = 0; - b->yy_buffer_status = YY_BUFFER_NEW; - - yy_switch_to_buffer(b ); - - return b; -} - -/** Setup the input buffer state to scan a string. The next call to yylex() will - * scan from a @e copy of @a str. - * @param str a NUL-terminated string to scan - * - * @return the newly allocated buffer state object. - * @note If you want to scan bytes that may contain NUL values, then use - * yy_scan_bytes() instead. - */ -YY_BUFFER_STATE yy_scan_string (yyconst char * yy_str ) -{ - - return yy_scan_bytes(yy_str,strlen(yy_str) ); -} - -/** Setup the input buffer state to scan the given bytes. The next call to yylex() will - * scan from a @e copy of @a bytes. - * @param bytes the byte buffer to scan - * @param len the number of bytes in the buffer pointed to by @a bytes. - * - * @return the newly allocated buffer state object. - */ -YY_BUFFER_STATE yy_scan_bytes (yyconst char * bytes, int len ) -{ - YY_BUFFER_STATE b; - char *buf; - yy_size_t n; - int i; - - /* Get memory for full buffer, including space for trailing EOB's. */ - n = len + 2; - buf = (char *) yyalloc(n ); - if ( ! buf ) - YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" ); - - for ( i = 0; i < len; ++i ) - buf[i] = bytes[i]; - - buf[len] = buf[len+1] = YY_END_OF_BUFFER_CHAR; - - b = yy_scan_buffer(buf,n ); - if ( ! b ) - YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" ); - - /* It's okay to grow etc. this buffer, and we should throw it - * away when we're done. - */ - b->yy_is_our_buffer = 1; - - return b; -} - -#ifndef YY_EXIT_FAILURE -#define YY_EXIT_FAILURE 2 -#endif - -static void yy_fatal_error (yyconst char* msg ) -{ - (void) fprintf( stderr, "%s\n", msg ); - exit( YY_EXIT_FAILURE ); -} - -/* Redefine yyless() so it works in section 3 code. */ - -#undef yyless -#define yyless(n) \ - do \ - { \ - /* Undo effects of setting up yytext. */ \ - int yyless_macro_arg = (n); \ - YY_LESS_LINENO(yyless_macro_arg);\ - yytext[yyleng] = (yy_hold_char); \ - (yy_c_buf_p) = yytext + yyless_macro_arg; \ - (yy_hold_char) = *(yy_c_buf_p); \ - *(yy_c_buf_p) = '\0'; \ - yyleng = yyless_macro_arg; \ - } \ - while ( 0 ) - -/* Accessor methods (get/set functions) to struct members. */ - -/** Get the current line number. - * - */ -int yyget_lineno (void) -{ - - return yylineno; -} - -/** Get the input stream. - * - */ -FILE *yyget_in (void) -{ - return yyin; -} - -/** Get the output stream. - * - */ -FILE *yyget_out (void) -{ - return yyout; -} - -/** Get the length of the current token. - * - */ -int yyget_leng (void) -{ - return yyleng; -} - -/** Get the current token. - * - */ - -char *yyget_text (void) -{ - return yytext; -} - -/** Set the current line number. - * @param line_number - * - */ -void yyset_lineno (int line_number ) -{ - - yylineno = line_number; -} - -/** Set the input stream. This does not discard the current - * input buffer. - * @param in_str A readable stream. - * - * @see yy_switch_to_buffer - */ -void yyset_in (FILE * in_str ) -{ - yyin = in_str ; -} - -void yyset_out (FILE * out_str ) -{ - yyout = out_str ; -} - -int yyget_debug (void) -{ - return yy_flex_debug; -} - -void yyset_debug (int bdebug ) -{ - yy_flex_debug = bdebug ; -} - -/* yylex_destroy is for both reentrant and non-reentrant scanners. */ -int yylex_destroy (void) -{ - - /* Pop the buffer stack, destroying each element. */ - while(YY_CURRENT_BUFFER){ - yy_delete_buffer(YY_CURRENT_BUFFER ); - YY_CURRENT_BUFFER_LVALUE = NULL; - yypop_buffer_state(); - } - - /* Destroy the stack itself. */ - yyfree((yy_buffer_stack) ); - (yy_buffer_stack) = NULL; - - yyfree ( (yy_state_buf) ); - - return 0; -} - -/* - * Internal utility routines. - */ - -#ifndef yytext_ptr -static void yy_flex_strncpy (char* s1, yyconst char * s2, int n ) -{ - register int i; - for ( i = 0; i < n; ++i ) - s1[i] = s2[i]; -} -#endif - -#ifdef YY_NEED_STRLEN -static int yy_flex_strlen (yyconst char * s ) -{ - register int n; - for ( n = 0; s[n]; ++n ) - ; - - return n; -} -#endif - -void *yyalloc (yy_size_t size ) -{ - return (void *) malloc( size ); -} - -void *yyrealloc (void * ptr, yy_size_t size ) -{ - /* The cast to (char *) in the following accommodates both - * implementations that use char* generic pointers, and those - * that use void* generic pointers. It works with the latter - * because both ANSI C and C++ allow castless assignment from - * any pointer type to void*, and deal with argument conversions - * as though doing an assignment. - */ - return (void *) realloc( (char *) ptr, size ); -} - -void yyfree (void * ptr ) -{ - free( (char *) ptr ); /* see yyrealloc() for (char *) cast */ -} - -#define YYTABLES_NAME "yytables" - -#undef YY_NEW_FILE -#undef YY_FLUSH_BUFFER -#undef yy_set_bol -#undef yy_new_buffer -#undef yy_set_interactive -#undef yytext_ptr -#undef YY_DO_BEFORE_ACTION - -#ifdef YY_DECL_IS_OURS -#undef YY_DECL_IS_OURS -#undef YY_DECL -#endif -#line 225 "./web2c.l" - - -/* Some helper routines. Defining these here means we don't have references - to yytext outside of this file. Which means we can omit one of the more - troublesome autoconf tests. */ -void -get_string_literal P1C(char *, s) -{ - int i, j; - j = 1; - s[0] = '"'; - for (i=1; yytext[i-1] != 0; i++) { - if (yytext[i] == '\\' || yytext[i] == '"') - s[j++] = '\\'; - else if (yytext[i] == '\'') - i++; - s[j++] = yytext[i]; - } - s[j-1] = '"'; - s[j] = 0; -} - -void -get_single_char P1C(char *, s) -{ - s[0]='\''; - if (yytext[1] == '\\' || yytext[1] == '\'') { - s[1] = '\\'; - s[2] = yytext[1]; - s[3] = '\''; - s[4] = 0; - } else { - s[1] = yytext[1]; - s[2] = '\''; - s[3] = 0; - } -} - -void -get_result_type P1C(char *, s) -{ - strcpy(s, yytext); -} - - -/* Since a syntax error can never be recovered from, we exit here with - bad status. */ - -int -yyerror P1C(string, s) -{ - /* This is so the convert script can delete the output file on error. */ - puts ("@error@"); - fflush (stdout); - fputs (s, stderr); - fprintf (stderr, ": Last token = %d (%c), ", last_tok, last_tok); - fprintf (stderr, "error buffer = `%s',\n\t", yytext); - fprintf (stderr, "last id = `%s' (", last_id); - ii = search_table (last_id); - if (ii == -1) - fputs ("not in symbol table", stderr); - else - switch (sym_table[ii].typ) - { - case undef_id_tok: - fputs ("undefined", stderr); - break; - case var_id_tok: - fputs ("variable", stderr); - break; - case const_id_tok: - fputs ("constant", stderr); - break; - case type_id_tok: - fputs ("type", stderr); - break; - case proc_id_tok: - fputs ("parameterless procedure", stderr); - break; - case proc_param_tok: - fputs ("procedure with parameters", stderr); - break; - case fun_id_tok: - fputs ("parameterless function", stderr); - break; - case fun_param_tok: - fputs ("function with parameters", stderr); - break; - default: - fputs ("unknown!", stderr); - break; - } - fputs (").\n", stderr); - exit (1); - - /* Avoid silly warnings. */ - return 0; -} - diff --git a/Build/source/texk/web2c/web2c/web2c-lexer.l b/Build/source/texk/web2c/web2c/web2c-lexer.l new file mode 100644 index 00000000000..40cedd4ceec --- /dev/null +++ b/Build/source/texk/web2c/web2c/web2c-lexer.l @@ -0,0 +1,321 @@ +%{ +/* web2c.l -- lexical analysis for Tangle output. Public domain. */ + +#include "web2c.h" +#include "y_tab.h" + +/* Hack to make it possible to compile the generated code with C++ + Required if you use flex. */ +#ifdef __cplusplus +#define webinput yyinput +#else +#define webinput input +#endif + +/* For some reason flex wants to do a system call, so we must lose our + definition of the Pascal read. */ +#undef read + +char conditional[20], negbuf[2], temp[20]; +extern boolean doing_statements; + + +/* We only read one input file. This is the default definition, but + giving it ourselves avoids the need to find -lfl or -ll at link time. + This is a good thing, since libfl.a is often installed somewhere that + the linker doesn't search by default. */ +int +yywrap P1H(void) +{ + return 1; +} +#define YY_SKIP_YYWRAP /* not that it matters */ +%} +DIGIT [0-9] +ALPHA [a-zA-Z] +ALPHANUM ({DIGIT}|{ALPHA}|"_") +IDENTIFIER ({ALPHA}{ALPHANUM}*) +NUMBER ({DIGIT}+) +SIGN ("+"|"-") +SIGNED ({SIGN}?{NUMBER}) +WHITE [ \n\t]+ +REAL ({NUMBER}"."{NUMBER}("e"{SIGNED})?)|({NUMBER}"e"{SIGNED}) +COMMENT (("{"[^}]*"}")|("(*"([^*]|"*"[^)])*"*)")) +W ({WHITE}|"packed ")+ +WW ({WHITE}|{COMMENT}|"packed ")* +HHB0 ("hh"{WW}"."{WW}"b0") +HHB1 ("hh"{WW}"."{WW}"b1") + +%% +{W} ; +"{" { while (webinput() != '}'); } + +"#" { + register int c; + putc('#', out); + while ((c = webinput()) && c != ';') + putc(c, out); + putc('\n', out); + } + +"ifdef(" {register int c; + register char *cp=conditional; + new_line(); + while ((c = webinput()) != '\'') + ; + while ((c = webinput()) != '\'') + *cp++ = c; + *cp = '\0'; + (void) webinput(); + if (doing_statements) fputs("\t;\n", out); + fprintf(out, "#ifdef %s\n", conditional); + } + +"endif(" {register int c; + new_line(); + fputs("#endif /* ", out); + while ((c = webinput()) != '\'') + ; + while ((c = webinput()) != '\'') + (void) putc(c, out); + (void) webinput(); + conditional[0] = '\0'; + fputs(" */\n", out); + } + +"ifndef(" {register int c; + register char *cp=conditional; + new_line(); + while ((c = webinput()) != '\'') + ; + while ((c = webinput()) != '\'') + *cp++ = c; + *cp = '\0'; + (void) webinput(); + if (doing_statements) fputs("\t;\n", out); + fprintf(out, "#ifndef %s\n", conditional); + } + +"endifn(" {register int c; + new_line(); + fputs("#endif /* not ", out); + while ((c = webinput()) != '\'') + ; + while ((c = webinput()) != '\'') + putc(c, out); + (void) webinput(); + conditional[0] = '\0'; + fputs(" */\n", out); + } + + +"procedure "[a-z_]+";"[ \n\t]*"forward;" ; + +"function "[(),:a-z_]+";"[ \n\t]*"forward;" ; + +"@define" return last_tok=define_tok; +"@field" return last_tok=field_tok; +"and" return last_tok=and_tok; +"array" return last_tok=array_tok; +"begin" return last_tok=begin_tok; +"case" return last_tok=case_tok; +"const" return last_tok=const_tok; +"div" return last_tok=div_tok; +"break" return last_tok=break_tok; +"do" return last_tok=do_tok; +"downto" return last_tok=downto_tok; +"else" return last_tok=else_tok; +"end" return last_tok=end_tok; +"file" return last_tok=file_tok; +"for" return last_tok=for_tok; +"function" return last_tok=function_tok; +"goto" return last_tok=goto_tok; +"if" return last_tok=if_tok; +"label" return last_tok=label_tok; +"mod" return last_tok=mod_tok; +"not" return last_tok=not_tok; +"of" return last_tok=of_tok; +"or" return last_tok=or_tok; +"procedure" return last_tok=procedure_tok; +"program" return last_tok=program_tok; +"record" return last_tok=record_tok; +"repeat" return last_tok=repeat_tok; +{HHB0} return last_tok=hhb0_tok; +{HHB1} return last_tok=hhb1_tok; +"then" return last_tok=then_tok; +"to" return last_tok=to_tok; +"type" return last_tok=type_tok; +"until" return last_tok=until_tok; +"var" return last_tok=var_tok; +"while" return last_tok=while_tok; +"others" return last_tok=others_tok; + +{REAL} { + sprintf (temp, "%s%s", negbuf, yytext); + negbuf[0] = '\0'; + return last_tok=r_num_tok; + } + +{NUMBER} { + sprintf (temp, "%s%s", negbuf, yytext); + negbuf[0] = '\0'; + return last_tok=i_num_tok; + } + +("'"([^']|"''")"'") return last_tok=single_char_tok; + +("'"([^']|"''")*"'") return last_tok=string_literal_tok; + +"+" { if ((last_tok>=undef_id_tok && + last_tok<=field_id_tok) || + last_tok==i_num_tok || + last_tok==r_num_tok || + last_tok==')' || + last_tok==']') + return last_tok='+'; + else return last_tok=unary_plus_tok; } + +"-" { if ((last_tok>=undef_id_tok && + last_tok<=field_id_tok) || + last_tok==i_num_tok || + last_tok==r_num_tok || + last_tok==')' || + last_tok==']') + return last_tok='-'; + else { + int c; + while ((c = webinput()) == ' ' || c == '\t') + ; + unput(c); + if (c < '0' || c > '9') { + return last_tok = unary_minus_tok; + } + negbuf[0] = '-'; + }} + +"*" return last_tok='*'; +"/" return last_tok='/'; +"=" return last_tok='='; +"<>" return last_tok=not_eq_tok; +"<" return last_tok='<'; +">" return last_tok='>'; +"<=" return last_tok=less_eq_tok; +">=" return last_tok=great_eq_tok; +"(" return last_tok='('; +")" return last_tok=')'; +"[" return last_tok='['; +"]" return last_tok=']'; +":=" return last_tok=assign_tok; +".." return last_tok=two_dots_tok; +"." return last_tok='.'; +"," return last_tok=','; +";" return last_tok=';'; +":" return last_tok=':'; +"^" return last_tok='^'; + +{IDENTIFIER} { strcpy (last_id, yytext); + l_s = search_table (last_id); + return + last_tok = (l_s == -1 ? undef_id_tok : sym_table[l_s].typ); + } + + +. { /* Any bizarre token will do. */ + return last_tok = two_dots_tok; } +%% +/* Some helper routines. Defining these here means we don't have references + to yytext outside of this file. Which means we can omit one of the more + troublesome autoconf tests. */ +void +get_string_literal P1C(char *, s) +{ + int i, j; + j = 1; + s[0] = '"'; + for (i=1; yytext[i-1] != 0; i++) { + if (yytext[i] == '\\' || yytext[i] == '"') + s[j++] = '\\'; + else if (yytext[i] == '\'') + i++; + s[j++] = yytext[i]; + } + s[j-1] = '"'; + s[j] = 0; +} + +void +get_single_char P1C(char *, s) +{ + s[0]='\''; + if (yytext[1] == '\\' || yytext[1] == '\'') { + s[1] = '\\'; + s[2] = yytext[1]; + s[3] = '\''; + s[4] = 0; + } else { + s[1] = yytext[1]; + s[2] = '\''; + s[3] = 0; + } +} + +void +get_result_type P1C(char *, s) +{ + strcpy(s, yytext); +} + + +/* Since a syntax error can never be recovered from, we exit here with + bad status. */ + +int +yyerror P1C(string, s) +{ + /* This is so the convert script can delete the output file on error. */ + puts ("@error@"); + fflush (stdout); + fputs (s, stderr); + fprintf (stderr, ": Last token = %d (%c), ", last_tok, last_tok); + fprintf (stderr, "error buffer = `%s',\n\t", yytext); + fprintf (stderr, "last id = `%s' (", last_id); + ii = search_table (last_id); + if (ii == -1) + fputs ("not in symbol table", stderr); + else + switch (sym_table[ii].typ) + { + case undef_id_tok: + fputs ("undefined", stderr); + break; + case var_id_tok: + fputs ("variable", stderr); + break; + case const_id_tok: + fputs ("constant", stderr); + break; + case type_id_tok: + fputs ("type", stderr); + break; + case proc_id_tok: + fputs ("parameterless procedure", stderr); + break; + case proc_param_tok: + fputs ("procedure with parameters", stderr); + break; + case fun_id_tok: + fputs ("parameterless function", stderr); + break; + case fun_param_tok: + fputs ("function with parameters", stderr); + break; + default: + fputs ("unknown!", stderr); + break; + } + fputs (").\n", stderr); + exit (1); + + /* Avoid silly warnings. */ + return 0; +} diff --git a/Build/source/texk/web2c/web2c/web2c-parser.y b/Build/source/texk/web2c/web2c/web2c-parser.y new file mode 100644 index 00000000000..1a1e04df7da --- /dev/null +++ b/Build/source/texk/web2c/web2c/web2c-parser.y @@ -0,0 +1,1405 @@ +/* web2c.y -- parse some of Pascal, and output C, sort of. + + This grammar has one shift/reduce conflict, from the + if-then[-else] rules, which is unresolvable. */ + +/* The order of some of the tokens here is significant. See the rules + for - and + in web2c.l. */ +%token array_tok begin_tok case_tok const_tok do_tok downto_tok else_tok + end_tok file_tok for_tok function_tok goto_tok if_tok label_tok + of_tok procedure_tok program_tok record_tok repeat_tok then_tok + to_tok type_tok until_tok var_tok while_tok + others_tok r_num_tok i_num_tok string_literal_tok single_char_tok + assign_tok two_dots_tok undef_id_tok var_id_tok + proc_id_tok proc_param_tok fun_id_tok fun_param_tok const_id_tok + type_id_tok hhb0_tok hhb1_tok field_id_tok define_tok field_tok + break_tok + +%nonassoc '=' not_eq_tok '<' '>' less_eq_tok great_eq_tok +%left '+' '-' or_tok +%right unary_plus_tok unary_minus_tok +%left '*' '/' div_tok mod_tok and_tok +%right not_tok + +%{ +#include "web2c.h" + +#define YYDEBUG 1 + +#define symbol(x) sym_table[x].id +#define MAX_ARGS 50 + +static char fn_return_type[50], for_stack[300], control_var[50], + relation[3]; +static char arg_type[MAX_ARGS][30]; +static int last_type = -1, ids_typed; +char my_routine[100]; /* Name of routine being parsed, if any */ +static char array_bounds[80], array_offset[80]; +static int uses_mem, uses_eqtb, lower_sym, upper_sym; +static FILE *orig_out; +boolean doing_statements = false; +static boolean var_formals = false; +static int param_id_list[MAX_ARGS], ids_paramed=0; + +extern char conditional[], temp[], *std_header; +extern int tex, mf, strict_for; +extern FILE *coerce; +extern char coerce_name[]; +extern string program_name; +extern boolean debug; + +static long my_labs P1H(long); +static void compute_array_bounds P1H(void); +static void fixup_var_list P1H(void); +static void do_proc_args P1H(void); +static void gen_function_head P1H(void); +static boolean doreturn P1H(string); +%} + +%start PROGRAM + +%% +PROGRAM: + DEFS + PROGRAM_HEAD + { + printf ("#define %s\n", uppercasify (program_name)); + block_level++; + printf ("#include \"%s\"\n", std_header); + } + LABEL_DEC_PART CONST_DEC_PART TYPE_DEC_PART + VAR_DEC_PART + { printf ("\n#include \"%s\"\n", coerce_name); } + P_F_DEC_PART + BODY + { YYACCEPT; } + ; + +/* The @define statements we use to populate the symbol table. */ +DEFS: + /* empty */ + | DEFS DEF + ; +DEF: + define_tok field_tok undef_id_tok ';' + { + ii = add_to_table (last_id); + sym_table[ii].typ = field_id_tok; + } + | define_tok function_tok undef_id_tok ';' + { + ii = add_to_table (last_id); + sym_table[ii].typ = fun_id_tok; + } + | define_tok const_tok undef_id_tok ';' + { + ii = add_to_table (last_id); + sym_table[ii].typ = const_id_tok; + } + | define_tok function_tok undef_id_tok '(' ')' ';' + { + ii = add_to_table (last_id); + sym_table[ii].typ = fun_param_tok; + } + | define_tok procedure_tok undef_id_tok ';' + { + ii = add_to_table (last_id); + sym_table[ii].typ = proc_id_tok; + } + | define_tok procedure_tok undef_id_tok '(' ')' ';' + { + ii = add_to_table (last_id); + sym_table[ii].typ = proc_param_tok; + } + | define_tok type_tok undef_id_tok ';' + { + ii = add_to_table (last_id); + sym_table[ii].typ = type_id_tok; + } + | define_tok type_tok undef_id_tok '=' SUBRANGE_TYPE ';' + { + ii = add_to_table (last_id); + sym_table[ii].typ = type_id_tok; + sym_table[ii].val = lower_bound; + sym_table[ii].val_sym = lower_sym; + sym_table[ii].upper = upper_bound; + sym_table[ii].upper_sym = upper_sym; + } + | define_tok var_tok undef_id_tok ';' + { + ii = add_to_table (last_id); + sym_table[ii].typ = var_id_tok; + } + ; + +/* program statement. Ignore any files. */ +PROGRAM_HEAD: + program_tok undef_id_tok PROGRAM_FILE_PART ';' + ; + +PROGRAM_FILE_PART: + '(' PROGRAM_FILE_LIST ')' + | /* empty */ + ; + +PROGRAM_FILE_LIST: + PROGRAM_FILE + | PROGRAM_FILE_LIST ',' PROGRAM_FILE + ; + +PROGRAM_FILE: + const_id_tok /* input and output are constants */ + | undef_id_tok + ; + +BLOCK: + { if (block_level > 0) my_output("{\n "); + indent++; block_level++; + } + LABEL_DEC_PART + CONST_DEC_PART TYPE_DEC_PART + { if (block_level == 2) { + if (strcmp(fn_return_type, "void")) { + my_output("register"); + my_output(fn_return_type); + my_output("Result;"); + } + if (tex) { + sprintf(safe_string, "%s_regmem", my_routine); + my_output(safe_string); + new_line(); + } + } + } + VAR_DEC_PART + { doing_statements = true; } + STAT_PART + { + if (block_level == 2) { + if (strcmp(fn_return_type,"void")) { + my_output("return Result"); + semicolon(); + } + if (tex) { + if (uses_mem && uses_eqtb) + fprintf(coerce, + "#define %s_regmem register memoryword *mem=zmem, *eqtb=zeqtb;\n", + my_routine); + else if (uses_mem) + fprintf(coerce, "#define %s_regmem register memoryword *mem=zmem;\n", + my_routine); + else if (uses_eqtb) + fprintf(coerce, "#define %s_regmem register memoryword *eqtb=zeqtb;\n", + my_routine); + else + fprintf(coerce, "#define %s_regmem\n", my_routine); + } + my_routine[0] = '\0'; + } + indent--; block_level--; + my_output("}"); new_line(); + doing_statements = false; + } + ; + +LABEL_DEC_PART: /* empty */ + | label_tok + { my_output("/*"); } + LABEL_LIST ';' + { my_output("*/"); } + ; + +LABEL_LIST: LABEL + | LABEL_LIST ',' LABEL + ; + +LABEL: + i_num_tok { my_output(temp); } + ; + +CONST_DEC_PART: + /* empty */ + | const_tok CONST_DEC_LIST + { new_line(); } + ; + +CONST_DEC_LIST: + CONST_DEC + | CONST_DEC_LIST CONST_DEC + ; + +CONST_DEC: + { /* `#define' must be in column 1 for pcc. */ + unsigned save = indent; + new_line (); + indent = 0; + my_output ("#define"); + indent = save; + } + undef_id_tok + { ii = add_to_table (last_id); + sym_table[ii].typ = const_id_tok; + my_output (last_id); + } + '=' { my_output ("("); } + CONSTANT_EXPRESS { my_output (")"); } + ';' { sym_table[ii].val = last_i_num; new_line(); } + ; + +CONSTANT: + i_num_tok + { + sscanf (temp, "%ld", &last_i_num); + if (my_labs ((long) last_i_num) > 32767) + strcat (temp, "L"); + my_output (temp); + $$ = ex_32; + } + | r_num_tok { my_output(temp); $$ = ex_real; } + | STRING { $$ = 0; } + | CONSTANT_ID { $$ = ex_32; } + ; + +CONSTANT_EXPRESS: + UNARY_OP CONSTANT_EXPRESS %prec '*' + { $$ = $2; } + | CONSTANT_EXPRESS '+' { my_output ("+"); } + CONSTANT_EXPRESS { $$ = max ($1, $4); } + | CONSTANT_EXPRESS '-' { my_output ("-"); } + CONSTANT_EXPRESS { $$ = max ($1, $4); } + | CONSTANT_EXPRESS '*' { my_output ("*"); } + CONSTANT_EXPRESS { $$ = max ($1, $4); } + | CONSTANT_EXPRESS div_tok { my_output ("/"); } + CONSTANT_EXPRESS { $$ = max ($1, $4); } + | CONSTANT_EXPRESS '=' { my_output ("=="); } + CONSTANT_EXPRESS { $$ = max ($1, $4); } + | CONSTANT_EXPRESS not_eq_tok { my_output ("!="); } + CONSTANT_EXPRESS { $$ = max ($1, $4); } + | CONSTANT_EXPRESS mod_tok { my_output ("%"); } + CONSTANT_EXPRESS { $$ = max ($1, $4); } + | CONSTANT_EXPRESS '<' { my_output ("<"); } + CONSTANT_EXPRESS { $$ = max ($1, $4); } + | CONSTANT_EXPRESS '>' { my_output (">"); } + CONSTANT_EXPRESS { $$ = max ($1, $4); } + | CONSTANT_EXPRESS less_eq_tok { my_output ("<="); } + CONSTANT_EXPRESS { $$ = max ($1, $4); } + | CONSTANT_EXPRESS great_eq_tok { my_output (">="); } + CONSTANT_EXPRESS { $$ = max ($1, $4); } + | CONSTANT_EXPRESS and_tok { my_output ("&&"); } + CONSTANT_EXPRESS { $$ = max ($1, $4); } + | CONSTANT_EXPRESS or_tok { my_output ("||"); } + CONSTANT_EXPRESS { $$ = max ($1, $4); } + | CONSTANT_EXPRESS '/' { my_output ("/ ((double)"); } + CONSTANT_EXPRESS { $$ = max ($1, $4); my_output (")"); } + | CONST_FACTOR { $$ = $1; } + ; + +CONST_FACTOR: + '(' + { my_output ("("); } + CONSTANT_EXPRESS ')' + { my_output (")"); $$ = $1; } + | CONSTANT + ; + +STRING: + string_literal_tok + { + char s[132]; + get_string_literal(s); + my_output (s); + } + | single_char_tok + { + char s[5]; + get_single_char(s); + my_output (s); + } + ; + +CONSTANT_ID: + const_id_tok { my_output (last_id); } + ; + +TYPE_DEC_PART: /* empty */ + | type_tok TYPE_DEF_LIST + ; + +TYPE_DEF_LIST: TYPE_DEF + | TYPE_DEF_LIST TYPE_DEF + ; + +TYPE_DEF: + { my_output ("typedef"); } + undef_id_tok + { + ii = add_to_table(last_id); + sym_table[ii].typ = type_id_tok; + strcpy(safe_string, last_id); + last_type = ii; + } + '=' + { + array_bounds[0] = 0; + array_offset[0] = 0; + } + TYPE ';' + { + if (*array_offset) { + yyerror ("Cannot typedef arrays with offsets"); + } + my_output (safe_string); + my_output (array_bounds); + semicolon (); + last_type = -1; + } + ; + +TYPE: + SIMPLE_TYPE + | STRUCTURED_TYPE + ; + +SIMPLE_TYPE: + SUBRANGE_TYPE + { + if (last_type >= 0) + { + sym_table[ii].val = lower_bound; + sym_table[ii].val_sym = lower_sym; + sym_table[ii].upper = upper_bound; + sym_table[ii].upper_sym = upper_sym; + ii= -1; + } + + /* If the bounds on an integral type are known at + translation time, select the smallest ANSI C type which + can represent it. We avoid using unsigned char and + unsigned short where possible, as ANSI compilers + (typically) convert them to int, while traditional + compilers convert them to unsigned int. We also avoid + schar if possible, since it also is different on + different compilers (see config.h). */ + if (lower_sym == -1 && upper_sym == -1) { + if (0 <= lower_bound && upper_bound <= SCHAR_MAX) + my_output ("char"); + else if (SCHAR_MIN <= lower_bound && upper_bound <= SCHAR_MAX) + my_output ("schar"); + else if (0 <= lower_bound && upper_bound <= UCHAR_MAX) + my_output ("unsigned char"); + else if (SHRT_MIN <= lower_bound && upper_bound <= SHRT_MAX) + my_output ("short"); + else if (0 <= lower_bound && upper_bound <= USHRT_MAX) + my_output ("unsigned short"); + else + my_output ("integer"); + } else { + my_output ("integer"); + } + } + | TYPE_ID + ; + +SUBRANGE_TYPE: + SUBRANGE_CONSTANT two_dots_tok SUBRANGE_CONSTANT + ; + +POSSIBLE_PLUS: + /* empty */ + | unary_plus_tok + ; + +SUBRANGE_CONSTANT: + POSSIBLE_PLUS i_num_tok + { + lower_bound = upper_bound; + lower_sym = upper_sym; + sscanf (temp, "%ld", &upper_bound); + upper_sym = -1; /* no sym table entry */ + } + | const_id_tok + { + lower_bound = upper_bound; + lower_sym = upper_sym; + upper_bound = sym_table[l_s].val; + upper_sym = l_s; + } + | var_id_tok + { /* We've changed some constants into dynamic variables. + To avoid changing all the subrange decls, just use integer. + This does not work for arrays, for which we check later. */ + lower_bound = upper_bound; + lower_sym = upper_sym; + upper_bound = 0; + upper_sym = 0; /* Translate to integer. */ + } + | undef_id_tok + { /* Same as var_id_tok, to avoid changing type definitions. + Should keep track of the variables we use in this way + and make sure they're all eventually defined. */ + lower_bound = upper_bound; + lower_sym = upper_sym; + upper_bound = 0; + upper_sym = 0; + } + ; + +TYPE_ID: + type_id_tok + { + if (last_type >= 0) { + sym_table[last_type].var_not_needed = sym_table[l_s].var_not_needed; + sym_table[last_type].upper = sym_table[l_s].upper; + sym_table[last_type].upper_sym = sym_table[l_s].upper_sym; + sym_table[last_type].val = sym_table[l_s].val; + sym_table[last_type].val_sym = sym_table[l_s].val_sym; + } + my_output (last_id); + } + ; + +STRUCTURED_TYPE: + ARRAY_TYPE + { if (last_type >= 0) + sym_table[last_type].var_not_needed = true; + } + | RECORD_TYPE + | FILE_TYPE + { if (last_type >= 0) + sym_table[last_type].var_not_needed = true; + } + | POINTER_TYPE + { if (last_type >= 0) + sym_table[last_type].var_not_needed = true; + } + ; + +POINTER_TYPE: + '^' type_id_tok + { + if (last_type >= 0) { + sym_table[last_type].var_not_needed = sym_table[l_s].var_not_needed; + sym_table[last_type].upper = sym_table[l_s].upper; + sym_table[last_type].upper_sym = sym_table[l_s].upper_sym; + sym_table[last_type].val = sym_table[l_s].val; + sym_table[last_type].val_sym = sym_table[l_s].val_sym; + } + my_output (last_id); + my_output ("*"); + } + ; + +ARRAY_TYPE: + array_tok '[' INDEX_TYPE ']' of_tok COMPONENT_TYPE + | array_tok '[' INDEX_TYPE ',' INDEX_TYPE ']' of_tok COMPONENT_TYPE + ; + +INDEX_TYPE: + SUBRANGE_TYPE + { compute_array_bounds(); } + | type_id_tok + { + lower_bound = sym_table[l_s].val; + lower_sym = sym_table[l_s].val_sym; + upper_bound = sym_table[l_s].upper; + upper_sym = sym_table[l_s].upper_sym; + compute_array_bounds(); + } + ; + +COMPONENT_TYPE: TYPE ; + +RECORD_TYPE: + record_tok + { my_output ("struct"); my_output ("{"); indent++; } + FIELD_LIST end_tok + { indent--; my_output ("}"); semicolon(); } + ; + +FIELD_LIST: RECORD_SECTION + | FIELD_LIST ';' RECORD_SECTION + ; + +RECORD_SECTION: + { field_list[0] = 0; } + FIELD_ID_LIST ':' + { + /*array_bounds[0] = 0; + array_offset[0] = 0;*/ + } + TYPE + { int i=0, j; char ltemp[80]; + while(field_list[i++] == '!') { + j = 0; + while (field_list[i]) + ltemp[j++] = field_list[i++]; + i++; + if (field_list[i] == '!') + ltemp[j++] = ','; + ltemp[j] = 0; + my_output (ltemp); + } + semicolon(); + } + | /* empty */ + ; + +FIELD_ID_LIST: FIELD_ID + | FIELD_ID_LIST ',' FIELD_ID + ; + +FIELD_ID: undef_id_tok + { int i=0, j=0; + while (field_list[i] == '!') + while(field_list[i++]); + ii = add_to_table(last_id); + sym_table[ii].typ = field_id_tok; + field_list[i++] = '!'; + while (last_id[j]) + field_list[i++] = last_id[j++]; + field_list[i++] = 0; + field_list[i++] = 0; + } + | field_id_tok + { int i=0, j=0; + while (field_list[i] == '!') + while(field_list[i++]); + field_list[i++] = '!'; + while (last_id[j]) + field_list[i++] = last_id[j++]; + field_list[i++] = 0; + field_list[i++] = 0; + } + ; + +FILE_TYPE: + file_tok of_tok + { my_output ("text /* of "); } + TYPE + { my_output ("*/"); } + ; + +VAR_DEC_PART: + /* empty */ + | var_tok VAR_DEC_LIST + ; + +VAR_DEC_LIST: + VAR_DEC + | VAR_DEC_LIST VAR_DEC + ; + +VAR_DEC: + { + var_list[0] = 0; + array_bounds[0] = 0; + array_offset[0] = 0; + var_formals = false; + ids_paramed = 0; + } + VAR_ID_DEC_LIST ':' + { + array_bounds[0] = 0; + array_offset[0] = 0; + } + TYPE ';' + { fixup_var_list(); } + ; + +VAR_ID_DEC_LIST: VAR_ID + | VAR_ID_DEC_LIST ',' VAR_ID + ; + +VAR_ID: undef_id_tok + { int i=0, j=0; + ii = add_to_table(last_id); + sym_table[ii].typ = var_id_tok; + sym_table[ii].var_formal = var_formals; + param_id_list[ids_paramed++] = ii; + while (var_list[i] == '!') + while(var_list[i++]); + var_list[i++] = '!'; + while (last_id[j]) + var_list[i++] = last_id[j++]; + var_list[i++] = 0; + var_list[i++] = 0; + } + | var_id_tok + { int i=0, j=0; + ii = add_to_table(last_id); + sym_table[ii].typ = var_id_tok; + sym_table[ii].var_formal = var_formals; + param_id_list[ids_paramed++] = ii; + while (var_list[i] == '!') + while (var_list[i++]); + var_list[i++] = '!'; + while (last_id[j]) + var_list[i++] = last_id[j++]; + var_list[i++] = 0; + var_list[i++] = 0; + } + | field_id_tok + { int i=0, j=0; + ii = add_to_table(last_id); + sym_table[ii].typ = var_id_tok; + sym_table[ii].var_formal = var_formals; + param_id_list[ids_paramed++] = ii; + while (var_list[i] == '!') + while(var_list[i++]); + var_list[i++] = '!'; + while (last_id[j]) + var_list[i++] = last_id[j++]; + var_list[i++] = 0; + var_list[i++] = 0; + } + ; + +BODY: + /* empty */ + | begin_tok + { my_output ("void mainbody() {"); + indent++; + new_line (); + } + STAT_LIST end_tok '.' + { indent--; + my_output ("}"); + new_line (); + } + ; + +P_F_DEC_PART: + P_F_DEC + | P_F_DEC_PART P_F_DEC + ; + +P_F_DEC: PROCEDURE_DEC ';' + { new_line(); remove_locals(); } + | FUNCTION_DEC ';' + { new_line(); remove_locals(); } + ; + +PROCEDURE_DEC: + PROCEDURE_HEAD BLOCK ; + +PROCEDURE_HEAD: + procedure_tok undef_id_tok + { ii = add_to_table(last_id); + if (debug) + fprintf(stderr, "%3d Procedure %s\n", pf_count++, last_id); + sym_table[ii].typ = proc_id_tok; + strcpy(my_routine, last_id); + uses_eqtb = uses_mem = false; + my_output ("void"); + new_line (); + orig_out = out; + out = 0; + } + PARAM ';' + { strcpy(fn_return_type, "void"); + do_proc_args(); + gen_function_head(); } + | procedure_tok DECLARED_PROC + { ii = l_s; + if (debug) + fprintf(stderr, "%3d Procedure %s\n", pf_count++, last_id); + strcpy(my_routine, last_id); + my_output ("void"); + new_line (); + } + PARAM ';' + { strcpy(fn_return_type, "void"); + do_proc_args(); + gen_function_head(); + } + ; + +PARAM: + /* empty */ + { + strcpy (z_id, last_id); + mark (); + ids_paramed = 0; + } + | '(' + { sprintf (z_id, "z%s", last_id); + ids_paramed = 0; + if (sym_table[ii].typ == proc_id_tok) + sym_table[ii].typ = proc_param_tok; + else if (sym_table[ii].typ == fun_id_tok) + sym_table[ii].typ = fun_param_tok; + mark(); + } + FORM_PAR_SEC_L ')' + ; + +FORM_PAR_SEC_L: FORM_PAR_SEC + | FORM_PAR_SEC_L ';' FORM_PAR_SEC + ; + +FORM_PAR_SEC1: + { ids_typed = ids_paramed; } + VAR_ID_DEC_LIST ':' type_id_tok + { int i, need_var; + i = search_table(last_id); + need_var = !sym_table[i].var_not_needed; + for (i=ids_typed; i' { my_output (">"); } EXPRESS + { $$ = max ($1, $4); } + | EXPRESS less_eq_tok { my_output ("<="); } EXPRESS + { $$ = max ($1, $4); } + | EXPRESS great_eq_tok { my_output (">="); } EXPRESS + { $$ = max ($1, $4); } + | EXPRESS and_tok { my_output ("&&"); } EXPRESS + { $$ = max ($1, $4); } + | EXPRESS or_tok { my_output ("||"); } EXPRESS + { $$ = max ($1, $4); } + | EXPRESS '/' + { my_output ("/ ((double)"); } + EXPRESS + { $$ = max ($1, $4); my_output (")"); } + | FACTOR + { $$ = $1; } + ; + +UNARY_OP: + unary_plus_tok + | unary_minus_tok + { my_output ("- (integer)"); } + | not_tok + { my_output ("!"); } + ; + +FACTOR: + '(' + { my_output ("("); } + EXPRESS ')' + { my_output (")"); $$ = $1; } + | VARIABLE + | CONSTANT + | fun_id_tok + { my_output (last_id); my_output ("()"); } + | fun_param_tok + { my_output (last_id); } + PARAM_LIST + ; + +PARAM_LIST: + '(' { my_output ("("); } + ACTUAL_PARAM_L ')' { my_output (")"); } + ; + +ACTUAL_PARAM_L: + ACTUAL_PARAM + | ACTUAL_PARAM_L ',' { my_output (","); } + ACTUAL_PARAM + ; + +ACTUAL_PARAM: + EXPRESS WIDTH_FIELD + | type_id_tok /* So we can pass type names to C macros. */ + { my_output (last_id); } + ; + +WIDTH_FIELD: + ':' i_num_tok + | /* empty */ + ; + +PROC_STAT: proc_id_tok + { my_output (last_id); my_output ("()"); } + | undef_id_tok + { my_output (last_id); + ii = add_to_table(last_id); + sym_table[ii].typ = proc_id_tok; + my_output ("()"); + } + | proc_param_tok + { my_output (last_id); } + PARAM_LIST + ; + +GO_TO_STAT: goto_tok i_num_tok + {if (doreturn(temp)) { + if (strcmp(fn_return_type,"void")) + my_output ("return Result"); + else + my_output ("return"); + } else { + sprintf(safe_string, "goto lab%s", + temp); + my_output (safe_string); + } + } + ; + +EMPTY_STAT: /* empty */ + ; + +STRUCT_STAT: COMPOUND_STAT + | CONDIT_STAT + | REPETIT_STAT + ; + +CONDIT_STAT: IF_STATEMENT + | CASE_STATEMENT + ; + +IF_STATEMENT: BEGIN_IF_STAT + | BEGIN_IF_STAT ELSE_STAT + ; + +BEGIN_IF_STAT: if_tok + { my_output ("if"); my_output ("("); } + EXPRESS + { my_output (")"); new_line (); } + then_tok STATEMENT + ; + +ELSE_STAT: else_tok + { my_output ("else"); } + STATEMENT + ; + +CASE_STATEMENT: case_tok + { my_output ("switch"); my_output ("("); } + EXPRESS of_tok + { my_output (")"); new_line(); + my_output ("{"); indent++; + } + CASE_EL_LIST END_CASE + { indent--; my_output ("}"); new_line(); } + ; + +CASE_EL_LIST: CASE_ELEMENT + | CASE_EL_LIST ';' CASE_ELEMENT + ; + +CASE_ELEMENT: CASE_LAB_LIST ':' UNLAB_STAT + { my_output ("break"); semicolon(); } + ; + +CASE_LAB_LIST: CASE_LAB + | CASE_LAB_LIST ',' CASE_LAB + ; + +CASE_LAB: i_num_tok + { my_output ("case"); + my_output (temp); + my_output (":"); new_line(); + } + | others_tok + { my_output ("default:"); new_line(); } + ; + +END_CASE: end_tok + | ';' end_tok + ; + +REPETIT_STAT: WHILE_STATEMENT + | REP_STATEMENT + | FOR_STATEMENT + ; + +WHILE_STATEMENT: while_tok + { my_output ("while"); + my_output ("("); + } + EXPRESS + { my_output (")"); } + do_tok STATEMENT + ; + +REP_STATEMENT: repeat_tok + { my_output ("do"); my_output ("{"); indent++; } + STAT_LIST until_tok + { indent--; my_output ("}"); + my_output ("while"); my_output ("( ! ("); + } + EXPRESS + { my_output (") )"); } + ; + +FOR_STATEMENT: for_tok + { + my_output ("{"); + my_output ("register"); + my_output ("integer"); + if (strict_for) + my_output ("for_begin,"); + my_output ("for_end;"); + } + CONTROL_VAR assign_tok + { if (strict_for) + my_output ("for_begin"); + else + my_output (control_var); + my_output ("="); } + FOR_LIST do_tok + { my_output ("; if ("); + if (strict_for) my_output ("for_begin"); + else my_output (control_var); + my_output (relation); + my_output ("for_end)"); + if (strict_for) { + my_output ("{"); + my_output (control_var); + my_output ("="); + my_output ("for_begin"); + semicolon(); + } + my_output ("do"); + indent++; + new_line(); + } + STATEMENT + { + char *top = strrchr (for_stack, '#'); + indent--; + new_line(); + my_output ("while"); + my_output ("("); + my_output (top+1); + my_output (")"); + my_output (";"); + my_output ("}"); + if (strict_for) + my_output ("}"); + *top=0; + new_line(); + } + ; + +CONTROL_VAR: var_id_tok + { strcpy(control_var, last_id); } + ; + +FOR_LIST: EXPRESS + { my_output (";"); } + to_tok + { + strcpy(relation, "<="); + my_output ("for_end"); + my_output ("="); } + EXPRESS + { + sprintf(for_stack + strlen(for_stack), + "#%s++ < for_end", control_var); + } + | EXPRESS + { my_output (";"); } + downto_tok + { + strcpy(relation, ">="); + my_output ("for_end"); + my_output ("="); } + EXPRESS + { + sprintf(for_stack + strlen(for_stack), + "#%s-- > for_end", control_var); + } + ; +%% + +static void +compute_array_bounds P1H(void) +{ + long lb; + char tmp[200]; + + if (lower_sym == 0 || upper_sym == 0) { + yyerror ("Cannot handle variable subrange in array decl"); + } + else if (lower_sym == -1) { /* lower is a constant */ + lb = lower_bound - 1; + if (lb==0) lb = -1; /* Treat lower_bound==1 as if lower_bound==0 */ + if (upper_sym == -1) /* both constants */ + sprintf(tmp, "[%ld]", upper_bound - lb); + else { /* upper a symbol, lower constant */ + if (lb < 0) + sprintf(tmp, "[%s + %ld]", + symbol(upper_sym), (-lb)); + else + sprintf(tmp, "[%s - %ld]", + symbol(upper_sym), lb); + } + if (lower_bound < 0 || lower_bound > 1) { + if (*array_bounds) { + yyerror ("Cannot handle offset in second dimension"); + } + if (lower_bound < 0) { + sprintf(array_offset, "+%ld", -lower_bound); + } else { + sprintf(array_offset, "-%ld", lower_bound); + } + } + strcat(array_bounds, tmp); + } else { /* lower is a symbol */ + if (upper_sym != -1) /* both are symbols */ + sprintf(tmp, "[%s - %s + 1]", symbol(upper_sym), + symbol(lower_sym)); + else { /* upper constant, lower symbol */ + sprintf(tmp, "[%ld - %s]", upper_bound + 1, + symbol(lower_sym)); + } + if (*array_bounds) { + yyerror ("Cannot handle symbolic offset in second dimension"); + } + sprintf(array_offset, "- (int)(%s)", symbol(lower_sym)); + strcat(array_bounds, tmp); + } +} + + +/* Kludge around negative lower array bounds. */ + +static void +fixup_var_list () +{ + int i, j; + char output_string[100], real_symbol[100]; + + for (i = 0; var_list[i++] == '!'; ) + { + for (j = 0; (real_symbol[j++] = var_list[i++]); ) + ; + if (*array_offset) + { + fprintf (out, "\n#define %s (%s %s)\n ", + real_symbol, next_temp, array_offset); + strcpy (real_symbol, next_temp); + /* Add the temp to the symbol table, so that change files can + use it later on if necessary. */ + j = add_to_table (next_temp); + sym_table[j].typ = var_id_tok; + find_next_temp (); + } + sprintf (output_string, "%s%s%c", real_symbol, array_bounds, + var_list[i] == '!' ? ',' : ' '); + my_output (output_string); + } + semicolon (); +} + + +/* If we're not processing TeX, we return false. Otherwise, + return true if the label is "10" and we're not in one of four TeX + routines where the line labeled "10" isn't the end of the routine. + Otherwise, return 0. */ + +static boolean +doreturn P1C(string, label) +{ + return + tex + && STREQ (label, "10") + && !STREQ (my_routine, "macrocall") + && !STREQ (my_routine, "hpack") + && !STREQ (my_routine, "vpackage") + && !STREQ (my_routine, "trybreak"); +} + + +/* Return the absolute value of a long. */ +static long +my_labs P1C(long, x) +{ + if (x < 0L) return(-x); + return(x); +} + + +/* Output current function declaration to coerce file. */ + +static void +do_proc_args P1H(void) +{ + /* If we want ANSI code and one of the parameters is a var + parameter, then use the #define to add the &. We do this by + adding a 'z' at the front of the name. gen_function_head will do + the real work. */ + int i; + int var = 0; + for (i = 0; i < ids_paramed; ++i) + var += sym_table[param_id_list[i]].var_formal; + if (var) { + for (i = strlen (z_id); i >= 0; --i) + z_id[i+1] = z_id[i]; + z_id[0] = 'z'; + } + + /* We can't use our P?H macros here, since there might be an arbitrary + number of function arguments. */ + fprintf (coerce, "%s %s AA((", fn_return_type, z_id); + if (ids_paramed == 0) fprintf (coerce, "void"); + for (i = 0; i < ids_paramed; i++) { + if (i > 0) + putc (',', coerce); + fprintf (coerce, "%s %s", arg_type[i], symbol (param_id_list[i])); + } + fprintf (coerce, "));\n"); +} + +static void +gen_function_head P1H(void) +{ + int i; + + if (strcmp(my_routine, z_id)) { + fprintf(coerce, "#define %s(", my_routine); + for (i=0; i 0) + fprintf(coerce, ", %s", symbol(param_id_list[i])); + else + fprintf(coerce, "%s", symbol(param_id_list[i])); + } + fprintf(coerce, ") %s(", z_id); + for (i=0; i 0) + fputs(", ", coerce); + fprintf(coerce, "(%s) ", arg_type[i]); + fprintf(coerce, "%s(%s)", + sym_table[param_id_list[i]].var_formal?"&":"", + symbol(param_id_list[i])); + } + fprintf(coerce, ")\n"); + } + out = orig_out; + new_line (); + /* We can't use our P?C macros here, since there might be an arbitrary + number of function arguments. We have to include the #ifdef in the + generated code, or we'd generate different code with and without + prototypes, which might cause splitup to create different numbers + of files in each case. */ + fputs ("#ifdef HAVE_PROTOTYPES\n", out); + my_output (z_id); + my_output ("("); + if (ids_paramed == 0) my_output ("void"); + for (i=0; i 0) my_output (","); + my_output (arg_type[i]); + my_output (symbol (param_id_list[i])); + } + my_output (")"); + new_line (); + fputs ("#else\n", out); + my_output (z_id); + my_output ("("); + for (i=0; i 0) my_output (","); + my_output (symbol (param_id_list[i])); + } + my_output (")"); + new_line (); + indent++; + for (i=0; i=undef_id_tok && - last_tok<=field_id_tok) || - last_tok==i_num_tok || - last_tok==r_num_tok || - last_tok==')' || - last_tok==']') - return last_tok='+'; - else return last_tok=unary_plus_tok; } - -"-" { if ((last_tok>=undef_id_tok && - last_tok<=field_id_tok) || - last_tok==i_num_tok || - last_tok==r_num_tok || - last_tok==')' || - last_tok==']') - return last_tok='-'; - else { - int c; - while ((c = webinput()) == ' ' || c == '\t') - ; - unput(c); - if (c < '0' || c > '9') { - return last_tok = unary_minus_tok; - } - negbuf[0] = '-'; - }} - -"*" return last_tok='*'; -"/" return last_tok='/'; -"=" return last_tok='='; -"<>" return last_tok=not_eq_tok; -"<" return last_tok='<'; -">" return last_tok='>'; -"<=" return last_tok=less_eq_tok; -">=" return last_tok=great_eq_tok; -"(" return last_tok='('; -")" return last_tok=')'; -"[" return last_tok='['; -"]" return last_tok=']'; -":=" return last_tok=assign_tok; -".." return last_tok=two_dots_tok; -"." return last_tok='.'; -"," return last_tok=','; -";" return last_tok=';'; -":" return last_tok=':'; -"^" return last_tok='^'; - -{IDENTIFIER} { strcpy (last_id, yytext); - l_s = search_table (last_id); - return - last_tok = (l_s == -1 ? undef_id_tok : sym_table[l_s].typ); - } - - -. { /* Any bizarre token will do. */ - return last_tok = two_dots_tok; } -%% -/* Some helper routines. Defining these here means we don't have references - to yytext outside of this file. Which means we can omit one of the more - troublesome autoconf tests. */ -void -get_string_literal P1C(char *, s) -{ - int i, j; - j = 1; - s[0] = '"'; - for (i=1; yytext[i-1] != 0; i++) { - if (yytext[i] == '\\' || yytext[i] == '"') - s[j++] = '\\'; - else if (yytext[i] == '\'') - i++; - s[j++] = yytext[i]; - } - s[j-1] = '"'; - s[j] = 0; -} - -void -get_single_char P1C(char *, s) -{ - s[0]='\''; - if (yytext[1] == '\\' || yytext[1] == '\'') { - s[1] = '\\'; - s[2] = yytext[1]; - s[3] = '\''; - s[4] = 0; - } else { - s[1] = yytext[1]; - s[2] = '\''; - s[3] = 0; - } -} - -void -get_result_type P1C(char *, s) -{ - strcpy(s, yytext); -} - - -/* Since a syntax error can never be recovered from, we exit here with - bad status. */ - -int -yyerror P1C(string, s) -{ - /* This is so the convert script can delete the output file on error. */ - puts ("@error@"); - fflush (stdout); - fputs (s, stderr); - fprintf (stderr, ": Last token = %d (%c), ", last_tok, last_tok); - fprintf (stderr, "error buffer = `%s',\n\t", yytext); - fprintf (stderr, "last id = `%s' (", last_id); - ii = search_table (last_id); - if (ii == -1) - fputs ("not in symbol table", stderr); - else - switch (sym_table[ii].typ) - { - case undef_id_tok: - fputs ("undefined", stderr); - break; - case var_id_tok: - fputs ("variable", stderr); - break; - case const_id_tok: - fputs ("constant", stderr); - break; - case type_id_tok: - fputs ("type", stderr); - break; - case proc_id_tok: - fputs ("parameterless procedure", stderr); - break; - case proc_param_tok: - fputs ("procedure with parameters", stderr); - break; - case fun_id_tok: - fputs ("parameterless function", stderr); - break; - case fun_param_tok: - fputs ("function with parameters", stderr); - break; - default: - fputs ("unknown!", stderr); - break; - } - fputs (").\n", stderr); - exit (1); - - /* Avoid silly warnings. */ - return 0; -} diff --git a/Build/source/texk/web2c/web2c/web2c.y b/Build/source/texk/web2c/web2c/web2c.y deleted file mode 100644 index 1a1e04df7da..00000000000 --- a/Build/source/texk/web2c/web2c/web2c.y +++ /dev/null @@ -1,1405 +0,0 @@ -/* web2c.y -- parse some of Pascal, and output C, sort of. - - This grammar has one shift/reduce conflict, from the - if-then[-else] rules, which is unresolvable. */ - -/* The order of some of the tokens here is significant. See the rules - for - and + in web2c.l. */ -%token array_tok begin_tok case_tok const_tok do_tok downto_tok else_tok - end_tok file_tok for_tok function_tok goto_tok if_tok label_tok - of_tok procedure_tok program_tok record_tok repeat_tok then_tok - to_tok type_tok until_tok var_tok while_tok - others_tok r_num_tok i_num_tok string_literal_tok single_char_tok - assign_tok two_dots_tok undef_id_tok var_id_tok - proc_id_tok proc_param_tok fun_id_tok fun_param_tok const_id_tok - type_id_tok hhb0_tok hhb1_tok field_id_tok define_tok field_tok - break_tok - -%nonassoc '=' not_eq_tok '<' '>' less_eq_tok great_eq_tok -%left '+' '-' or_tok -%right unary_plus_tok unary_minus_tok -%left '*' '/' div_tok mod_tok and_tok -%right not_tok - -%{ -#include "web2c.h" - -#define YYDEBUG 1 - -#define symbol(x) sym_table[x].id -#define MAX_ARGS 50 - -static char fn_return_type[50], for_stack[300], control_var[50], - relation[3]; -static char arg_type[MAX_ARGS][30]; -static int last_type = -1, ids_typed; -char my_routine[100]; /* Name of routine being parsed, if any */ -static char array_bounds[80], array_offset[80]; -static int uses_mem, uses_eqtb, lower_sym, upper_sym; -static FILE *orig_out; -boolean doing_statements = false; -static boolean var_formals = false; -static int param_id_list[MAX_ARGS], ids_paramed=0; - -extern char conditional[], temp[], *std_header; -extern int tex, mf, strict_for; -extern FILE *coerce; -extern char coerce_name[]; -extern string program_name; -extern boolean debug; - -static long my_labs P1H(long); -static void compute_array_bounds P1H(void); -static void fixup_var_list P1H(void); -static void do_proc_args P1H(void); -static void gen_function_head P1H(void); -static boolean doreturn P1H(string); -%} - -%start PROGRAM - -%% -PROGRAM: - DEFS - PROGRAM_HEAD - { - printf ("#define %s\n", uppercasify (program_name)); - block_level++; - printf ("#include \"%s\"\n", std_header); - } - LABEL_DEC_PART CONST_DEC_PART TYPE_DEC_PART - VAR_DEC_PART - { printf ("\n#include \"%s\"\n", coerce_name); } - P_F_DEC_PART - BODY - { YYACCEPT; } - ; - -/* The @define statements we use to populate the symbol table. */ -DEFS: - /* empty */ - | DEFS DEF - ; -DEF: - define_tok field_tok undef_id_tok ';' - { - ii = add_to_table (last_id); - sym_table[ii].typ = field_id_tok; - } - | define_tok function_tok undef_id_tok ';' - { - ii = add_to_table (last_id); - sym_table[ii].typ = fun_id_tok; - } - | define_tok const_tok undef_id_tok ';' - { - ii = add_to_table (last_id); - sym_table[ii].typ = const_id_tok; - } - | define_tok function_tok undef_id_tok '(' ')' ';' - { - ii = add_to_table (last_id); - sym_table[ii].typ = fun_param_tok; - } - | define_tok procedure_tok undef_id_tok ';' - { - ii = add_to_table (last_id); - sym_table[ii].typ = proc_id_tok; - } - | define_tok procedure_tok undef_id_tok '(' ')' ';' - { - ii = add_to_table (last_id); - sym_table[ii].typ = proc_param_tok; - } - | define_tok type_tok undef_id_tok ';' - { - ii = add_to_table (last_id); - sym_table[ii].typ = type_id_tok; - } - | define_tok type_tok undef_id_tok '=' SUBRANGE_TYPE ';' - { - ii = add_to_table (last_id); - sym_table[ii].typ = type_id_tok; - sym_table[ii].val = lower_bound; - sym_table[ii].val_sym = lower_sym; - sym_table[ii].upper = upper_bound; - sym_table[ii].upper_sym = upper_sym; - } - | define_tok var_tok undef_id_tok ';' - { - ii = add_to_table (last_id); - sym_table[ii].typ = var_id_tok; - } - ; - -/* program statement. Ignore any files. */ -PROGRAM_HEAD: - program_tok undef_id_tok PROGRAM_FILE_PART ';' - ; - -PROGRAM_FILE_PART: - '(' PROGRAM_FILE_LIST ')' - | /* empty */ - ; - -PROGRAM_FILE_LIST: - PROGRAM_FILE - | PROGRAM_FILE_LIST ',' PROGRAM_FILE - ; - -PROGRAM_FILE: - const_id_tok /* input and output are constants */ - | undef_id_tok - ; - -BLOCK: - { if (block_level > 0) my_output("{\n "); - indent++; block_level++; - } - LABEL_DEC_PART - CONST_DEC_PART TYPE_DEC_PART - { if (block_level == 2) { - if (strcmp(fn_return_type, "void")) { - my_output("register"); - my_output(fn_return_type); - my_output("Result;"); - } - if (tex) { - sprintf(safe_string, "%s_regmem", my_routine); - my_output(safe_string); - new_line(); - } - } - } - VAR_DEC_PART - { doing_statements = true; } - STAT_PART - { - if (block_level == 2) { - if (strcmp(fn_return_type,"void")) { - my_output("return Result"); - semicolon(); - } - if (tex) { - if (uses_mem && uses_eqtb) - fprintf(coerce, - "#define %s_regmem register memoryword *mem=zmem, *eqtb=zeqtb;\n", - my_routine); - else if (uses_mem) - fprintf(coerce, "#define %s_regmem register memoryword *mem=zmem;\n", - my_routine); - else if (uses_eqtb) - fprintf(coerce, "#define %s_regmem register memoryword *eqtb=zeqtb;\n", - my_routine); - else - fprintf(coerce, "#define %s_regmem\n", my_routine); - } - my_routine[0] = '\0'; - } - indent--; block_level--; - my_output("}"); new_line(); - doing_statements = false; - } - ; - -LABEL_DEC_PART: /* empty */ - | label_tok - { my_output("/*"); } - LABEL_LIST ';' - { my_output("*/"); } - ; - -LABEL_LIST: LABEL - | LABEL_LIST ',' LABEL - ; - -LABEL: - i_num_tok { my_output(temp); } - ; - -CONST_DEC_PART: - /* empty */ - | const_tok CONST_DEC_LIST - { new_line(); } - ; - -CONST_DEC_LIST: - CONST_DEC - | CONST_DEC_LIST CONST_DEC - ; - -CONST_DEC: - { /* `#define' must be in column 1 for pcc. */ - unsigned save = indent; - new_line (); - indent = 0; - my_output ("#define"); - indent = save; - } - undef_id_tok - { ii = add_to_table (last_id); - sym_table[ii].typ = const_id_tok; - my_output (last_id); - } - '=' { my_output ("("); } - CONSTANT_EXPRESS { my_output (")"); } - ';' { sym_table[ii].val = last_i_num; new_line(); } - ; - -CONSTANT: - i_num_tok - { - sscanf (temp, "%ld", &last_i_num); - if (my_labs ((long) last_i_num) > 32767) - strcat (temp, "L"); - my_output (temp); - $$ = ex_32; - } - | r_num_tok { my_output(temp); $$ = ex_real; } - | STRING { $$ = 0; } - | CONSTANT_ID { $$ = ex_32; } - ; - -CONSTANT_EXPRESS: - UNARY_OP CONSTANT_EXPRESS %prec '*' - { $$ = $2; } - | CONSTANT_EXPRESS '+' { my_output ("+"); } - CONSTANT_EXPRESS { $$ = max ($1, $4); } - | CONSTANT_EXPRESS '-' { my_output ("-"); } - CONSTANT_EXPRESS { $$ = max ($1, $4); } - | CONSTANT_EXPRESS '*' { my_output ("*"); } - CONSTANT_EXPRESS { $$ = max ($1, $4); } - | CONSTANT_EXPRESS div_tok { my_output ("/"); } - CONSTANT_EXPRESS { $$ = max ($1, $4); } - | CONSTANT_EXPRESS '=' { my_output ("=="); } - CONSTANT_EXPRESS { $$ = max ($1, $4); } - | CONSTANT_EXPRESS not_eq_tok { my_output ("!="); } - CONSTANT_EXPRESS { $$ = max ($1, $4); } - | CONSTANT_EXPRESS mod_tok { my_output ("%"); } - CONSTANT_EXPRESS { $$ = max ($1, $4); } - | CONSTANT_EXPRESS '<' { my_output ("<"); } - CONSTANT_EXPRESS { $$ = max ($1, $4); } - | CONSTANT_EXPRESS '>' { my_output (">"); } - CONSTANT_EXPRESS { $$ = max ($1, $4); } - | CONSTANT_EXPRESS less_eq_tok { my_output ("<="); } - CONSTANT_EXPRESS { $$ = max ($1, $4); } - | CONSTANT_EXPRESS great_eq_tok { my_output (">="); } - CONSTANT_EXPRESS { $$ = max ($1, $4); } - | CONSTANT_EXPRESS and_tok { my_output ("&&"); } - CONSTANT_EXPRESS { $$ = max ($1, $4); } - | CONSTANT_EXPRESS or_tok { my_output ("||"); } - CONSTANT_EXPRESS { $$ = max ($1, $4); } - | CONSTANT_EXPRESS '/' { my_output ("/ ((double)"); } - CONSTANT_EXPRESS { $$ = max ($1, $4); my_output (")"); } - | CONST_FACTOR { $$ = $1; } - ; - -CONST_FACTOR: - '(' - { my_output ("("); } - CONSTANT_EXPRESS ')' - { my_output (")"); $$ = $1; } - | CONSTANT - ; - -STRING: - string_literal_tok - { - char s[132]; - get_string_literal(s); - my_output (s); - } - | single_char_tok - { - char s[5]; - get_single_char(s); - my_output (s); - } - ; - -CONSTANT_ID: - const_id_tok { my_output (last_id); } - ; - -TYPE_DEC_PART: /* empty */ - | type_tok TYPE_DEF_LIST - ; - -TYPE_DEF_LIST: TYPE_DEF - | TYPE_DEF_LIST TYPE_DEF - ; - -TYPE_DEF: - { my_output ("typedef"); } - undef_id_tok - { - ii = add_to_table(last_id); - sym_table[ii].typ = type_id_tok; - strcpy(safe_string, last_id); - last_type = ii; - } - '=' - { - array_bounds[0] = 0; - array_offset[0] = 0; - } - TYPE ';' - { - if (*array_offset) { - yyerror ("Cannot typedef arrays with offsets"); - } - my_output (safe_string); - my_output (array_bounds); - semicolon (); - last_type = -1; - } - ; - -TYPE: - SIMPLE_TYPE - | STRUCTURED_TYPE - ; - -SIMPLE_TYPE: - SUBRANGE_TYPE - { - if (last_type >= 0) - { - sym_table[ii].val = lower_bound; - sym_table[ii].val_sym = lower_sym; - sym_table[ii].upper = upper_bound; - sym_table[ii].upper_sym = upper_sym; - ii= -1; - } - - /* If the bounds on an integral type are known at - translation time, select the smallest ANSI C type which - can represent it. We avoid using unsigned char and - unsigned short where possible, as ANSI compilers - (typically) convert them to int, while traditional - compilers convert them to unsigned int. We also avoid - schar if possible, since it also is different on - different compilers (see config.h). */ - if (lower_sym == -1 && upper_sym == -1) { - if (0 <= lower_bound && upper_bound <= SCHAR_MAX) - my_output ("char"); - else if (SCHAR_MIN <= lower_bound && upper_bound <= SCHAR_MAX) - my_output ("schar"); - else if (0 <= lower_bound && upper_bound <= UCHAR_MAX) - my_output ("unsigned char"); - else if (SHRT_MIN <= lower_bound && upper_bound <= SHRT_MAX) - my_output ("short"); - else if (0 <= lower_bound && upper_bound <= USHRT_MAX) - my_output ("unsigned short"); - else - my_output ("integer"); - } else { - my_output ("integer"); - } - } - | TYPE_ID - ; - -SUBRANGE_TYPE: - SUBRANGE_CONSTANT two_dots_tok SUBRANGE_CONSTANT - ; - -POSSIBLE_PLUS: - /* empty */ - | unary_plus_tok - ; - -SUBRANGE_CONSTANT: - POSSIBLE_PLUS i_num_tok - { - lower_bound = upper_bound; - lower_sym = upper_sym; - sscanf (temp, "%ld", &upper_bound); - upper_sym = -1; /* no sym table entry */ - } - | const_id_tok - { - lower_bound = upper_bound; - lower_sym = upper_sym; - upper_bound = sym_table[l_s].val; - upper_sym = l_s; - } - | var_id_tok - { /* We've changed some constants into dynamic variables. - To avoid changing all the subrange decls, just use integer. - This does not work for arrays, for which we check later. */ - lower_bound = upper_bound; - lower_sym = upper_sym; - upper_bound = 0; - upper_sym = 0; /* Translate to integer. */ - } - | undef_id_tok - { /* Same as var_id_tok, to avoid changing type definitions. - Should keep track of the variables we use in this way - and make sure they're all eventually defined. */ - lower_bound = upper_bound; - lower_sym = upper_sym; - upper_bound = 0; - upper_sym = 0; - } - ; - -TYPE_ID: - type_id_tok - { - if (last_type >= 0) { - sym_table[last_type].var_not_needed = sym_table[l_s].var_not_needed; - sym_table[last_type].upper = sym_table[l_s].upper; - sym_table[last_type].upper_sym = sym_table[l_s].upper_sym; - sym_table[last_type].val = sym_table[l_s].val; - sym_table[last_type].val_sym = sym_table[l_s].val_sym; - } - my_output (last_id); - } - ; - -STRUCTURED_TYPE: - ARRAY_TYPE - { if (last_type >= 0) - sym_table[last_type].var_not_needed = true; - } - | RECORD_TYPE - | FILE_TYPE - { if (last_type >= 0) - sym_table[last_type].var_not_needed = true; - } - | POINTER_TYPE - { if (last_type >= 0) - sym_table[last_type].var_not_needed = true; - } - ; - -POINTER_TYPE: - '^' type_id_tok - { - if (last_type >= 0) { - sym_table[last_type].var_not_needed = sym_table[l_s].var_not_needed; - sym_table[last_type].upper = sym_table[l_s].upper; - sym_table[last_type].upper_sym = sym_table[l_s].upper_sym; - sym_table[last_type].val = sym_table[l_s].val; - sym_table[last_type].val_sym = sym_table[l_s].val_sym; - } - my_output (last_id); - my_output ("*"); - } - ; - -ARRAY_TYPE: - array_tok '[' INDEX_TYPE ']' of_tok COMPONENT_TYPE - | array_tok '[' INDEX_TYPE ',' INDEX_TYPE ']' of_tok COMPONENT_TYPE - ; - -INDEX_TYPE: - SUBRANGE_TYPE - { compute_array_bounds(); } - | type_id_tok - { - lower_bound = sym_table[l_s].val; - lower_sym = sym_table[l_s].val_sym; - upper_bound = sym_table[l_s].upper; - upper_sym = sym_table[l_s].upper_sym; - compute_array_bounds(); - } - ; - -COMPONENT_TYPE: TYPE ; - -RECORD_TYPE: - record_tok - { my_output ("struct"); my_output ("{"); indent++; } - FIELD_LIST end_tok - { indent--; my_output ("}"); semicolon(); } - ; - -FIELD_LIST: RECORD_SECTION - | FIELD_LIST ';' RECORD_SECTION - ; - -RECORD_SECTION: - { field_list[0] = 0; } - FIELD_ID_LIST ':' - { - /*array_bounds[0] = 0; - array_offset[0] = 0;*/ - } - TYPE - { int i=0, j; char ltemp[80]; - while(field_list[i++] == '!') { - j = 0; - while (field_list[i]) - ltemp[j++] = field_list[i++]; - i++; - if (field_list[i] == '!') - ltemp[j++] = ','; - ltemp[j] = 0; - my_output (ltemp); - } - semicolon(); - } - | /* empty */ - ; - -FIELD_ID_LIST: FIELD_ID - | FIELD_ID_LIST ',' FIELD_ID - ; - -FIELD_ID: undef_id_tok - { int i=0, j=0; - while (field_list[i] == '!') - while(field_list[i++]); - ii = add_to_table(last_id); - sym_table[ii].typ = field_id_tok; - field_list[i++] = '!'; - while (last_id[j]) - field_list[i++] = last_id[j++]; - field_list[i++] = 0; - field_list[i++] = 0; - } - | field_id_tok - { int i=0, j=0; - while (field_list[i] == '!') - while(field_list[i++]); - field_list[i++] = '!'; - while (last_id[j]) - field_list[i++] = last_id[j++]; - field_list[i++] = 0; - field_list[i++] = 0; - } - ; - -FILE_TYPE: - file_tok of_tok - { my_output ("text /* of "); } - TYPE - { my_output ("*/"); } - ; - -VAR_DEC_PART: - /* empty */ - | var_tok VAR_DEC_LIST - ; - -VAR_DEC_LIST: - VAR_DEC - | VAR_DEC_LIST VAR_DEC - ; - -VAR_DEC: - { - var_list[0] = 0; - array_bounds[0] = 0; - array_offset[0] = 0; - var_formals = false; - ids_paramed = 0; - } - VAR_ID_DEC_LIST ':' - { - array_bounds[0] = 0; - array_offset[0] = 0; - } - TYPE ';' - { fixup_var_list(); } - ; - -VAR_ID_DEC_LIST: VAR_ID - | VAR_ID_DEC_LIST ',' VAR_ID - ; - -VAR_ID: undef_id_tok - { int i=0, j=0; - ii = add_to_table(last_id); - sym_table[ii].typ = var_id_tok; - sym_table[ii].var_formal = var_formals; - param_id_list[ids_paramed++] = ii; - while (var_list[i] == '!') - while(var_list[i++]); - var_list[i++] = '!'; - while (last_id[j]) - var_list[i++] = last_id[j++]; - var_list[i++] = 0; - var_list[i++] = 0; - } - | var_id_tok - { int i=0, j=0; - ii = add_to_table(last_id); - sym_table[ii].typ = var_id_tok; - sym_table[ii].var_formal = var_formals; - param_id_list[ids_paramed++] = ii; - while (var_list[i] == '!') - while (var_list[i++]); - var_list[i++] = '!'; - while (last_id[j]) - var_list[i++] = last_id[j++]; - var_list[i++] = 0; - var_list[i++] = 0; - } - | field_id_tok - { int i=0, j=0; - ii = add_to_table(last_id); - sym_table[ii].typ = var_id_tok; - sym_table[ii].var_formal = var_formals; - param_id_list[ids_paramed++] = ii; - while (var_list[i] == '!') - while(var_list[i++]); - var_list[i++] = '!'; - while (last_id[j]) - var_list[i++] = last_id[j++]; - var_list[i++] = 0; - var_list[i++] = 0; - } - ; - -BODY: - /* empty */ - | begin_tok - { my_output ("void mainbody() {"); - indent++; - new_line (); - } - STAT_LIST end_tok '.' - { indent--; - my_output ("}"); - new_line (); - } - ; - -P_F_DEC_PART: - P_F_DEC - | P_F_DEC_PART P_F_DEC - ; - -P_F_DEC: PROCEDURE_DEC ';' - { new_line(); remove_locals(); } - | FUNCTION_DEC ';' - { new_line(); remove_locals(); } - ; - -PROCEDURE_DEC: - PROCEDURE_HEAD BLOCK ; - -PROCEDURE_HEAD: - procedure_tok undef_id_tok - { ii = add_to_table(last_id); - if (debug) - fprintf(stderr, "%3d Procedure %s\n", pf_count++, last_id); - sym_table[ii].typ = proc_id_tok; - strcpy(my_routine, last_id); - uses_eqtb = uses_mem = false; - my_output ("void"); - new_line (); - orig_out = out; - out = 0; - } - PARAM ';' - { strcpy(fn_return_type, "void"); - do_proc_args(); - gen_function_head(); } - | procedure_tok DECLARED_PROC - { ii = l_s; - if (debug) - fprintf(stderr, "%3d Procedure %s\n", pf_count++, last_id); - strcpy(my_routine, last_id); - my_output ("void"); - new_line (); - } - PARAM ';' - { strcpy(fn_return_type, "void"); - do_proc_args(); - gen_function_head(); - } - ; - -PARAM: - /* empty */ - { - strcpy (z_id, last_id); - mark (); - ids_paramed = 0; - } - | '(' - { sprintf (z_id, "z%s", last_id); - ids_paramed = 0; - if (sym_table[ii].typ == proc_id_tok) - sym_table[ii].typ = proc_param_tok; - else if (sym_table[ii].typ == fun_id_tok) - sym_table[ii].typ = fun_param_tok; - mark(); - } - FORM_PAR_SEC_L ')' - ; - -FORM_PAR_SEC_L: FORM_PAR_SEC - | FORM_PAR_SEC_L ';' FORM_PAR_SEC - ; - -FORM_PAR_SEC1: - { ids_typed = ids_paramed; } - VAR_ID_DEC_LIST ':' type_id_tok - { int i, need_var; - i = search_table(last_id); - need_var = !sym_table[i].var_not_needed; - for (i=ids_typed; i' { my_output (">"); } EXPRESS - { $$ = max ($1, $4); } - | EXPRESS less_eq_tok { my_output ("<="); } EXPRESS - { $$ = max ($1, $4); } - | EXPRESS great_eq_tok { my_output (">="); } EXPRESS - { $$ = max ($1, $4); } - | EXPRESS and_tok { my_output ("&&"); } EXPRESS - { $$ = max ($1, $4); } - | EXPRESS or_tok { my_output ("||"); } EXPRESS - { $$ = max ($1, $4); } - | EXPRESS '/' - { my_output ("/ ((double)"); } - EXPRESS - { $$ = max ($1, $4); my_output (")"); } - | FACTOR - { $$ = $1; } - ; - -UNARY_OP: - unary_plus_tok - | unary_minus_tok - { my_output ("- (integer)"); } - | not_tok - { my_output ("!"); } - ; - -FACTOR: - '(' - { my_output ("("); } - EXPRESS ')' - { my_output (")"); $$ = $1; } - | VARIABLE - | CONSTANT - | fun_id_tok - { my_output (last_id); my_output ("()"); } - | fun_param_tok - { my_output (last_id); } - PARAM_LIST - ; - -PARAM_LIST: - '(' { my_output ("("); } - ACTUAL_PARAM_L ')' { my_output (")"); } - ; - -ACTUAL_PARAM_L: - ACTUAL_PARAM - | ACTUAL_PARAM_L ',' { my_output (","); } - ACTUAL_PARAM - ; - -ACTUAL_PARAM: - EXPRESS WIDTH_FIELD - | type_id_tok /* So we can pass type names to C macros. */ - { my_output (last_id); } - ; - -WIDTH_FIELD: - ':' i_num_tok - | /* empty */ - ; - -PROC_STAT: proc_id_tok - { my_output (last_id); my_output ("()"); } - | undef_id_tok - { my_output (last_id); - ii = add_to_table(last_id); - sym_table[ii].typ = proc_id_tok; - my_output ("()"); - } - | proc_param_tok - { my_output (last_id); } - PARAM_LIST - ; - -GO_TO_STAT: goto_tok i_num_tok - {if (doreturn(temp)) { - if (strcmp(fn_return_type,"void")) - my_output ("return Result"); - else - my_output ("return"); - } else { - sprintf(safe_string, "goto lab%s", - temp); - my_output (safe_string); - } - } - ; - -EMPTY_STAT: /* empty */ - ; - -STRUCT_STAT: COMPOUND_STAT - | CONDIT_STAT - | REPETIT_STAT - ; - -CONDIT_STAT: IF_STATEMENT - | CASE_STATEMENT - ; - -IF_STATEMENT: BEGIN_IF_STAT - | BEGIN_IF_STAT ELSE_STAT - ; - -BEGIN_IF_STAT: if_tok - { my_output ("if"); my_output ("("); } - EXPRESS - { my_output (")"); new_line (); } - then_tok STATEMENT - ; - -ELSE_STAT: else_tok - { my_output ("else"); } - STATEMENT - ; - -CASE_STATEMENT: case_tok - { my_output ("switch"); my_output ("("); } - EXPRESS of_tok - { my_output (")"); new_line(); - my_output ("{"); indent++; - } - CASE_EL_LIST END_CASE - { indent--; my_output ("}"); new_line(); } - ; - -CASE_EL_LIST: CASE_ELEMENT - | CASE_EL_LIST ';' CASE_ELEMENT - ; - -CASE_ELEMENT: CASE_LAB_LIST ':' UNLAB_STAT - { my_output ("break"); semicolon(); } - ; - -CASE_LAB_LIST: CASE_LAB - | CASE_LAB_LIST ',' CASE_LAB - ; - -CASE_LAB: i_num_tok - { my_output ("case"); - my_output (temp); - my_output (":"); new_line(); - } - | others_tok - { my_output ("default:"); new_line(); } - ; - -END_CASE: end_tok - | ';' end_tok - ; - -REPETIT_STAT: WHILE_STATEMENT - | REP_STATEMENT - | FOR_STATEMENT - ; - -WHILE_STATEMENT: while_tok - { my_output ("while"); - my_output ("("); - } - EXPRESS - { my_output (")"); } - do_tok STATEMENT - ; - -REP_STATEMENT: repeat_tok - { my_output ("do"); my_output ("{"); indent++; } - STAT_LIST until_tok - { indent--; my_output ("}"); - my_output ("while"); my_output ("( ! ("); - } - EXPRESS - { my_output (") )"); } - ; - -FOR_STATEMENT: for_tok - { - my_output ("{"); - my_output ("register"); - my_output ("integer"); - if (strict_for) - my_output ("for_begin,"); - my_output ("for_end;"); - } - CONTROL_VAR assign_tok - { if (strict_for) - my_output ("for_begin"); - else - my_output (control_var); - my_output ("="); } - FOR_LIST do_tok - { my_output ("; if ("); - if (strict_for) my_output ("for_begin"); - else my_output (control_var); - my_output (relation); - my_output ("for_end)"); - if (strict_for) { - my_output ("{"); - my_output (control_var); - my_output ("="); - my_output ("for_begin"); - semicolon(); - } - my_output ("do"); - indent++; - new_line(); - } - STATEMENT - { - char *top = strrchr (for_stack, '#'); - indent--; - new_line(); - my_output ("while"); - my_output ("("); - my_output (top+1); - my_output (")"); - my_output (";"); - my_output ("}"); - if (strict_for) - my_output ("}"); - *top=0; - new_line(); - } - ; - -CONTROL_VAR: var_id_tok - { strcpy(control_var, last_id); } - ; - -FOR_LIST: EXPRESS - { my_output (";"); } - to_tok - { - strcpy(relation, "<="); - my_output ("for_end"); - my_output ("="); } - EXPRESS - { - sprintf(for_stack + strlen(for_stack), - "#%s++ < for_end", control_var); - } - | EXPRESS - { my_output (";"); } - downto_tok - { - strcpy(relation, ">="); - my_output ("for_end"); - my_output ("="); } - EXPRESS - { - sprintf(for_stack + strlen(for_stack), - "#%s-- > for_end", control_var); - } - ; -%% - -static void -compute_array_bounds P1H(void) -{ - long lb; - char tmp[200]; - - if (lower_sym == 0 || upper_sym == 0) { - yyerror ("Cannot handle variable subrange in array decl"); - } - else if (lower_sym == -1) { /* lower is a constant */ - lb = lower_bound - 1; - if (lb==0) lb = -1; /* Treat lower_bound==1 as if lower_bound==0 */ - if (upper_sym == -1) /* both constants */ - sprintf(tmp, "[%ld]", upper_bound - lb); - else { /* upper a symbol, lower constant */ - if (lb < 0) - sprintf(tmp, "[%s + %ld]", - symbol(upper_sym), (-lb)); - else - sprintf(tmp, "[%s - %ld]", - symbol(upper_sym), lb); - } - if (lower_bound < 0 || lower_bound > 1) { - if (*array_bounds) { - yyerror ("Cannot handle offset in second dimension"); - } - if (lower_bound < 0) { - sprintf(array_offset, "+%ld", -lower_bound); - } else { - sprintf(array_offset, "-%ld", lower_bound); - } - } - strcat(array_bounds, tmp); - } else { /* lower is a symbol */ - if (upper_sym != -1) /* both are symbols */ - sprintf(tmp, "[%s - %s + 1]", symbol(upper_sym), - symbol(lower_sym)); - else { /* upper constant, lower symbol */ - sprintf(tmp, "[%ld - %s]", upper_bound + 1, - symbol(lower_sym)); - } - if (*array_bounds) { - yyerror ("Cannot handle symbolic offset in second dimension"); - } - sprintf(array_offset, "- (int)(%s)", symbol(lower_sym)); - strcat(array_bounds, tmp); - } -} - - -/* Kludge around negative lower array bounds. */ - -static void -fixup_var_list () -{ - int i, j; - char output_string[100], real_symbol[100]; - - for (i = 0; var_list[i++] == '!'; ) - { - for (j = 0; (real_symbol[j++] = var_list[i++]); ) - ; - if (*array_offset) - { - fprintf (out, "\n#define %s (%s %s)\n ", - real_symbol, next_temp, array_offset); - strcpy (real_symbol, next_temp); - /* Add the temp to the symbol table, so that change files can - use it later on if necessary. */ - j = add_to_table (next_temp); - sym_table[j].typ = var_id_tok; - find_next_temp (); - } - sprintf (output_string, "%s%s%c", real_symbol, array_bounds, - var_list[i] == '!' ? ',' : ' '); - my_output (output_string); - } - semicolon (); -} - - -/* If we're not processing TeX, we return false. Otherwise, - return true if the label is "10" and we're not in one of four TeX - routines where the line labeled "10" isn't the end of the routine. - Otherwise, return 0. */ - -static boolean -doreturn P1C(string, label) -{ - return - tex - && STREQ (label, "10") - && !STREQ (my_routine, "macrocall") - && !STREQ (my_routine, "hpack") - && !STREQ (my_routine, "vpackage") - && !STREQ (my_routine, "trybreak"); -} - - -/* Return the absolute value of a long. */ -static long -my_labs P1C(long, x) -{ - if (x < 0L) return(-x); - return(x); -} - - -/* Output current function declaration to coerce file. */ - -static void -do_proc_args P1H(void) -{ - /* If we want ANSI code and one of the parameters is a var - parameter, then use the #define to add the &. We do this by - adding a 'z' at the front of the name. gen_function_head will do - the real work. */ - int i; - int var = 0; - for (i = 0; i < ids_paramed; ++i) - var += sym_table[param_id_list[i]].var_formal; - if (var) { - for (i = strlen (z_id); i >= 0; --i) - z_id[i+1] = z_id[i]; - z_id[0] = 'z'; - } - - /* We can't use our P?H macros here, since there might be an arbitrary - number of function arguments. */ - fprintf (coerce, "%s %s AA((", fn_return_type, z_id); - if (ids_paramed == 0) fprintf (coerce, "void"); - for (i = 0; i < ids_paramed; i++) { - if (i > 0) - putc (',', coerce); - fprintf (coerce, "%s %s", arg_type[i], symbol (param_id_list[i])); - } - fprintf (coerce, "));\n"); -} - -static void -gen_function_head P1H(void) -{ - int i; - - if (strcmp(my_routine, z_id)) { - fprintf(coerce, "#define %s(", my_routine); - for (i=0; i 0) - fprintf(coerce, ", %s", symbol(param_id_list[i])); - else - fprintf(coerce, "%s", symbol(param_id_list[i])); - } - fprintf(coerce, ") %s(", z_id); - for (i=0; i 0) - fputs(", ", coerce); - fprintf(coerce, "(%s) ", arg_type[i]); - fprintf(coerce, "%s(%s)", - sym_table[param_id_list[i]].var_formal?"&":"", - symbol(param_id_list[i])); - } - fprintf(coerce, ")\n"); - } - out = orig_out; - new_line (); - /* We can't use our P?C macros here, since there might be an arbitrary - number of function arguments. We have to include the #ifdef in the - generated code, or we'd generate different code with and without - prototypes, which might cause splitup to create different numbers - of files in each case. */ - fputs ("#ifdef HAVE_PROTOTYPES\n", out); - my_output (z_id); - my_output ("("); - if (ids_paramed == 0) my_output ("void"); - for (i=0; i 0) my_output (","); - my_output (arg_type[i]); - my_output (symbol (param_id_list[i])); - } - my_output (")"); - new_line (); - fputs ("#else\n", out); - my_output (z_id); - my_output ("("); - for (i=0; i 0) my_output (","); - my_output (symbol (param_id_list[i])); - } - my_output (")"); - new_line (); - indent++; - for (i=0; i /* INFRINGES ON USER NAME SPACE */ -# define YYSIZE_T size_t -# endif -# define YYSTACK_ALLOC malloc -# define YYSTACK_FREE free -# endif -#endif /* ! defined (yyoverflow) || YYERROR_VERBOSE */ - - -#if (! defined (yyoverflow) \ - && (! defined (__cplusplus) \ - || (YYSTYPE_IS_TRIVIAL))) - -/* A type that is properly aligned for any stack member. */ -union yyalloc -{ - short yyss; - YYSTYPE yyvs; - }; - -/* The size of the maximum gap between one aligned stack and the next. */ -# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1) - -/* The size of an array large to enough to hold all stacks, each with - N elements. */ -# define YYSTACK_BYTES(N) \ - ((N) * (sizeof (short) + sizeof (YYSTYPE)) \ - + YYSTACK_GAP_MAXIMUM) - -/* Copy COUNT objects from FROM to TO. The source and destination do - not overlap. */ -# ifndef YYCOPY -# if 1 < __GNUC__ -# define YYCOPY(To, From, Count) \ - __builtin_memcpy (To, From, (Count) * sizeof (*(From))) -# else -# define YYCOPY(To, From, Count) \ - do \ - { \ - register YYSIZE_T yyi; \ - for (yyi = 0; yyi < (Count); yyi++) \ - (To)[yyi] = (From)[yyi]; \ - } \ - while (0) -# endif -# endif - -/* Relocate STACK from its old location to the new one. The - local variables YYSIZE and YYSTACKSIZE give the old and new number of - elements in the stack, and YYPTR gives the new location of the - stack. Advance YYPTR to a properly aligned location for the next - stack. */ -# define YYSTACK_RELOCATE(Stack) \ - do \ - { \ - YYSIZE_T yynewbytes; \ - YYCOPY (&yyptr->Stack, Stack, yysize); \ - Stack = &yyptr->Stack; \ - yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ - yyptr += yynewbytes / sizeof (*yyptr); \ - } \ - while (0) - -#endif - -#if defined (__STDC__) || defined (__cplusplus) - typedef signed char yysigned_char; -#else - typedef short yysigned_char; -#endif - -/* YYFINAL -- State number of the termination state. */ -#define YYFINAL 3 -/* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 608 - -/* YYNTOKENS -- Number of terminals. */ -#define YYNTOKENS 75 -/* YYNNTS -- Number of nonterminals. */ -#define YYNNTS 187 -/* YYNRULES -- Number of rules. */ -#define YYNRULES 307 -/* YYNRULES -- Number of states. */ -#define YYNSTATES 481 - -/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ -#define YYUNDEFTOK 2 -#define YYMAXUTOK 313 - -#define YYTRANSLATE(YYX) \ - ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) - -/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */ -static const unsigned char yytranslate[] = -{ - 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 67, 68, 60, 55, 69, 56, 74, 61, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 73, 66, - 50, 49, 51, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 71, 2, 72, 70, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 1, 2, 3, 4, - 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, - 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, - 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, - 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, - 45, 46, 47, 48, 52, 53, 54, 57, 58, 59, - 62, 63, 64, 65 -}; - -#if YYDEBUG -/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in - YYRHS. */ -static const unsigned short yyprhs[] = -{ - 0, 0, 3, 4, 5, 16, 17, 20, 25, 30, - 35, 42, 47, 54, 59, 66, 71, 76, 80, 81, - 83, 87, 89, 91, 92, 93, 94, 103, 104, 105, - 110, 112, 116, 118, 119, 122, 124, 127, 128, 129, - 130, 131, 140, 142, 144, 146, 148, 151, 152, 157, - 158, 163, 164, 169, 170, 175, 176, 181, 182, 187, - 188, 193, 194, 199, 200, 205, 206, 211, 212, 217, - 218, 223, 224, 229, 230, 235, 237, 238, 243, 245, - 247, 249, 251, 252, 255, 257, 260, 261, 262, 263, - 271, 273, 275, 277, 279, 283, 284, 286, 289, 291, - 293, 295, 297, 299, 301, 303, 305, 308, 315, 324, - 326, 328, 330, 331, 336, 338, 342, 343, 344, 350, - 351, 353, 357, 359, 361, 362, 367, 368, 371, 373, - 376, 377, 378, 385, 387, 391, 393, 395, 397, 398, - 399, 405, 407, 410, 413, 416, 419, 420, 426, 427, - 433, 434, 435, 440, 442, 446, 447, 452, 453, 456, - 457, 461, 463, 465, 468, 469, 470, 471, 481, 482, - 483, 484, 494, 496, 498, 500, 504, 505, 510, 512, - 516, 518, 522, 524, 526, 528, 530, 532, 534, 536, - 538, 539, 544, 545, 550, 551, 555, 557, 559, 561, - 563, 566, 567, 572, 575, 578, 581, 583, 584, 589, - 592, 593, 598, 599, 604, 605, 610, 611, 616, 617, - 622, 623, 628, 629, 634, 635, 640, 641, 646, 647, - 652, 653, 658, 659, 664, 665, 670, 671, 676, 678, - 680, 682, 684, 685, 690, 692, 694, 696, 697, 701, - 702, 707, 709, 710, 715, 718, 720, 723, 724, 726, - 728, 729, 733, 736, 737, 739, 741, 743, 745, 747, - 749, 752, 753, 754, 761, 762, 766, 767, 768, 776, - 778, 782, 786, 788, 792, 794, 796, 798, 801, 803, - 805, 807, 808, 809, 816, 817, 818, 825, 826, 827, - 828, 838, 840, 841, 842, 848, 849, 850 -}; - -/* YYRHS -- A `-1'-separated list of the rules' RHS. */ -static const short yyrhs[] = -{ - 76, 0, -1, -1, -1, 79, 81, 77, 89, 93, - 120, 147, 78, 156, 154, -1, -1, 79, 80, -1, - 46, 47, 35, 66, -1, 46, 13, 35, 66, -1, - 46, 6, 35, 66, -1, 46, 13, 35, 67, 68, - 66, -1, 46, 18, 35, 66, -1, 46, 18, 35, - 67, 68, 66, -1, 46, 24, 35, 66, -1, 46, - 24, 35, 49, 128, 66, -1, 46, 26, 35, 66, - -1, 19, 35, 82, 66, -1, 67, 83, 68, -1, - -1, 84, -1, 83, 69, 84, -1, 41, -1, 35, - -1, -1, -1, -1, 86, 89, 93, 120, 87, 147, - 88, 181, -1, -1, -1, 16, 90, 91, 66, -1, - 92, -1, 91, 69, 92, -1, 30, -1, -1, 6, - 94, -1, 95, -1, 94, 95, -1, -1, -1, -1, - -1, 96, 35, 97, 49, 98, 101, 99, 66, -1, - 30, -1, 29, -1, 118, -1, 119, -1, 215, 101, - -1, -1, 101, 55, 102, 101, -1, -1, 101, 56, - 103, 101, -1, -1, 101, 60, 104, 101, -1, -1, - 101, 64, 105, 101, -1, -1, 101, 49, 106, 101, - -1, -1, 101, 54, 107, 101, -1, -1, 101, 63, - 108, 101, -1, -1, 101, 50, 109, 101, -1, -1, - 101, 51, 110, 101, -1, -1, 101, 53, 111, 101, - -1, -1, 101, 52, 112, 101, -1, -1, 101, 62, - 113, 101, -1, -1, 101, 57, 114, 101, -1, -1, - 101, 61, 115, 101, -1, 116, -1, -1, 67, 117, - 101, 68, -1, 100, -1, 31, -1, 32, -1, 41, - -1, -1, 24, 121, -1, 122, -1, 121, 122, -1, - -1, -1, -1, 123, 35, 124, 49, 125, 126, 66, - -1, 127, -1, 132, -1, 128, -1, 131, -1, 130, - 34, 130, -1, -1, 59, -1, 129, 30, -1, 41, - -1, 36, -1, 35, -1, 42, -1, 134, -1, 137, - -1, 145, -1, 133, -1, 70, 42, -1, 3, 71, - 135, 72, 17, 136, -1, 3, 71, 135, 69, 135, - 72, 17, 136, -1, 128, -1, 42, -1, 126, -1, - -1, 20, 138, 139, 10, -1, 140, -1, 139, 66, - 140, -1, -1, -1, 141, 143, 73, 142, 126, -1, - -1, 144, -1, 143, 69, 144, -1, 35, -1, 45, - -1, -1, 11, 17, 146, 126, -1, -1, 26, 148, - -1, 149, -1, 148, 149, -1, -1, -1, 150, 152, - 73, 151, 126, 66, -1, 153, -1, 152, 69, 153, - -1, 35, -1, 36, -1, 45, -1, -1, -1, 4, - 155, 184, 10, 74, -1, 157, -1, 156, 157, -1, - 158, 66, -1, 171, 66, -1, 159, 85, -1, -1, - 18, 35, 160, 162, 66, -1, -1, 18, 170, 161, - 162, 66, -1, -1, -1, 67, 163, 164, 68, -1, - 167, -1, 164, 66, 167, -1, -1, 166, 152, 73, - 42, -1, -1, 168, 165, -1, -1, 26, 169, 165, - -1, 37, -1, 38, -1, 172, 85, -1, -1, -1, - -1, 13, 35, 173, 162, 73, 174, 180, 175, 66, - -1, -1, -1, -1, 13, 179, 176, 162, 73, 177, - 180, 178, 66, -1, 39, -1, 40, -1, 126, -1, - 4, 184, 10, -1, -1, 4, 183, 184, 10, -1, - 185, -1, 184, 66, 185, -1, 187, -1, 186, 73, - 187, -1, 30, -1, 188, -1, 229, -1, 189, -1, - 225, -1, 227, -1, 228, -1, 48, -1, -1, 192, - 33, 190, 200, -1, -1, 194, 33, 191, 200, -1, - -1, 36, 193, 195, -1, 36, -1, 39, -1, 40, - -1, 196, -1, 195, 196, -1, -1, 71, 197, 200, - 198, -1, 74, 45, -1, 74, 43, -1, 74, 44, - -1, 72, -1, -1, 69, 199, 200, 72, -1, 215, - 200, -1, -1, 200, 55, 201, 200, -1, -1, 200, - 56, 202, 200, -1, -1, 200, 60, 203, 200, -1, - -1, 200, 64, 204, 200, -1, -1, 200, 49, 205, - 200, -1, -1, 200, 54, 206, 200, -1, -1, 200, - 63, 207, 200, -1, -1, 200, 50, 208, 200, -1, - -1, 200, 51, 209, 200, -1, -1, 200, 53, 210, - 200, -1, -1, 200, 52, 211, 200, -1, -1, 200, - 62, 212, 200, -1, -1, 200, 57, 213, 200, -1, - -1, 200, 61, 214, 200, -1, 216, -1, 59, -1, - 58, -1, 65, -1, -1, 67, 217, 200, 68, -1, - 192, -1, 100, -1, 39, -1, -1, 40, 218, 219, - -1, -1, 67, 220, 221, 68, -1, 223, -1, -1, - 221, 69, 222, 223, -1, 200, 224, -1, 42, -1, - 73, 30, -1, -1, 37, -1, 35, -1, -1, 38, - 226, 219, -1, 14, 30, -1, -1, 182, -1, 230, - -1, 245, -1, 231, -1, 237, -1, 232, -1, 232, - 235, -1, -1, -1, 15, 233, 200, 234, 22, 185, - -1, -1, 9, 236, 185, -1, -1, -1, 5, 238, - 200, 17, 239, 240, 244, -1, 241, -1, 240, 66, - 241, -1, 242, 73, 187, -1, 243, -1, 242, 69, - 243, -1, 30, -1, 28, -1, 10, -1, 66, 10, - -1, 246, -1, 249, -1, 252, -1, -1, -1, 27, - 247, 200, 248, 7, 185, -1, -1, -1, 21, 250, - 184, 25, 251, 200, -1, -1, -1, -1, 12, 253, - 256, 33, 254, 257, 7, 255, 185, -1, 36, -1, - -1, -1, 200, 258, 23, 259, 200, -1, -1, -1, - 200, 260, 8, 261, 200, -1 -}; - -/* YYRLINE[YYN] -- source line where rule number YYN was defined. */ -static const unsigned short yyrline[] = -{ - 0, 65, 65, 72, 63, 79, 81, 84, 89, 94, - 99, 104, 109, 114, 119, 128, 137, 141, 142, 146, - 147, 151, 152, 156, 161, 175, 156, 205, 207, 206, - 212, 213, 217, 220, 222, 227, 228, 232, 240, 244, - 245, 232, 250, 258, 259, 260, 264, 266, 266, 268, - 268, 270, 270, 272, 272, 274, 274, 276, 276, 278, - 278, 280, 280, 282, 282, 284, 284, 286, 286, 288, - 288, 290, 290, 292, 292, 294, 299, 298, 302, 306, - 312, 321, 324, 325, 328, 329, 333, 335, 342, 333, - 359, 360, 364, 400, 404, 407, 409, 413, 420, 427, - 436, 448, 462, 466, 467, 471, 478, 493, 494, 498, - 500, 510, 514, 513, 519, 520, 524, 526, 524, 544, - 547, 548, 551, 563, 577, 576, 582, 584, 588, 589, - 593, 601, 593, 609, 610, 613, 627, 641, 657, 660, - 659, 672, 673, 676, 678, 683, 687, 686, 703, 702, - 719, 725, 724, 736, 737, 741, 741, 757, 757, 758, - 758, 762, 763, 766, 770, 781, 787, 769, 794, 804, - 809, 793, 816, 817, 820, 823, 827, 826, 832, 833, - 836, 837, 841, 849, 851, 855, 856, 857, 858, 859, - 864, 863, 867, 866, 872, 871, 882, 888, 890, 894, - 895, 899, 898, 902, 920, 922, 926, 928, 927, 932, - 934, 934, 936, 936, 938, 938, 940, 940, 942, 942, - 944, 944, 946, 946, 948, 948, 950, 950, 952, 952, - 954, 954, 956, 956, 958, 958, 961, 960, 964, 969, - 970, 972, 978, 977, 981, 982, 983, 986, 985, 991, - 991, 996, 997, 997, 1002, 1003, 1008, 1009, 1012, 1014, - 1021, 1020, 1025, 1039, 1042, 1043, 1044, 1047, 1048, 1051, - 1052, 1056, 1058, 1055, 1063, 1062, 1068, 1070, 1067, 1077, - 1078, 1081, 1085, 1086, 1089, 1094, 1098, 1099, 1102, 1103, - 1104, 1108, 1112, 1107, 1117, 1119, 1116, 1127, 1136, 1142, - 1126, 1176, 1181, 1183, 1180, 1193, 1195, 1192 -}; -#endif - -#if YYDEBUG || YYERROR_VERBOSE -/* YYTNME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. - First, the terminals, then, starting at YYNTOKENS, nonterminals. */ -static const char *const yytname[] = -{ - "$end", "error", "$undefined", "array_tok", "begin_tok", "case_tok", - "const_tok", "do_tok", "downto_tok", "else_tok", "end_tok", "file_tok", - "for_tok", "function_tok", "goto_tok", "if_tok", "label_tok", "of_tok", - "procedure_tok", "program_tok", "record_tok", "repeat_tok", "then_tok", - "to_tok", "type_tok", "until_tok", "var_tok", "while_tok", "others_tok", - "r_num_tok", "i_num_tok", "string_literal_tok", "single_char_tok", - "assign_tok", "two_dots_tok", "undef_id_tok", "var_id_tok", - "proc_id_tok", "proc_param_tok", "fun_id_tok", "fun_param_tok", - "const_id_tok", "type_id_tok", "hhb0_tok", "hhb1_tok", "field_id_tok", - "define_tok", "field_tok", "break_tok", "'='", "'<'", "'>'", - "great_eq_tok", "less_eq_tok", "not_eq_tok", "'+'", "'-'", "or_tok", - "unary_minus_tok", "unary_plus_tok", "'*'", "'/'", "and_tok", "mod_tok", - "div_tok", "not_tok", "';'", "'('", "')'", "','", "'^'", "'['", "']'", - "':'", "'.'", "$accept", "PROGRAM", "@1", "@2", "DEFS", "DEF", - "PROGRAM_HEAD", "PROGRAM_FILE_PART", "PROGRAM_FILE_LIST", - "PROGRAM_FILE", "BLOCK", "@3", "@4", "@5", "LABEL_DEC_PART", "@6", - "LABEL_LIST", "LABEL", "CONST_DEC_PART", "CONST_DEC_LIST", "CONST_DEC", - "@7", "@8", "@9", "@10", "CONSTANT", "CONSTANT_EXPRESS", "@11", "@12", - "@13", "@14", "@15", "@16", "@17", "@18", "@19", "@20", "@21", "@22", - "@23", "@24", "CONST_FACTOR", "@25", "STRING", "CONSTANT_ID", - "TYPE_DEC_PART", "TYPE_DEF_LIST", "TYPE_DEF", "@26", "@27", "@28", - "TYPE", "SIMPLE_TYPE", "SUBRANGE_TYPE", "POSSIBLE_PLUS", - "SUBRANGE_CONSTANT", "TYPE_ID", "STRUCTURED_TYPE", "POINTER_TYPE", - "ARRAY_TYPE", "INDEX_TYPE", "COMPONENT_TYPE", "RECORD_TYPE", "@29", - "FIELD_LIST", "RECORD_SECTION", "@30", "@31", "FIELD_ID_LIST", - "FIELD_ID", "FILE_TYPE", "@32", "VAR_DEC_PART", "VAR_DEC_LIST", - "VAR_DEC", "@33", "@34", "VAR_ID_DEC_LIST", "VAR_ID", "BODY", "@35", - "P_F_DEC_PART", "P_F_DEC", "PROCEDURE_DEC", "PROCEDURE_HEAD", "@36", - "@37", "PARAM", "@38", "FORM_PAR_SEC_L", "FORM_PAR_SEC1", "@39", - "FORM_PAR_SEC", "@40", "@41", "DECLARED_PROC", "FUNCTION_DEC", - "FUNCTION_HEAD", "@42", "@43", "@44", "@45", "@46", "@47", - "DECLARED_FUN", "RESULT_TYPE", "STAT_PART", "COMPOUND_STAT", "@48", - "STAT_LIST", "STATEMENT", "S_LABEL", "UNLAB_STAT", "SIMPLE_STAT", - "ASSIGN_STAT", "@49", "@50", "VARIABLE", "@51", "FUNC_ID_AS", - "VAR_DESIG_LIST", "VAR_DESIG", "@52", "VAR_DESIG1", "@53", "EXPRESS", - "@54", "@55", "@56", "@57", "@58", "@59", "@60", "@61", "@62", "@63", - "@64", "@65", "@66", "@67", "UNARY_OP", "FACTOR", "@68", "@69", - "PARAM_LIST", "@70", "ACTUAL_PARAM_L", "@71", "ACTUAL_PARAM", - "WIDTH_FIELD", "PROC_STAT", "@72", "GO_TO_STAT", "EMPTY_STAT", - "STRUCT_STAT", "CONDIT_STAT", "IF_STATEMENT", "BEGIN_IF_STAT", "@73", - "@74", "ELSE_STAT", "@75", "CASE_STATEMENT", "@76", "@77", - "CASE_EL_LIST", "CASE_ELEMENT", "CASE_LAB_LIST", "CASE_LAB", "END_CASE", - "REPETIT_STAT", "WHILE_STATEMENT", "@78", "@79", "REP_STATEMENT", "@80", - "@81", "FOR_STATEMENT", "@82", "@83", "@84", "CONTROL_VAR", "FOR_LIST", - "@85", "@86", "@87", "@88", 0 -}; -#endif - -# ifdef YYPRINT -/* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to - token YYLEX-NUM. */ -static const unsigned short yytoknum[] = -{ - 0, 256, 257, 258, 259, 260, 261, 262, 263, 264, - 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, - 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, - 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, - 295, 296, 297, 298, 299, 300, 301, 302, 303, 61, - 60, 62, 304, 305, 306, 43, 45, 307, 308, 309, - 42, 47, 310, 311, 312, 313, 59, 40, 41, 44, - 94, 91, 93, 58, 46 -}; -# endif - -/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ -static const unsigned short yyr1[] = -{ - 0, 75, 77, 78, 76, 79, 79, 80, 80, 80, - 80, 80, 80, 80, 80, 80, 81, 82, 82, 83, - 83, 84, 84, 86, 87, 88, 85, 89, 90, 89, - 91, 91, 92, 93, 93, 94, 94, 96, 97, 98, - 99, 95, 100, 100, 100, 100, 101, 102, 101, 103, - 101, 104, 101, 105, 101, 106, 101, 107, 101, 108, - 101, 109, 101, 110, 101, 111, 101, 112, 101, 113, - 101, 114, 101, 115, 101, 101, 117, 116, 116, 118, - 118, 119, 120, 120, 121, 121, 123, 124, 125, 122, - 126, 126, 127, 127, 128, 129, 129, 130, 130, 130, - 130, 131, 132, 132, 132, 132, 133, 134, 134, 135, - 135, 136, 138, 137, 139, 139, 141, 142, 140, 140, - 143, 143, 144, 144, 146, 145, 147, 147, 148, 148, - 150, 151, 149, 152, 152, 153, 153, 153, 154, 155, - 154, 156, 156, 157, 157, 158, 160, 159, 161, 159, - 162, 163, 162, 164, 164, 166, 165, 168, 167, 169, - 167, 170, 170, 171, 173, 174, 175, 172, 176, 177, - 178, 172, 179, 179, 180, 181, 183, 182, 184, 184, - 185, 185, 186, 187, 187, 188, 188, 188, 188, 188, - 190, 189, 191, 189, 193, 192, 192, 194, 194, 195, - 195, 197, 196, 196, 196, 196, 198, 199, 198, 200, - 201, 200, 202, 200, 203, 200, 204, 200, 205, 200, - 206, 200, 207, 200, 208, 200, 209, 200, 210, 200, - 211, 200, 212, 200, 213, 200, 214, 200, 200, 215, - 215, 215, 217, 216, 216, 216, 216, 218, 216, 220, - 219, 221, 222, 221, 223, 223, 224, 224, 225, 225, - 226, 225, 227, 228, 229, 229, 229, 230, 230, 231, - 231, 233, 234, 232, 236, 235, 238, 239, 237, 240, - 240, 241, 242, 242, 243, 243, 244, 244, 245, 245, - 245, 247, 248, 246, 250, 251, 249, 253, 254, 255, - 252, 256, 258, 259, 257, 260, 261, 257 -}; - -/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ -static const unsigned char yyr2[] = -{ - 0, 2, 0, 0, 10, 0, 2, 4, 4, 4, - 6, 4, 6, 4, 6, 4, 4, 3, 0, 1, - 3, 1, 1, 0, 0, 0, 8, 0, 0, 4, - 1, 3, 1, 0, 2, 1, 2, 0, 0, 0, - 0, 8, 1, 1, 1, 1, 2, 0, 4, 0, - 4, 0, 4, 0, 4, 0, 4, 0, 4, 0, - 4, 0, 4, 0, 4, 0, 4, 0, 4, 0, - 4, 0, 4, 0, 4, 1, 0, 4, 1, 1, - 1, 1, 0, 2, 1, 2, 0, 0, 0, 7, - 1, 1, 1, 1, 3, 0, 1, 2, 1, 1, - 1, 1, 1, 1, 1, 1, 2, 6, 8, 1, - 1, 1, 0, 4, 1, 3, 0, 0, 5, 0, - 1, 3, 1, 1, 0, 4, 0, 2, 1, 2, - 0, 0, 6, 1, 3, 1, 1, 1, 0, 0, - 5, 1, 2, 2, 2, 2, 0, 5, 0, 5, - 0, 0, 4, 1, 3, 0, 4, 0, 2, 0, - 3, 1, 1, 2, 0, 0, 0, 9, 0, 0, - 0, 9, 1, 1, 1, 3, 0, 4, 1, 3, - 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, - 0, 4, 0, 4, 0, 3, 1, 1, 1, 1, - 2, 0, 4, 2, 2, 2, 1, 0, 4, 2, - 0, 4, 0, 4, 0, 4, 0, 4, 0, 4, - 0, 4, 0, 4, 0, 4, 0, 4, 0, 4, - 0, 4, 0, 4, 0, 4, 0, 4, 1, 1, - 1, 1, 0, 4, 1, 1, 1, 0, 3, 0, - 4, 1, 0, 4, 2, 1, 2, 0, 1, 1, - 0, 3, 2, 0, 1, 1, 1, 1, 1, 1, - 2, 0, 0, 6, 0, 3, 0, 0, 7, 1, - 3, 3, 1, 3, 1, 1, 1, 2, 1, 1, - 1, 0, 0, 6, 0, 0, 6, 0, 0, 0, - 9, 1, 0, 0, 5, 0, 0, 5 -}; - -/* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state - STATE-NUM when YYTABLE doesn't specify something else to do. Zero - means the default is an error. */ -static const unsigned short yydefact[] = -{ - 5, 0, 0, 1, 0, 0, 6, 2, 18, 0, - 0, 0, 0, 0, 0, 27, 0, 0, 0, 0, - 0, 0, 0, 0, 28, 33, 22, 21, 0, 19, - 16, 9, 8, 0, 11, 0, 95, 13, 15, 7, - 0, 37, 82, 17, 0, 0, 0, 100, 99, 98, - 96, 0, 0, 0, 32, 0, 30, 34, 35, 0, - 86, 126, 20, 10, 12, 14, 97, 95, 29, 0, - 36, 38, 83, 84, 0, 130, 3, 94, 31, 0, - 85, 87, 127, 128, 0, 0, 39, 0, 129, 135, - 136, 137, 0, 133, 0, 0, 138, 141, 0, 23, - 0, 23, 0, 88, 0, 131, 164, 172, 173, 168, - 146, 161, 162, 148, 139, 4, 142, 143, 145, 27, - 144, 163, 43, 42, 79, 80, 81, 240, 239, 241, - 76, 78, 40, 75, 44, 45, 0, 95, 134, 95, - 150, 150, 150, 150, 263, 33, 0, 55, 61, 63, - 67, 65, 57, 47, 49, 71, 51, 73, 69, 59, - 53, 0, 46, 0, 0, 112, 101, 0, 0, 90, - 92, 93, 91, 105, 102, 103, 104, 0, 151, 0, - 0, 0, 0, 176, 276, 297, 0, 271, 294, 291, - 182, 259, 196, 258, 260, 197, 198, 189, 264, 0, - 178, 0, 180, 183, 185, 0, 0, 186, 187, 188, - 184, 265, 267, 269, 268, 266, 288, 289, 290, 82, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 41, 95, 124, 116, 106, - 89, 132, 157, 165, 169, 147, 149, 263, 0, 0, - 262, 0, 263, 0, 0, 0, 0, 263, 263, 190, - 192, 274, 270, 24, 77, 56, 62, 64, 68, 66, - 58, 48, 50, 72, 52, 74, 70, 60, 54, 110, - 109, 0, 95, 0, 114, 0, 159, 0, 153, 155, - 95, 95, 0, 246, 247, 242, 245, 244, 0, 0, - 238, 301, 0, 272, 0, 292, 201, 0, 195, 199, - 249, 261, 140, 179, 181, 0, 0, 263, 126, 95, - 0, 125, 113, 116, 122, 123, 0, 120, 155, 157, - 152, 158, 0, 174, 166, 170, 177, 0, 0, 277, - 218, 224, 226, 230, 228, 220, 210, 212, 234, 214, - 236, 232, 222, 216, 209, 298, 0, 295, 0, 0, - 204, 205, 203, 200, 0, 191, 193, 275, 25, 0, - 95, 115, 0, 117, 160, 154, 0, 0, 0, 248, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 263, 0, 263, - 0, 255, 257, 0, 251, 0, 0, 111, 107, 121, - 95, 0, 167, 171, 243, 285, 284, 0, 279, 0, - 282, 219, 225, 227, 231, 229, 221, 211, 213, 235, - 215, 237, 233, 223, 217, 302, 0, 273, 296, 293, - 207, 206, 202, 0, 254, 250, 252, 263, 26, 95, - 118, 156, 286, 0, 278, 0, 263, 0, 0, 299, - 0, 256, 0, 0, 108, 287, 280, 283, 281, 303, - 306, 263, 0, 253, 175, 0, 0, 300, 208, 304, - 307 -}; - -/* YYDEFGOTO[NTERM-NUM]. */ -static const short yydefgoto[] = -{ - -1, 1, 15, 85, 2, 6, 7, 17, 28, 29, - 118, 119, 318, 405, 25, 40, 55, 56, 42, 57, - 58, 59, 79, 102, 161, 296, 132, 227, 228, 230, - 234, 221, 226, 233, 222, 223, 225, 224, 232, 229, - 231, 133, 146, 134, 135, 61, 72, 73, 74, 87, - 137, 333, 169, 170, 52, 53, 171, 172, 173, 174, - 281, 408, 175, 238, 283, 284, 285, 410, 326, 327, - 176, 282, 76, 82, 83, 84, 139, 92, 93, 115, - 144, 96, 97, 98, 99, 142, 143, 179, 242, 287, - 331, 332, 288, 289, 328, 113, 100, 101, 140, 290, - 377, 141, 291, 378, 109, 334, 448, 198, 247, 199, - 200, 201, 202, 203, 204, 315, 316, 297, 254, 206, - 308, 309, 359, 442, 460, 402, 388, 389, 391, 395, - 382, 387, 394, 383, 384, 386, 385, 393, 390, 392, - 299, 300, 338, 337, 311, 364, 403, 462, 404, 444, - 207, 255, 208, 209, 210, 211, 212, 213, 251, 356, - 262, 317, 214, 248, 381, 417, 418, 419, 420, 454, - 215, 216, 253, 358, 217, 252, 398, 218, 249, 396, - 471, 302, 436, 457, 475, 458, 476 -}; - -/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing - STATE-NUM. */ -#define YYPACT_NINF -254 -static const short yypact[] = -{ - -254, 47, 12, -254, -13, 10, -254, -254, -15, 71, - 106, 109, 112, 128, 131, 64, 37, 122, 129, 9, - 45, -12, 132, 139, -254, 210, -254, -254, 103, -254, - -254, -254, -254, 145, -254, 161, -6, -254, -254, -254, - 200, -254, 208, -254, 37, 165, 169, -254, -254, -254, - -254, 172, 214, 206, -254, -45, -254, 211, -254, 212, - -254, 222, -254, -254, -254, -254, -254, -6, -254, 200, - -254, -254, 215, -254, 216, -254, -254, -254, -254, 203, - -254, -254, 38, -254, 51, 27, -254, 205, -254, -254, - -254, -254, -10, -254, 53, 72, 66, -254, 183, -254, - 199, -254, 364, -254, 51, -254, -254, -254, -254, -254, - -254, -254, -254, -254, -254, -254, -254, -254, -254, 64, - -254, -254, -254, -254, -254, -254, -254, -254, -254, -254, - -254, -254, 496, -254, -254, -254, 364, 7, -254, 7, - 209, 209, 209, 209, 337, 210, 364, -254, -254, -254, - -254, -254, -254, -254, -254, -254, -254, -254, -254, -254, - -254, 213, -254, 195, 255, -254, -254, 231, 217, -254, - -254, -254, -254, -254, -254, -254, -254, 218, -254, 202, - 204, 235, 236, -254, -254, -254, 248, -254, -254, -254, - -254, -254, 31, -254, -254, -254, -254, -254, -254, -4, - -254, 232, -254, -254, -254, 247, 249, -254, -254, -254, - -254, -254, -254, 272, -254, -254, -254, -254, -254, 208, - 456, 364, 364, 364, 364, 364, 364, 364, 364, 364, - 364, 364, 364, 364, 364, -254, -3, -254, -2, -254, - -254, -254, 278, -254, -254, -254, -254, 337, 178, 270, - -254, 178, 337, 178, 69, 240, 234, 337, 185, -254, - -254, -254, -254, -254, -254, 512, 512, 512, 512, 512, - 512, 55, 55, 55, -254, -254, -254, -254, -254, -254, - -254, 73, 7, 1, -254, 15, -254, 32, -254, -254, - 7, 7, 2, -254, -254, -254, -254, -254, 283, 178, - -254, -254, 276, 528, -5, 528, -254, 125, 69, -254, - -254, -254, -254, -254, -254, 178, 178, 337, 222, -3, - 293, -254, -254, -2, -254, -254, 21, -254, -254, 278, - -254, -254, 51, -254, -254, -254, -254, 240, 178, -254, - -254, -254, -254, -254, -254, -254, -254, -254, -254, -254, - -254, -254, -254, -254, -254, -254, 289, -254, 307, 178, - -254, -254, -254, -254, 350, 528, 528, -254, -254, 243, - 7, -254, 15, -254, -254, -254, 22, 250, 251, -254, - 476, 166, 178, 178, 178, 178, 178, 178, 178, 178, - 178, 178, 178, 178, 178, 178, 178, 337, 178, 337, - 408, -254, 383, 159, -254, 314, 302, -254, -254, -254, - 7, 279, -254, -254, -254, -254, -254, 3, -254, 28, - -254, 544, 544, 544, 544, 544, 544, 60, 60, 60, - -254, -254, -254, -254, -254, 207, 313, -254, 528, -254, - -254, -254, -254, 292, -254, -254, -254, 337, -254, 7, - -254, -254, -254, 16, -254, 166, 185, 300, 316, -254, - 178, -254, 350, 5, -254, -254, -254, -254, -254, -254, - -254, 337, 432, -254, -254, 178, 178, -254, -254, 528, - 528 -}; - -/* YYPGOTO[NTERM-NUM]. */ -static const short yypgoto[] = -{ - -254, -254, -254, -254, -254, -254, -254, -254, -254, 281, - 225, -254, -254, -254, 229, -254, -254, 259, 184, -254, - 273, -254, -254, -254, -254, -95, 65, -254, -254, -254, - -254, -254, -254, -254, -254, -254, -254, -254, -254, -254, - -254, -254, -254, -254, -254, 134, -254, 282, -254, -254, - -254, -136, -254, -34, -254, 264, -254, -254, -254, -254, - 36, -99, -254, -254, -254, 33, -254, -254, -254, -11, - -254, -254, 39, -254, 277, -254, -254, 30, 256, -254, - -254, -254, 267, -254, -254, -254, -254, 50, -254, -254, - 40, -254, 41, -254, -254, -254, -254, -254, -254, -254, - -254, -254, -254, -254, -254, 74, -254, -254, -254, -243, - -232, -254, -253, -254, -254, -254, -254, -144, -254, -254, - -254, 58, -254, -254, -254, -234, -254, -254, -254, -254, - -254, -254, -254, -254, -254, -254, -254, -254, -254, -254, - -47, -254, -254, -254, 34, -254, -254, -254, -93, -254, - -254, -254, -254, -254, -254, -254, -254, -254, -254, -254, - -254, -254, -254, -254, -254, -254, -75, -254, -72, -254, - -254, -254, -254, -254, -254, -254, -254, -254, -254, -254, - -254, -254, -254, -254, -254, -254, -254 -}; - -/* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If - positive, shift that token. If negative, reduce the rule which - number is the opposite. If zero, do what YYDEFACT says. - If YYTABLE_NINF, syntax error. */ -#define YYTABLE_NINF -306 -static const short yytable[] = -{ - 205, 168, 51, 177, 292, 314, 256, 131, -119, 304, - 163, 322, 336, 452, 298, 474, 9, 303, 164, 305, - 357, 68, 8, 10, 69, 313, 465, 165, 11, 47, - 48, 4, 47, 48, 12, 49, 13, 36, 49, 279, - 94, 131, 47, 48, 415, 95, 416, 3, 49, 166, - 324, 131, 16, 50, 37, 136, 50, 14, 5, 104, - 325, 257, 257, 105, -119, 354, 50, 323, 257, 453, - 114, 257, 26, -130, -130, 32, 33, 167, 27, 94, - 24, 365, 366, -130, 95, 367, 89, 90, 106, 136, - 372, 104, 107, 108, 373, 411, 91, 455, 329, 136, - 330, 456, -194, 205, 380, -194, 18, 110, 205, 111, - 112, 34, 35, 205, 205, 156, 157, 158, 159, 160, - 349, 350, 351, 352, 353, 400, 131, 131, 131, 131, - 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, - 306, 19, 319, 307, 20, 320, 321, 21, 421, 422, - 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, - 433, 434, 435, 22, 438, 437, 23, 439, 360, 361, - 362, 43, 44, 205, 136, 136, 136, 136, 136, 136, - 136, 136, 136, 136, 136, 136, 136, 136, 30, 183, - 184, 180, 181, 182, 415, 31, 416, 185, 38, 186, - 187, 162, 280, 468, 463, 39, 188, 122, 123, 124, - 125, 220, 189, 45, 192, -305, 41, 293, 294, 126, - 191, 192, 193, 194, 195, 196, 472, 445, 446, 46, - 54, 63, 60, 197, 407, 64, 127, 128, 65, 477, - 67, 479, 480, 129, 66, 295, -37, 71, 75, 117, - -86, 81, 86, 205, 103, 205, 340, 341, 342, 343, - 344, 345, 346, 347, 348, 120, 236, 349, 350, 351, - 352, 353, 237, 239, 450, 243, 178, 244, 250, 235, - 259, 261, 260, 240, 241, 280, 265, 266, 267, 268, - 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, - 339, 245, 246, 205, 286, 258, 301, 310, 312, 355, - 370, 397, 205, 407, 399, 406, 412, 413, 447, 449, - 459, 451, 461, 469, 470, 62, 121, 205, 78, 219, - 70, 77, 340, 341, 342, 343, 344, 345, 346, 347, - 348, 183, 184, 349, 350, 351, 352, 353, 145, 185, - 464, 186, 187, 263, 80, 369, 371, 368, 188, 88, - 138, 409, 376, 116, 189, 335, 363, 190, 374, 473, - 375, 379, 191, 192, 193, 194, 195, 196, 466, 122, - 123, 124, 125, 467, 0, 197, 192, 0, 0, 293, - 294, 126, 401, 122, 123, 124, 125, 0, 0, 0, - 0, 0, 0, 0, 0, 126, 0, 0, 127, 128, - 0, 0, 0, 0, 0, 129, 0, 295, 0, 0, - 0, 0, 127, 128, 0, 0, 0, 0, 0, 129, - 0, 130, 340, 341, 342, 343, 344, 345, 346, 347, - 348, 0, 0, 349, 350, 351, 352, 353, 0, 0, - 0, 0, 0, 0, 0, 0, 443, 340, 341, 342, - 343, 344, 345, 346, 347, 348, 0, 0, 349, 350, - 351, 352, 353, 0, 0, 0, 0, 440, 0, 0, - 441, 340, 341, 342, 343, 344, 345, 346, 347, 348, - 0, 0, 349, 350, 351, 352, 353, 0, 0, 0, - 0, 0, 0, 0, 478, 147, 148, 149, 150, 151, - 152, 153, 154, 155, 0, 0, 156, 157, 158, 159, - 160, 0, 0, 0, 264, 340, 341, 342, 343, 344, - 345, 346, 347, 348, 0, 0, 349, 350, 351, 352, - 353, 0, 0, 0, 414, 147, 148, 149, 150, 151, - 152, 153, 154, 155, 0, 0, 156, 157, 158, 159, - 160, -306, -306, -306, -306, -306, -306, 153, 154, 155, - 0, 0, 156, 157, 158, 159, 160, 340, 341, 342, - 343, 344, 345, 346, 347, 348, 0, 0, 349, 350, - 351, 352, 353, -306, -306, -306, -306, -306, -306, 346, - 347, 348, 0, 0, 349, 350, 351, 352, 353 -}; - -static const short yycheck[] = -{ - 144, 137, 36, 139, 247, 258, 10, 102, 10, 252, - 3, 10, 10, 10, 248, 10, 6, 251, 11, 253, - 25, 66, 35, 13, 69, 257, 10, 20, 18, 35, - 36, 19, 35, 36, 24, 41, 26, 49, 41, 42, - 13, 136, 35, 36, 28, 18, 30, 0, 41, 42, - 35, 146, 67, 59, 66, 102, 59, 47, 46, 69, - 45, 66, 66, 73, 66, 299, 59, 66, 66, 66, - 4, 66, 35, 35, 36, 66, 67, 70, 41, 13, - 16, 315, 316, 45, 18, 317, 35, 36, 35, 136, - 69, 69, 39, 40, 73, 73, 45, 69, 66, 146, - 68, 73, 71, 247, 338, 74, 35, 35, 252, 37, - 38, 66, 67, 257, 258, 60, 61, 62, 63, 64, - 60, 61, 62, 63, 64, 359, 221, 222, 223, 224, - 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, - 71, 35, 69, 74, 35, 72, 282, 35, 382, 383, - 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, - 394, 395, 396, 35, 398, 397, 35, 399, 43, 44, - 45, 68, 69, 317, 221, 222, 223, 224, 225, 226, - 227, 228, 229, 230, 231, 232, 233, 234, 66, 4, - 5, 141, 142, 143, 28, 66, 30, 12, 66, 14, - 15, 136, 236, 456, 447, 66, 21, 29, 30, 31, - 32, 146, 27, 68, 36, 8, 6, 39, 40, 41, - 35, 36, 37, 38, 39, 40, 460, 68, 69, 68, - 30, 66, 24, 48, 370, 66, 58, 59, 66, 471, - 34, 475, 476, 65, 30, 67, 35, 35, 26, 66, - 35, 35, 49, 397, 49, 399, 49, 50, 51, 52, - 53, 54, 55, 56, 57, 66, 71, 60, 61, 62, - 63, 64, 17, 42, 410, 73, 67, 73, 30, 66, - 33, 9, 33, 66, 66, 319, 221, 222, 223, 224, - 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, - 17, 66, 66, 447, 26, 73, 36, 67, 74, 33, - 17, 22, 456, 449, 7, 72, 66, 66, 4, 17, - 7, 42, 30, 23, 8, 44, 101, 471, 69, 145, - 57, 67, 49, 50, 51, 52, 53, 54, 55, 56, - 57, 4, 5, 60, 61, 62, 63, 64, 119, 12, - 449, 14, 15, 219, 72, 319, 323, 318, 21, 82, - 104, 372, 332, 96, 27, 291, 308, 30, 328, 462, - 329, 337, 35, 36, 37, 38, 39, 40, 453, 29, - 30, 31, 32, 455, -1, 48, 36, -1, -1, 39, - 40, 41, 42, 29, 30, 31, 32, -1, -1, -1, - -1, -1, -1, -1, -1, 41, -1, -1, 58, 59, - -1, -1, -1, -1, -1, 65, -1, 67, -1, -1, - -1, -1, 58, 59, -1, -1, -1, -1, -1, 65, - -1, 67, 49, 50, 51, 52, 53, 54, 55, 56, - 57, -1, -1, 60, 61, 62, 63, 64, -1, -1, - -1, -1, -1, -1, -1, -1, 73, 49, 50, 51, - 52, 53, 54, 55, 56, 57, -1, -1, 60, 61, - 62, 63, 64, -1, -1, -1, -1, 69, -1, -1, - 72, 49, 50, 51, 52, 53, 54, 55, 56, 57, - -1, -1, 60, 61, 62, 63, 64, -1, -1, -1, - -1, -1, -1, -1, 72, 49, 50, 51, 52, 53, - 54, 55, 56, 57, -1, -1, 60, 61, 62, 63, - 64, -1, -1, -1, 68, 49, 50, 51, 52, 53, - 54, 55, 56, 57, -1, -1, 60, 61, 62, 63, - 64, -1, -1, -1, 68, 49, 50, 51, 52, 53, - 54, 55, 56, 57, -1, -1, 60, 61, 62, 63, - 64, 49, 50, 51, 52, 53, 54, 55, 56, 57, - -1, -1, 60, 61, 62, 63, 64, 49, 50, 51, - 52, 53, 54, 55, 56, 57, -1, -1, 60, 61, - 62, 63, 64, 49, 50, 51, 52, 53, 54, 55, - 56, 57, -1, -1, 60, 61, 62, 63, 64 -}; - -/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing - symbol of state STATE-NUM. */ -static const unsigned short yystos[] = -{ - 0, 76, 79, 0, 19, 46, 80, 81, 35, 6, - 13, 18, 24, 26, 47, 77, 67, 82, 35, 35, - 35, 35, 35, 35, 16, 89, 35, 41, 83, 84, - 66, 66, 66, 67, 66, 67, 49, 66, 66, 66, - 90, 6, 93, 68, 69, 68, 68, 35, 36, 41, - 59, 128, 129, 130, 30, 91, 92, 94, 95, 96, - 24, 120, 84, 66, 66, 66, 30, 34, 66, 69, - 95, 35, 121, 122, 123, 26, 147, 130, 92, 97, - 122, 35, 148, 149, 150, 78, 49, 124, 149, 35, - 36, 45, 152, 153, 13, 18, 156, 157, 158, 159, - 171, 172, 98, 49, 69, 73, 35, 39, 40, 179, - 35, 37, 38, 170, 4, 154, 157, 66, 85, 86, - 66, 85, 29, 30, 31, 32, 41, 58, 59, 65, - 67, 100, 101, 116, 118, 119, 215, 125, 153, 151, - 173, 176, 160, 161, 155, 89, 117, 49, 50, 51, - 52, 53, 54, 55, 56, 57, 60, 61, 62, 63, - 64, 99, 101, 3, 11, 20, 42, 70, 126, 127, - 128, 131, 132, 133, 134, 137, 145, 126, 67, 162, - 162, 162, 162, 4, 5, 12, 14, 15, 21, 27, - 30, 35, 36, 37, 38, 39, 40, 48, 182, 184, - 185, 186, 187, 188, 189, 192, 194, 225, 227, 228, - 229, 230, 231, 232, 237, 245, 246, 249, 252, 93, - 101, 106, 109, 110, 112, 111, 107, 102, 103, 114, - 104, 115, 113, 108, 105, 66, 71, 17, 138, 42, - 66, 66, 163, 73, 73, 66, 66, 183, 238, 253, - 30, 233, 250, 247, 193, 226, 10, 66, 73, 33, - 33, 9, 235, 120, 68, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 42, - 128, 135, 146, 139, 140, 141, 26, 164, 167, 168, - 174, 177, 184, 39, 40, 67, 100, 192, 200, 215, - 216, 36, 256, 200, 184, 200, 71, 74, 195, 196, - 67, 219, 74, 185, 187, 190, 191, 236, 87, 69, - 72, 126, 10, 66, 35, 45, 143, 144, 169, 66, - 68, 165, 166, 126, 180, 180, 10, 218, 217, 17, - 49, 50, 51, 52, 53, 54, 55, 56, 57, 60, - 61, 62, 63, 64, 200, 33, 234, 25, 248, 197, - 43, 44, 45, 196, 220, 200, 200, 185, 147, 135, - 17, 140, 69, 73, 165, 167, 152, 175, 178, 219, - 200, 239, 205, 208, 209, 211, 210, 206, 201, 202, - 213, 203, 214, 212, 207, 204, 254, 22, 251, 7, - 200, 42, 200, 221, 223, 88, 72, 126, 136, 144, - 142, 73, 66, 66, 68, 28, 30, 240, 241, 242, - 243, 200, 200, 200, 200, 200, 200, 200, 200, 200, - 200, 200, 200, 200, 200, 200, 257, 185, 200, 185, - 69, 72, 198, 73, 224, 68, 69, 4, 181, 17, - 126, 42, 10, 66, 244, 69, 73, 258, 260, 7, - 199, 30, 222, 184, 136, 10, 241, 243, 187, 23, - 8, 255, 200, 223, 10, 259, 261, 185, 72, 200, - 200 -}; - -#if ! defined (YYSIZE_T) && defined (__SIZE_TYPE__) -# define YYSIZE_T __SIZE_TYPE__ -#endif -#if ! defined (YYSIZE_T) && defined (size_t) -# define YYSIZE_T size_t -#endif -#if ! defined (YYSIZE_T) -# if defined (__STDC__) || defined (__cplusplus) -# include /* INFRINGES ON USER NAME SPACE */ -# define YYSIZE_T size_t -# endif -#endif -#if ! defined (YYSIZE_T) -# define YYSIZE_T unsigned int -#endif - -#define yyerrok (yyerrstatus = 0) -#define yyclearin (yychar = YYEMPTY) -#define YYEMPTY (-2) -#define YYEOF 0 - -#define YYACCEPT goto yyacceptlab -#define YYABORT goto yyabortlab -#define YYERROR goto yyerrlab1 - - -/* Like YYERROR except do call yyerror. This remains here temporarily - to ease the transition to the new meaning of YYERROR, for GCC. - Once GCC version 2 has supplanted version 1, this can go. */ - -#define YYFAIL goto yyerrlab - -#define YYRECOVERING() (!!yyerrstatus) - -#define YYBACKUP(Token, Value) \ -do \ - if (yychar == YYEMPTY && yylen == 1) \ - { \ - yychar = (Token); \ - yylval = (Value); \ - yytoken = YYTRANSLATE (yychar); \ - YYPOPSTACK; \ - goto yybackup; \ - } \ - else \ - { \ - yyerror ("syntax error: cannot back up");\ - YYERROR; \ - } \ -while (0) - -#define YYTERROR 1 -#define YYERRCODE 256 - -/* YYLLOC_DEFAULT -- Compute the default location (before the actions - are run). */ - -#ifndef YYLLOC_DEFAULT -# define YYLLOC_DEFAULT(Current, Rhs, N) \ - Current.first_line = Rhs[1].first_line; \ - Current.first_column = Rhs[1].first_column; \ - Current.last_line = Rhs[N].last_line; \ - Current.last_column = Rhs[N].last_column; -#endif - -/* YYLEX -- calling `yylex' with the right arguments. */ - -#ifdef YYLEX_PARAM -# define YYLEX yylex (YYLEX_PARAM) -#else -# define YYLEX yylex () -#endif - -/* Enable debugging if requested. */ -#if YYDEBUG - -# ifndef YYFPRINTF -# include /* INFRINGES ON USER NAME SPACE */ -# define YYFPRINTF fprintf -# endif - -# define YYDPRINTF(Args) \ -do { \ - if (yydebug) \ - YYFPRINTF Args; \ -} while (0) - -# define YYDSYMPRINT(Args) \ -do { \ - if (yydebug) \ - yysymprint Args; \ -} while (0) - -# define YYDSYMPRINTF(Title, Token, Value, Location) \ -do { \ - if (yydebug) \ - { \ - YYFPRINTF (stderr, "%s ", Title); \ - yysymprint (stderr, \ - Token, Value); \ - YYFPRINTF (stderr, "\n"); \ - } \ -} while (0) - -/*------------------------------------------------------------------. -| yy_stack_print -- Print the state stack from its BOTTOM up to its | -| TOP (cinluded). | -`------------------------------------------------------------------*/ - -#if defined (__STDC__) || defined (__cplusplus) -static void -yy_stack_print (short *bottom, short *top) -#else -static void -yy_stack_print (bottom, top) - short *bottom; - short *top; -#endif -{ - YYFPRINTF (stderr, "Stack now"); - for (/* Nothing. */; bottom <= top; ++bottom) - YYFPRINTF (stderr, " %d", *bottom); - YYFPRINTF (stderr, "\n"); -} - -# define YY_STACK_PRINT(Bottom, Top) \ -do { \ - if (yydebug) \ - yy_stack_print ((Bottom), (Top)); \ -} while (0) - - -/*------------------------------------------------. -| Report that the YYRULE is going to be reduced. | -`------------------------------------------------*/ - -#if defined (__STDC__) || defined (__cplusplus) -static void -yy_reduce_print (int yyrule) -#else -static void -yy_reduce_print (yyrule) - int yyrule; -#endif -{ - int yyi; - unsigned int yylineno = yyrline[yyrule]; - YYFPRINTF (stderr, "Reducing stack by rule %d (line %u), ", - yyrule - 1, yylineno); - /* Print the symbols being reduced, and their result. */ - for (yyi = yyprhs[yyrule]; 0 <= yyrhs[yyi]; yyi++) - YYFPRINTF (stderr, "%s ", yytname [yyrhs[yyi]]); - YYFPRINTF (stderr, "-> %s\n", yytname [yyr1[yyrule]]); -} - -# define YY_REDUCE_PRINT(Rule) \ -do { \ - if (yydebug) \ - yy_reduce_print (Rule); \ -} while (0) - -/* Nonzero means print parse trace. It is left uninitialized so that - multiple parsers can coexist. */ -int yydebug; -#else /* !YYDEBUG */ -# define YYDPRINTF(Args) -# define YYDSYMPRINT(Args) -# define YYDSYMPRINTF(Title, Token, Value, Location) -# define YY_STACK_PRINT(Bottom, Top) -# define YY_REDUCE_PRINT(Rule) -#endif /* !YYDEBUG */ - - -/* YYINITDEPTH -- initial size of the parser's stacks. */ -#ifndef YYINITDEPTH -# define YYINITDEPTH 200 -#endif - -/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only - if the built-in stack extension method is used). - - Do not make this value too large; the results are undefined if - SIZE_MAX < YYSTACK_BYTES (YYMAXDEPTH) - evaluated with infinite-precision integer arithmetic. */ - -#if YYMAXDEPTH == 0 -# undef YYMAXDEPTH -#endif - -#ifndef YYMAXDEPTH -# define YYMAXDEPTH 10000 -#endif - - - -#if YYERROR_VERBOSE - -# ifndef yystrlen -# if defined (__GLIBC__) && defined (_STRING_H) -# define yystrlen strlen -# else -/* Return the length of YYSTR. */ -static YYSIZE_T -# if defined (__STDC__) || defined (__cplusplus) -yystrlen (const char *yystr) -# else -yystrlen (yystr) - const char *yystr; -# endif -{ - register const char *yys = yystr; - - while (*yys++ != '\0') - continue; - - return yys - yystr - 1; -} -# endif -# endif - -# ifndef yystpcpy -# if defined (__GLIBC__) && defined (_STRING_H) && defined (_GNU_SOURCE) -# define yystpcpy stpcpy -# else -/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in - YYDEST. */ -static char * -# if defined (__STDC__) || defined (__cplusplus) -yystpcpy (char *yydest, const char *yysrc) -# else -yystpcpy (yydest, yysrc) - char *yydest; - const char *yysrc; -# endif -{ - register char *yyd = yydest; - register const char *yys = yysrc; - - while ((*yyd++ = *yys++) != '\0') - continue; - - return yyd - 1; -} -# endif -# endif - -#endif /* !YYERROR_VERBOSE */ - - - -#if YYDEBUG -/*--------------------------------. -| Print this symbol on YYOUTPUT. | -`--------------------------------*/ - -#if defined (__STDC__) || defined (__cplusplus) -static void -yysymprint (FILE *yyoutput, int yytype, YYSTYPE *yyvaluep) -#else -static void -yysymprint (yyoutput, yytype, yyvaluep) - FILE *yyoutput; - int yytype; - YYSTYPE *yyvaluep; -#endif -{ - /* Pacify ``unused variable'' warnings. */ - (void) yyvaluep; - - if (yytype < YYNTOKENS) - { - YYFPRINTF (yyoutput, "token %s (", yytname[yytype]); -# ifdef YYPRINT - YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep); -# endif - } - else - YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]); - - switch (yytype) - { - default: - break; - } - YYFPRINTF (yyoutput, ")"); -} - -#endif /* ! YYDEBUG */ -/*-----------------------------------------------. -| Release the memory associated to this symbol. | -`-----------------------------------------------*/ - -#if defined (__STDC__) || defined (__cplusplus) -static void -yydestruct (int yytype, YYSTYPE *yyvaluep) -#else -static void -yydestruct (yytype, yyvaluep) - int yytype; - YYSTYPE *yyvaluep; -#endif -{ - /* Pacify ``unused variable'' warnings. */ - (void) yyvaluep; - - switch (yytype) - { - - default: - break; - } -} - - -/* Prevent warnings from -Wmissing-prototypes. */ - -#ifdef YYPARSE_PARAM -# if defined (__STDC__) || defined (__cplusplus) -int yyparse (void *YYPARSE_PARAM); -# else -int yyparse (); -# endif -#else /* ! YYPARSE_PARAM */ -#if defined (__STDC__) || defined (__cplusplus) -int yyparse (void); -#else -int yyparse (); -#endif -#endif /* ! YYPARSE_PARAM */ - - - -/* The lookahead symbol. */ -int yychar; - -/* The semantic value of the lookahead symbol. */ -YYSTYPE yylval; - -/* Number of syntax errors so far. */ -int yynerrs; - - - -/*----------. -| yyparse. | -`----------*/ - -#ifdef YYPARSE_PARAM -# if defined (__STDC__) || defined (__cplusplus) -int yyparse (void *YYPARSE_PARAM) -# else -int yyparse (YYPARSE_PARAM) - void *YYPARSE_PARAM; -# endif -#else /* ! YYPARSE_PARAM */ -#if defined (__STDC__) || defined (__cplusplus) -int -yyparse (void) -#else -int -yyparse () - -#endif -#endif -{ - - register int yystate; - register int yyn; - int yyresult; - /* Number of tokens to shift before error messages enabled. */ - int yyerrstatus; - /* Lookahead token as an internal (translated) token number. */ - int yytoken = 0; - - /* Three stacks and their tools: - `yyss': related to states, - `yyvs': related to semantic values, - `yyls': related to locations. - - Refer to the stacks thru separate pointers, to allow yyoverflow - to reallocate them elsewhere. */ - - /* The state stack. */ - short yyssa[YYINITDEPTH]; - short *yyss = yyssa; - register short *yyssp; - - /* The semantic value stack. */ - YYSTYPE yyvsa[YYINITDEPTH]; - YYSTYPE *yyvs = yyvsa; - register YYSTYPE *yyvsp; - - - -#define YYPOPSTACK (yyvsp--, yyssp--) - - YYSIZE_T yystacksize = YYINITDEPTH; - - /* The variables used to return semantic value and location from the - action routines. */ - YYSTYPE yyval; - - - /* When reducing, the number of symbols on the RHS of the reduced - rule. */ - int yylen; - - YYDPRINTF ((stderr, "Starting parse\n")); - - yystate = 0; - yyerrstatus = 0; - yynerrs = 0; - yychar = YYEMPTY; /* Cause a token to be read. */ - - /* Initialize stack pointers. - Waste one element of value and location stack - so that they stay on the same level as the state stack. - The wasted elements are never initialized. */ - - yyssp = yyss; - yyvsp = yyvs; - - goto yysetstate; - -/*------------------------------------------------------------. -| yynewstate -- Push a new state, which is found in yystate. | -`------------------------------------------------------------*/ - yynewstate: - /* In all cases, when you get here, the value and location stacks - have just been pushed. so pushing a state here evens the stacks. - */ - yyssp++; - - yysetstate: - *yyssp = yystate; - - if (yyss + yystacksize - 1 <= yyssp) - { - /* Get the current used size of the three stacks, in elements. */ - YYSIZE_T yysize = yyssp - yyss + 1; - -#ifdef yyoverflow - { - /* Give user a chance to reallocate the stack. Use copies of - these so that the &'s don't force the real ones into - memory. */ - YYSTYPE *yyvs1 = yyvs; - short *yyss1 = yyss; - - - /* Each stack pointer address is followed by the size of the - data in use in that stack, in bytes. This used to be a - conditional around just the two extra args, but that might - be undefined if yyoverflow is a macro. */ - yyoverflow ("parser stack overflow", - &yyss1, yysize * sizeof (*yyssp), - &yyvs1, yysize * sizeof (*yyvsp), - - &yystacksize); - - yyss = yyss1; - yyvs = yyvs1; - } -#else /* no yyoverflow */ -# ifndef YYSTACK_RELOCATE - goto yyoverflowlab; -# else - /* Extend the stack our own way. */ - if (YYMAXDEPTH <= yystacksize) - goto yyoverflowlab; - yystacksize *= 2; - if (YYMAXDEPTH < yystacksize) - yystacksize = YYMAXDEPTH; - - { - short *yyss1 = yyss; - union yyalloc *yyptr = - (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); - if (! yyptr) - goto yyoverflowlab; - YYSTACK_RELOCATE (yyss); - YYSTACK_RELOCATE (yyvs); - -# undef YYSTACK_RELOCATE - if (yyss1 != yyssa) - YYSTACK_FREE (yyss1); - } -# endif -#endif /* no yyoverflow */ - - yyssp = yyss + yysize - 1; - yyvsp = yyvs + yysize - 1; - - - YYDPRINTF ((stderr, "Stack size increased to %lu\n", - (unsigned long int) yystacksize)); - - if (yyss + yystacksize - 1 <= yyssp) - YYABORT; - } - - YYDPRINTF ((stderr, "Entering state %d\n", yystate)); - - goto yybackup; - -/*-----------. -| yybackup. | -`-----------*/ -yybackup: - -/* Do appropriate processing given the current state. */ -/* Read a lookahead token if we need one and don't already have one. */ -/* yyresume: */ - - /* First try to decide what to do without reference to lookahead token. */ - - yyn = yypact[yystate]; - if (yyn == YYPACT_NINF) - goto yydefault; - - /* Not known => get a lookahead token if don't already have one. */ - - /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol. */ - if (yychar == YYEMPTY) - { - YYDPRINTF ((stderr, "Reading a token: ")); - yychar = YYLEX; - } - - if (yychar <= YYEOF) - { - yychar = yytoken = YYEOF; - YYDPRINTF ((stderr, "Now at end of input.\n")); - } - else - { - yytoken = YYTRANSLATE (yychar); - YYDSYMPRINTF ("Next token is", yytoken, &yylval, &yylloc); - } - - /* If the proper action on seeing token YYTOKEN is to reduce or to - detect an error, take that action. */ - yyn += yytoken; - if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken) - goto yydefault; - yyn = yytable[yyn]; - if (yyn <= 0) - { - if (yyn == 0 || yyn == YYTABLE_NINF) - goto yyerrlab; - yyn = -yyn; - goto yyreduce; - } - - if (yyn == YYFINAL) - YYACCEPT; - - /* Shift the lookahead token. */ - YYDPRINTF ((stderr, "Shifting token %s, ", yytname[yytoken])); - - /* Discard the token being shifted unless it is eof. */ - if (yychar != YYEOF) - yychar = YYEMPTY; - - *++yyvsp = yylval; - - - /* Count tokens shifted since error; after three, turn off error - status. */ - if (yyerrstatus) - yyerrstatus--; - - yystate = yyn; - goto yynewstate; - - -/*-----------------------------------------------------------. -| yydefault -- do the default action for the current state. | -`-----------------------------------------------------------*/ -yydefault: - yyn = yydefact[yystate]; - if (yyn == 0) - goto yyerrlab; - goto yyreduce; - - -/*-----------------------------. -| yyreduce -- Do a reduction. | -`-----------------------------*/ -yyreduce: - /* yyn is the number of a rule to reduce with. */ - yylen = yyr2[yyn]; - - /* If YYLEN is nonzero, implement the default value of the action: - `$$ = $1'. - - Otherwise, the following line sets YYVAL to garbage. - This behavior is undocumented and Bison - users should not rely upon it. Assigning to YYVAL - unconditionally makes the parser a bit smaller, and it avoids a - GCC warning that YYVAL may be used uninitialized. */ - yyval = yyvsp[1-yylen]; - - - YY_REDUCE_PRINT (yyn); - switch (yyn) - { - case 2: -#line 65 "./web2c.y" - { - printf ("#define %s\n", uppercasify (program_name)); - block_level++; - printf ("#include \"%s\"\n", std_header); - } - break; - - case 3: -#line 72 "./web2c.y" - { printf ("\n#include \"%s\"\n", coerce_name); } - break; - - case 4: -#line 75 "./web2c.y" - { YYACCEPT; } - break; - - case 7: -#line 85 "./web2c.y" - { - ii = add_to_table (last_id); - sym_table[ii].typ = field_id_tok; - } - break; - - case 8: -#line 90 "./web2c.y" - { - ii = add_to_table (last_id); - sym_table[ii].typ = fun_id_tok; - } - break; - - case 9: -#line 95 "./web2c.y" - { - ii = add_to_table (last_id); - sym_table[ii].typ = const_id_tok; - } - break; - - case 10: -#line 100 "./web2c.y" - { - ii = add_to_table (last_id); - sym_table[ii].typ = fun_param_tok; - } - break; - - case 11: -#line 105 "./web2c.y" - { - ii = add_to_table (last_id); - sym_table[ii].typ = proc_id_tok; - } - break; - - case 12: -#line 110 "./web2c.y" - { - ii = add_to_table (last_id); - sym_table[ii].typ = proc_param_tok; - } - break; - - case 13: -#line 115 "./web2c.y" - { - ii = add_to_table (last_id); - sym_table[ii].typ = type_id_tok; - } - break; - - case 14: -#line 120 "./web2c.y" - { - ii = add_to_table (last_id); - sym_table[ii].typ = type_id_tok; - sym_table[ii].val = lower_bound; - sym_table[ii].val_sym = lower_sym; - sym_table[ii].upper = upper_bound; - sym_table[ii].upper_sym = upper_sym; - } - break; - - case 15: -#line 129 "./web2c.y" - { - ii = add_to_table (last_id); - sym_table[ii].typ = var_id_tok; - } - break; - - case 23: -#line 156 "./web2c.y" - { if (block_level > 0) my_output("{\n "); - indent++; block_level++; - } - break; - - case 24: -#line 161 "./web2c.y" - { if (block_level == 2) { - if (strcmp(fn_return_type, "void")) { - my_output("register"); - my_output(fn_return_type); - my_output("Result;"); - } - if (tex) { - sprintf(safe_string, "%s_regmem", my_routine); - my_output(safe_string); - new_line(); - } - } - } - break; - - case 25: -#line 175 "./web2c.y" - { doing_statements = true; } - break; - - case 26: -#line 177 "./web2c.y" - { - if (block_level == 2) { - if (strcmp(fn_return_type,"void")) { - my_output("return Result"); - semicolon(); - } - if (tex) { - if (uses_mem && uses_eqtb) - fprintf(coerce, - "#define %s_regmem register memoryword *mem=zmem, *eqtb=zeqtb;\n", - my_routine); - else if (uses_mem) - fprintf(coerce, "#define %s_regmem register memoryword *mem=zmem;\n", - my_routine); - else if (uses_eqtb) - fprintf(coerce, "#define %s_regmem register memoryword *eqtb=zeqtb;\n", - my_routine); - else - fprintf(coerce, "#define %s_regmem\n", my_routine); - } - my_routine[0] = '\0'; - } - indent--; block_level--; - my_output("}"); new_line(); - doing_statements = false; - } - break; - - case 28: -#line 207 "./web2c.y" - { my_output("/*"); } - break; - - case 29: -#line 209 "./web2c.y" - { my_output("*/"); } - break; - - case 32: -#line 217 "./web2c.y" - { my_output(temp); } - break; - - case 34: -#line 223 "./web2c.y" - { new_line(); } - break; - - case 37: -#line 232 "./web2c.y" - { /* `#define' must be in column 1 for pcc. */ - unsigned save = indent; - new_line (); - indent = 0; - my_output ("#define"); - indent = save; - } - break; - - case 38: -#line 240 "./web2c.y" - { ii = add_to_table (last_id); - sym_table[ii].typ = const_id_tok; - my_output (last_id); - } - break; - - case 39: -#line 244 "./web2c.y" - { my_output ("("); } - break; - - case 40: -#line 245 "./web2c.y" - { my_output (")"); } - break; - - case 41: -#line 246 "./web2c.y" - { sym_table[ii].val = last_i_num; new_line(); } - break; - - case 42: -#line 251 "./web2c.y" - { - sscanf (temp, "%ld", &last_i_num); - if (my_labs ((long) last_i_num) > 32767) - strcat (temp, "L"); - my_output (temp); - yyval = ex_32; - } - break; - - case 43: -#line 258 "./web2c.y" - { my_output(temp); yyval = ex_real; } - break; - - case 44: -#line 259 "./web2c.y" - { yyval = 0; } - break; - - case 45: -#line 260 "./web2c.y" - { yyval = ex_32; } - break; - - case 46: -#line 265 "./web2c.y" - { yyval = yyvsp[0]; } - break; - - case 47: -#line 266 "./web2c.y" - { my_output ("+"); } - break; - - case 48: -#line 267 "./web2c.y" - { yyval = max (yyvsp[-3], yyvsp[0]); } - break; - - case 49: -#line 268 "./web2c.y" - { my_output ("-"); } - break; - - case 50: -#line 269 "./web2c.y" - { yyval = max (yyvsp[-3], yyvsp[0]); } - break; - - case 51: -#line 270 "./web2c.y" - { my_output ("*"); } - break; - - case 52: -#line 271 "./web2c.y" - { yyval = max (yyvsp[-3], yyvsp[0]); } - break; - - case 53: -#line 272 "./web2c.y" - { my_output ("/"); } - break; - - case 54: -#line 273 "./web2c.y" - { yyval = max (yyvsp[-3], yyvsp[0]); } - break; - - case 55: -#line 274 "./web2c.y" - { my_output ("=="); } - break; - - case 56: -#line 275 "./web2c.y" - { yyval = max (yyvsp[-3], yyvsp[0]); } - break; - - case 57: -#line 276 "./web2c.y" - { my_output ("!="); } - break; - - case 58: -#line 277 "./web2c.y" - { yyval = max (yyvsp[-3], yyvsp[0]); } - break; - - case 59: -#line 278 "./web2c.y" - { my_output ("%"); } - break; - - case 60: -#line 279 "./web2c.y" - { yyval = max (yyvsp[-3], yyvsp[0]); } - break; - - case 61: -#line 280 "./web2c.y" - { my_output ("<"); } - break; - - case 62: -#line 281 "./web2c.y" - { yyval = max (yyvsp[-3], yyvsp[0]); } - break; - - case 63: -#line 282 "./web2c.y" - { my_output (">"); } - break; - - case 64: -#line 283 "./web2c.y" - { yyval = max (yyvsp[-3], yyvsp[0]); } - break; - - case 65: -#line 284 "./web2c.y" - { my_output ("<="); } - break; - - case 66: -#line 285 "./web2c.y" - { yyval = max (yyvsp[-3], yyvsp[0]); } - break; - - case 67: -#line 286 "./web2c.y" - { my_output (">="); } - break; - - case 68: -#line 287 "./web2c.y" - { yyval = max (yyvsp[-3], yyvsp[0]); } - break; - - case 69: -#line 288 "./web2c.y" - { my_output ("&&"); } - break; - - case 70: -#line 289 "./web2c.y" - { yyval = max (yyvsp[-3], yyvsp[0]); } - break; - - case 71: -#line 290 "./web2c.y" - { my_output ("||"); } - break; - - case 72: -#line 291 "./web2c.y" - { yyval = max (yyvsp[-3], yyvsp[0]); } - break; - - case 73: -#line 292 "./web2c.y" - { my_output ("/ ((double)"); } - break; - - case 74: -#line 293 "./web2c.y" - { yyval = max (yyvsp[-3], yyvsp[0]); my_output (")"); } - break; - - case 75: -#line 294 "./web2c.y" - { yyval = yyvsp[0]; } - break; - - case 76: -#line 299 "./web2c.y" - { my_output ("("); } - break; - - case 77: -#line 301 "./web2c.y" - { my_output (")"); yyval = yyvsp[-3]; } - break; - - case 79: -#line 307 "./web2c.y" - { - char s[132]; - get_string_literal(s); - my_output (s); - } - break; - - case 80: -#line 313 "./web2c.y" - { - char s[5]; - get_single_char(s); - my_output (s); - } - break; - - case 81: -#line 321 "./web2c.y" - { my_output (last_id); } - break; - - case 86: -#line 333 "./web2c.y" - { my_output ("typedef"); } - break; - - case 87: -#line 335 "./web2c.y" - { - ii = add_to_table(last_id); - sym_table[ii].typ = type_id_tok; - strcpy(safe_string, last_id); - last_type = ii; - } - break; - - case 88: -#line 342 "./web2c.y" - { - array_bounds[0] = 0; - array_offset[0] = 0; - } - break; - - case 89: -#line 347 "./web2c.y" - { - if (*array_offset) { - yyerror ("Cannot typedef arrays with offsets"); - } - my_output (safe_string); - my_output (array_bounds); - semicolon (); - last_type = -1; - } - break; - - case 92: -#line 365 "./web2c.y" - { - if (last_type >= 0) - { - sym_table[ii].val = lower_bound; - sym_table[ii].val_sym = lower_sym; - sym_table[ii].upper = upper_bound; - sym_table[ii].upper_sym = upper_sym; - ii= -1; - } - - /* If the bounds on an integral type are known at - translation time, select the smallest ANSI C type which - can represent it. We avoid using unsigned char and - unsigned short where possible, as ANSI compilers - (typically) convert them to int, while traditional - compilers convert them to unsigned int. We also avoid - schar if possible, since it also is different on - different compilers (see config.h). */ - if (lower_sym == -1 && upper_sym == -1) { - if (0 <= lower_bound && upper_bound <= SCHAR_MAX) - my_output ("char"); - else if (SCHAR_MIN <= lower_bound && upper_bound <= SCHAR_MAX) - my_output ("schar"); - else if (0 <= lower_bound && upper_bound <= UCHAR_MAX) - my_output ("unsigned char"); - else if (SHRT_MIN <= lower_bound && upper_bound <= SHRT_MAX) - my_output ("short"); - else if (0 <= lower_bound && upper_bound <= USHRT_MAX) - my_output ("unsigned short"); - else - my_output ("integer"); - } else { - my_output ("integer"); - } - } - break; - - case 97: -#line 414 "./web2c.y" - { - lower_bound = upper_bound; - lower_sym = upper_sym; - sscanf (temp, "%ld", &upper_bound); - upper_sym = -1; /* no sym table entry */ - } - break; - - case 98: -#line 421 "./web2c.y" - { - lower_bound = upper_bound; - lower_sym = upper_sym; - upper_bound = sym_table[l_s].val; - upper_sym = l_s; - } - break; - - case 99: -#line 428 "./web2c.y" - { /* We've changed some constants into dynamic variables. - To avoid changing all the subrange decls, just use integer. - This does not work for arrays, for which we check later. */ - lower_bound = upper_bound; - lower_sym = upper_sym; - upper_bound = 0; - upper_sym = 0; /* Translate to integer. */ - } - break; - - case 100: -#line 437 "./web2c.y" - { /* Same as var_id_tok, to avoid changing type definitions. - Should keep track of the variables we use in this way - and make sure they're all eventually defined. */ - lower_bound = upper_bound; - lower_sym = upper_sym; - upper_bound = 0; - upper_sym = 0; - } - break; - - case 101: -#line 449 "./web2c.y" - { - if (last_type >= 0) { - sym_table[last_type].var_not_needed = sym_table[l_s].var_not_needed; - sym_table[last_type].upper = sym_table[l_s].upper; - sym_table[last_type].upper_sym = sym_table[l_s].upper_sym; - sym_table[last_type].val = sym_table[l_s].val; - sym_table[last_type].val_sym = sym_table[l_s].val_sym; - } - my_output (last_id); - } - break; - - case 102: -#line 463 "./web2c.y" - { if (last_type >= 0) - sym_table[last_type].var_not_needed = true; - } - break; - - case 104: -#line 468 "./web2c.y" - { if (last_type >= 0) - sym_table[last_type].var_not_needed = true; - } - break; - - case 105: -#line 472 "./web2c.y" - { if (last_type >= 0) - sym_table[last_type].var_not_needed = true; - } - break; - - case 106: -#line 479 "./web2c.y" - { - if (last_type >= 0) { - sym_table[last_type].var_not_needed = sym_table[l_s].var_not_needed; - sym_table[last_type].upper = sym_table[l_s].upper; - sym_table[last_type].upper_sym = sym_table[l_s].upper_sym; - sym_table[last_type].val = sym_table[l_s].val; - sym_table[last_type].val_sym = sym_table[l_s].val_sym; - } - my_output (last_id); - my_output ("*"); - } - break; - - case 109: -#line 499 "./web2c.y" - { compute_array_bounds(); } - break; - - case 110: -#line 501 "./web2c.y" - { - lower_bound = sym_table[l_s].val; - lower_sym = sym_table[l_s].val_sym; - upper_bound = sym_table[l_s].upper; - upper_sym = sym_table[l_s].upper_sym; - compute_array_bounds(); - } - break; - - case 112: -#line 514 "./web2c.y" - { my_output ("struct"); my_output ("{"); indent++; } - break; - - case 113: -#line 516 "./web2c.y" - { indent--; my_output ("}"); semicolon(); } - break; - - case 116: -#line 524 "./web2c.y" - { field_list[0] = 0; } - break; - - case 117: -#line 526 "./web2c.y" - { - /*array_bounds[0] = 0; - array_offset[0] = 0;*/ - } - break; - - case 118: -#line 531 "./web2c.y" - { int i=0, j; char ltemp[80]; - while(field_list[i++] == '!') { - j = 0; - while (field_list[i]) - ltemp[j++] = field_list[i++]; - i++; - if (field_list[i] == '!') - ltemp[j++] = ','; - ltemp[j] = 0; - my_output (ltemp); - } - semicolon(); - } - break; - - case 122: -#line 552 "./web2c.y" - { int i=0, j=0; - while (field_list[i] == '!') - while(field_list[i++]); - ii = add_to_table(last_id); - sym_table[ii].typ = field_id_tok; - field_list[i++] = '!'; - while (last_id[j]) - field_list[i++] = last_id[j++]; - field_list[i++] = 0; - field_list[i++] = 0; - } - break; - - case 123: -#line 564 "./web2c.y" - { int i=0, j=0; - while (field_list[i] == '!') - while(field_list[i++]); - field_list[i++] = '!'; - while (last_id[j]) - field_list[i++] = last_id[j++]; - field_list[i++] = 0; - field_list[i++] = 0; - } - break; - - case 124: -#line 577 "./web2c.y" - { my_output ("text /* of "); } - break; - - case 125: -#line 579 "./web2c.y" - { my_output ("*/"); } - break; - - case 130: -#line 593 "./web2c.y" - { - var_list[0] = 0; - array_bounds[0] = 0; - array_offset[0] = 0; - var_formals = false; - ids_paramed = 0; - } - break; - - case 131: -#line 601 "./web2c.y" - { - array_bounds[0] = 0; - array_offset[0] = 0; - } - break; - - case 132: -#line 606 "./web2c.y" - { fixup_var_list(); } - break; - - case 135: -#line 614 "./web2c.y" - { int i=0, j=0; - ii = add_to_table(last_id); - sym_table[ii].typ = var_id_tok; - sym_table[ii].var_formal = var_formals; - param_id_list[ids_paramed++] = ii; - while (var_list[i] == '!') - while(var_list[i++]); - var_list[i++] = '!'; - while (last_id[j]) - var_list[i++] = last_id[j++]; - var_list[i++] = 0; - var_list[i++] = 0; - } - break; - - case 136: -#line 628 "./web2c.y" - { int i=0, j=0; - ii = add_to_table(last_id); - sym_table[ii].typ = var_id_tok; - sym_table[ii].var_formal = var_formals; - param_id_list[ids_paramed++] = ii; - while (var_list[i] == '!') - while (var_list[i++]); - var_list[i++] = '!'; - while (last_id[j]) - var_list[i++] = last_id[j++]; - var_list[i++] = 0; - var_list[i++] = 0; - } - break; - - case 137: -#line 642 "./web2c.y" - { int i=0, j=0; - ii = add_to_table(last_id); - sym_table[ii].typ = var_id_tok; - sym_table[ii].var_formal = var_formals; - param_id_list[ids_paramed++] = ii; - while (var_list[i] == '!') - while(var_list[i++]); - var_list[i++] = '!'; - while (last_id[j]) - var_list[i++] = last_id[j++]; - var_list[i++] = 0; - var_list[i++] = 0; - } - break; - - case 139: -#line 660 "./web2c.y" - { my_output ("void mainbody() {"); - indent++; - new_line (); - } - break; - - case 140: -#line 665 "./web2c.y" - { indent--; - my_output ("}"); - new_line (); - } - break; - - case 143: -#line 677 "./web2c.y" - { new_line(); remove_locals(); } - break; - - case 144: -#line 679 "./web2c.y" - { new_line(); remove_locals(); } - break; - - case 146: -#line 687 "./web2c.y" - { ii = add_to_table(last_id); - if (debug) - fprintf(stderr, "%3d Procedure %s\n", pf_count++, last_id); - sym_table[ii].typ = proc_id_tok; - strcpy(my_routine, last_id); - uses_eqtb = uses_mem = false; - my_output ("void"); - new_line (); - orig_out = out; - out = 0; - } - break; - - case 147: -#line 699 "./web2c.y" - { strcpy(fn_return_type, "void"); - do_proc_args(); - gen_function_head(); } - break; - - case 148: -#line 703 "./web2c.y" - { ii = l_s; - if (debug) - fprintf(stderr, "%3d Procedure %s\n", pf_count++, last_id); - strcpy(my_routine, last_id); - my_output ("void"); - new_line (); - } - break; - - case 149: -#line 711 "./web2c.y" - { strcpy(fn_return_type, "void"); - do_proc_args(); - gen_function_head(); - } - break; - - case 150: -#line 719 "./web2c.y" - { - strcpy (z_id, last_id); - mark (); - ids_paramed = 0; - } - break; - - case 151: -#line 725 "./web2c.y" - { sprintf (z_id, "z%s", last_id); - ids_paramed = 0; - if (sym_table[ii].typ == proc_id_tok) - sym_table[ii].typ = proc_param_tok; - else if (sym_table[ii].typ == fun_id_tok) - sym_table[ii].typ = fun_param_tok; - mark(); - } - break; - - case 155: -#line 741 "./web2c.y" - { ids_typed = ids_paramed; } - break; - - case 156: -#line 743 "./web2c.y" - { int i, need_var; - i = search_table(last_id); - need_var = !sym_table[i].var_not_needed; - for (i=ids_typed; i"); } - break; - - case 227: -#line 951 "./web2c.y" - { yyval = max (yyvsp[-3], yyvsp[0]); } - break; - - case 228: -#line 952 "./web2c.y" - { my_output ("<="); } - break; - - case 229: -#line 953 "./web2c.y" - { yyval = max (yyvsp[-3], yyvsp[0]); } - break; - - case 230: -#line 954 "./web2c.y" - { my_output (">="); } - break; - - case 231: -#line 955 "./web2c.y" - { yyval = max (yyvsp[-3], yyvsp[0]); } - break; - - case 232: -#line 956 "./web2c.y" - { my_output ("&&"); } - break; - - case 233: -#line 957 "./web2c.y" - { yyval = max (yyvsp[-3], yyvsp[0]); } - break; - - case 234: -#line 958 "./web2c.y" - { my_output ("||"); } - break; - - case 235: -#line 959 "./web2c.y" - { yyval = max (yyvsp[-3], yyvsp[0]); } - break; - - case 236: -#line 961 "./web2c.y" - { my_output ("/ ((double)"); } - break; - - case 237: -#line 963 "./web2c.y" - { yyval = max (yyvsp[-3], yyvsp[0]); my_output (")"); } - break; - - case 238: -#line 965 "./web2c.y" - { yyval = yyvsp[0]; } - break; - - case 240: -#line 971 "./web2c.y" - { my_output ("- (integer)"); } - break; - - case 241: -#line 973 "./web2c.y" - { my_output ("!"); } - break; - - case 242: -#line 978 "./web2c.y" - { my_output ("("); } - break; - - case 243: -#line 980 "./web2c.y" - { my_output (")"); yyval = yyvsp[-3]; } - break; - - case 246: -#line 984 "./web2c.y" - { my_output (last_id); my_output ("()"); } - break; - - case 247: -#line 986 "./web2c.y" - { my_output (last_id); } - break; - - case 249: -#line 991 "./web2c.y" - { my_output ("("); } - break; - - case 250: -#line 992 "./web2c.y" - { my_output (")"); } - break; - - case 252: -#line 997 "./web2c.y" - { my_output (","); } - break; - - case 255: -#line 1004 "./web2c.y" - { my_output (last_id); } - break; - - case 258: -#line 1013 "./web2c.y" - { my_output (last_id); my_output ("()"); } - break; - - case 259: -#line 1015 "./web2c.y" - { my_output (last_id); - ii = add_to_table(last_id); - sym_table[ii].typ = proc_id_tok; - my_output ("()"); - } - break; - - case 260: -#line 1021 "./web2c.y" - { my_output (last_id); } - break; - - case 262: -#line 1026 "./web2c.y" - {if (doreturn(temp)) { - if (strcmp(fn_return_type,"void")) - my_output ("return Result"); - else - my_output ("return"); - } else { - sprintf(safe_string, "goto lab%s", - temp); - my_output (safe_string); - } - } - break; - - case 271: -#line 1056 "./web2c.y" - { my_output ("if"); my_output ("("); } - break; - - case 272: -#line 1058 "./web2c.y" - { my_output (")"); new_line (); } - break; - - case 274: -#line 1063 "./web2c.y" - { my_output ("else"); } - break; - - case 276: -#line 1068 "./web2c.y" - { my_output ("switch"); my_output ("("); } - break; - - case 277: -#line 1070 "./web2c.y" - { my_output (")"); new_line(); - my_output ("{"); indent++; - } - break; - - case 278: -#line 1074 "./web2c.y" - { indent--; my_output ("}"); new_line(); } - break; - - case 281: -#line 1082 "./web2c.y" - { my_output ("break"); semicolon(); } - break; - - case 284: -#line 1090 "./web2c.y" - { my_output ("case"); - my_output (temp); - my_output (":"); new_line(); - } - break; - - case 285: -#line 1095 "./web2c.y" - { my_output ("default:"); new_line(); } - break; - - case 291: -#line 1108 "./web2c.y" - { my_output ("while"); - my_output ("("); - } - break; - - case 292: -#line 1112 "./web2c.y" - { my_output (")"); } - break; - - case 294: -#line 1117 "./web2c.y" - { my_output ("do"); my_output ("{"); indent++; } - break; - - case 295: -#line 1119 "./web2c.y" - { indent--; my_output ("}"); - my_output ("while"); my_output ("( ! ("); - } - break; - - case 296: -#line 1123 "./web2c.y" - { my_output (") )"); } - break; - - case 297: -#line 1127 "./web2c.y" - { - my_output ("{"); - my_output ("register"); - my_output ("integer"); - if (strict_for) - my_output ("for_begin,"); - my_output ("for_end;"); - } - break; - - case 298: -#line 1136 "./web2c.y" - { if (strict_for) - my_output ("for_begin"); - else - my_output (control_var); - my_output ("="); } - break; - - case 299: -#line 1142 "./web2c.y" - { my_output ("; if ("); - if (strict_for) my_output ("for_begin"); - else my_output (control_var); - my_output (relation); - my_output ("for_end)"); - if (strict_for) { - my_output ("{"); - my_output (control_var); - my_output ("="); - my_output ("for_begin"); - semicolon(); - } - my_output ("do"); - indent++; - new_line(); - } - break; - - case 300: -#line 1159 "./web2c.y" - { - char *top = strrchr (for_stack, '#'); - indent--; - new_line(); - my_output ("while"); - my_output ("("); - my_output (top+1); - my_output (")"); - my_output (";"); - my_output ("}"); - if (strict_for) - my_output ("}"); - *top=0; - new_line(); - } - break; - - case 301: -#line 1177 "./web2c.y" - { strcpy(control_var, last_id); } - break; - - case 302: -#line 1181 "./web2c.y" - { my_output (";"); } - break; - - case 303: -#line 1183 "./web2c.y" - { - strcpy(relation, "<="); - my_output ("for_end"); - my_output ("="); } - break; - - case 304: -#line 1188 "./web2c.y" - { - sprintf(for_stack + strlen(for_stack), - "#%s++ < for_end", control_var); - } - break; - - case 305: -#line 1193 "./web2c.y" - { my_output (";"); } - break; - - case 306: -#line 1195 "./web2c.y" - { - strcpy(relation, ">="); - my_output ("for_end"); - my_output ("="); } - break; - - case 307: -#line 1200 "./web2c.y" - { - sprintf(for_stack + strlen(for_stack), - "#%s-- > for_end", control_var); - } - break; - - - } - -/* Line 999 of yacc.c. */ -#line 3135 "y.tab.c" - - yyvsp -= yylen; - yyssp -= yylen; - - - YY_STACK_PRINT (yyss, yyssp); - - *++yyvsp = yyval; - - - /* Now `shift' the result of the reduction. Determine what state - that goes to, based on the state we popped back to and the rule - number reduced by. */ - - yyn = yyr1[yyn]; - - yystate = yypgoto[yyn - YYNTOKENS] + *yyssp; - if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp) - yystate = yytable[yystate]; - else - yystate = yydefgoto[yyn - YYNTOKENS]; - - goto yynewstate; - - -/*------------------------------------. -| yyerrlab -- here on detecting error | -`------------------------------------*/ -yyerrlab: - /* If not already recovering from an error, report this error. */ - if (!yyerrstatus) - { - ++yynerrs; -#if YYERROR_VERBOSE - yyn = yypact[yystate]; - - if (YYPACT_NINF < yyn && yyn < YYLAST) - { - YYSIZE_T yysize = 0; - int yytype = YYTRANSLATE (yychar); - char *yymsg; - int yyx, yycount; - - yycount = 0; - /* Start YYX at -YYN if negative to avoid negative indexes in - YYCHECK. */ - for (yyx = yyn < 0 ? -yyn : 0; - yyx < (int) (sizeof (yytname) / sizeof (char *)); yyx++) - if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR) - yysize += yystrlen (yytname[yyx]) + 15, yycount++; - yysize += yystrlen ("syntax error, unexpected ") + 1; - yysize += yystrlen (yytname[yytype]); - yymsg = (char *) YYSTACK_ALLOC (yysize); - if (yymsg != 0) - { - char *yyp = yystpcpy (yymsg, "syntax error, unexpected "); - yyp = yystpcpy (yyp, yytname[yytype]); - - if (yycount < 5) - { - yycount = 0; - for (yyx = yyn < 0 ? -yyn : 0; - yyx < (int) (sizeof (yytname) / sizeof (char *)); - yyx++) - if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR) - { - const char *yyq = ! yycount ? ", expecting " : " or "; - yyp = yystpcpy (yyp, yyq); - yyp = yystpcpy (yyp, yytname[yyx]); - yycount++; - } - } - yyerror (yymsg); - YYSTACK_FREE (yymsg); - } - else - yyerror ("syntax error; also virtual memory exhausted"); - } - else -#endif /* YYERROR_VERBOSE */ - yyerror ("syntax error"); - } - - - - if (yyerrstatus == 3) - { - /* If just tried and failed to reuse lookahead token after an - error, discard it. */ - - /* Return failure if at end of input. */ - if (yychar == YYEOF) - { - /* Pop the error token. */ - YYPOPSTACK; - /* Pop the rest of the stack. */ - while (yyss < yyssp) - { - YYDSYMPRINTF ("Error: popping", yystos[*yyssp], yyvsp, yylsp); - yydestruct (yystos[*yyssp], yyvsp); - YYPOPSTACK; - } - YYABORT; - } - - YYDSYMPRINTF ("Error: discarding", yytoken, &yylval, &yylloc); - yydestruct (yytoken, &yylval); - yychar = YYEMPTY; - - } - - /* Else will try to reuse lookahead token after shifting the error - token. */ - goto yyerrlab1; - - -/*----------------------------------------------------. -| yyerrlab1 -- error raised explicitly by an action. | -`----------------------------------------------------*/ -yyerrlab1: - yyerrstatus = 3; /* Each real token shifted decrements this. */ - - for (;;) - { - yyn = yypact[yystate]; - if (yyn != YYPACT_NINF) - { - yyn += YYTERROR; - if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR) - { - yyn = yytable[yyn]; - if (0 < yyn) - break; - } - } - - /* Pop the current state because it cannot handle the error token. */ - if (yyssp == yyss) - YYABORT; - - YYDSYMPRINTF ("Error: popping", yystos[*yyssp], yyvsp, yylsp); - yydestruct (yystos[yystate], yyvsp); - yyvsp--; - yystate = *--yyssp; - - YY_STACK_PRINT (yyss, yyssp); - } - - if (yyn == YYFINAL) - YYACCEPT; - - YYDPRINTF ((stderr, "Shifting error token, ")); - - *++yyvsp = yylval; - - - yystate = yyn; - goto yynewstate; - - -/*-------------------------------------. -| yyacceptlab -- YYACCEPT comes here. | -`-------------------------------------*/ -yyacceptlab: - yyresult = 0; - goto yyreturn; - -/*-----------------------------------. -| yyabortlab -- YYABORT comes here. | -`-----------------------------------*/ -yyabortlab: - yyresult = 1; - goto yyreturn; - -#ifndef yyoverflow -/*----------------------------------------------. -| yyoverflowlab -- parser overflow comes here. | -`----------------------------------------------*/ -yyoverflowlab: - yyerror ("parser stack overflow"); - yyresult = 2; - /* Fall through. */ -#endif - -yyreturn: -#ifndef yyoverflow - if (yyss != yyssa) - YYSTACK_FREE (yyss); -#endif - return yyresult; -} - - -#line 1205 "./web2c.y" - - -static void -compute_array_bounds P1H(void) -{ - long lb; - char tmp[200]; - - if (lower_sym == 0 || upper_sym == 0) { - yyerror ("Cannot handle variable subrange in array decl"); - } - else if (lower_sym == -1) { /* lower is a constant */ - lb = lower_bound - 1; - if (lb==0) lb = -1; /* Treat lower_bound==1 as if lower_bound==0 */ - if (upper_sym == -1) /* both constants */ - sprintf(tmp, "[%ld]", upper_bound - lb); - else { /* upper a symbol, lower constant */ - if (lb < 0) - sprintf(tmp, "[%s + %ld]", - symbol(upper_sym), (-lb)); - else - sprintf(tmp, "[%s - %ld]", - symbol(upper_sym), lb); - } - if (lower_bound < 0 || lower_bound > 1) { - if (*array_bounds) { - yyerror ("Cannot handle offset in second dimension"); - } - if (lower_bound < 0) { - sprintf(array_offset, "+%ld", -lower_bound); - } else { - sprintf(array_offset, "-%ld", lower_bound); - } - } - strcat(array_bounds, tmp); - } else { /* lower is a symbol */ - if (upper_sym != -1) /* both are symbols */ - sprintf(tmp, "[%s - %s + 1]", symbol(upper_sym), - symbol(lower_sym)); - else { /* upper constant, lower symbol */ - sprintf(tmp, "[%ld - %s]", upper_bound + 1, - symbol(lower_sym)); - } - if (*array_bounds) { - yyerror ("Cannot handle symbolic offset in second dimension"); - } - sprintf(array_offset, "- (int)(%s)", symbol(lower_sym)); - strcat(array_bounds, tmp); - } -} - - -/* Kludge around negative lower array bounds. */ - -static void -fixup_var_list () -{ - int i, j; - char output_string[100], real_symbol[100]; - - for (i = 0; var_list[i++] == '!'; ) - { - for (j = 0; (real_symbol[j++] = var_list[i++]); ) - ; - if (*array_offset) - { - fprintf (out, "\n#define %s (%s %s)\n ", - real_symbol, next_temp, array_offset); - strcpy (real_symbol, next_temp); - /* Add the temp to the symbol table, so that change files can - use it later on if necessary. */ - j = add_to_table (next_temp); - sym_table[j].typ = var_id_tok; - find_next_temp (); - } - sprintf (output_string, "%s%s%c", real_symbol, array_bounds, - var_list[i] == '!' ? ',' : ' '); - my_output (output_string); - } - semicolon (); -} - - -/* If we're not processing TeX, we return false. Otherwise, - return true if the label is "10" and we're not in one of four TeX - routines where the line labeled "10" isn't the end of the routine. - Otherwise, return 0. */ - -static boolean -doreturn P1C(string, label) -{ - return - tex - && STREQ (label, "10") - && !STREQ (my_routine, "macrocall") - && !STREQ (my_routine, "hpack") - && !STREQ (my_routine, "vpackage") - && !STREQ (my_routine, "trybreak"); -} - - -/* Return the absolute value of a long. */ -static long -my_labs P1C(long, x) -{ - if (x < 0L) return(-x); - return(x); -} - - -/* Output current function declaration to coerce file. */ - -static void -do_proc_args P1H(void) -{ - /* If we want ANSI code and one of the parameters is a var - parameter, then use the #define to add the &. We do this by - adding a 'z' at the front of the name. gen_function_head will do - the real work. */ - int i; - int var = 0; - for (i = 0; i < ids_paramed; ++i) - var += sym_table[param_id_list[i]].var_formal; - if (var) { - for (i = strlen (z_id); i >= 0; --i) - z_id[i+1] = z_id[i]; - z_id[0] = 'z'; - } - - /* We can't use our P?H macros here, since there might be an arbitrary - number of function arguments. */ - fprintf (coerce, "%s %s AA((", fn_return_type, z_id); - if (ids_paramed == 0) fprintf (coerce, "void"); - for (i = 0; i < ids_paramed; i++) { - if (i > 0) - putc (',', coerce); - fprintf (coerce, "%s %s", arg_type[i], symbol (param_id_list[i])); - } - fprintf (coerce, "));\n"); -} - -static void -gen_function_head P1H(void) -{ - int i; - - if (strcmp(my_routine, z_id)) { - fprintf(coerce, "#define %s(", my_routine); - for (i=0; i 0) - fprintf(coerce, ", %s", symbol(param_id_list[i])); - else - fprintf(coerce, "%s", symbol(param_id_list[i])); - } - fprintf(coerce, ") %s(", z_id); - for (i=0; i 0) - fputs(", ", coerce); - fprintf(coerce, "(%s) ", arg_type[i]); - fprintf(coerce, "%s(%s)", - sym_table[param_id_list[i]].var_formal?"&":"", - symbol(param_id_list[i])); - } - fprintf(coerce, ")\n"); - } - out = orig_out; - new_line (); - /* We can't use our P?C macros here, since there might be an arbitrary - number of function arguments. We have to include the #ifdef in the - generated code, or we'd generate different code with and without - prototypes, which might cause splitup to create different numbers - of files in each case. */ - fputs ("#ifdef HAVE_PROTOTYPES\n", out); - my_output (z_id); - my_output ("("); - if (ids_paramed == 0) my_output ("void"); - for (i=0; i 0) my_output (","); - my_output (arg_type[i]); - my_output (symbol (param_id_list[i])); - } - my_output (")"); - new_line (); - fputs ("#else\n", out); - my_output (z_id); - my_output ("("); - for (i=0; i 0) my_output (","); - my_output (symbol (param_id_list[i])); - } - my_output (")"); - new_line (); - indent++; - for (i=0; i