diff --git a/contrib/flex/ChangeLog b/contrib/flex/ChangeLog index 4d0c7595a7f7..cf9955428819 100644 --- a/contrib/flex/ChangeLog +++ b/contrib/flex/ChangeLog @@ -1,3 +1,2775 @@ +2017-05-06 Will Estes + + * po/ca.po, po/da.po, po/de.po, po/eo.po, po/es.po, po/fi.po, + po/fr.po, po/ga.po, po/hr.po, po/ko.po, po/nl.po, po/pl.po, + po/pt_BR.po, po/ro.po, po/ru.po, po/sr.po, po/sv.po, po/tr.po, + po/vi.po, po/zh_CN.po, po/zh_TW.po: gettext: pulled latest + translations; recompiled against current sources + +2017-05-06 Will Estes + + * NEWS: version 2.6.4 * NEWS: Record release date. + +2017-05-06 Will Estes + + * .prev-version: note previous version + +2017-05-06 Will Estes + + * NEWS: doc: update NEWS for upcoming release + +2017-05-04 viktor.shepel + + * doc/flex.texi: doc: Correct typo in C code sample in manual + +2017-05-04 Explorer09 + + * src/flex.skl: scanner: Mention %# comments are removed when + building skel.c + +2017-05-02 Demi Obenour + + * src/flex.skl: Honor user definitions of yy_* macros The user may have defined the yy_* macros themselves. In that case, + don't clobber them. + +2017-05-02 Demi Obenour + + * src/flex.skl, src/main.c: Don't leak macro definitions into header + files This allowed unnamespaced definitions to leak into header files, + breaking client code. Fixes #142 + +2017-05-03 Demi Obenour + + * src/scan.l: scanner: Check for 0 bracecount when EOL ends quoted + literal. This can happen in the case of // comments (which Flex doesn't + handle specially). + +2017-05-03 Demi Obenour + + * src/scan.l: scanner: when bracelevel is negative, treat as zero. This really should never happen, but this at least fixes the + breakage on Verilator. + +2017-04-02 Jeff Smith + + * tests/Makefile.am, tests/tableopts.am, tests/tableopts.sh: test: + enable more silent building of tests. When running 'make V=0 check', some compile and link steps are made + less verbose and some are not. This cleans up most steps that are + not. These have no effect if V=0 is not specified. + +2017-05-03 Demi Obenour + + * src/Makefile.am, src/misc.c, src/mkskel.sh: build: Delete comments + from skeleton file. Since the comments in flex.skl are, by hypothesis, not needed in + skel.c, we remove them. THis reduces the size of the resulting + executable somewhat. + +2017-05-03 Explorer09 + + * Makefile.am, configure.ac, lib/Makefile.am: build: do not generate + lib/Makefile.in. Files in lib/ are picked up and built using makefile directives in + src/Makefile.am. Remove the need to generate lib/Makefile.in and the + stub lib/Makefile.am. + +2017-05-02 Will Estes + + * po/POTFILES.in: gettext: revert listing generated .c files + +2017-04-10 Jeff Smith + + * src/filter.c: FLEX_EXIT() is the preferred way to exit flex + +2017-04-11 Explorer09 + + * src/misc.c: Fix myesc() 'sptr' conditionals * Don't call isascii() here. It's deprecated in POSIX and not needed for myesc's case. * The check of the character class and range here should match + what's defined as {ESCSEQ} in scan.l, so for [[:xdigit:]] we use + isxdigit(); for [0-7] we check '0' <= c <= '7' (not isdigit(c) + because isdigit is locale-dependant in standard's sense) * Add missing length limit for "\x" ( is at most 2 digits) + +2017-04-11 Explorer09 + + * src/flexdef.h, src/misc.c: Obsolete htoui() and otoui(); use + strtoul(). No sense to keep these two function when libc's strtoul() can do the + same job, but better. + +2017-04-12 Todd C. Miller + + * src/flex.skl: scanner: update yy_buf_size after yyrealloc() + +2017-05-02 Simon Sobisch + + * configure.ac: build: use lowest versions for gettext, automake. + +2017-05-02 Simon Sobisch + + * po/Makevars, po/Rules-getpo, po/update_linguas.sh: gettext: more + recent makevars; new script to update po files. Previously, "make dist" and similar commands would cause the po + files to be updated, which is incorrect. The more recent version now + used should not do this. Replaced Rules-getpo by extra script to manually update and rebuild + all po files. + +2017-05-02 Simon Sobisch + + * po/POTFILES.in: gettext: list generated files instead of flex, + bison sources in POTFILES.in. Listing the flex and bison sources -- as the gettext manual suggests + -- causes warnings. Listing the generated C files for the lexer and + parser removes the warnings. Since both files contain line + directives, any translator who needs to refer back to those files + should be able to find the context in which strings are needed. + +2017-05-02 Simon Sobisch + + * autogen.sh: build: only touch ChangeLog if it does not exist + +2017-05-02 Simon Sobisch + + * configure.ac, doc/Makefile.am: build: list earliest useable + versions for automake + +2017-05-02 Simon Sobisch + + * autogen.sh: build: check for how to call libtoolize. Previously, we would call libtoolize and if that failed, we would + call glibtoolize since some platforms have the libtoolize program + under that name. Instead, we check to see if the environment variable LIBTOOLIZE is + set and use that if so. Otherwise, we try to find a program + "libtoolize" on the path and failing that glibtoolize. We alert the + user if no suitable program can be found. + +2017-01-06 Alastair Hughes + + * configure.ac, m4/ax_prog_cc_for_build.m4, src/Makefile.am: build: + support cross compiling. Check for cross compiling. If cross compiling, build stage1flex + using a custom link command. We also override LDADD since that adds + the replacement implementations that are cross compiled, and instead + always use the replacement library implementations. We don't use BUILD_OBJEXT and BUILD_EXEEXT since it seems that + automake does not support these. Fixes #78. + +2017-02-17 Explorer09 + + * configure.ac, src/flexdef.h: build: Include ; add + strcasecmp() check to configure. strings.h (not string.h) is the standard-defined include header for + strcasecmp(). Include for portability (even though glibc + exposes strcasecmp() declaration also in by default). + +2017-02-17 Explorer09 + + * configure.ac, src/flexdef.h: build: Let configure error if missing + required functions, headers.. `configure` will now error if a required header or function is not + found on the system. Also add comments on optional functions checks. Add sys/stats.h and sys/wait.h to list of required headers in + configure. This fixes issue #180. + +2017-02-12 Explorer09 + + * src/dfa.c, src/flexdef.h: scanner: compute powers of two faster. Replace the naive "for" loop in determining power of two with a + clever bitwise solution. This code is around the Internet already + and is in Public Domain. + +2017-02-07 Explorer09 + + * configure.ac, tests/Makefile.am, tests/pthread.l: test: skip + pthread test when needed files missing. "Unlisting" the pthread test when libpthread is not available is + never a good idea. Should let it compile into a stub program that + returns the "skip" status. configure.ac and tests/Makefile.am are edited so that pthread test + can be built anyway, but only works (not as the stub) when both + pthread.h and libpthread are detected on the system. Also fix a small typo in tests/pthread.l comments. + +2017-02-16 Will Estes + + * src/Makefile.am: build: mv scan.c when building dist. Revert change to copy scan.c when building the distribution archive. + Move it instead. This satisfies automake's notions of what should be + clean and ensures that the distribution archive contains a + just-built copy of scan.c. Fixes #186 + +2017-02-06 Will Estes + + * src/Makefile.am: build: don't assume distdir/scan.c is writeable + +2017-01-02 Explorer09 + + * src/Makefile.am: build: Add dist-hook to force remake scan.c. This will ensure the flex scanner included in release tarball being + generated by exactly the flex version to be released. Here's one catch after this change: You may not run "make dist" or + "make distdir" if you configure the flex source to be + cross-compiled. + +2017-01-02 Explorer09 + + * src/Makefile.am: build: respect '--localedir' from configure. Makefile shouldn't overwrite the 'localedir' variable, because + that's what '--localedir' option in 'configure' is for. + +2017-01-02 Explorer09 + + * src/Makefile.am: build: Remove "-I$(top_srcdir)/intl" from + CPPFLAGS. Revert commit e02c3d27eeb6b53ec82532ab080c23ce26813fd4 ("include the intl/ subdirectory when searching for include files") Flex doesn't come with libintl source code, so inclusion of + $(top_srcdir)/intl subdirectory during compiling is unnecessary. This flag seems to be left after "remove intl from dist" (commit + 8f45da06adbd7dbcdfdbdd5c20ff4c47fc504f35) without someone cleaning + this up. Users who need to build with gettext functionality from libintl + would use the '--with-libintl-prefix' configure option. + +2017-02-03 Explorer09 + + * src/regex.c: scanner: fix regcomp's error reporting, double + malloc. Fix unneeded double malloc - let regerror(). Write its message after + our "regcomp for (regex) failed: " string. Also, errbuf cannot be free()'d because of flexfatal containing a + longjmp. + +2017-01-03 Explorer09 + + * tests/Makefile.am, tests/no_bison_stub.c: test: Skip bison tests + if bison is not available + +2017-01-03 Explorer09 + + * configure.ac: build: remove repeated bison detection from + configure. AC_PROG_YACC already detects the bison program. We can just use it, + and make notice if [ $YACC != 'bison -y' ] Remove unused AC_SUBST([BISON], ...). Add AM_CONDITIONAL([HAVE_BISON], ...) so that we can skip bison + tests in testsuite when bison is absent. We don't make any attempt to detect other yacc implementations since + flex is developed with bison. While it would be possible, the need + isn't there right now. It would be possible to add a --with-parser + option that defaulted to bison if such a need cropped up. + +2017-01-01 Explorer09 + + * src/Makefile.am: build: fix Makefile parse.h dependency clauses. The current clauses stating "main.c: parse.h" and "yylex.c: parse.h" + do not work as expected. Make did not try to build parse.h upon + building flex-main.o as it would think main.c exist already and + ignore the clause. Fix this by explicitly stating that the .o files + depend on parse.h instead. This dependency bug only happens if user builds flex from a + checked-out repository. + +2017-01-03 Explorer09 + + * tests/Makefile.am: test: Remake *_scanner.c if *_scanner.h is + missing. If a ${foo}_scanner.c exists but the respective ${foo}_scanner.h is + missing, then 'make' can halt. Fix this by deleting the + ${foo}_scanner.c file and then remake it. This rule is the same as + the automake-generated rule for .c files that require LEX or YACC + (except automake will use ylwrap). + +2016-12-31 Explorer09 + + * tests/Makefile.am: test: remove BUILT_SOURCES; add missing + dependencies. Without BUILT_SOURCES in Makefile, no test sources in tests/ will be + built when using the default "make all" target. This is desireable + for people who are just building flex but who do not want to run, + and therefore, build any part of the test suite. Also fix missing sources dependencies: bison_nr_scanner.$(OBJEXT): bison_nr_parser.h bison_yylloc_scanner.$(OBJEXT): bison_yylloc_parser.h bison_yylval_scanner.$(OBJEXT): bison_yylval_parser.h + +2017-01-19 Explorer09 + + * configure.ac, lib/reallocarray.c, src/flexint.h, src/misc.c: + build: detect overflow for [re]allocate_array. Use reallocarray() when we have it (i.e. in OpenBSD system). When we + don't, use equivalent overflow detection for our allocate_array and + reallocate_array functions. Remove lib/reallocarray.c from our LIBOBJS as we no longer need it. Provide a fallback SIZE_MAX macro definition in flexint.h (not + preprocessor friendly, but enough for our reallocate_array use + case). + +2017-01-23 Will Estes + + * NEWS, configure.ac: doc: v2.6.4 + +2017-01-23 Thomas Klausner + + * src/Makefile.am: build: more BSD make and vpath build fixes. BSD make doesn't like $< with more than one source specified. + Additionally, make sure to specify srcdir when referring to source + files since vpath builds depend on this. + +2017-01-22 Thomas Klausner + + * src/Makefile.am: build: Fix skel.c generation with BSD make + +2017-01-22 Christos Zoulas + + * src/flex.skl: Add more defines in the non-reentrant part. Fix the reentrant part; don't "#define yyfoo yyfoo" because it + breaks code that does #ifndef yywrap .. + +2017-01-22 Christos Zoulas + + * src/flexdef.h: scanner: Add yyparse prototype + +2017-01-22 Thomas Klausner + + * src/flex.skl: scanner: move comment for consistency + +2017-01-22 Christos Zoulas + + * src/misc.c: scanner: Use array instead of pointer + +2017-01-22 Christos Zoulas + + * src/main.c: scanner: manage path to m4 better. Avoid alloca() for SSP; it is better anyway; since we don't need to + strdup the path. + +2017-01-22 Christos Zoulas + + * src/gen.c: scanner: Avoid creating unused label + +2017-01-22 Christos Zoulas + + * src/buf.c: Cast argument to avoid arithmetic on void *. + +2017-01-22 Christos Zoulas + + * src/scan.l: scanner: Use strncpy + +2017-01-22 Christos Zoulas + + * src/main.c: scanner: Use prefix when defining yywrap to avoid + redefinition. Fixes regression introduced in v2.6.3. + +2017-01-22 Christos Zoulas + + * src/flexdef.h, src/misc.c: scanner: Include stdarg.h for va_list + +2017-01-22 Christos Zoulas + + * src/flexdef.h, src/main.c, src/parse.y: scanner: Rename warn to + lwarn. This avoids a naming conflict in NetBSD's libc. + +2017-01-01 Explorer09 + + * tests/README: test: document automake convention for skipped exit + status. + +2017-01-03 Explorer09 + + * tests/Makefile.am: test: let testwrapper scripts be run by + ${SHELL}. This allows user to use a different shell if /bin/sh has problems. + The use of $SHELL (variable) to run scripts is already an Automake + convention. All shell scripts in build-aux are run by $SHELL. + +2017-01-02 Explorer09 + + * tests/options.cn, tests/tableopts.sh, + tests/testwrapper-direct.sh, tests/testwrapper.sh: test: Remove test + scripts bashisms. They now all work under a POSIX compliant sh. Specifically, 'dash' + can now be used for running "make check" tests. Note that none of these scripts has ever been using a pipe, so `set + -o pipefail` is unnecessary and removed. + +2017-01-02 Explorer09 + + * tests/testwrapper.sh: test: exit on '-1' test non-zero status. If a '-1' test program returns a non-zero status, don't go further + and compare it's (numeric) output values. This allows a '-1' test to + indicate a "skip" status or an otherwise error. (Currently no such + '-1' test would skip like this, though.) Shell syntax note: `set -e` will not exit with the syntax like this + `test $(false) = $(false);`. The exit statuses of `false` in the + example will be ignored instead. But putting the output in a + variable, such as `VAR=$(false)`, DOES exit. + +2017-01-02 Explorer09 + + * Makefile.am, src/Makefile.am: build: Fix 'make indent' target This 'make indent' target has not been working since the directories + reorganization in flex 2.6.0. Now make it work again. Note that the current indent profile breaks many styles of existing + code. The indent target should not be used until the .indent.pro + options are reviewed for desireability. + +2017-01-01 Explorer09 + + * configure.ac: build: Simplify indent program detection + +2017-01-12 Tobias Klauser + + * src/filter.c: filter: Don't emit #line if %option noline set One place emitting a #line directive to the generated header was + missed in commit 647a92b9f4 when resolving #55. Fix it to respect + gen_line_dirs as well. + +2017-01-12 Will Estes + + * po/ca.po, po/da.po, po/de.po, po/eo.po, po/es.po, po/fi.po, + po/fr.po, po/ga.po, po/hr.po, po/ko.po, po/nl.po, po/pl.po, + po/pt_BR.po, po/ro.po, po/ru.po, po/sr.po, po/sv.po, po/tr.po, + po/vi.po, po/zh_CN.po, po/zh_TW.po: translation: refresh po files + from translation project + +2017-01-10 Harald van Dijk + + * src/flex.skl: c++: Fix yyrestart(NULL) SEGV. Binding a reference to a dereferenced null pointer is invalid and + compilers optimise away the &file == 0 check. We need a real stream. yyin is available already, and yyrestart(NULL) is only supported + when yyin will not be used, so there is no harm in just passing in + that. Since we now always have a valid stream, we can skip the null + check too. Fixes #98. + +2017-01-09 luistung + + * src/scan.l: scanner: join symbol list. Removed a newline that caused a problem building the scanner in some + circumstances. Specifically: 'bad character' error when executing /bin/sh ../build-aux/ylwrap scan.l lex.yy.c scan.c -- flex + +2017-01-11 Will Estes + + * src/flex.skl: scanner: remove void cast before fprintf + +2016-12-30 Will Estes + + * NEWS: doc: update NEWS for 2.6.3 release + +2016-11-26 Explorer09 + + * configure.ac, src/Makefile.am: build: New configure option + '--disable-bootstrap'. If configure is run with '--disable-bootstrap', then stage1flex + won't be built and stage1scan.c will be generated by sed'ing scan.c. This option is intended to workaround bootstrap bugs rather than to + fix the bootstrapping issues which are proving subtler and harder to + fix than anyone would like. + +2016-11-26 Explorer09 + + * src/Makefile.am: build: "make clean" deletes stage1scan.c, + stage1flex + +2016-11-26 Explorer09 + + * configure.ac, src/Makefile.am: build: allow building libfl even + with --disable-libfl. For various reasons, we may wish to build libfl explicitly even when + configure has been run with the --disable-libfl option. This is + possible, now, via 'make -C src libfl.la'. + +2016-12-19 Alexis La Goutte + + * src/flex.skl: scanner: remove trailing whitespace in skeleton + +2016-12-01 Demi Obenour + + * src/buf.c, src/main.c, src/parse.y: scanner: Disallow, overquote + '[' and ']' in prefix + +2016-12-29 Samuel Thibault + + * src/main.c: scanner: allocate correct buffer size for m4 path. Flex did not check the length of the m4 path which could lead to a + buffer overflow in some cases. Additionally, not all platforms + believe in PATH_MAX, so stop relying on it. Fixes #138 + +2016-11-24 Will Estes + + * NEWS: doc: note no more libcompat in NEWS + +2016-11-24 Will Estes + + * lib/Makefile.am: build: explain empty lib/Makefile.am + +2016-11-20 Explorer09 + + * configure.ac: build: warn about cross compiling with *alloc + +2016-11-19 Explorer09 + + * configure.ac, lib/Makefile.am, lib/lib.c, src/Makefile.am: build: + Link $(LIBOBJS) from src/ dir, remove libcompat.la. The libcompat.la library was small and less friendly to + bootstrapping and cross compilation. Now, we will simply link + individual object files as needed, which is simpler. + +2016-11-16 Explorer09 + + * src/Makefile.am: build: Let stage1flex respect LFLAGS + +2016-11-14 Will Estes + + * NEWS: doc: describe --disable-libfl in NEWS + +2016-10-31 Explorer09 + + * configure.ac, src/Makefile.am: build: Add --disable-libfl + configure option. Disabling libfl is useful when building flex for a cross-toolchain. Fixes: GH-99 + +2016-11-09 Demi Obenour + + * src/flex.skl, tests/array_r.l: fix backwards incompatible changes + in 2.6.2. This patch addscompatibility `#defines` for all macros affected by + `%prefix`. Fixes #113. + +2016-11-08 Will Estes + + * tests/.gitignore: git: ignore quote_in_comment artifacts + +2016-11-08 Demi Obenour + + * src/scan.l, tests/Makefile.am, tests/quote_in_comment.l, + tests/quote_in_comment.txt: Fixes a major bug in Flex's own lexing + of literals. My changes caused Flex to mishandle string and character literals in + line comments. This commit fixes them. Fixes #113. + +2016-11-06 Thomas Klausner + + * configure.ac: Fix unportable test(1) operator. "==" is only supported by bash, "=" is the standard comparison + operator. + +2016-11-02 Demi Obenour + + * tests/quotes.l: Add more escaping tests + +2016-11-01 Demi Obenour + + * src/scan.l: Fix another escaping bug in non-indented verbatim section 2 code. I also did some reformatting. + +2016-10-28 Alastair Hughes + + * configure.ac: build: fix false negatives for help2man and texi2dvi HELP2MAN and TEXI2DVI (or the corresponding ac_prog variables) will + never be zero length as they fall back to the missing script; check + for the fall back and warn on that instead of always warning. + +2016-10-28 Explorer09 + + * doc/Makefile.am: doc: Don't delete flex.1 during "make distclean". flex.1 is pre-generated in release tarball. If we delete it, the + next "configure and make" on the source directory will then require + help2man unnecessarily. + +2016-10-27 Alastair Hughes + + * NEWS, doc/Makefile.am: Only regenerate the man page when required. Make the flex binary an order-only prerequisite, and add back the + prerequisites from before 7cfb440. This prevents rebuilding the man + page whenever the flex binary is rebuilt, which causes problems if + help2man is not installed and will never work when cross compiling. Fixes #108. + +2016-10-26 Will Estes + + * NEWS, src/Makefile.am: build: no longer build PIC version of + libfl. The PIC version of libfl was not being built correctly. From the + lack of bug reports around this problem, we conclude that the PIC + version of libfl is not used and so we drop it from the build build + targets for flex. + +2016-10-25 Explorer09 + + * README.md: doc: README.md formatting fixes * Wrap everything in the raw document in 72 char per line limit. * Proper casing for terms "Git" and "GitHub" (don't try to look + lazy). * Add unordered list marks when needed. * Say `configure && make && make install` and quoted for fixed-width font. Signed-off-by: Kang-Che Sung + +2016-10-25 Will Estes + + * NEWS, configure.ac: build: version 2.6.3 begins + +2016-10-24 Will Estes + + * NEWS: doc: mark 2.6.2 release date + +2016-10-24 Will Estes + + * .gitignore, NEWS, configure.ac: build: switch xz to lzip + +2016-10-20 Demi Obenour + + * src/scan.l, tests/quotes.l: Fix M4 quotation in section 2 prologue + and refactor duplicated code + +2016-10-21 Alex Kennedy + + * doc/flex.texi: Update flex.texi: Removed repedative wording "Flex used to" was written twice at the beginning of Chapter 9, + paragraph 2. + +2016-09-27 Demi Obenour + + * src/dfa.c, src/gen.c, src/main.c, src/nfa.c, src/parse.y, + src/scan.l, tests/bison_yylval_scanner.l, + tests/include_by_push.direct.l: Improved M4 quotation This fixes M4 quotation of certain strings beginning with `yy` (in + section 3 of the input file only) and character literals. The new + quotation method is also less brittle and faster. Tests that relied on the old behavior were fixed. Also, `yyconst` is no longer defined; use `const` (which it + unconditionally was defined to) instead. + +2016-10-19 Will Estes + + * Makefile.am, configure.ac: build: for automake, flex is foreign + +2016-10-19 Will Estes + + * README, README.md: doc: mv README to README.md + +2016-10-19 Will Estes + + * README: doc: touch up README + +2016-10-19 Will Estes + + * README: doc: README no longer mentions sourceforge + +2016-10-06 Will Estes + + * NEWS: doc: update NEWS with more post-2.6.1 additions + +2016-09-27 Demi Obenour + + * src/filter.c, src/flexdef.h, src/main.c, src/misc.c, + src/options.c, src/options.h, src/scan.l, src/yylex.c, + tests/Makefile.am, tests/alloc_extra.l, tests/array_r.l, + tests/basic_r.l, tests/c_cxx_nr.lll, tests/c_cxx_r.lll, + tests/debug_r.l, tests/include_by_reentrant.direct.l, + tests/lineno_r.l, tests/mem_nr.l, tests/mem_r.l, tests/posix.l, + tests/posixly_correct.l, tests/pthread.l, tests/quotes.l, + tests/reject.l4, tests/rescan_nr.direct.l, tests/rescan_r.direct.l, + tests/string_nr.l, tests/string_r.l: Fix M4 quoting of section 3. This fixes M4 quoting of section 3 of the input file, including + escape sequences and character constants. Tests were added to verify the behavior in section 3 with respect to + quoting. Both escaping of quotes and quoting of potential + macro-start characters are tested. Existing tests were also fixed to + account for the new -- and now correct -- behavior. Many tests + relied on the old behavior of expanding M4 macros in section 3. + They needed to be updated for the new behavior. + +2016-10-03 Mightyjo + + * src/flex.skl, tests/.gitignore, tests/Makefile.am, + tests/cxx_restart.ll, tests/cxx_restart.txt: Fix yyrestart(NULL) + SEGV. + +2016-09-05 Demi Obenour + + * src/scan.l: scanner: M4 quoting fixes + +2016-09-05 Demi Obenour + + * src/Makefile.am: Support `make indent` for out of source builds + +2016-09-24 Demi Obenour + + * src/Makefile.am, src/mkskel.sh: Simplify some shell code + +2016-09-23 Demi Obenour + + * doc/flex.texi, src/flex.skl, src/flexdef.h, src/main.c, + src/options.c, src/options.h, src/scan.l, tests/.gitignore, + tests/Makefile.am, tests/noansi_nr.l, tests/noansi_nr.txt, + tests/noansi_r.l, tests/noansi_r.txt: no longer generate K&R C + scanners + +2016-09-04 Demi Obenour + + * src/scan.l: Fix escaping of `[[` and `]]` in strings Previously, `[[` and `]]` were not escaped in strings, which led to + bad interactions with m4. Also, don't break strings on newline, as GCC et al support + whitespace between a backslash and the subsequent newline. + +2016-06-20 Translation Project + + * NEWS, po/sv.po: new sv translation + +2016-05-23 Demetri Obenour + + * src/misc.c: Delete action_m4_define from misc.c This function was not used and always triggered a fatal error when + run. + +2016-05-20 Will Estes + + * tests/Makefile.am, tests/testwrapper-direct.sh: test: run direct + tests from srcdir + +2016-01-11 Egor Pugin + + * tests/include_by_buffer.direct.l, tests/include_by_push.direct.l, + tests/include_by_reentrant.direct.l: Exited with error code on some + conditions in include tests + +2016-05-20 Will Estes + + * tests/testwrapper.sh: test: drop .exe when making input file names + +2016-05-20 Will Estes + + * tests/Makefile.am: test: removed dependencies for include tests + +2016-04-28 Tobias Klauser + + * src/scanflags.c: Avoid realloc on every call of sf_push() Currently, every call to sf_push() realloc()'s _sf_stack, even if + the maximum size _sf_max wasn't changed. As the indentation beneath + the "if" clause already indicates, the realloc() should only be + executed if _sf_max was increased. Found by compiling flex with the -Wmisleading-indentation flags of + gcc, which leads to the following warning: scanflags.c: In function ‘sf_push’: scanflags.c:42:5: warning: + this ‘if’ clause does not guard... [-Wmisleading-indentation] if + (_sf_top_ix + 1 >= _sf_max) ^~ scanflags.c:44:9: note: ...this + statement, but the latter is misleadingly indented as if it is + guarded by the ‘if’ _sf_stk = realloc(_sf_stk, + sizeof(scanflags_t) * _sf_max); ^~~~~~~ + +2016-03-31 Will Estes + + * doc/Makefile.am: build: prettified command to build man page + +2016-03-31 Will Estes + + * doc/Makefile.am: build: added man page to DISTCLEANFILES + +2016-03-31 Will Estes + + * BUGS, TODO: remove unused TODO, BUGS files + +2016-03-31 Will Estes + + * to.do/README, to.do/Wilhelms.todo, to.do/Wish-List, + to.do/flex.rmail, to.do/streams.mail, to.do/unicode/FlexLexer.h, + to.do/unicode/ccl.c, to.do/unicode/changes.txt, + to.do/unicode/ecs.c, to.do/unicode/flex.1, to.do/unicode/flex.skl, + to.do/unicode/flexdef.h, to.do/unicode/gen.c, to.do/unicode/main.c, + to.do/unicode/misc.c, to.do/unicode/scan.l, to.do/unicode/tblcmp.c: + removed to.do/ directory + +2016-03-31 Will Estes + + * po/POTFILES.in: gettext: removed flex.skl from POTFILES.in file + list + +2016-03-31 rlar + + * src/Makefile.am: fix skel.c dependency (missing tables_shared.c) + and polish build rule Also remove references to srcdir since skel.c is no longer mentioned + in po/POTFILES.in. + +2016-03-31 rlar + + * doc/Makefile.am: fix flex.1 dependency git clean -fdx && ./autogen.sh && \ mkdir -p ../build && cd ../build && ../flex/configure && make -j10 + && \ make dist failed with: > help2man: can't get `--help' info from ../../flex/src/flex Note: There is no dependency except for the flex binary. + +2016-03-31 rlar + + * src/Makefile.am: fix stage1scan.c and stage1scan.l dependency git clean -fdx && ./autogen.sh && \ mkdir -p ../build && cd ../build && ../flex/configure && make -j10 failed with: > ../src/stage1flex -o stage1scan.c stage1scan.l > stage1flex: can't + open stage1scan.l Note: stage1scan.c is not necessairy in the "make dist" generated tar.gz + file. stage1flex will be build from scan.c (which is + distributed), and this will then generate stage1scan.c from scan.l + +2016-03-31 Will Estes + + * po/POTFILES.in: gettext: list src/flex.skl in po/POTFILES.in + +2016-03-29 rlar + + * src/gen.c: warning in generated code, with -Ca warning: conversion to 'yy_state_type' from 'flex_uint32_t' may + change the sign of the result [-Wsign-conversion] + +2016-03-29 rlar + + * tests/Makefile.am: suppress `WARNINGFLAGS' for the almost obsolete + `noansi' test cases + +2016-03-29 rlar + + * configure.ac, src/Makefile.am, tests/Makefile.am: configure option + `--enable-warnings' and `WARNINGFLAGS' `WARNINGFLAGS' can be passed when invoking `configure' and when invoking `make' if configure switch `--enable-warnings' was given then default to something useful if we have `GCC' `WARNINGFLAGS' is not used when compiling `stage1flex' to avoid unnecessary clutter + +2016-03-31 Tobias Klauser + + * src/main.c: Fix potential buffer overflow in strncat() When using clang/llvm 3.8 to compile flex, the following warning is + emitted: main.c:378:27: warning: the value of the size argument in 'strncat' + is too large, might lead to a buffer overflow [-Wstrncat-size] + strncat(m4_path, m4, sizeof(m4_path)); + ^~~~~~~~~~~~~~~ + main.c:378:27: note: change the argument to be the free space in the + destination buffer minus the terminating null byte strncat(m4_path, + m4, sizeof(m4_path)); ^~~~~~~~~~~~~~~ + sizeof(m4_path) - strlen(m4_path) - 1Fix it up by using the solution proposed by the warning message. + +2016-03-29 Robert.Larice Robert Larice + + * src/Makefile.am: build: simplified dependency tracking so parallel + make runs succeed + +2016-03-20 rlar + + * src/flex.skl, src/gen.c, src/main.c: avoid warning in generated + code, with -Cf warning: conversion to 'unsigned int' from 'int' may change the sign + of the result [-Wsign-conversion] + +2016-03-18 Will Estes + + * NEWS, configure.ac: mention v2.6.2; summarize changes since 2.6.1 + +2016-03-18 Will Estes + + * doc/flex.texi: doc: corrected example in manual, gh#67 + +2016-03-16 rlar + + * tests/string_nr.l, tests/string_r.l, tests/yyextra.l: warning: + conversion to 'size_t' from 'int' may change the sign of the result + [-Wsign-conversion] + +2016-03-16 rlar + + * tests/mem_nr.l, tests/mem_r.l, tests/pthread.l: warning: + conversion to 'long unsigned int' from 'int' may change the sign of + the result [-Wsign-conversion] + +2016-03-16 rlar + + * src/flex.skl: warning: conversion to 'flex_uint32_t' from 'long + unsigned int' may alter its value [-Wconversion] struct yytbl_reader, member bread is of type flex_uint32_t + +2016-03-16 rlar + + * tests/alloc_extra.l, tests/bison_nr_main.c, + tests/bison_nr_parser.y, tests/bison_yylloc_parser.y: warning: + redundant redeclaration of '...' [-Wredundant-decls] + +2016-03-16 rlar + + * tests/bison_nr_parser.y, tests/bison_yylloc_parser.y, + tests/bison_yylval_parser.y, tests/pthread.l: warning: no previous + prototype for '...' [-Wmissing-prototypes] + +2016-03-16 rlar + + * tests/multiple_scanners_r_main.c: warning: unused variable 'fp' + [-Wunused-variable] + +2016-03-16 rlar + + * tests/pthread.l: main(), warning: redundant redeclaration of + 'main' [-Wredundant-decls] + +2016-03-16 rlar + + * tests/include_by_reentrant.direct.l, tests/lineno_nr.l, + tests/lineno_r.l, tests/lineno_trailing.l: main(), warning: + old-style function definition [-Wold-style-definition] + +2016-03-16 rlar + + * tests/alloc_extra.l, tests/array_nr.l, tests/array_r.l, + tests/basic_nr.l, tests/basic_r.l, tests/ccl.l, tests/debug_nr.l, + tests/debug_r.l, tests/extended.l, tests/mem_nr.l, tests/mem_r.l, + tests/noansi_r.l, tests/posix.l, tests/posixly_correct.l, + tests/prefix_nr.l, tests/prefix_r.l, tests/quotes.l, + tests/string_nr.l, tests/string_r.l, tests/yyextra.l: main(), + warning: old-style function definition [-Wold-style-definition] + +2016-03-01 rlar + + * src/ecs.c, src/tblcmp.c: Fix two more casts + +2016-03-14 Bastian Köcher + + * src/gen.c: Fixes yyl compare with unsigned warning + +2016-03-13 Robert Larice + + * configure.ac: Suppress portability warnings in Makefile generation + +2016-02-27 rlar + + * src/flex.skl: generated code, in yyensure_buffer_stack(), change + type of local `num_to_alloc' which is exclusively used in yy_size_t context + +2016-03-01 rlar + + * src/flex.skl: generated code, in yy_get_next_buffer(), change type + of local `number_to_move' suits better, because `yy_n_chars' and `yy_buf_size' are of type + `int' + +2016-02-27 rlar + + * src/flex.skl: generated code, `_yybytes_len' is of type `int', fix + code accordingly + +2016-02-28 rlar + + * src/gen.c: generated code, `max_size' seems to be of type `int', + fix casts accordingly + +2016-02-28 rlar + + * src/flex.skl: generated code, here `new_size' is of type `int', + fix casts accordingly + +2016-02-28 rlar + + * src/flex.skl: generated code, `yy_buf_size' is of type `int', fix + casts accordingly + +2016-02-28 rlar + + * src/flex.skl: generated code, `offset' is of type `int' + +2016-02-28 rlar + + * src/gen.c: generated code, `yy_more_len' is of type `int' + +2016-02-28 rlar + + * src/scan.l: scan.l, rewrite two loops to avoid unneccesairy + casting + +2016-03-01 rlar + + * src/regex.c, src/tables.c: improve readability + +2016-02-28 rlar + + * src/tblcmp.c: another cast in tblcmp.c to avoid warning + +2016-02-28 rlar + + * src/buf.c: casts in buf_append() to get rid of warnings + +2016-02-28 rlar + + * src/dfa.c, src/gen.c: cast to suite type of flex_uint32_t td_lolen + +2016-02-28 rlar + + * src/main.c, src/misc.c, src/regex.c, src/scan.l, src/scanopt.c, + src/tables_shared.c: cast to get rid of warnings + +2016-03-01 rlar + + * src/buf.c, src/main.c: cast and fix usage of log10(), ceil to + prevent buffer overflow + +2016-03-01 rlar + + * src/tables.c: tables.c, sprinkle casts to get rid of warnings + +2016-03-01 rlar + + * src/tables.c: yytbl_data_compress(), change type of local newsz to + get rid of warnings + +2016-03-01 rlar + + * src/tables.c, src/tables.h: change type of struct + yytbl_writer.total_written to get rid of warnings + +2016-02-28 rlar + + * src/tables.c: change argument type of yytbl_writen() to get rid of + warnings + +2016-03-01 rlar + + * src/tables.c: yytbl_write8/16/32(), change type of local variables + to get rid of warnings + +2016-02-28 rlar + + * src/flexdef.h, src/misc.c, to.do/unicode/flexdef.h, + to.do/unicode/misc.c: change return type and rename int + htoi()/otoi() --> unsigned int htoui()/otoui() + +2016-03-01 Will Estes + + * NEWS: Mention 2.6.1 release date + +2016-02-28 rlar + + * src/gen.c: avoid warning, add (int) cast to the read() return + value For similiarity with the fread() case. + +2016-02-28 rlar + + * src/scan.l: avoid warning, POSIX says yyless() has an `int' + argument + +2016-02-29 rlar + + * src/filter.c: use type size_t in filter_tee_header() to avoid + warnings + +2016-02-29 rlar + + * src/filter.c, src/misc.c, src/scanopt.c, src/tables.c: add + (size_t) casts to malloc invocations to prevent warnings + +2016-02-29 rlar + + * src/buf.c, src/misc.c, src/scan.l, src/scanopt.c, src/tables.c: + add (int) casts to some strlen() invocations to prevent warnings + +2016-02-29 rlar + + * src/flexdef.h, src/scan.l, src/sym.c: ndlookup(), char *, to get + rid of casts and warnings + +2016-02-28 rlar + + * src/flexdef.h, src/scan.l, src/sym.c: ndinstal(), char *, to get + rid of casts and warnings + +2016-02-28 rlar + + * src/flexdef.h, src/scan.l, src/sym.c: cclinstal() and ccllookup(), + char *, to get rid of casts and warnings + +2016-02-28 rlar + + * src/gen.c: warning: redundant redeclaration of + ‘gen_next_state’ [-Wredundant-decls] + +2016-02-28 rlar + + * src/gen.c: warning: no previous prototype for ‘mkecstbl’ + [-Wmissing-prototypes] + +2016-02-28 rlar + + * src/main.c: warning: suggest parentheses around assignment used as + truth value [-Wparentheses] + +2016-02-28 rlar + + * src/flexdef.h: warning: redundant redeclaration of ‘yywrap’ + [-Wredundant-decls] + +2016-02-28 rlar + + * src/flexdef.h: warning: redundant redeclaration of ‘yylval’ + [-Wredundant-decls] + +2016-02-28 rlar + + * src/flexdef.h: warning: redundant redeclaration of ‘yyin’ + [-Wredundant-decls] + +2016-02-28 rlar + + * src/flexdef.h, src/main.c: warning: redundant redeclaration of + ‘yyparse’ [-Wredundant-decls] + +2016-02-28 rlar + + * src/parse.y, src/scan.l, src/yylex.c, to.do/unicode/scan.l: + unification, rename some more rename these too for improved similiarity: OPTION_OP OPT_HEADER OPT_EXTRA_TYPE OPT_TABLES + +2016-02-28 rlar + + * src/parse.y, src/scan.l, src/yylex.c, to.do/unicode/scan.l: fix + name clash, OPT_OUTFILE from parse.y and from options.h these collide: OPT_OUTFILE OPT_PREFIX OPT_YYCLASS rename them TOK_... in the + parser + +2016-02-28 Will Estes + + * lib/reallocarray.c: Prototyped reallocarray implementation + +2016-02-28 Will Estes + + * src/scanopt.c: Removed custom strcasecmp() function + +2016-02-28 rlar + + * src/flex.skl: fwrite wants a size_t, yyleng is int per posix + +2016-02-28 rlar + + * src/scanopt.c: Remove some unneeded casts + +2016-02-28 rlar + + * src/flexdef.h: warning: negative integer implicitly converted to + unsigned type [-Wsign-conversion] + +2016-02-27 rlar + + * src/dfa.c, src/parse.y: dfa.c:157:24: warning: conversion to + 'size_t' from 'int' may change the sign of the result + [-Wsign-conversion] most certainly safe cast + +2016-02-27 rlar + + * src/ccl.c: ccl.c:86:19: warning: conversion to 'unsigned char' + from 'int' may alter its value [-Wconversion] ch seems to have been checked for proper range some lines above + +2016-02-27 rlar + + * tests/bison_nr_parser.y: warning: deprecated directive, use + '%pure-parser' [-Wdeprecated] + +2016-02-27 rlar + + * lib/lib.c: warning: no previous prototype for 'do_nothing' + [-Wmissing-prototypes] + +2016-02-27 rlar + + * src/libmain.c: included stdlib.h header + +2016-02-27 Will Estes + + * NEWS: Described more post v2.6.0 changes + +2016-02-27 Will Estes + + * configure.ac: build: Removed bzip2 distribiution archive + +2016-02-27 Will Estes + + * configure.ac: removed obsolete program check + +2016-02-27 Will Estes + + * configure.ac: Made some program checks more robust + +2016-02-27 rlar + + * src/flex.skl: Remove unneeded cast to int + +2016-02-27 Will Estes + + * src/flex.skl: Fixed incorrect integer type + +2016-02-27 Will Estes + + * src/flex.skl: Fix more integer types, resolves sf 184, 187 + +2016-02-26 Robert Larice + + * src/flex.skl, src/gen.c: Removed some type conversion warnings + +2016-02-26 Will Estes + + * src/flex.skl: Changed another buffer size to int; resolves gh#61 + +2016-02-24 Will Estes + + * src/flex.skl: Changed type of yy_n_chars to int; gh#53, sf#160. The variable yy_n_chars had been of type yy_size_t which is + incorrect given its use in read(). While it might be adviseable to + look at defining a yy_ssize_t, there might be some issues doing this + and so, for now, at least, we'll punt back to int. + +2016-02-24 Will Estes + + * src/buf.c: Fixed size of bufferallocation, resolved gh#54. The value of n_alloc was a count, not a size. Multiplying the value + by the element size was incorrect. That multiplication was already + being done and having it done twice was incorrect. + +2016-02-23 Tobias Klauser + + * src/scan.l: Allow '%option noline' in flex input file, resolves + gh#56. Allow specifying '%option noline' in the input file, leading to the + same effect as calling flex with the command line option --noline. Signed-off-by: Tobias Klauser + +2016-02-23 Tobias Klauser + + * src/buf.c, src/main.c: Emit no #line directives if gen_line_dirs + is false, resolves igh#55. There are two instances in the code which will print a #line + directive to the resulting lexer, regardless of the value of + gen_line_dirs. Fix them, so they also respect gen_line_dirs. Signed-off-by: Tobias Klauser + +2016-02-16 Tobias Klauser + + * lib/lib.c, src/gen.c, src/misc.c, src/scan.l: Converted K&R style + function definitions to ANSI C style Consistently make use of the ANSI C function definition style + instead of the K&R style. + +2016-01-29 Tobias Klauser + + * src/flex.skl: Used NULL constant instead of plain integer for NULL + pointer. The sparse static checker warns about using plain integer 0 as NULL + pointers in the generated lexer code. Fix this by using NULL + consistently for pointers. + +2016-01-29 Tobias Klauser + + * src/flex.skl: Marked declaration and definition of yy_fatal_error + as noreturn. Only the declaration of yy_fatal_error is marked with + __attribute__((__noreturn__)) in case GCC >= 3 is used, but not the + definition. This leads to the sparse static checker to complain + about function declaration mismatch. Fix it by defining a macro yynoreturn and using it for both the + declaration and the definition of yy_fatal_error. + +2016-01-27 Tobias Klauser + + * src/flex.skl: Fixed declaration mismatch in yy_fatal_error. The prototype declares yy_fatal_error parameter as "const char + msg[]" while the definition uses "const char* msg" (introduced by + commit e9d5fc713f61b) which causes the sparse static checkers to + produce an error. Fix this by adjusting the definition to use "const char* msg" as + well. Also change the C++ version accordingly so it matches the + declaration in FlexLexer.hpp. + +2016-01-23 Will Estes + + * CODE_OF_CONDUCT.md: flex is for flex #NCoC + +2016-01-18 Will Estes + + * doc/flex.texi: Referred to github for issue tracking, no longer sf + +2016-01-10 Egor Pugin + + * tests/reject.l4, tests/tableopts.l4: Opened files in binary mode + explicitly + +2016-01-08 OBATA Akio + + * src/Makefile.am: Linked flex binary against libintl, not libfl. Signed-off-by: Thomas Klausner + +2016-01-08 Michael van Elst + + * src/filter.c: Improved pipe-stdin hack behavior; resolves sf#198. Signed-off-by: Thomas + +2015-12-27 Will Estes + + * configure.ac, src/flexdef.h: Removed no longer needed header + checks + +2015-12-27 Will Estes + + * configure.ac: Checked for reallocarray() with AC_REPLACE_FUNCS + +2015-12-27 Will Estes + + * src/flexdef.h, src/main.c: include libgen.h from flexdef.h, not + main.c + +2015-12-25 Michael Reed + + * src/main.c: Replace basename2() with basename(3). Given the following program: \#include \#include /* extracts basename from path, optionally stripping the extension + "\.*" * (same concept as /bin/sh `basename`, but different handling + of extension). */ static char *basename2 (char *path) { char *b; for (b = path; *path; path++) if (*path == '/') b = path + 1; return b; } static void basename_compare(char *path) { printf("basename: %s\n", basename(path)); printf("basename2: %s\n\n", basename2(path)); } int main (int argc, char *argv[]) { // From http://pubs.opengroup.org/onlinepubs/9699919799/ // ``Sample Input and Output Strings'' basename_compare("/usr/lib"); basename_compare("/usr/"); basename_compare("/"); basename_compare("///"); basename_compare("//usr//lib//"); return 0; } ... and the program's output: basename: lib basename2: lib basename: usr basename2: basename: / basename2: basename: / basename2: basename: lib basename2: ... we can see that basename2() behaves the same as basename(3) in + the average use case, but messes up pretty severely in others. + Besides that, basename(3) is mandated by POSIX so should be present + on modern Unix-like systems, so we shouldn't define it ourselves. Some notes: - it doesn't appear to be mentioned in POSIX, but OpenBSD's + basename(3) returns NULL if the returned path componenet is > + PATH_MAX, so add a check for that - basename(3) shouldn't return an empty string, so remove the program_name[0] != '\0' check + +2015-12-25 Michael Reed + + * src/main.c: Simplify basename2(). It's only call site does not activate the `strip_ext` code path, so + the function can be simplified a lot. While here, remove a double + assignment. + +2015-12-25 Michael Reed + + * src/flex.skl, src/misc.c: Cleaned up __STDC__ #ifdefs. Assuming a compiler conforming to the ISO C standard is used, i.e., + __STDC__ is defined to 1, YY_USE_CONST is always defined and can be + eliminated. + +2015-12-25 Michael Reed + + * src/flexdef.h, src/main.c, src/scanopt.c, src/scanopt.h, + src/sym.c: Remove remaining use of PROTO + +2015-12-21 Serguey Parkhomovsky + + * src/buf.c: buf.c: use snprintf + +2015-12-19 Will Estes + + * configure.ac: build: reformatted AC_CHECK_FUNCS for readability + +2015-12-17 Will Estes + + * src/scanopt.c: correct function prototype + +2015-12-15 Michael Reed + + * src/main.c, src/scanopt.c, src/sym.c, src/tblcmp.c: Remove more + instances of PROTO + +2015-12-15 Michael Reed + + * src/main.c: Removed prototype for main(). It's not called anywhere else so the prototype is not needed. See + the C99 standard [1], section 5.1.2.2.1 for more info. [1]: http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1256.pdf + +2015-12-13 Michael McConville + + * src/dfa.c, src/gen.c, src/nfa.c, to.do/unicode/main.c, + to.do/unicode/tblcmp.c: Removed more instances of PROTO, ansifying. + +2015-12-13 Will Estes + + * README: Noted github for issue tracking and pull requests + +2015-12-13 Michael McConville + + * README: Reformatted README; removed sf bug tracking link. + +2015-12-13 Michael McConville + + * src/gen.c, to.do/unicode/gen.c: Removed macros for indentation + level. Just increment or decrement the indentation counter. That's less to + remember and makes the code more readable. w# Please enter the commit message for your changes. Lines starting + +2015-12-12 Mike Frysinger + + * tests/Makefile.am, tests/testwrapper.sh: tests: fixed paths to + input files. The current test wrapper works only when the inputs are specified + using relative paths. If they're specified with absolute paths, the + driver fails to detect the inputs because it always prepends the + input dir name which itself is a relative path: $ cd tests $ + ./testwrapper.sh -d . -i $PWD/reject.txt -t ./reject_ver.table + This normally doesn't show up because people run `./configure` or, + for out of tree builds, `../configure`. But if you happen to run + configure with an absolute path, then automake tends to generate + absolute paths as well leading to test failures. Fix all of this by dropping the implicit input directory prepending. - INPUT_NAME is often a list of files, not just a single one - the input directory is used to find the testname tables which are usually generated, so it's impossible to use files from both + source and build directories - most of the time, the full/correct path is already specified + +2015-12-12 Mike Frysinger + + * configure.ac: configure: fixed realloc test. The [] characters are used for quoting in m4, so the attempt to use + them in place of `test` fails yielding the warning at build time: .../flex/configure: line 20222: no: command not found + +2015-12-12 Michael McConville + + * src/flexdef.h: Started removal of PROTO macro. The PROTO macro is no longer needed. Additionally, its usage is + inconsistent, so we began removing it. + +2015-12-12 Michael Reed + + * Makefile.am, src/main.c: Removed SHORT_FILE_NAMES preprocessor + symbol. As a relic of MS-DOS, we don't need this. It's never defined; see 13b5b214f53d1c3354a7ab910bd160c126df1331. Removed additional MSDOS ifdef. + +2015-12-11 Michael McConville + + * configure.ac, lib/reallocarray.c, src/flexdef.h: Added new + function reallocarray. This is taken from OpenSSH Portable, which in turn takes it from + OpenBSD. reallocarray wraps the stdlib's realloc function. It takes two size + arguments and checks for overflow, like calloc, but doesn't zero the + memory. Therefore, it allows us to do overflow-safe array + reallocations and overflow-safe unzeroed array allocations, which + the stdlib allocation functions don't. We have a bunch of specific array allocation macros, none of which + check for overflow. reallocarray should be able to replace them. + +2015-12-11 Michael McConville + + * src/flexdef.h: Removed MS-DOS, VMS macros. Given the age of the MS-DOS and VMS platforms, it's likely that no + one is building flex on them any more. Additionally, the preferred + approach is to test for particular platform features rather than to + test for particular platforms. + +2015-12-12 Will Estes + + * src/flexdef.h, src/main.c: Made search for m4 more explicit. + +2015-12-12 Will Estes + + * src/flex.skl: Returned 0 from yywrap() instead of EOF + +2015-12-11 Will Estes + + * src/libmain.c: Changed end of main() in libmain to exit(0) + +2015-12-11 Will Estes + + * NEWS, configure.ac: Mentioned v2.6.1; documented some changes + since v2.6.0 + +2015-12-11 Will Estes + + * README: Updated build documentation; finished sf#155. Removed version numbers for build tools. Noted that version + requirements for build tools will be noted in configure.ac. Expanded + documentation of building texinfo based docs. + +2015-12-11 Will Estes + + * doc/Makefile.am: Removed flex.pdf from distribution; partially + fixed sf#155 + +2015-12-11 Will Estes + + * src/flex.skl: Commented in C style in skeleton; fixed sf#195 + +2015-12-10 Will Estes + + * .gitignore: Ignored autoscan files + +2015-12-09 Will Estes + + * configure.ac: Checked for ranlib and strdup() at configure time + +2015-12-09 Michael McConville + + * src/flexdef.h, src/misc.c, src/tblcmp.c, to.do/unicode/flexdef.h, + to.do/unicode/misc.c, to.do/unicode/tblcmp.c: Replace zero_out() + with stdlib's memset. + +2015-12-09 Michael McConville + + * src/flex.skl: Removed memory allocation casts. + +2015-12-09 Michael McConville + + * src/flexdef.h: Removed alloca() configuration. Since alloca() is dangerous, depricated, we remove it. + +2015-12-09 Michael McConville + + * src/flexdef.h: Removed implementation of isascii(). POSIX defines isascii(), so it's likely present on anything + weactually build flex on these days. + +2015-12-09 Michael McConville + + * src/main.c, src/scanopt.c, src/tables.c: Removed NULL-checks + before free() + +2015-12-08 Michael McConville + + * src/buf.c, src/dfa.c, src/flexdef.h, src/gen.c, src/scan.l, + to.do/unicode/flexdef.h, to.do/unicode/scan.l: Removed flex_free()i, + corrected buf_destroy logic. As with flex_alloc(), replace with direct calls to free(). The function buf_destroy is now null safe and the logic was + corrected to free() correctly. + +2015-12-08 Michael McConville + + * src/filter.c, src/flexdef.h, src/misc.c, src/scan.l, + src/scanflags.c, to.do/unicode/flexdef.h, to.do/unicode/misc.c, + to.do/unicode/scan.l: Removed flex_realloc(). As with flex_alloc(), replace calls to flex_realloc(), which was + just a wrapper around realloc(). + +2015-12-08 Michael McConville + + * src/buf.c, src/filter.c, src/flexdef.h, src/main.c, src/misc.c, + src/regex.c, src/scan.l, src/scanflags.c, src/sym.c, + to.do/unicode/flexdef.h, to.do/unicode/misc.c, to.do/unicode/scan.l: + Removed flex_alloc; cleaned up style. The function flex_alloc() was just a wrapper around malloc(). Since + this only added unclarity, and the flex_alloc() function is likely a + legacy of olden times, remove it in favor of calls to malloc() + directly. Style elements cleaned up: * superfluous spacing around parentheses * non-constant initialization in variable declarations * needless casts * almost all uses of assignments as subexpressions + +2015-12-07 Michael McConville + + * src/dfa.c, src/flexdef.h, src/gen.c, src/main.c, src/scan.l, + src/scanopt.c, tests/bison_nr_scanner.l, + tests/bison_yylloc_scanner.l, tests/bison_yylval_scanner.l, + tests/mem_nr.l, tests/mem_r.l, tests/pthread.l, tests/string_nr.l, + tests/string_r.l, tests/yyextra.l, to.do/unicode/scan.l: Remove + allocation casts + +2015-12-07 Will Estes + + * src/.gitignore, src/Makefile.am: Built flex with itself. Changes in scan.l need to be built into flex with the same version + of flex in some cases. Since this build requirement is minimal, we + simply bootstrap flex unconditionally. We intentionally exclude from version control the bootstrap + artifacts as the extra copy of the lexer, the intermediate scanner + and the bootstrap executable are not of interest. + +2015-12-05 Michael McConville + + * src/buf.c, src/dfa.c, src/main.c, src/nfa.c, src/parse.y, + src/scan.l, src/scanopt.c, src/sym.c, to.do/unicode/main.c, + to.do/unicode/scan.l: Use NULL rather than (type *) 0. + +2015-12-05 Michael McConville + + * src/flexdef.h, src/misc.c, src/sym.c, to.do/unicode/flexdef.h, + to.do/unicode/misc.c: Replace copy_unsigned_string() with xstrdup(). Like copy_string(), copy_unsigned_string() is just a clone of the + stlib's strdup(). We only use it twice. I'm pretty confident that + char signedness is irrelevant in this case. + +2015-12-04 Akim Demaille + + * src/FlexLexer.h: Cleaned up white space. + +2015-12-04 Akim Demaille + + * src/FlexLexer.h: Removed struct keyword before yy_buffer_state + +2015-12-04 Akim Demaille + + * examples/testxxLexer.l, src/FlexLexer.h, src/flex.skl, src/main.c: + Replaced FLEX_STD macro with std::. The std:: construct exists as of C++98, so we can simply assume it + is supported. + +2015-12-04 Akim Demaille + + * src/Makefile.am: Generated skel.c explicitly in srcdir. Rewrote the target for skel.c to explicitly mention the srcdir. This + should help when building flex from a directory outside the flex + tree. Spread the rule out over several lines to enhance readability. + +2015-12-04 Akim Demaille + + * autogen.sh: Called glibtoolize if libtoolize run fails. On Mac OS X, libtoolize is known as glibtoolize. In cases where + libtoolize is not present, then calling glibtoolize when + bootstrapping the build system gives more folks a shot at getting + flex built from the ground up. + +2015-12-02 Mightyjo + + * configure.ac: Checked for (g)texi2dvi. Better bison, help2man + checks. Added test for presence of (g)texi2dvi program. Gave notice if + texi2dvi is unavailable and set TEXI2DVI=: to avoid giving users + headaches. Enhanced tests for bison and help2man with notices when the programs + aren't found. Set their program variables to use the missing script + in build-aux since it's compatible with them. + +2015-12-02 Michael McConville + + * src/flexdef.h, src/misc.c, src/parse.y, src/scan.l, src/sym.c, + src/tables.c, to.do/unicode/flexdef.h, to.do/unicode/misc.c, + to.do/unicode/scan.l: Made string copying more standard. copy_string() was a clone of the stdlib's strdup(). For safety, + simplicity, and speed, we should use that instead. We introduce + xstrdup() which wraps strdup() in a failure upon memory allocation + errors. + +2015-11-30 Serguey Parkhomovsky + + * src/scan.l: Error on unbalanced parentheses in rules section. + +2015-11-29 Will Estes + + * src/Makefile.am: Cleaned up BUILT_SOURCES list. Removed reference to skel.c as a built source since other make rules + cover this case. + +2015-11-29 Will Estes + + * src/Makefile.am: Sorted file names in flex_SOURCES + +2015-11-27 Mightyjo + + * src/ecs.c, src/flexdef.h, src/main.c, src/misc.c, src/scan.l, + src/scanopt.c, src/sym.c, src/tblcmp.c: Replaced CHAR macro with + unsigned char type. Thanks to Michael McConville for pointing out that the old Char + macro causes problems with static analysis. The macro has been + removed and replaced with 'unsigned char' throughout the flex + sources. The macro is not needed at best and was confusing at worst. + It was not used in any of the example files nor was it mentioned in + the manual at all. + +2015-11-21 Will Estes + + * configure.ac: updated syntax of AC_INIT call as per autoupdate + +2015-11-21 Will Estes + + * tests/Makefile.am: removed extra call to a _CPPFLAGS variable + +2015-05-14 Stefan Reinauer + + * src/buf.c, src/ccl.c, src/dfa.c, src/ecs.c, src/gen.c, + src/main.c, src/misc.c, src/nfa.c, src/parse.y, src/scan.l, + src/scanopt.c, src/sym.c, src/tblcmp.c: Switch function definitions + from mixed K&R to consistent ANSI C. flex was using K&R function definitions for some functions and ANSI + C style in others, sometimes even in the same file. Change the code + to consistently use ANSI C. Signed-off-by: Stefan Reinauer + +2015-11-16 Mightyjo + + * tests/Makefile.am: Used in-tree header file for c++ tests. + +2015-11-17 Will Estes + + * configure.ac: Declared version 2.6.0 + +2015-11-17 Will Estes + + * NEWS: Dated, described flex release 2.6.0 + +2015-11-13 Will Estes + + * NEWS, configure.ac: Declared version 2.6.0rc1 + +2015-11-13 lukeallardyce + + * src/Makefile.am: Supplied versioning information in flex + libraries. Resolves sourceforge bug #182. On OSX, and possibly other platforms, + building the libfl libraries without versioning information caused a + build failures. + +2015-11-12 Will Estes + + * tests/Makefile.am: Cleaned up more precisely after make check. BUILT_SOURCES is now just the list of headers built as per the + automake manual. We provide the list of files to clean to make + rebuilding the test suite programs easier. We then use the + CLEANFILES list in a dist-hook to clean up the distribution that + automake gathers since not distributing flex generated files is + foreign to automake's mindset, but we need exactly that. Additionally, we locate inputs to the tables-related tests more + precisely. Some files are in srcdir and some are in builddir, which + the arguments to the log compiler are now made aware of. + +2015-11-11 Will Estes + + * tests/Makefile.am: Pulled out scripts in tests/Makefile.am + +2015-11-11 Will Estes + + * tests/Makefile.am: Added srcdir to tableopts.am include + +2015-11-11 Will Estes + + * doc/Makefile.am: Changed man page dependencies. The man page is just the --help output as reformatted by help2man. + The --help option is most likely to change when the flex skeleton + changes or one of the option parsing files changes or the + configure.ac script itself changes. The dependencies reflect this + now. It is still necessary, under some circumstances, to rebuild flex + explicitly before building the man page. In theory, it's possible to + have automake arrange to do this all the time, but doing so works + out to be fragile, given the rest of the build system. + +2015-11-10 Will Estes + + * autogen.sh: Called libtoolize directly because autoreconf fails to + pick up LT_INIT properly + +2015-11-10 Will Estes + + * tests/Makefile.am: Added tableopts.sh to EXTRA_DIST + +2015-11-08 Mightyjo + + * tests/Makefile.am: Made tests depend on the built flex binary. + +2015-11-08 Mightyjo + + * : commit cf6cb4dce791c26567cc506770ca96b4f4118024 Author: Mightyjo + Date: Sat Nov 7 23:11:35 2015 -0800 + +2015-11-04 Mightyjo + + * doc/flex.texi: Updated documentation to reflect the revisions to + FlexLexer.h + +2015-10-26 Mightyjo + + * src/FlexLexer.h, src/flex.skl: Changed several pointers to istream + (and ostream) to references in c++-only sections of the skeleton. Patched up a variety of expected errors caused by changing istream* + to istream&. Added a stray 'make' at line 545. Oops. Changed the buffer_state struct to store std::streambuf* instead of + std::istream* for C++ mode. Changed interfaces in FlexLexer.h to + take std::istream& instead of *. Backward compatibility temporarily + broken. Patched up backward compatibility with reasonable behavior in the + presence of null pointers. Re-added backward-compatible versions of the yyFlexLexer methods + that take iostream pointers. All tests passing. + +2015-09-29 Translation Project + + * po/zh_CN.po: new zh_CN translation from the translation project + +2015-07-27 Jaska Uimonen + + * src/gen.c: fix possible resource leak with yynultrans_tbl + +2015-07-27 Jaska Uimonen + + * src/dfa.c: fix possible uninitialized array values + +2015-08-05 Will Estes + + * doc/flex.texi: add %{...%} block to example in manual + +2015-07-15 Will Estes + + * configure.ac: initialize libtool earlier in build system + generation + +2015-05-08 Translation Project + + * po/da.po: new da translation from the Translation Project + +2014-07-25 Mariusz PluciÅ„ski + + * src/gen.c, src/scan.l, tests/bison_nr_parser.y, + tests/bison_yylloc_parser.y, tests/bison_yylval_parser.y, + tests/multiple_scanners_nr_main.c: Fix `label unused` warning + +2014-07-25 Mariusz PluciÅ„ski + + * src/flex.skl: Fix two "signed/unsigned" warnings + +2014-07-25 Mariusz PluciÅ„ski + + * tests/alloc_extra.l, tests/array_nr.l, tests/array_r.l, + tests/basic_nr.l, tests/basic_r.l, tests/bison_nr_scanner.l, + tests/bison_yylloc_scanner.l, tests/bison_yylval_scanner.l, + tests/ccl.l, tests/cxx_basic.ll, tests/debug_nr.l, tests/debug_r.l, + tests/extended.l, tests/header_nr_scanner.l, + tests/header_r_scanner.l, tests/include_by_buffer.direct.l, + tests/include_by_push.direct.l, + tests/include_by_reentrant.direct.l, tests/lineno_nr.l, + tests/lineno_r.l, tests/lineno_trailing.l, tests/mem_nr.l, + tests/mem_r.l, tests/multiple_scanners_nr_1.l, + tests/multiple_scanners_nr_2.l, tests/multiple_scanners_r_1.l, + tests/multiple_scanners_r_2.l, tests/noansi_nr.l, tests/noansi_r.l, + tests/posix.l, tests/posixly_correct.l, tests/prefix_nr.l, + tests/prefix_r.l, tests/pthread.l, tests/quotes.l, tests/reject.l4, + tests/rescan_nr.direct.l, tests/rescan_r.direct.l, + tests/string_nr.l, tests/string_r.l, tests/tableopts.l4, + tests/top.l, tests/yyextra.l: Fix `unused function` warnings in + tests + +2014-07-25 Mariusz PluciÅ„ski + + * tests/bison_nr_parser.y, tests/bison_yylloc_parser.y, + tests/bison_yylval_parser.y: Fix `implicit function declaration` + warnings in tests + +2014-07-25 Mariusz PluciÅ„ski + + * tests/header_r_main.c, tests/multiple_scanners_nr_main.c, + tests/reject.l4, tests/tableopts.l4, tests/top_main.c: Remove a few + `unused variable` warnings + +2014-07-25 Mariusz PluciÅ„ski + + * src/filter.c: Remove unused variable from + src/filter.c:filter_fix_linedirs + +2014-07-25 Mariusz PluciÅ„ski + + * src/scanopt.c: Remove unused argument and variable from + src/scanopt.c:scanopt_err + +2014-07-25 Mariusz PluciÅ„ski + + * src/flex.skl, src/libmain.c, src/parse.y, tests/bison_nr_main.c, + tests/bison_yylloc_main.c, tests/bison_yylloc_parser.y, + tests/bison_yylval_main.c, tests/bison_yylval_parser.y, + tests/header_nr_main.c, tests/header_r_main.c, tests/lineno_nr.l, + tests/lineno_r.l, tests/lineno_trailing.l, tests/mem_r.l, + tests/multiple_scanners_nr_main.c, + tests/multiple_scanners_r_main.c, tests/pthread.l, + tests/rescan_nr.direct.l, tests/rescan_r.direct.l, tests/top_main.c: + Fix a few "unused parameter" warnings + +2014-07-25 Mariusz PluciÅ„ski + + * src/main.c: Fix warning about redefined macro when multiple + scanners are used. + +2014-07-25 Mariusz PluciÅ„ski + + * tests/bison_nr_parser.y: Avoid passing `const char*` argument as + `char*` in test-bison-nr + +2014-11-21 Alexis La Goutte + + * src/misc.c, src/regex.c, src/tables.c, src/tables_shared.c: Fix + -Wdocumentation warnings + +2014-11-16 Will Estes + + * tests/README: document new suite layout + +2014-11-16 Will Estes + + * tests/TEMPLATE/.gitignore, tests/TEMPLATE/Makefile.am, + tests/TEMPLATE/cvsignore, tests/TEMPLATE/parser.y, + tests/TEMPLATE/scanner.l, tests/TEMPLATE/test.input, + tests/create-test, tests/descriptions: remove unused files after + test suite refactor + +2014-11-14 Will Estes + + * .gitignore, doc/.gitignore: Ignore directories build-aux/, m4/ Since build-aux/ now contains a number of files previously at the + top level, we ignore build-aux/. Therefore, it's not necessary to + list any files that are now kept in it. Also, explicitly mark m4/ as + a directory to ignore. + +2014-11-14 Will Estes + + * configure.ac: added back call to AC_CONFIG_AUX_DIR. In an effort to reduce top level directory clutter, reintroduced the + call to AC_CONFIG_AUX_DIR. Moved the call to LT_INIT to after that + call so configure will be able to find its files. + +2014-07-18 Will Estes + + * tests/tableopts.sh, tests/testwrapper.sh: use unofficial bash + strict mode and cleanups in supporting bash scripts + +2014-07-18 Will Estes + + * tests/.gitignore, tests/Makefile.am, tests/tableopts.am, + tests/tableopts.l4, tests/tableopts.sh, tests/tableopts.txt, + tests/test-table-opts/.gitignore, + tests/test-table-opts/Makefile.am, tests/test-table-opts/scanner.l, + tests/test-table-opts/test.input: split apart table options tests + into tests per threading, table option, serialization and + verification + +2014-07-17 Will Estes + + * tests/tableopts.sh: add tableopts.sh script + +2014-07-02 Will Estes + + * configure.ac, tests/Makefile.am: use automake conditional around + pthread test + +2014-07-01 Will Estes + + * tests/.gitignore, tests/Makefile.am, tests/lineno_trailing.l, + tests/lineno_trailing.one.txt, + tests/test-lineno-trailing/.gitignore, + tests/test-lineno-trailing/Makefile.am, + tests/test-lineno-trailing/scanner.l, + tests/test-lineno-trailing/test.input: refactor lineno_trailing test + for new test suite layout + +2014-07-01 Will Estes + + * tests/.gitignore, tests/Makefile.am, tests/lineno_r.l, + tests/lineno_r.one.txt, tests/test-lineno-r/.gitignore, + tests/test-lineno-r/Makefile.am, tests/test-lineno-r/scanner.l, + tests/test-lineno-r/test.input: refactor lineno_r test for new test + suite layout + +2014-07-01 Will Estes + + * tests/.gitignore, tests/Makefile.am, tests/lineno_nr.l, + tests/lineno_nr.one.txt, tests/test-lineno-nr/.gitignore, + tests/test-lineno-nr/Makefile.am, tests/test-lineno-nr/scanner.l, + tests/test-lineno-nr/test.input, tests/testwrapper.sh: refactor + lineno_nr test for new test suite layout + +2014-06-30 Will Estes + + * tests/test-linedir-r/.gitignore, + tests/test-linedir-r/Makefile.am, + tests/test-linedir-r/check-lines.awk, tests/test-linedir-r/main.c, + tests/test-linedir-r/scanner.l, tests/test-linedir-r/test.input: + Remove linedir_r test. The linedir_r test tested the implementation of line number + tracking, not its results. + +2014-06-24 Will Estes + + * tests/.gitignore, tests/Makefile.am, tests/pthread.l, + tests/pthread_1.txt, tests/pthread_2.txt, tests/pthread_3.txt, + tests/pthread_4.txt, tests/pthread_5.txt, + tests/test-pthread/.gitignore, tests/test-pthread/Makefile.am, + tests/test-pthread/scanner.l, tests/test-pthread/test-1.input, + tests/test-pthread/test-2.input, tests/test-pthread/test-3.input, + tests/test-pthread/test-4.input, tests/test-pthread/test-5.input: + refactor pthread test for new test suite layout + +2014-06-24 Will Estes + + * tests/Makefile.am: build reject_[vs]er tests explicitly to pass + proper compiler flags + +2014-06-24 Will Estes + + * tests/.gitignore, tests/Makefile.am, tests/cxx_yywrap.ll, + tests/cxx_yywrap.txt, tests/test-c++-yywrap/.gitignore, + tests/test-c++-yywrap/Makefile.am, tests/test-c++-yywrap/scanner.l, + tests/test-c++-yywrap/test.input, tests/testwrapper.sh: refactor + cxx_yywrap test for new test suite layout + +2014-06-17 Will Estes + + * tests/Makefile.am, tests/options.cn, + tests/test-concatenated-options/.gitignore, + tests/test-concatenated-options/Makefile.am: refactor concatenated + options test for new test suite layout + +2014-06-17 Will Estes + + * tests/.gitignore, tests/Makefile.am, + tests/include_by_buffer.direct.l, + tests/include_by_buffer.direct.txt, + tests/include_by_buffer.direct_2.txt, + tests/include_by_buffer.direct_3.txt, + tests/include_by_push.direct.l, tests/include_by_push.direct.txt, + tests/include_by_push.direct_2.txt, + tests/include_by_push.direct_3.txt, + tests/include_by_reentrant.direct.l, + tests/include_by_reentrant.direct.txt, + tests/include_by_reentrant.direct_2.txt, + tests/include_by_reentrant.direct_3.txt, + tests/test-include-by-buffer/.gitignore, + tests/test-include-by-buffer/Makefile.am, + tests/test-include-by-buffer/scanner.l, + tests/test-include-by-buffer/test-1.input, + tests/test-include-by-buffer/test-2.input, + tests/test-include-by-buffer/test-3.input, + tests/test-include-by-push/.gitignore, + tests/test-include-by-push/Makefile.am, + tests/test-include-by-push/scanner.l, + tests/test-include-by-push/test-1.input, + tests/test-include-by-push/test-2.input, + tests/test-include-by-push/test-3.input, + tests/test-include-by-reentrant/.gitignore, + tests/test-include-by-reentrant/Makefile.am, + tests/test-include-by-reentrant/scanner.l, + tests/test-include-by-reentrant/test-1.input, + tests/test-include-by-reentrant/test-2.input, + tests/test-include-by-reentrant/test-3.input: refactor include_by_* + tests for new test suite layout + +2014-06-16 Will Estes + + * tests/.gitignore, tests/Makefile.am, tests/rescan_nr.direct.l, + tests/rescan_nr.direct.txt, tests/rescan_nr.l, tests/rescan_nr.txt, + tests/rescan_r.direct.l, tests/rescan_r.direct.txt, + tests/test-rescan-r/.gitignore, tests/test-rescan-r/Makefile.am, + tests/test-rescan-r/scanner.l, tests/test-rescan-r/test.input, + tests/testwrapper.sh: refactor rescan_r test for new test suite + layout + +2014-06-16 Will Estes + + * tests/.gitignore, tests/Makefile.am, tests/rescan_nr.l, + tests/rescan_nr.txt, tests/test-rescan-nr/.gitignore, + tests/test-rescan-nr/Makefile.am, tests/test-rescan-nr/scanner.l, + tests/test-rescan-nr/test.input, tests/testwrapper.sh: Refactor + rescan_nr test for new test suite layout. Also add -r option to testwrapper.sh to support passing input file + as a command line argument to the test scanner without using shell + redirection. + +2014-06-16 Will Estes + + * tests/Makefile.am: correct use of objext to OBJEXT + +2014-06-16 Will Estes + + * tests/.gitignore, tests/Makefile.am, tests/quotes.l, + tests/quotes.txt, tests/test-quotes/.gitignore, + tests/test-quotes/Makefile.am, tests/test-quotes/scanner.l, + tests/test-quotes/test.input: refactor quotes test for new test + suite layout + +2014-06-16 Will Estes + + * tests/.gitignore, tests/Makefile.am, tests/reject.l4, + tests/reject.txt, tests/test-reject/.gitignore, + tests/test-reject/Makefile.am, tests/test-reject/scanner.l, + tests/test-reject/test.input, tests/testwrapper.sh: Refactor reject + test for new test suite layout. Split out reject test into its constituant tests. Add .reject tests + and .table tests for automake test log generation. Rewrite + testwrapper.sh to handle running with a tables file and specifying + optional input using command line options rather than positional + parameters. + +2014-06-15 Will Estes + + * tests/.gitignore, tests/Makefile.am, + tests/multiple_scanners_r_1.l, tests/multiple_scanners_r_2.l, + tests/multiple_scanners_r_main.c, + tests/test-multiple-scanners-r/.gitignore, + tests/test-multiple-scanners-r/Makefile.am, + tests/test-multiple-scanners-r/main.c, + tests/test-multiple-scanners-r/scanner-1.l, + tests/test-multiple-scanners-r/scanner-2.l: Refactor + multiple_scanners_r test for new test suite layout. Also, remove the use of table files from this test as that tests two + features at once and we want to be as close to testing one feature + at a time as we can be. + +2014-06-15 Will Estes + + * tests/.gitignore, tests/Makefile.am, + tests/multiple_scanners_nr_1.l, tests/multiple_scanners_nr_2.l, + tests/multiple_scanners_nr_main.c, + tests/test-multiple-scanners-nr/.gitignore, + tests/test-multiple-scanners-nr/Makefile.am, + tests/test-multiple-scanners-nr/main.c, + tests/test-multiple-scanners-nr/scanner-1.l, + tests/test-multiple-scanners-nr/scanner-2.l: refactor + multiple_scanners_nr test for new test suite layout + +2014-06-14 Will Estes + + * tests/.gitignore, tests/Makefile.am, + tests/cxx_multiple_scanners.txt, tests/cxx_multiple_scanners_1.ll, + tests/cxx_multiple_scanners_2.ll, + tests/cxx_multiple_scanners_main.cc, + tests/test-c++-multiple-scanners/.gitignore, + tests/test-c++-multiple-scanners/Makefile.am, + tests/test-c++-multiple-scanners/main.cpp, + tests/test-c++-multiple-scanners/scanner-1.l, + tests/test-c++-multiple-scanners/scanner-2.l, + tests/test-c++-multiple-scanners/test.input: refactor + cxx_multiple_scanners test for new test suite layout + +2014-06-14 Will Estes + + * tests/.gitignore, tests/Makefile.am, tests/c_cxx_nr.lll, + tests/c_cxx_nr.txt, tests/c_cxx_r.lll, tests/c_cxx_r.txt, + tests/test-c-cpp-nr/.gitignore, tests/test-c-cpp-nr/Makefile.am, + tests/test-c-cpp-nr/scanner.l, tests/test-c-cpp-nr/test.input, + tests/test-c-cpp-r/.gitignore, tests/test-c-cpp-r/Makefile.am, + tests/test-c-cpp-r/scanner.l, tests/test-c-cpp-r/test.input: + refactor c_cxx_nr, c_cxx_r tests for new test suite layout + +2014-06-14 Will Estes + + * tests/.gitignore, tests/Makefile.am, tests/cxx_basic.ll, + tests/cxx_basic.txt, tests/test-c++-basic/.gitignore, + tests/test-c++-basic/Makefile.am, tests/test-c++-basic/scanner.l, + tests/test-c++-basic/test.input: refactor cxx_basic test for new + test suite layout + +2014-06-14 Will Estes + + * tests/.gitignore, tests/Makefile.am, tests/posixly_correct.l, + tests/test-posixly-correct/.gitignore, + tests/test-posixly-correct/Makefile.am, + tests/test-posixly-correct/scanner.l: refactor posixly_correct test + for new test suite layout + +2014-06-14 Will Estes + + * tests/.gitignore, tests/Makefile.am, + tests/test-yyextra/.gitignore, tests/test-yyextra/Makefile.am, + tests/test-yyextra/scanner.l, tests/test-yyextra/test.input, + tests/yyextra.l, tests/yyextra.txt: refactor yyextra test for new + test suite layout + +2014-06-14 Will Estes + + * tests/.gitignore, tests/Makefile.am, tests/test-top/.gitignore, + tests/test-top/Makefile.am, tests/test-top/main.c, + tests/test-top/scanner.l, tests/test-top/test.input, tests/top.l, + tests/top.txt, tests/top_main.c: refactor top test for new test + suite layout + +2014-06-14 Will Estes + + * tests/.gitignore, tests/Makefile.am, tests/string_r.l, + tests/test-string-r/.gitignore, tests/test-string-r/Makefile.am, + tests/test-string-r/scanner.l: refactor string_r test for new test + suite layout + +2014-06-14 Will Estes + + * tests/.gitignore, tests/Makefile.am, tests/string_nr.l, + tests/test-string-nr/.gitignore, tests/test-string-nr/Makefile.am, + tests/test-string-nr/scanner.l: refactor string_nr test for new test + suite layout + +2014-06-12 Will Estes + + * tests/.gitignore, tests/Makefile.am, tests/prefix_r.l, + tests/prefix_r.txt, tests/test-prefix-r/.gitignore, + tests/test-prefix-r/Makefile.am, tests/test-prefix-r/README, + tests/test-prefix-r/scanner.l, tests/test-prefix-r/test.input: + refactor prefix_r test for new test suite layout + +2014-06-12 Will Estes + + * tests/.gitignore, tests/Makefile.am, tests/prefix_nr.l, + tests/prefix_nr.txt, tests/test-prefix-nr/.gitignore, + tests/test-prefix-nr/Makefile.am, tests/test-prefix-nr/README, + tests/test-prefix-nr/scanner.l, tests/test-prefix-nr/test.input: + refactor prefix_nr for new test suite layout + +2014-06-12 Will Estes + + * tests/testwrapper.sh: Check if test input file exists. Not all tests have input files, so check if one exists and run the + test program accordingly. + +2014-06-12 Will Estes + + * tests/.gitignore, tests/Makefile.am, tests/posix.l, + tests/test-posix/.gitignore, tests/test-posix/Makefile.am, + tests/test-posix/scanner.l: refactor posix test for new test suite + layout + +2014-06-12 Will Estes + + * tests/.gitignore, tests/Makefile.am, tests/noansi_r.l, + tests/noansi_r.txt, tests/test-noansi-r/.gitignore, + tests/test-noansi-r/Makefile.am, tests/test-noansi-r/scanner.l, + tests/test-noansi-r/test.input: refactor noansi_r test for new test + suite layout + +2014-06-12 Will Estes + + * tests/.gitignore, tests/Makefile.am, tests/noansi_nr.l, + tests/noansi_nr.txt, tests/test-noansi-nr/.gitignore, + tests/test-noansi-nr/Makefile.am, tests/test-noansi-nr/scanner.l, + tests/test-noansi-nr/test.input: refactor noansi_nr for new test + suite layout + +2014-06-05 Will Estes + + * tests/.gitignore, tests/Makefile.am, tests/mem_r.l, + tests/mem_r.txt, tests/test-mem-r/.gitignore, + tests/test-mem-r/Makefile.am, tests/test-mem-r/scanner.l, + tests/test-mem-r/test.input: refactor mem_r test for new test suite + layout + +2014-06-05 Will Estes + + * tests/.gitignore, tests/Makefile.am, tests/mem_nr.l, + tests/mem_nr.txt, tests/test-mem-nr/.gitignore, + tests/test-mem-nr/Makefile.am, tests/test-mem-nr/scanner.l, + tests/test-mem-nr/test.input: refactor mem_nr test for new test + suite layout + +2014-06-04 Will Estes + + * tests/.gitignore, tests/Makefile.am, tests/header_r.txt, + tests/header_r_main.c, tests/header_r_scanner.l, + tests/test-header-r/.gitignore, tests/test-header-r/Makefile.am, + tests/test-header-r/main.c, tests/test-header-r/scanner.l, + tests/test-header-r/test.input: refactor header_r test for new test + suite layout + +2014-06-04 Will Estes + + * tests/.gitignore, tests/Makefile.am, tests/header_nr.txt, + tests/header_nr_main.c, tests/header_nr_scanner.l, + tests/test-header-nr/.gitignore, tests/test-header-nr/Makefile.am, + tests/test-header-nr/main.c, tests/test-header-nr/scanner.l, + tests/test-header-nr/test.input: refactor header_nr test for new + test suite layout + +2014-06-04 Will Estes + + * tests/.gitignore, tests/Makefile.am, tests/extended.l, + tests/extended.txt, tests/test-extended/.gitignore, + tests/test-extended/Makefile.am, tests/test-extended/scanner.l, + tests/test-extended/test.input: refactor extended test for new test + suite layout + +2014-06-04 Will Estes + + * tests/.gitignore, tests/Makefile.am, tests/debug_r.l, + tests/debug_r.txt, tests/test-debug-r/.gitignore, + tests/test-debug-r/Makefile.am, tests/test-debug-r/scanner.l, + tests/test-debug-r/test.input: refactor debug_r test for new test + suite layout + +2014-06-04 Will Estes + + * tests/.gitignore, tests/Makefile.am, tests/debug_nr.l, + tests/debug_nr.txt, tests/test-debug-nr/.gitignore, + tests/test-debug-nr/Makefile.am, tests/test-debug-nr/scanner.l, + tests/test-debug-nr/test.input: refactor debug_nr test for new test + suite layout + +2014-06-04 Will Estes + + * tests/.gitignore, tests/Makefile.am, tests/ccl.l, tests/ccl.txt, + tests/test-ccl/.gitignore, tests/test-ccl/Makefile.am, + tests/test-ccl/scanner.l, tests/test-ccl/test.input: refactor ccl + test for new test suite layout + +2014-06-04 Will Estes + + * tests/.gitignore, tests/Makefile.am, tests/alloc-extra.l, + tests/alloc-extra.txt, tests/alloc_extra.l, tests/alloc_extra.txt, + tests/array-nr.l, tests/array-nr.txt, tests/array-r.l, + tests/array-r.txt, tests/array_nr.l, tests/array_nr.txt, + tests/array_r.l, tests/array_r.txt, tests/basic-nr.l, + tests/basic-nr.txt, tests/basic-r.l, tests/basic-r.txt, + tests/basic_nr.l, tests/basic_nr.txt, tests/basic_r.l, + tests/basic_r.txt, tests/bison-nr-main.c, tests/bison-nr-parser.y, + tests/bison-nr-scanner.l, tests/bison-nr.txt, + tests/bison-yylloc-main.c, tests/bison-yylloc-parser.y, + tests/bison-yylloc-scanner.l, tests/bison-yylloc.txt, + tests/bison-yylval-main.c, tests/bison-yylval-parser.y, + tests/bison-yylval-scanner.l, tests/bison-yylval.txt, + tests/bison_nr.txt, tests/bison_nr_main.c, tests/bison_nr_parser.y, + tests/bison_nr_scanner.l, tests/bison_yylloc.txt, + tests/bison_yylloc_main.c, tests/bison_yylloc_parser.y, + tests/bison_yylloc_scanner.l, tests/bison_yylval.txt, + tests/bison_yylval_main.c, tests/bison_yylval_parser.y, + tests/bison_yylval_scanner.l: use underscores in test file names to + silence automake warnings + +2014-06-04 Will Estes + + * .gitignore, m4/.gitignore, m4/Makefile.am: do not track m4 + subdirectory any more + +2014-06-04 Will Estes + + * .gitignore, configure.ac: upgrade automake version to 1.14.1 Unfortunately, automake 1.14.1 does not play nicely with + AC_CONFIG_AUX_DIR, so upgrading the used automake version required + removing the build-aux directory and letting autoconf's installed + helper files live more over the tree. + +2014-06-04 Will Estes + + * doc/.gitignore: ignore more files generated by texinfo + +2014-06-04 Will Estes + + * configure.ac: update gettext version to 0.19 + +2014-06-04 Will Estes + + * configure.ac: call LT_INIT earlier in configure.ac + +2014-06-04 Will Estes + + * tests/.gitignore, tests/Makefile.am, tests/bison-yylval-main.c, + tests/bison-yylval-parser.y, tests/bison-yylval-scanner.l, + tests/bison-yylval.txt, tests/test-bison-yylval/.gitignore, + tests/test-bison-yylval/Makefile.am, + tests/test-bison-yylval/main.c, tests/test-bison-yylval/parser.y, + tests/test-bison-yylval/scanner.l, + tests/test-bison-yylval/test.input: refactor bison-yylval test for + new test suite layout + +2014-06-04 Will Estes + + * tests/.gitignore, tests/Makefile.am, tests/bison-yylloc-main.c, + tests/bison-yylloc-parser.y, tests/bison-yylloc-scanner.l, + tests/bison-yylloc.txt, tests/test-bison-yylloc/.gitignore, + tests/test-bison-yylloc/Makefile.am, + tests/test-bison-yylloc/main.c, tests/test-bison-yylloc/parser.y, + tests/test-bison-yylloc/scanner.l, + tests/test-bison-yylloc/test.input: refactor bison-yylloc test for + new test suite layout + +2014-06-03 Will Estes + + * tests/.gitignore, tests/Makefile.am, tests/bison-nr-main.c, + tests/bison-nr-parser.y, tests/bison-nr-scanner.l, + tests/bison-nr.txt, tests/test-bison-nr/.gitignore, + tests/test-bison-nr/Makefile.am, tests/test-bison-nr/main.c, + tests/test-bison-nr/parser.y, tests/test-bison-nr/scanner.l, + tests/test-bison-nr/test.input: refactor bison-nr test for new test + suite layout + +2014-06-01 Will Estes + + * tests/.gitignore, tests/Makefile.am, tests/array-r.l, + tests/array-r.txt, tests/test-array-r/.gitignore, + tests/test-array-r/Makefile.am, tests/test-array-r/scanner.l, + tests/test-array-r/test.input: refactor array-r test for new test + suite layout + +2014-06-01 Will Estes + + * tests/Makefile.am: list tests/README with other EXTRA_DIST files + in tests/ + +2014-06-01 Will Estes + + * tests/.gitignore, tests/Makefile.am, tests/array-nr.l, + tests/array-nr.txt, tests/test-array-nr/.gitignore, + tests/test-array-nr/Makefile.am, tests/test-array-nr/scanner.l, + tests/test-array-nr/test.input: refactor array-nr test for new test + suite layout + +2014-06-01 Will Estes + + * tests/Makefile.am, tests/testwrapper.sh: make tests/testwrapper.sh + more verbose; find input in srcdir Since output is redirected by the automake parallel test suite + driver, turn on both -v and -x in bash for the testwrapper.sh shell + script. This helps a ton in debugging problems with the test harness + itself. In general, the input files are in automake's srcdir and the name of + the test includes the relative path to it (even though that's + supposed to be ./). Therefore, pass srcdir in AM_LOG_FLAGS and + prepend that to the test name as part of constructing the input + file's name. + +2014-06-01 Will Estes + + * tests/Makefile.am: distribute tests/testwrapper.sh + +2014-06-01 Will Estes + + * tests/.gitignore, tests/Makefile.am, tests/alloc-extra.l, + tests/alloc-extra.txt, tests/test-alloc-extra/.gitignore, + tests/test-alloc-extra/Makefile.am, + tests/test-alloc-extra/scanner.l, tests/test-alloc-extra/test.input: + refacter alloc-extra for new test suite layout + +2014-05-29 Will Estes + + * tests/.gitignore, tests/Makefile.am, tests/basic-r.l, + tests/basic-r.txt, tests/test-basic-r/.gitignore, + tests/test-basic-r/Makefile.am, tests/test-basic-r/scanner.l, + tests/test-basic-r/test.input: refactor basic-r test for new test + suite layout + +2014-04-22 Will Estes + + * tests/Makefile.am, tests/basic-nr.l, tests/basic-nr.txt, + tests/test-basic-nr/.gitignore, tests/test-basic-nr/Makefile.am, + tests/test-basic-nr/scanner.l, tests/test-basic-nr/test.input, + tests/testwrapper.sh: refactor basic-nr test for new test suite + layout + +2014-04-22 Will Estes + + * configure.ac: remove old tests/ subdirectories from build system + +2014-04-22 Will Estes + + * configure.ac: add parallel test suite option to build system + +2014-04-22 Will Estes + + * tests/.gitignore: ignore files for new test suite layout + +2014-04-22 Will Estes + + * tests/Makefile.am: use automake parallel test suite option to + build test suite + +2014-04-09 Manoj Srivastava + + * tests/test-bison-yylloc/parser.y, + tests/test-bison-yylval/parser.y: Do not use obsolete bison + constructs in tests. In Bison 3.0, support for YYLEX_PARAM and YYPARSE_PARAM has been + removed (deprecated in Bison 1.875): use %lex-param, %parse-param, + or %param. This commit fixes the tests so they still work. Signed-off-by: Manoj Srivastava + +2014-10-31 Christos Zoulas + + * src/buf.c, src/filter.c, src/flex.skl, src/flexdef.h, src/gen.c, + src/libmain.c, src/libyywrap.c, src/main.c, src/misc.c, src/nfa.c, + src/scan.l, src/scanflags.c, src/scanopt.c, src/yylex.c: NetBSD + downstream patches. const fixes. -Wconversion fixes for the skeleton files. param namespace protection (add _ to inline function parameters). unused variable/code removal. rename warn to lwarn to avoid conflict with . ctype.h function argument correction. merged the error functions lerrif and lerrsf -> lerr. + +2014-07-25 Mariusz PluciÅ„ski + + * src/flexdef.h, src/misc.c, src/scanflags.c: Allow error reporting + routines to accept varying number of arguments in modern style + +2014-07-25 Mariusz PluciÅ„ski + + * src/buf.c: Fix warning on assigning from `const char*` to `char*` + +2014-07-24 Mariusz PluciÅ„ski + + * src/main.c: Add disambiguation braces in main.c + +2014-07-17 Yuri + + * doc/flex.texi, examples/fastwc/mywc.c, src/ccl.c, src/dfa.c, + src/ecs.c, src/flex.skl, src/flexdef.h, src/gen.c, src/misc.c, + src/nfa.c, src/parse.y, src/scan.l, src/sym.c, src/tblcmp.c: Removed + deprecated 'register' storage class specifier. clang-3.5.0 now + complains about them: warning: 'register' storage class specifier is + deprecated [-Wdeprecated-register] + +2014-06-21 Mariusz PluciÅ„ski + + * src/flexdef.h, src/main.c, src/misc.c, src/options.c, + src/options.h, src/yylex.c: Change output formats from octal to + hexadecimal + +2014-06-11 Will Estes + + * NEWS, configure.ac: update version number to 2.6.0-pre + +2014-05-03 Will Estes + + * src/ecs.c: check limits before using array index cclp; resolves + sf-166 + +2014-04-02 Sean McBride + + * src/flex.skl: Suppress clang warning about empty @param paragraph; + resolves sf#158 Signed-off-by: Will Estes + +2014-04-02 Will Estes + + * doc/flex.texi: fix punction when talking about colon-bracket + delimiters; resolves sf#167 + +2014-04-02 Will Estes + + * doc/flex.texi: remove proofreading comment + +2014-04-02 Will Estes + + * doc/flex.texi: Put angle brackets around start condition name; + resolves bug #168. + +2014-04-02 Michael Haubenwallner + + * lib/Makefile.am, lib/realloc.c: Fix malloc/realloc replacement, + bug#151. Signed-off-by: Will Estes + +2014-04-02 Will Estes + + * lib/malloc.c: change crlf line ending to lf + +2014-03-26 Will Estes + + * NEWS: mention flex 2.5.39 release in NEWS file + +2014-03-26 Will Estes + + * control.ac: initial default control file for shipper + +2014-03-05 Cyril Brulebois + + * src/flex.skl: Adjust buffer sizes on ia64. From the debian change entry: > Finish fixing the ia64 buffer issue. Previous commits increased + YY_READ_BUF_SIZE (where __ia64__ is defined) but left YY_BUF_SIZE + unchanged, so that didn't fix the problem in the end. In the general + case, the latter is twice the former. Therefore set it to the same + ratio in the ia64 case. In general, this sort of architecture specific fix is not the path + we want to take, but the cleanup should be done in a more organized + way in the future and getting it working would be preferrable now. + +2014-02-18 Will Estes + + * Makefile.am, src/Makefile.am: move m4 make variable to + src/Makefile.am. This prevents an error when building skel.c caused by the $(m4) make + variable not being defined. Particularly nasty since skel.c would + still be created, thus causing make to think skel.c was up to date. + +2014-02-18 Will Estes + + * devel/00EXTRACT-ALL-SYMS.sh, devel/README, devel/dump-tables.pl, + devel/tables.pl: remove unused devel/ subdirectory from codebase + +2014-02-15 Will Estes + + * po/Rules-getpo: Add make rule to rsync latest .po files from + translation project. The rule assumes that rsync is on the path and that there is exactly + one domain listed in the DOMAIN make variable. The intent is that + the rule will work with vpath builds. + +2014-02-14 Will Estes + + * .gitignore: git ignore directories of the form flex-* + +2014-02-14 Will Estes + + * po/POTFILES.in: list source files for translation as now being in + src/ + +2014-02-14 Will Estes + + * Makefile.am, configure.ac, tools/Makefile.am: Add tools/ + directory. Since tools/git2cl is a dependency of ChangeLog, not distributing + tools/git2cl with flex causes the "make dist" target to fail in the + distributed tar ball. + +2014-02-14 Will Estes + + * Makefile.am: removes extraneous files from EXTRA_DIST as automake + picks them up better without mentioning them + +2014-02-14 Will Estes + + * NEWS: mention version 2.6.0 in release news + +2014-02-14 Will Estes + + * .gitignore, FlexLexer.h, Makefile.am, buf.c, ccl.c, configure.ac, + dfa.c, doc/.gitignore, doc/Makefile.am, ecs.c, filter.c, flex.skl, + flexdef.h, flexint.h, gen.c, gettext.h, lib/.gitignore, libmain.c, + libyywrap.c, main.c, misc.c, mkskel.sh, nfa.c, options.c, + options.h, parse.y, regex.c, scan.l, scanflags.c, scanopt.c, + scanopt.h, src/.gitignore, src/FlexLexer.h, src/Makefile.am, + src/buf.c, src/ccl.c, src/dfa.c, src/ecs.c, src/filter.c, + src/flex.skl, src/flexdef.h, src/flexint.h, src/gen.c, + src/gettext.h, src/libmain.c, src/libyywrap.c, src/main.c, + src/misc.c, src/mkskel.sh, src/nfa.c, src/options.c, src/options.h, + src/parse.y, src/regex.c, src/scan.l, src/scanflags.c, + src/scanopt.c, src/scanopt.h, src/sym.c, src/tables.c, + src/tables.h, src/tables_shared.c, src/tables_shared.h, + src/tblcmp.c, src/version.h, src/yylex.c, sym.c, tables.c, + tables.h, tables_shared.c, tables_shared.h, tblcmp.c, version.h, + yylex.c: move flex program sources into src/ directory The *.[chly] sources are now in the src directory. This implies a + bunch of changes in Makefile.am and friends to account for the new + location. The .gitignore files are now more local to places where + various object files and generated source files occur. + +2014-02-13 Will Estes + + * configure.ac: increment flex version to 2.6.0 + +2014-02-16 Translation Project + + * po/ru.po: update ru translation from the translation project + +2014-02-14 Will Estes + + * NEWS: mention updated da translation in release news + +2014-02-14 Translation Project + + * po/da.po: update da translation from the translation project + +2014-02-14 Will Estes + + * NEWS: mention updated es translation in release news + +2014-02-14 Translation Project + + * po/es.po: update es translation from the translation project + +2014-02-14 Will Estes + + * NEWS: mention updated ko translation in release news + +2014-02-14 Translation Project + + * po/ko.po: update ko translation from the translation project + +2014-02-14 Will Estes + + * NEWS: mention updated ro translation in release news + +2014-02-14 Translation Project + + * po/ro.po: update ro translation from the translation project + +2014-02-14 Will Estes + + * NEWS: mention updated ru translation in release news + +2014-02-14 Translation Project + + * po/ru.po: update ru translation from the translation project + +2014-02-14 Will Estes + + * NEWS: mention updated sv translation in news + +2014-02-14 Translation Project + + * po/sv.po: update sv translation from the translation project + +2014-02-14 Will Estes + + * NEWS: mention updated tr translation in news + +2014-02-14 Translation Project + + * po/tr.po: update tr translation from the translation project + +2014-02-14 Will Estes + + * NEWS: mention updated zh_CN in release news + +2014-02-14 Translation Project + + * po/zh_CN.po: update zh_CN translation from the translation project + +2014-02-14 Will Estes + + * NEWS, po/LINGUAS, po/zh_TW.po, po/zh_tw.po: rename zh_tw + translation to its proper zh_TW name + +2014-02-14 Will Estes + + * NEWS: mention updated nl, vi translations in release news + +2014-02-14 Translation Project + + * po/vi.po: update vi translation from the translation project + +2014-02-14 Translation Project + + * po/nl.po: update nl translation from the translation project + +2014-02-14 Will Estes + + * TODO: remove some unneeded entries from the todo list + +2014-02-13 Will Estes + + * doc/Makefile.am: list more generated files in CLEANFILES + +2014-02-13 Will Estes + + * doc/flex.xml: remove unmaintained xml documentation + +2014-02-13 Will Estes + + * configure.ac: bump AM_GNU_GETTEXT_VERSION to 0.18.1 + +2014-02-13 Will Estes + + * README: list new location of flex git repo + +2014-02-13 Will Estes + + * po/.gitignore: git ignore generated files from english quoting + variant translations + +2014-02-13 Will Estes + + * po/LINGUAS: name english quoting variants correctly + +2014-02-13 Will Estes + + * Makefile.am, configure.ac, tools/Makefile.am: removed tools/ + subdirectory from distribution Since it is not possible to rebuild the ChangeLog file without being + in a git working directory of flex, distributing the tools directory + is misleading. In particular, git2cl will always fail. + +2014-02-13 Will Estes + + * po/LINGUAS: removed unneeded blank line from translation list + +2014-02-13 Will Estes + + * po/LINGUAS: added en quoting variants to translation list + +2014-02-11 Will Estes + + * configure.ac: use gnu automake option instead of gnits option + +2014-02-11 Will Estes + + * README-alpha: remove README_alpha file since it is no longer + needed + +2014-02-10 Will Estes + + * configure.ac: increment version to 2.5.38 + +2013-11-27 Will Estes + + * NEWS: flesh out internationalization section of NEWS file; mention + pt_BR translation + +2013-11-27 Translation Project + + * po/pt_BR.po: update pt_BR translation from the translation project + +2013-10-31 Will Estes + + * NEWS: begin listing 2.5.38 version in NEWS; list new sr + translation + +2013-10-31 Will Estes + + * po/LINGUAS: list new sr translation in list of translations + +2013-10-31 Will Estes + + * po/sr.po: add sr translation from the translation project + +2013-07-02 Till Varoquaux + + * configure.ac, flex.skl, nfa.c, tests/Makefile.am, + tests/test-lineno-trailing/.gitignore, + tests/test-lineno-trailing/Makefile.am, + tests/test-lineno-trailing/scanner.l, + tests/test-lineno-trailing/test.input: Adjust yylineno properly when + rewinding trailing contexts. + +2013-05-28 Will Estes + + * Makefile.am: Remove incorrect / in install-exec-hook target + +2013-02-16 Translation Project + + * po/LINGUAS, po/zh_tw.po: add zh_tw translation from the + translation project + +2012-12-06 Christoph Junghans + + * Makefile.am, configure.ac: add version information to shared + library Signed-off-by: Will Estes + +2012-12-04 Christoph Junghans + + * .gitignore, Makefile.am, configure.ac, lib/Makefile.am: Build + libfl and libcompat using libtool; resolves #3586814 Signed-off-by: Will Estes + +2012-12-04 Translation Project + + * po/ca.po: update ca translation + +2012-10-31 Hugh Sasse + + * tests/test-extended/Makefile.am, tests/test-quotes/Makefile.am: + use cmp instead of diff in some tests for portability reasons Signed-off-by: Will Estes + +2012-10-31 Dennis Clarke + + * tests/TEMPLATE/Makefile.am, tests/test-alloc-extra/Makefile.am, + tests/test-array-nr/Makefile.am, tests/test-array-r/Makefile.am, + tests/test-basic-nr/Makefile.am, tests/test-basic-r/Makefile.am, + tests/test-bison-nr/Makefile.am, + tests/test-bison-yylloc/Makefile.am, + tests/test-bison-yylval/Makefile.am, + tests/test-c++-basic/Makefile.am, + tests/test-c++-multiple-scanners/Makefile.am, + tests/test-c++-yywrap/Makefile.am, tests/test-c-cpp-nr/Makefile.am, + tests/test-c-cpp-r/Makefile.am, tests/test-ccl/Makefile.am, + tests/test-debug-nr/Makefile.am, tests/test-debug-r/Makefile.am, + tests/test-extended/Makefile.am, tests/test-header-nr/Makefile.am, + tests/test-header-r/Makefile.am, + tests/test-include-by-buffer/Makefile.am, + tests/test-include-by-push/Makefile.am, + tests/test-include-by-reentrant/Makefile.am, + tests/test-linedir-r/Makefile.am, tests/test-lineno-nr/Makefile.am, + tests/test-lineno-r/Makefile.am, tests/test-mem-nr/Makefile.am, + tests/test-mem-r/Makefile.am, + tests/test-multiple-scanners-nr/Makefile.am, + tests/test-multiple-scanners-r/Makefile.am, + tests/test-noansi-nr/Makefile.am, tests/test-noansi-r/Makefile.am, + tests/test-posix/Makefile.am, + tests/test-posixly-correct/Makefile.am, + tests/test-prefix-nr/Makefile.am, tests/test-prefix-r/Makefile.am, + tests/test-pthread/Makefile.am, tests/test-quotes/Makefile.am, + tests/test-reject/Makefile.am, tests/test-rescan-nr/Makefile.am, + tests/test-rescan-r/Makefile.am, tests/test-string-nr/Makefile.am, + tests/test-string-r/Makefile.am, tests/test-table-opts/Makefile.am, + tests/test-top/Makefile.am, tests/test-yyextra/Makefile.am: add + CFLAGS and CXXFLAGS options as appropriate to testsuite Makefile.am + files Signed-off-by: Will Estes + +2012-10-25 Will Estes + + * po/LINGUAS: add hr to list of translations + +2012-10-25 Translation Project + + * po/hr.po: add hr translation from the translation project + +2012-10-25 Translation Project + + * po/fr.po: new fr translation project from the translation project + +2012-09-08 Will Estes + + * po/LINGUAS: update languages list to include esperanto translation + +2012-09-08 Translation Project + + * po/eo.po: add eo translation from the translation project + +2012-08-26 Will Estes + + * configure.ac: add dist-xz to automake options; resolves #3561837 + +2012-08-26 Will Estes + + * autogen.sh, configure.ac: require gettext 0.18; force autoreconf + in autogen.sh; resolves #3561759 Autoconf had trouble finding the shared libraries for gettext. Using + gettext 0.18 fixes that. When updating the gettext version number, autoreconf could fail to + update files, since autopoint would assume the gettext-related files + had been locally modified. Passing --force prevents that from + happening. + +2012-08-15 Will Estes + + * Makefile.am: remove README.cvs from dist_doc_DATA in Makefile.am + +2012-08-13 Will Estes + + * : commit 9256a268e2a1000cb410766e95487912a7d66d61 Author: Will + Estes Date: Mon Aug 13 16:23:35 2012 -0400 + +2012-08-08 Will Estes + + * README, README.cvs: append README.cvs contents to README + +2012-08-08 Will Estes + + * gen.c: fix m4 error when useecs and nultrans are true; resolves + #1816878 + +2012-08-08 Robert Minsk + + * flex.skl: put user code after yyguts init; resolves #1744516 Signed-off-by: Will Estes + +2012-08-08 Robert Minsk + + * flex.skl, main.c: do not output yy_nxt to header with %option + full; resolves #1739922 Signed-off-by: Will Estes + +2012-08-07 Will Estes + + * main.c: let flex decide if yymore and reject are needed in lex + compatible mode This resolves bug #3510440. + +2012-08-06 Translation Project + + * po/vi.po: new vi translation from the translation project + +2012-08-06 Will Estes + + * .gitignore: add more patterns to .gitignore Undersome circumstances, the build process will generate conf.in~, + which we want to ignore. Also, some patch files will apply but not + cleanly and *.orig and *.rej files are generated. We want to ignore + them as well. + +2012-08-06 Will Estes + + * configure.ac, configure.in: rename configure.in to configure.ac to + prep for upcoming automake changes + +2012-08-06 Elias Pipping + + * tests/test-bison-yylloc/main.c, tests/test-bison-yylloc/parser.y, + tests/test-bison-yylval/main.c, tests/test-bison-yylval/parser.y: + Fix two tests to pass under bison 2.6 Given that bison is moving forward with the %parse-param instead of + YYPARSE_PARAM syntax, it makes sense to switch over to using the new + style declaration. In particular, this means that flex scanners that + use bison features will now require bison 2.6 or higher. Signed-off-by: Will Estes + +2012-08-04 Will Estes + + * po/nl.po: new nl translation from the translation project + +2012-08-04 Mike Frysinger + + * flexdef.h: add prototype for lerrsf_fatal to flexdef.h Signed-off-by: Will Estes + +2012-08-04 nomis52 + + * flex.skl, gen.c: Change variable types to silence compiler + warnings; resolves #3552806 Signed-off-by: Will Estes + 2012-08-03 Will Estes * NEWS: update NEWS to reflect changes in 2.5.37 diff --git a/contrib/flex/FlexLexer.h b/contrib/flex/FlexLexer.h deleted file mode 100644 index bad4ce03fb65..000000000000 --- a/contrib/flex/FlexLexer.h +++ /dev/null @@ -1,206 +0,0 @@ -// -*-C++-*- -// FlexLexer.h -- define interfaces for lexical analyzer classes generated -// by flex - -// Copyright (c) 1993 The Regents of the University of California. -// All rights reserved. -// -// This code is derived from software contributed to Berkeley by -// Kent Williams and Tom Epperly. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions -// are met: - -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. - -// Neither the name of the University nor the names of its contributors -// may be used to endorse or promote products derived from this software -// without specific prior written permission. - -// THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR -// IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED -// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -// PURPOSE. - -// This file defines FlexLexer, an abstract class which specifies the -// external interface provided to flex C++ lexer objects, and yyFlexLexer, -// which defines a particular lexer class. -// -// If you want to create multiple lexer classes, you use the -P flag -// to rename each yyFlexLexer to some other xxFlexLexer. You then -// include in your other sources once per lexer class: -// -// #undef yyFlexLexer -// #define yyFlexLexer xxFlexLexer -// #include -// -// #undef yyFlexLexer -// #define yyFlexLexer zzFlexLexer -// #include -// ... - -#ifndef __FLEX_LEXER_H -// Never included before - need to define base class. -#define __FLEX_LEXER_H - -#include -# ifndef FLEX_STD -# define FLEX_STD std:: -# endif - -extern "C++" { - -struct yy_buffer_state; -typedef int yy_state_type; - -class FlexLexer { -public: - virtual ~FlexLexer() { } - - const char* YYText() const { return yytext; } - int YYLeng() const { return yyleng; } - - virtual void - yy_switch_to_buffer( struct yy_buffer_state* new_buffer ) = 0; - virtual struct yy_buffer_state* - yy_create_buffer( FLEX_STD istream* s, int size ) = 0; - virtual void yy_delete_buffer( struct yy_buffer_state* b ) = 0; - virtual void yyrestart( FLEX_STD istream* s ) = 0; - - virtual int yylex() = 0; - - // Call yylex with new input/output sources. - int yylex( FLEX_STD istream* new_in, FLEX_STD ostream* new_out = 0 ) - { - switch_streams( new_in, new_out ); - return yylex(); - } - - // Switch to new input/output streams. A nil stream pointer - // indicates "keep the current one". - virtual void switch_streams( FLEX_STD istream* new_in = 0, - FLEX_STD ostream* new_out = 0 ) = 0; - - int lineno() const { return yylineno; } - - int debug() const { return yy_flex_debug; } - void set_debug( int flag ) { yy_flex_debug = flag; } - -protected: - char* yytext; - int yyleng; - int yylineno; // only maintained if you use %option yylineno - int yy_flex_debug; // only has effect with -d or "%option debug" -}; - -} -#endif // FLEXLEXER_H - -#if defined(yyFlexLexer) || ! defined(yyFlexLexerOnce) -// Either this is the first time through (yyFlexLexerOnce not defined), -// or this is a repeated include to define a different flavor of -// yyFlexLexer, as discussed in the flex manual. -#define yyFlexLexerOnce - -extern "C++" { - -class yyFlexLexer : public FlexLexer { -public: - // arg_yyin and arg_yyout default to the cin and cout, but we - // only make that assignment when initializing in yylex(). - yyFlexLexer( FLEX_STD istream* arg_yyin = 0, FLEX_STD ostream* arg_yyout = 0 ); - - virtual ~yyFlexLexer(); - - void yy_switch_to_buffer( struct yy_buffer_state* new_buffer ); - struct yy_buffer_state* yy_create_buffer( FLEX_STD istream* s, int size ); - void yy_delete_buffer( struct yy_buffer_state* b ); - void yyrestart( FLEX_STD istream* s ); - - void yypush_buffer_state( struct yy_buffer_state* new_buffer ); - void yypop_buffer_state(); - - virtual int yylex(); - virtual void switch_streams( FLEX_STD istream* new_in, FLEX_STD ostream* new_out = 0 ); - virtual int yywrap(); - -protected: - virtual int LexerInput( char* buf, int max_size ); - virtual void LexerOutput( const char* buf, int size ); - virtual void LexerError( const char* msg ); - - void yyunput( int c, char* buf_ptr ); - int yyinput(); - - void yy_load_buffer_state(); - void yy_init_buffer( struct yy_buffer_state* b, FLEX_STD istream* s ); - void yy_flush_buffer( struct yy_buffer_state* b ); - - int yy_start_stack_ptr; - int yy_start_stack_depth; - int* yy_start_stack; - - void yy_push_state( int new_state ); - void yy_pop_state(); - int yy_top_state(); - - yy_state_type yy_get_previous_state(); - yy_state_type yy_try_NUL_trans( yy_state_type current_state ); - int yy_get_next_buffer(); - - FLEX_STD istream* yyin; // input source for default LexerInput - FLEX_STD ostream* yyout; // output sink for default LexerOutput - - // yy_hold_char holds the character lost when yytext is formed. - char yy_hold_char; - - // Number of characters read into yy_ch_buf. - int yy_n_chars; - - // Points to current character in buffer. - char* yy_c_buf_p; - - int yy_init; // whether we need to initialize - int yy_start; // 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 ... - int yy_did_buffer_switch_on_eof; - - - size_t yy_buffer_stack_top; /**< index of top of stack. */ - size_t yy_buffer_stack_max; /**< capacity of stack. */ - struct yy_buffer_state ** yy_buffer_stack; /**< Stack as an array. */ - void yyensure_buffer_stack(void); - - // The following are not always needed, but may be depending - // on use of certain flex features (like REJECT or yymore()). - - yy_state_type yy_last_accepting_state; - char* yy_last_accepting_cpos; - - yy_state_type* yy_state_buf; - yy_state_type* yy_state_ptr; - - char* yy_full_match; - int* yy_full_state; - int yy_full_lp; - - int yy_lp; - int yy_looking_for_trail_begin; - - int yy_more_flag; - int yy_more_len; - int yy_more_offset; - int yy_prev_more_offset; -}; - -} - -#endif // yyFlexLexer || ! yyFlexLexerOnce - diff --git a/contrib/flex/NEWS b/contrib/flex/NEWS index 62d260d2c14c..85d900b5362c 100644 --- a/contrib/flex/NEWS +++ b/contrib/flex/NEWS @@ -1,7 +1,233 @@ -This is the file NEWS for the flex package. It records user -visible -changes between releases of flex. +flex NEWS -See the file COPYING for copying conditions. +* Noteworthy changes in release 2.6.4 (2017-05-06) [stable] + +** build + +*** The indent target now knows about flex's new (as of 2.6.0) + layout. The indent rules it would apply are not correct and do + need to be fixed. + +*** The files included in the flex distribution are now built by the + version of flex that is included in the distribution. + +*** The configure script has a better idea of which headers are + required to build flex. It will also error when missing functions + are detected. + +*** We have lowered the versions of automake and gettext that + configure.ac lists as required for building flex. In autogen.sh, + we now check for how to call libtoolize and use what we find in + the rest of the script. + +*** Since files in lib/ are picked up as needed by src/, we no longer + generate a Makefile for that directory. + +*** Flex can be cross compiled. + +** documentation + +*** Some typos were removed from the manual. + +** scanner + +*** Some minor performance enhancements. + +*** We honor user defined yy_* macros again. We are also more careful + to not leak macro definitions into header files. + +*** A number of portability fixes were introduced so building flex is + more reliable on more platforms. Additionally, outdated function + calls were removed. + +*** When building the flex executable itself, %# comments from + flex.skl are removed when generating the C source code array. This + reduces the size of flex. + +** test suite + +*** All scripts in the test suite are now run by $(SHELL) and the + needed portability fixes have been included. + +*** Test suite dependencies are handled much better. This only matters + if you are actively developing flex or its test suite. + +*** Tests that depend on platform dependent features now properly skip + when those platforms are not present. + +*** When running "make check", you can now pas V=0 to silence more of + the build. This is useful when you're less connncerned about the + details of building and linking the test programs themselves. + +* Noteworthy changes in release 2.6.3 (2016-12-30) [stable] + +** scanner + +*** several bug fixes resolved problems introduced in recent flex + versions regarding processing of comments, literals and various + quoting scenarios. + +*** If the path to m4 was sufficiently long, a buffer overflow could + occur. This has been resolved. The fix also removes dependence on + the constant PATH_MAX. + +** build + +*** A new configure option --disable-bootstrap changes the behavior of + the build system when building flex. The default + "--enable-bootstrap" behavior is to build flex, then to use that + flex to build flex again. With --disable-bootstrap, the scanner is + simply built by sedding the scanner source. This is friendlier to + cross compilation. + +*** The compatibility functions in lib/ are no longer built as a + library. Instead, they are built as $(LIBOBJ) objects. This is + simpler and friendlier to cross compilation. + +*** It is now possible to build flex without building the accompanying + libfl. This is friendlier to cross compilation. See the + --disable-libfl option to configure. Resolves #99. + +*** the PIC version of libfl was not correctly built. It is no longer + included in the build/installation targets of flex since it was + unused. + +*** the distributed man page is only rebuilt when the relevant source + files change or when the binary doesn't exist. In particular, this + is friendlier to cross compilation. Resolves #108 + +** test + +*** the shell scripts in the test suite are more portable across different shell implementations. + +* version 2.6.2 released 2016-10-24 + +** flex internals + +*** a segfalt involving yyrestart(NULL) has been fixed + +*** flex should now handle quoting when mixed with m4 processing correctly + +*** flex handles `[[' and `]]' correctly + +*** flex no longer generates non-ANSI code + +*** more compilation warnings were squashed in generated scanners + +*** prevented a buffer overflow that could occur when input buffers were the exact wrong size + +** test suite + +*** input filenames on MSWindows are now calculated correctly + +*** general code cleanups in a number of tests now make the test suite compile much more cleanly + +** build system + +*** the xz archive has been replaced with an lzip archive + +*** a new option to configure --enable-warnings to encapsulate passing + of warning-related flags which is useful in testing flex + +*** make indent now works for out of source builds + +*** Portability warnings when generating Makefile.in files are now suppressed; they were just noise and the use of GNU extensions in Makefile.{am,in,} was intentional and well known. + +** bugs + +*** resolved gh#67 + +** new sv translation from the translation project + +* version 2.6.1 released 2016-03-01 + +** flex resources + +*** The flex project is now hosted at github. Consider this a "period of transition". In particular, you should start at https://github.com/westes/flex for the flex codebase, issue tracking and pull requests. + +*** New releases of flex are to be found at https://github.com/westes/flex/releases. + +** flex internals + +*** Flex now uses more modern and more standard names for variable types. There's more work to be done on that front yet, though. + +*** A number of compiler warnings have been remedied. + +*** Line directives should now work as expected and be absent when that is expected. + +** test suite + +*** When running the test suite, c++ files are compiled with the c++ header inside the flex distribution, rather than relying on the build system's flex header , which might not be installed yet or which might be out of date with respect to what flex tests expect. + +*** Some portability fixes in the test suite such as opening files for reading in binary mode + +** Building flex + +*** The file src/scan.c asdistributed with flex source is now built with the current version of flex. Occasionally this had to be done manually to pick up new flex features. It's now just a part of flex's build system. + +*** The pdf version of the manual is no longer distributed with flex, although if you have the texinfo package installed, you can still build it. + +*** lots of general build system cleanup + +*** the build system tries a bit harder to find libtoolize and texi2dvi. + +*** When help2man and texi2dvi are missing, the error messages are now much more helpful. + +** bug fixes + +*** resolved github issues #53, #54, #55, #61. + +*** Resolved sf bugs #128, #129, #155, #160, #184, #187, #195. + +* version 2.6.0 released 2015-11-17 + +** User Visible Changes + +*** C++ scanners now use references instead of pointers. See the manual for details. + +*** A number of compiler warnings were addressed, so flex generated scanners should be quieter under compiler warning scenarios. + +*** Allow error reporting routines to accept varying number of arguments + +*** Removed deprecated 'register' storage class specifier + +*** Changeed output formats from octal to hexadecimal + +*** check limits before using array index cclp; resolves sf-166 + +*** Suppress clang warning about empty @param paragraph; resolves sf#158 + +*** Fixed malloc/realloc replacement, resolves sf bug#151. + +*** Adjusted buffer sizes on ia64. + +*** various documentation and code clean up fixes: resolves sf bugs #167, #168, among other patches. + +** Flex Internals + +*** flex is now organized into subdirectories. This keeps the tree neater at the top level and puts like things near each other and unlike things away from each other. + +*** The test suite has been reorganized and is now run with the parallel test suite harness from automake. + +*** Cleaned up the automake parts of the build system to better reflect what automake does on its own. Also added a call to libtoolize in autogen.sh because autoreconf gets confused without a prior run of libtoolize. + +*** po/Makefile now includes a rule to fetch the latest translations from the translation project. "make -f po/Makefile getpo" from the top level of the flex tree will fetch the files. + +*** New da translation from the translation project + +* flex version 2.5.39 released 2014-03-26 + +** no user visible changes in this release + +* version 2.5.38 released 2014-02-14 + +** internationalization + +*** add sr translation from the translation project + +*** update da, es, ko, nl, pt_BR, ro, ru, sv, tr, vi, zh_CN translations from the translation project + +*** rename zh_tw to its proper zh_TW name * version 2.5.37 released 2012-08-03 @@ -512,6 +738,8 @@ But the inverse is still true See the file ONEWS for changes in earlier releases. +See the file COPYING for copying conditions. + Local Variables: mode: text mode: outline-minor diff --git a/contrib/flex/README b/contrib/flex/README deleted file mode 100644 index 0a6a70c1a021..000000000000 --- a/contrib/flex/README +++ /dev/null @@ -1,79 +0,0 @@ -This is flex, the fast lexical analyzer generator. - -flex is a tool for generating scanners: programs which recognize -lexical patterns in text. - -More information about flex as well as the latest official release of -flex can be found at: - -http://flex.sourceforge.net/ - -Bug reports should be submitted using the SourceForge Bug Tracker -facilities which can be found from flex's SourceForge project page at: - -http://sourceforge.net/projects/flex - -There are several mailing lists available as well: - -flex-announce@lists.sourceforge.net - where posts will be made -announcing new releases of flex. - -flex-help@lists.sourceforge.net - where you can post questions about -using flex - -flex-devel@lists.sourceforge.net - where you can discuss development of -flex itself - -Note that flex is distributed under a copyright very similar to that of -BSD Unix, and not under the GNU General Public License (GPL). - -This file is part of flex. - -This code is derived from software contributed to Berkeley by -Vern Paxson. - -The United States Government has rights in this work pursuant -to contract no. DE-AC03-76SF00098 between the United States -Department of Energy and the University of California. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions -are met: - -1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. -2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - -Neither the name of the University nor the names of its contributors -may be used to endorse or promote products derived from this software -without specific prior written permission. - -THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR -IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE. - -The flex distribution contains the following files which may be of interest: - -README - This file. - -NEWS - current version number and list of user-visible changes. - -INSTALL - basic installation information. - -ABOUT-NLS - description of internationalization support in flex. - -COPYING - flex's copyright and license. - -doc/ - user documentation. - -examples/ - containing examples of some possible flex scanners and a -few other things. See the file examples/README for more details. - -TODO - outstanding bug reports, desired features, etc. - -tests/ - regression tests. See TESTS/README for details. - -po/ - internationalization support files. diff --git a/contrib/flex/README.md b/contrib/flex/README.md new file mode 100644 index 000000000000..b979b01062c1 --- /dev/null +++ b/contrib/flex/README.md @@ -0,0 +1,109 @@ +This is flex, the fast lexical analyzer generator. + +flex is a tool for generating scanners: programs which recognize +lexical patterns in text. + +The flex codebase is kept in +[Git on GitHub.](https://github.com/westes/flex) + +Use GitHub's [issues](https://github.com/westes/flex/issues) and +[pull request](https://github.com/westes/flex) features to file bugs +and submit patches. + +There are several mailing lists available as well: + +* flex-announce@lists.sourceforge.net - where posts will be made + announcing new releases of flex. +* flex-help@lists.sourceforge.net - where you can post questions about + using flex +* flex-devel@lists.sourceforge.net - where you can discuss development + of flex itself + +Find information on subscribing to the mailing lists at: + +http://sourceforge.net/mail/?group_id=97492 + +The flex distribution contains the following files which may be of +interest: + +* README - This file. +* NEWS - current version number and list of user-visible changes. +* INSTALL - basic installation information. +* ABOUT-NLS - description of internationalization support in flex. +* COPYING - flex's copyright and license. +* doc/ - user documentation. +* examples/ - containing examples of some possible flex scanners and a + few other things. See the file examples/README for more + details. +* tests/ - regression tests. See TESTS/README for details. +* po/ - internationalization support files. + +You need the following tools to build flex from the maintainer's +repository: + +* compiler suite - flex is built with gcc +* bash, or a good Bourne-style shell +* m4 - m4 -p needs to work; GNU m4 and a few others are suitable +* GNU bison; to generate parse.c from parse.y +* autoconf; for handling the build system +* automake; for Makefile generation +* gettext; for i18n support +* help2man; to generate the flex man page +* tar, gzip, lzip, etc.; for packaging of the source distribution +* GNU texinfo; to build and test the flex manual. Note that if you want + to build the dvi/ps/pdf versions of the documentation you will need + texi2dvi and related programs, along with a sufficiently powerful + implementation of TeX to process them. See your operating system + documentation for how to achieve this. The printable versions of the + manual are not built unless specifically requested, but the targets + are included by automake. +* GNU indent; for indenting the flex source the way we want it done + +In cases where the versions of the above tools matter, the file +configure.ac will specify the minimum required versions. + +Once you have all the necessary tools installed, life becomes +simple. To prepare the flex tree for building, run the script: + +```bash +./autogen.sh +``` + +in the top level of the flex source tree. + +This script calls the various tools needed to get flex ready for the +GNU-style configure script to be able to work. + +From this point on, building flex follows the usual routine: + +```bash +configure && make && make install +``` + +This file is part of flex. + +This code is derived from software contributed to Berkeley by +Vern Paxson. + +The United States Government has rights in this work pursuant +to contract no. DE-AC03-76SF00098 between the United States +Department of Energy and the University of California. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: + +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +Neither the name of the University nor the names of its contributors +may be used to endorse or promote products derived from this software +without specific prior written permission. + +THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR +IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. diff --git a/contrib/flex/configure.ac b/contrib/flex/configure.ac new file mode 100644 index 000000000000..55e774b014be --- /dev/null +++ b/contrib/flex/configure.ac @@ -0,0 +1,184 @@ +# -*- Autoconf -*- +# Process this file with autoconf to produce a configure script. + +# This file is part of flex. + +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: + +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. + +# Neither the name of the University nor the names of its contributors +# may be used to endorse or promote products derived from this software +# without specific prior written permission. + +# THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR +# IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED +# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +# PURPOSE. + +# autoconf requirements and initialization + +AC_INIT([the fast lexical analyser generator],[2.6.4],[flex-help@lists.sourceforge.net],[flex]) +AC_CONFIG_SRCDIR([src/scan.l]) +AC_CONFIG_AUX_DIR([build-aux]) +LT_INIT +AM_INIT_AUTOMAKE([1.11.3 -Wno-portability foreign check-news std-options dist-lzip parallel-tests subdir-objects]) +AC_CONFIG_HEADER([src/config.h]) +AC_CONFIG_LIBOBJ_DIR([lib]) +AC_CONFIG_MACRO_DIR([m4]) +SHARED_VERSION_INFO="2:0:0" +AC_SUBST(SHARED_VERSION_INFO) + +# checks for programs + +AM_GNU_GETTEXT([external]) +AM_GNU_GETTEXT_VERSION([0.18]) +AC_PROG_YACC +AS_IF([test "$YACC" != 'bison -y'], [ + YACC="\${top_srcdir}/build-aux/missing bison -y" + AC_MSG_NOTICE(no bison program found: only required for maintainers) + ]) +AM_CONDITIONAL([HAVE_BISON], [test "$YACC" = 'bison -y']) +AM_PROG_LEX +AC_PROG_CC +AX_PROG_CC_FOR_BUILD +AC_PROG_CXX +AM_PROG_CC_C_O +AC_PROG_LN_S +AC_PROG_AWK +AC_PROG_INSTALL + +# allow passing a variable `WARNINGFLAGS', +# either when invoking `configure', or when invoking `make' +# default to something useful if GCC was detected + +AC_ARG_ENABLE([warnings], + [AS_HELP_STRING([--enable-warnings], + [enable a bunch of compiler warning flags (defaults to GCC warning flags).])], + [AS_IF([test "x$GCC" = xyes], + [ : ${WARNINGFLAGS="-Wall -Wextra -Wmissing-prototypes -Wstrict-prototypes -Wnested-externs -Wold-style-definition -Wredundant-decls -Wconversion -Wno-unused-but-set-variable"} ])]) + +AC_SUBST([WARNINGFLAGS]) + +AC_ARG_ENABLE([libfl], + [AS_HELP_STRING([--disable-libfl], + [do not build -lfl runtime support library])], + [], [enable_libfl=yes]) +AM_CONDITIONAL([ENABLE_LIBFL], [test "x$enable_libfl" = xyes]) + +# --disable-bootstrap is intended only to workaround problems with bootstrap +# (e.g. when cross-compiling flex or when bootstrapping has bugs). +# Ideally we should be able to bootstrap even when cross-compiling. +AC_ARG_ENABLE([bootstrap], + [AS_HELP_STRING([--disable-bootstrap], + [don't perform a bootstrap when building flex])], + [], [enable_bootstrap=yes]) +AM_CONDITIONAL([ENABLE_BOOTSTRAP], [test "x$enable_bootstrap" = xyes]) + +AM_CONDITIONAL([CROSS], [test "x$cross_compiling" = xyes]) + +AC_PATH_PROG([HELP2MAN], help2man, [\${top_srcdir}/build-aux/missing help2man]) + AS_IF([test "$HELP2MAN" = "\${top_srcdir}/build-aux/missing help2man"], + AC_MSG_WARN(help2man: program not found: building man page will not work) + ) + +AC_PATH_PROGS([TEXI2DVI], [gtexi2dvi texi2dvi], [\${top_srcdir}/build-aux/missing texi2dvi]) + AS_IF([test "$TEXI2DVI" = "\${top_srcdir}/build-aux/missing texi2dvi"], + AC_MSG_WARN(texi2dvi: program not found: building pdf version of manual will not work) + ) + +# Check for a m4 that supports -P + +AC_CACHE_CHECK([for m4 that supports -P], [ac_cv_path_M4], +[AC_PATH_PROGS_FEATURE_CHECK([M4], [gm4 gnum4 m4], + [[m4out=`echo 'm''4_divnum' | $ac_path_M4 -P`] + [test "x$m4out" = x0 \ + && ac_cv_path_M4=$ac_path_M4 ac_path_M4_found=:]], + [AC_MSG_ERROR([could not find m4 that supports -P])])]) +AC_SUBST([M4], [$ac_cv_path_M4]) +AC_DEFINE_UNQUOTED([M4], ["$M4"], [Define to the m4 executable name.]) + +AC_PATH_PROG([INDENT], indent, [\${top_srcdir}/build-aux/missing indent]) + AC_MSG_CHECKING(if $INDENT is GNU indent) + AS_IF([$INDENT --version 2>/dev/null | head -n 1 | grep "GNU indent" >/dev/null], + [AC_MSG_RESULT(yes)], + [AC_MSG_RESULT(no) + AC_MSG_WARN($INDENT does not appear to be GNU indent; 'make indent' may not function properly) + ]) + +# checks for headers + +AC_CHECK_HEADERS([regex.h strings.h sys/stat.h sys/wait.h unistd.h], [], + [AC_MSG_ERROR(required header not found on your system)]) + +AC_CHECK_HEADERS([inttypes.h libintl.h limits.h locale.h malloc.h netinet/in.h]) + +# checks for libraries + +# The test test-pthread uses libpthread, so we check for it here, but +# all we need is the preprocessor symbol defined since we don't need +# LIBS to include libpthread for building flex. + +LIBPTHREAD='' +AC_CHECK_LIB(pthread, pthread_mutex_lock, + [AC_CHECK_HEADERS([pthread.h], [LIBPTHREAD=-lpthread], + [AC_MSG_WARN([pthread tests will be skipped])])], + [AC_MSG_WARN([pthread tests will be skipped])]) +AC_SUBST([LIBPTHREAD]) + +AC_CHECK_LIB(m, log10) + +# Checks for typedefs, structures, and compiler characteristics. + +AC_HEADER_STDBOOL +AC_C_CONST +AC_TYPE_SIZE_T + +# Checks for library functions. + +AC_FUNC_ALLOCA +AC_FUNC_FORK +dnl Autoconf bug: AC_FUNC_MALLOC and AC_FUNC_REALLOC might not warn of cross +dnl compilation. Workaround this. +AC_FUNC_MALLOC +AS_IF([test "$cross_compiling" = yes], + AC_MSG_WARN([result $ac_cv_func_malloc_0_nonnull guessed because of cross compilation])) +AC_FUNC_REALLOC +AS_IF([test "$cross_compiling" = yes], + AC_MSG_WARN([result $ac_cv_func_realloc_0_nonnull guessed because of cross compilation])) + +AC_CHECK_FUNCS([dup2 dnl +memset dnl +regcomp dnl +strcasecmp dnl +strchr dnl +strdup dnl +strtol dnl +], [], [AC_MSG_ERROR(required library function not found on your system)]) + +# Optional library functions +AC_CHECK_FUNCS([dnl +pow dnl Used only by "examples/manual/expr" +setlocale dnl Needed only if NLS is enabled +reallocarray dnl OpenBSD function. We have replacement if not available. +]) + +AC_CONFIG_FILES( +Makefile +doc/Makefile +examples/Makefile +examples/fastwc/Makefile +examples/manual/Makefile +po/Makefile.in +src/Makefile +tools/Makefile +tests/Makefile +) + +AC_OUTPUT diff --git a/contrib/flex/src/FlexLexer.h b/contrib/flex/src/FlexLexer.h new file mode 100644 index 000000000000..c4dad2b1421d --- /dev/null +++ b/contrib/flex/src/FlexLexer.h @@ -0,0 +1,220 @@ +// -*-C++-*- +// FlexLexer.h -- define interfaces for lexical analyzer classes generated +// by flex + +// Copyright (c) 1993 The Regents of the University of California. +// All rights reserved. +// +// This code is derived from software contributed to Berkeley by +// Kent Williams and Tom Epperly. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions +// are met: + +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. + +// Neither the name of the University nor the names of its contributors +// may be used to endorse or promote products derived from this software +// without specific prior written permission. + +// THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR +// IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED +// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE. + +// This file defines FlexLexer, an abstract class which specifies the +// external interface provided to flex C++ lexer objects, and yyFlexLexer, +// which defines a particular lexer class. +// +// If you want to create multiple lexer classes, you use the -P flag +// to rename each yyFlexLexer to some other xxFlexLexer. You then +// include in your other sources once per lexer class: +// +// #undef yyFlexLexer +// #define yyFlexLexer xxFlexLexer +// #include +// +// #undef yyFlexLexer +// #define yyFlexLexer zzFlexLexer +// #include +// ... + +#ifndef __FLEX_LEXER_H +// Never included before - need to define base class. +#define __FLEX_LEXER_H + +#include + +extern "C++" { + +struct yy_buffer_state; +typedef int yy_state_type; + +class FlexLexer +{ +public: + virtual ~FlexLexer() { } + + const char* YYText() const { return yytext; } + int YYLeng() const { return yyleng; } + + virtual void + yy_switch_to_buffer( yy_buffer_state* new_buffer ) = 0; + virtual yy_buffer_state* yy_create_buffer( std::istream* s, int size ) = 0; + virtual yy_buffer_state* yy_create_buffer( std::istream& s, int size ) = 0; + virtual void yy_delete_buffer( yy_buffer_state* b ) = 0; + virtual void yyrestart( std::istream* s ) = 0; + virtual void yyrestart( std::istream& s ) = 0; + + virtual int yylex() = 0; + + // Call yylex with new input/output sources. + int yylex( std::istream& new_in, std::ostream& new_out ) + { + switch_streams( new_in, new_out ); + return yylex(); + } + + int yylex( std::istream* new_in, std::ostream* new_out = 0) + { + switch_streams( new_in, new_out ); + return yylex(); + } + + // Switch to new input/output streams. A nil stream pointer + // indicates "keep the current one". + virtual void switch_streams( std::istream* new_in, + std::ostream* new_out ) = 0; + virtual void switch_streams( std::istream& new_in, + std::ostream& new_out ) = 0; + + int lineno() const { return yylineno; } + + int debug() const { return yy_flex_debug; } + void set_debug( int flag ) { yy_flex_debug = flag; } + +protected: + char* yytext; + int yyleng; + int yylineno; // only maintained if you use %option yylineno + int yy_flex_debug; // only has effect with -d or "%option debug" +}; + +} +#endif // FLEXLEXER_H + +#if defined(yyFlexLexer) || ! defined(yyFlexLexerOnce) +// Either this is the first time through (yyFlexLexerOnce not defined), +// or this is a repeated include to define a different flavor of +// yyFlexLexer, as discussed in the flex manual. +# define yyFlexLexerOnce + +extern "C++" { + +class yyFlexLexer : public FlexLexer { +public: + // arg_yyin and arg_yyout default to the cin and cout, but we + // only make that assignment when initializing in yylex(). + yyFlexLexer( std::istream& arg_yyin, std::ostream& arg_yyout ); + yyFlexLexer( std::istream* arg_yyin = 0, std::ostream* arg_yyout = 0 ); +private: + void ctor_common(); + +public: + + virtual ~yyFlexLexer(); + + void yy_switch_to_buffer( yy_buffer_state* new_buffer ); + yy_buffer_state* yy_create_buffer( std::istream* s, int size ); + yy_buffer_state* yy_create_buffer( std::istream& s, int size ); + void yy_delete_buffer( yy_buffer_state* b ); + void yyrestart( std::istream* s ); + void yyrestart( std::istream& s ); + + void yypush_buffer_state( yy_buffer_state* new_buffer ); + void yypop_buffer_state(); + + virtual int yylex(); + virtual void switch_streams( std::istream& new_in, std::ostream& new_out ); + virtual void switch_streams( std::istream* new_in = 0, std::ostream* new_out = 0 ); + virtual int yywrap(); + +protected: + virtual int LexerInput( char* buf, int max_size ); + virtual void LexerOutput( const char* buf, int size ); + virtual void LexerError( const char* msg ); + + void yyunput( int c, char* buf_ptr ); + int yyinput(); + + void yy_load_buffer_state(); + void yy_init_buffer( yy_buffer_state* b, std::istream& s ); + void yy_flush_buffer( yy_buffer_state* b ); + + int yy_start_stack_ptr; + int yy_start_stack_depth; + int* yy_start_stack; + + void yy_push_state( int new_state ); + void yy_pop_state(); + int yy_top_state(); + + yy_state_type yy_get_previous_state(); + yy_state_type yy_try_NUL_trans( yy_state_type current_state ); + int yy_get_next_buffer(); + + std::istream yyin; // input source for default LexerInput + std::ostream yyout; // output sink for default LexerOutput + + // yy_hold_char holds the character lost when yytext is formed. + char yy_hold_char; + + // Number of characters read into yy_ch_buf. + int yy_n_chars; + + // Points to current character in buffer. + char* yy_c_buf_p; + + int yy_init; // whether we need to initialize + int yy_start; // 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 ... + int yy_did_buffer_switch_on_eof; + + + size_t yy_buffer_stack_top; /**< index of top of stack. */ + size_t yy_buffer_stack_max; /**< capacity of stack. */ + yy_buffer_state ** yy_buffer_stack; /**< Stack as an array. */ + void yyensure_buffer_stack(void); + + // The following are not always needed, but may be depending + // on use of certain flex features (like REJECT or yymore()). + + yy_state_type yy_last_accepting_state; + char* yy_last_accepting_cpos; + + yy_state_type* yy_state_buf; + yy_state_type* yy_state_ptr; + + char* yy_full_match; + int* yy_full_state; + int yy_full_lp; + + int yy_lp; + int yy_looking_for_trail_begin; + + int yy_more_flag; + int yy_more_len; + int yy_more_offset; + int yy_prev_more_offset; +}; + +} + +#endif // yyFlexLexer || ! yyFlexLexerOnce diff --git a/contrib/flex/buf.c b/contrib/flex/src/buf.c similarity index 76% rename from contrib/flex/buf.c rename to contrib/flex/src/buf.c index d6efdacee7bf..4deb0b7b14b7 100644 --- a/contrib/flex/buf.c +++ b/contrib/flex/src/buf.c @@ -73,12 +73,13 @@ struct Buf *buf_prints (struct Buf *buf, const char *fmt, const char *s) char *t; size_t tsz; - t = flex_alloc (tsz = strlen (fmt) + strlen (s) + 1); + tsz = strlen(fmt) + strlen(s) + 1; + t = malloc(tsz); if (!t) flexfatal (_("Allocation of buffer to print string failed")); snprintf (t, tsz, fmt, s); buf = buf_strappend (buf, t); - flex_free (t); + free(t); return buf; } @@ -92,21 +93,26 @@ struct Buf *buf_linedir (struct Buf *buf, const char* filename, int lineno) { char *dst, *t; const char *src; + size_t tsz; - t = flex_alloc (strlen ("#line \"\"\n") + /* constant parts */ - 2 * strlen (filename) + /* filename with possibly all backslashes escaped */ - NUMCHARLINES + /* line number */ - 1); /* NUL */ + if (gen_line_dirs) + return buf; + + tsz = strlen("#line \"\"\n") + /* constant parts */ + 2 * strlen (filename) + /* filename with possibly all backslashes escaped */ + NUMCHARLINES + /* line number */ + 1; /* NUL */ + t = malloc(tsz); if (!t) flexfatal (_("Allocation of buffer for line directive failed")); - for (dst = t + sprintf (t, "#line %d \"", lineno), src = filename; *src; *dst++ = *src++) + for (dst = t + snprintf (t, tsz, "#line %d \"", lineno), src = filename; *src; *dst++ = *src++) if (*src == '\\') /* escape backslashes */ *dst++ = '\\'; *dst++ = '"'; *dst++ = '\n'; *dst = '\0'; buf = buf_strappend (buf, t); - flex_free (t); + free(t); return buf; } @@ -124,10 +130,7 @@ struct Buf *buf_concat(struct Buf* dest, const struct Buf* src) /* Appends n characters in str to buf. */ -struct Buf *buf_strnappend (buf, str, n) - struct Buf *buf; - const char *str; - int n; +struct Buf *buf_strnappend (struct Buf *buf, const char *str, int n) { buf_append (buf, str, n + 1); @@ -138,18 +141,13 @@ struct Buf *buf_strnappend (buf, str, n) } /* Appends characters in str to buf. */ -struct Buf *buf_strappend (buf, str) - struct Buf *buf; - const char *str; +struct Buf *buf_strappend (struct Buf *buf, const char *str) { - return buf_strnappend (buf, str, strlen (str)); + return buf_strnappend (buf, str, (int) strlen (str)); } /* appends "#define str def\n" */ -struct Buf *buf_strdefine (buf, str, def) - struct Buf *buf; - const char *str; - const char *def; +struct Buf *buf_strdefine (struct Buf *buf, const char *str, const char *def) { buf_strappend (buf, "#define "); buf_strappend (buf, " "); @@ -168,12 +166,13 @@ struct Buf *buf_strdefine (buf, str, def) */ struct Buf *buf_m4_define (struct Buf *buf, const char* def, const char* val) { - const char * fmt = "m4_define( [[%s]], [[%s]])m4_dnl\n"; + const char * fmt = "m4_define( [[%s]], [[[[%s]]]])m4_dnl\n"; char * str; size_t strsz; val = val?val:""; - str = (char*)flex_alloc(strsz = strlen(fmt) + strlen(def) + strlen(val) + 2); + strsz = strlen(fmt) + strlen(def) + strlen(val) + 2; + str = malloc(strsz); if (!str) flexfatal (_("Allocation of buffer for m4 def failed")); @@ -193,7 +192,8 @@ struct Buf *buf_m4_undefine (struct Buf *buf, const char* def) char * str; size_t strsz; - str = (char*)flex_alloc(strsz = strlen(fmt) + strlen(def) + 2); + strsz = strlen(fmt) + strlen(def) + 2; + str = malloc(strsz); if (!str) flexfatal (_("Allocation of buffer for m4 undef failed")); @@ -203,23 +203,21 @@ struct Buf *buf_m4_undefine (struct Buf *buf, const char* def) } /* create buf with 0 elements, each of size elem_size. */ -void buf_init (buf, elem_size) - struct Buf *buf; - size_t elem_size; +void buf_init (struct Buf *buf, size_t elem_size) { - buf->elts = (void *) 0; + buf->elts = NULL; buf->nelts = 0; buf->elt_size = elem_size; buf->nmax = 0; } /* frees memory */ -void buf_destroy (buf) - struct Buf *buf; +void buf_destroy (struct Buf *buf) { - if (buf && buf->elts) - flex_free (buf->elts); - buf->elts = (void *) 0; + if (buf) { + free(buf->elts); + buf->elts = NULL; + } } @@ -229,10 +227,7 @@ void buf_destroy (buf) * We grow by mod(512) boundaries. */ -struct Buf *buf_append (buf, ptr, n_elem) - struct Buf *buf; - const void *ptr; - int n_elem; +struct Buf *buf_append (struct Buf *buf, const void *ptr, int n_elem) { int n_alloc = 0; @@ -242,30 +237,30 @@ struct Buf *buf_append (buf, ptr, n_elem) /* May need to alloc more. */ if (n_elem + buf->nelts > buf->nmax) { - /* exact amount needed... */ - n_alloc = (n_elem + buf->nelts) * buf->elt_size; + /* exact count needed... */ + n_alloc = n_elem + buf->nelts; /* ...plus some extra */ - if (((n_alloc * buf->elt_size) % 512) != 0 + if ((((size_t) n_alloc * buf->elt_size) % 512) != 0 && buf->elt_size < 512) - n_alloc += - (512 - - ((n_alloc * buf->elt_size) % 512)) / - buf->elt_size; + n_alloc += (int) + ((512 - + (((size_t) n_alloc * buf->elt_size) % 512)) / + buf->elt_size); if (!buf->elts) buf->elts = - allocate_array (n_alloc, buf->elt_size); + allocate_array ((int) n_alloc, buf->elt_size); else buf->elts = - reallocate_array (buf->elts, n_alloc, + reallocate_array (buf->elts, (int) n_alloc, buf->elt_size); buf->nmax = n_alloc; } - memcpy ((char *) buf->elts + buf->nelts * buf->elt_size, ptr, - n_elem * buf->elt_size); + memcpy ((char *) buf->elts + (size_t) buf->nelts * buf->elt_size, ptr, + (size_t) n_elem * buf->elt_size); buf->nelts += n_elem; return buf; diff --git a/contrib/flex/ccl.c b/contrib/flex/src/ccl.c similarity index 96% rename from contrib/flex/ccl.c rename to contrib/flex/src/ccl.c index 7b134af08273..ff9a2134ee33 100644 --- a/contrib/flex/ccl.c +++ b/contrib/flex/src/ccl.c @@ -52,9 +52,7 @@ ccl_contains (const int cclp, const int ch) /* ccladd - add a single character to a ccl */ -void ccladd (cclp, ch) - int cclp; - int ch; +void ccladd (int cclp, int ch) { int ind, len, newpos, i; @@ -85,7 +83,7 @@ void ccladd (cclp, ch) } ccllen[cclp] = len + 1; - ccltbl[newpos] = ch; + ccltbl[newpos] = (unsigned char) ch; } /* dump_cclp - same thing as list_character_set, but for cclps. */ @@ -185,7 +183,7 @@ ccl_set_union (int a, int b) /* cclinit - return an empty ccl */ -int cclinit () +int cclinit (void) { if (++lastccl >= current_maxccls) { current_maxccls += MAX_CCLS_INCREMENT; @@ -225,8 +223,7 @@ int cclinit () /* cclnegate - negate the given ccl */ -void cclnegate (cclp) - int cclp; +void cclnegate (int cclp) { cclng[cclp] = 1; ccl_has_nl[cclp] = !ccl_has_nl[cclp]; @@ -240,9 +237,7 @@ void cclnegate (cclp) * has a non-zero value in the cset array. */ -void list_character_set (file, cset) - FILE *file; - int cset[]; +void list_character_set (FILE *file, int cset[]) { int i; diff --git a/contrib/flex/dfa.c b/contrib/flex/src/dfa.c similarity index 92% rename from contrib/flex/dfa.c rename to contrib/flex/src/dfa.c index addd99514a30..ab103143c0f0 100644 --- a/contrib/flex/dfa.c +++ b/contrib/flex/src/dfa.c @@ -34,10 +34,10 @@ /* declare functions that have forward references */ -void dump_associated_rules PROTO ((FILE *, int)); -void dump_transitions PROTO ((FILE *, int[])); -void sympartition PROTO ((int[], int, int[], int[])); -int symfollowset PROTO ((int[], int, int, int[])); +void dump_associated_rules(FILE *, int); +void dump_transitions(FILE *, int[]); +void sympartition(int[], int, int[], int[]); +int symfollowset(int[], int, int, int[]); /* check_for_backing_up - check a DFA state for backing up @@ -49,9 +49,7 @@ int symfollowset PROTO ((int[], int, int, int[])); * indexed by equivalence class. */ -void check_for_backing_up (ds, state) - int ds; - int state[]; +void check_for_backing_up (int ds, int state[]) { if ((reject && !dfaacc[ds].dfaacc_set) || (!reject && !dfaacc[ds].dfaacc_state)) { /* state is non-accepting */ ++num_backing_up; @@ -96,10 +94,7 @@ void check_for_backing_up (ds, state) * accset[1 .. nacc] is the list of accepting numbers for the DFA state. */ -void check_trailing_context (nfa_states, num_states, accset, nacc) - int *nfa_states, num_states; - int *accset; - int nacc; +void check_trailing_context (int *nfa_states, int num_states, int *accset, int nacc) { int i, j; @@ -137,15 +132,13 @@ void check_trailing_context (nfa_states, num_states, accset, nacc) * and writes a report to the given file. */ -void dump_associated_rules (file, ds) - FILE *file; - int ds; +void dump_associated_rules (FILE *file, int ds) { int i, j; int num_associated_rules = 0; - int rule_set[MAX_ASSOC_RULES + 1]; - int *dset = dss[ds]; - int size = dfasiz[ds]; + int rule_set[MAX_ASSOC_RULES + 1]; + int *dset = dss[ds]; + int size = dfasiz[ds]; for (i = 1; i <= size; ++i) { int rule_num = rule_linenum[assoc_rule[dset[i]]]; @@ -161,7 +154,7 @@ void dump_associated_rules (file, ds) } } - qsort (&rule_set [1], num_associated_rules, sizeof (rule_set [1]), intcmp); + qsort (&rule_set [1], (size_t) num_associated_rules, sizeof (rule_set [1]), intcmp); fprintf (file, _(" associated rule line numbers:")); @@ -187,12 +180,10 @@ void dump_associated_rules (file, ds) * is done to the given file. */ -void dump_transitions (file, state) - FILE *file; - int state[]; +void dump_transitions (FILE *file, int state[]) { int i, ec; - int out_char_set[CSIZE]; + int out_char_set[CSIZE]; for (i = 0; i < csize; ++i) { ec = ABS (ecgroup[i]); @@ -235,10 +226,9 @@ void dump_transitions (file, state) * hashval is the hash value for the dfa corresponding to the state set. */ -int *epsclosure (t, ns_addr, accset, nacc_addr, hv_addr) - int *t, *ns_addr, accset[], *nacc_addr, *hv_addr; +int *epsclosure (int *t, int *ns_addr, int accset[], int *nacc_addr, int *hv_addr) { - int stkpos, ns, tsp; + int stkpos, ns, tsp; int numstates = *ns_addr, nacc, hashval, transsym, nfaccnum; int stkend, nstate; static int did_stk_init = false, *stk; @@ -351,7 +341,7 @@ ADD_STATE(state); \ /* increase_max_dfas - increase the maximum number of DFAs */ -void increase_max_dfas () +void increase_max_dfas (void) { current_max_dfas += MAX_DFAS_INCREMENT; @@ -378,7 +368,7 @@ void increase_max_dfas () * dfa starts out in state #1. */ -void ntod () +void ntod (void) { int *accset, ds, nacc, newds; int sym, hashval, numstates, dsize; @@ -400,7 +390,7 @@ void ntod () * from 1 to CSIZE, so their size must be CSIZE + 1. */ int duplist[CSIZE + 1], state[CSIZE + 1]; - int targfreq[CSIZE + 1], targstate[CSIZE + 1]; + int targfreq[CSIZE + 1] = {0}, targstate[CSIZE + 1]; /* accset needs to be large enough to hold all of the rules present * in the input, *plus* their YY_TRAILING_HEAD_MASK variants. @@ -473,14 +463,9 @@ void ntod () /* We still may want to use the table if numecs * is a power of 2. */ - int power_of_two; - - for (power_of_two = 1; power_of_two <= csize; - power_of_two *= 2) - if (numecs == power_of_two) { - use_NUL_table = true; - break; - } + if (numecs <= csize && is_power_of_2(numecs)) { + use_NUL_table = true; + } } if (use_NUL_table) @@ -521,15 +506,13 @@ void ntod () * So we'll have to realloc() on the way... * we'll wait until we can calculate yynxt_tbl->td_hilen. */ - yynxt_tbl = - (struct yytbl_data *) calloc (1, - sizeof (struct - yytbl_data)); + yynxt_tbl = calloc(1, sizeof (struct yytbl_data)); + yytbl_data_init (yynxt_tbl, YYTD_ID_NXT); yynxt_tbl->td_hilen = 1; - yynxt_tbl->td_lolen = num_full_table_rows; + yynxt_tbl->td_lolen = (flex_uint32_t) num_full_table_rows; yynxt_tbl->td_data = yynxt_data = - (flex_int32_t *) calloc (yynxt_tbl->td_lolen * + calloc(yynxt_tbl->td_lolen * yynxt_tbl->td_hilen, sizeof (flex_int32_t)); yynxt_curr = 0; @@ -543,12 +526,12 @@ void ntod () */ if (gentables) out_str_dec - ("static yyconst %s yy_nxt[][%d] =\n {\n", + ("static const %s yy_nxt[][%d] =\n {\n", long_align ? "flex_int32_t" : "flex_int16_t", num_full_table_rows); else { out_dec ("#undef YY_NXT_LOLEN\n#define YY_NXT_LOLEN (%d)\n", num_full_table_rows); - out_str ("static yyconst %s *yy_nxt =0;\n", + out_str ("static const %s *yy_nxt =0;\n", long_align ? "flex_int32_t" : "flex_int16_t"); } @@ -713,7 +696,7 @@ void ntod () /* Each time we hit here, it's another td_hilen, so we realloc. */ yynxt_tbl->td_hilen++; yynxt_tbl->td_data = yynxt_data = - (flex_int32_t *) realloc (yynxt_data, + realloc (yynxt_data, yynxt_tbl->td_hilen * yynxt_tbl->td_lolen * sizeof (flex_int32_t)); @@ -805,8 +788,8 @@ void ntod () mkdeftbl (); } - flex_free ((void *) accset); - flex_free ((void *) nset); + free(accset); + free(nset); } @@ -820,12 +803,11 @@ void ntod () * On return, the dfa state number is in newds. */ -int snstods (sns, numstates, accset, nacc, hashval, newds_addr) - int sns[], numstates, accset[], nacc, hashval, *newds_addr; +int snstods (int sns[], int numstates, int accset[], int nacc, int hashval, int *newds_addr) { - int didsort = 0; + int didsort = 0; int i, j; - int newds, *oldsns; + int newds, *oldsns; for (i = 1; i <= lastdfa; ++i) if (hashval == dhash[i]) { @@ -836,7 +818,7 @@ int snstods (sns, numstates, accset, nacc, hashval, newds_addr) /* We sort the states in sns so we * can compare it to oldsns quickly. */ - qsort (&sns [1], numstates, sizeof (sns [1]), intcmp); + qsort (&sns [1], (size_t) numstates, sizeof (sns [1]), intcmp); didsort = 1; } @@ -871,7 +853,7 @@ int snstods (sns, numstates, accset, nacc, hashval, newds_addr) */ if (!didsort) - qsort (&sns [1], numstates, sizeof (sns [1]), intcmp); + qsort (&sns [1], (size_t) numstates, sizeof (sns [1]), intcmp); for (i = 1; i <= numstates; ++i) dss[newds][i] = sns[i]; @@ -881,7 +863,7 @@ int snstods (sns, numstates, accset, nacc, hashval, newds_addr) if (nacc == 0) { if (reject) - dfaacc[newds].dfaacc_set = (int *) 0; + dfaacc[newds].dfaacc_set = NULL; else dfaacc[newds].dfaacc_state = 0; @@ -894,7 +876,7 @@ int snstods (sns, numstates, accset, nacc, hashval, newds_addr) * match in the event of ties will work. */ - qsort (&accset [1], nacc, sizeof (accset [1]), intcmp); + qsort (&accset [1], (size_t) nacc, sizeof (accset [1]), intcmp); dfaacc[newds].dfaacc_set = allocate_integer_array (nacc + 1); @@ -942,8 +924,7 @@ int snstods (sns, numstates, accset, nacc, hashval, newds_addr) * int transsym, int nset[current_max_dfa_size] ); */ -int symfollowset (ds, dsize, transsym, nset) - int ds[], dsize, transsym, nset[]; +int symfollowset (int ds[], int dsize, int transsym, int nset[]) { int ns, tsp, sym, i, j, lenccl, ch, numstates, ccllist; @@ -1020,9 +1001,7 @@ int symfollowset (ds, dsize, transsym, nset) * int symlist[numecs], int duplist[numecs] ); */ -void sympartition (ds, numstates, symlist, duplist) - int ds[], numstates; - int symlist[], duplist[]; +void sympartition (int ds[], int numstates, int symlist[], int duplist[]) { int tch, i, j, k, ns, dupfwd[CSIZE + 1], lenccl, cclp, ich; diff --git a/contrib/flex/ecs.c b/contrib/flex/src/ecs.c similarity index 91% rename from contrib/flex/ecs.c rename to contrib/flex/src/ecs.c index 05c97ed6d28f..dc68360d7292 100644 --- a/contrib/flex/ecs.c +++ b/contrib/flex/src/ecs.c @@ -36,7 +36,7 @@ /* ccl2ecl - convert character classes to set of equivalence classes */ -void ccl2ecl () +void ccl2ecl (void) { int i, ich, newlen, cclp, ccls, cclmec; @@ -56,7 +56,8 @@ void ccl2ecl () cclmec = ecgroup[ich]; if (cclmec > 0) { - ccltbl[cclp + newlen] = cclmec; + /* Note: range 1..256 is mapped to 1..255,0 */ + ccltbl[cclp + newlen] = (unsigned char) cclmec; ++newlen; } } @@ -74,8 +75,7 @@ void ccl2ecl () * Returned is the number of classes. */ -int cre8ecs (fwd, bck, num) - int fwd[], bck[], num; +int cre8ecs (int fwd[], int bck[], int num) { int i, j, numcl; @@ -100,9 +100,9 @@ int cre8ecs (fwd, bck, num) /* mkeccl - update equivalence classes based on character class xtions * * synopsis - * Char ccls[]; + * unsigned char ccls[]; * int lenccl, fwd[llsiz], bck[llsiz], llsiz, NUL_mapping; - * void mkeccl( Char ccls[], int lenccl, int fwd[llsiz], int bck[llsiz], + * void mkeccl( unsigned char ccls[], int lenccl, int fwd[llsiz], int bck[llsiz], * int llsiz, int NUL_mapping ); * * ccls contains the elements of the character class, lenccl is the @@ -112,9 +112,7 @@ int cre8ecs (fwd, bck, num) * NUL_mapping is the value which NUL (0) should be mapped to. */ -void mkeccl (ccls, lenccl, fwd, bck, llsiz, NUL_mapping) - Char ccls[]; - int lenccl, fwd[], bck[], llsiz, NUL_mapping; +void mkeccl (unsigned char ccls[], int lenccl, int fwd[], int bck[], int llsiz, int NUL_mapping) { int cclp, oldec, newec; int cclm, i, j; @@ -191,7 +189,7 @@ void mkeccl (ccls, lenccl, fwd, bck, llsiz, NUL_mapping) /* Find next ccl member to process. */ - for (++cclp; cclflags[cclp] && cclp < lenccl; ++cclp) { + for (++cclp; cclp < lenccl && cclflags[cclp]; ++cclp) { /* Reset "doesn't need processing" flag. */ cclflags[cclp] = 0; } @@ -201,8 +199,7 @@ void mkeccl (ccls, lenccl, fwd, bck, llsiz, NUL_mapping) /* mkechar - create equivalence class for single character */ -void mkechar (tch, fwd, bck) - int tch, fwd[], bck[]; +void mkechar (int tch, int fwd[], int bck[]) { /* If until now the character has been a proper subset of * an equivalence class, break it away to create a new ec diff --git a/contrib/flex/filter.c b/contrib/flex/src/filter.c similarity index 88% rename from contrib/flex/filter.c rename to contrib/flex/src/filter.c index b874e10cd063..71f3635fe520 100644 --- a/contrib/flex/filter.c +++ b/contrib/flex/src/filter.c @@ -47,9 +47,9 @@ struct filter *filter_create_ext (struct filter *chain, const char *cmd, va_list ap; /* allocate and initialize new filter */ - f = (struct filter *) flex_alloc (sizeof (struct filter)); + f = malloc(sizeof(struct filter)); if (!f) - flexerror (_("flex_alloc failed (f) in filter_create_ext")); + flexerror(_("malloc failed (f) in filter_create_ext")); memset (f, 0, sizeof (*f)); f->filter_func = NULL; f->extra = NULL; @@ -66,23 +66,16 @@ struct filter *filter_create_ext (struct filter *chain, const char *cmd, /* allocate argv, and populate it with the argument list. */ max_args = 8; - f->argv = - (const char **) flex_alloc (sizeof (char *) * - (max_args + 1)); + f->argv = malloc(sizeof(char *) * (size_t) (max_args + 1)); if (!f->argv) - flexerror (_("flex_alloc failed (f->argv) in filter_create_ext")); + flexerror(_("malloc failed (f->argv) in filter_create_ext")); f->argv[f->argc++] = cmd; va_start (ap, cmd); while ((s = va_arg (ap, const char *)) != NULL) { if (f->argc >= max_args) { max_args += 8; - f->argv = - (const char **) flex_realloc (f->argv, - sizeof (char - *) * - (max_args + - 1)); + f->argv = realloc(f->argv, sizeof(char*) * (size_t) (max_args + 1)); } f->argv[f->argc++] = s; } @@ -107,9 +100,9 @@ struct filter *filter_create_int (struct filter *chain, struct filter *f; /* allocate and initialize new filter */ - f = (struct filter *) flex_alloc (sizeof (struct filter)); + f = malloc(sizeof(struct filter)); if (!f) - flexerror (_("flex_alloc failed in filter_create_int")); + flexerror(_("malloc failed in filter_create_int")); memset (f, 0, sizeof (*f)); f->next = NULL; f->argc = 0; @@ -174,6 +167,8 @@ clearerr(stdin); flexfatal (_("dup2(pipes[0],0)")); close (pipes[0]); fseek (stdin, 0, SEEK_CUR); + ungetc(' ', stdin); /* still an evil hack, but one that works better */ + (void)fgetc(stdin); /* on NetBSD than the fseek attempt does */ /* run as a filter, either internally or by exec */ if (chain->filter_func) { @@ -181,16 +176,16 @@ clearerr(stdin); if ((r = chain->filter_func (chain)) == -1) flexfatal (_("filter_func failed")); - exit (0); + FLEX_EXIT (0); } else { execvp (chain->argv[0], (char **const) (chain->argv)); - lerrsf_fatal ( _("exec of %s failed"), + lerr_fatal ( _("exec of %s failed"), chain->argv[0]); } - exit (1); + FLEX_EXIT (1); } /* Parent */ @@ -288,9 +283,9 @@ int filter_tee_header (struct filter *chain) fprintf (to_c, "m4_define( [[M4_YY_OUTFILE_NAME]],[[%s]])m4_dnl\n", outfilename ? outfilename : ""); - buf = (char *) flex_alloc (readsz); + buf = malloc((size_t) readsz); if (!buf) - flexerror (_("flex_alloc failed in filter_tee_header")); + flexerror(_("malloc failed in filter_tee_header")); while (fgets (buf, readsz, stdin)) { fputs (buf, to_c); if (write_header) @@ -301,7 +296,8 @@ int filter_tee_header (struct filter *chain) fprintf (to_h, "\n"); /* write a fake line number. It will get fixed by the linedir filter. */ - fprintf (to_h, "#line 4000 \"M4_YY_OUTFILE_NAME\"\n"); + if (gen_line_dirs) + fprintf (to_h, "#line 4000 \"M4_YY_OUTFILE_NAME\"\n"); fprintf (to_h, "#undef %sIN_HEADER\n", prefix); fprintf (to_h, "#endif /* %sHEADER_H */\n", prefix); @@ -309,26 +305,26 @@ int filter_tee_header (struct filter *chain) fflush (to_h); if (ferror (to_h)) - lerrsf (_("error writing output file %s"), + lerr (_("error writing output file %s"), (char *) chain->extra); else if (fclose (to_h)) - lerrsf (_("error closing output file %s"), + lerr (_("error closing output file %s"), (char *) chain->extra); } fflush (to_c); if (ferror (to_c)) - lerrsf (_("error writing output file %s"), + lerr (_("error writing output file %s"), outfilename ? outfilename : ""); else if (fclose (to_c)) - lerrsf (_("error closing output file %s"), + lerr (_("error closing output file %s"), outfilename ? outfilename : ""); while (wait (0) > 0) ; - exit (0); + FLEX_EXIT (0); return 0; } @@ -341,7 +337,7 @@ int filter_tee_header (struct filter *chain) int filter_fix_linedirs (struct filter *chain) { char *buf; - const int readsz = 512; + const size_t readsz = 512; int lineno = 1; bool in_gen = true; /* in generated code */ bool last_was_blank = false; @@ -349,11 +345,11 @@ int filter_fix_linedirs (struct filter *chain) if (!chain) return 0; - buf = (char *) flex_alloc (readsz); + buf = malloc(readsz); if (!buf) - flexerror (_("flex_alloc failed in filter_fix_linedirs")); + flexerror(_("malloc failed in filter_fix_linedirs")); - while (fgets (buf, readsz, stdin)) { + while (fgets (buf, (int) readsz, stdin)) { regmatch_t m[10]; @@ -361,11 +357,9 @@ int filter_fix_linedirs (struct filter *chain) if (buf[0] == '#' && regexec (®ex_linedir, buf, 3, m, 0) == 0) { - int num; char *fname; /* extract the line number and filename */ - num = regmatch_strtol (&m[1], buf, NULL, 0); fname = regmatch_dup (&m[2], buf); if (strcmp (fname, @@ -397,7 +391,7 @@ int filter_fix_linedirs (struct filter *chain) /* Adjust the line directives. */ in_gen = true; snprintf (buf, readsz, "#line %d \"%s\"\n", - lineno + 1, filename); + lineno, filename); } else { /* it's a #line directive for code we didn't write */ @@ -428,11 +422,11 @@ int filter_fix_linedirs (struct filter *chain) } fflush (stdout); if (ferror (stdout)) - lerrsf (_("error writing output file %s"), + lerr (_("error writing output file %s"), outfilename ? outfilename : ""); else if (fclose (stdout)) - lerrsf (_("error closing output file %s"), + lerr (_("error closing output file %s"), outfilename ? outfilename : ""); return 0; diff --git a/contrib/flex/flex.skl b/contrib/flex/src/flex.skl similarity index 85% rename from contrib/flex/flex.skl rename to contrib/flex/src/flex.skl index d06471fdcfa5..242645f53245 100644 --- a/contrib/flex/flex.skl +++ b/contrib/flex/src/flex.skl @@ -6,17 +6,18 @@ %# pre-compilation stage of flex. Only macros starting %# with `m4preproc_' are processed, and quoting is normal. %# -%# 2. The preprocessed skeleton is translated verbatim into a -%# C array, saved as "skel.c" and compiled into the flex binary. +%# 2. The preprocessed skeleton is translated into a C array, saved +%# as "skel.c" and compiled into the flex binary. The %# comment +%# lines are removed. %# %# 3. At runtime, the skeleton is generated and filtered (again) %# through m4. Macros beginning with `m4_' will be processed. %# The quoting is "[[" and "]]" so we don't interfere with %# user code. -%# +%# %# All generate macros for the m4 stage contain the text "m4" or "M4" %# in them. This is to distinguish them from CPP macros. -%# The exception to this rule is YY_G, which is an m4 macro, +%# The exception to this rule is YY_G, which is an m4 macro, %# but it needs to be remain short because it is used everywhere. %# /* A lexical scanner generated by flex */ @@ -29,7 +30,7 @@ m4_changecom m4_changequote m4_changequote([[, ]]) -%# +%# %# Lines in this skeleton starting with a "%" character are "control lines" %# and affect the generation of the scanner. The possible control codes are %# listed and processed in misc.c. @@ -61,11 +62,17 @@ m4_changequote([[, ]]) m4_ifelse(M4_YY_PREFIX,yy,, #define yy_create_buffer M4_YY_PREFIX[[_create_buffer]] #define yy_delete_buffer M4_YY_PREFIX[[_delete_buffer]] -#define yy_flex_debug M4_YY_PREFIX[[_flex_debug]] +#define yy_scan_buffer M4_YY_PREFIX[[_scan_buffer]] +#define yy_scan_string M4_YY_PREFIX[[_scan_string]] +#define yy_scan_bytes M4_YY_PREFIX[[_scan_bytes]] #define yy_init_buffer M4_YY_PREFIX[[_init_buffer]] #define yy_flush_buffer M4_YY_PREFIX[[_flush_buffer]] #define yy_load_buffer_state M4_YY_PREFIX[[_load_buffer_state]] #define yy_switch_to_buffer M4_YY_PREFIX[[_switch_to_buffer]] +#define yypush_buffer_state M4_YY_PREFIX[[push_buffer_state]] +#define yypop_buffer_state M4_YY_PREFIX[[pop_buffer_state]] +#define yyensure_buffer_stack M4_YY_PREFIX[[ensure_buffer_stack]] +#define yy_flex_debug M4_YY_PREFIX[[_flex_debug]] #define yyin M4_YY_PREFIX[[in]] #define yyleng M4_YY_PREFIX[[leng]] #define yylex M4_YY_PREFIX[[lex]] @@ -105,8 +112,16 @@ m4_ifdef( [[M4_YY_REENTRANT]], [[m4_define([[M4_YY_HAS_START_STACK_VARS]])]]) m4_ifdef( [[M4_YY_PREFIX]],, [[m4_define([[M4_YY_PREFIX]], [[yy]])]]) -m4preproc_define(`M4_GEN_PREFIX', - ``m4_define(yy[[$1]], [[M4_YY_PREFIX[[$1]]m4_ifelse($'`#,0,,[[($'`@)]])]])'') +m4preproc_define(`M4_GEN_PREFIX',`` +[[#ifdef yy$1 +#define ]]M4_YY_PREFIX[[$1_ALREADY_DEFINED +#else +#define yy$1 ]]M4_YY_PREFIX[[$1 +#endif]] +'m4preproc_divert(1)` +[[#ifndef ]]M4_YY_PREFIX[[$1_ALREADY_DEFINED +#undef yy$1 +#endif]]'m4preproc_divert(0)') %if-c++-only /* The c++ scanner is a mess. The FlexLexer.h header file relies on the @@ -119,6 +134,7 @@ m4preproc_define(`M4_GEN_PREFIX', %endif %if-c-only +m4_ifelse(M4_YY_PREFIX,yy,, M4_GEN_PREFIX(`_create_buffer') M4_GEN_PREFIX(`_delete_buffer') M4_GEN_PREFIX(`_scan_buffer') @@ -154,6 +170,7 @@ m4preproc_define(`M4_GEN_PREFIX', M4_GEN_PREFIX(`set_column') ]]) M4_GEN_PREFIX(`wrap') +) %endif m4_ifdef( [[M4_YY_BISON_LVAL]], @@ -169,11 +186,14 @@ m4_ifdef( [[]], ]]) +m4_ifelse(M4_YY_PREFIX,yy,, M4_GEN_PREFIX(`alloc') M4_GEN_PREFIX(`realloc') M4_GEN_PREFIX(`free') +) %if-c-only +m4_ifelse(M4_YY_PREFIX,yy,, m4_ifdef( [[M4_YY_NOT_REENTRANT]], [[ M4_GEN_PREFIX(`text') @@ -183,6 +203,7 @@ m4_ifdef( [[M4_YY_NOT_REENTRANT]], M4_GEN_PREFIX(`_flex_debug') M4_GEN_PREFIX(`lineno') ]]) +) %endif @@ -196,11 +217,7 @@ m4_ifdef( [[M4_YY_TABLES_EXTERNAL]], /* First, we deal with platform-specific or compiler-specific issues. */ #if defined(__FreeBSD__) -#ifndef __STDC_LIMIT_MACROS -#define __STDC_LIMIT_MACROS -#endif #include -#include #else #define __dead2 #endif @@ -223,9 +240,9 @@ m4_ifdef( [[M4_YY_TABLES_EXTERNAL]], m4preproc_include(`flexint.h') %endif -%if-c++-only /* begin standard C++ headers. */ -#include +%if-c++-only +#include #include #include #include @@ -233,45 +250,14 @@ m4preproc_include(`flexint.h') /* end standard C++ headers. */ %endif -#ifdef __cplusplus - -/* The "const" storage-class-modifier is valid. */ -#define YY_USE_CONST - -#else /* ! __cplusplus */ - -/* C99 requires __STDC__ to be defined as 1. */ -#if defined (__STDC__) - -#define YY_USE_CONST - -#endif /* defined (__STDC__) */ -#endif /* ! __cplusplus */ - -#ifdef YY_USE_CONST +/* TODO: this is always defined, so inline it */ #define yyconst const -#else -#define yyconst -#endif -%# For compilers that can not handle prototypes. -%# e.g., -%# The function prototype -%# int foo(int x, char* y); -%# -%# ...should be written as -%# int foo M4_YY_PARAMS(int x, char* y); -%# -%# ...which could possibly generate -%# int foo (); -%# -m4_ifdef( [[M4_YY_NO_ANSI_FUNC_PROTOS]], -[[ - m4_define( [[M4_YY_PARAMS]], [[()]]) -]], -[[ - m4_define( [[M4_YY_PARAMS]], [[($*)]]) -]]) +#if defined(__GNUC__) && __GNUC__ >= 3 +#define yynoreturn __attribute__((__noreturn__)) +#else +#define yynoreturn +#endif %not-for-header /* Returned upon end-of-file. */ @@ -279,12 +265,10 @@ m4_ifdef( [[M4_YY_NO_ANSI_FUNC_PROTOS]], %ok-for-header %not-for-header -/* 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. +/* Promotes a possibly negative, possibly signed char to an + * integer in range [0..255] for use as an array index. */ -#define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c) +#define YY_SC_TO_UI(c) ((YY_CHAR) (c)) %ok-for-header @@ -308,16 +292,8 @@ m4_define( [[YY_G]], [[yyg->$1]]) m4_define( [[M4_YY_PROTO_LAST_ARG]], [[, yyscan_t yyscanner]]) m4_define( [[M4_YY_PROTO_ONLY_ARG]], [[yyscan_t yyscanner]]) -%# For use in function definitions to append the additional argument. -m4_ifdef( [[M4_YY_NO_ANSI_FUNC_DEFS]], -[[ - m4_define( [[M4_YY_DEF_LAST_ARG]], [[, yyscanner]]) - m4_define( [[M4_YY_DEF_ONLY_ARG]], [[yyscanner]]) -]], -[[ - m4_define( [[M4_YY_DEF_LAST_ARG]], [[, yyscan_t yyscanner]]) - m4_define( [[M4_YY_DEF_ONLY_ARG]], [[yyscan_t yyscanner]]) -]]) +m4_define( [[M4_YY_DEF_LAST_ARG]], [[, yyscan_t yyscanner]]) +m4_define( [[M4_YY_DEF_ONLY_ARG]], [[yyscan_t yyscanner]]) m4_define( [[M4_YY_DECL_LAST_ARG]], [[yyscan_t yyscanner;]]) %# For use in function calls to pass the additional argument. @@ -339,7 +315,7 @@ m4_define( [[M4_YY_DOC_PARAM]], [[@param yyscanner The scanner object.]]) #define yy_flex_debug YY_G(yy_flex_debug_r) m4_define( [[M4_YY_INCR_LINENO]], -[[ +[[ do{ yylineno++; yycolumn=0; }while(0) @@ -352,7 +328,7 @@ m4_define( [[M4_YY_INCR_LINENO]], %if-not-reentrant m4_define( [[M4_YY_INCR_LINENO]], -[[ +[[ yylineno++; ]]) @@ -364,60 +340,19 @@ m4_define( [[M4_YY_PROTO_LAST_ARG]]) m4_define( [[M4_YY_PROTO_ONLY_ARG]], [[void]]) m4_define( [[M4_YY_DEF_LAST_ARG]]) -m4_ifdef( [[M4_YY_NO_ANSI_FUNC_DEFS]], -[[ - m4_define( [[M4_YY_DEF_ONLY_ARG]]) -]], -[[ - m4_define( [[M4_YY_DEF_ONLY_ARG]], [[void]]) -]]) +m4_define( [[M4_YY_DEF_ONLY_ARG]], [[void]]) m4_define([[M4_YY_DECL_LAST_ARG]]) m4_define([[M4_YY_CALL_LAST_ARG]]) m4_define([[M4_YY_CALL_ONLY_ARG]]) -m4_define( [[M4_YY_DOC_PARAM]], [[]]) +m4_define( [[M4_YY_DOC_PARAM]], ) %endif -m4_ifdef( [[M4_YY_NO_ANSI_FUNC_DEFS]], -[[ -%# For compilers that need traditional function definitions. -%# e.g., -%# The function prototype taking 2 arguments -%# int foo (int x, char* y) -%# -%# ...should be written as -%# int foo YYFARGS2(int,x, char*,y) -%# -%# ...which could possibly generate -%# int foo (x,y,yyscanner) -%# int x; -%# char * y; -%# yyscan_t yyscanner; -%# -%# Generate traditional function defs - m4_define( [[YYFARGS0]], [[(M4_YY_DEF_ONLY_ARG) [[\]] - M4_YY_DECL_LAST_ARG]]) - m4_define( [[YYFARGS1]], [[($2 M4_YY_DEF_LAST_ARG) [[\]] - $1 $2; [[\]] - M4_YY_DECL_LAST_ARG]]) - m4_define( [[YYFARGS2]], [[($2,$4 M4_YY_DEF_LAST_ARG) [[\]] - $1 $2; [[\]] - $3 $4; [[\]] - M4_YY_DECL_LAST_ARG]]) - m4_define( [[YYFARGS3]], [[($2,$4,$6 M4_YY_DEF_LAST_ARG) [[\]] - $1 $2; [[\]] - $3 $4; [[\]] - $5 $6; [[\]] - M4_YY_DECL_LAST_ARG]]) -]], -[[ %# Generate C99 function defs. - m4_define( [[YYFARGS0]], [[(M4_YY_DEF_ONLY_ARG)]]) - m4_define( [[YYFARGS1]], [[($1 $2 M4_YY_DEF_LAST_ARG)]]) - m4_define( [[YYFARGS2]], [[($1 $2, $3 $4 M4_YY_DEF_LAST_ARG)]]) - m4_define( [[YYFARGS3]], [[($1 $2, $3 $4, $5 $6 M4_YY_DEF_LAST_ARG)]]) -]]) +m4_define( [[YYFARGS1]], [[($1 $2 M4_YY_DEF_LAST_ARG)]]) +m4_define( [[YYFARGS2]], [[($1 $2, $3 $4 M4_YY_DEF_LAST_ARG)]]) +m4_define( [[YYFARGS3]], [[($1 $2, $3 $4, $5 $6 M4_YY_DEF_LAST_ARG)]]) m4_ifdef( [[M4_YY_NOT_IN_HEADER]], [[ @@ -426,38 +361,30 @@ m4_ifdef( [[M4_YY_NOT_IN_HEADER]], * definition of BEGIN. */ #define BEGIN YY_G(yy_start) = 1 + 2 * -]]) - -m4_ifdef( [[M4_YY_NOT_IN_HEADER]], -[[ /* 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_G(yy_start) - 1) / 2) #define YYSTATE YY_START -]]) - -m4_ifdef( [[M4_YY_NOT_IN_HEADER]], -[[ /* Action number for EOF rule of a given start state. */ #define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1) -]]) - -m4_ifdef( [[M4_YY_NOT_IN_HEADER]], -[[ /* Special action meaning "start processing a new file". */ #define YY_NEW_FILE yyrestart( yyin M4_YY_CALL_LAST_ARG ) -]]) - -m4_ifdef( [[M4_YY_NOT_IN_HEADER]], -[[ #define YY_END_OF_BUFFER_CHAR 0 ]]) /* Size of default input buffer. */ #ifndef YY_BUF_SIZE +#ifdef __ia64__ +/* On IA-64, the buffer size is 16k, not 8k. + * Moreover, YY_BUF_SIZE is 2*YY_READ_BUF_SIZE in the general case. + * Ditto for the __ia64__ case accordingly. + */ +#define YY_BUF_SIZE 32768 +#else #define YY_BUF_SIZE 16384 +#endif /* __ia64__ */ #endif m4_ifdef( [[M4_YY_NOT_IN_HEADER]], @@ -479,7 +406,7 @@ typedef size_t yy_size_t; #endif %if-not-reentrant -extern yy_size_t yyleng; +extern int yyleng; %endif %if-c-only @@ -493,15 +420,11 @@ m4_ifdef( [[M4_YY_NOT_IN_HEADER]], #define EOB_ACT_CONTINUE_SCAN 0 #define EOB_ACT_END_OF_FILE 1 #define EOB_ACT_LAST_MATCH 2 -]]) - -m4_ifdef( [[M4_YY_NOT_IN_HEADER]], -[[ m4_ifdef( [[M4_YY_USE_LINENO]], [[ /* 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. + * 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. @@ -513,14 +436,18 @@ m4_ifdef( [[M4_YY_NOT_IN_HEADER]], if ( yytext[yyl] == '\n' )\ --yylineno;\ }while(0) + #define YY_LINENO_REWIND_TO(dst) \ + do {\ + const char *p;\ + for ( p = yy_cp-1; p >= (dst); --p)\ + if ( *p == '\n' )\ + --yylineno;\ + }while(0) ]], [[ #define YY_LESS_LINENO(n) + #define YY_LINENO_REWIND_TO(ptr) ]]) -]]) - -m4_ifdef( [[M4_YY_NOT_IN_HEADER]], -[[ /* Return all but the first "n" matched characters back to the input stream. */ #define yyless(n) \ do \ @@ -534,10 +461,6 @@ m4_ifdef( [[M4_YY_NOT_IN_HEADER]], YY_DO_BEFORE_ACTION; /* set up yytext again */ \ } \ while ( 0 ) -]]) - -m4_ifdef( [[M4_YY_NOT_IN_HEADER]], -[[ #define unput(c) yyunput( c, YY_G(yytext_ptr) M4_YY_CALL_LAST_ARG ) ]]) @@ -550,7 +473,7 @@ struct yy_buffer_state %endif %if-c++-only - std::istream* yy_input_file; + std::streambuf* yy_input_file; %endif @@ -560,12 +483,12 @@ struct yy_buffer_state /* Size of input buffer in bytes, not including room for EOB * characters. */ - yy_size_t yy_buf_size; + int yy_buf_size; /* Number of characters read into yy_ch_buf, not including EOB * characters. */ - yy_size_t yy_n_chars; + 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 @@ -588,7 +511,7 @@ struct yy_buffer_state 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. @@ -622,7 +545,7 @@ m4_ifdef( [[M4_YY_NOT_IN_HEADER]], /* 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. */ +static YY_BUFFER_STATE * yy_buffer_stack = NULL; /**< Stack as an array. */ %endif %ok-for-header %endif @@ -639,10 +562,6 @@ m4_ifdef( [[M4_YY_NOT_IN_HEADER]], ? YY_G(yy_buffer_stack)[YY_G(yy_buffer_stack_top)] \ : NULL) #define yy_current_buffer YY_CURRENT_BUFFER -]]) - -m4_ifdef( [[M4_YY_NOT_IN_HEADER]], -[[ /* 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. */ @@ -655,11 +574,11 @@ m4_ifdef( [[M4_YY_NOT_IN_HEADER]], %not-for-header /* yy_hold_char holds the character lost when yytext is formed. */ static char yy_hold_char; -static yy_size_t yy_n_chars; /* number of characters read into yy_ch_buf */ -yy_size_t yyleng; +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 char *yy_c_buf_p = NULL; static int yy_init = 0; /* whether we need to initialize */ static int yy_start = 0; /* start state number */ @@ -670,43 +589,35 @@ static int yy_did_buffer_switch_on_eof; %ok-for-header %endif -void yyrestart M4_YY_PARAMS( FILE *input_file M4_YY_PROTO_LAST_ARG ); -void yy_switch_to_buffer M4_YY_PARAMS( YY_BUFFER_STATE new_buffer M4_YY_PROTO_LAST_ARG ); -YY_BUFFER_STATE yy_create_buffer M4_YY_PARAMS( FILE *file, int size M4_YY_PROTO_LAST_ARG ); -void yy_delete_buffer M4_YY_PARAMS( YY_BUFFER_STATE b M4_YY_PROTO_LAST_ARG ); -void yy_flush_buffer M4_YY_PARAMS( YY_BUFFER_STATE b M4_YY_PROTO_LAST_ARG ); -void yypush_buffer_state M4_YY_PARAMS( YY_BUFFER_STATE new_buffer M4_YY_PROTO_LAST_ARG ); -void yypop_buffer_state M4_YY_PARAMS( M4_YY_PROTO_ONLY_ARG ); - -m4_ifdef( [[M4_YY_NOT_IN_HEADER]], -[[ -static void yyensure_buffer_stack M4_YY_PARAMS( M4_YY_PROTO_ONLY_ARG ); -static void yy_load_buffer_state M4_YY_PARAMS( M4_YY_PROTO_ONLY_ARG ); -static void yy_init_buffer M4_YY_PARAMS( YY_BUFFER_STATE b, FILE *file M4_YY_PROTO_LAST_ARG ); -]]) +void yyrestart ( FILE *input_file M4_YY_PROTO_LAST_ARG ); +void yy_switch_to_buffer ( YY_BUFFER_STATE new_buffer M4_YY_PROTO_LAST_ARG ); +YY_BUFFER_STATE yy_create_buffer ( FILE *file, int size M4_YY_PROTO_LAST_ARG ); +void yy_delete_buffer ( YY_BUFFER_STATE b M4_YY_PROTO_LAST_ARG ); +void yy_flush_buffer ( YY_BUFFER_STATE b M4_YY_PROTO_LAST_ARG ); +void yypush_buffer_state ( YY_BUFFER_STATE new_buffer M4_YY_PROTO_LAST_ARG ); +void yypop_buffer_state ( M4_YY_PROTO_ONLY_ARG ); m4_ifdef( [[M4_YY_NOT_IN_HEADER]], [[ +static void yyensure_buffer_stack ( M4_YY_PROTO_ONLY_ARG ); +static void yy_load_buffer_state ( M4_YY_PROTO_ONLY_ARG ); +static void yy_init_buffer ( YY_BUFFER_STATE b, FILE *file M4_YY_PROTO_LAST_ARG ); #define YY_FLUSH_BUFFER yy_flush_buffer( YY_CURRENT_BUFFER M4_YY_CALL_LAST_ARG) ]]) -YY_BUFFER_STATE yy_scan_buffer M4_YY_PARAMS( char *base, yy_size_t size M4_YY_PROTO_LAST_ARG ); -YY_BUFFER_STATE yy_scan_string M4_YY_PARAMS( yyconst char *yy_str M4_YY_PROTO_LAST_ARG ); -YY_BUFFER_STATE yy_scan_bytes M4_YY_PARAMS( yyconst char *bytes, yy_size_t len M4_YY_PROTO_LAST_ARG ); +YY_BUFFER_STATE yy_scan_buffer ( char *base, yy_size_t size M4_YY_PROTO_LAST_ARG ); +YY_BUFFER_STATE yy_scan_string ( const char *yy_str M4_YY_PROTO_LAST_ARG ); +YY_BUFFER_STATE yy_scan_bytes ( const char *bytes, int len M4_YY_PROTO_LAST_ARG ); %endif -void *yyalloc M4_YY_PARAMS( yy_size_t M4_YY_PROTO_LAST_ARG ); -void *yyrealloc M4_YY_PARAMS( void *, yy_size_t M4_YY_PROTO_LAST_ARG ); -void yyfree M4_YY_PARAMS( void * M4_YY_PROTO_LAST_ARG ); +void *yyalloc ( yy_size_t M4_YY_PROTO_LAST_ARG ); +void *yyrealloc ( void *, yy_size_t M4_YY_PROTO_LAST_ARG ); +void yyfree ( void * M4_YY_PROTO_LAST_ARG ); m4_ifdef( [[M4_YY_NOT_IN_HEADER]], [[ #define yy_new_buffer yy_create_buffer -]]) - -m4_ifdef( [[M4_YY_NOT_IN_HEADER]], -[[ #define yy_set_interactive(is_interactive) \ { \ if ( ! YY_CURRENT_BUFFER ){ \ @@ -716,10 +627,6 @@ m4_ifdef( [[M4_YY_NOT_IN_HEADER]], } \ YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \ } -]]) - -m4_ifdef( [[M4_YY_NOT_IN_HEADER]], -[[ #define yy_set_bol(at_bol) \ { \ if ( ! YY_CURRENT_BUFFER ){\ @@ -729,10 +636,6 @@ m4_ifdef( [[M4_YY_NOT_IN_HEADER]], } \ YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \ } -]]) - -m4_ifdef( [[M4_YY_NOT_IN_HEADER]], -[[ #define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol) ]]) @@ -747,10 +650,10 @@ m4_ifdef( [[M4_YY_NOT_IN_HEADER]], m4_ifdef( [[M4_YY_NOT_IN_HEADER]], [[ -static yy_state_type yy_get_previous_state M4_YY_PARAMS( M4_YY_PROTO_ONLY_ARG ); -static yy_state_type yy_try_NUL_trans M4_YY_PARAMS( yy_state_type current_state M4_YY_PROTO_LAST_ARG); -static int yy_get_next_buffer M4_YY_PARAMS( M4_YY_PROTO_ONLY_ARG ); -static void yy_fatal_error M4_YY_PARAMS( yyconst char msg[] M4_YY_PROTO_LAST_ARG ) __dead2; +static yy_state_type yy_get_previous_state ( M4_YY_PROTO_ONLY_ARG ); +static yy_state_type yy_try_NUL_trans ( yy_state_type current_state M4_YY_PROTO_LAST_ARG); +static int yy_get_next_buffer ( M4_YY_PROTO_ONLY_ARG ); +static void yynoreturn yy_fatal_error ( const char* msg M4_YY_PROTO_LAST_ARG ) __dead2; ]]) %endif @@ -767,10 +670,6 @@ m4_ifdef( [[M4_YY_NOT_IN_HEADER]], *yy_cp = '\0'; \ %% [3.0] code to copy yytext_ptr to yytext[] goes here, if %array \ YY_G(yy_c_buf_p) = yy_cp; -]]) - -m4_ifdef( [[M4_YY_NOT_IN_HEADER]], -[[ %% [4.0] data tables for the DFA and the user's section 1 definitions go here ]]) @@ -823,8 +722,8 @@ struct yyguts_t size_t yy_buffer_stack_max; /**< capacity of stack. */ YY_BUFFER_STATE * yy_buffer_stack; /**< Stack as an array. */ char yy_hold_char; - yy_size_t yy_n_chars; - yy_size_t yyleng_r; + int yy_n_chars; + int yyleng_r; char *yy_c_buf_p; int yy_init; int yy_start; @@ -882,7 +781,7 @@ m4_ifdef( [[]], %if-c-only m4_ifdef( [[M4_YY_NOT_IN_HEADER]], [[ -static int yy_init_globals M4_YY_PARAMS( M4_YY_PROTO_ONLY_ARG ); +static int yy_init_globals ( M4_YY_PROTO_ONLY_ARG ); ]]) %endif @@ -903,9 +802,9 @@ m4_ifdef( [[M4_YY_NOT_IN_HEADER]], ]]) ]]) -int yylex_init M4_YY_PARAMS(yyscan_t* scanner); +int yylex_init (yyscan_t* scanner); -int yylex_init_extra M4_YY_PARAMS( YY_EXTRA_TYPE user_defined, yyscan_t* scanner); +int yylex_init_extra ( YY_EXTRA_TYPE user_defined, yyscan_t* scanner); %endif @@ -916,74 +815,74 @@ int yylex_init_extra M4_YY_PARAMS( YY_EXTRA_TYPE user_defined, yyscan_t* scanner m4_ifdef( [[M4_YY_NO_DESTROY]],, [[ -int yylex_destroy M4_YY_PARAMS( M4_YY_PROTO_ONLY_ARG ); +int yylex_destroy ( M4_YY_PROTO_ONLY_ARG ); ]]) m4_ifdef( [[M4_YY_NO_GET_DEBUG]],, [[ -int yyget_debug M4_YY_PARAMS( M4_YY_PROTO_ONLY_ARG ); +int yyget_debug ( M4_YY_PROTO_ONLY_ARG ); ]]) m4_ifdef( [[M4_YY_NO_SET_DEBUG]],, [[ -void yyset_debug M4_YY_PARAMS( int debug_flag M4_YY_PROTO_LAST_ARG ); +void yyset_debug ( int debug_flag M4_YY_PROTO_LAST_ARG ); ]]) m4_ifdef( [[M4_YY_NO_GET_EXTRA]],, [[ -YY_EXTRA_TYPE yyget_extra M4_YY_PARAMS( M4_YY_PROTO_ONLY_ARG ); +YY_EXTRA_TYPE yyget_extra ( M4_YY_PROTO_ONLY_ARG ); ]]) m4_ifdef( [[M4_YY_NO_SET_EXTRA]],, [[ -void yyset_extra M4_YY_PARAMS( YY_EXTRA_TYPE user_defined M4_YY_PROTO_LAST_ARG ); +void yyset_extra ( YY_EXTRA_TYPE user_defined M4_YY_PROTO_LAST_ARG ); ]]) m4_ifdef( [[M4_YY_NO_GET_IN]],, [[ -FILE *yyget_in M4_YY_PARAMS( M4_YY_PROTO_ONLY_ARG ); +FILE *yyget_in ( M4_YY_PROTO_ONLY_ARG ); ]]) m4_ifdef( [[M4_YY_NO_SET_IN]],, [[ -void yyset_in M4_YY_PARAMS( FILE * in_str M4_YY_PROTO_LAST_ARG ); +void yyset_in ( FILE * _in_str M4_YY_PROTO_LAST_ARG ); ]]) m4_ifdef( [[M4_YY_NO_GET_OUT]],, [[ -FILE *yyget_out M4_YY_PARAMS( M4_YY_PROTO_ONLY_ARG ); +FILE *yyget_out ( M4_YY_PROTO_ONLY_ARG ); ]]) m4_ifdef( [[M4_YY_NO_SET_OUT]],, [[ -void yyset_out M4_YY_PARAMS( FILE * out_str M4_YY_PROTO_LAST_ARG ); +void yyset_out ( FILE * _out_str M4_YY_PROTO_LAST_ARG ); ]]) m4_ifdef( [[M4_YY_NO_GET_LENG]],, [[ -yy_size_t yyget_leng M4_YY_PARAMS( M4_YY_PROTO_ONLY_ARG ); + int yyget_leng ( M4_YY_PROTO_ONLY_ARG ); ]]) m4_ifdef( [[M4_YY_NO_GET_TEXT]],, [[ -char *yyget_text M4_YY_PARAMS( M4_YY_PROTO_ONLY_ARG ); +char *yyget_text ( M4_YY_PROTO_ONLY_ARG ); ]]) m4_ifdef( [[M4_YY_NO_GET_LINENO]],, [[ -int yyget_lineno M4_YY_PARAMS( M4_YY_PROTO_ONLY_ARG ); +int yyget_lineno ( M4_YY_PROTO_ONLY_ARG ); ]]) m4_ifdef( [[M4_YY_NO_SET_LINENO]],, [[ -void yyset_lineno M4_YY_PARAMS( int line_number M4_YY_PROTO_LAST_ARG ); +void yyset_lineno ( int _line_number M4_YY_PROTO_LAST_ARG ); ]]) m4_ifdef( [[M4_YY_REENTRANT]], [[ m4_ifdef( [[M4_YY_NO_GET_COLUMN]],, [[ -int yyget_column M4_YY_PARAMS( M4_YY_PROTO_ONLY_ARG ); +int yyget_column ( M4_YY_PROTO_ONLY_ARG ); ]]) ]]) @@ -991,28 +890,28 @@ m4_ifdef( [[M4_YY_REENTRANT]], [[ m4_ifdef( [[M4_YY_NO_SET_COLUMN]],, [[ -void yyset_column M4_YY_PARAMS( int column_no M4_YY_PROTO_LAST_ARG ); +void yyset_column ( int _column_no M4_YY_PROTO_LAST_ARG ); ]]) ]]) %if-bison-bridge m4_ifdef( [[M4_YY_NO_GET_LVAL]],, [[ -YYSTYPE * yyget_lval M4_YY_PARAMS( M4_YY_PROTO_ONLY_ARG ); +YYSTYPE * yyget_lval ( M4_YY_PROTO_ONLY_ARG ); ]]) -void yyset_lval M4_YY_PARAMS( YYSTYPE * yylval_param M4_YY_PROTO_LAST_ARG ); +void yyset_lval ( YYSTYPE * yylval_param M4_YY_PROTO_LAST_ARG ); m4_ifdef( [[]], [[ m4_ifdef( [[M4_YY_NO_GET_LLOC]],, [[ - YYLTYPE *yyget_lloc M4_YY_PARAMS( M4_YY_PROTO_ONLY_ARG ); + YYLTYPE *yyget_lloc ( M4_YY_PROTO_ONLY_ARG ); ]]) m4_ifdef( [[M4_YY_NO_SET_LLOC]],, [[ - void yyset_lloc M4_YY_PARAMS( YYLTYPE * yylloc_param M4_YY_PROTO_LAST_ARG ); + void yyset_lloc ( YYLTYPE * yylloc_param M4_YY_PROTO_LAST_ARG ); ]]) ]]) %endif @@ -1023,37 +922,37 @@ m4_ifdef( [[]], #ifndef YY_SKIP_YYWRAP #ifdef __cplusplus -extern "C" int yywrap M4_YY_PARAMS( M4_YY_PROTO_ONLY_ARG ); +extern "C" int yywrap ( M4_YY_PROTO_ONLY_ARG ); #else -extern int yywrap M4_YY_PARAMS( M4_YY_PROTO_ONLY_ARG ); +extern int yywrap ( M4_YY_PROTO_ONLY_ARG ); #endif #endif %not-for-header +#ifndef YY_NO_UNPUT m4_ifdef( [[M4_YY_NO_UNPUT]],, [[ -#ifndef YY_NO_UNPUT - static void yyunput M4_YY_PARAMS( int c, char *buf_ptr M4_YY_PROTO_LAST_ARG); -#endif + static void yyunput ( int c, char *buf_ptr M4_YY_PROTO_LAST_ARG); ]]) +#endif %ok-for-header %endif #ifndef yytext_ptr -static void yy_flex_strncpy M4_YY_PARAMS( char *, yyconst char *, int M4_YY_PROTO_LAST_ARG); +static void yy_flex_strncpy ( char *, const char *, int M4_YY_PROTO_LAST_ARG); #endif #ifdef YY_NEED_STRLEN -static int yy_flex_strlen M4_YY_PARAMS( yyconst char * M4_YY_PROTO_LAST_ARG); +static int yy_flex_strlen ( const char * M4_YY_PROTO_LAST_ARG); #endif #ifndef YY_NO_INPUT %if-c-only Standard (non-C++) definition %not-for-header #ifdef __cplusplus -static int yyinput M4_YY_PARAMS( M4_YY_PROTO_ONLY_ARG ); +static int yyinput ( M4_YY_PROTO_ONLY_ARG ); #else -static int input M4_YY_PARAMS( M4_YY_PROTO_ONLY_ARG ); +static int input ( M4_YY_PROTO_ONLY_ARG ); #endif %ok-for-header %endif @@ -1079,15 +978,15 @@ m4_ifdef( [[M4_YY_NOT_IN_HEADER]], [[ m4_ifdef( [[M4_YY_NO_PUSH_STATE]],, [[ - static void yy_push_state M4_YY_PARAMS( int new_state M4_YY_PROTO_LAST_ARG); + static void yy_push_state ( int _new_state M4_YY_PROTO_LAST_ARG); ]]) m4_ifdef( [[M4_YY_NO_POP_STATE]],, [[ - static void yy_pop_state M4_YY_PARAMS( M4_YY_PROTO_ONLY_ARG ); + static void yy_pop_state ( M4_YY_PROTO_ONLY_ARG ); ]]) m4_ifdef( [[M4_YY_NO_TOP_STATE]],, [[ - static int yy_top_state M4_YY_PARAMS( M4_YY_PROTO_ONLY_ARG ); + static int yy_top_state ( M4_YY_PROTO_ONLY_ARG ); ]]) ]]) @@ -1101,7 +1000,12 @@ m4_define( [[M4_YY_NO_TOP_STATE]]) /* Amount of stuff to slurp up with each read. */ #ifndef YY_READ_BUF_SIZE +#ifdef __ia64__ +/* On IA-64, the buffer size is 16k, not 8k */ +#define YY_READ_BUF_SIZE 16384 +#else #define YY_READ_BUF_SIZE 8192 +#endif /* __ia64__ */ #endif m4_ifdef( [[M4_YY_NOT_IN_HEADER]], @@ -1112,7 +1016,7 @@ m4_ifdef( [[M4_YY_NOT_IN_HEADER]], /* This used to be an fputs(), but since the string might contain NUL's, * we now use fwrite(). */ -#define ECHO do { if (fwrite( yytext, yyleng, 1, yyout )) {} } while (0) +#define ECHO do { if (fwrite( yytext, (size_t) yyleng, 1, yyout )) {} } while (0) %endif %if-c++-only C++ definition #define ECHO LexerOutput( yytext, yyleng ) @@ -1130,7 +1034,7 @@ m4_ifdef( [[M4_YY_NOT_IN_HEADER]], %% [5.0] fread()/read() definition of YY_INPUT goes here unless we're doing C++ \ \ %if-c++-only C++ definition \ - if ( (result = LexerInput( (char *) buf, max_size )) < 0 ) \ + if ( (int)(result = LexerInput( (char *) buf, max_size )) < 0 ) \ YY_FATAL_ERROR( "input in flex scanner failed" ); %endif @@ -1170,15 +1074,15 @@ m4_ifdef( [[M4_YY_NOT_IN_HEADER]], m4preproc_include(`tables_shared.h') /* Load the DFA tables from the given stream. */ -int yytables_fload M4_YY_PARAMS(FILE * fp M4_YY_PROTO_LAST_ARG); +int yytables_fload (FILE * fp M4_YY_PROTO_LAST_ARG); /* Unload the tables from memory. */ -int yytables_destroy M4_YY_PARAMS(M4_YY_PROTO_ONLY_ARG); +int yytables_destroy (M4_YY_PROTO_ONLY_ARG); %not-for-header /** Describes a mapping from a serialized table id to its deserialized state in * this scanner. This is the bridge between our "generic" deserialization code - * and the specifics of this scanner. + * and the specifics of this scanner. */ struct yytbl_dmap { enum yytbl_id dm_id;/**< table identifier */ @@ -1212,8 +1116,8 @@ struct yytbl_reader { %if-c-only Standard (non-C++) definition -m4_define( [[M4_YY_LEX_PROTO]], [[M4_YY_PARAMS(M4_YY_PROTO_ONLY_ARG)]]) -m4_define( [[M4_YY_LEX_DECLARATION]], [[YYFARGS0(void)]]) +m4_define( [[M4_YY_LEX_PROTO]], [[(M4_YY_PROTO_ONLY_ARG)]]) +m4_define( [[M4_YY_LEX_DECLARATION]], [[(M4_YY_DEF_ONLY_ARG)]]) m4_ifdef( [[M4_YY_BISON_LVAL]], [[ @@ -1221,7 +1125,7 @@ m4_ifdef( [[M4_YY_BISON_LVAL]], m4_dnl accept the lval parameter. m4_define( [[M4_YY_LEX_PROTO]], [[\]] - [[M4_YY_PARAMS(YYSTYPE * yylval_param M4_YY_PROTO_LAST_ARG)]]) + [[(YYSTYPE * yylval_param M4_YY_PROTO_LAST_ARG)]]) m4_define( [[M4_YY_LEX_DECLARATION]], [[\]] [[YYFARGS1(YYSTYPE *,yylval_param)]]) ]]) @@ -1231,7 +1135,7 @@ m4_ifdef( [[]], m4_dnl Locations are used. yylex should also accept the ylloc parameter. m4_define( [[M4_YY_LEX_PROTO]], [[\]] - [[M4_YY_PARAMS(YYSTYPE * yylval_param, YYLTYPE * yylloc_param M4_YY_PROTO_LAST_ARG)]]) + [[(YYSTYPE * yylval_param, YYLTYPE * yylloc_param M4_YY_PROTO_LAST_ARG)]]) m4_define( [[M4_YY_LEX_DECLARATION]], [[\]] [[YYFARGS2(YYSTYPE *,yylval_param, YYLTYPE *,yylloc_param)]]) ]]) @@ -1259,7 +1163,7 @@ m4_ifdef( [[M4_YY_NOT_IN_HEADER]], [[ /* Code executed at the end of each rule. */ #ifndef YY_BREAK -#define YY_BREAK break; +#define YY_BREAK /*LINTED*/break; #endif ]]) @@ -1290,8 +1194,6 @@ m4_ifdef( [[M4_YY_NOT_REENTRANT]], ]]) ]]) -%% [7.0] user's declarations go here - m4_ifdef( [[M4_YY_BISON_LVAL]], [[ yylval = yylval_param; @@ -1327,7 +1229,7 @@ m4_ifdef( [[M4_YY_USES_REJECT]], yyin = stdin; %endif %if-c++-only - yyin = & std::cin; + yyin.rdbuf(std::cin.rdbuf()); %endif if ( ! yyout ) @@ -1335,7 +1237,7 @@ m4_ifdef( [[M4_YY_USES_REJECT]], yyout = stdout; %endif %if-c++-only - yyout = & std::cout; + yyout.rdbuf(std::cout.rdbuf()); %endif if ( ! YY_CURRENT_BUFFER ) { @@ -1347,7 +1249,10 @@ m4_ifdef( [[M4_YY_USES_REJECT]], yy_load_buffer_state( M4_YY_CALL_ONLY_ARG ); } - while ( 1 ) /* loops until end-of-file is reached */ + { +%% [7.0] user's declarations go here + + while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ { %% [8.0] yymore()-related code goes here yy_cp = YY_G(yy_c_buf_p); @@ -1398,7 +1303,12 @@ do_action: /* This label is used only to access EOF actions. */ * back-up) that will match for the new input source. */ YY_G(yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; +%if-c-only YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin; +%endif +%if-c++-only + YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin.rdbuf(); +%endif YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL; } @@ -1504,17 +1414,36 @@ do_action: /* This label is used only to access EOF actions. */ "fatal flex scanner internal error--no action found" ); } /* end of action switch */ } /* end of scanning one token */ + } /* end of user's declarations */ } /* end of yylex */ %ok-for-header %if-c++-only %not-for-header /* The contents of this function are C++ specific, so the YY_G macro is not used. + * This constructor simply maintains backward compatibility. + * DEPRECATED */ -yyFlexLexer::yyFlexLexer( std::istream* arg_yyin, std::ostream* arg_yyout ) +yyFlexLexer::yyFlexLexer( std::istream* arg_yyin, std::ostream* arg_yyout ): + yyin(arg_yyin ? arg_yyin->rdbuf() : std::cin.rdbuf()), + yyout(arg_yyout ? arg_yyout->rdbuf() : std::cout.rdbuf()) +{ + ctor_common(); +} + +/* The contents of this function are C++ specific, so the YY_G macro is not used. + */ +yyFlexLexer::yyFlexLexer( std::istream& arg_yyin, std::ostream& arg_yyout ): + yyin(arg_yyin.rdbuf()), + yyout(arg_yyout.rdbuf()) +{ + ctor_common(); +} + +/* The contents of this function are C++ specific, so the YY_G macro is not used. + */ +void yyFlexLexer::ctor_common() { - yyin = arg_yyin; - yyout = arg_yyout; yy_c_buf_p = 0; yy_init = 0; yy_start = 0; @@ -1531,7 +1460,7 @@ yyFlexLexer::yyFlexLexer( std::istream* arg_yyin, std::ostream* arg_yyout ) yy_start_stack_ptr = yy_start_stack_depth = 0; yy_start_stack = NULL; - yy_buffer_stack = 0; + yy_buffer_stack = NULL; yy_buffer_stack_top = 0; yy_buffer_stack_max = 0; @@ -1555,18 +1484,31 @@ yyFlexLexer::~yyFlexLexer() yyfree( yy_buffer_stack M4_YY_CALL_LAST_ARG ); } +/* The contents of this function are C++ specific, so the YY_G macro is not used. + */ +void yyFlexLexer::switch_streams( std::istream& new_in, std::ostream& new_out ) +{ + // was if( new_in ) + yy_delete_buffer( YY_CURRENT_BUFFER M4_YY_CALL_LAST_ARG); + yy_switch_to_buffer( yy_create_buffer( new_in, YY_BUF_SIZE M4_YY_CALL_LAST_ARG) M4_YY_CALL_LAST_ARG); + + // was if( new_out ) + yyout.rdbuf(new_out.rdbuf()); +} + /* The contents of this function are C++ specific, so the YY_G macro is not used. */ void yyFlexLexer::switch_streams( std::istream* new_in, std::ostream* new_out ) { - if ( new_in ) - { - yy_delete_buffer( YY_CURRENT_BUFFER M4_YY_CALL_LAST_ARG); - yy_switch_to_buffer( yy_create_buffer( new_in, YY_BUF_SIZE M4_YY_CALL_LAST_ARG) M4_YY_CALL_LAST_ARG); - } + if( ! new_in ) { + new_in = &yyin; + } - if ( new_out ) - yyout = new_out; + if ( ! new_out ) { + new_out = &yyout; + } + + switch_streams(*new_in, *new_out); } #ifdef YY_INTERACTIVE @@ -1575,33 +1517,33 @@ int yyFlexLexer::LexerInput( char* buf, int /* max_size */ ) int yyFlexLexer::LexerInput( char* buf, int max_size ) #endif { - if ( yyin->eof() || yyin->fail() ) + if ( yyin.eof() || yyin.fail() ) return 0; #ifdef YY_INTERACTIVE - yyin->get( buf[0] ); + yyin.get( buf[0] ); - if ( yyin->eof() ) + if ( yyin.eof() ) return 0; - if ( yyin->bad() ) + if ( yyin.bad() ) return -1; return 1; #else - (void) yyin->read( buf, max_size ); + (void) yyin.read( buf, max_size ); - if ( yyin->bad() ) + if ( yyin.bad() ) return -1; else - return yyin->gcount(); + return yyin.gcount(); #endif } void yyFlexLexer::LexerOutput( const char* buf, int size ) { - (void) yyout->write( buf, size ); + (void) yyout.write( buf, size ); } %ok-for-header %endif @@ -1616,7 +1558,7 @@ m4_ifdef( [[M4_YY_NOT_IN_HEADER]], * EOB_ACT_END_OF_FILE - end of file */ %if-c-only -static int yy_get_next_buffer YYFARGS0(void) +static int yy_get_next_buffer (M4_YY_DEF_ONLY_ARG) %endif %if-c++-only int yyFlexLexer::yy_get_next_buffer() @@ -1654,7 +1596,7 @@ int yyFlexLexer::yy_get_next_buffer() /* Try to read more data. */ /* First move last chars to start of buffer. */ - number_to_move = (int) (YY_G(yy_c_buf_p) - YY_G(yytext_ptr)) - 1; + number_to_move = (int) (YY_G(yy_c_buf_p) - YY_G(yytext_ptr) - 1); for ( i = 0; i < number_to_move; ++i ) *(dest++) = *(source++); @@ -1667,7 +1609,7 @@ int yyFlexLexer::yy_get_next_buffer() else { - yy_size_t num_to_read = + int num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1; while ( num_to_read <= 0 ) @@ -1686,7 +1628,7 @@ m4_ifdef( [[M4_YY_USES_REJECT]], if ( b->yy_is_our_buffer ) { - yy_size_t new_size = b->yy_buf_size * 2; + int new_size = b->yy_buf_size * 2; if ( new_size <= 0 ) b->yy_buf_size += b->yy_buf_size / 8; @@ -1696,11 +1638,11 @@ m4_ifdef( [[M4_YY_USES_REJECT]], b->yy_ch_buf = (char *) /* Include room in for 2 EOB chars. */ yyrealloc( (void *) b->yy_ch_buf, - b->yy_buf_size + 2 M4_YY_CALL_LAST_ARG ); + (yy_size_t) (b->yy_buf_size + 2) M4_YY_CALL_LAST_ARG ); } else /* Can't grow it, we don't own it. */ - b->yy_ch_buf = 0; + b->yy_ch_buf = NULL; if ( ! b->yy_ch_buf ) YY_FATAL_ERROR( @@ -1742,13 +1684,15 @@ m4_ifdef( [[M4_YY_USES_REJECT]], else ret_val = EOB_ACT_CONTINUE_SCAN; - if ((yy_size_t) (YY_G(yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) { + if ((YY_G(yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) { /* Extend the array by 50%, plus the number we really need. */ - yy_size_t new_size = YY_G(yy_n_chars) + number_to_move + (YY_G(yy_n_chars) >> 1); + int new_size = YY_G(yy_n_chars) + number_to_move + (YY_G(yy_n_chars) >> 1); YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc( - (void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf, new_size M4_YY_CALL_LAST_ARG ); + (void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf, (yy_size_t) new_size M4_YY_CALL_LAST_ARG ); if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" ); + /* "- 2" to take care of EOB's */ + YY_CURRENT_BUFFER_LVALUE->yy_buf_size = (int) (new_size - 2); } YY_G(yy_n_chars) += number_to_move; @@ -1765,7 +1709,7 @@ m4_ifdef( [[M4_YY_USES_REJECT]], %if-c-only %not-for-header - static yy_state_type yy_get_previous_state YYFARGS0(void) + static yy_state_type yy_get_previous_state (M4_YY_DEF_ONLY_ARG) %endif %if-c++-only yy_state_type yyFlexLexer::yy_get_previous_state() @@ -1807,14 +1751,13 @@ m4_ifdef( [[M4_YY_USES_REJECT]], } +#ifndef YY_NO_UNPUT %if-c-only m4_ifdef( [[M4_YY_NO_UNPUT]],, [[ -#ifndef YY_NO_UNPUT static void yyunput YYFARGS2( int,c, char *,yy_bp) %endif %if-c++-only -#ifndef YY_NO_UNPUT void yyFlexLexer::yyunput( int c, char* yy_bp) %endif { @@ -1829,7 +1772,7 @@ m4_ifdef( [[M4_YY_NO_UNPUT]],, if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 ) { /* need to shift things up to make room */ /* +2 for EOB chars. */ - yy_size_t number_to_move = YY_G(yy_n_chars) + 2; + int number_to_move = YY_G(yy_n_chars) + 2; char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[ YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2]; char *source = @@ -1841,7 +1784,7 @@ m4_ifdef( [[M4_YY_NO_UNPUT]],, yy_cp += (int) (dest - source); yy_bp += (int) (dest - source); YY_CURRENT_BUFFER_LVALUE->yy_n_chars = - YY_G(yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_buf_size; + YY_G(yy_n_chars) = (int) 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" ); @@ -1861,17 +1804,17 @@ m4_ifdef( [[M4_YY_USE_LINENO]], YY_G(yy_hold_char) = *yy_cp; YY_G(yy_c_buf_p) = yy_cp; } -#endif /* ifndef YY_NO_UNPUT */ %if-c-only ]]) %endif +#endif %if-c-only #ifndef YY_NO_INPUT #ifdef __cplusplus - static int yyinput YYFARGS0(void) + static int yyinput (M4_YY_DEF_ONLY_ARG) #else - static int input YYFARGS0(void) + static int input (M4_YY_DEF_ONLY_ARG) #endif %endif @@ -1896,7 +1839,7 @@ m4_ifdef( [[M4_YY_USE_LINENO]], else { /* need more input */ - yy_size_t offset = YY_G(yy_c_buf_p) - YY_G(yytext_ptr); + int offset = (int) (YY_G(yy_c_buf_p) - YY_G(yytext_ptr)); ++YY_G(yy_c_buf_p); switch ( yy_get_next_buffer( M4_YY_CALL_ONLY_ARG ) ) @@ -1920,7 +1863,7 @@ m4_ifdef( [[M4_YY_USE_LINENO]], case EOB_ACT_END_OF_FILE: { if ( yywrap( M4_YY_CALL_ONLY_ARG ) ) - return EOF; + return 0; if ( ! YY_G(yy_did_buffer_switch_on_eof) ) YY_NEW_FILE; @@ -1959,7 +1902,7 @@ m4_ifdef( [[M4_YY_USE_LINENO]], void yyrestart YYFARGS1( FILE *,input_file) %endif %if-c++-only - void yyFlexLexer::yyrestart( std::istream* input_file ) + void yyFlexLexer::yyrestart( std::istream& input_file ) %endif { M4_YY_DECL_GUTS_VAR(); @@ -1974,6 +1917,21 @@ m4_ifdef( [[M4_YY_USE_LINENO]], yy_load_buffer_state( M4_YY_CALL_ONLY_ARG ); } +%if-c++-only +/** Delegate to the new version that takes an istream reference. + * @param input_file A readable stream. + * M4_YY_DOC_PARAM + * @note This function does not reset the start condition to @c INITIAL . + */ +void yyFlexLexer::yyrestart( std::istream* input_file ) +{ + if( ! input_file ) { + input_file = &yyin; + } + yyrestart( *input_file ); +} +%endif + /** Switch to a different input buffer. * @param new_buffer The new input buffer. * M4_YY_DOC_PARAM @@ -2017,7 +1975,7 @@ m4_ifdef( [[M4_YY_USE_LINENO]], %if-c-only -static void yy_load_buffer_state YYFARGS0(void) +static void yy_load_buffer_state (M4_YY_DEF_ONLY_ARG) %endif %if-c++-only void yyFlexLexer::yy_load_buffer_state() @@ -2026,7 +1984,12 @@ static void yy_load_buffer_state YYFARGS0(void) M4_YY_DECL_GUTS_VAR(); YY_G(yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; YY_G(yytext_ptr) = YY_G(yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos; +%if-c-only yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file; +%endif +%if-c++-only + yyin.rdbuf(YY_CURRENT_BUFFER_LVALUE->yy_input_file); +%endif YY_G(yy_hold_char) = *YY_G(yy_c_buf_p); } @@ -2040,7 +2003,7 @@ static void yy_load_buffer_state YYFARGS0(void) YY_BUFFER_STATE yy_create_buffer YYFARGS2( FILE *,file, int ,size) %endif %if-c++-only - YY_BUFFER_STATE yyFlexLexer::yy_create_buffer( std::istream* file, int size ) + YY_BUFFER_STATE yyFlexLexer::yy_create_buffer( std::istream& file, int size ) %endif { YY_BUFFER_STATE b; @@ -2055,7 +2018,7 @@ static void yy_load_buffer_state YYFARGS0(void) /* 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 M4_YY_CALL_LAST_ARG ); + b->yy_ch_buf = (char *) yyalloc( (yy_size_t) (b->yy_buf_size + 2) M4_YY_CALL_LAST_ARG ); if ( ! b->yy_ch_buf ) YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); @@ -2066,6 +2029,19 @@ static void yy_load_buffer_state YYFARGS0(void) return b; } +%if-c++-only +/** Delegate creation of buffers to the new version that takes an istream reference. + * @param file A readable stream. + * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE. + * M4_YY_DOC_PARAM + * @return the allocated buffer state. + */ + YY_BUFFER_STATE yyFlexLexer::yy_create_buffer( std::istream* file, int size ) +{ + return yy_create_buffer( *file, size ); +} +%endif + /** Destroy the buffer. * @param b a buffer created with yy_create_buffer() * M4_YY_DOC_PARAM @@ -2100,7 +2076,7 @@ static void yy_load_buffer_state YYFARGS0(void) static void yy_init_buffer YYFARGS2( YY_BUFFER_STATE ,b, FILE *,file) %endif %if-c++-only - void yyFlexLexer::yy_init_buffer( YY_BUFFER_STATE b, std::istream* file ) + void yyFlexLexer::yy_init_buffer( YY_BUFFER_STATE b, std::istream& file ) %endif { @@ -2109,7 +2085,12 @@ static void yy_load_buffer_state YYFARGS0(void) yy_flush_buffer( b M4_YY_CALL_LAST_ARG); +%if-c-only b->yy_input_file = file; +%endif +%if-c++-only + b->yy_input_file = file.rdbuf(); +%endif b->yy_fill_buffer = 1; /* If b is the current buffer, then yy_init_buffer was _probably_ @@ -2222,7 +2203,7 @@ void yyFlexLexer::yypush_buffer_state (YY_BUFFER_STATE new_buffer) * M4_YY_DOC_PARAM */ %if-c-only -void yypop_buffer_state YYFARGS0(void) +void yypop_buffer_state (M4_YY_DEF_ONLY_ARG) %endif %if-c++-only void yyFlexLexer::yypop_buffer_state (void) @@ -2250,7 +2231,7 @@ void yyFlexLexer::yypop_buffer_state (void) * Guarantees space for at least one push. */ %if-c-only -static void yyensure_buffer_stack YYFARGS0(void) +static void yyensure_buffer_stack (M4_YY_DEF_ONLY_ARG) %endif %if-c++-only void yyFlexLexer::yyensure_buffer_stack(void) @@ -2265,16 +2246,16 @@ void yyFlexLexer::yyensure_buffer_stack(void) * 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; + num_to_alloc = 1; /* After all that talk, this was set to 1 anyways... */ YY_G(yy_buffer_stack) = (struct yy_buffer_state**)yyalloc (num_to_alloc * sizeof(struct yy_buffer_state*) M4_YY_CALL_LAST_ARG); if ( ! YY_G(yy_buffer_stack) ) YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" ); - - + + memset(YY_G(yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*)); - + YY_G(yy_buffer_stack_max) = num_to_alloc; YY_G(yy_buffer_stack_top) = 0; return; @@ -2283,7 +2264,7 @@ void yyFlexLexer::yyensure_buffer_stack(void) if (YY_G(yy_buffer_stack_top) >= (YY_G(yy_buffer_stack_max)) - 1){ /* Increase the buffer to prepare for a possible push. */ - int grow_size = 8 /* arbitrary grow size */; + yy_size_t grow_size = 8 /* arbitrary grow size */; num_to_alloc = YY_G(yy_buffer_stack_max) + grow_size; YY_G(yy_buffer_stack) = (struct yy_buffer_state**)yyrealloc @@ -2310,7 +2291,7 @@ m4_ifdef( [[M4_YY_NO_SCAN_BUFFER]],, * @param base the character buffer * @param size the size in bytes of the character buffer * M4_YY_DOC_PARAM - * @return the newly allocated buffer state object. + * @return the newly allocated buffer state object. */ YY_BUFFER_STATE yy_scan_buffer YYFARGS2( char *,base, yy_size_t ,size) { @@ -2321,16 +2302,16 @@ YY_BUFFER_STATE yy_scan_buffer YYFARGS2( char *,base, yy_size_t ,size) 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; + return NULL; b = (YY_BUFFER_STATE) yyalloc( sizeof( struct yy_buffer_state ) M4_YY_CALL_LAST_ARG ); 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_size = (int) (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_input_file = NULL; b->yy_n_chars = b->yy_buf_size; b->yy_is_interactive = 0; b->yy_at_bol = 1; @@ -2356,11 +2337,11 @@ m4_ifdef( [[M4_YY_NO_SCAN_STRING]],, * @note If you want to scan bytes that may contain NUL values, then use * yy_scan_bytes() instead. */ -YY_BUFFER_STATE yy_scan_string YYFARGS1( yyconst char *, yystr) +YY_BUFFER_STATE yy_scan_string YYFARGS1( const char *, yystr) { m4_dnl M4_YY_DECL_GUTS_VAR(); - return yy_scan_bytes( yystr, strlen(yystr) M4_YY_CALL_LAST_ARG); + return yy_scan_bytes( yystr, (int) strlen(yystr) M4_YY_CALL_LAST_ARG); } %endif ]]) @@ -2376,16 +2357,16 @@ m4_ifdef( [[M4_YY_NO_SCAN_BYTES]],, * M4_YY_DOC_PARAM * @return the newly allocated buffer state object. */ -YY_BUFFER_STATE yy_scan_bytes YYFARGS2( yyconst char *,yybytes, yy_size_t ,_yybytes_len) +YY_BUFFER_STATE yy_scan_bytes YYFARGS2( const char *,yybytes, int ,_yybytes_len) { YY_BUFFER_STATE b; char *buf; yy_size_t n; - yy_size_t i; + int i; m4_dnl M4_YY_DECL_GUTS_VAR(); /* Get memory for full buffer, including space for trailing EOB's. */ - n = _yybytes_len + 2; + n = (yy_size_t) (_yybytes_len + 2); buf = (char *) yyalloc( n M4_YY_CALL_LAST_ARG ); if ( ! buf ) YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" ); @@ -2413,10 +2394,10 @@ YY_BUFFER_STATE yy_scan_bytes YYFARGS2( yyconst char *,yybytes, yy_size_t ,_yyb m4_ifdef( [[M4_YY_NO_PUSH_STATE]],, [[ %if-c-only - static void yy_push_state YYFARGS1( int ,new_state) + static void yy_push_state YYFARGS1( int ,_new_state) %endif %if-c++-only - void yyFlexLexer::yy_push_state( int new_state ) + void yyFlexLexer::yy_push_state( int _new_state ) %endif { M4_YY_DECL_GUTS_VAR(); @@ -2425,7 +2406,7 @@ m4_ifdef( [[M4_YY_NO_PUSH_STATE]],, yy_size_t new_size; YY_G(yy_start_stack_depth) += YY_START_STACK_INCR; - new_size = YY_G(yy_start_stack_depth) * sizeof( int ); + new_size = (yy_size_t) YY_G(yy_start_stack_depth) * sizeof( int ); if ( ! YY_G(yy_start_stack) ) YY_G(yy_start_stack) = (int *) yyalloc( new_size M4_YY_CALL_LAST_ARG ); @@ -2440,7 +2421,7 @@ m4_ifdef( [[M4_YY_NO_PUSH_STATE]],, YY_G(yy_start_stack)[YY_G(yy_start_stack_ptr)++] = YY_START; - BEGIN(new_state); + BEGIN(_new_state); } ]]) @@ -2448,7 +2429,7 @@ m4_ifdef( [[M4_YY_NO_PUSH_STATE]],, m4_ifdef( [[M4_YY_NO_POP_STATE]],, [[ %if-c-only - static void yy_pop_state YYFARGS0(void) + static void yy_pop_state (M4_YY_DEF_ONLY_ARG) %endif %if-c++-only void yyFlexLexer::yy_pop_state() @@ -2466,7 +2447,7 @@ m4_ifdef( [[M4_YY_NO_POP_STATE]],, m4_ifdef( [[M4_YY_NO_TOP_STATE]],, [[ %if-c-only - static int yy_top_state YYFARGS0(void) + static int yy_top_state (M4_YY_DEF_ONLY_ARG) %endif %if-c++-only int yyFlexLexer::yy_top_state() @@ -2482,15 +2463,16 @@ m4_ifdef( [[M4_YY_NO_TOP_STATE]],, #endif %if-c-only -static void yy_fatal_error YYFARGS1(yyconst char*, msg) +static void yynoreturn yy_fatal_error YYFARGS1(const char*, msg) { - m4_dnl M4_YY_DECL_GUTS_VAR(); - (void) fprintf( stderr, "%s\n", msg ); + M4_YY_DECL_GUTS_VAR(); + M4_YY_NOOP_GUTS_VAR(); + fprintf( stderr, "%s\n", msg ); exit( YY_EXIT_FAILURE ); } %endif %if-c++-only -void yyFlexLexer::LexerError( yyconst char msg[] ) +void yyFlexLexer::LexerError( const char* msg ) { M4_YY_DECL_GUTS_VAR(); std::cerr << msg << std::endl; @@ -2526,7 +2508,7 @@ m4_ifdef( [[M4_YY_NO_GET_EXTRA]],, /** Get the user-defined data for this scanner. * M4_YY_DOC_PARAM */ -YY_EXTRA_TYPE yyget_extra YYFARGS0(void) +YY_EXTRA_TYPE yyget_extra (M4_YY_DEF_ONLY_ARG) { M4_YY_DECL_GUTS_VAR(); return yyextra; @@ -2539,10 +2521,10 @@ m4_ifdef( [[M4_YY_NO_GET_LINENO]],, /** Get the current line number. * M4_YY_DOC_PARAM */ -int yyget_lineno YYFARGS0(void) +int yyget_lineno (M4_YY_DEF_ONLY_ARG) { M4_YY_DECL_GUTS_VAR(); - + m4_ifdef( [[M4_YY_REENTRANT]], [[ if (! YY_CURRENT_BUFFER) @@ -2559,10 +2541,10 @@ m4_ifdef( [[M4_YY_NO_GET_COLUMN]],, /** Get the current column number. * M4_YY_DOC_PARAM */ -int yyget_column YYFARGS0(void) +int yyget_column (M4_YY_DEF_ONLY_ARG) { M4_YY_DECL_GUTS_VAR(); - + m4_ifdef( [[M4_YY_REENTRANT]], [[ if (! YY_CURRENT_BUFFER) @@ -2578,7 +2560,7 @@ m4_ifdef( [[M4_YY_NO_GET_IN]],, /** Get the input stream. * M4_YY_DOC_PARAM */ -FILE *yyget_in YYFARGS0(void) +FILE *yyget_in (M4_YY_DEF_ONLY_ARG) { M4_YY_DECL_GUTS_VAR(); return yyin; @@ -2590,7 +2572,7 @@ m4_ifdef( [[M4_YY_NO_GET_OUT]],, /** Get the output stream. * M4_YY_DOC_PARAM */ -FILE *yyget_out YYFARGS0(void) +FILE *yyget_out (M4_YY_DEF_ONLY_ARG) { M4_YY_DECL_GUTS_VAR(); return yyout; @@ -2602,7 +2584,7 @@ m4_ifdef( [[M4_YY_NO_GET_LENG]],, /** Get the length of the current token. * M4_YY_DOC_PARAM */ -yy_size_t yyget_leng YYFARGS0(void) +int yyget_leng (M4_YY_DEF_ONLY_ARG) { M4_YY_DECL_GUTS_VAR(); return yyleng; @@ -2614,7 +2596,7 @@ yy_size_t yyget_leng YYFARGS0(void) */ m4_ifdef( [[M4_YY_NO_GET_TEXT]],, [[ -char *yyget_text YYFARGS0(void) +char *yyget_text (M4_YY_DEF_ONLY_ARG) { M4_YY_DECL_GUTS_VAR(); return yytext; @@ -2639,10 +2621,10 @@ void yyset_extra YYFARGS1( YY_EXTRA_TYPE ,user_defined) m4_ifdef( [[M4_YY_NO_SET_LINENO]],, [[ /** Set the current line number. - * @param line_number + * @param _line_number line number * M4_YY_DOC_PARAM */ -void yyset_lineno YYFARGS1( int ,line_number) +void yyset_lineno YYFARGS1( int ,_line_number) { M4_YY_DECL_GUTS_VAR(); @@ -2652,7 +2634,7 @@ void yyset_lineno YYFARGS1( int ,line_number) if (! YY_CURRENT_BUFFER ) YY_FATAL_ERROR( "yyset_lineno called with no buffer" ); ]]) - yylineno = line_number; + yylineno = _line_number; } ]]) @@ -2661,10 +2643,10 @@ m4_ifdef( [[M4_YY_REENTRANT]], m4_ifdef( [[M4_YY_NO_SET_COLUMN]],, [[ /** Set the current column. - * @param line_number + * @param _column_no column number * M4_YY_DOC_PARAM */ -void yyset_column YYFARGS1( int , column_no) +void yyset_column YYFARGS1( int , _column_no) { M4_YY_DECL_GUTS_VAR(); @@ -2674,7 +2656,7 @@ void yyset_column YYFARGS1( int , column_no) if (! YY_CURRENT_BUFFER ) YY_FATAL_ERROR( "yyset_column called with no buffer" ); ]]) - yycolumn = column_no; + yycolumn = _column_no; } ]]) ]]) @@ -2684,30 +2666,30 @@ m4_ifdef( [[M4_YY_NO_SET_IN]],, [[ /** Set the input stream. This does not discard the current * input buffer. - * @param in_str A readable stream. + * @param _in_str A readable stream. * M4_YY_DOC_PARAM * @see yy_switch_to_buffer */ -void yyset_in YYFARGS1( FILE * ,in_str) +void yyset_in YYFARGS1( FILE * ,_in_str) { M4_YY_DECL_GUTS_VAR(); - yyin = in_str ; + yyin = _in_str ; } ]]) m4_ifdef( [[M4_YY_NO_SET_OUT]],, [[ -void yyset_out YYFARGS1( FILE * ,out_str) +void yyset_out YYFARGS1( FILE * ,_out_str) { M4_YY_DECL_GUTS_VAR(); - yyout = out_str ; + yyout = _out_str ; } ]]) m4_ifdef( [[M4_YY_NO_GET_DEBUG]],, [[ -int yyget_debug YYFARGS0(void) +int yyget_debug (M4_YY_DEF_ONLY_ARG) { M4_YY_DECL_GUTS_VAR(); return yy_flex_debug; @@ -2716,10 +2698,10 @@ int yyget_debug YYFARGS0(void) m4_ifdef( [[M4_YY_NO_SET_DEBUG]],, [[ -void yyset_debug YYFARGS1( int ,bdebug) +void yyset_debug YYFARGS1( int ,_bdebug) { M4_YY_DECL_GUTS_VAR(); - yy_flex_debug = bdebug ; + yy_flex_debug = _bdebug ; } ]]) %endif @@ -2730,7 +2712,7 @@ void yyset_debug YYFARGS1( int ,bdebug) %if-bison-bridge m4_ifdef( [[M4_YY_NO_GET_LVAL]],, [[ -YYSTYPE * yyget_lval YYFARGS0(void) +YYSTYPE * yyget_lval (M4_YY_DEF_ONLY_ARG) { M4_YY_DECL_GUTS_VAR(); return yylval; @@ -2750,7 +2732,7 @@ m4_ifdef( [[]], [[ m4_ifdef( [[M4_YY_NO_GET_LLOC]],, [[ -YYLTYPE *yyget_lloc YYFARGS0(void) +YYLTYPE *yyget_lloc (M4_YY_DEF_ONLY_ARG) { M4_YY_DECL_GUTS_VAR(); return yylloc; @@ -2776,14 +2758,7 @@ void yyset_lloc YYFARGS1( YYLTYPE * ,yylloc_param) * the ONLY reentrant function that doesn't take the scanner as the last argument. * That's why we explicitly handle the declaration, instead of using our macros. */ -m4_ifdef( [[M4_YY_NO_ANSI_FUNC_DEFS]], -[[ -int yylex_init( ptr_yy_globals ) - yyscan_t* ptr_yy_globals; -]], -[[ int yylex_init(yyscan_t* ptr_yy_globals) -]]) { if (ptr_yy_globals == NULL){ errno = EINVAL; @@ -2811,15 +2786,7 @@ int yylex_init(yyscan_t* ptr_yy_globals) * The user defined value in the first argument will be available to yyalloc in * the yyextra field. */ -m4_ifdef( [[M4_YY_NO_ANSI_FUNC_DEFS]], -[[ -int yylex_init_extra( yy_user_defined, ptr_yy_globals ) - YY_EXTRA_TYPE yy_user_defined; - yyscan_t* ptr_yy_globals; -]], -[[ int yylex_init_extra( YY_EXTRA_TYPE yy_user_defined, yyscan_t* ptr_yy_globals ) -]]) { struct yyguts_t dummy_yyguts; @@ -2829,28 +2796,28 @@ int yylex_init_extra( YY_EXTRA_TYPE yy_user_defined, yyscan_t* ptr_yy_globals ) errno = EINVAL; return 1; } - + *ptr_yy_globals = (yyscan_t) yyalloc ( sizeof( struct yyguts_t ), &dummy_yyguts ); - + if (*ptr_yy_globals == NULL){ errno = ENOMEM; return 1; } - + /* By setting to 0xAA, we expose bugs in yy_init_globals. Leave at 0x00 for releases. */ memset(*ptr_yy_globals,0x00,sizeof(struct yyguts_t)); - + yyset_extra (yy_user_defined, *ptr_yy_globals); - + return yy_init_globals ( *ptr_yy_globals ); } %endif if-c-only - +%# Actually, that ended an if-rentrant section %if-c-only -static int yy_init_globals YYFARGS0(void) +static int yy_init_globals (M4_YY_DEF_ONLY_ARG) { M4_YY_DECL_GUTS_VAR(); /* Initialization is the same as for the non-reentrant scanner. @@ -2865,10 +2832,10 @@ m4_ifdef( [[M4_YY_USE_LINENO]], yylineno = 1; ]]) ]]) - YY_G(yy_buffer_stack) = 0; + YY_G(yy_buffer_stack) = NULL; YY_G(yy_buffer_stack_top) = 0; YY_G(yy_buffer_stack_max) = 0; - YY_G(yy_c_buf_p) = (char *) 0; + YY_G(yy_c_buf_p) = NULL; YY_G(yy_init) = 0; YY_G(yy_start) = 0; @@ -2899,8 +2866,8 @@ m4_ifdef( [[M4_YY_TEXT_IS_ARRAY]], yyin = stdin; yyout = stdout; #else - yyin = (FILE *) 0; - yyout = (FILE *) 0; + yyin = NULL; + yyout = NULL; #endif /* For future reference: Set errno on error, since we are called by @@ -2913,7 +2880,7 @@ m4_ifdef( [[M4_YY_TEXT_IS_ARRAY]], %if-c-only SNIP! this currently causes conflicts with the c++ scanner /* yylex_destroy is for both reentrant and non-reentrant scanners. */ -int yylex_destroy YYFARGS0(void) +int yylex_destroy (M4_YY_DEF_ONLY_ARG) { M4_YY_DECL_GUTS_VAR(); @@ -2965,8 +2932,11 @@ m4_ifdef( [[M4_YY_NOT_IN_HEADER]], m4_ifdef( [[M4_YY_NOT_IN_HEADER]], [[ #ifndef yytext_ptr -static void yy_flex_strncpy YYFARGS3( char*,s1, yyconst char *,s2, int,n) +static void yy_flex_strncpy YYFARGS3( char*,s1, const char *,s2, int,n) { + M4_YY_DECL_GUTS_VAR(); + M4_YY_NOOP_GUTS_VAR(); + int i; for ( i = 0; i < n; ++i ) s1[i] = s2[i]; @@ -2977,7 +2947,7 @@ static void yy_flex_strncpy YYFARGS3( char*,s1, yyconst char *,s2, int,n) m4_ifdef( [[M4_YY_NOT_IN_HEADER]], [[ #ifdef YY_NEED_STRLEN -static int yy_flex_strlen YYFARGS1( yyconst char *,s) +static int yy_flex_strlen YYFARGS1( const char *,s) { int n; for ( n = 0; s[n]; ++n ) @@ -2992,7 +2962,9 @@ m4_ifdef( [[M4_YY_NO_FLEX_ALLOC]],, [[ void *yyalloc YYFARGS1( yy_size_t ,size) { - return (void *) malloc( size ); + M4_YY_DECL_GUTS_VAR(); + M4_YY_NOOP_GUTS_VAR(); + return malloc(size); } ]]) @@ -3000,6 +2972,9 @@ m4_ifdef( [[M4_YY_NO_FLEX_REALLOC]],, [[ void *yyrealloc YYFARGS2( void *,ptr, yy_size_t ,size) { + M4_YY_DECL_GUTS_VAR(); + M4_YY_NOOP_GUTS_VAR(); + /* 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 @@ -3007,7 +2982,7 @@ void *yyrealloc YYFARGS2( void *,ptr, yy_size_t ,size) * any pointer type to void*, and deal with argument conversions * as though doing an assignment. */ - return (void *) realloc( (char *) ptr, size ); + return realloc(ptr, size); } ]]) @@ -3015,6 +2990,8 @@ m4_ifdef( [[M4_YY_NO_FLEX_FREE]],, [[ void yyfree YYFARGS1( void *,ptr) { + M4_YY_DECL_GUTS_VAR(); + M4_YY_NOOP_GUTS_VAR(); free( (char *) ptr ); /* see yyrealloc() for (char *) cast */ } ]]) @@ -3029,7 +3006,7 @@ static int yytbl_read8 (void *v, struct yytbl_reader * rd) errno = EIO; return -1; } - rd->bread += sizeof(flex_uint8_t); + rd->bread += (flex_uint32_t) sizeof(flex_uint8_t); return 0; } @@ -3041,7 +3018,7 @@ static int yytbl_read16 (void *v, struct yytbl_reader * rd) return -1; } *((flex_uint16_t *) v) = ntohs (*((flex_uint16_t *) v)); - rd->bread += sizeof(flex_uint16_t); + rd->bread += (flex_uint32_t) sizeof(flex_uint16_t); return 0; } @@ -3053,14 +3030,14 @@ static int yytbl_read32 (void *v, struct yytbl_reader * rd) return -1; } *((flex_uint32_t *) v) = ntohl (*((flex_uint32_t *) v)); - rd->bread += sizeof(flex_uint32_t); + rd->bread += (flex_uint32_t) sizeof(flex_uint32_t); return 0; } /** Read the header */ static int yytbl_hdr_read YYFARGS2(struct yytbl_hdr *, th, struct yytbl_reader *, rd) { - int bytes; + size_t bytes; memset (th, 0, sizeof (struct yytbl_hdr)); if (yytbl_read32 (&(th->th_magic), rd) != 0) @@ -3096,7 +3073,7 @@ static int yytbl_hdr_read YYFARGS2(struct yytbl_hdr *, th, struct yytbl_reader * return -1; } else - rd->bread += bytes; + rd->bread += (flex_uint32_t) bytes; th->th_name = th->th_version + strlen (th->th_version) + 1; return 0; @@ -3109,15 +3086,18 @@ static int yytbl_hdr_read YYFARGS2(struct yytbl_hdr *, th, struct yytbl_reader * static struct yytbl_dmap *yytbl_dmap_lookup YYFARGS2(struct yytbl_dmap *, dmap, int, id) { + M4_YY_DECL_GUTS_VAR(); + M4_YY_NOOP_GUTS_VAR(); + while (dmap->dm_id) - if (dmap->dm_id == id) + if ((int)(dmap->dm_id) == id) return dmap; else dmap++; return NULL; } -/** Read a table while mapping its contents to the local array. +/** Read a table while mapping its contents to the local array. * @param dmap used to performing mapping * @return 0 on success */ @@ -3162,7 +3142,7 @@ static int yytbl_data_load YYFARGS2(struct yytbl_dmap *, dmap, struct yytbl_read if(M4_YY_TABLES_VERIFY) /* We point to the array itself */ - p = dmap->dm_arr; + p = dmap->dm_arr; else /* We point to the address of a pointer. */ *dmap->dm_arr = p = (void *) yyalloc (bytes M4_YY_CALL_LAST_ARG); @@ -3209,7 +3189,7 @@ static int yytbl_data_load YYFARGS2(struct yytbl_dmap *, dmap, struct yytbl_read rv = yytbl_read8 (&t8, rd); t32 = t8; break; - default: + default: YY_FATAL_ERROR( "invalid td_flags" ); /* TODO: not fatal. */ return -1; } @@ -3266,7 +3246,7 @@ static int yytbl_data_load YYFARGS2(struct yytbl_dmap *, dmap, struct yytbl_read YY_FATAL_ERROR( "transition table not found" ); /* TODO: not fatal. */ return -1; } - + if( M4_YY_TABLES_VERIFY) v = &(((struct yy_trans_info *) (transdmap->dm_arr))[t32]); else @@ -3277,7 +3257,7 @@ static int yytbl_data_load YYFARGS2(struct yytbl_dmap *, dmap, struct yytbl_read YY_FATAL_ERROR( "tables verification failed at YYTD_PTRANS" ); }else ((struct yy_trans_info **) p)[0] = v; - + /* increment p */ p = (struct yy_trans_info **) p + 1; } @@ -3392,8 +3372,8 @@ int yytables_fload YYFARGS1(FILE *, fp) } /** Destroy the loaded tables, freeing memory, etc.. */ -int yytables_destroy YYFARGS0(void) -{ +int yytables_destroy (M4_YY_DEF_ONLY_ARG) +{ struct yytbl_dmap *dmap=0; if(!M4_YY_TABLES_VERIFY){ @@ -3416,7 +3396,7 @@ int yytables_destroy YYFARGS0(void) m4_ifdef([[M4_YY_MAIN]], [[ -int main M4_YY_PARAMS(void); +int main (void); int main () { @@ -3450,4 +3430,5 @@ m4_ifdef( [[M4_YY_IN_HEADER]], #undef YY_DECL_IS_OURS #undef YY_DECL #endif +m4preproc_undivert(1) ]]) diff --git a/contrib/flex/flexdef.h b/contrib/flex/src/flexdef.h similarity index 75% rename from contrib/flex/flexdef.h rename to contrib/flex/src/flexdef.h index d37a50929aee..fb7a7df29186 100644 --- a/contrib/flex/flexdef.h +++ b/contrib/flex/src/flexdef.h @@ -39,29 +39,14 @@ #include #endif -/* AIX requires this to be the first thing in the file. */ -#ifndef __GNUC__ -# if HAVE_ALLOCA_H -# include -# else -# ifdef _AIX - #pragma alloca -# else -# ifndef alloca /* predefined by HP cc +Olibcalls */ -char *alloca (); -# endif -# endif -# endif -#endif - -#ifdef STDC_HEADERS #include #include #include #include #include +#include /* for XPG version of basename(3) */ #include -#endif + #ifdef HAVE_ASSERT_H #include #else @@ -71,28 +56,24 @@ char *alloca (); #ifdef HAVE_LIMITS_H #include #endif -#ifdef HAVE_UNISTD_H +/* Required: dup() and dup2() in */ #include -#endif #ifdef HAVE_NETINET_IN_H #include #endif #ifdef HAVE_SYS_PARAMS_H #include #endif -#ifdef HAVE_SYS_WAIT_H +/* Required: stat() in */ +#include +/* Required: wait() in */ #include -#endif -#ifdef HAVE_STDBOOL_H #include -#else -#define bool int -#define true 1 -#define false 0 -#endif -#ifdef HAVE_REGEX_H +#include +/* Required: regcomp(), regexec() and regerror() in */ #include -#endif +/* Required: strcasecmp() in */ +#include #include "flexint.h" /* We use gettext. So, when we write strings which should be translated, we mark them with _() */ @@ -108,33 +89,12 @@ char *alloca (); /* Always be prepared to generate an 8-bit scanner. */ #define CSIZE 256 -#define Char unsigned char /* Size of input alphabet - should be size of ASCII set. */ #ifndef DEFAULT_CSIZE #define DEFAULT_CSIZE 128 #endif -#ifndef PROTO -#if defined(__STDC__) -#define PROTO(proto) proto -#else -#define PROTO(proto) () -#endif -#endif - -#ifdef VMS -#ifndef __VMS_POSIX -#define unlink remove -#define SHORT_FILE_NAMES -#endif -#endif - -#ifdef MS_DOS -#define SHORT_FILE_NAMES -#endif - - /* Maximum line length we'll have to deal with. */ #define MAXLINE 2048 @@ -148,11 +108,8 @@ char *alloca (); #define ABS(x) ((x) < 0 ? -(x) : (x)) #endif - -/* ANSI C does not guarantee that isascii() is defined */ -#ifndef isascii -#define isascii(c) ((c) <= 0177) -#endif +/* Whether an integer is a power of two */ +#define is_power_of_2(n) ((n) > 0 && ((n) & ((n) - 1)) == 0) #define unspecified -1 @@ -382,7 +339,7 @@ char *alloca (); * use_read - if true (-f, -F, or -Cr) then use read() for scanner input; * otherwise, use fread(). * yytext_is_array - if true (i.e., %array directive), then declare - * yytext as an array instead of a character pointer. Nice and inefficient. + * yytext as a array instead of a character pointer. Nice and inefficient. * do_yywrap - do yywrap() processing on EOF. If false, EOF treated as * "no more files". * csize - size of character set for the scanner we're generating; @@ -397,6 +354,7 @@ char *alloca (); * yymore_really_used - whether to treat yymore() as really used, regardless * of what we think based on references to it in the user's actions. * reject_really_used - same for REJECT + * trace_hex - use hexadecimal numbers in trace/debug outputs instead of octals */ extern int printstats, syntaxerror, eofseen, ddebug, trace, nowarn, @@ -405,13 +363,12 @@ extern int interactive, lex_compat, posix_compat, do_yylineno; extern int useecs, fulltbl, usemecs, fullspd; extern int gen_line_dirs, performance_report, backing_up_report; extern int reentrant, bison_bridge_lval, bison_bridge_lloc; -extern bool ansi_func_defs, ansi_func_protos; extern int C_plus_plus, long_align, use_read, yytext_is_array, do_yywrap; extern int csize; extern int yymore_used, reject, real_reject, continued_action, in_rule; extern int yymore_really_used, reject_really_used; - +extern int trace_hex; /* Variables used in the flex input routines: * datapos - characters on current output line @@ -446,7 +403,7 @@ extern int yymore_really_used, reject_really_used; */ extern int datapos, dataline, linenum; -extern FILE *skelfile, *yyin, *backing_up_file; +extern FILE *skelfile, *backing_up_file; extern const char *skel[]; extern int skel_ind; extern char *infilename, *outfilename, *headerfilename; @@ -648,7 +605,7 @@ extern int end_of_buffer_state; extern int lastccl, *cclmap, *ccllen, *cclng, cclreuse; extern int current_maxccls, current_max_ccl_tbl_size; -extern Char *ccltbl; +extern unsigned char *ccltbl; /* Variables for miscellaneous information: @@ -676,62 +633,54 @@ extern int sectnum, nummt, hshcol, dfaeql, numeps, eps2, num_reallocs; extern int tmpuses, totnst, peakpairs, numuniq, numdup, hshsave; extern int num_backing_up, bol_needed; -void *allocate_array PROTO ((int, size_t)); -void *reallocate_array PROTO ((void *, int, size_t)); +#ifndef HAVE_REALLOCARRAY +void *reallocarray(void *, size_t, size_t); +#endif -void *flex_alloc PROTO ((size_t)); -void *flex_realloc PROTO ((void *, size_t)); -void flex_free PROTO ((void *)); +void *allocate_array(int, size_t); +void *reallocate_array(void *, int, size_t); #define allocate_integer_array(size) \ - (int *) allocate_array( size, sizeof( int ) ) + allocate_array(size, sizeof(int)) #define reallocate_integer_array(array,size) \ - (int *) reallocate_array( (void *) array, size, sizeof( int ) ) + reallocate_array((void *) array, size, sizeof(int)) #define allocate_bool_array(size) \ - (bool *) allocate_array( size, sizeof( bool ) ) + allocate_array(size, sizeof(bool)) #define reallocate_bool_array(array,size) \ - (bool *) reallocate_array( (void *) array, size, sizeof( bool ) ) + reallocate_array((void *) array, size, sizeof(bool)) #define allocate_int_ptr_array(size) \ - (int **) allocate_array( size, sizeof( int * ) ) + allocate_array(size, sizeof(int *)) #define allocate_char_ptr_array(size) \ - (char **) allocate_array( size, sizeof( char * ) ) + allocate_array(size, sizeof(char *)) #define allocate_dfaacc_union(size) \ - (union dfaacc_union *) \ - allocate_array( size, sizeof( union dfaacc_union ) ) + allocate_array(size, sizeof(union dfaacc_union)) #define reallocate_int_ptr_array(array,size) \ - (int **) reallocate_array( (void *) array, size, sizeof( int * ) ) + reallocate_array((void *) array, size, sizeof(int *)) #define reallocate_char_ptr_array(array,size) \ - (char **) reallocate_array( (void *) array, size, sizeof( char * ) ) + reallocate_array((void *) array, size, sizeof(char *)) #define reallocate_dfaacc_union(array, size) \ - (union dfaacc_union *) \ - reallocate_array( (void *) array, size, sizeof( union dfaacc_union ) ) + reallocate_array((void *) array, size, sizeof(union dfaacc_union)) #define allocate_character_array(size) \ - (char *) allocate_array( size, sizeof( char ) ) + allocate_array( size, sizeof(char)) #define reallocate_character_array(array,size) \ - (char *) reallocate_array( (void *) array, size, sizeof( char ) ) + reallocate_array((void *) array, size, sizeof(char)) #define allocate_Character_array(size) \ - (Char *) allocate_array( size, sizeof( Char ) ) + allocate_array(size, sizeof(unsigned char)) #define reallocate_Character_array(array,size) \ - (Char *) reallocate_array( (void *) array, size, sizeof( Char ) ) - - -/* Used to communicate between scanner and parser. The type should really - * be YYSTYPE, but we can't easily get our hands on it. - */ -extern int yylval; + reallocate_array((void *) array, size, sizeof(unsigned char)) /* External functions that are cross-referenced among the flex source files. */ @@ -739,146 +688,143 @@ extern int yylval; /* from file ccl.c */ -extern void ccladd PROTO ((int, int)); /* add a single character to a ccl */ -extern int cclinit PROTO ((void)); /* make an empty ccl */ -extern void cclnegate PROTO ((int)); /* negate a ccl */ +extern void ccladd(int, int); /* add a single character to a ccl */ +extern int cclinit(void); /* make an empty ccl */ +extern void cclnegate(int); /* negate a ccl */ extern int ccl_set_diff (int a, int b); /* set difference of two ccls. */ extern int ccl_set_union (int a, int b); /* set union of two ccls. */ /* List the members of a set of characters in CCL form. */ -extern void list_character_set PROTO ((FILE *, int[])); +extern void list_character_set(FILE *, int[]); /* from file dfa.c */ /* Check a DFA state for backing up. */ -extern void check_for_backing_up PROTO ((int, int[])); +extern void check_for_backing_up(int, int[]); /* Check to see if NFA state set constitutes "dangerous" trailing context. */ -extern void check_trailing_context PROTO ((int *, int, int *, int)); +extern void check_trailing_context(int *, int, int *, int); /* Construct the epsilon closure of a set of ndfa states. */ -extern int *epsclosure PROTO ((int *, int *, int[], int *, int *)); +extern int *epsclosure(int *, int *, int[], int *, int *); /* Increase the maximum number of dfas. */ -extern void increase_max_dfas PROTO ((void)); +extern void increase_max_dfas(void); -extern void ntod PROTO ((void)); /* convert a ndfa to a dfa */ +extern void ntod(void); /* convert a ndfa to a dfa */ /* Converts a set of ndfa states into a dfa state. */ -extern int snstods PROTO ((int[], int, int[], int, int, int *)); +extern int snstods(int[], int, int[], int, int, int *); /* from file ecs.c */ /* Convert character classes to set of equivalence classes. */ -extern void ccl2ecl PROTO ((void)); +extern void ccl2ecl(void); /* Associate equivalence class numbers with class members. */ -extern int cre8ecs PROTO ((int[], int[], int)); +extern int cre8ecs(int[], int[], int); /* Update equivalence classes based on character class transitions. */ -extern void mkeccl PROTO ((Char[], int, int[], int[], int, int)); +extern void mkeccl(unsigned char[], int, int[], int[], int, int); /* Create equivalence class for single character. */ -extern void mkechar PROTO ((int, int[], int[])); +extern void mkechar(int, int[], int[]); /* from file gen.c */ -extern void do_indent PROTO ((void)); /* indent to the current level */ +extern void do_indent(void); /* indent to the current level */ /* Generate the code to keep backing-up information. */ -extern void gen_backing_up PROTO ((void)); +extern void gen_backing_up(void); /* Generate the code to perform the backing up. */ -extern void gen_bu_action PROTO ((void)); +extern void gen_bu_action(void); /* Generate full speed compressed transition table. */ -extern void genctbl PROTO ((void)); +extern void genctbl(void); /* Generate the code to find the action number. */ -extern void gen_find_action PROTO ((void)); +extern void gen_find_action(void); -extern void genftbl PROTO ((void)); /* generate full transition table */ +extern void genftbl(void); /* generate full transition table */ /* Generate the code to find the next compressed-table state. */ -extern void gen_next_compressed_state PROTO ((char *)); +extern void gen_next_compressed_state(char *); /* Generate the code to find the next match. */ -extern void gen_next_match PROTO ((void)); +extern void gen_next_match(void); /* Generate the code to find the next state. */ -extern void gen_next_state PROTO ((int)); +extern void gen_next_state(int); /* Generate the code to make a NUL transition. */ -extern void gen_NUL_trans PROTO ((void)); +extern void gen_NUL_trans(void); /* Generate the code to find the start state. */ -extern void gen_start_state PROTO ((void)); +extern void gen_start_state(void); /* Generate data statements for the transition tables. */ -extern void gentabs PROTO ((void)); +extern void gentabs(void); /* Write out a formatted string at the current indentation level. */ -extern void indent_put2s PROTO ((const char *, const char *)); +extern void indent_put2s(const char *, const char *); /* Write out a string + newline at the current indentation level. */ -extern void indent_puts PROTO ((const char *)); +extern void indent_puts(const char *); -extern void make_tables PROTO ((void)); /* generate transition tables */ +extern void make_tables(void); /* generate transition tables */ /* from file main.c */ -extern void check_options PROTO ((void)); -extern void flexend PROTO ((int)); -extern void usage PROTO ((void)); +extern void check_options(void); +extern void flexend(int); +extern void usage(void); /* from file misc.c */ /* Add a #define to the action file. */ -extern void action_define PROTO ((const char *defname, int value)); +extern void action_define(const char *defname, int value); /* Add the given text to the stored actions. */ -extern void add_action PROTO ((const char *new_text)); +extern void add_action(const char *new_text); /* True if a string is all lower case. */ -extern int all_lower PROTO ((char *)); +extern int all_lower(char *); /* True if a string is all upper case. */ -extern int all_upper PROTO ((char *)); +extern int all_upper(char *); /* Compare two integers for use by qsort. */ -extern int intcmp PROTO ((const void *, const void *)); +extern int intcmp(const void *, const void *); /* Check a character to make sure it's in the expected range. */ -extern void check_char PROTO ((int c)); +extern void check_char(int c); /* Replace upper-case letter to lower-case. */ -extern Char clower PROTO ((int)); +extern unsigned char clower(int); -/* Returns a dynamically allocated copy of a string. */ -extern char *copy_string PROTO ((const char *)); - -/* Returns a dynamically allocated copy of a (potentially) unsigned string. */ -extern Char *copy_unsigned_string PROTO ((Char *)); +/* strdup() that fails fatally on allocation failures. */ +extern char *xstrdup(const char *); /* Compare two characters for use by qsort with '\0' sorting last. */ -extern int cclcmp PROTO ((const void *, const void *)); +extern int cclcmp(const void *, const void *); /* Finish up a block of data declarations. */ -extern void dataend PROTO ((void)); +extern void dataend(void); /* Flush generated data statements. */ -extern void dataflush PROTO ((void)); +extern void dataflush(void); /* Report an error message and terminate. */ -extern void flexerror PROTO ((const char *)); +extern void flexerror(const char *); /* Report a fatal error message and terminate. */ -extern void flexfatal PROTO ((const char *)); +extern void flexfatal(const char *); /* Report a fatal error with a pinpoint, and terminate */ #if HAVE_DECL___FUNC__ @@ -901,203 +847,195 @@ extern void flexfatal PROTO ((const char *)); }while(0) #endif /* ! HAVE_DECL___func__ */ -/* Convert a hexadecimal digit string to an integer value. */ -extern int htoi PROTO ((Char[])); +/* Report an error message formatted */ +extern void lerr(const char *, ...) +#if defined(__GNUC__) && __GNUC__ >= 3 + __attribute__((__format__(__printf__, 1, 2))) +#endif +; -/* Report an error message formatted with one integer argument. */ -extern void lerrif PROTO ((const char *, int)); - -/* Report an error message formatted with one string argument. */ -extern void lerrsf PROTO ((const char *, const char *)); - -/* Like lerrsf, but also exit after displaying message. */ -extern void lerrsf_fatal PROTO ((const char *, const char *)); +/* Like lerr, but also exit after displaying message. */ +extern void lerr_fatal(const char *, ...) +#if defined(__GNUC__) && __GNUC__ >= 3 + __attribute__((__format__(__printf__, 1, 2))) +#endif +; /* Spit out a "#line" statement. */ -extern void line_directive_out PROTO ((FILE *, int)); +extern void line_directive_out(FILE *, int); /* Mark the current position in the action array as the end of the section 1 * user defs. */ -extern void mark_defs1 PROTO ((void)); +extern void mark_defs1(void); /* Mark the current position in the action array as the end of the prolog. */ -extern void mark_prolog PROTO ((void)); +extern void mark_prolog(void); -/* Generate a data statement for a two-dimensional array. */ -extern void mk2data PROTO ((int)); +/* Generate a data statment for a two-dimensional array. */ +extern void mk2data(int); -extern void mkdata PROTO ((int)); /* generate a data statement */ +extern void mkdata(int); /* generate a data statement */ /* Return the integer represented by a string of digits. */ -extern int myctoi PROTO ((const char *)); +extern int myctoi(const char *); /* Return character corresponding to escape sequence. */ -extern Char myesc PROTO ((Char[])); - -/* Convert an octal digit string to an integer value. */ -extern int otoi PROTO ((Char[])); +extern unsigned char myesc(unsigned char[]); /* Output a (possibly-formatted) string to the generated scanner. */ -extern void out PROTO ((const char *)); -extern void out_dec PROTO ((const char *, int)); -extern void out_dec2 PROTO ((const char *, int, int)); -extern void out_hex PROTO ((const char *, unsigned int)); -extern void out_str PROTO ((const char *, const char *)); -extern void out_str3 -PROTO ((const char *, const char *, const char *, const char *)); -extern void out_str_dec PROTO ((const char *, const char *, int)); -extern void outc PROTO ((int)); -extern void outn PROTO ((const char *)); -extern void out_m4_define (const char* def, const char* val); +extern void out(const char *); +extern void out_dec(const char *, int); +extern void out_dec2(const char *, int, int); +extern void out_hex(const char *, unsigned int); +extern void out_str(const char *, const char *); +extern void out_str3(const char *, const char *, const char *, const char *); +extern void out_str_dec(const char *, const char *, int); +extern void outc(int); +extern void outn(const char *); +extern void out_m4_define(const char* def, const char* val); /* Return a printable version of the given character, which might be * 8-bit. */ -extern char *readable_form PROTO ((int)); +extern char *readable_form(int); /* Write out one section of the skeleton file. */ -extern void skelout PROTO ((void)); +extern void skelout(void); /* Output a yy_trans_info structure. */ -extern void transition_struct_out PROTO ((int, int)); +extern void transition_struct_out(int, int); /* Only needed when using certain broken versions of bison to build parse.c. */ -extern void *yy_flex_xmalloc PROTO ((int)); - -/* Set a region of memory to 0. */ -extern void zero_out PROTO ((char *, size_t)); +extern void *yy_flex_xmalloc(int); /* from file nfa.c */ /* Add an accepting state to a machine. */ -extern void add_accept PROTO ((int, int)); +extern void add_accept(int, int); /* Make a given number of copies of a singleton machine. */ -extern int copysingl PROTO ((int, int)); +extern int copysingl(int, int); /* Debugging routine to write out an nfa. */ -extern void dumpnfa PROTO ((int)); +extern void dumpnfa(int); /* Finish up the processing for a rule. */ -extern void finish_rule PROTO ((int, int, int, int, int)); +extern void finish_rule(int, int, int, int, int); /* Connect two machines together. */ -extern int link_machines PROTO ((int, int)); +extern int link_machines(int, int); /* Mark each "beginning" state in a machine as being a "normal" (i.e., * not trailing context associated) state. */ -extern void mark_beginning_as_normal PROTO ((int)); +extern void mark_beginning_as_normal(int); /* Make a machine that branches to two machines. */ -extern int mkbranch PROTO ((int, int)); +extern int mkbranch(int, int); -extern int mkclos PROTO ((int)); /* convert a machine into a closure */ -extern int mkopt PROTO ((int)); /* make a machine optional */ +extern int mkclos(int); /* convert a machine into a closure */ +extern int mkopt(int); /* make a machine optional */ /* Make a machine that matches either one of two machines. */ -extern int mkor PROTO ((int, int)); +extern int mkor(int, int); /* Convert a machine into a positive closure. */ -extern int mkposcl PROTO ((int)); +extern int mkposcl(int); -extern int mkrep PROTO ((int, int, int)); /* make a replicated machine */ +extern int mkrep(int, int, int); /* make a replicated machine */ /* Create a state with a transition on a given symbol. */ -extern int mkstate PROTO ((int)); +extern int mkstate(int); -extern void new_rule PROTO ((void)); /* initialize for a new rule */ +extern void new_rule(void); /* initialize for a new rule */ /* from file parse.y */ /* Build the "<>" action for the active start conditions. */ -extern void build_eof_action PROTO ((void)); +extern void build_eof_action(void); /* Write out a message formatted with one string, pinpointing its location. */ -extern void format_pinpoint_message PROTO ((const char *, const char *)); +extern void format_pinpoint_message(const char *, const char *); /* Write out a message, pinpointing its location. */ -extern void pinpoint_message PROTO ((const char *)); +extern void pinpoint_message(const char *); /* Write out a warning, pinpointing it at the given line. */ -extern void line_warning PROTO ((const char *, int)); +extern void line_warning(const char *, int); /* Write out a message, pinpointing it at the given line. */ -extern void line_pinpoint PROTO ((const char *, int)); +extern void line_pinpoint(const char *, int); /* Report a formatted syntax error. */ -extern void format_synerr PROTO ((const char *, const char *)); -extern void synerr PROTO ((const char *)); /* report a syntax error */ -extern void format_warn PROTO ((const char *, const char *)); -extern void warn PROTO ((const char *)); /* report a warning */ -extern void yyerror PROTO ((const char *)); /* report a parse error */ -extern int yyparse PROTO ((void)); /* the YACC parser */ +extern void format_synerr(const char *, const char *); +extern void synerr(const char *); /* report a syntax error */ +extern void format_warn(const char *, const char *); +extern void lwarn(const char *); /* report a warning */ +extern void yyerror(const char *); /* report a parse error */ +extern int yyparse(void); /* the YACC parser */ /* from file scan.l */ /* The Flex-generated scanner for flex. */ -extern int flexscan PROTO ((void)); +extern int flexscan(void); /* Open the given file (if NULL, stdin) for scanning. */ -extern void set_input_file PROTO ((char *)); - -/* Wrapup a file in the lexical analyzer. */ -extern int yywrap PROTO ((void)); +extern void set_input_file(char *); /* from file sym.c */ /* Save the text of a character class. */ -extern void cclinstal PROTO ((Char[], int)); +extern void cclinstal(char[], int); /* Lookup the number associated with character class. */ -extern int ccllookup PROTO ((Char[])); +extern int ccllookup(char[]); -extern void ndinstal PROTO ((const char *, Char[])); /* install a name definition */ -extern Char *ndlookup PROTO ((const char *)); /* lookup a name definition */ +extern void ndinstal(const char *, char[]); /* install a name definition */ +extern char *ndlookup(const char *); /* lookup a name definition */ /* Increase maximum number of SC's. */ -extern void scextend PROTO ((void)); -extern void scinstal PROTO ((const char *, int)); /* make a start condition */ +extern void scextend(void); +extern void scinstal(const char *, int); /* make a start condition */ /* Lookup the number associated with a start condition. */ -extern int sclookup PROTO ((const char *)); +extern int sclookup(const char *); /* from file tblcmp.c */ /* Build table entries for dfa state. */ -extern void bldtbl PROTO ((int[], int, int, int, int)); +extern void bldtbl(int[], int, int, int, int); -extern void cmptmps PROTO ((void)); /* compress template table entries */ -extern void expand_nxt_chk PROTO ((void)); /* increase nxt/chk arrays */ +extern void cmptmps(void); /* compress template table entries */ +extern void expand_nxt_chk(void); /* increase nxt/chk arrays */ /* Finds a space in the table for a state to be placed. */ -extern int find_table_space PROTO ((int *, int)); -extern void inittbl PROTO ((void)); /* initialize transition tables */ +extern int find_table_space(int *, int); +extern void inittbl(void); /* initialize transition tables */ /* Make the default, "jam" table entries. */ -extern void mkdeftbl PROTO ((void)); +extern void mkdeftbl(void); /* Create table entries for a state (or state fragment) which has * only one out-transition. */ -extern void mk1tbl PROTO ((int, int, int, int)); +extern void mk1tbl(int, int, int, int); /* Place a state into full speed transition table. */ -extern void place_state PROTO ((int *, int, int)); +extern void place_state(int *, int, int); /* Save states with only one out-transition to be processed later. */ -extern void stack1 PROTO ((int, int, int, int)); +extern void stack1(int, int, int, int); /* from file yylex.c */ -extern int yylex PROTO ((void)); +extern int yylex(void); /* A growable array. See buf.c. */ struct Buf { @@ -1107,30 +1045,28 @@ struct Buf { int nmax; /* max capacity of elements. */ }; -extern void buf_init PROTO ((struct Buf * buf, size_t elem_size)); -extern void buf_destroy PROTO ((struct Buf * buf)); -extern struct Buf *buf_append -PROTO ((struct Buf * buf, const void *ptr, int n_elem)); -extern struct Buf *buf_concat PROTO((struct Buf* dest, const struct Buf* src)); -extern struct Buf *buf_strappend PROTO ((struct Buf *, const char *str)); -extern struct Buf *buf_strnappend -PROTO ((struct Buf *, const char *str, int nchars)); -extern struct Buf *buf_strdefine -PROTO ((struct Buf * buf, const char *str, const char *def)); -extern struct Buf *buf_prints PROTO((struct Buf *buf, const char *fmt, const char* s)); -extern struct Buf *buf_m4_define PROTO((struct Buf *buf, const char* def, const char* val)); -extern struct Buf *buf_m4_undefine PROTO((struct Buf *buf, const char* def)); -extern struct Buf *buf_print_strings PROTO((struct Buf * buf, FILE* out)); -extern struct Buf *buf_linedir PROTO((struct Buf *buf, const char* filename, int lineno)); +extern void buf_init(struct Buf * buf, size_t elem_size); +extern void buf_destroy(struct Buf * buf); +extern struct Buf *buf_append(struct Buf * buf, const void *ptr, int n_elem); +extern struct Buf *buf_concat(struct Buf* dest, const struct Buf* src); +extern struct Buf *buf_strappend(struct Buf *, const char *str); +extern struct Buf *buf_strnappend(struct Buf *, const char *str, int nchars); +extern struct Buf *buf_strdefine(struct Buf * buf, const char *str, const char *def); +extern struct Buf *buf_prints(struct Buf *buf, const char *fmt, const char* s); +extern struct Buf *buf_m4_define(struct Buf *buf, const char* def, const char* val); +extern struct Buf *buf_m4_undefine(struct Buf *buf, const char* def); +extern struct Buf *buf_print_strings(struct Buf * buf, FILE* out); +extern struct Buf *buf_linedir(struct Buf *buf, const char* filename, int lineno); extern struct Buf userdef_buf; /* a string buffer for #define's generated by user-options on cmd line. */ extern struct Buf defs_buf; /* a char* buffer to save #define'd some symbols generated by flex. */ extern struct Buf yydmap_buf; /* a string buffer to hold yydmap elements */ extern struct Buf m4defs_buf; /* Holds m4 definitions. */ extern struct Buf top_buf; /* contains %top code. String buffer. */ +extern bool no_section3_escape; /* True if the undocumented option --unsafe-no-m4-sect3-escape was passed */ /* For blocking out code from the header file. */ -#define OUT_BEGIN_CODE() outn("m4_ifdef( [[M4_YY_IN_HEADER]],,[[") +#define OUT_BEGIN_CODE() outn("m4_ifdef( [[M4_YY_IN_HEADER]],,[[m4_dnl") #define OUT_END_CODE() outn("]])") /* For setjmp/longjmp (instead of calling exit(2)). Linkage in main.c */ @@ -1183,14 +1119,14 @@ struct filter { /* output filter chain */ extern struct filter * output_chain; -extern struct filter *filter_create_ext PROTO((struct filter * chain, const char *cmd, ...)); -struct filter *filter_create_int PROTO((struct filter *chain, +extern struct filter *filter_create_ext (struct filter * chain, const char *cmd, ...); +struct filter *filter_create_int(struct filter *chain, int (*filter_func) (struct filter *), - void *extra)); -extern bool filter_apply_chain PROTO((struct filter * chain)); -extern int filter_truncate (struct filter * chain, int max_len); -extern int filter_tee_header PROTO((struct filter *chain)); -extern int filter_fix_linedirs PROTO((struct filter *chain)); + void *extra); +extern bool filter_apply_chain(struct filter * chain); +extern int filter_truncate(struct filter * chain, int max_len); +extern int filter_tee_header(struct filter *chain); +extern int filter_fix_linedirs(struct filter *chain); /* @@ -1210,9 +1146,9 @@ bool regmatch_empty (regmatch_t * m); typedef unsigned int scanflags_t; extern scanflags_t* _sf_stk; extern size_t _sf_top_ix, _sf_max; /**< stack of scanner flags. */ -#define _SF_CASE_INS 0x0001 -#define _SF_DOT_ALL 0x0002 -#define _SF_SKIP_WS 0x0004 +#define _SF_CASE_INS ((scanflags_t) 0x0001) +#define _SF_DOT_ALL ((scanflags_t) 0x0002) +#define _SF_SKIP_WS ((scanflags_t) 0x0004) #define sf_top() (_sf_stk[_sf_top_ix]) #define sf_case_ins() (sf_top() & _SF_CASE_INS) #define sf_dot_all() (sf_top() & _SF_DOT_ALL) diff --git a/contrib/flex/flexint.h b/contrib/flex/src/flexint.h similarity index 95% rename from contrib/flex/flexint.h rename to contrib/flex/src/flexint.h index c5502662ca3b..29d59c273012 100644 --- a/contrib/flex/flexint.h +++ b/contrib/flex/src/flexint.h @@ -59,6 +59,10 @@ typedef unsigned int flex_uint32_t; #define UINT32_MAX (4294967295U) #endif +#ifndef SIZE_MAX +#define SIZE_MAX (~(size_t)0) +#endif + #endif /* ! C99 */ #endif /* ! FLEXINT_H */ diff --git a/contrib/flex/gen.c b/contrib/flex/src/gen.c similarity index 88% rename from contrib/flex/gen.c rename to contrib/flex/src/gen.c index 1e554d4d5ee5..590e5d8d1cc7 100644 --- a/contrib/flex/gen.c +++ b/contrib/flex/src/gen.c @@ -37,16 +37,11 @@ /* declare functions that have forward references */ -void gen_next_state PROTO ((int)); -void genecs PROTO ((void)); -void indent_put2s PROTO ((const char *, const char *)); -void indent_puts PROTO ((const char *)); +void genecs(void); static int indent_level = 0; /* each level is 8 spaces */ -#define indent_up() (++indent_level) -#define indent_down() (--indent_level) #define set_indent(indent_val) indent_level = indent_val /* Almost everything is done in terms of arrays starting at 1, so provide @@ -58,28 +53,35 @@ static int indent_level = 0; /* each level is 8 spaces */ static const char *get_int16_decl (void) { return (gentables) - ? "static yyconst flex_int16_t %s[%d] =\n { 0,\n" - : "static yyconst flex_int16_t * %s = 0;\n"; + ? "static const flex_int16_t %s[%d] =\n { 0,\n" + : "static const flex_int16_t * %s = 0;\n"; } static const char *get_int32_decl (void) { return (gentables) - ? "static yyconst flex_int32_t %s[%d] =\n { 0,\n" - : "static yyconst flex_int32_t * %s = 0;\n"; + ? "static const flex_int32_t %s[%d] =\n { 0,\n" + : "static const flex_int32_t * %s = 0;\n"; } static const char *get_state_decl (void) { return (gentables) - ? "static yyconst yy_state_type %s[%d] =\n { 0,\n" - : "static yyconst yy_state_type * %s = 0;\n"; + ? "static const yy_state_type %s[%d] =\n { 0,\n" + : "static const yy_state_type * %s = 0;\n"; +} + +static const char *get_yy_char_decl (void) +{ + return (gentables) + ? "static const YY_CHAR %s[%d] =\n { 0,\n" + : "static const YY_CHAR * %s = 0;\n"; } /* Indent to the current level. */ -void do_indent () +void do_indent (void) { int i = indent_level * 8; @@ -104,12 +106,12 @@ static struct yytbl_data *mkeoltbl (void) flex_int8_t *tdata = 0; struct yytbl_data *tbl; - tbl = (struct yytbl_data *) calloc (1, sizeof (struct yytbl_data)); + tbl = calloc(1, sizeof (struct yytbl_data)); yytbl_data_init (tbl, YYTD_ID_RULE_CAN_MATCH_EOL); tbl->td_flags = YYTD_DATA8; - tbl->td_lolen = num_rules + 1; + tbl->td_lolen = (flex_uint32_t) (num_rules + 1); tbl->td_data = tdata = - (flex_int8_t *) calloc (tbl->td_lolen, sizeof (flex_int8_t)); + calloc(tbl->td_lolen, sizeof (flex_int8_t)); for (i = 1; i <= num_rules; i++) tdata[i] = rule_has_nl[i] ? 1 : 0; @@ -145,7 +147,7 @@ static void geneoltbl (void) /* Generate the code to keep backing-up information. */ -void gen_backing_up () +void gen_backing_up (void) { if (reject || num_backing_up == 0) return; @@ -155,18 +157,18 @@ void gen_backing_up () else indent_puts ("if ( yy_accept[yy_current_state] )"); - indent_up (); + ++indent_level; indent_puts ("{"); indent_puts ("YY_G(yy_last_accepting_state) = yy_current_state;"); indent_puts ("YY_G(yy_last_accepting_cpos) = yy_cp;"); indent_puts ("}"); - indent_down (); + --indent_level; } /* Generate the code to perform the backing up. */ -void gen_bu_action () +void gen_bu_action (void) { if (reject || num_backing_up == 0) return; @@ -211,14 +213,14 @@ static struct yytbl_data *mkctbl (void) ((tblend + numecs + 1) >= INT16_MAX || long_align) ? "flex_int32_t" : "flex_int16_t"); - tbl = (struct yytbl_data *) calloc (1, sizeof (struct yytbl_data)); + tbl = calloc(1, sizeof (struct yytbl_data)); yytbl_data_init (tbl, YYTD_ID_TRANSITION); tbl->td_flags = YYTD_DATA32 | YYTD_STRUCT; tbl->td_hilen = 0; - tbl->td_lolen = tblend + numecs + 1; /* number of structs */ + tbl->td_lolen = (flex_uint32_t) (tblend + numecs + 1); /* number of structs */ tbl->td_data = tdata = - (flex_int32_t *) calloc (tbl->td_lolen * 2, sizeof (flex_int32_t)); + calloc(tbl->td_lolen * 2, sizeof (flex_int32_t)); /* We want the transition to be represented as the offset to the * next state, not the actual state number, which is what it currently @@ -307,14 +309,14 @@ static struct yytbl_data *mkssltbl (void) flex_int32_t *tdata = 0; flex_int32_t i; - tbl = (struct yytbl_data *) calloc (1, sizeof (struct yytbl_data)); + tbl = calloc(1, sizeof (struct yytbl_data)); yytbl_data_init (tbl, YYTD_ID_START_STATE_LIST); tbl->td_flags = YYTD_DATA32 | YYTD_PTRANS; tbl->td_hilen = 0; - tbl->td_lolen = lastsc * 2 + 1; + tbl->td_lolen = (flex_uint32_t) (lastsc * 2 + 1); tbl->td_data = tdata = - (flex_int32_t *) calloc (tbl->td_lolen, sizeof (flex_int32_t)); + calloc(tbl->td_lolen, sizeof (flex_int32_t)); for (i = 0; i <= lastsc * 2; ++i) tdata[i] = base[i]; @@ -330,16 +332,16 @@ static struct yytbl_data *mkssltbl (void) /* genctbl - generates full speed compressed transition table */ -void genctbl () +void genctbl (void) { int i; int end_of_buffer_action = num_rules + 1; /* Table of verify for transition and offset to next state. */ if (gentables) - out_dec ("static yyconst struct yy_trans_info yy_transition[%d] =\n {\n", tblend + numecs + 1); + out_dec ("static const struct yy_trans_info yy_transition[%d] =\n {\n", tblend + numecs + 1); else - outn ("static yyconst struct yy_trans_info *yy_transition = 0;"); + outn ("static const struct yy_trans_info *yy_transition = 0;"); /* We want the transition to be represented as the offset to the * next state, not the actual state number, which is what it currently @@ -411,9 +413,9 @@ void genctbl () /* Table of pointers to start states. */ if (gentables) - out_dec ("static yyconst struct yy_trans_info *yy_start_state_list[%d] =\n", lastsc * 2 + 1); + out_dec ("static const struct yy_trans_info *yy_start_state_list[%d] =\n", lastsc * 2 + 1); else - outn ("static yyconst struct yy_trans_info **yy_start_state_list =0;"); + outn ("static const struct yy_trans_info **yy_start_state_list =0;"); if (gentables) { outn (" {"); @@ -437,14 +439,14 @@ static struct yytbl_data *mkecstbl (void) struct yytbl_data *tbl = 0; flex_int32_t *tdata = 0; - tbl = (struct yytbl_data *) calloc (1, sizeof (struct yytbl_data)); + tbl = calloc(1, sizeof (struct yytbl_data)); yytbl_data_init (tbl, YYTD_ID_EC); tbl->td_flags |= YYTD_DATA32; tbl->td_hilen = 0; - tbl->td_lolen = csize; + tbl->td_lolen = (flex_uint32_t) csize; tbl->td_data = tdata = - (flex_int32_t *) calloc (tbl->td_lolen, sizeof (flex_int32_t)); + calloc(tbl->td_lolen, sizeof (flex_int32_t)); for (i = 1; i < csize; ++i) { ecgroup[i] = ABS (ecgroup[i]); @@ -453,19 +455,19 @@ static struct yytbl_data *mkecstbl (void) buf_prints (&yydmap_buf, "\t{YYTD_ID_EC, (void**)&yy_ec, sizeof(%s)},\n", - "flex_int32_t"); + "YY_CHAR"); return tbl; } /* Generate equivalence-class tables. */ -void genecs () +void genecs (void) { int i, j; int numrows; - out_str_dec (get_int32_decl (), "yy_ec", csize); + out_str_dec (get_yy_char_decl (), "yy_ec", csize); for (i = 1; i < csize; ++i) { ecgroup[i] = ABS (ecgroup[i]); @@ -495,7 +497,7 @@ void genecs () /* Generate the code to find the action number. */ -void gen_find_action () +void gen_find_action (void) { if (fullspd) indent_puts ("yy_act = yy_current_state[-1].yy_nxt;"); @@ -507,19 +509,23 @@ void gen_find_action () indent_puts ("yy_current_state = *--YY_G(yy_state_ptr);"); indent_puts ("YY_G(yy_lp) = yy_accept[yy_current_state];"); - outn ("goto find_rule; /* avoid `defined but not used' warning */"); - outn ("find_rule: /* we branch to this label when backing up */"); + if (!variable_trailing_context_rules) + outn ("m4_ifdef( [[M4_YY_USES_REJECT]],\n[["); + if(reject_really_used) + outn ("find_rule: /* we branch to this label when backing up */"); + if (!variable_trailing_context_rules) + outn ("]])\n"); indent_puts ("for ( ; ; ) /* until we find what rule we matched */"); - indent_up (); + ++indent_level; indent_puts ("{"); indent_puts ("if ( YY_G(yy_lp) && YY_G(yy_lp) < yy_accept[yy_current_state + 1] )"); - indent_up (); + ++indent_level; indent_puts ("{"); indent_puts ("yy_act = yy_acclist[YY_G(yy_lp)];"); @@ -527,25 +533,25 @@ void gen_find_action () indent_puts ("if ( yy_act & YY_TRAILING_HEAD_MASK ||"); indent_puts (" YY_G(yy_looking_for_trail_begin) )"); - indent_up (); + ++indent_level; indent_puts ("{"); indent_puts ("if ( yy_act == YY_G(yy_looking_for_trail_begin) )"); - indent_up (); + ++indent_level; indent_puts ("{"); indent_puts ("YY_G(yy_looking_for_trail_begin) = 0;"); indent_puts ("yy_act &= ~YY_TRAILING_HEAD_MASK;"); indent_puts ("break;"); indent_puts ("}"); - indent_down (); + --indent_level; indent_puts ("}"); - indent_down (); + --indent_level; indent_puts ("else if ( yy_act & YY_TRAILING_MASK )"); - indent_up (); + ++indent_level; indent_puts ("{"); indent_puts ("YY_G(yy_looking_for_trail_begin) = yy_act & ~YY_TRAILING_MASK;"); @@ -564,10 +570,10 @@ void gen_find_action () } indent_puts ("}"); - indent_down (); + --indent_level; indent_puts ("else"); - indent_up (); + ++indent_level; indent_puts ("{"); indent_puts ("YY_G(yy_full_match) = yy_cp;"); indent_puts @@ -575,7 +581,7 @@ void gen_find_action () indent_puts ("YY_G(yy_full_lp) = YY_G(yy_lp);"); indent_puts ("break;"); indent_puts ("}"); - indent_down (); + --indent_level; indent_puts ("++YY_G(yy_lp);"); indent_puts ("goto find_rule;"); @@ -585,16 +591,16 @@ void gen_find_action () /* Remember matched text in case we back up due to * trailing context plus REJECT. */ - indent_up (); + ++indent_level; indent_puts ("{"); indent_puts ("YY_G(yy_full_match) = yy_cp;"); indent_puts ("break;"); indent_puts ("}"); - indent_down (); + --indent_level; } indent_puts ("}"); - indent_down (); + --indent_level; indent_puts ("--yy_cp;"); @@ -607,7 +613,7 @@ void gen_find_action () indent_puts ("}"); - indent_down (); + --indent_level; } else { /* compressed */ @@ -618,7 +624,7 @@ void gen_find_action () * the match. */ indent_puts ("if ( yy_act == 0 )"); - indent_up (); + ++indent_level; indent_puts ("{ /* have to back up */"); indent_puts ("yy_cp = YY_G(yy_last_accepting_cpos);"); @@ -627,7 +633,7 @@ void gen_find_action () indent_puts ("yy_act = yy_accept[yy_current_state];"); indent_puts ("}"); - indent_down (); + --indent_level; } } } @@ -643,14 +649,14 @@ struct yytbl_data *mkftbl (void) struct yytbl_data *tbl; flex_int32_t *tdata = 0; - tbl = (struct yytbl_data *) calloc (1, sizeof (struct yytbl_data)); + tbl = calloc(1, sizeof (struct yytbl_data)); yytbl_data_init (tbl, YYTD_ID_ACCEPT); tbl->td_flags |= YYTD_DATA32; tbl->td_hilen = 0; /* it's a one-dimensional array */ - tbl->td_lolen = lastdfa + 1; + tbl->td_lolen = (flex_uint32_t) (lastdfa + 1); tbl->td_data = tdata = - (flex_int32_t *) calloc (tbl->td_lolen, sizeof (flex_int32_t)); + calloc(tbl->td_lolen, sizeof (flex_int32_t)); dfaacc[end_of_buffer_state].dfaacc_state = end_of_buffer_action; @@ -673,7 +679,7 @@ struct yytbl_data *mkftbl (void) /* genftbl - generate full transition table */ -void genftbl () +void genftbl (void) { int i; int end_of_buffer_action = num_rules + 1; @@ -706,8 +712,7 @@ void genftbl () /* Generate the code to find the next compressed-table state. */ -void gen_next_compressed_state (char_map) - char *char_map; +void gen_next_compressed_state (char *char_map) { indent_put2s ("YY_CHAR yy_c = %s;", char_map); @@ -719,7 +724,7 @@ void gen_next_compressed_state (char_map) indent_puts ("while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )"); - indent_up (); + ++indent_level; indent_puts ("{"); indent_puts ("yy_current_state = (int) yy_def[yy_current_state];"); @@ -736,22 +741,22 @@ void gen_next_compressed_state (char_map) /* lastdfa + 2 is the beginning of the templates */ out_dec ("if ( yy_current_state >= %d )\n", lastdfa + 2); - indent_up (); - indent_puts ("yy_c = yy_meta[(unsigned int) yy_c];"); - indent_down (); + ++indent_level; + indent_puts ("yy_c = yy_meta[yy_c];"); + --indent_level; } indent_puts ("}"); - indent_down (); + --indent_level; indent_puts - ("yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];"); + ("yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];"); } /* Generate the code to find the next match. */ -void gen_next_match () +void gen_next_match (void) { /* NOTE - changes in here should be reflected in gen_next_state() and * gen_NUL_trans(). @@ -772,7 +777,7 @@ void gen_next_match () ("while ( (yy_current_state = yy_nxt[yy_current_state*YY_NXT_LOLEN + %s ]) > 0 )", char_map); - indent_up (); + ++indent_level; if (num_backing_up > 0) { indent_puts ("{"); @@ -786,7 +791,7 @@ void gen_next_match () indent_puts ("}"); - indent_down (); + --indent_level; outc ('\n'); indent_puts ("yy_current_state = -yy_current_state;"); @@ -795,15 +800,15 @@ void gen_next_match () else if (fullspd) { indent_puts ("{"); indent_puts - ("yyconst struct yy_trans_info *yy_trans_info;\n"); + ("const struct yy_trans_info *yy_trans_info;\n"); indent_puts ("YY_CHAR yy_c;\n"); indent_put2s ("for ( yy_c = %s;", char_map); indent_puts - (" (yy_trans_info = &yy_current_state[(unsigned int) yy_c])->"); + (" (yy_trans_info = &yy_current_state[yy_c])->"); indent_puts ("yy_verify == yy_c;"); indent_put2s (" yy_c = %s )", char_map_2); - indent_up (); + ++indent_level; if (num_backing_up > 0) indent_puts ("{"); @@ -816,14 +821,14 @@ void gen_next_match () indent_puts ("}"); } - indent_down (); + --indent_level; indent_puts ("}"); } else { /* compressed */ indent_puts ("do"); - indent_up (); + ++indent_level; indent_puts ("{"); gen_next_state (false); @@ -832,7 +837,7 @@ void gen_next_match () indent_puts ("}"); - indent_down (); + --indent_level; do_indent (); @@ -857,8 +862,7 @@ void gen_next_match () /* Generate the code to find the next state. */ -void gen_next_state (worry_about_NULs) - int worry_about_NULs; +void gen_next_state (int worry_about_NULs) { /* NOTE - changes in here should be reflected in gen_next_match() */ char char_map[256]; @@ -884,7 +888,7 @@ void gen_next_state (worry_about_NULs) gen_backing_up (); indent_puts ("if ( *yy_cp )"); - indent_up (); + ++indent_level; indent_puts ("{"); } @@ -910,12 +914,12 @@ void gen_next_state (worry_about_NULs) if (worry_about_NULs && nultrans) { indent_puts ("}"); - indent_down (); + --indent_level; indent_puts ("else"); - indent_up (); + ++indent_level; indent_puts ("yy_current_state = yy_NUL_trans[yy_current_state];"); - indent_down (); + --indent_level; } if (fullspd || fulltbl) @@ -928,7 +932,7 @@ void gen_next_state (worry_about_NULs) /* Generate the code to make a NUL transition. */ -void gen_NUL_trans () +void gen_NUL_trans (void) { /* NOTE - changes in here should be reflected in gen_next_match() */ /* Only generate a definition for "yy_cp" if we'll generate code * that uses it. Otherwise lint and the like complain. @@ -963,7 +967,7 @@ void gen_NUL_trans () out_dec ("int yy_c = %d;\n", NUL_ec); indent_puts - ("yyconst struct yy_trans_info *yy_trans_info;\n"); + ("const struct yy_trans_info *yy_trans_info;\n"); indent_puts ("yy_trans_info = &yy_current_state[(unsigned int) yy_c];"); indent_puts ("yy_current_state += yy_trans_info->yy_nxt;"); @@ -988,10 +992,10 @@ void gen_NUL_trans () * the state stack and yy_c_buf_p get out of sync. */ indent_puts ("if ( ! yy_is_jam )"); - indent_up (); + ++indent_level; indent_puts ("*YY_G(yy_state_ptr)++ = yy_current_state;"); - indent_down (); + --indent_level; } } @@ -1002,18 +1006,18 @@ void gen_NUL_trans () if (need_backing_up && (fullspd || fulltbl)) { outc ('\n'); indent_puts ("if ( ! yy_is_jam )"); - indent_up (); + ++indent_level; indent_puts ("{"); gen_backing_up (); indent_puts ("}"); - indent_down (); + --indent_level; } } /* Generate the code to find the start state. */ -void gen_start_state () +void gen_start_state (void) { if (fullspd) { if (bol_needed) { @@ -1046,7 +1050,7 @@ void gen_start_state () /* gentabs - generate data statements for the transition tables */ -void gentabs () +void gentabs (void) { int i, j, k, *accset, nacc, *acc_array, total_states; int end_of_buffer_action = num_rules + 1; @@ -1090,11 +1094,11 @@ void gentabs () "\t{YYTD_ID_ACCLIST, (void**)&yy_acclist, sizeof(%s)},\n", long_align ? "flex_int32_t" : "flex_int16_t"); - yyacclist_tbl = (struct yytbl_data*)calloc(1,sizeof(struct yytbl_data)); + yyacclist_tbl = calloc(1,sizeof(struct yytbl_data)); yytbl_data_init (yyacclist_tbl, YYTD_ID_ACCLIST); - yyacclist_tbl->td_lolen = MAX(numas,1) + 1; + yyacclist_tbl->td_lolen = (flex_uint32_t) (MAX(numas,1) + 1); yyacclist_tbl->td_data = yyacclist_data = - (flex_int32_t *) calloc (yyacclist_tbl->td_lolen, sizeof (flex_int32_t)); + calloc(yyacclist_tbl->td_lolen, sizeof (flex_int32_t)); yyacclist_curr = 1; j = 1; /* index into "yy_acclist" array */ @@ -1199,13 +1203,11 @@ void gentabs () "\t{YYTD_ID_ACCEPT, (void**)&yy_accept, sizeof(%s)},\n", long_align ? "flex_int32_t" : "flex_int16_t"); - yyacc_tbl = - (struct yytbl_data *) calloc (1, - sizeof (struct yytbl_data)); + yyacc_tbl = calloc(1, sizeof (struct yytbl_data)); yytbl_data_init (yyacc_tbl, YYTD_ID_ACCEPT); - yyacc_tbl->td_lolen = k; + yyacc_tbl->td_lolen = (flex_uint32_t) k; yyacc_tbl->td_data = yyacc_data = - (flex_int32_t *) calloc (yyacc_tbl->td_lolen, sizeof (flex_int32_t)); + calloc(yyacc_tbl->td_lolen, sizeof (flex_int32_t)); yyacc_curr=1; for (i = 1; i <= lastdfa; ++i) { @@ -1258,24 +1260,21 @@ void gentabs () * templates with). */ flex_int32_t *yymecs_data = 0; - yymeta_tbl = - (struct yytbl_data *) calloc (1, - sizeof (struct - yytbl_data)); + yymeta_tbl = calloc(1, sizeof (struct yytbl_data)); yytbl_data_init (yymeta_tbl, YYTD_ID_META); - yymeta_tbl->td_lolen = numecs + 1; + yymeta_tbl->td_lolen = (flex_uint32_t) (numecs + 1); yymeta_tbl->td_data = yymecs_data = - (flex_int32_t *) calloc (yymeta_tbl->td_lolen, + calloc(yymeta_tbl->td_lolen, sizeof (flex_int32_t)); if (trace) fputs (_("\n\nMeta-Equivalence Classes:\n"), stderr); - out_str_dec (get_int32_decl (), "yy_meta", numecs + 1); + out_str_dec (get_yy_char_decl (), "yy_meta", numecs + 1); buf_prints (&yydmap_buf, "\t{YYTD_ID_META, (void**)&yy_meta, sizeof(%s)},\n", - "flex_int32_t"); + "YY_CHAR"); for (i = 1; i <= numecs; ++i) { if (trace) @@ -1309,13 +1308,11 @@ void gentabs () "\t{YYTD_ID_BASE, (void**)&yy_base, sizeof(%s)},\n", (tblend >= INT16_MAX || long_align) ? "flex_int32_t" : "flex_int16_t"); - yybase_tbl = - (struct yytbl_data *) calloc (1, - sizeof (struct yytbl_data)); + yybase_tbl = calloc (1, sizeof (struct yytbl_data)); yytbl_data_init (yybase_tbl, YYTD_ID_BASE); - yybase_tbl->td_lolen = total_states + 1; + yybase_tbl->td_lolen = (flex_uint32_t) (total_states + 1); yybase_tbl->td_data = yybase_data = - (flex_int32_t *) calloc (yybase_tbl->td_lolen, + calloc(yybase_tbl->td_lolen, sizeof (flex_int32_t)); yybase_curr = 1; @@ -1369,13 +1366,11 @@ void gentabs () (total_states >= INT16_MAX || long_align) ? "flex_int32_t" : "flex_int16_t"); - yydef_tbl = - (struct yytbl_data *) calloc (1, - sizeof (struct yytbl_data)); + yydef_tbl = calloc(1, sizeof (struct yytbl_data)); yytbl_data_init (yydef_tbl, YYTD_ID_DEF); - yydef_tbl->td_lolen = total_states + 1; + yydef_tbl->td_lolen = (flex_uint32_t) (total_states + 1); yydef_tbl->td_data = yydef_data = - (flex_int32_t *) calloc (yydef_tbl->td_lolen, sizeof (flex_int32_t)); + calloc(yydef_tbl->td_lolen, sizeof (flex_int32_t)); for (i = 1; i <= total_states; ++i) { mkdata (def[i]); @@ -1403,13 +1398,11 @@ void gentabs () (total_states >= INT16_MAX || long_align) ? "flex_int32_t" : "flex_int16_t"); - yynxt_tbl = - (struct yytbl_data *) calloc (1, - sizeof (struct yytbl_data)); + yynxt_tbl = calloc (1, sizeof (struct yytbl_data)); yytbl_data_init (yynxt_tbl, YYTD_ID_NXT); - yynxt_tbl->td_lolen = tblend + 1; + yynxt_tbl->td_lolen = (flex_uint32_t) (tblend + 1); yynxt_tbl->td_data = yynxt_data = - (flex_int32_t *) calloc (yynxt_tbl->td_lolen, sizeof (flex_int32_t)); + calloc (yynxt_tbl->td_lolen, sizeof (flex_int32_t)); for (i = 1; i <= tblend; ++i) { /* Note, the order of the following test is important. @@ -1442,13 +1435,11 @@ void gentabs () (total_states >= INT16_MAX || long_align) ? "flex_int32_t" : "flex_int16_t"); - yychk_tbl = - (struct yytbl_data *) calloc (1, - sizeof (struct yytbl_data)); + yychk_tbl = calloc (1, sizeof (struct yytbl_data)); yytbl_data_init (yychk_tbl, YYTD_ID_CHK); - yychk_tbl->td_lolen = tblend + 1; + yychk_tbl->td_lolen = (flex_uint32_t) (tblend + 1); yychk_tbl->td_data = yychk_data = - (flex_int32_t *) calloc (yychk_tbl->td_lolen, sizeof (flex_int32_t)); + calloc(yychk_tbl->td_lolen, sizeof (flex_int32_t)); for (i = 1; i <= tblend; ++i) { if (chk[i] == 0) @@ -1468,7 +1459,7 @@ void gentabs () } /* End generating yy_chk */ - flex_free ((void *) acc_array); + free(acc_array); } @@ -1476,8 +1467,7 @@ void gentabs () * current indentation level, adding a final newline. */ -void indent_put2s (fmt, arg) - const char *fmt, *arg; +void indent_put2s (const char *fmt, const char *arg) { do_indent (); out_str (fmt, arg); @@ -1489,8 +1479,7 @@ void indent_put2s (fmt, arg) * newline. */ -void indent_puts (str) - const char *str; +void indent_puts (const char *str) { do_indent (); outn (str); @@ -1500,11 +1489,11 @@ void indent_puts (str) /* make_tables - generate transition tables and finishes generating output file */ -void make_tables () +void make_tables (void) { int i; - int did_eof_rule = false; - struct yytbl_data *yynultrans_tbl; + int did_eof_rule = false; + struct yytbl_data *yynultrans_tbl = NULL; skelout (); /* %% [2.0] - break point in skel */ @@ -1517,11 +1506,11 @@ void make_tables () if (yymore_used && !yytext_is_array) { indent_puts ("YY_G(yytext_ptr) -= YY_G(yy_more_len); \\"); indent_puts - ("yyleng = (size_t) (yy_cp - YY_G(yytext_ptr)); \\"); + ("yyleng = (int) (yy_cp - YY_G(yytext_ptr)); \\"); } else - indent_puts ("yyleng = (size_t) (yy_cp - yy_bp); \\"); + indent_puts ("yyleng = (int) (yy_cp - yy_bp); \\"); /* Now also deal with copying yytext_ptr to yytext if needed. */ skelout (); /* %% [3.0] - break point in skel */ @@ -1532,10 +1521,10 @@ void make_tables () else indent_puts ("if ( yyleng >= YYLMAX ) \\"); - indent_up (); + ++indent_level; indent_puts ("YY_FATAL_ERROR( \"token too large, exceeds YYLMAX\" ); \\"); - indent_down (); + --indent_level; if (yymore_used) { indent_puts @@ -1572,7 +1561,7 @@ void make_tables () set_indent (0); indent_puts ("struct yy_trans_info"); - indent_up (); + ++indent_level; indent_puts ("{"); /* We require that yy_verify and yy_nxt must be of the same size int. */ @@ -1588,7 +1577,7 @@ void make_tables () indent_put2s ("%s yy_nxt;", trans_offset_type); indent_puts ("};"); - indent_down (); + --indent_level; } else { /* We generate a bogus 'struct yy_trans_info' data type @@ -1600,12 +1589,12 @@ void make_tables () ("/* This struct is not used in this scanner,"); indent_puts (" but its presence is necessary. */"); indent_puts ("struct yy_trans_info"); - indent_up (); + ++indent_level; indent_puts ("{"); indent_puts ("flex_int32_t yy_verify;"); indent_puts ("flex_int32_t yy_nxt;"); indent_puts ("};"); - indent_down (); + --indent_level; } if (fullspd) { @@ -1703,16 +1692,13 @@ void make_tables () (fullspd) ? "struct yy_trans_info*" : "flex_int32_t"); - yynultrans_tbl = - (struct yytbl_data *) calloc (1, - sizeof (struct - yytbl_data)); + yynultrans_tbl = calloc(1, sizeof (struct yytbl_data)); yytbl_data_init (yynultrans_tbl, YYTD_ID_NUL_TRANS); if (fullspd) yynultrans_tbl->td_flags |= YYTD_PTRANS; - yynultrans_tbl->td_lolen = lastdfa + 1; + yynultrans_tbl->td_lolen = (flex_uint32_t) (lastdfa + 1); yynultrans_tbl->td_data = yynultrans_data = - (flex_int32_t *) calloc (yynultrans_tbl->td_lolen, + calloc(yynultrans_tbl->td_lolen, sizeof (flex_int32_t)); for (i = 1; i <= lastdfa; ++i) { @@ -1734,9 +1720,13 @@ void make_tables () 0) flexerror (_ ("Could not write yynultrans_tbl")); + } + + if (yynultrans_tbl != NULL) { yytbl_data_destroy (yynultrans_tbl); yynultrans_tbl = NULL; - } + } + /* End generating yy_NUL_trans */ } @@ -1825,13 +1815,13 @@ void make_tables () indent_puts ("#define YY_MORE_ADJ 0"); indent_puts ("#define YY_RESTORE_YY_MORE_OFFSET \\"); - indent_up (); + ++indent_level; indent_puts ("{ \\"); indent_puts ("YY_G(yy_more_offset) = YY_G(yy_prev_more_offset); \\"); indent_puts ("yyleng -= YY_G(yy_more_offset); \\"); indent_puts ("}"); - indent_down (); + --indent_level; } else { indent_puts @@ -1875,7 +1865,7 @@ void make_tables () if (!C_plus_plus) { if (use_read) { outn ("\terrno=0; \\"); - outn ("\twhile ( (result = read( fileno(yyin), (char *) buf, max_size )) < 0 ) \\"); + outn ("\twhile ( (result = (int) read( fileno(yyin), buf, (yy_size_t) max_size )) < 0 ) \\"); outn ("\t{ \\"); outn ("\t\tif( errno != EINTR) \\"); outn ("\t\t{ \\"); @@ -1891,7 +1881,7 @@ void make_tables () outn ("\tif ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \\"); outn ("\t\t{ \\"); outn ("\t\tint c = '*'; \\"); - outn ("\t\tsize_t n; \\"); + outn ("\t\tint n; \\"); outn ("\t\tfor ( n = 0; n < max_size && \\"); outn ("\t\t\t (c = getc( yyin )) != EOF && c != '\\n'; ++n ) \\"); outn ("\t\t\tbuf[n] = (char) c; \\"); @@ -1904,7 +1894,7 @@ void make_tables () outn ("\telse \\"); outn ("\t\t{ \\"); outn ("\t\terrno=0; \\"); - outn ("\t\twhile ( (result = fread(buf, 1, max_size, yyin))==0 && ferror(yyin)) \\"); + outn ("\t\twhile ( (result = (int) fread(buf, 1, (yy_size_t) max_size, yyin)) == 0 && ferror(yyin)) \\"); outn ("\t\t\t{ \\"); outn ("\t\t\tif( errno != EINTR) \\"); outn ("\t\t\t\t{ \\"); @@ -1921,16 +1911,16 @@ void make_tables () skelout (); /* %% [6.0] - break point in skel */ indent_puts ("#define YY_RULE_SETUP \\"); - indent_up (); + ++indent_level; if (bol_needed) { indent_puts ("if ( yyleng > 0 ) \\"); - indent_up (); + ++indent_level; indent_puts ("YY_CURRENT_BUFFER_LVALUE->yy_at_bol = \\"); indent_puts ("\t\t(yytext[yyleng - 1] == '\\n'); \\"); - indent_down (); + --indent_level; } indent_puts ("YY_USER_ACTION"); - indent_down (); + --indent_level; skelout (); /* %% [7.0] - break point in skel */ @@ -1946,13 +1936,13 @@ void make_tables () if (yymore_used && !yytext_is_array) { indent_puts ("YY_G(yy_more_len) = 0;"); indent_puts ("if ( YY_G(yy_more_flag) )"); - indent_up (); + ++indent_level; indent_puts ("{"); indent_puts - ("YY_G(yy_more_len) = YY_G(yy_c_buf_p) - YY_G(yytext_ptr);"); + ("YY_G(yy_more_len) = (int) (YY_G(yy_c_buf_p) - YY_G(yytext_ptr));"); indent_puts ("YY_G(yy_more_flag) = 0;"); indent_puts ("}"); - indent_down (); + --indent_level; } skelout (); /* %% [9.0] - break point in skel */ @@ -1971,39 +1961,39 @@ void make_tables () outn ("m4_ifdef( [[M4_YY_USE_LINENO]],[["); indent_puts ("if ( yy_act != YY_END_OF_BUFFER && yy_rule_can_match_eol[yy_act] )"); - indent_up (); + ++indent_level; indent_puts ("{"); - indent_puts ("yy_size_t yyl;"); + indent_puts ("int yyl;"); do_indent (); out_str ("for ( yyl = %s; yyl < yyleng; ++yyl )\n", yymore_used ? (yytext_is_array ? "YY_G(yy_prev_more_offset)" : "YY_G(yy_more_len)") : "0"); - indent_up (); + ++indent_level; indent_puts ("if ( yytext[yyl] == '\\n' )"); - indent_up (); + ++indent_level; indent_puts ("M4_YY_INCR_LINENO();"); - indent_down (); - indent_down (); + --indent_level; + --indent_level; indent_puts ("}"); - indent_down (); + --indent_level; outn ("]])"); skelout (); /* %% [12.0] - break point in skel */ if (ddebug) { indent_puts ("if ( yy_flex_debug )"); - indent_up (); + ++indent_level; indent_puts ("{"); indent_puts ("if ( yy_act == 0 )"); - indent_up (); + ++indent_level; indent_puts (C_plus_plus ? "std::cerr << \"--scanner backing up\\n\";" : "fprintf( stderr, \"--scanner backing up\\n\" );"); - indent_down (); + --indent_level; do_indent (); out_dec ("else if ( yy_act < %d )\n", num_rules); - indent_up (); + ++indent_level; if (C_plus_plus) { indent_puts @@ -2019,11 +2009,11 @@ void make_tables () (" (long)yy_rule_linenum[yy_act], yytext );"); } - indent_down (); + --indent_level; do_indent (); out_dec ("else if ( yy_act == %d )\n", num_rules); - indent_up (); + ++indent_level; if (C_plus_plus) { indent_puts @@ -2035,21 +2025,21 @@ void make_tables () indent_puts (" yytext );"); } - indent_down (); + --indent_level; do_indent (); out_dec ("else if ( yy_act == %d )\n", num_rules + 1); - indent_up (); + ++indent_level; indent_puts (C_plus_plus ? "std::cerr << \"--(end of buffer or a NUL)\\n\";" : "fprintf( stderr, \"--(end of buffer or a NUL)\\n\" );"); - indent_down (); + --indent_level; do_indent (); outn ("else"); - indent_up (); + ++indent_level; if (C_plus_plus) { indent_puts @@ -2060,15 +2050,15 @@ void make_tables () ("fprintf( stderr, \"--EOF (start condition %d)\\n\", YY_START );"); } - indent_down (); + --indent_level; indent_puts ("}"); - indent_down (); + --indent_level; } /* Copy actions to output file. */ skelout (); /* %% [13.0] - break point in skel */ - indent_up (); + ++indent_level; gen_bu_action (); out (&action_array[action_offset]); @@ -2083,9 +2073,9 @@ void make_tables () } if (did_eof_rule) { - indent_up (); + ++indent_level; indent_puts ("yyterminate();"); - indent_down (); + --indent_level; } @@ -2143,17 +2133,17 @@ void make_tables () if (do_yylineno) { indent_puts ("if ( YY_CURRENT_BUFFER_LVALUE->yy_at_bol )"); - indent_up (); + ++indent_level; indent_puts ("M4_YY_INCR_LINENO();"); - indent_down (); + --indent_level; } } else if (do_yylineno) { indent_puts ("if ( c == '\\n' )"); - indent_up (); + ++indent_level; indent_puts ("M4_YY_INCR_LINENO();"); - indent_down (); + --indent_level; } skelout (); @@ -2164,7 +2154,11 @@ void make_tables () if (sectnum == 3) { OUT_BEGIN_CODE (); + if (!no_section3_escape) + fputs("[[", stdout); (void) flexscan (); /* copy remainder of input to output */ + if (!no_section3_escape) + fputs("]]", stdout); OUT_END_CODE (); } } diff --git a/contrib/flex/libmain.c b/contrib/flex/src/libmain.c similarity index 90% rename from contrib/flex/libmain.c rename to contrib/flex/src/libmain.c index 49262e462bb0..bb2fe35a5f98 100644 --- a/contrib/flex/libmain.c +++ b/contrib/flex/src/libmain.c @@ -21,13 +21,16 @@ /* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR */ /* PURPOSE. */ -extern int yylex (); +#include -int main (argc, argv) - int argc; - char *argv[]; +extern int yylex (void); + +int main (int argc, char *argv[]) { + (void)argc; + (void)argv; + while (yylex () != 0) ; - return 0; + exit(0); } diff --git a/contrib/flex/libyywrap.c b/contrib/flex/src/libyywrap.c similarity index 99% rename from contrib/flex/libyywrap.c rename to contrib/flex/src/libyywrap.c index 7661e9121917..b0427c479733 100644 --- a/contrib/flex/libyywrap.c +++ b/contrib/flex/src/libyywrap.c @@ -22,6 +22,7 @@ /* PURPOSE. */ int yywrap (void); + int yywrap (void) { return 1; diff --git a/contrib/flex/main.c b/contrib/flex/src/main.c similarity index 92% rename from contrib/flex/main.c rename to contrib/flex/src/main.c index 728e42b1245d..711e387b1b51 100644 --- a/contrib/flex/main.c +++ b/contrib/flex/src/main.c @@ -36,15 +36,15 @@ #include "version.h" #include "options.h" #include "tables.h" +#include "parse.h" static char flex_version[] = FLEX_VERSION; /* declare functions that have forward references */ -void flexinit PROTO ((int, char **)); -void readin PROTO ((void)); -void set_up_initial_allocations PROTO ((void)); -static char *basename2 PROTO ((char *path, int should_strip_ext)); +void flexinit(int, char **); +void readin(void); +void set_up_initial_allocations(void); /* these globals are all defined and commented in flexdef.h */ @@ -57,6 +57,7 @@ int C_plus_plus, long_align, use_read, yytext_is_array, do_yywrap, int reentrant, bison_bridge_lval, bison_bridge_lloc; int yymore_used, reject, real_reject, continued_action, in_rule; int yymore_really_used, reject_really_used; +int trace_hex = 0; int datapos, dataline, linenum; FILE *skelfile = NULL; int skel_ind = 0; @@ -93,7 +94,7 @@ int *accsiz, *dhash, numas; int numsnpairs, jambase, jamstate; int lastccl, *cclmap, *ccllen, *cclng, cclreuse; int current_maxccls, current_max_ccl_tbl_size; -Char *ccltbl; +unsigned char *ccltbl; char nmstr[MAXLINE]; int sectnum, nummt, hshcol, dfaeql, numeps, eps2, num_reallocs; int tmpuses, totnst, peakpairs, numuniq, numdup, hshsave; @@ -105,7 +106,6 @@ int num_input_files; jmp_buf flex_main_jmp_buf; bool *rule_has_nl, *ccl_has_nl; int nlch = '\n'; -bool ansi_func_defs, ansi_func_protos; bool tablesext, tablesverify, gentables; char *tablesfilename=0,*tablesname=0; @@ -116,19 +116,9 @@ struct yytbl_writer tableswr; */ char *program_name = "flex"; -#ifndef SHORT_FILE_NAMES -static char *outfile_template = "lex.%s.%s"; -static char *backing_name = "lex.backup"; -static char *tablesfile_template = "lex.%s.tables"; -#else -static char *outfile_template = "lex%s.%s"; -static char *backing_name = "lex.bck"; -static char *tablesfile_template = "lex%s.tbl"; -#endif - -#ifdef MS_DOS -extern unsigned _stklen = 16384; -#endif +static const char outfile_template[] = "lex.%s.%s"; +static const char backing_name[] = "lex.backup"; +static const char tablesfile_template[] = "lex.%s.tables"; /* From scan.l */ extern FILE* yyout; @@ -137,18 +127,15 @@ static char outfile_path[MAXLINE]; static int outfile_created = 0; static char *skelname = NULL; static int _stdout_closed = 0; /* flag to prevent double-fclose() on stdout. */ -const char *escaped_qstart = "[[]]M4_YY_NOOP[M4_YY_NOOP[M4_YY_NOOP[[]]"; -const char *escaped_qend = "[[]]M4_YY_NOOP]M4_YY_NOOP]M4_YY_NOOP[[]]"; +const char *escaped_qstart = "]]M4_YY_NOOP[M4_YY_NOOP[M4_YY_NOOP[["; +const char *escaped_qend = "]]M4_YY_NOOP]M4_YY_NOOP]M4_YY_NOOP[["; /* For debugging. The max number of filters to apply to skeleton. */ static int preproc_level = 1000; -int flex_main PROTO ((int argc, char *argv[])); -int main PROTO ((int argc, char *argv[])); +int flex_main (int argc, char *argv[]); -int flex_main (argc, argv) - int argc; - char *argv[]; +int flex_main (int argc, char *argv[]) { int i, exit_status, child_status; @@ -208,9 +195,7 @@ int flex_main (argc, argv) } /* Wrapper around flex_main, so flex_main can be built as a library. */ -int main (argc, argv) - int argc; - char *argv[]; +int main (int argc, char *argv[]) { #if ENABLE_NLS #if HAVE_LOCALE_H @@ -226,7 +211,7 @@ int main (argc, argv) /* check_options - check user-specified options */ -void check_options () +void check_options (void) { int i; const char * m4 = NULL; @@ -291,7 +276,7 @@ void check_options () flexerror (_("Can't use -+ with -CF option")); if (C_plus_plus && yytext_is_array) { - warn (_("%array incompatible with -+ option")); + lwarn (_("%array incompatible with -+ option")); yytext_is_array = false; } @@ -325,14 +310,8 @@ void check_options () } } - if (!ansi_func_defs) - buf_m4_define( &m4defs_buf, "M4_YY_NO_ANSI_FUNC_DEFS", NULL); - - if (!ansi_func_protos) - buf_m4_define( &m4defs_buf, "M4_YY_NO_ANSI_FUNC_PROTOS", NULL); - - if (extra_type) - buf_m4_define( &m4defs_buf, "M4_EXTRA_TYPE_DEFS", extra_type); + if (extra_type) + buf_m4_define( &m4defs_buf, "M4_EXTRA_TYPE_DEFS", extra_type); if (!use_stdout) { FILE *prev_stdout; @@ -354,7 +333,7 @@ void check_options () prev_stdout = freopen (outfilename, "w+", stdout); if (prev_stdout == NULL) - lerrsf (_("could not create %s"), outfilename); + lerr (_("could not create %s"), outfilename); outfile_created = 1; } @@ -362,9 +341,46 @@ void check_options () /* Setup the filter chain. */ output_chain = filter_create_int(NULL, filter_tee_header, headerfilename); - if ( !(m4 = getenv("M4"))) - m4 = M4; - filter_create_ext(output_chain, m4, "-gP", NULL); + if ( !(m4 = getenv("M4"))) { + char *slash; + m4 = M4; + if ((slash = strrchr(M4, '/')) != NULL) { + m4 = slash+1; + /* break up $PATH */ + const char *path = getenv("PATH"); + if (!path) { + m4 = M4; + } else { + int m4_length = strlen(m4); + do { + size_t length = strlen(path); + struct stat sbuf; + + const char *endOfDir = strchr(path, ':'); + if (!endOfDir) + endOfDir = path+length; + + { + char *m4_path = calloc(endOfDir-path + 1 + m4_length + 1, 1); + + memcpy(m4_path, path, endOfDir-path); + m4_path[endOfDir-path] = '/'; + memcpy(m4_path + (endOfDir-path) + 1, m4, m4_length + 1); + if (stat(m4_path, &sbuf) == 0 && + (S_ISREG(sbuf.st_mode)) && sbuf.st_mode & S_IXUSR) { + m4 = m4_path; + break; + } + free(m4_path); + } + path = endOfDir+1; + } while (path[0]); + if (!path[0]) + m4 = M4; + } + } + } + filter_create_ext(output_chain, m4, "-gP", 0); filter_create_int(output_chain, filter_fix_linedirs, NULL); /* For debugging, only run the requested number of filters. */ @@ -389,26 +405,25 @@ void check_options () FILE *tablesout; struct yytbl_hdr hdr; char *pname = 0; - int nbytes = 0; + size_t nbytes = 0; buf_m4_define (&m4defs_buf, "M4_YY_TABLES_EXTERNAL", NULL); if (!tablesfilename) { nbytes = strlen (prefix) + strlen (tablesfile_template) + 2; - tablesfilename = pname = (char *) calloc (nbytes, 1); + tablesfilename = pname = calloc(nbytes, 1); snprintf (pname, nbytes, tablesfile_template, prefix); } if ((tablesout = fopen (tablesfilename, "w")) == NULL) - lerrsf (_("could not create %s"), tablesfilename); - if (pname) - free (pname); + lerr (_("could not create %s"), tablesfilename); + free(pname); tablesfilename = 0; yytbl_writer_init (&tableswr, tablesout); nbytes = strlen (prefix) + strlen ("tables") + 2; - tablesname = (char *) calloc (nbytes, 1); + tablesname = calloc(nbytes, 1); snprintf (tablesname, nbytes, "%stables", prefix); yytbl_hdr_init (&hdr, flex_version, tablesname); @@ -417,7 +432,7 @@ void check_options () } if (skelname && (skelfile = fopen (skelname, "r")) == NULL) - lerrsf (_("can't open skeleton file %s"), skelname); + lerr (_("can't open skeleton file %s"), skelname); if (reentrant) { buf_m4_define (&m4defs_buf, "M4_YY_REENTRANT", NULL); @@ -431,6 +446,8 @@ void check_options () if ( bison_bridge_lloc) buf_m4_define (&m4defs_buf, "", NULL); + if (strchr(prefix, '[') || strchr(prefix, ']')) + flexerror(_("Prefix cannot include '[' or ']'")); buf_m4_define(&m4defs_buf, "M4_YY_PREFIX", prefix); if (did_outfilename) @@ -451,7 +468,8 @@ void check_options () char *str, *fmt = "#define %s %d\n"; size_t strsz; - str = (char*)flex_alloc(strsz = strlen(fmt) + strlen(scname[i]) + NUMCHARLINES + 2); + strsz = strlen(fmt) + strlen(scname[i]) + NUMCHARLINES + 2; + str = malloc(strsz); if (!str) flexfatal(_("allocation of macro definition failed")); snprintf(str, strsz, fmt, scname[i], i - 1); @@ -473,7 +491,8 @@ void check_options () m4defs_buf.nelts = 0; /* memory leak here. */ /* Place a bogus line directive, it will be fixed in the filter. */ - outn("#line 0 \"M4_YY_OUTFILE_NAME\"\n"); + if (gen_line_dirs) + outn("#line 0 \"M4_YY_OUTFILE_NAME\"\n"); /* Dump the user defined preproc directives. */ if (userdef_buf.elts) @@ -489,9 +508,7 @@ void check_options () * This routine does not return. */ -void flexend (exit_status) - int exit_status; - +void flexend (int exit_status) { static int called_before = -1; /* prevent infinite recursion. */ int tblsiz; @@ -501,11 +518,11 @@ void flexend (exit_status) if (skelfile != NULL) { if (ferror (skelfile)) - lerrsf (_("input error reading skeleton file %s"), + lerr (_("input error reading skeleton file %s"), skelname); else if (fclose (skelfile)) - lerrsf (_("error closing skeleton file %s"), + lerr (_("error closing skeleton file %s"), skelname); } @@ -538,7 +555,6 @@ void flexend (exit_status) "EOB_ACT_END_OF_FILE", "EOB_ACT_LAST_MATCH", "FLEX_SCANNER", - "FLEX_STD", "REJECT", "YYFARGS0", "YYFARGS1", @@ -625,7 +641,7 @@ void flexend (exit_status) "yypop_buffer_state", "yyensure_buffer_stack", "yyalloc", - "yyconst", + "const", "yyextra", "yyfree", "yyget_debug", @@ -690,7 +706,7 @@ void flexend (exit_status) fprintf (header_out, "#endif /* %sHEADER_H */\n", prefix); if (ferror (header_out)) - lerrsf (_("error creating header file %s"), + lerr (_("error creating header file %s"), headerfilename); fflush (header_out); fclose (header_out); @@ -698,15 +714,15 @@ void flexend (exit_status) if (exit_status != 0 && outfile_created) { if (ferror (stdout)) - lerrsf (_("error writing output file %s"), + lerr (_("error writing output file %s"), outfilename); else if ((_stdout_closed = 1) && fclose (stdout)) - lerrsf (_("error closing output file %s"), + lerr (_("error closing output file %s"), outfilename); else if (unlink (outfilename)) - lerrsf (_("error deleting output file %s"), + lerr (_("error deleting output file %s"), outfilename); } @@ -724,11 +740,11 @@ void flexend (exit_status) _("Compressed tables always back up.\n")); if (ferror (backing_up_file)) - lerrsf (_("error writing backup file %s"), + lerr (_("error writing backup file %s"), backing_name); else if (fclose (backing_up_file)) - lerrsf (_("error closing backup file %s"), + lerr (_("error closing backup file %s"), backing_name); } @@ -925,9 +941,7 @@ void flexend (exit_status) /* flexinit - initialize flex */ -void flexinit (argc, argv) - int argc; - char **argv; +void flexinit (int argc, char **argv) { int i, sawcmpflag, rv, optind; char *arg; @@ -952,7 +966,6 @@ void flexinit (argc, argv) tablesext = tablesverify = false; gentables = true; tablesfilename = tablesname = NULL; - ansi_func_defs = ansi_func_protos = true; sawcmpflag = false; @@ -981,9 +994,9 @@ void flexinit (argc, argv) flex_init_regex(); /* Enable C++ if program name ends with '+'. */ - program_name = basename2 (argv[0], 0); + program_name = basename (argv[0]); - if (program_name[0] != '\0' && + if (program_name != NULL && program_name[strlen (program_name) - 1] == '+') C_plus_plus = true; @@ -1058,9 +1071,9 @@ void flexinit (argc, argv) break; default: - lerrif (_ + lerr (_ ("unknown -C option '%c'"), - (int) arg[i]); + arg[i]); break; } break; @@ -1104,7 +1117,7 @@ void flexinit (argc, argv) break; case OPT_PREPROC_LEVEL: - preproc_level = strtol(arg,NULL,0); + preproc_level = (int) strtol(arg,NULL,0); break; case OPT_MAIN: @@ -1267,7 +1280,7 @@ void flexinit (argc, argv) } else { buf_strnappend (&userdef_buf, arg, - def - arg); + (int) (def - arg)); buf_strappend (&userdef_buf, " "); buf_strappend (&userdef_buf, def + 1); @@ -1329,14 +1342,6 @@ void flexinit (argc, argv) reject_really_used = false; break; - case OPT_NO_ANSI_FUNC_DEFS: - ansi_func_defs = false; - break; - - case OPT_NO_ANSI_FUNC_PROTOS: - ansi_func_protos = false; - break; - case OPT_NO_YY_PUSH_STATE: //buf_strdefine (&userdef_buf, "YY_NO_PUSH_STATE", "1"); buf_m4_define( &m4defs_buf, "M4_YY_NO_PUSH_STATE",0); @@ -1421,7 +1426,12 @@ void flexinit (argc, argv) //buf_strdefine (&userdef_buf, "YY_NO_SET_LLOC", "1"); buf_m4_define( &m4defs_buf, "M4_YY_NO_SET_LLOC",0); break; - + case OPT_HEX: + trace_hex = 1; + break; + case OPT_NO_SECT3_ESCAPE: + no_section3_escape = true; + break; } /* switch */ } /* while scanopt() */ @@ -1454,13 +1464,13 @@ void flexinit (argc, argv) /* readin - read in the rules section of the input file(s) */ -void readin () +void readin (void) { static char yy_stdinit[] = "FILE *yyin = stdin, *yyout = stdout;"; static char yy_nostdinit[] = - "FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0;"; + "FILE *yyin = NULL, *yyout = NULL;"; - line_directive_out ((FILE *) 0, 1); + line_directive_out(NULL, 1); if (yyparse ()) { pinpoint_message (_("fatal parse error")); @@ -1494,7 +1504,7 @@ void readin () if (backing_up_report) { backing_up_file = fopen (backing_name, "w"); if (backing_up_file == NULL) - lerrsf (_ + lerr (_ ("could not create backing-up info file %s"), backing_name); } @@ -1577,9 +1587,9 @@ void readin () if (!do_yywrap) { if (!C_plus_plus) { if (reentrant) - outn ("\n#define yywrap(yyscanner) 1"); + out_str ("\n#define %swrap(yyscanner) (/*CONSTCOND*/1)\n", prefix); else - outn ("\n#define yywrap() 1"); + out_str ("\n#define %swrap() (/*CONSTCOND*/1)\n", prefix); } outn ("#define YY_SKIP_YYWRAP"); } @@ -1588,10 +1598,7 @@ void readin () outn ("\n#define FLEX_DEBUG"); OUT_BEGIN_CODE (); - if (csize == 256) - outn ("typedef unsigned char YY_CHAR;"); - else - outn ("typedef char YY_CHAR;"); + outn ("typedef flex_uint8_t YY_CHAR;"); OUT_END_CODE (); if (C_plus_plus) { @@ -1635,7 +1642,7 @@ void readin () OUT_BEGIN_CODE (); if (fullspd) - outn ("typedef yyconst struct yy_trans_info *yy_state_type;"); + outn ("typedef const struct yy_trans_info *yy_state_type;"); else if (!C_plus_plus) outn ("typedef int yy_state_type;"); OUT_END_CODE (); @@ -1684,6 +1691,10 @@ void readin () } else { outn ("extern char *yytext;"); + + outn("#ifdef yytext_ptr"); + outn("#undef yytext_ptr"); + outn("#endif"); outn ("#define yytext_ptr yytext"); } } @@ -1709,7 +1720,7 @@ void readin () /* set_up_initial_allocations - allocate memory for internal tables */ -void set_up_initial_allocations () +void set_up_initial_allocations (void) { maximum_mns = (long_align ? MAXIMUM_MNS_LONG : MAXIMUM_MNS); current_mns = INITIAL_MNS; @@ -1763,31 +1774,11 @@ void set_up_initial_allocations () dss = allocate_int_ptr_array (current_max_dfas); dfaacc = allocate_dfaacc_union (current_max_dfas); - nultrans = (int *) 0; + nultrans = NULL; } -/* extracts basename from path, optionally stripping the extension "\.*" - * (same concept as /bin/sh `basename`, but different handling of extension). */ -static char *basename2 (path, strip_ext) - char *path; - int strip_ext; /* boolean */ -{ - char *b, *e = 0; - - b = path; - for (b = path; *path; path++) - if (*path == '/') - b = path + 1; - else if (*path == '.') - e = path; - - if (strip_ext && e && e > b) - *e = '\0'; - return b; -} - -void usage () +void usage (void) { FILE *f = stdout; @@ -1819,6 +1810,7 @@ void usage () " -T, --trace %s should run in trace mode\n" " -w, --nowarn do not generate warnings\n" " -v, --verbose write summary of scanner statistics to stdout\n" + " --hex use hexadecimal numbers instead of octal in debug outputs\n" "\n" "Files:\n" " -o, --outfile=FILE specify output filename\n" " -S, --skel=FILE specify skeleton file\n" @@ -1844,8 +1836,6 @@ void usage () " --bison-bridge scanner for bison pure parser.\n" " --bison-locations include yylloc support.\n" " --stdinit initialize yyin/yyout to stdin/stdout\n" - " --noansi-definitions old-style function definitions\n" - " --noansi-prototypes empty parameter list in prototypes\n" " --nounistd do not include \n" " --noFUNCTION do not generate a particular FUNCTION\n" "\n" "Miscellaneous:\n" diff --git a/contrib/flex/misc.c b/contrib/flex/src/misc.c similarity index 71% rename from contrib/flex/misc.c rename to contrib/flex/src/misc.c index f9cb3775e7ad..ef27833c3ea7 100644 --- a/contrib/flex/misc.c +++ b/contrib/flex/src/misc.c @@ -30,7 +30,6 @@ /* IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED */ /* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR */ /* PURPOSE. */ - #include "flexdef.h" #include "tables.h" @@ -60,14 +59,15 @@ static void sko_push(bool dc) { if(!sko_stack){ sko_sz = 1; - sko_stack = (struct sko_state*)flex_alloc(sizeof(struct sko_state)*sko_sz); + sko_stack = malloc(sizeof(struct sko_state) * (size_t) sko_sz); if (!sko_stack) flexfatal(_("allocation of sko_stack failed")); sko_len = 0; } if(sko_len >= sko_sz){ sko_sz *= 2; - sko_stack = (struct sko_state*)flex_realloc(sko_stack,sizeof(struct sko_state)*sko_sz); + sko_stack = realloc(sko_stack, + sizeof(struct sko_state) * (size_t) sko_sz); } /* initialize to zero and push */ @@ -90,9 +90,7 @@ static void sko_pop(bool* dc) } /* Append "#define defname value\n" to the running buffer. */ -void action_define (defname, value) - const char *defname; - int value; +void action_define (const char *defname, int value) { char buf[MAXLINE]; char *cpy; @@ -108,39 +106,14 @@ void action_define (defname, value) add_action (buf); /* track #defines so we can undef them when we're done. */ - cpy = copy_string (defname); + cpy = xstrdup(defname); buf_append (&defs_buf, &cpy, 1); } - -#ifdef notdef -/** Append "m4_define([[defname]],[[value]])m4_dnl\n" to the running buffer. - * @param defname The macro name. - * @param value The macro value, can be NULL, which is the same as the empty string. - */ -void action_m4_define (const char *defname, const char * value) -{ - char buf[MAXLINE]; - - flexfatal ("DO NOT USE THIS FUNCTION!"); - - if ((int) strlen (defname) > MAXLINE / 2) { - format_pinpoint_message (_ - ("name \"%s\" ridiculously long"), - defname); - return; - } - - snprintf (buf, sizeof(buf), "m4_define([[%s]],[[%s]])m4_dnl\n", defname, value?value:""); - add_action (buf); -} -#endif - /* Append "new_text" to the running buffer. */ -void add_action (new_text) - const char *new_text; +void add_action (const char *new_text) { - int len = strlen (new_text); + int len = (int) strlen (new_text); while (len + action_index >= action_size - 10 /* slop */ ) { int new_size = action_size * 2; @@ -166,14 +139,17 @@ void add_action (new_text) /* allocate_array - allocate memory for an integer array of the given size */ -void *allocate_array (size, element_size) - int size; - size_t element_size; +void *allocate_array (int size, size_t element_size) { void *mem; - size_t num_bytes = element_size * size; - - mem = flex_alloc (num_bytes); +#if HAVE_REALLOCARRAY + /* reallocarray has built-in overflow detection */ + mem = reallocarray(NULL, (size_t) size, element_size); +#else + size_t num_bytes = (size_t) size * element_size; + mem = (size && SIZE_MAX / (size_t) size < element_size) ? NULL : + malloc(num_bytes); +#endif if (!mem) flexfatal (_ ("memory allocation failed in allocate_array()")); @@ -184,11 +160,10 @@ void *allocate_array (size, element_size) /* all_lower - true if a string is all lower-case */ -int all_lower (str) - char *str; +int all_lower (char *str) { while (*str) { - if (!isascii ((Char) * str) || !islower ((Char) * str)) + if (!isascii ((unsigned char) * str) || !islower ((unsigned char) * str)) return 0; ++str; } @@ -199,11 +174,10 @@ int all_lower (str) /* all_upper - true if a string is all upper-case */ -int all_upper (str) - char *str; +int all_upper (char *str) { while (*str) { - if (!isascii ((Char) * str) || !isupper ((Char) * str)) + if (!isascii ((unsigned char) * str) || !isupper ((unsigned char) * str)) return 0; ++str; } @@ -225,15 +199,14 @@ int intcmp (const void *a, const void *b) * and exits. */ -void check_char (c) - int c; +void check_char (int c) { if (c >= CSIZE) - lerrsf (_("bad character '%s' detected in check_char()"), + lerr (_("bad character '%s' detected in check_char()"), readable_form (c)); if (c >= csize) - lerrsf (_ + lerr (_ ("scanner requires -8 flag to use the character %s"), readable_form (c)); } @@ -242,57 +215,20 @@ void check_char (c) /* clower - replace upper-case letter to lower-case */ -Char clower (c) - int c; +unsigned char clower (int c) { - return (Char) ((isascii (c) && isupper (c)) ? tolower (c) : c); + return (unsigned char) ((isascii (c) && isupper (c)) ? tolower (c) : c); } -/* copy_string - returns a dynamically allocated copy of a string */ - -char *copy_string (str) - const char *str; +char *xstrdup(const char *s) { - const char *c1; - char *c2; - char *copy; - unsigned int size; + char *s2; - /* find length */ - for (c1 = str; *c1; ++c1) ; + if ((s2 = strdup(s)) == NULL) + flexfatal (_("memory allocation failure in xstrdup()")); - size = (c1 - str + 1) * sizeof (char); - - copy = (char *) flex_alloc (size); - - if (copy == NULL) - flexfatal (_("dynamic memory failure in copy_string()")); - - for (c2 = copy; (*c2++ = *str++) != 0;) ; - - return copy; -} - - -/* copy_unsigned_string - - * returns a dynamically allocated copy of a (potentially) unsigned string - */ - -Char *copy_unsigned_string (str) - Char *str; -{ - Char *c; - Char *copy; - - /* find length */ - for (c = str; *c; ++c) ; - - copy = allocate_Character_array (c - str + 1); - - for (c = copy; (*c++ = *str++) != 0;) ; - - return copy; + return s2; } @@ -300,19 +236,19 @@ Char *copy_unsigned_string (str) int cclcmp (const void *a, const void *b) { - if (!*(const Char *) a) + if (!*(const unsigned char *) a) return 1; else - if (!*(const Char *) b) + if (!*(const unsigned char *) b) return - 1; else - return *(const Char *) a - *(const Char *) b; + return *(const unsigned char *) a - *(const unsigned char *) b; } /* dataend - finish up a block of data declarations */ -void dataend () +void dataend (void) { /* short circuit any output */ if (gentables) { @@ -330,7 +266,7 @@ void dataend () /* dataflush - flush generated data statements */ -void dataflush () +void dataflush (void) { /* short circuit any output */ if (!gentables) @@ -353,8 +289,7 @@ void dataflush () /* flexerror - report an error message and terminate */ -void flexerror (msg) - const char *msg; +void flexerror (const char *msg) { fprintf (stderr, "%s: %s\n", program_name, msg); flexend (1); @@ -363,8 +298,7 @@ void flexerror (msg) /* flexfatal - report a fatal error message and terminate */ -void flexfatal (msg) - const char *msg; +void flexfatal (const char *msg) { fprintf (stderr, _("%s: fatal internal error, %s\n"), program_name, msg); @@ -372,67 +306,41 @@ void flexfatal (msg) } -/* htoi - convert a hexadecimal digit string to an integer value */ +/* lerr - report an error message */ -int htoi (str) - Char str[]; -{ - unsigned int result; - - (void) sscanf ((char *) str, "%x", &result); - - return result; -} - - -/* lerrif - report an error message formatted with one integer argument */ - -void lerrif (msg, arg) - const char *msg; - int arg; +void lerr (const char *msg, ...) { char errmsg[MAXLINE]; + va_list args; - snprintf (errmsg, sizeof(errmsg), msg, arg); + va_start(args, msg); + vsnprintf (errmsg, sizeof(errmsg), msg, args); + va_end(args); flexerror (errmsg); } -/* lerrsf - report an error message formatted with one string argument */ +/* lerr_fatal - as lerr, but call flexfatal */ -void lerrsf (msg, arg) - const char *msg, arg[]; +void lerr_fatal (const char *msg, ...) { char errmsg[MAXLINE]; + va_list args; + va_start(args, msg); - snprintf (errmsg, sizeof(errmsg)-1, msg, arg); - errmsg[sizeof(errmsg)-1] = 0; /* ensure NULL termination */ - flexerror (errmsg); -} - - -/* lerrsf_fatal - as lerrsf, but call flexfatal */ - -void lerrsf_fatal (msg, arg) - const char *msg, arg[]; -{ - char errmsg[MAXLINE]; - - snprintf (errmsg, sizeof(errmsg)-1, msg, arg); - errmsg[sizeof(errmsg)-1] = 0; /* ensure NULL termination */ + vsnprintf (errmsg, sizeof(errmsg), msg, args); + va_end(args); flexfatal (errmsg); } /* line_directive_out - spit out a "#line" statement */ -void line_directive_out (output_file, do_infile) - FILE *output_file; - int do_infile; +void line_directive_out (FILE *output_file, int do_infile) { char directive[MAXLINE], filename[MAXLINE]; char *s1, *s2, *s3; - static const char *line_fmt = "#line %d \"%s\"\n"; + static const char line_fmt[] = "#line %d \"%s\"\n"; if (!gen_line_dirs) return; @@ -446,8 +354,8 @@ void line_directive_out (output_file, do_infile) s3 = &filename[sizeof (filename) - 2]; while (s2 < s3 && *s1) { - if (*s1 == '\\') - /* Escape the '\' */ + if (*s1 == '\\' || *s1 == '"') + /* Escape the '\' or '"' */ *s2++ = '\\'; *s2++ = *s1++; @@ -476,7 +384,7 @@ void line_directive_out (output_file, do_infile) * representing where the user's section 1 definitions end * and the prolog begins */ -void mark_defs1 () +void mark_defs1 (void) { defs1_offset = 0; action_array[action_index++] = '\0'; @@ -488,7 +396,7 @@ void mark_defs1 () /* mark_prolog - mark the current position in the action array as * representing the end of the action prolog */ -void mark_prolog () +void mark_prolog (void) { action_array[action_index++] = '\0'; action_offset = action_index; @@ -500,8 +408,7 @@ void mark_prolog () * * Generates a data statement initializing the current 2-D array to "value". */ -void mk2data (value) - int value; +void mk2data (int value) { /* short circuit any output */ if (!gentables) @@ -530,8 +437,7 @@ void mk2data (value) * Generates a data statement initializing the current array element to * "value". */ -void mkdata (value) - int value; +void mkdata (int value) { /* short circuit any output */ if (!gentables) @@ -556,8 +462,7 @@ void mkdata (value) /* myctoi - return the integer represented by a string of digits */ -int myctoi (array) - const char *array; +int myctoi (const char *array) { int val = 0; @@ -569,10 +474,9 @@ int myctoi (array) /* myesc - return character corresponding to escape sequence */ -Char myesc (array) - Char array[]; +unsigned char myesc (unsigned char array[]) { - Char c, esc_char; + unsigned char c, esc_char; switch (array[1]) { case 'b': @@ -585,19 +489,10 @@ Char myesc (array) return '\r'; case 't': return '\t'; - -#if defined (__STDC__) case 'a': return '\a'; case 'v': return '\v'; -#else - case 'a': - return '\007'; - case 'v': - return '\013'; -#endif - case '0': case '1': case '2': @@ -609,18 +504,15 @@ Char myesc (array) { /* \ */ int sptr = 1; - while (isascii (array[sptr]) && - isdigit (array[sptr])) - /* Don't increment inside loop control - * because if isdigit() is a macro it might - * expand into multiple increments ... - */ + while (sptr <= 3 && + array[sptr] >= '0' && array[sptr] <= '7') { ++sptr; + } c = array[sptr]; array[sptr] = '\0'; - esc_char = otoi (array + 1); + esc_char = (unsigned char) strtoul (array + 1, NULL, 8); array[sptr] = c; @@ -631,18 +523,18 @@ Char myesc (array) { /* \x */ int sptr = 2; - while (isascii (array[sptr]) && - isxdigit (array[sptr])) + while (sptr <= 3 && isxdigit (array[sptr])) { /* Don't increment inside loop control - * because if isdigit() is a macro it might + * because if isxdigit() is a macro it might * expand into multiple increments ... */ ++sptr; + } c = array[sptr]; array[sptr] = '\0'; - esc_char = htoi (array + 2); + esc_char = (unsigned char) strtoul (array + 2, NULL, 16); array[sptr] = c; @@ -655,76 +547,51 @@ Char myesc (array) } -/* otoi - convert an octal digit string to an integer value */ - -int otoi (str) - Char str[]; -{ - unsigned int result; - - (void) sscanf ((char *) str, "%o", &result); - return result; -} - - /* out - various flavors of outputing a (possibly formatted) string for the * generated scanner, keeping track of the line count. */ -void out (str) - const char *str; +void out (const char *str) { fputs (str, stdout); } -void out_dec (fmt, n) - const char *fmt; - int n; +void out_dec (const char *fmt, int n) { fprintf (stdout, fmt, n); } -void out_dec2 (fmt, n1, n2) - const char *fmt; - int n1, n2; +void out_dec2 (const char *fmt, int n1, int n2) { fprintf (stdout, fmt, n1, n2); } -void out_hex (fmt, x) - const char *fmt; - unsigned int x; +void out_hex (const char *fmt, unsigned int x) { fprintf (stdout, fmt, x); } -void out_str (fmt, str) - const char *fmt, str[]; +void out_str (const char *fmt, const char str[]) { fprintf (stdout,fmt, str); } -void out_str3 (fmt, s1, s2, s3) - const char *fmt, s1[], s2[], s3[]; +void out_str3 (const char *fmt, const char s1[], const char s2[], const char s3[]) { fprintf (stdout,fmt, s1, s2, s3); } -void out_str_dec (fmt, str, n) - const char *fmt, str[]; - int n; +void out_str_dec (const char *fmt, const char str[], int n) { fprintf (stdout,fmt, str, n); } -void outc (c) - int c; +void outc (int c) { fputc (c, stdout); } -void outn (str) - const char *str; +void outn (const char *str) { fputs (str,stdout); fputc('\n',stdout); @@ -733,7 +600,6 @@ void outn (str) /** Print "m4_define( [[def]], [[val]])m4_dnl\n". * @param def The m4 symbol to define. * @param val The definition; may be NULL. - * @return buf */ void out_m4_define (const char* def, const char* val) { @@ -742,15 +608,14 @@ void out_m4_define (const char* def, const char* val) } -/* readable_form - return the human-readable form of a character +/* readable_form - return the the human-readable form of a character * * The returned string is in static storage. */ -char *readable_form (c) - int c; +char *readable_form (int c) { - static char rform[10]; + static char rform[20]; if ((c >= 0 && c < 32) || c >= 127) { switch (c) { @@ -764,16 +629,15 @@ char *readable_form (c) return "\\r"; case '\t': return "\\t"; - -#if defined (__STDC__) case '\a': return "\\a"; case '\v': return "\\v"; -#endif - default: - snprintf (rform, sizeof(rform), "\\%.3o", (unsigned int) c); + if(trace_hex) + snprintf (rform, sizeof(rform), "\\x%.2x", (unsigned int) c); + else + snprintf (rform, sizeof(rform), "\\%.3o", (unsigned int) c); return rform; } } @@ -782,7 +646,7 @@ char *readable_form (c) return "' '"; else { - rform[0] = c; + rform[0] = (char) c; rform[1] = '\0'; return rform; @@ -792,15 +656,17 @@ char *readable_form (c) /* reallocate_array - increase the size of a dynamic array */ -void *reallocate_array (array, size, element_size) - void *array; - int size; - size_t element_size; +void *reallocate_array (void *array, int size, size_t element_size) { void *new_array; - size_t num_bytes = element_size * size; - - new_array = flex_realloc (array, num_bytes); +#if HAVE_REALLOCARRAY + /* reallocarray has built-in overflow detection */ + new_array = reallocarray(array, (size_t) size, element_size); +#else + size_t num_bytes = (size_t) size * element_size; + new_array = (size && SIZE_MAX / (size_t) size < element_size) ? NULL : + realloc(array, num_bytes); +#endif if (!new_array) flexfatal (_("attempt to increase array size failed")); @@ -814,7 +680,7 @@ void *reallocate_array (array, size, element_size) * Copies skelfile or skel array to stdout until a line beginning with * "%%" or EOF is found. */ -void skelout () +void skelout (void) { char buf_storage[MAXLINE]; char *buf = buf_storage; @@ -925,9 +791,6 @@ void skelout () /* %e end linkage-only code. */ OUT_END_CODE (); } - else if (buf[1] == '#') { - /* %# a comment in the skel. ignore. */ - } else { flexfatal (_("bad line in skeleton file")); } @@ -945,8 +808,7 @@ void skelout () * element_n. Formats the output with spaces and carriage returns. */ -void transition_struct_out (element_v, element_n) - int element_v, element_n; +void transition_struct_out (int element_v, int element_n) { /* short circuit any output */ @@ -970,12 +832,14 @@ void transition_struct_out (element_v, element_n) /* The following is only needed when building flex's parser using certain * broken versions of bison. + * + * XXX: this is should go soon */ -void *yy_flex_xmalloc (size) - int size; +void *yy_flex_xmalloc (int size) { - void *result = flex_alloc ((size_t) size); + void *result; + result = malloc((size_t) size); if (!result) flexfatal (_ ("memory allocation failed in yy_flex_xmalloc()")); @@ -984,29 +848,10 @@ void *yy_flex_xmalloc (size) } -/* zero_out - set a region of memory to 0 - * - * Sets region_ptr[0] through region_ptr[size_in_bytes - 1] to zero. - */ - -void zero_out (region_ptr, size_in_bytes) - char *region_ptr; - size_t size_in_bytes; -{ - char *rp, *rp_end; - - rp = region_ptr; - rp_end = region_ptr + size_in_bytes; - - while (rp < rp_end) - *rp++ = 0; -} - /* Remove all '\n' and '\r' characters, if any, from the end of str. * str can be any null-terminated string, or NULL. * returns str. */ -char *chomp (str) - char *str; +char *chomp (char *str) { char *p = str; diff --git a/contrib/flex/mkskel.sh b/contrib/flex/src/mkskel.sh similarity index 64% rename from contrib/flex/mkskel.sh rename to contrib/flex/src/mkskel.sh index 02c397a81c96..1aa59e1a0e6b 100755 --- a/contrib/flex/mkskel.sh +++ b/contrib/flex/src/mkskel.sh @@ -21,17 +21,34 @@ # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR # PURPOSE. -cat <&2 + exit 1 +fi +echo '/* File created from flex.skl via mkskel.sh */ #include "flexdef.h" -const char *skel[] = { -! +const char *skel[] = {' +srcdir=$1 +m4=$2 +VERSION=$3 +case $VERSION in + *[!0-9.]*) echo 'Invalid version number' >&2; exit 1;; +esac +IFS=. +set $VERSION +sed 's/4_/a4_/g +s/m4preproc_/m4_/g +' "$srcdir/flex.skl" | +"$m4" -P -I "$srcdir" "-DFLEX_MAJOR_VERSION=$1" \ + "-DFLEX_MINOR_VERSION=$2" \ + "-DFLEX_SUBMINOR_VERSION=$3" | +sed '/^%#/d +s/m4_/m4preproc_/g +s/a4_/4_/g +s/[\\"]/\\&/g +s/.*/ "&",/' -sed 's/\\/&&/g' | sed 's/"/\\"/g' | sed 's/.*/ "&",/' - -cat < 0) { + if (rule_has_nl[num_rules]) { + snprintf (action_text, sizeof(action_text), + "YY_LINENO_REWIND_TO(%s + %d);\n", scanner_bp, headcnt); + add_action (action_text); + } snprintf (action_text, sizeof(action_text), "%s = %s + %d;\n", scanner_cp, scanner_bp, headcnt); add_action (action_text); } else { + if (rule_has_nl[num_rules]) { + snprintf (action_text, sizeof(action_text), + "YY_LINENO_REWIND_TO(yy_cp - %d);\n", trailcnt); + add_action (action_text); + } + snprintf (action_text, sizeof(action_text), "%s -= %d;\n", scanner_cp, trailcnt); add_action (action_text); @@ -281,7 +286,8 @@ void finish_rule (mach, variable_trail_rule, headcnt, trailcnt, if (!continued_action) add_action ("YY_RULE_SETUP\n"); - line_directive_out ((FILE *) 0, 1); + line_directive_out(NULL, 1); + add_action("[["); } @@ -301,8 +307,7 @@ void finish_rule (mach, variable_trail_rule, headcnt, trailcnt, * FIRST is set to new by the operation. last is unmolested. */ -int link_machines (first, last) - int first, last; +int link_machines (int first, int last) { if (first == NIL) return last; @@ -328,8 +333,7 @@ int link_machines (first, last) * The "beginning" states are the epsilon closure of the first state */ -void mark_beginning_as_normal (mach) - int mach; +void mark_beginning_as_normal (int mach) { switch (state_type[mach]) { case STATE_NORMAL: @@ -370,8 +374,7 @@ void mark_beginning_as_normal (mach) * more mkbranch's. Compare with mkor() */ -int mkbranch (first, second) - int first, second; +int mkbranch (int first, int second) { int eps; @@ -398,8 +401,7 @@ int mkbranch (first, second) * new - a new state which matches the closure of "state" */ -int mkclos (state) - int state; +int mkclos (int state) { return mkopt (mkposcl (state)); } @@ -419,8 +421,7 @@ int mkclos (state) * 2. mach is destroyed by the call */ -int mkopt (mach) - int mach; +int mkopt (int mach) { int eps; @@ -456,8 +457,7 @@ int mkopt (mach) * the number of epsilon states needed */ -int mkor (first, second) - int first, second; +int mkor (int first, int second) { int eps, orend; @@ -512,8 +512,7 @@ int mkor (first, second) * new - a machine matching the positive closure of "state" */ -int mkposcl (state) - int state; +int mkposcl (int state) { int eps; @@ -542,8 +541,7 @@ int mkposcl (state) * if "ub" is INFINITE_REPEAT then "new" matches "lb" or more occurrences of "mach" */ -int mkrep (mach, lb, ub) - int mach, lb, ub; +int mkrep (int mach, int lb, int ub) { int base_mach, tail, copy, i; @@ -589,12 +587,11 @@ int mkrep (mach, lb, ub) * that it admittedly is) */ -int mkstate (sym) - int sym; +int mkstate (int sym) { if (++lastnfa >= current_mns) { if ((current_mns += MNS_INCREMENT) >= maximum_mns) - lerrif (_ + lerr(_ ("input rules are too complicated (>= %d NFA states)"), current_mns); @@ -666,8 +663,7 @@ current_mns); * stateto - the state to which the transition is to be made */ -void mkxtion (statefrom, stateto) - int statefrom, stateto; +void mkxtion (int statefrom, int stateto) { if (trans1[statefrom] == NO_TRANSITION) trans1[statefrom] = stateto; @@ -684,7 +680,7 @@ void mkxtion (statefrom, stateto) /* new_rule - initialize for a new rule */ -void new_rule () +void new_rule (void) { if (++num_rules >= current_max_rules) { ++num_reallocs; @@ -700,7 +696,7 @@ void new_rule () } if (num_rules > MAX_RULE) - lerrif (_("too many rules (> %d)!"), MAX_RULE); + lerr (_("too many rules (> %d)!"), MAX_RULE); rule_linenum[num_rules] = linenum; rule_useful[num_rules] = false; diff --git a/contrib/flex/options.c b/contrib/flex/src/options.c similarity index 98% rename from contrib/flex/options.c rename to contrib/flex/src/options.c index c6731738a19b..366bc2e566c6 100644 --- a/contrib/flex/options.c +++ b/contrib/flex/src/options.c @@ -117,6 +117,8 @@ optspec_t flexopts[] = { , {"--help", OPT_HELP, 0} , /* Produce this help message. */ + {"--hex", OPT_HEX, 0} + , /* Use hexadecimals in debug/trace outputs */ {"-I", OPT_INTERACTIVE, 0} , {"--interactive", OPT_INTERACTIVE, 0} @@ -211,10 +213,6 @@ optspec_t flexopts[] = { , {"--nowarn", OPT_NO_WARN, 0} , /* Suppress warning messages. */ - {"--noansi-definitions", OPT_NO_ANSI_FUNC_DEFS, 0} - , - {"--noansi-prototypes", OPT_NO_ANSI_FUNC_PROTOS, 0} - , {"--yyclass=NAME", OPT_YYCLASS, 0} , {"--yylineno", OPT_YYLINENO, 0} @@ -273,7 +271,8 @@ optspec_t flexopts[] = { , {"--noyyset_lloc", OPT_NO_YYSET_LLOC, 0} , - + {"--unsafe-no-m4-sect3-escape", OPT_NO_SECT3_ESCAPE, 0} + , {0, 0, 0} /* required final NULL entry. */ }; diff --git a/contrib/flex/options.h b/contrib/flex/src/options.h similarity index 97% rename from contrib/flex/options.h rename to contrib/flex/src/options.h index 1f3925b9e94d..5b51c23816a1 100644 --- a/contrib/flex/options.h +++ b/contrib/flex/src/options.h @@ -60,6 +60,7 @@ enum flexopt_flag_t { OPT_FULL, OPT_HEADER_FILE, OPT_HELP, + OPT_HEX, OPT_INTERACTIVE, OPT_LEX_COMPAT, OPT_POSIX_COMPAT, @@ -67,8 +68,6 @@ enum flexopt_flag_t { OPT_META_ECS, OPT_NEVER_INTERACTIVE, OPT_NO_ALIGN, - OPT_NO_ANSI_FUNC_DEFS, - OPT_NO_ANSI_FUNC_PROTOS, OPT_NO_DEBUG, OPT_NO_DEFAULT, OPT_NO_ECS, @@ -126,7 +125,8 @@ enum flexopt_flag_t { OPT_YYCLASS, OPT_YYLINENO, OPT_YYMORE, - OPT_YYWRAP + OPT_YYWRAP, + OPT_NO_SECT3_ESCAPE, }; #endif diff --git a/contrib/flex/parse.y b/contrib/flex/src/parse.y similarity index 93% rename from contrib/flex/parse.y rename to contrib/flex/src/parse.y index d0cc706889cd..5a0732066874 100644 --- a/contrib/flex/parse.y +++ b/contrib/flex/src/parse.y @@ -1,8 +1,8 @@ /* parse.y - parser for flex input */ %token CHAR NUMBER SECTEND SCDECL XSCDECL NAME PREVCCL EOF_OP -%token OPTION_OP OPT_OUTFILE OPT_PREFIX OPT_YYCLASS OPT_HEADER OPT_EXTRA_TYPE -%token OPT_TABLES +%token TOK_OPTION TOK_OUTFILE TOK_PREFIX TOK_YYCLASS TOK_HEADER_FILE TOK_EXTRA_TYPE +%token TOK_TABLES_FILE %token CCE_ALNUM CCE_ALPHA CCE_BLANK CCE_CNTRL CCE_DIGIT CCE_GRAPH %token CCE_LOWER CCE_PRINT CCE_PUNCT CCE_SPACE CCE_UPPER CCE_XDIGIT @@ -80,7 +80,7 @@ int previous_continued_action; /* whether the previous rule's action was '|' */ do{ \ char fw3_msg[MAXLINE];\ snprintf( fw3_msg, MAXLINE,(fmt), (a1), (a2) );\ - warn( fw3_msg );\ + lwarn( fw3_msg );\ }while(0) /* Expand a POSIX character class expression. */ @@ -140,7 +140,7 @@ goal : initlex sect1 sect1end sect2 initforrule else add_action( "ECHO" ); - add_action( ";\n\tYY_BREAK\n" ); + add_action( ";\n\tYY_BREAK]]\n" ); } ; @@ -184,28 +184,30 @@ namelist1 : namelist1 NAME { synerr( _("bad start condition list") ); } ; -options : OPTION_OP optionlist +options : TOK_OPTION optionlist ; optionlist : optionlist option | ; -option : OPT_OUTFILE '=' NAME +option : TOK_OUTFILE '=' NAME { - outfilename = copy_string( nmstr ); + outfilename = xstrdup(nmstr); did_outfilename = 1; } - | OPT_EXTRA_TYPE '=' NAME - { extra_type = copy_string( nmstr ); } - | OPT_PREFIX '=' NAME - { prefix = copy_string( nmstr ); } - | OPT_YYCLASS '=' NAME - { yyclass = copy_string( nmstr ); } - | OPT_HEADER '=' NAME - { headerfilename = copy_string( nmstr ); } - | OPT_TABLES '=' NAME - { tablesext = true; tablesfilename = copy_string( nmstr ); } + | TOK_EXTRA_TYPE '=' NAME + { extra_type = xstrdup(nmstr); } + | TOK_PREFIX '=' NAME + { prefix = xstrdup(nmstr); + if (strchr(prefix, '[') || strchr(prefix, ']')) + flexerror(_("Prefix must not contain [ or ]")); } + | TOK_YYCLASS '=' NAME + { yyclass = xstrdup(nmstr); } + | TOK_HEADER_FILE '=' NAME + { headerfilename = xstrdup(nmstr); } + | TOK_TABLES_FILE '=' NAME + { tablesext = true; tablesfilename = xstrdup(nmstr); } ; sect2 : sect2 scon initforrule flexrule '\n' @@ -303,7 +305,7 @@ flexrule : '^' rule scon_stk[++scon_stk_ptr] = i; if ( scon_stk_ptr == 0 ) - warn( + lwarn( "all start conditions already have <> rules" ); else @@ -398,7 +400,7 @@ rule : re2 re * erroneously. */ if ( ! varlength || headcnt != 0 ) - warn( + lwarn( "trailing context made variable due to preceding '|' action" ); /* Mark as variable. */ @@ -453,7 +455,7 @@ rule : re2 re /* See the comment in the rule for "re2 re" * above. */ - warn( + lwarn( "trailing context made variable due to preceding '|' action" ); varlength = true; @@ -725,7 +727,7 @@ singleton : singleton '*' { /* Sort characters for fast searching. */ - qsort( ccltbl + cclmap[$1], ccllen[$1], sizeof (*ccltbl), cclcmp ); + qsort( ccltbl + cclmap[$1], (size_t) ccllen[$1], sizeof (*ccltbl), cclcmp ); if ( useecs ) mkeccl( ccltbl + cclmap[$1], ccllen[$1], @@ -913,13 +915,13 @@ ccl_expr: | CCE_NEG_XDIGIT { CCL_NEG_EXPR(isxdigit); } | CCE_NEG_LOWER { if ( sf_case_ins() ) - warn(_("[:^lower:] is ambiguous in case insensitive scanner")); + lwarn(_("[:^lower:] is ambiguous in case insensitive scanner")); else CCL_NEG_EXPR(islower); } | CCE_NEG_UPPER { if ( sf_case_ins() ) - warn(_("[:^upper:] ambiguous in case insensitive scanner")); + lwarn(_("[:^upper:] ambiguous in case insensitive scanner")); else CCL_NEG_EXPR(isupper); } @@ -951,7 +953,7 @@ string : string CHAR * conditions */ -void build_eof_action() +void build_eof_action(void) { int i; char action_text[MAXLINE]; @@ -976,7 +978,8 @@ void build_eof_action() } } - line_directive_out( (FILE *) 0, 1 ); + line_directive_out(NULL, 1); + add_action("[["); /* This isn't a normal rule after all - don't count it as * such, so we don't have any holes in the rule numbering @@ -990,8 +993,7 @@ void build_eof_action() /* format_synerr - write out formatted syntax error */ -void format_synerr( msg, arg ) -const char *msg, arg[]; +void format_synerr( const char *msg, const char arg[] ) { char errmsg[MAXLINE]; @@ -1002,8 +1004,7 @@ const char *msg, arg[]; /* synerr - report a syntax error */ -void synerr( str ) -const char *str; +void synerr( const char *str ) { syntaxerror = true; pinpoint_message( str ); @@ -1012,20 +1013,18 @@ const char *str; /* format_warn - write out formatted warning */ -void format_warn( msg, arg ) -const char *msg, arg[]; +void format_warn( const char *msg, const char arg[] ) { char warn_msg[MAXLINE]; snprintf( warn_msg, sizeof(warn_msg), msg, arg ); - warn( warn_msg ); + lwarn( warn_msg ); } -/* warn - report a warning, unless -w was given */ +/* lwarn - report a warning, unless -w was given */ -void warn( str ) -const char *str; +void lwarn( const char *str ) { line_warning( str, linenum ); } @@ -1034,8 +1033,7 @@ const char *str; * pinpointing its location */ -void format_pinpoint_message( msg, arg ) -const char *msg, arg[]; +void format_pinpoint_message( const char *msg, const char arg[] ) { char errmsg[MAXLINE]; @@ -1046,8 +1044,7 @@ const char *msg, arg[]; /* pinpoint_message - write out a message, pinpointing its location */ -void pinpoint_message( str ) -const char *str; +void pinpoint_message( const char *str ) { line_pinpoint( str, linenum ); } @@ -1055,9 +1052,7 @@ const char *str; /* line_warning - report a warning at a given line, unless -w was given */ -void line_warning( str, line ) -const char *str; -int line; +void line_warning( const char *str, int line ) { char warning[MAXLINE]; @@ -1071,9 +1066,7 @@ int line; /* line_pinpoint - write out a message, pinpointing it at the given line */ -void line_pinpoint( str, line ) -const char *str; -int line; +void line_pinpoint( const char *str, int line ) { fprintf( stderr, "%s:%d: %s\n", infilename, line, str ); } @@ -1083,7 +1076,7 @@ int line; * currently, messages are ignore */ -void yyerror( msg ) -const char *msg; +void yyerror( const char *msg ) { + (void)msg; } diff --git a/contrib/flex/regex.c b/contrib/flex/src/regex.c similarity index 85% rename from contrib/flex/regex.c rename to contrib/flex/src/regex.c index e12cf6501819..38e658bdf231 100644 --- a/contrib/flex/regex.c +++ b/contrib/flex/src/regex.c @@ -54,21 +54,17 @@ void flex_regcomp(regex_t *preg, const char *regex, int cflags) memset (preg, 0, sizeof (regex_t)); if ((err = regcomp (preg, regex, cflags)) != 0) { - const int errbuf_sz = 200; - char *errbuf, *rxerr; + const size_t errbuf_sz = 200; + char *errbuf; + int n; - errbuf = (char*)flex_alloc(errbuf_sz *sizeof(char)); + errbuf = malloc(errbuf_sz * sizeof(char)); if (!errbuf) flexfatal(_("Unable to allocate buffer to report regcomp")); - rxerr = (char*)flex_alloc(errbuf_sz *sizeof(char)); - if (!rxerr) - flexfatal(_("Unable to allocate buffer for regerror")); - regerror (err, preg, rxerr, errbuf_sz); - snprintf (errbuf, errbuf_sz, "regcomp for \"%s\" failed: %s", regex, rxerr); + n = snprintf(errbuf, errbuf_sz, "regcomp for \"%s\" failed: ", regex); + regerror(err, preg, errbuf+n, errbuf_sz-(size_t)n); - flexfatal (errbuf); - free(errbuf); - free(rxerr); + flexfatal (errbuf); /* never returns - no need to free(errbuf) */ } } @@ -80,12 +76,12 @@ void flex_regcomp(regex_t *preg, const char *regex, int cflags) char *regmatch_dup (regmatch_t * m, const char *src) { char *str; - int len; + size_t len; - if (m == NULL || m->rm_so < 0) + if (m == NULL || m->rm_so < 0 || m->rm_eo < m->rm_so) return NULL; - len = m->rm_eo - m->rm_so; - str = (char *) flex_alloc ((len + 1) * sizeof (char)); + len = (size_t) (m->rm_eo - m->rm_so); + str = malloc((len + 1) * sizeof(char)); if (!str) flexfatal(_("Unable to allocate a copy of the match")); strncpy (str, src + m->rm_so, len); @@ -107,13 +103,12 @@ char *regmatch_cpy (regmatch_t * m, char *dest, const char *src) return dest; } - snprintf (dest, regmatch_len(m), "%s", src + m->rm_so); + snprintf (dest, (size_t) regmatch_len(m), "%s", src + m->rm_so); return dest; } /** Get the length in characters of the match. * @param m A match as returned by regexec(). - * @param src The source string that was passed to regexec(). * @return The length of the match. */ int regmatch_len (regmatch_t * m) @@ -151,7 +146,7 @@ int regmatch_strtol (regmatch_t * m, const char *src, char **endptr, else s = regmatch_dup (m, src); - n = strtol (s, endptr, base); + n = (int) strtol (s, endptr, base); if (s != buf) free (s); diff --git a/contrib/flex/scan.l b/contrib/flex/src/scan.l similarity index 78% rename from contrib/flex/scan.l rename to contrib/flex/src/scan.l index 5a15400b8373..1570f505b342 100644 --- a/contrib/flex/scan.l +++ b/contrib/flex/src/scan.l @@ -37,6 +37,13 @@ extern bool tablesverify, tablesext; extern int trlcontxt; /* Set in parse.y for each rule. */ extern const char *escaped_qstart, *escaped_qend; +extern int yylval; + +#define M4QSTART "[""[" +#define M4QEND "]""]" + +#define ESCAPED_QSTART "[" M4QEND M4QSTART "[" M4QEND M4QSTART +#define ESCAPED_QEND M4QEND "]" M4QSTART M4QEND "]" M4QSTART #define ACTION_ECHO add_action( yytext ) #define ACTION_IFDEF(def, should_define) \ @@ -45,8 +52,8 @@ extern const char *escaped_qstart, *escaped_qend; action_define( def, 1 ); \ } -#define ACTION_ECHO_QSTART add_action (escaped_qstart) -#define ACTION_ECHO_QEND add_action (escaped_qend) +#define ACTION_ECHO_QSTART add_action (ESCAPED_QSTART) +#define ACTION_ECHO_QEND add_action (ESCAPED_QEND) #define ACTION_M4_IFDEF(def, should_define) \ do{ \ @@ -59,7 +66,7 @@ extern const char *escaped_qstart, *escaped_qend; #define MARK_END_OF_PROLOG mark_prolog(); #define YY_DECL \ - int flexscan() + int flexscan(void) #define RETURNCHAR \ yylval = (unsigned char) yytext[0]; \ @@ -68,18 +75,20 @@ extern const char *escaped_qstart, *escaped_qend; #define RETURNNAME \ if(yyleng < MAXLINE) \ { \ - strcpy( nmstr, yytext ); \ + strncpy( nmstr, yytext, sizeof(nmstr) ); \ + return NAME; \ } \ else \ - { \ + do { \ synerr(_("Input line too long\n")); \ FLEX_EXIT(EXIT_FAILURE); \ - } \ - return NAME; + } while (0) #define PUT_BACK_STRING(str, start) \ - for ( i = strlen( str ) - 1; i >= start; --i ) \ - unput((str)[i]) + { size_t i = strlen( str ); \ + while ( i > start ) \ + unput((str)[--i]); \ + } #define CHECK_REJECT(str) \ if ( all_upper( str ) ) \ @@ -93,9 +102,26 @@ extern const char *escaped_qstart, *escaped_qend; if ( getenv("POSIXLY_CORRECT") ) \ posix_compat = true; +#define START_CODEBLOCK(x) do { \ + /* Emit the needed line directive... */\ + if (indented_code == false) { \ + linenum++; \ + line_directive_out(NULL, 1); \ + } \ + add_action(M4QSTART); \ + yy_push_state(CODEBLOCK); \ + if ((indented_code = x)) ACTION_ECHO; \ +} while(0) + +#define END_CODEBLOCK do { \ + yy_pop_state();\ + add_action(M4QEND); \ + if (!indented_code) line_directive_out(NULL, 0);\ +} while (0) + %} -%option caseless nodefault stack noyy_top_state +%option caseless nodefault noreject stack noyy_top_state %option nostdinit %x SECT2 SECT2PROLOG SECT3 CODEBLOCK PICKUPDEF SC CARETISBOL NUM QUOTE @@ -104,7 +130,9 @@ extern const char *escaped_qstart, *escaped_qend; %x GROUP_WITH_PARAMS %x GROUP_MINUS_PARAMS %x EXTENDED_COMMENT -%x COMMENT_DISCARD +%x COMMENT_DISCARD CODE_COMMENT +%x SECT3_NOESCAPE +%x CHARACTER_CONSTANT WS [[:blank:]]+ OPTWS [[:blank:]]* @@ -125,8 +153,8 @@ CCL_EXPR ("[:"^?[[:alpha:]]+":]") LEXOPT [aceknopr] -M4QSTART "[[" -M4QEND "]]" +M4QSTART "[""[" +M4QEND "]""]" %% static int bracelevel, didadef, indented_code; @@ -134,22 +162,17 @@ M4QEND "]]" static int option_sense; int doing_codeblock = false; - int i, brace_depth=0, brace_start_line=0; - Char nmdef[MAXLINE]; + int brace_depth=0, brace_start_line=0; + char nmdef[MAXLINE]; { - ^{WS} indented_code = true; BEGIN(CODEBLOCK); - ^"/*" ACTION_ECHO; yy_push_state( COMMENT ); + ^{WS} START_CODEBLOCK(true); + ^"/*" add_action("/*[""["); yy_push_state( COMMENT ); ^#{OPTWS}line{WS} yy_push_state( LINEDIR ); ^"%s"{NAME}? return SCDECL; ^"%x"{NAME}? return XSCDECL; - ^"%{".*{NL} { - ++linenum; - line_directive_out( (FILE *) 0, 1 ); - indented_code = false; - BEGIN(CODEBLOCK); - } + ^"%{".*{NL} START_CODEBLOCK(false); ^"%top"[[:blank:]]*"{"[[:blank:]]*{NL} { brace_start_line = linenum; ++linenum; @@ -166,7 +189,7 @@ M4QEND "]]" sectnum = 2; bracelevel = 0; mark_defs1(); - line_directive_out( (FILE *) 0, 1 ); + line_directive_out(NULL, 1); BEGIN(SECT2PROLOG); return SECTEND; } @@ -174,7 +197,7 @@ M4QEND "]]" ^"%pointer".*{NL} yytext_is_array = false; ++linenum; ^"%array".*{NL} yytext_is_array = true; ++linenum; - ^"%option" BEGIN(OPTION); return OPTION_OP; + ^"%option" BEGIN(OPTION); return TOK_OPTION; ^"%"{LEXOPT}{OPTWS}[[:digit:]]*{OPTWS}{NL} ++linenum; /* ignore */ ^"%"{LEXOPT}{WS}.*{NL} ++linenum; /* ignore */ @@ -185,7 +208,7 @@ M4QEND "]]" ^{NAME} { if(yyleng < MAXLINE) { - strcpy( nmstr, yytext ); + strncpy( nmstr, yytext, sizeof(nmstr) ); } else { @@ -203,14 +226,18 @@ M4QEND "]]" } -{ - "*/" ACTION_ECHO; yy_pop_state(); - "*" ACTION_ECHO; - {M4QSTART} ACTION_ECHO_QSTART; - {M4QEND} ACTION_ECHO_QEND; - [^*\n] ACTION_ECHO; +{ /* */ + [^\[\]\*\n]* ACTION_ECHO; + . ACTION_ECHO; + {NL} ++linenum; ACTION_ECHO; } +{ + "*/" add_action("*/]""]"); yy_pop_state(); +} +{ + "*/" ACTION_ECHO; yy_pop_state(); +} { /* This is the same as COMMENT, but is discarded rather than output. */ @@ -223,7 +250,7 @@ M4QEND "]]" { ")" yy_pop_state(); [^\n\)]+ ; - {NL} ++linenum; + {NL} ++linenum; } { @@ -231,25 +258,25 @@ M4QEND "]]" [[:digit:]]+ linenum = myctoi( yytext ); \"[^"\n]*\" { - flex_free( (void *) infilename ); - infilename = copy_string( yytext + 1 ); + free(infilename); + infilename = xstrdup(yytext + 1); infilename[strlen( infilename ) - 1] = '\0'; } . /* ignore spurious characters */ } +{ + {M4QSTART} ACTION_ECHO_QSTART; + {M4QEND} ACTION_ECHO_QEND; +} { - ^"%}".*{NL} ++linenum; BEGIN(INITIAL); - - {M4QSTART} ACTION_ECHO_QSTART; - {M4QEND} ACTION_ECHO_QEND; - . ACTION_ECHO; - + ^"%}".*{NL} ++linenum; END_CODEBLOCK; + [^\n%\[\]]* ACTION_ECHO; + . ACTION_ECHO; {NL} { ++linenum; ACTION_ECHO; - if ( indented_code ) - BEGIN(INITIAL); + if ( indented_code ) END_CODEBLOCK; } } @@ -272,12 +299,11 @@ M4QEND "]]" buf_strnappend(&top_buf, yytext, yyleng); } - {M4QSTART} buf_strnappend(&top_buf, escaped_qstart, strlen(escaped_qstart)); - {M4QEND} buf_strnappend(&top_buf, escaped_qend, strlen(escaped_qend)); - - [^{}\r\n] { - buf_strnappend(&top_buf, yytext, yyleng); - } + {M4QSTART} buf_strnappend(&top_buf, escaped_qstart, (int) strlen(escaped_qstart)); + {M4QEND} buf_strnappend(&top_buf, escaped_qend, (int) strlen(escaped_qend)); + ([^{}\r\n\[\]]+)|[^{}\r\n] { + buf_strnappend(&top_buf, yytext, yyleng); + } <> { linenum = brace_start_line; @@ -293,7 +319,7 @@ M4QEND "]]" {NOT_WS}[^\r\n]* { if(yyleng < MAXLINE) { - strcpy( (char *) nmdef, yytext ); + strncpy( nmdef, yytext, sizeof(nmdef) ); } else { @@ -301,12 +327,12 @@ M4QEND "]]" FLEX_EXIT(EXIT_FAILURE); } /* Skip trailing whitespace. */ - for ( i = strlen( (char *) nmdef ) - 1; - i >= 0 && (nmdef[i] == ' ' || nmdef[i] == '\t'); - --i ) - ; - - nmdef[i + 1] = '\0'; + { + size_t i = strlen( nmdef ); + while (i > 0 && (nmdef[i-1] == ' ' || nmdef[i-1] == '\t')) + --i; + nmdef[i] = '\0'; + } ndinstal( nmstr, nmdef ); didadef = true; @@ -338,8 +364,6 @@ M4QEND "]]" interactive = option_sense; } array yytext_is_array = option_sense; - ansi-definitions ansi_func_defs = option_sense; - ansi-prototypes ansi_func_protos = option_sense; backup backing_up_report = option_sense; batch interactive = ! option_sense; bison-bridge bison_bridge_lval = option_sense; @@ -364,6 +388,7 @@ M4QEND "]]" interactive interactive = option_sense; lex-compat lex_compat = option_sense; posix-compat posix_compat = option_sense; + line gen_line_dirs = option_sense; main { ACTION_M4_IFDEF( "M4""_YY_MAIN", option_sense); /* Override yywrap */ @@ -420,12 +445,12 @@ M4QEND "]]" yyget_lloc ACTION_M4_IFDEF("M4""_YY_NO_GET_LLOC", ! option_sense); yyset_lloc ACTION_M4_IFDEF("M4""_YY_NO_SET_LLOC", ! option_sense); - extra-type return OPT_EXTRA_TYPE; - outfile return OPT_OUTFILE; - prefix return OPT_PREFIX; - yyclass return OPT_YYCLASS; - header(-file)? return OPT_HEADER; - tables-file return OPT_TABLES; + extra-type return TOK_EXTRA_TYPE; + outfile return TOK_OUTFILE; + prefix return TOK_PREFIX; + yyclass return TOK_YYCLASS; + header(-file)? return TOK_HEADER_FILE; + tables-file return TOK_TABLES_FILE; tables-verify { tablesverify = option_sense; if(!tablesext && option_sense) @@ -436,7 +461,7 @@ M4QEND "]]" \"[^"\n]*\" { if(yyleng-1 < MAXLINE) { - strcpy( nmstr, yytext + 1 ); + strncpy( nmstr, yytext + 1, sizeof(nmstr) ); } else { @@ -461,19 +486,20 @@ M4QEND "]]" ^"%{".* ++bracelevel; yyless( 2 ); /* eat only %{ */ ^"%}".* --bracelevel; yyless( 2 ); /* eat only %} */ - ^{WS}.* ACTION_ECHO; /* indented code in prolog */ + ^{WS} START_CODEBLOCK(true); /* indented code in prolog */ - ^{NOT_WS}.* { /* non-indented code */ - if ( bracelevel <= 0 ) - { /* not in %{ ... %} */ - yyless( 0 ); /* put it all back */ - yy_set_bol( 1 ); - mark_prolog(); - BEGIN(SECT2); - } - else - ACTION_ECHO; - } + ^{NOT_WS}.* { + /* non-indented code */ + if ( bracelevel <= 0 ) { + /* not in %{ ... %} */ + yyless( 0 ); /* put it all back */ + yy_set_bol( 1 ); + mark_prolog(); + BEGIN(SECT2); + } else { + START_CODEBLOCK(true); + } + } . ACTION_ECHO; {NL} ++linenum; ACTION_ECHO; @@ -527,11 +553,11 @@ M4QEND "]]" if (sf_skip_ws()){ /* We're in the middle of a (?x: ) pattern. */ /* Push back everything starting at the "|" */ - size_t amt; - amt = strchr (yytext, '|') - yytext; + int amt = (int) (strchr (yytext, '|') - yytext); yyless(amt); } else { + add_action("]""]"); continued_action = true; ++linenum; return '\n'; @@ -601,9 +627,10 @@ M4QEND "]]" ^"%%".* { sectnum = 3; - BEGIN(SECT3); + BEGIN(no_section3_escape ? SECT3_NOESCAPE : SECT3); outn("/* Begin user sect3 */"); yyterminate(); /* to stop the parser */ + } "["({FIRST_CCL_CHAR}|{CCL_EXPR})({CCL_CHAR}|{CCL_EXPR})* { @@ -611,7 +638,7 @@ M4QEND "]]" if(yyleng < MAXLINE) { - strcpy( nmstr, yytext ); + strncpy( nmstr, yytext, sizeof(nmstr) ); } else { @@ -627,7 +654,7 @@ M4QEND "]]" * The reason it was disabled is so yacc/bison can parse * ccl operations, such as ccl difference and union. */ - && (cclval = ccllookup( (Char *) nmstr )) != 0 ) + && (cclval = ccllookup( nmstr )) != 0 ) { if ( input() != ']' ) synerr( _( "bad character class" ) ); @@ -641,7 +668,7 @@ M4QEND "]]" /* We fudge a bit. We know that this ccl will * soon be numbered as lastccl + 1 by cclinit. */ - cclinstal( (Char *) nmstr, lastccl + 1 ); + cclinstal( nmstr, lastccl + 1 ); /* Push back everything but the leading bracket * so the ccl can be rescanned. @@ -661,7 +688,7 @@ M4QEND "]]" * context. */ "{"{NAME}"}"[[:space:]]? { - Char *nmdefptr; + char *nmdefptr; int end_is_ws, end_ch; end_ch = yytext[yyleng-1]; @@ -669,7 +696,7 @@ M4QEND "]]" if(yyleng-1 < MAXLINE) { - strcpy( nmstr, yytext + 1 ); + strncpy( nmstr, yytext + 1, sizeof(nmstr) ); } else { @@ -685,7 +712,7 @@ nmstr[yyleng - 2 - end_is_ws] = '\0'; /* chop trailing brace */ else { /* push back name surrounded by ()'s */ - int len = strlen( (char *) nmdefptr ); + size_t len = strlen( nmdefptr ); if (end_is_ws) unput(end_ch); @@ -693,7 +720,7 @@ nmstr[yyleng - 2 - end_is_ws] = '\0'; /* chop trailing brace */ (len > 0 && nmdefptr[len - 1] == '$') || (end_is_ws && trlcontxt && !sf_skip_ws())) { /* don't use ()'s after all */ - PUT_BACK_STRING((char *) nmdefptr, 0); + PUT_BACK_STRING(nmdefptr, 0); if ( nmdefptr[0] == '^' ) BEGIN(CARETISBOL); @@ -702,7 +729,7 @@ nmstr[yyleng - 2 - end_is_ws] = '\0'; /* chop trailing brace */ else { unput(')'); - PUT_BACK_STRING((char *) nmdefptr, 0); + PUT_BACK_STRING(nmdefptr, 0); unput('('); } } @@ -738,7 +765,13 @@ nmstr[yyleng - 2 - end_is_ws] = '\0'; /* chop trailing brace */ return '('; } "(" sf_push(); return '('; - ")" sf_pop(); return ')'; + ")" { + if (_sf_top_ix > 0) { + sf_pop(); + return ')'; + } else + synerr(_("unbalanced parenthesis")); + } [/|*+?.(){}] return (unsigned char) yytext[0]; . RETURNCHAR; @@ -870,35 +903,31 @@ nmstr[yyleng - 2 - end_is_ws] = '\0'; /* chop trailing brace */ { {OPTWS}"%}".* bracelevel = 0; - "/*" ACTION_ECHO; yy_push_state( COMMENT ); + "/*" ACTION_ECHO; yy_push_state( CODE_COMMENT ); { - "reject" { - ACTION_ECHO; - CHECK_REJECT(yytext); - } - "yymore" { - ACTION_ECHO; - CHECK_YYMORE(yytext); - } + "reject" { + ACTION_ECHO; + CHECK_REJECT(yytext); + } + "yymore" { + ACTION_ECHO; + CHECK_YYMORE(yytext); + } } - {M4QSTART} ACTION_ECHO_QSTART; - {M4QEND} ACTION_ECHO_QEND; - . ACTION_ECHO; - {NL} { - ++linenum; - ACTION_ECHO; - if ( bracelevel == 0 || - (doing_codeblock && indented_code) ) - { - if ( doing_rule_action ) - add_action( "\tYY_BREAK\n" ); + . ACTION_ECHO; + {NL} { + ++linenum; + ACTION_ECHO; + if (bracelevel <= 0 || (doing_codeblock && indented_code)) { + if ( doing_rule_action ) + add_action( "\tYY_BREAK]""]\n" ); - doing_rule_action = doing_codeblock = false; - BEGIN(SECT2); - } - } + doing_rule_action = doing_codeblock = false; + BEGIN(SECT2); + } + } } @@ -906,37 +935,41 @@ nmstr[yyleng - 2 - end_is_ws] = '\0'; /* chop trailing brace */ { "{" ACTION_ECHO; ++bracelevel; "}" ACTION_ECHO; --bracelevel; - {M4QSTART} ACTION_ECHO_QSTART; - {M4QEND} ACTION_ECHO_QEND; - [^[:alpha:]_{}"'/\n\[\]]+ ACTION_ECHO; - [\[\]] ACTION_ECHO; - {NAME} ACTION_ECHO; - "'"([^'\\\n]|\\.)*"'" ACTION_ECHO; /* character constant */ + [^[:alpha:]_{}\"'/\n\[\]]+ ACTION_ECHO; + {NAME} ACTION_ECHO; + "'"([^\'\\\n]|\\.)"'" ACTION_ECHO; /* character constant */ + "'" ACTION_ECHO; BEGIN(CHARACTER_CONSTANT); \" ACTION_ECHO; BEGIN(ACTION_STRING); - {NL} { - ++linenum; - ACTION_ECHO; - if ( bracelevel == 0 ) - { - if ( doing_rule_action ) - add_action( "\tYY_BREAK\n" ); + {NL} { + ++linenum; + ACTION_ECHO; + if (bracelevel <= 0) { + if ( doing_rule_action ) + add_action( "\tYY_BREAK]""]\n" ); - doing_rule_action = false; - BEGIN(SECT2); - } - } - . ACTION_ECHO; + doing_rule_action = false; + BEGIN(SECT2); + } + } + . ACTION_ECHO; } { - [^"\\\n]+ ACTION_ECHO; - \\. ACTION_ECHO; - {NL} ++linenum; ACTION_ECHO; BEGIN(ACTION); + [^\[\]\"\\\n]+ ACTION_ECHO; \" ACTION_ECHO; BEGIN(ACTION); - . ACTION_ECHO; +} +{ + [^\[\]\'\\\n]+ ACTION_ECHO; + \' ACTION_ECHO; BEGIN(ACTION); +} +{ + (\\\n)* ACTION_ECHO; + \\(\\\n)*. ACTION_ECHO; + {NL} ++linenum; ACTION_ECHO; if (bracelevel <= 0) { BEGIN(SECT2); } else { BEGIN(ACTION); } + . ACTION_ECHO; } -<> { +<> { synerr( _( "EOF encountered inside an action" ) ); yyterminate(); } @@ -947,7 +980,7 @@ nmstr[yyleng - 2 - end_is_ws] = '\0'; /* chop trailing brace */ } {ESCSEQ} { - yylval = myesc( (Char *) yytext ); + yylval = myesc( (unsigned char *) yytext ); if ( YY_START == FIRSTCCL ) BEGIN(CCL); @@ -955,21 +988,32 @@ nmstr[yyleng - 2 - end_is_ws] = '\0'; /* chop trailing brace */ return CHAR; } - { - {M4QSTART} fwrite (escaped_qstart, 1, strlen(escaped_qstart), yyout); - {M4QEND} fwrite (escaped_qend, 1, strlen(escaped_qend), yyout); - [^\[\]\n]*(\n?) ECHO; - (.|\n) ECHO; - <> sectnum = 0; yyterminate(); + {M4QSTART} fputs(escaped_qstart, yyout); + {M4QEND} fputs(escaped_qend, yyout); + [^\[\]]* ECHO; + [][] ECHO; + <> { + sectnum = 0; + yyterminate(); + } +} +{ + {M4QSTART} fprintf(yyout, "[""[%s]""]", escaped_qstart); + {M4QEND} fprintf(yyout, "[""[%s]""]", escaped_qend); + [^][]* ECHO; + [][] ECHO; + <> { + sectnum = 0; + yyterminate(); + } } - <*>.|\n format_synerr( _( "bad character: %s" ), yytext ); %% -int yywrap() +int yywrap(void) { if ( --num_input_files > 0 ) { @@ -984,46 +1028,22 @@ int yywrap() /* set_input_file - open the given file (if NULL, stdin) for scanning */ -void set_input_file( file ) -char *file; +void set_input_file( char *file ) { if ( file && strcmp( file, "-" ) ) { - infilename = copy_string( file ); + infilename = xstrdup(file); yyin = fopen( infilename, "r" ); if ( yyin == NULL ) - lerrsf( _( "can't open %s" ), file ); + lerr( _( "can't open %s" ), file ); } else { yyin = stdin; - infilename = copy_string( "" ); + infilename = xstrdup(""); } linenum = 1; } - - -/* Wrapper routines for accessing the scanner's malloc routines. */ - -void *flex_alloc( size ) -size_t size; - { - return (void *) malloc( size ); - } - -void *flex_realloc( ptr, size ) -void *ptr; -size_t size; - { - return (void *) realloc( ptr, size ); - } - -void flex_free( ptr ) -void *ptr; - { - if ( ptr ) - free( ptr ); - } diff --git a/contrib/flex/scanflags.c b/contrib/flex/src/scanflags.c similarity index 85% rename from contrib/flex/scanflags.c rename to contrib/flex/src/scanflags.c index 2c715e619b46..9699a31ccee2 100644 --- a/contrib/flex/scanflags.c +++ b/contrib/flex/src/scanflags.c @@ -39,8 +39,10 @@ size_t _sf_top_ix=0, _sf_max=0; void sf_push (void) { - if (_sf_top_ix + 1 >= _sf_max) - _sf_stk = (scanflags_t*) flex_realloc ( (void*) _sf_stk, sizeof(scanflags_t) * (_sf_max += 32)); + if (_sf_top_ix + 1 >= _sf_max) { + _sf_max += 32; + _sf_stk = realloc(_sf_stk, sizeof(scanflags_t) * _sf_max); + } // copy the top element _sf_stk[_sf_top_ix + 1] = _sf_stk[_sf_top_ix]; @@ -59,10 +61,10 @@ void sf_init (void) { assert(_sf_stk == NULL); - _sf_stk = (scanflags_t*) flex_alloc ( sizeof(scanflags_t) * (_sf_max = 32)); + _sf_max = 32; + _sf_stk = malloc(sizeof(scanflags_t) * _sf_max); if (!_sf_stk) - lerrsf_fatal(_("Unable to allocate %ld of stack"), - (void *)(uintptr_t)sizeof(scanflags_t)); + lerr_fatal(_("Unable to allocate %zu of stack"), sizeof(scanflags_t)); _sf_stk[_sf_top_ix] = 0; } diff --git a/contrib/flex/scanopt.c b/contrib/flex/src/scanopt.c similarity index 83% rename from contrib/flex/scanopt.c rename to contrib/flex/src/scanopt.c index f76ecd34dac0..a475b6f6e89a 100644 --- a/contrib/flex/scanopt.c +++ b/contrib/flex/src/scanopt.c @@ -37,20 +37,6 @@ /* Internal structures */ -#ifdef HAVE_STRCASECMP -#define STRCASECMP(a,b) strcasecmp(a,b) -#else -static int STRCASECMP PROTO ((const char *, const char *)); - -static int STRCASECMP (a, b) - const char *a; - const char *b; -{ - while (tolower (*a++) == tolower (*b++)) ; - return b - a; -} -#endif - #define ARG_NONE 0x01 #define ARG_REQ 0x02 #define ARG_OPT 0x04 @@ -77,56 +63,45 @@ struct _scanopt_t { }; /* Accessor functions. These WOULD be one-liners, but portability calls. */ -static const char *NAME PROTO ((struct _scanopt_t *, int)); -static int PRINTLEN PROTO ((struct _scanopt_t *, int)); -static int RVAL PROTO ((struct _scanopt_t *, int)); -static int FLAGS PROTO ((struct _scanopt_t *, int)); -static const char *DESC PROTO ((struct _scanopt_t *, int)); -static int scanopt_err PROTO ((struct _scanopt_t *, int, int, int)); -static int matchlongopt PROTO ((char *, char **, int *, char **, int *)); -static int find_opt -PROTO ((struct _scanopt_t *, int, char *, int, int *, int *opt_offset)); +static const char *NAME(struct _scanopt_t *, int); +static int PRINTLEN(struct _scanopt_t *, int); +static int RVAL(struct _scanopt_t *, int); +static int FLAGS(struct _scanopt_t *, int); +static const char *DESC(struct _scanopt_t *, int); +static int scanopt_err(struct _scanopt_t *, int, int); +static int matchlongopt(char *, char **, int *, char **, int *); +static int find_opt(struct _scanopt_t *, int, char *, int, int *, int *opt_offset); -static const char *NAME (s, i) - struct _scanopt_t *s; - int i; +static const char *NAME (struct _scanopt_t *s, int i) { return s->options[i].opt_fmt + ((s->aux[i].flags & IS_LONG) ? 2 : 1); } -static int PRINTLEN (s, i) - struct _scanopt_t *s; - int i; +static int PRINTLEN (struct _scanopt_t *s, int i) { return s->aux[i].printlen; } -static int RVAL (s, i) - struct _scanopt_t *s; - int i; +static int RVAL (struct _scanopt_t *s, int i) { return s->options[i].r_val; } -static int FLAGS (s, i) - struct _scanopt_t *s; - int i; +static int FLAGS (struct _scanopt_t *s, int i) { return s->aux[i].flags; } -static const char *DESC (s, i) - struct _scanopt_t *s; - int i; +static const char *DESC (struct _scanopt_t *s, int i) { return s->options[i].desc ? s->options[i].desc : ""; } #ifndef NO_SCANOPT_USAGE -static int get_cols PROTO ((void)); +static int get_cols (void); -static int get_cols () +static int get_cols (void) { char *env; int cols = 80; /* default */ @@ -159,15 +134,11 @@ static int get_cols () (s)->subscript= 0; \ }while(0) -scanopt_t *scanopt_init (options, argc, argv, flags) - const optspec_t *options; - int argc; - char **argv; - int flags; +scanopt_t *scanopt_init (const optspec_t *options, int argc, char **argv, int flags) { int i; struct _scanopt_t *s; - s = (struct _scanopt_t *) malloc (sizeof (struct _scanopt_t)); + s = malloc(sizeof (struct _scanopt_t)); s->options = options; s->optc = 0; @@ -186,10 +157,10 @@ scanopt_t *scanopt_init (options, argc, argv, flags) s->optc++; /* Build auxiliary data */ - s->aux = (struct _aux *) malloc (s->optc * sizeof (struct _aux)); + s->aux = malloc((size_t) s->optc * sizeof (struct _aux)); for (i = 0; i < s->optc; i++) { - const Char *p, *pname; + const unsigned char *p, *pname; const struct optspec_t *opt; struct _aux *aux; @@ -200,36 +171,36 @@ scanopt_t *scanopt_init (options, argc, argv, flags) if (opt->opt_fmt[0] == '-' && opt->opt_fmt[1] == '-') { aux->flags |= IS_LONG; - pname = (const Char *)(opt->opt_fmt + 2); + pname = (const unsigned char *)(opt->opt_fmt + 2); s->has_long = 1; } else { - pname = (const Char *)(opt->opt_fmt + 1); + pname = (const unsigned char *)(opt->opt_fmt + 1); s->has_short = 1; } - aux->printlen = strlen (opt->opt_fmt); + aux->printlen = (int) strlen (opt->opt_fmt); aux->namelen = 0; for (p = pname + 1; *p; p++) { /* detect required arg */ - if (*p == '=' || isspace (*p) + if (*p == '=' || isspace ((unsigned char)*p) || !(aux->flags & IS_LONG)) { if (aux->namelen == 0) - aux->namelen = p - pname; + aux->namelen = (int) (p - pname); aux->flags |= ARG_REQ; aux->flags &= ~ARG_NONE; } /* detect optional arg. This overrides required arg. */ if (*p == '[') { if (aux->namelen == 0) - aux->namelen = p - pname; + aux->namelen = (int) (p - pname); aux->flags &= ~(ARG_REQ | ARG_NONE); aux->flags |= ARG_OPT; break; } } if (aux->namelen == 0) - aux->namelen = p - pname; + aux->namelen = (int) (p - pname); } return (scanopt_t *) s; } @@ -255,10 +226,7 @@ typedef struct usg_elem usg_elem; [indent][option, alias1, alias2...][indent][description line1 description line2...] */ -int scanopt_usage (scanner, fp, usage) - scanopt_t *scanner; - FILE *fp; - const char *usage; +int scanopt_usage (scanopt_t *scanner, FILE *fp, const char *usage) { struct _scanopt_t *s; int i, columns, indent = 2; @@ -293,7 +261,7 @@ int scanopt_usage (scanner, fp, usage) fprintf (fp, "\n"); /* Sort by r_val and string. Yes, this is O(n*n), but n is small. */ - store = (usg_elem *) malloc (s->optc * sizeof (usg_elem)); + store = malloc((size_t) s->optc * sizeof (usg_elem)); for (i = 0; i < s->optc; i++) { /* grab the next preallocate node. */ @@ -319,7 +287,7 @@ int scanopt_usage (scanner, fp, usage) } if (!ptr_if_no_alias && - STRCASECMP (NAME (s, (*ue_curr)->idx), + strcasecmp (NAME (s, (*ue_curr)->idx), NAME (s, ue->idx)) > 0) { ptr_if_no_alias = ue_curr; } @@ -391,7 +359,7 @@ int scanopt_usage (scanner, fp, usage) maxlen[0] = len; /* It's much easier to calculate length for description column! */ - len = strlen (DESC (s, ue->idx)); + len = (int) strlen (DESC (s, ue->idx)); if (len > maxlen[1]) maxlen[1] = len; } @@ -481,7 +449,7 @@ int scanopt_usage (scanner, fp, usage) while (*p && n < maxlen[1] && *p != '\n') { - if (isspace ((Char)(*p)) + if (isspace ((unsigned char)(*p)) || *p == '-') lastws = p; n++; @@ -529,18 +497,10 @@ int scanopt_usage (scanner, fp, usage) #endif /* no scanopt_usage */ -static int scanopt_err (s, opt_offset, is_short, err) - struct _scanopt_t *s; - int opt_offset; - int is_short; - int err; +static int scanopt_err (struct _scanopt_t *s, int is_short, int err) { const char *optname = ""; char optchar[2]; - const optspec_t *opt = NULL; - - if (opt_offset >= 0) - opt = s->options + opt_offset; if (!s->no_err_msg) { @@ -592,16 +552,11 @@ static int scanopt_err (s, opt_offset, is_short, err) * optname will point to str + 2 * */ -static int matchlongopt (str, optname, optlen, arg, arglen) - char *str; - char **optname; - int *optlen; - char **arg; - int *arglen; +static int matchlongopt (char *str, char **optname, int *optlen, char **arg, int *arglen) { char *p; - *optname = *arg = (char *) 0; + *optname = *arg = NULL; *optlen = *arglen = 0; /* Match regex /--./ */ @@ -610,13 +565,13 @@ static int matchlongopt (str, optname, optlen, arg, arglen) return 0; p += 2; - *optname = (char *) p; + *optname = p; /* find the end of optname */ while (*p && *p != '=') ++p; - *optlen = p - *optname; + *optlen = (int) (p - *optname); if (!*p) /* an option with no '=...' part. */ @@ -628,7 +583,7 @@ static int matchlongopt (str, optname, optlen, arg, arglen) *arg = p; while (*p) ++p; - *arglen = p - *arg; + *arglen = (int) (p - *arg); return 1; } @@ -639,13 +594,8 @@ static int matchlongopt (str, optname, optlen, arg, arglen) * Short options must be exact. * Return boolean true if found and no error. * Error stored in err_code or zero if no error. */ -static int find_opt (s, lookup_long, optstart, len, err_code, opt_offset) - struct _scanopt_t *s; - int lookup_long; - char *optstart; - int len; - int *err_code; - int *opt_offset; +static int find_opt (struct _scanopt_t *s, int lookup_long, char *optstart, int + len, int *err_code, int *opt_offset) { int nmatch = 0, lastr_val = 0, i; @@ -656,17 +606,15 @@ static int find_opt (s, lookup_long, optstart, len, err_code, opt_offset) return 0; for (i = 0; i < s->optc; i++) { - char *optname; + const char *optname; - optname = - (char *) (s->options[i].opt_fmt + - (lookup_long ? 2 : 1)); + optname = s->options[i].opt_fmt + (lookup_long ? 2 : 1); if (lookup_long && (s->aux[i].flags & IS_LONG)) { if (len > s->aux[i].namelen) continue; - if (strncmp (optname, optstart, len) == 0) { + if (strncmp (optname, optstart, (size_t) len) == 0) { nmatch++; *opt_offset = i; @@ -704,10 +652,7 @@ static int find_opt (s, lookup_long, optstart, len, err_code, opt_offset) } -int scanopt (svoid, arg, optindex) - scanopt_t *svoid; - char **arg; - int *optindex; +int scanopt (scanopt_t *svoid, char **arg, int *optindex) { char *optname = NULL, *optarg = NULL, *pstart; int namelen = 0, arglen = 0; @@ -749,7 +694,7 @@ int scanopt (svoid, arg, optindex) if (!find_opt (s, 1, optname, namelen, &errcode, &opt_offset)) { - scanopt_err (s, opt_offset, 0, errcode); + scanopt_err (s, 0, errcode); return errcode; } /* We handle this below. */ @@ -784,7 +729,7 @@ int scanopt (svoid, arg, optindex) if (!find_opt (s, 0, pstart, namelen, &errcode, &opt_offset)) { - return scanopt_err (s, opt_offset, 1, errcode); + return scanopt_err (s, 1, errcode); } optarg = pstart + 1; @@ -793,7 +738,7 @@ int scanopt (svoid, arg, optindex) arglen = 0; } else - arglen = strlen (optarg); + arglen = (int) strlen (optarg); } /* At this point, we have a long or short option matched at opt_offset into @@ -812,8 +757,7 @@ int scanopt (svoid, arg, optindex) /* case: no args allowed */ if (auxp->flags & ARG_NONE) { if (optarg && !is_short) { - scanopt_err (s, opt_offset, is_short, errcode = - SCANOPT_ERR_ARG_NOT_ALLOWED); + scanopt_err (s, is_short, errcode = SCANOPT_ERR_ARG_NOT_ALLOWED); INC_INDEX (s, 1); return errcode; } @@ -827,8 +771,7 @@ int scanopt (svoid, arg, optindex) /* case: required */ if (auxp->flags & ARG_REQ) { if (!optarg && !has_next) - return scanopt_err (s, opt_offset, is_short, - SCANOPT_ERR_ARG_NOT_FOUND); + return scanopt_err (s, is_short, SCANOPT_ERR_ARG_NOT_FOUND); if (!optarg) { /* Let the next argv element become the argument. */ @@ -855,16 +798,14 @@ int scanopt (svoid, arg, optindex) } -int scanopt_destroy (svoid) - scanopt_t *svoid; +int scanopt_destroy (scanopt_t *svoid) { struct _scanopt_t *s; s = (struct _scanopt_t *) svoid; - if (s) { - if (s->aux) - free (s->aux); - free (s); + if (s != NULL) { + free(s->aux); + free(s); } return 0; } diff --git a/contrib/flex/scanopt.h b/contrib/flex/src/scanopt.h similarity index 91% rename from contrib/flex/scanopt.h rename to contrib/flex/src/scanopt.h index 359a18a8b467..c6e7dec3619e 100644 --- a/contrib/flex/scanopt.h +++ b/contrib/flex/src/scanopt.h @@ -47,9 +47,6 @@ #ifdef __cplusplus extern "C" { #endif -#ifndef PROTO -#define PROTO(args) args -#endif /* Error codes. */ enum scanopt_err_t { SCANOPT_ERR_OPT_UNRECOGNIZED = -1, /* Unrecognized option. */ SCANOPT_ERR_OPT_AMBIGUOUS = -2, /* It matched more than one option name. */ @@ -85,12 +82,12 @@ extern "C" { * flags - Control behavior. * Return: A malloc'd pointer . */ - scanopt_t *scanopt_init PROTO ((const optspec_t * options, - int argc, char **argv, int flags)); + scanopt_t *scanopt_init (const optspec_t * options, int argc, + char **argv, int flags); /* Frees memory used by scanner. * Always returns 0. */ - int scanopt_destroy PROTO ((scanopt_t * scanner)); + int scanopt_destroy (scanopt_t * scanner); #ifndef NO_SCANOPT_USAGE /* Prints a usage message based on contents of optlist. @@ -100,10 +97,7 @@ extern "C" { * usage - Text to be prepended to option list. May be NULL. * Return: Always returns 0 (zero). */ - int scanopt_usage - PROTO ( - (scanopt_t * scanner, FILE * fp, - const char *usage)); + int scanopt_usage (scanopt_t * scanner, FILE * fp, const char *usage); #endif /* Scans command-line options in argv[]. @@ -120,10 +114,7 @@ extern "C" { * < 0 on error (return value is an error code). * */ - int scanopt - PROTO ( - (scanopt_t * scanner, char **optarg, - int *optindex)); + int scanopt (scanopt_t * scanner, char **optarg, int *optindex); #ifdef __cplusplus } diff --git a/contrib/flex/sym.c b/contrib/flex/src/sym.c similarity index 76% rename from contrib/flex/sym.c rename to contrib/flex/src/sym.c index 56450ce9039d..14fb161ad245 100644 --- a/contrib/flex/sym.c +++ b/contrib/flex/src/sym.c @@ -59,12 +59,10 @@ static struct hash_entry *ccltab[CCL_HASH_SIZE]; /* declare functions that have forward references */ -static int addsym PROTO ((char[], char *, int, hash_table, int)); -static struct hash_entry *findsym PROTO ((const char *sym, - hash_table table, - - int table_size)); -static int hashfunct PROTO ((const char *, int)); +static int addsym(char[], char *, int, hash_table, int); +static struct hash_entry *findsym (const char *sym, hash_table table, + int table_size); +static int hashfunct(const char *, int); /* addsym - add symbol and definitions to symbol table @@ -72,14 +70,9 @@ static int hashfunct PROTO ((const char *, int)); * -1 is returned if the symbol already exists, and the change not made. */ -static int addsym (sym, str_def, int_def, table, table_size) - char sym[]; - char *str_def; - int int_def; - hash_table table; - int table_size; +static int addsym (char sym[], char *str_def, int int_def, hash_table table, int table_size) { - int hash_val = hashfunct (sym, table_size); + int hash_val = hashfunct (sym, table_size); struct hash_entry *sym_entry = table[hash_val]; struct hash_entry *new_entry; struct hash_entry *successor; @@ -93,8 +86,7 @@ static int addsym (sym, str_def, int_def, table, table_size) } /* create new entry */ - new_entry = (struct hash_entry *) - flex_alloc (sizeof (struct hash_entry)); + new_entry = malloc(sizeof(struct hash_entry)); if (new_entry == NULL) flexfatal (_("symbol table memory allocation failed")); @@ -119,15 +111,13 @@ static int addsym (sym, str_def, int_def, table, table_size) /* cclinstal - save the text of a character class */ -void cclinstal (ccltxt, cclnum) - Char ccltxt[]; - int cclnum; +void cclinstal (char ccltxt[], int cclnum) { /* We don't bother checking the return status because we are not * called unless the symbol is new. */ - (void) addsym ((char *) copy_unsigned_string (ccltxt), + (void) addsym (xstrdup(ccltxt), (char *) 0, cclnum, ccltab, CCL_HASH_SIZE); } @@ -137,23 +127,18 @@ void cclinstal (ccltxt, cclnum) * Returns 0 if there's no CCL associated with the text. */ -int ccllookup (ccltxt) - Char ccltxt[]; +int ccllookup (char ccltxt[]) { - return findsym ((char *) ccltxt, ccltab, CCL_HASH_SIZE)->int_val; + return findsym (ccltxt, ccltab, CCL_HASH_SIZE)->int_val; } /* findsym - find symbol in symbol table */ -static struct hash_entry *findsym (sym, table, table_size) - const char *sym; - hash_table table; - int table_size; +static struct hash_entry *findsym (const char *sym, hash_table table, int table_size) { static struct hash_entry empty_entry = { - (struct hash_entry *) 0, (struct hash_entry *) 0, - (char *) 0, (char *) 0, 0, + NULL, NULL, NULL, NULL, 0, }; struct hash_entry *sym_entry = @@ -170,9 +155,7 @@ static struct hash_entry *findsym (sym, table, table_size) /* hashfunct - compute the hash value for "str" and hash size "hash_size" */ -static int hashfunct (str, hash_size) - const char *str; - int hash_size; +static int hashfunct (const char *str, int hash_size) { int hashval; int locstr; @@ -191,13 +174,11 @@ static int hashfunct (str, hash_size) /* ndinstal - install a name definition */ -void ndinstal (name, definition) - const char *name; - Char definition[]; +void ndinstal (const char *name, char definition[]) { - if (addsym (copy_string (name), - (char *) copy_unsigned_string (definition), 0, + if (addsym (xstrdup(name), + xstrdup(definition), 0, ndtbl, NAME_TABLE_HASH_SIZE)) synerr (_("name defined twice")); } @@ -208,16 +189,15 @@ void ndinstal (name, definition) * Returns a nil pointer if the name definition does not exist. */ -Char *ndlookup (nd) - const char *nd; +char *ndlookup (const char *nd) { - return (Char *) findsym (nd, ndtbl, NAME_TABLE_HASH_SIZE)->str_val; + return findsym (nd, ndtbl, NAME_TABLE_HASH_SIZE)->str_val; } /* scextend - increase the maximum number of start conditions */ -void scextend () +void scextend (void) { current_max_scs += MAX_SCS_INCREMENT; @@ -237,17 +217,15 @@ void scextend () * The start condition is "exclusive" if xcluflg is true. */ -void scinstal (str, xcluflg) - const char *str; - int xcluflg; +void scinstal (const char *str, int xcluflg) { if (++lastsc >= current_max_scs) scextend (); - scname[lastsc] = copy_string (str); + scname[lastsc] = xstrdup(str); - if (addsym (scname[lastsc], (char *) 0, lastsc, + if (addsym(scname[lastsc], NULL, lastsc, sctbl, START_COND_HASH_SIZE)) format_pinpoint_message (_ ("start condition %s declared twice"), @@ -265,8 +243,7 @@ str); * Returns 0 if no such start condition. */ -int sclookup (str) - const char *str; +int sclookup (const char *str) { return findsym (str, sctbl, START_COND_HASH_SIZE)->int_val; } diff --git a/contrib/flex/tables.c b/contrib/flex/src/tables.c similarity index 87% rename from contrib/flex/tables.c rename to contrib/flex/src/tables.c index f3f056faedac..980d2e96f86e 100644 --- a/contrib/flex/tables.c +++ b/contrib/flex/src/tables.c @@ -55,7 +55,7 @@ int yytbl_write32 (struct yytbl_writer *wr, flex_uint32_t v); int yytbl_write16 (struct yytbl_writer *wr, flex_uint16_t v); int yytbl_write8 (struct yytbl_writer *wr, flex_uint8_t v); -int yytbl_writen (struct yytbl_writer *wr, void *v, flex_int32_t len); +int yytbl_writen (struct yytbl_writer *wr, void *v, int len); static flex_int32_t yytbl_data_geti (const struct yytbl_data *tbl, int i); /* XXX Not used static flex_int32_t yytbl_data_getijk (const struct yytbl_data *tbl, int i, @@ -65,7 +65,7 @@ static flex_int32_t yytbl_data_getijk (const struct yytbl_data *tbl, int i, /** Initialize the table writer. * @param wr an uninitialized writer - * @param the output file + * @param out the output file * @return 0 on success */ int yytbl_writer_init (struct yytbl_writer *wr, FILE * out) @@ -86,17 +86,17 @@ int yytbl_hdr_init (struct yytbl_hdr *th, const char *version_str, memset (th, 0, sizeof (struct yytbl_hdr)); th->th_magic = YYTBL_MAGIC; - th->th_hsize = 14 + strlen (version_str) + 1 + strlen (name) + 1; + th->th_hsize = (flex_uint32_t) (14 + strlen (version_str) + 1 + strlen (name) + 1); th->th_hsize += yypad64 (th->th_hsize); th->th_ssize = 0; // Not known at this point. th->th_flags = 0; - th->th_version = copy_string (version_str); - th->th_name = copy_string (name); + th->th_version = xstrdup(version_str); + th->th_name = xstrdup(name); return 0; } /** Allocate and initialize a table data structure. - * @param tbl a pointer to an uninitialized table + * @param td a pointer to an uninitialized table * @param id the table identifier * @return 0 on success */ @@ -115,8 +115,7 @@ int yytbl_data_init (struct yytbl_data *td, enum yytbl_id id) */ int yytbl_data_destroy (struct yytbl_data *td) { - if (td->td_data) - free (td->td_data); + free(td->td_data); td->td_data = 0; free (td); return 0; @@ -137,7 +136,7 @@ static int yytbl_write_pad64 (struct yytbl_writer *wr) } /** write the header. - * @param out the output stream + * @param wr the output stream * @param th table header to be written * @return -1 on error, or bytes written on success. */ @@ -159,12 +158,12 @@ int yytbl_hdr_fwrite (struct yytbl_writer *wr, const struct yytbl_hdr *th) flex_die (_("th_ssize|th_flags write failed")); bwritten += 6; - sz = strlen (th->th_version) + 1; + sz = (int) strlen (th->th_version) + 1; if ((rv = yytbl_writen (wr, th->th_version, sz)) != sz) flex_die (_("th_version writen failed")); bwritten += rv; - sz = strlen (th->th_name) + 1; + sz = (int) strlen (th->th_name) + 1; if ((rv = yytbl_writen (wr, th->th_name, sz)) != sz) flex_die (_("th_name writen failed")); bwritten += rv; @@ -183,7 +182,7 @@ int yytbl_hdr_fwrite (struct yytbl_writer *wr, const struct yytbl_hdr *th) /** Write this table. - * @param out the file writer + * @param wr the file writer * @param td table data to be written * @return -1 on error, or bytes written on success. */ @@ -214,13 +213,13 @@ int yytbl_data_fwrite (struct yytbl_writer *wr, struct yytbl_data *td) for (i = 0; i < total_len; i++) { switch (YYTDFLAGS2BYTES (td->td_flags)) { case sizeof (flex_int8_t): - rv = yytbl_write8 (wr, yytbl_data_geti (td, i)); + rv = yytbl_write8 (wr, (flex_uint8_t) yytbl_data_geti (td, i)); break; case sizeof (flex_int16_t): - rv = yytbl_write16 (wr, yytbl_data_geti (td, i)); + rv = yytbl_write16 (wr, (flex_uint16_t) yytbl_data_geti (td, i)); break; case sizeof (flex_int32_t): - rv = yytbl_write32 (wr, yytbl_data_geti (td, i)); + rv = yytbl_write32 (wr, (flex_uint32_t) yytbl_data_geti (td, i)); break; default: flex_die (_("invalid td_flags detected")); @@ -233,7 +232,7 @@ int yytbl_data_fwrite (struct yytbl_writer *wr, struct yytbl_data *td) } /* Sanity check */ - if (bwritten != (int) (12 + total_len * YYTDFLAGS2BYTES (td->td_flags))) { + if (bwritten != (12 + total_len * (int) YYTDFLAGS2BYTES (td->td_flags))) { flex_die (_("insanity detected")); return -1; } @@ -248,14 +247,14 @@ int yytbl_data_fwrite (struct yytbl_writer *wr, struct yytbl_data *td) /* Now go back and update the th_hsize member */ if (fgetpos (wr->out, &pos) != 0 || fsetpos (wr->out, &(wr->th_ssize_pos)) != 0 - || yytbl_write32 (wr, wr->total_written) < 0 + || yytbl_write32 (wr, (flex_uint32_t) wr->total_written) < 0 || fsetpos (wr->out, &pos)) { flex_die (_("get|set|fwrite32 failed")); return -1; } else /* Don't count the int we just wrote. */ - wr->total_written -= sizeof (flex_int32_t); + wr->total_written -= (int) sizeof (flex_int32_t); return bwritten; } @@ -265,11 +264,11 @@ int yytbl_data_fwrite (struct yytbl_writer *wr, struct yytbl_data *td) * @param len number of bytes * @return -1 on error. number of bytes written on success. */ -int yytbl_writen (struct yytbl_writer *wr, void *v, flex_int32_t len) +int yytbl_writen (struct yytbl_writer *wr, void *v, int len) { int rv; - rv = fwrite (v, 1, len, wr->out); + rv = (int) fwrite (v, 1, (size_t) len, wr->out); if (rv != len) return -1; wr->total_written += len; @@ -284,11 +283,11 @@ int yytbl_writen (struct yytbl_writer *wr, void *v, flex_int32_t len) int yytbl_write32 (struct yytbl_writer *wr, flex_uint32_t v) { flex_uint32_t vnet; - size_t bytes, rv; + int bytes, rv; vnet = htonl (v); - bytes = sizeof (flex_uint32_t); - rv = fwrite (&vnet, bytes, 1, wr->out); + bytes = (int) sizeof (flex_uint32_t); + rv = (int) fwrite (&vnet, (size_t) bytes, 1, wr->out); if (rv != 1) return -1; wr->total_written += bytes; @@ -303,11 +302,11 @@ int yytbl_write32 (struct yytbl_writer *wr, flex_uint32_t v) int yytbl_write16 (struct yytbl_writer *wr, flex_uint16_t v) { flex_uint16_t vnet; - size_t bytes, rv; + int bytes, rv; vnet = htons (v); - bytes = sizeof (flex_uint16_t); - rv = fwrite (&vnet, bytes, 1, wr->out); + bytes = (int) sizeof (flex_uint16_t); + rv = (int) fwrite (&vnet, (size_t) bytes, 1, wr->out); if (rv != 1) return -1; wr->total_written += bytes; @@ -321,10 +320,10 @@ int yytbl_write16 (struct yytbl_writer *wr, flex_uint16_t v) */ int yytbl_write8 (struct yytbl_writer *wr, flex_uint8_t v) { - size_t bytes, rv; + int bytes, rv; - bytes = sizeof (flex_uint8_t); - rv = fwrite (&v, bytes, 1, wr->out); + bytes = (int) sizeof (flex_uint8_t); + rv = (int) fwrite (&v, (size_t) bytes, 1, wr->out); if (rv != 1) return -1; wr->total_written += bytes; @@ -428,7 +427,7 @@ static void yytbl_data_seti (const struct yytbl_data *tbl, int i, */ static size_t min_int_size (struct yytbl_data *tbl) { - flex_uint32_t i, total_len; + flex_int32_t i, total_len; flex_int32_t max = 0; total_len = yytbl_calc_total_len (tbl); @@ -438,7 +437,7 @@ static size_t min_int_size (struct yytbl_data *tbl) n = abs (yytbl_data_geti (tbl, i)); - if (n > max) + if (max < n) max = n; } @@ -461,7 +460,8 @@ static size_t min_int_size (struct yytbl_data *tbl) */ void yytbl_data_compress (struct yytbl_data *tbl) { - flex_int32_t i, newsz, total_len; + flex_int32_t i, total_len; + size_t newsz; struct yytbl_data newtbl; yytbl_data_init (&newtbl, tbl->td_id); @@ -472,19 +472,19 @@ void yytbl_data_compress (struct yytbl_data *tbl) newsz = min_int_size (tbl); - if (newsz == (int) YYTDFLAGS2BYTES (tbl->td_flags)) + if (newsz == YYTDFLAGS2BYTES (tbl->td_flags)) /* No change in this table needed. */ return; - if (newsz > (int) YYTDFLAGS2BYTES (tbl->td_flags)) { + if (newsz > YYTDFLAGS2BYTES (tbl->td_flags)) { flex_die (_("detected negative compression")); return; } total_len = yytbl_calc_total_len (tbl); - newtbl.td_data = calloc (total_len, newsz); - newtbl.td_flags = - TFLAGS_CLRDATA (newtbl.td_flags) | BYTES2TFLAG (newsz); + newtbl.td_data = calloc ((size_t) total_len, newsz); + newtbl.td_flags = (flex_uint16_t) + (TFLAGS_CLRDATA (newtbl.td_flags) | BYTES2TFLAG (newsz)); for (i = 0; i < total_len; i++) { flex_int32_t g; diff --git a/contrib/flex/tables.h b/contrib/flex/src/tables.h similarity index 98% rename from contrib/flex/tables.h rename to contrib/flex/src/tables.h index 2e4afe5505c7..b8c2bbef3168 100644 --- a/contrib/flex/tables.h +++ b/contrib/flex/src/tables.h @@ -45,7 +45,7 @@ extern "C" { #include "tables_shared.h" struct yytbl_writer { FILE *out; - flex_uint32_t total_written; + int total_written; /**< bytes written so far */ fpos_t th_ssize_pos; /**< position of th_ssize */ diff --git a/contrib/flex/tables_shared.c b/contrib/flex/src/tables_shared.c similarity index 96% rename from contrib/flex/tables_shared.c rename to contrib/flex/src/tables_shared.c index b962666c8c8c..fca04388a588 100644 --- a/contrib/flex/tables_shared.c +++ b/contrib/flex/src/tables_shared.c @@ -52,12 +52,12 @@ dnl /** Get the number of integers in this table. This is NOT the * same thing as the number of elements. - * @param td the table + * @param tbl the table * @return the number of integers in the table */ yyskel_static flex_int32_t yytbl_calc_total_len (const struct yytbl_data *tbl) { - flex_int32_t n; + flex_uint32_t n; /* total number of ints */ n = tbl->td_lolen; @@ -66,5 +66,5 @@ yyskel_static flex_int32_t yytbl_calc_total_len (const struct yytbl_data *tbl) if (tbl->td_id == YYTD_ID_TRANSITION) n *= 2; - return n; + return (flex_int32_t) n; } diff --git a/contrib/flex/tables_shared.h b/contrib/flex/src/tables_shared.h similarity index 100% rename from contrib/flex/tables_shared.h rename to contrib/flex/src/tables_shared.h diff --git a/contrib/flex/tblcmp.c b/contrib/flex/src/tblcmp.c similarity index 93% rename from contrib/flex/tblcmp.c rename to contrib/flex/src/tblcmp.c index 64f44c48fc60..81dfbc199651 100644 --- a/contrib/flex/tblcmp.c +++ b/contrib/flex/src/tblcmp.c @@ -36,11 +36,11 @@ /* declarations for functions that have forward references */ -void mkentry PROTO ((int *, int, int, int, int)); -void mkprot PROTO ((int[], int, int)); -void mktemplate PROTO ((int[], int, int)); -void mv2front PROTO ((int)); -int tbldiff PROTO ((int[], int, int[])); +void mkentry(int *, int, int, int, int); +void mkprot(int[], int, int); +void mktemplate(int[], int, int); +void mv2front(int); +int tbldiff(int[], int, int[]); /* bldtbl - build table entries for dfa state @@ -78,8 +78,7 @@ int tbldiff PROTO ((int[], int, int[])); * cost only one difference. */ -void bldtbl (state, statenum, totaltrans, comstate, comfreq) - int state[], statenum, totaltrans, comstate, comfreq; +void bldtbl (int state[], int statenum, int totaltrans, int comstate, int comfreq) { int extptr, extrct[2][CSIZE + 1]; int mindiff, minprot, i, d; @@ -221,11 +220,11 @@ void bldtbl (state, statenum, totaltrans, comstate, comfreq) * classes. */ -void cmptmps () +void cmptmps (void) { - int tmpstorage[CSIZE + 1]; + int tmpstorage[CSIZE + 1]; int *tmp = tmpstorage, i, j; - int totaltrans, trans; + int totaltrans, trans; peakpairs = numtemps * numecs + tblend; @@ -289,7 +288,7 @@ void cmptmps () /* expand_nxt_chk - expand the next check arrays */ -void expand_nxt_chk () +void expand_nxt_chk (void) { int old_max = current_max_xpairs; @@ -300,8 +299,7 @@ void expand_nxt_chk () nxt = reallocate_integer_array (nxt, current_max_xpairs); chk = reallocate_integer_array (chk, current_max_xpairs); - zero_out ((char *) (chk + old_max), - (size_t) (MAX_XPAIRS_INCREMENT * sizeof (int))); + memset(chk + old_max, 0, MAX_XPAIRS_INCREMENT * sizeof(int)); } @@ -324,8 +322,7 @@ void expand_nxt_chk () * and an action number will be added in [-1]. */ -int find_table_space (state, numtrans) - int *state, numtrans; +int find_table_space (int *state, int numtrans) { /* Firstfree is the position of the first possible occurrence of two * consecutive unused records in the chk and nxt arrays. @@ -419,13 +416,11 @@ int find_table_space (state, numtrans) * Initializes "firstfree" to be one beyond the end of the table. Initializes * all "chk" entries to be zero. */ -void inittbl () +void inittbl (void) { int i; - zero_out ((char *) chk, - - (size_t) (current_max_xpairs * sizeof (int))); + memset(chk, 0, (size_t) current_max_xpairs * sizeof(int)); tblend = 0; firstfree = tblend + 1; @@ -451,7 +446,7 @@ void inittbl () /* mkdeftbl - make the default, "jam" table entries */ -void mkdeftbl () +void mkdeftbl (void) { int i; @@ -494,18 +489,17 @@ void mkdeftbl () * (i.e., jam entries) into the table. It is assumed that by linking to * "JAMSTATE" they will be taken care of. In any case, entries in "state" * marking transitions to "SAME_TRANS" are treated as though they will be - * taken care of by wherever "deflink" points. "totaltrans" is the total + * taken care of by whereever "deflink" points. "totaltrans" is the total * number of transitions out of the state. If it is below a certain threshold, * the tables are searched for an interior spot that will accommodate the * state array. */ -void mkentry (state, numchars, statenum, deflink, totaltrans) - int *state; - int numchars, statenum, deflink, totaltrans; +void mkentry (int *state, int numchars, int statenum, int deflink, + int totaltrans) { int minec, maxec, i, baseaddr; - int tblbase, tbllast; + int tblbase, tbllast; if (totaltrans == 0) { /* there are no out-transitions */ if (deflink == JAMSTATE) @@ -616,8 +610,7 @@ void mkentry (state, numchars, statenum, deflink, totaltrans) * has only one out-transition */ -void mk1tbl (state, sym, onenxt, onedef) - int state, sym, onenxt, onedef; +void mk1tbl (int state, int sym, int onenxt, int onedef) { if (firstfree < sym) firstfree = sym; @@ -642,8 +635,7 @@ void mk1tbl (state, sym, onenxt, onedef) /* mkprot - create new proto entry */ -void mkprot (state, statenum, comstate) - int state[], statenum, comstate; +void mkprot (int state[], int statenum, int comstate) { int i, slot, tblbase; @@ -680,11 +672,10 @@ void mkprot (state, statenum, comstate) * to it */ -void mktemplate (state, statenum, comstate) - int state[], statenum, comstate; +void mktemplate (int state[], int statenum, int comstate) { int i, numdiff, tmpbase, tmp[CSIZE + 1]; - Char transset[CSIZE + 1]; + unsigned char transset[CSIZE + 1]; int tsptr; ++numtemps; @@ -712,7 +703,8 @@ void mktemplate (state, statenum, comstate) if (state[i] == 0) tnxt[tmpbase + i] = 0; else { - transset[tsptr++] = i; + /* Note: range 1..256 is mapped to 1..255,0 */ + transset[tsptr++] = (unsigned char) i; tnxt[tmpbase + i] = comstate; } @@ -732,8 +724,7 @@ void mktemplate (state, statenum, comstate) /* mv2front - move proto queue element to front of queue */ -void mv2front (qelm) - int qelm; +void mv2front (int qelm) { if (firstprot != qelm) { if (qelm == lastprot) @@ -759,12 +750,11 @@ void mv2front (qelm) * Transnum is the number of out-transitions for the state. */ -void place_state (state, statenum, transnum) - int *state, statenum, transnum; +void place_state (int *state, int statenum, int transnum) { int i; int *state_ptr; - int position = find_table_space (state, transnum); + int position = find_table_space (state, transnum); /* "base" is the table of start positions. */ base[statenum] = position; @@ -802,8 +792,7 @@ void place_state (state, statenum, transnum) * no room, we process the sucker right now. */ -void stack1 (statenum, sym, nextstate, deflink) - int statenum, sym, nextstate, deflink; +void stack1 (int statenum, int sym, int nextstate, int deflink) { if (onesp >= ONE_STACK_SIZE - 1) mk1tbl (statenum, sym, nextstate, deflink); @@ -832,8 +821,7 @@ void stack1 (statenum, sym, nextstate, deflink) * number is "numecs" minus the number of "SAME_TRANS" entries in "ext". */ -int tbldiff (state, pr, ext) - int state[], pr, ext[]; +int tbldiff (int state[], int pr, int ext[]) { int i, *sp = state, *ep = ext, *protp; int numdiff = 0; diff --git a/contrib/flex/version.h b/contrib/flex/src/version.h similarity index 100% rename from contrib/flex/version.h rename to contrib/flex/src/version.h diff --git a/contrib/flex/yylex.c b/contrib/flex/src/yylex.c similarity index 90% rename from contrib/flex/yylex.c rename to contrib/flex/src/yylex.c index f06e5e6a2659..43e3ccd94f7e 100644 --- a/contrib/flex/yylex.c +++ b/contrib/flex/src/yylex.c @@ -37,18 +37,20 @@ /* yylex - scan for a regular expression token */ - -int yylex () +extern char *yytext; +extern FILE *yyout; +extern int yylval; +bool no_section3_escape = false; +int yylex (void) { int toktype; static int beglin = false; - extern char *yytext; - if (eofseen) + if (eofseen) { toktype = EOF; - else + } else { toktype = flexscan (); - + } if (toktype == EOF || toktype == 0) { eofseen = 1; @@ -150,11 +152,12 @@ int yylex () break; default: - if (!isascii (yylval) || !isprint (yylval)) - fprintf (stderr, - "\\%.3o", - (unsigned int) yylval); - else + if (!isascii (yylval) || !isprint (yylval)) { + if(trace_hex) + fprintf (stderr, "\\x%02x", (unsigned int) yylval); + else + fprintf (stderr, "\\%.3o", (unsigned int) yylval); + } else (void) putc (yylval, stderr); break; } @@ -173,12 +176,12 @@ int yylex () fprintf (stderr, "<>"); break; - case OPTION_OP: + case TOK_OPTION: fprintf (stderr, "%s ", yytext); break; - case OPT_OUTFILE: - case OPT_PREFIX: + case TOK_OUTFILE: + case TOK_PREFIX: case CCE_ALNUM: case CCE_ALPHA: case CCE_BLANK: diff --git a/usr.bin/lex/Makefile b/usr.bin/lex/Makefile index 473b08928681..3459d8815620 100644 --- a/usr.bin/lex/Makefile +++ b/usr.bin/lex/Makefile @@ -14,7 +14,7 @@ LINKS+= ${BINDIR}/lex ${BINDIR}/lex++ LINKS+= ${BINDIR}/lex ${BINDIR}/flex LINKS+= ${BINDIR}/lex ${BINDIR}/flex++ -FLEXDIR= ${SRCTOP}/contrib/flex +FLEXDIR= ${SRCTOP}/contrib/flex/src .PATH: ${FLEXDIR} @@ -42,11 +42,7 @@ SUBDIR= lib FLEX_VERSION= `awk -f ${.CURDIR}/version.awk ${.CURDIR}/config.h` skel.c: config.h mkskel.sh flex.skl version.awk - sed 's/m4_/m4postproc_/g; s/m4preproc_/m4_/g' \ - ${FLEXDIR}/flex.skl | \ - m4 -I${FLEXDIR} -P ${FLEX_VERSION} | \ - sed 's/m4postproc_/m4_/g' | \ - sh ${FLEXDIR}/mkskel.sh > ${.TARGET} + sh ${FLEXDIR}/mkskel.sh ${FLEXDIR} m4 ${FLEX_VERSION} > ${.TARGET} bootstrap: ${GENFILES:S/^/init/g} .for _f in ${GENFILES} diff --git a/usr.bin/lex/config.h b/usr.bin/lex/config.h index 88361dfb93df..525a1cbf4eee 100644 --- a/usr.bin/lex/config.h +++ b/usr.bin/lex/config.h @@ -1,5 +1,5 @@ -/* config.h. Generated from conf.in by configure. */ -/* conf.in. Generated from configure.in by autoheader. */ +/* src/config.h. Generated from config.h.in by configure. */ +/* src/config.h.in. Generated from configure.ac by autoheader. */ /* $FreeBSD$ */ /* Define to one of `_getb67', `GETB67', `getb67' for Cray-2 and Cray-YMP @@ -21,27 +21,59 @@ */ /* #undef HAVE_ALLOCA_H */ +/* Define to 1 if you have the `available.' function. */ +/* #undef HAVE_AVAILABLE_ */ + +/* Define to 1 if you have the `by' function. */ +/* #undef HAVE_BY */ + +/* Define to 1 if you have the MacOS X function CFLocaleCopyCurrent in the + CoreFoundation framework. */ +/* #undef HAVE_CFLOCALECOPYCURRENT */ + +/* Define to 1 if you have the MacOS X function CFPreferencesCopyAppValue in + the CoreFoundation framework. */ +/* #undef HAVE_CFPREFERENCESCOPYAPPVALUE */ + /* Define if the GNU dcgettext() function is already present or preinstalled. */ /* #undef HAVE_DCGETTEXT */ +/* Define to 1 if you have the header file. */ +#define HAVE_DLFCN_H 1 + +/* Define to 1 if you have the `dnl' function. */ +/* #undef HAVE_DNL */ + /* Define to 1 if you have the `dup2' function. */ #define HAVE_DUP2 1 +/* Define to 1 if you have the `enabled' function. */ +/* #undef HAVE_ENABLED */ + /* Define to 1 if you have the `fork' function. */ #define HAVE_FORK 1 +/* Define to 1 if you have the `function.' function. */ +/* #undef HAVE_FUNCTION_ */ + /* Define if the GNU gettext() function is already present or preinstalled. */ /* #undef HAVE_GETTEXT */ -/* Define if you have the iconv() function. */ +/* Define to 1 if you have the `have' function. */ +/* #undef HAVE_HAVE */ + +/* Define if you have the iconv() function and it works. */ /* #undef HAVE_ICONV */ +/* Define to 1 if you have the `if' function. */ +/* #undef HAVE_IF */ + /* Define to 1 if you have the header file. */ #define HAVE_INTTYPES_H 1 -/* Define to 1 if you have the `isascii' function. */ -#define HAVE_ISASCII 1 +/* Define to 1 if you have the `is' function. */ +/* #undef HAVE_IS */ /* Define to 1 if you have the header file. */ /* #undef HAVE_LIBINTL_H */ @@ -49,9 +81,6 @@ /* Define to 1 if you have the `m' library (-lm). */ #define HAVE_LIBM 1 -/* pthread library */ -#define HAVE_LIBPTHREAD 1 - /* Define to 1 if you have the header file. */ #define HAVE_LIMITS_H 1 @@ -63,7 +92,7 @@ #define HAVE_MALLOC 1 /* Define to 1 if you have the header file. */ -/* #undef HAVE_MALLOC_H */ +#define HAVE_MALLOC_H 1 /* Define to 1 if you have the header file. */ #define HAVE_MEMORY_H 1 @@ -71,9 +100,24 @@ /* Define to 1 if you have the `memset' function. */ #define HAVE_MEMSET 1 +/* Define to 1 if you have the `Needed' function. */ +/* #undef HAVE_NEEDED */ + /* Define to 1 if you have the header file. */ #define HAVE_NETINET_IN_H 1 +/* Define to 1 if you have the `NLS' function. */ +/* #undef HAVE_NLS */ + +/* Define to 1 if you have the `not' function. */ +/* #undef HAVE_NOT */ + +/* Define to 1 if you have the `only' function. */ +/* #undef HAVE_ONLY */ + +/* Define to 1 if you have the `OpenBSD' function. */ +/* #undef HAVE_OPENBSD */ + /* Define to 1 if you have the `pow' function. */ #define HAVE_POW 1 @@ -84,30 +128,39 @@ and to 0 otherwise. */ #define HAVE_REALLOC 1 +/* Define to 1 if you have the `reallocarray' function. */ +#define HAVE_REALLOCARRAY 1 + /* Define to 1 if you have the `regcomp' function. */ #define HAVE_REGCOMP 1 /* Define to 1 if you have the header file. */ #define HAVE_REGEX_H 1 +/* Define to 1 if you have the `replacement' function. */ +/* #undef HAVE_REPLACEMENT */ + /* Define to 1 if you have the `setlocale' function. */ #define HAVE_SETLOCALE 1 /* Define to 1 if stdbool.h conforms to C99. */ #define HAVE_STDBOOL_H 1 -/* Define to 1 if you have the header file. */ -#define HAVE_STDDEF_H 1 - /* Define to 1 if you have the header file. */ #define HAVE_STDINT_H 1 /* Define to 1 if you have the header file. */ #define HAVE_STDLIB_H 1 +/* Define to 1 if you have the `strcasecmp' function. */ +#define HAVE_STRCASECMP 1 + /* Define to 1 if you have the `strchr' function. */ #define HAVE_STRCHR 1 +/* Define to 1 if you have the `strdup' function. */ +#define HAVE_STRDUP 1 + /* Define to 1 if you have the header file. */ #define HAVE_STRINGS_H 1 @@ -123,18 +176,24 @@ /* Define to 1 if you have the header file. */ #define HAVE_SYS_TYPES_H 1 -/* Define to 1 if you have that is POSIX.1 compatible. */ +/* Define to 1 if you have the header file. */ #define HAVE_SYS_WAIT_H 1 /* Define to 1 if you have the header file. */ #define HAVE_UNISTD_H 1 +/* Define to 1 if you have the `Used' function. */ +/* #undef HAVE_USED */ + /* Define to 1 if you have the `vfork' function. */ #define HAVE_VFORK 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_VFORK_H */ +/* Define to 1 if you have the `We' function. */ +/* #undef HAVE_WE */ + /* Define to 1 if `fork' works. */ #define HAVE_WORKING_FORK 1 @@ -144,12 +203,12 @@ /* Define to 1 if the system has the type `_Bool'. */ #define HAVE__BOOL 1 +/* Define to the sub-directory where libtool stores uninstalled libraries. */ +#define LT_OBJDIR ".libs/" + /* Define to the m4 executable name. */ #define M4 "m4" -/* Define to 1 if your C compiler doesn't accept -c and -o together. */ -/* #undef NO_MINUS_C_MINUS_O */ - /* Name of package */ #define PACKAGE "flex" @@ -160,7 +219,7 @@ #define PACKAGE_NAME "the fast lexical analyser generator" /* Define to the full name and version of this package. */ -#define PACKAGE_STRING "the fast lexical analyser generator 2.5.37" +#define PACKAGE_STRING "the fast lexical analyser generator 2.6.4" /* Define to the one symbol short name of this package. */ #define PACKAGE_TARNAME "flex" @@ -169,7 +228,7 @@ #define PACKAGE_URL "" /* Define to the version of this package. */ -#define PACKAGE_VERSION "2.5.37" +#define PACKAGE_VERSION "2.6.4" /* If using the C implementation of alloca, define if you know the direction of stack growth for your system; otherwise it will be @@ -183,7 +242,7 @@ #define STDC_HEADERS 1 /* Version number of package */ -#define VERSION "2.5.37" +#define VERSION "2.6.4" /* Define to 1 if `lex' declares `yytext' as a `char *' by default, not a `char[]'. */ diff --git a/usr.bin/lex/initparse.c b/usr.bin/lex/initparse.c index a5ac139fd0cb..c723c5b45c40 100644 --- a/usr.bin/lex/initparse.c +++ b/usr.bin/lex/initparse.c @@ -1,17 +1,19 @@ /* $FreeBSD$ */ -#ifndef lint -static const char yysccsid[] = "@(#)yaccpar 1.9 (Berkeley) 02/21/93"; -#endif +/* original parser id follows */ +/* yysccsid[] = "@(#)yaccpar 1.9 (Berkeley) 02/21/93" */ +/* (use YYMAJOR/YYMINOR for ifdefs dependent on parser version) */ #define YYBYACC 1 #define YYMAJOR 1 #define YYMINOR 9 +#define YYPATCH 20170430 #define YYEMPTY (-1) #define yyclearin (yychar = YYEMPTY) #define yyerrok (yyerrflag = 0) #define YYRECOVERING() (yyerrflag != 0) - +#define YYENOMEM (-2) +#define YYEOF 0 #define YYPREFIX "yy" #define YYPURE 0 @@ -67,7 +69,7 @@ int previous_continued_action; /* whether the previous rule's action was '|' */ do{ \ char fw3_msg[MAXLINE];\ snprintf( fw3_msg, MAXLINE,(fmt), (a1), (a2) );\ - warn( fw3_msg );\ + lwarn( fw3_msg );\ }while(0) /* Expand a POSIX character class expression. */ @@ -99,10 +101,12 @@ int previous_continued_action; /* whether the previous rule's action was '|' */ */ #define YYSTYPE int -#line 99 "parse.c" +#line 102 "parse.c" -#ifndef YYSTYPE +#if ! defined(YYSTYPE) && ! defined(YYSTYPE_IS_DECLARED) +/* Default: YYSTYPE is the semantic value type. */ typedef int YYSTYPE; +# define YYSTYPE_IS_DECLARED 1 #endif /* compatibility with bison */ @@ -144,13 +148,13 @@ extern int YYPARSE_DECL(); #define NAME 262 #define PREVCCL 263 #define EOF_OP 264 -#define OPTION_OP 265 -#define OPT_OUTFILE 266 -#define OPT_PREFIX 267 -#define OPT_YYCLASS 268 -#define OPT_HEADER 269 -#define OPT_EXTRA_TYPE 270 -#define OPT_TABLES 271 +#define TOK_OPTION 265 +#define TOK_OUTFILE 266 +#define TOK_PREFIX 267 +#define TOK_YYCLASS 268 +#define TOK_HEADER_FILE 269 +#define TOK_EXTRA_TYPE 270 +#define TOK_TABLES_FILE 271 #define CCE_ALNUM 272 #define CCE_ALPHA 273 #define CCE_BLANK 274 @@ -182,7 +186,8 @@ extern int YYPARSE_DECL(); #define BEGIN_REPEAT_FLEX 300 #define END_REPEAT_FLEX 301 #define YYERRCODE 256 -static const short yylhs[] = { -1, +typedef int YYINT; +static const YYINT yylhs[] = { -1, 0, 1, 2, 2, 2, 2, 3, 6, 6, 7, 7, 7, 8, 9, 9, 10, 10, 10, 10, 10, 10, 4, 4, 4, 5, 12, 12, 12, 12, 14, @@ -194,7 +199,7 @@ static const short yylhs[] = { -1, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 22, 22, }; -static const short yylen[] = { 2, +static const YYINT yylen[] = { 2, 5, 0, 3, 2, 0, 1, 1, 1, 1, 2, 1, 1, 2, 2, 0, 3, 3, 3, 3, 3, 3, 5, 5, 0, 0, 2, 1, 1, 1, 0, @@ -206,7 +211,7 @@ static const short yylen[] = { 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 0, }; -static const short yydefred[] = { 2, +static const YYINT yydefred[] = { 2, 0, 0, 6, 0, 7, 8, 9, 15, 24, 0, 4, 0, 0, 12, 11, 0, 0, 0, 0, 0, 0, 0, 14, 0, 1, 0, 10, 0, 0, 0, @@ -222,12 +227,12 @@ static const short yydefred[] = { 2, 0, 0, 0, 62, 63, 66, 0, 49, 0, 55, 0, 67, 0, 48, 0, 54, 47, 53, }; -static const short yydgoto[] = { 1, +static const YYINT yydgoto[] = { 1, 2, 4, 9, 13, 25, 10, 16, 11, 12, 23, 26, 59, 60, 35, 47, 48, 61, 62, 63, 64, 65, 71, 66, 74, 119, }; -static const short yysindex[] = { 0, +static const YYINT yysindex[] = { 0, 0, -222, 0, -155, 0, 0, 0, 0, 0, -215, 0, -123, 6, 0, 0, -193, 10, 21, 26, 31, 35, 37, 0, 59, 0, -44, 0, -147, -145, -140, @@ -243,7 +248,7 @@ static const short yysindex[] = { 0, -30, -36, -39, 0, 0, 0, -104, 0, -219, 0, -238, 0, -144, 0, -143, 0, 0, 0, }; -static const short yyrindex[] = { 0, +static const YYINT yyrindex[] = { 0, 0, -141, 0, 0, 0, 0, 0, 0, 0, 0, 0, -134, 9, 0, 0, -125, 0, 0, 0, 0, 0, 0, 0, -178, 0, 22, 0, 0, 0, 0, @@ -259,13 +264,13 @@ static const short yyrindex[] = { 0, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }; -static const short yygindex[] = { 0, +static const YYINT yygindex[] = { 0, 0, 0, 0, 121, 133, 0, 0, 0, 0, 0, 0, 0, 106, 0, 0, 93, 0, 32, 84, -45, 0, 0, 25, 90, 0, }; #define YYTABLESIZE 419 -static const short yytable[] = { 57, +static const YYINT yytable[] = { 57, 83, 84, 90, 56, 131, 118, 91, 129, 25, 57, 120, 24, 33, 46, 56, 55, 56, 81, 33, 135, 57, 85, 57, 57, 33, 57, 55, 45, 55, 57, @@ -309,7 +314,7 @@ static const short yytable[] = { 57, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, }; -static const short yycheck[] = { 10, +static const YYINT yycheck[] = { 10, 42, 43, 34, 34, 44, 93, 41, 44, 0, 40, 36, 60, 34, 10, 34, 46, 34, 63, 40, 258, 40, 63, 40, 34, 46, 36, 46, 10, 46, 40, @@ -358,8 +363,10 @@ static const short yycheck[] = { 10, #define YYDEBUG 0 #endif #define YYMAXTOKEN 301 +#define YYUNDFTOKEN 329 +#define YYTRANSLATE(a) ((a) > YYMAXTOKEN ? YYUNDFTOKEN : (a)) #if YYDEBUG -static const char *yyname[] = { +static const char *const yyname[] = { "end-of-file",0,0,0,0,0,0,0,0,0,"'\\n'",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,"'\"'",0,"'$'",0,0,0,"'('","')'","'*'","'+'","','","'-'","'.'","'/'",0,0, @@ -369,16 +376,17 @@ static const char *yyname[] = { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"CHAR","NUMBER","SECTEND", -"SCDECL","XSCDECL","NAME","PREVCCL","EOF_OP","OPTION_OP","OPT_OUTFILE", -"OPT_PREFIX","OPT_YYCLASS","OPT_HEADER","OPT_EXTRA_TYPE","OPT_TABLES", +"SCDECL","XSCDECL","NAME","PREVCCL","EOF_OP","TOK_OPTION","TOK_OUTFILE", +"TOK_PREFIX","TOK_YYCLASS","TOK_HEADER_FILE","TOK_EXTRA_TYPE","TOK_TABLES_FILE", "CCE_ALNUM","CCE_ALPHA","CCE_BLANK","CCE_CNTRL","CCE_DIGIT","CCE_GRAPH", "CCE_LOWER","CCE_PRINT","CCE_PUNCT","CCE_SPACE","CCE_UPPER","CCE_XDIGIT", "CCE_NEG_ALNUM","CCE_NEG_ALPHA","CCE_NEG_BLANK","CCE_NEG_CNTRL","CCE_NEG_DIGIT", "CCE_NEG_GRAPH","CCE_NEG_LOWER","CCE_NEG_PRINT","CCE_NEG_PUNCT","CCE_NEG_SPACE", "CCE_NEG_UPPER","CCE_NEG_XDIGIT","CCL_OP_DIFF","CCL_OP_UNION", -"BEGIN_REPEAT_POSIX","END_REPEAT_POSIX","BEGIN_REPEAT_FLEX","END_REPEAT_FLEX", +"BEGIN_REPEAT_POSIX","END_REPEAT_POSIX","BEGIN_REPEAT_FLEX","END_REPEAT_FLEX",0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"illegal-symbol", }; -static const char *yyrule[] = { +static const char *const yyrule[] = { "$accept : goal", "goal : initlex sect1 sect1end sect2 initforrule", "initlex :", @@ -392,15 +400,15 @@ static const char *yyrule[] = { "namelist1 : namelist1 NAME", "namelist1 : NAME", "namelist1 : error", -"options : OPTION_OP optionlist", +"options : TOK_OPTION optionlist", "optionlist : optionlist option", "optionlist :", -"option : OPT_OUTFILE '=' NAME", -"option : OPT_EXTRA_TYPE '=' NAME", -"option : OPT_PREFIX '=' NAME", -"option : OPT_YYCLASS '=' NAME", -"option : OPT_HEADER '=' NAME", -"option : OPT_TABLES '=' NAME", +"option : TOK_OUTFILE '=' NAME", +"option : TOK_EXTRA_TYPE '=' NAME", +"option : TOK_PREFIX '=' NAME", +"option : TOK_YYCLASS '=' NAME", +"option : TOK_HEADER_FILE '=' NAME", +"option : TOK_TABLES_FILE '=' NAME", "sect2 : sect2 scon initforrule flexrule '\\n'", "sect2 : sect2 scon '{' sect2 '}'", "sect2 :", @@ -496,31 +504,31 @@ YYSTYPE yylval; #ifdef YYMAXDEPTH #define YYSTACKSIZE YYMAXDEPTH #else -#define YYSTACKSIZE 500 -#define YYMAXDEPTH 500 +#define YYSTACKSIZE 10000 +#define YYMAXDEPTH 10000 #endif #endif -#define YYINITSTACKSIZE 500 +#define YYINITSTACKSIZE 200 typedef struct { unsigned stacksize; - short *s_base; - short *s_mark; - short *s_last; + YYINT *s_base; + YYINT *s_mark; + YYINT *s_last; YYSTYPE *l_base; YYSTYPE *l_mark; } YYSTACKDATA; /* variables for the parser stack */ static YYSTACKDATA yystack; -#line 948 "parse.y" +#line 950 "parse.y" /* build_eof_action - build the "<>" action for the active start * conditions */ -void build_eof_action() +void build_eof_action(void) { int i; char action_text[MAXLINE]; @@ -545,7 +553,8 @@ void build_eof_action() } } - line_directive_out( (FILE *) 0, 1 ); + line_directive_out(NULL, 1); + add_action("[["); /* This isn't a normal rule after all - don't count it as * such, so we don't have any holes in the rule numbering @@ -559,8 +568,7 @@ void build_eof_action() /* format_synerr - write out formatted syntax error */ -void format_synerr( msg, arg ) -const char *msg, arg[]; +void format_synerr( const char *msg, const char arg[] ) { char errmsg[MAXLINE]; @@ -571,8 +579,7 @@ const char *msg, arg[]; /* synerr - report a syntax error */ -void synerr( str ) -const char *str; +void synerr( const char *str ) { syntaxerror = true; pinpoint_message( str ); @@ -581,20 +588,18 @@ const char *str; /* format_warn - write out formatted warning */ -void format_warn( msg, arg ) -const char *msg, arg[]; +void format_warn( const char *msg, const char arg[] ) { char warn_msg[MAXLINE]; snprintf( warn_msg, sizeof(warn_msg), msg, arg ); - warn( warn_msg ); + lwarn( warn_msg ); } -/* warn - report a warning, unless -w was given */ +/* lwarn - report a warning, unless -w was given */ -void warn( str ) -const char *str; +void lwarn( const char *str ) { line_warning( str, linenum ); } @@ -603,8 +608,7 @@ const char *str; * pinpointing its location */ -void format_pinpoint_message( msg, arg ) -const char *msg, arg[]; +void format_pinpoint_message( const char *msg, const char arg[] ) { char errmsg[MAXLINE]; @@ -615,8 +619,7 @@ const char *msg, arg[]; /* pinpoint_message - write out a message, pinpointing its location */ -void pinpoint_message( str ) -const char *str; +void pinpoint_message( const char *str ) { line_pinpoint( str, linenum ); } @@ -624,9 +627,7 @@ const char *str; /* line_warning - report a warning at a given line, unless -w was given */ -void line_warning( str, line ) -const char *str; -int line; +void line_warning( const char *str, int line ) { char warning[MAXLINE]; @@ -640,9 +641,7 @@ int line; /* line_pinpoint - write out a message, pinpointing it at the given line */ -void line_pinpoint( str, line ) -const char *str; -int line; +void line_pinpoint( const char *str, int line ) { fprintf( stderr, "%s:%d: %s\n", infilename, line, str ); } @@ -652,14 +651,14 @@ int line; * currently, messages are ignore */ -void yyerror( msg ) -const char *msg; +void yyerror( const char *msg ) { + (void)msg; } #line 656 "parse.c" #if YYDEBUG -#include /* needed for printf */ +#include /* needed for printf */ #endif #include /* needed for malloc, etc */ @@ -670,27 +669,27 @@ static int yygrowstack(YYSTACKDATA *data) { int i; unsigned newsize; - short *newss; + YYINT *newss; YYSTYPE *newvs; if ((newsize = data->stacksize) == 0) newsize = YYINITSTACKSIZE; else if (newsize >= YYMAXDEPTH) - return -1; + return YYENOMEM; else if ((newsize *= 2) > YYMAXDEPTH) newsize = YYMAXDEPTH; - i = data->s_mark - data->s_base; - newss = (short *)realloc(data->s_base, newsize * sizeof(*newss)); + i = (int) (data->s_mark - data->s_base); + newss = (YYINT *)realloc(data->s_base, newsize * sizeof(*newss)); if (newss == NULL) - return -1; + return YYENOMEM; data->s_base = newss; data->s_mark = newss + i; newvs = (YYSTYPE *)realloc(data->l_base, newsize * sizeof(*newvs)); if (newvs == NULL) - return -1; + return YYENOMEM; data->l_base = newvs; data->l_mark = newvs + i; @@ -731,6 +730,8 @@ YYPARSE_DECL() } #endif + yym = 0; + yyn = 0; yynerrs = 0; yyerrflag = 0; yychar = YYEMPTY; @@ -740,7 +741,7 @@ YYPARSE_DECL() memset(&yystack, 0, sizeof(yystack)); #endif - if (yystack.s_base == NULL && yygrowstack(&yystack)) goto yyoverflow; + if (yystack.s_base == NULL && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; yystack.s_mark = yystack.s_base; yystack.l_mark = yystack.l_base; yystate = 0; @@ -750,30 +751,26 @@ YYPARSE_DECL() if ((yyn = yydefred[yystate]) != 0) goto yyreduce; if (yychar < 0) { - if ((yychar = YYLEX) < 0) yychar = 0; + yychar = YYLEX; + if (yychar < 0) yychar = YYEOF; #if YYDEBUG if (yydebug) { - yys = 0; - if (yychar <= YYMAXTOKEN) yys = yyname[yychar]; - if (!yys) yys = "illegal-symbol"; + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; printf("%sdebug: state %d, reading %d (%s)\n", YYPREFIX, yystate, yychar, yys); } #endif } - if ((yyn = yysindex[yystate]) && (yyn += yychar) >= 0 && - yyn <= YYTABLESIZE && yycheck[yyn] == yychar) + if (((yyn = yysindex[yystate]) != 0) && (yyn += yychar) >= 0 && + yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar) { #if YYDEBUG if (yydebug) printf("%sdebug: state %d, shifting to state %d\n", YYPREFIX, yystate, yytable[yyn]); #endif - if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack)) - { - goto yyoverflow; - } + if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; yystate = yytable[yyn]; *++yystack.s_mark = yytable[yyn]; *++yystack.l_mark = yylval; @@ -781,18 +778,17 @@ YYPARSE_DECL() if (yyerrflag > 0) --yyerrflag; goto yyloop; } - if ((yyn = yyrindex[yystate]) && (yyn += yychar) >= 0 && - yyn <= YYTABLESIZE && yycheck[yyn] == yychar) + if (((yyn = yyrindex[yystate]) != 0) && (yyn += yychar) >= 0 && + yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar) { yyn = yytable[yyn]; goto yyreduce; } - if (yyerrflag) goto yyinrecovery; + if (yyerrflag != 0) goto yyinrecovery; - yyerror("syntax error"); - - goto yyerrlab; + YYERROR_CALL("syntax error"); + goto yyerrlab; /* redundant goto avoids 'unused label' warning */ yyerrlab: ++yynerrs; @@ -802,18 +798,15 @@ YYPARSE_DECL() yyerrflag = 3; for (;;) { - if ((yyn = yysindex[*yystack.s_mark]) && (yyn += YYERRCODE) >= 0 && - yyn <= YYTABLESIZE && yycheck[yyn] == YYERRCODE) + if (((yyn = yysindex[*yystack.s_mark]) != 0) && (yyn += YYERRCODE) >= 0 && + yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) YYERRCODE) { #if YYDEBUG if (yydebug) printf("%sdebug: state %d, error recovery shifting\ to state %d\n", YYPREFIX, *yystack.s_mark, yytable[yyn]); #endif - if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack)) - { - goto yyoverflow; - } + if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; yystate = yytable[yyn]; *++yystack.s_mark = yytable[yyn]; *++yystack.l_mark = yylval; @@ -834,13 +827,11 @@ YYPARSE_DECL() } else { - if (yychar == 0) goto yyabort; + if (yychar == YYEOF) goto yyabort; #if YYDEBUG if (yydebug) { - yys = 0; - if (yychar <= YYMAXTOKEN) yys = yyname[yychar]; - if (!yys) yys = "illegal-symbol"; + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; printf("%sdebug: state %d, error recovery discards token %d (%s)\n", YYPREFIX, yystate, yychar, yys); } @@ -856,10 +847,11 @@ YYPARSE_DECL() YYPREFIX, yystate, yyn, yyrule[yyn]); #endif yym = yylen[yyn]; - if (yym) + if (yym > 0) yyval = yystack.l_mark[1-yym]; else memset(&yyval, 0, sizeof yyval); + switch (yyn) { case 1: @@ -888,7 +880,7 @@ case 1: else add_action( "ECHO" ); - add_action( ";\n\tYY_BREAK\n" ); + add_action( ";\n\tYY_BREAK]]\n" ); } break; case 2: @@ -934,40 +926,42 @@ break; case 16: #line 195 "parse.y" { - outfilename = copy_string( nmstr ); + outfilename = xstrdup(nmstr); did_outfilename = 1; } break; case 17: #line 200 "parse.y" - { extra_type = copy_string( nmstr ); } + { extra_type = xstrdup(nmstr); } break; case 18: #line 202 "parse.y" - { prefix = copy_string( nmstr ); } + { prefix = xstrdup(nmstr); + if (strchr(prefix, '[') || strchr(prefix, ']')) + flexerror(_("Prefix must not contain [ or ]")); } break; case 19: -#line 204 "parse.y" - { yyclass = copy_string( nmstr ); } +#line 206 "parse.y" + { yyclass = xstrdup(nmstr); } break; case 20: -#line 206 "parse.y" - { headerfilename = copy_string( nmstr ); } +#line 208 "parse.y" + { headerfilename = xstrdup(nmstr); } break; case 21: -#line 208 "parse.y" - { tablesext = true; tablesfilename = copy_string( nmstr ); } +#line 210 "parse.y" + { tablesext = true; tablesfilename = xstrdup(nmstr); } break; case 22: -#line 212 "parse.y" - { scon_stk_ptr = yystack.l_mark[-3]; } -break; -case 23: #line 214 "parse.y" { scon_stk_ptr = yystack.l_mark[-3]; } break; +case 23: +#line 216 "parse.y" + { scon_stk_ptr = yystack.l_mark[-3]; } +break; case 25: -#line 219 "parse.y" +#line 221 "parse.y" { /* Initialize for a parse of one rule. */ trlcontxt = variable_trail_rule = varlength = false; @@ -980,7 +974,7 @@ case 25: } break; case 26: -#line 232 "parse.y" +#line 234 "parse.y" { pat = yystack.l_mark[0]; finish_rule( pat, variable_trail_rule, @@ -1017,7 +1011,7 @@ case 26: } break; case 27: -#line 268 "parse.y" +#line 270 "parse.y" { pat = yystack.l_mark[0]; finish_rule( pat, variable_trail_rule, @@ -1042,7 +1036,7 @@ case 27: } break; case 28: -#line 292 "parse.y" +#line 294 "parse.y" { if ( scon_stk_ptr > 0 ) build_eof_action(); @@ -1057,7 +1051,7 @@ case 28: scon_stk[++scon_stk_ptr] = i; if ( scon_stk_ptr == 0 ) - warn( + lwarn( "all start conditions already have <> rules" ); else @@ -1066,19 +1060,19 @@ case 28: } break; case 29: -#line 315 "parse.y" +#line 317 "parse.y" { synerr( _("unrecognized rule") ); } break; case 30: -#line 319 "parse.y" +#line 321 "parse.y" { yyval = scon_stk_ptr; } break; case 31: -#line 323 "parse.y" +#line 325 "parse.y" { yyval = yystack.l_mark[-2]; } break; case 32: -#line 326 "parse.y" +#line 328 "parse.y" { yyval = scon_stk_ptr; @@ -1096,15 +1090,15 @@ case 32: } break; case 33: -#line 343 "parse.y" +#line 345 "parse.y" { yyval = scon_stk_ptr; } break; case 36: -#line 351 "parse.y" +#line 353 "parse.y" { synerr( _("bad start condition list") ); } break; case 37: -#line 355 "parse.y" +#line 357 "parse.y" { if ( (scnum = sclookup( nmstr )) == 0 ) format_pinpoint_message( @@ -1127,7 +1121,7 @@ case 37: } break; case 38: -#line 378 "parse.y" +#line 380 "parse.y" { if ( transchar[lastst[yystack.l_mark[0]]] != SYM_EPSILON ) /* Provide final transition \now/ so it @@ -1151,7 +1145,7 @@ case 38: * erroneously. */ if ( ! varlength || headcnt != 0 ) - warn( + lwarn( "trailing context made variable due to preceding '|' action" ); /* Mark as variable. */ @@ -1184,11 +1178,11 @@ case 38: } break; case 39: -#line 434 "parse.y" +#line 436 "parse.y" { synerr( _("trailing context used twice") ); } break; case 40: -#line 437 "parse.y" +#line 439 "parse.y" { headcnt = 0; trailcnt = 1; @@ -1208,7 +1202,7 @@ case 40: /* See the comment in the rule for "re2 re" * above. */ - warn( + lwarn( "trailing context made variable due to preceding '|' action" ); varlength = true; @@ -1232,7 +1226,7 @@ case 40: } break; case 41: -#line 480 "parse.y" +#line 482 "parse.y" { yyval = yystack.l_mark[0]; @@ -1249,18 +1243,18 @@ case 41: } break; case 42: -#line 498 "parse.y" +#line 500 "parse.y" { varlength = true; yyval = mkor( yystack.l_mark[-2], yystack.l_mark[0] ); } break; case 43: -#line 504 "parse.y" +#line 506 "parse.y" { yyval = yystack.l_mark[0]; } break; case 44: -#line 509 "parse.y" +#line 511 "parse.y" { /* This rule is written separately so the * reduction will occur before the trailing @@ -1287,7 +1281,7 @@ case 44: } break; case 45: -#line 536 "parse.y" +#line 538 "parse.y" { /* This is where concatenation of adjacent patterns * gets done. @@ -1296,11 +1290,11 @@ case 45: } break; case 46: -#line 544 "parse.y" +#line 546 "parse.y" { yyval = yystack.l_mark[0]; } break; case 47: -#line 547 "parse.y" +#line 549 "parse.y" { varlength = true; @@ -1329,7 +1323,7 @@ case 47: } break; case 48: -#line 575 "parse.y" +#line 577 "parse.y" { varlength = true; @@ -1344,7 +1338,7 @@ case 48: } break; case 49: -#line 589 "parse.y" +#line 591 "parse.y" { /* The series could be something like "(foo)", * in which case we have no idea what its length @@ -1365,7 +1359,7 @@ case 49: } break; case 50: -#line 611 "parse.y" +#line 613 "parse.y" { varlength = true; @@ -1373,21 +1367,21 @@ case 50: } break; case 51: -#line 618 "parse.y" +#line 620 "parse.y" { varlength = true; yyval = mkposcl( yystack.l_mark[-1] ); } break; case 52: -#line 624 "parse.y" +#line 626 "parse.y" { varlength = true; yyval = mkopt( yystack.l_mark[-1] ); } break; case 53: -#line 630 "parse.y" +#line 632 "parse.y" { varlength = true; @@ -1416,7 +1410,7 @@ case 53: } break; case 54: -#line 658 "parse.y" +#line 660 "parse.y" { varlength = true; @@ -1431,7 +1425,7 @@ case 54: } break; case 55: -#line 672 "parse.y" +#line 674 "parse.y" { /* The singleton could be something like "(foo)", * in which case we have no idea what its length @@ -1451,7 +1445,7 @@ case 55: } break; case 56: -#line 691 "parse.y" +#line 693 "parse.y" { if ( ! madeany ) { @@ -1486,11 +1480,11 @@ case 56: } break; case 57: -#line 725 "parse.y" +#line 727 "parse.y" { /* Sort characters for fast searching. */ - qsort( ccltbl + cclmap[yystack.l_mark[0]], ccllen[yystack.l_mark[0]], sizeof (*ccltbl), cclcmp ); + qsort( ccltbl + cclmap[yystack.l_mark[0]], (size_t) ccllen[yystack.l_mark[0]], sizeof (*ccltbl), cclcmp ); if ( useecs ) mkeccl( ccltbl + cclmap[yystack.l_mark[0]], ccllen[yystack.l_mark[0]], @@ -1505,7 +1499,7 @@ case 57: } break; case 58: -#line 743 "parse.y" +#line 745 "parse.y" { ++rulelen; @@ -1516,15 +1510,15 @@ case 58: } break; case 59: -#line 753 "parse.y" +#line 755 "parse.y" { yyval = yystack.l_mark[-1]; } break; case 60: -#line 756 "parse.y" +#line 758 "parse.y" { yyval = yystack.l_mark[-1]; } break; case 61: -#line 759 "parse.y" +#line 761 "parse.y" { ++rulelen; @@ -1539,26 +1533,26 @@ case 61: } break; case 62: -#line 773 "parse.y" +#line 775 "parse.y" { yyval = ccl_set_diff (yystack.l_mark[-2], yystack.l_mark[0]); } break; case 63: -#line 774 "parse.y" +#line 776 "parse.y" { yyval = ccl_set_union (yystack.l_mark[-2], yystack.l_mark[0]); } break; case 65: -#line 780 "parse.y" +#line 782 "parse.y" { yyval = yystack.l_mark[-1]; } break; case 66: -#line 783 "parse.y" +#line 785 "parse.y" { cclnegate( yystack.l_mark[-1] ); yyval = yystack.l_mark[-1]; } break; case 67: -#line 790 "parse.y" +#line 792 "parse.y" { if (sf_case_ins()) @@ -1619,7 +1613,7 @@ case 67: } break; case 68: -#line 850 "parse.y" +#line 852 "parse.y" { ccladd( yystack.l_mark[-1], yystack.l_mark[0] ); cclsorted = cclsorted && (yystack.l_mark[0] > lastchar); @@ -1638,7 +1632,7 @@ case 68: } break; case 69: -#line 868 "parse.y" +#line 870 "parse.y" { /* Too hard to properly maintain cclsorted. */ cclsorted = false; @@ -1646,7 +1640,7 @@ case 69: } break; case 70: -#line 875 "parse.y" +#line 877 "parse.y" { cclsorted = true; lastchar = 0; @@ -1654,31 +1648,31 @@ case 70: } break; case 71: -#line 883 "parse.y" +#line 885 "parse.y" { CCL_EXPR(isalnum); } break; case 72: -#line 884 "parse.y" +#line 886 "parse.y" { CCL_EXPR(isalpha); } break; case 73: -#line 885 "parse.y" +#line 887 "parse.y" { CCL_EXPR(IS_BLANK); } break; case 74: -#line 886 "parse.y" +#line 888 "parse.y" { CCL_EXPR(iscntrl); } break; case 75: -#line 887 "parse.y" +#line 889 "parse.y" { CCL_EXPR(isdigit); } break; case 76: -#line 888 "parse.y" +#line 890 "parse.y" { CCL_EXPR(isgraph); } break; case 77: -#line 889 "parse.y" +#line 891 "parse.y" { CCL_EXPR(islower); if (sf_case_ins()) @@ -1686,23 +1680,23 @@ case 77: } break; case 78: -#line 894 "parse.y" +#line 896 "parse.y" { CCL_EXPR(isprint); } break; case 79: -#line 895 "parse.y" +#line 897 "parse.y" { CCL_EXPR(ispunct); } break; case 80: -#line 896 "parse.y" +#line 898 "parse.y" { CCL_EXPR(isspace); } break; case 81: -#line 897 "parse.y" +#line 899 "parse.y" { CCL_EXPR(isxdigit); } break; case 82: -#line 898 "parse.y" +#line 900 "parse.y" { CCL_EXPR(isupper); if (sf_case_ins()) @@ -1710,65 +1704,65 @@ case 82: } break; case 83: -#line 904 "parse.y" +#line 906 "parse.y" { CCL_NEG_EXPR(isalnum); } break; case 84: -#line 905 "parse.y" +#line 907 "parse.y" { CCL_NEG_EXPR(isalpha); } break; case 85: -#line 906 "parse.y" +#line 908 "parse.y" { CCL_NEG_EXPR(IS_BLANK); } break; case 86: -#line 907 "parse.y" +#line 909 "parse.y" { CCL_NEG_EXPR(iscntrl); } break; case 87: -#line 908 "parse.y" +#line 910 "parse.y" { CCL_NEG_EXPR(isdigit); } break; case 88: -#line 909 "parse.y" +#line 911 "parse.y" { CCL_NEG_EXPR(isgraph); } break; case 89: -#line 910 "parse.y" +#line 912 "parse.y" { CCL_NEG_EXPR(isprint); } break; case 90: -#line 911 "parse.y" +#line 913 "parse.y" { CCL_NEG_EXPR(ispunct); } break; case 91: -#line 912 "parse.y" +#line 914 "parse.y" { CCL_NEG_EXPR(isspace); } break; case 92: -#line 913 "parse.y" +#line 915 "parse.y" { CCL_NEG_EXPR(isxdigit); } break; case 93: -#line 914 "parse.y" +#line 916 "parse.y" { if ( sf_case_ins() ) - warn(_("[:^lower:] is ambiguous in case insensitive scanner")); + lwarn(_("[:^lower:] is ambiguous in case insensitive scanner")); else CCL_NEG_EXPR(islower); } break; case 94: -#line 920 "parse.y" +#line 922 "parse.y" { if ( sf_case_ins() ) - warn(_("[:^upper:] ambiguous in case insensitive scanner")); + lwarn(_("[:^upper:] ambiguous in case insensitive scanner")); else CCL_NEG_EXPR(isupper); } break; case 95: -#line 929 "parse.y" +#line 931 "parse.y" { if ( yystack.l_mark[0] == nlch ) rule_has_nl[num_rules] = true; @@ -1784,10 +1778,10 @@ case 95: } break; case 96: -#line 944 "parse.y" +#line 946 "parse.y" { yyval = mkstate( SYM_EPSILON ); } break; -#line 1787 "parse.c" +#line 1782 "parse.c" } yystack.s_mark -= yym; yystate = *yystack.s_mark; @@ -1805,23 +1799,22 @@ break; *++yystack.l_mark = yyval; if (yychar < 0) { - if ((yychar = YYLEX) < 0) yychar = 0; + yychar = YYLEX; + if (yychar < 0) yychar = YYEOF; #if YYDEBUG if (yydebug) { - yys = 0; - if (yychar <= YYMAXTOKEN) yys = yyname[yychar]; - if (!yys) yys = "illegal-symbol"; + if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; printf("%sdebug: state %d, reading %d (%s)\n", YYPREFIX, YYFINAL, yychar, yys); } #endif } - if (yychar == 0) goto yyaccept; + if (yychar == YYEOF) goto yyaccept; goto yyloop; } - if ((yyn = yygindex[yym]) && (yyn += yystate) >= 0 && - yyn <= YYTABLESIZE && yycheck[yyn] == yystate) + if (((yyn = yygindex[yym]) != 0) && (yyn += yystate) >= 0 && + yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yystate) yystate = yytable[yyn]; else yystate = yydgoto[yym]; @@ -1830,16 +1823,13 @@ break; printf("%sdebug: after reduction, shifting from state %d \ to state %d\n", YYPREFIX, *yystack.s_mark, yystate); #endif - if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack)) - { - goto yyoverflow; - } - *++yystack.s_mark = (short) yystate; + if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; + *++yystack.s_mark = (YYINT) yystate; *++yystack.l_mark = yyval; goto yyloop; yyoverflow: - yyerror("yacc stack overflow"); + YYERROR_CALL("yacc stack overflow"); yyabort: yyfreestack(&yystack); diff --git a/usr.bin/lex/initparse.h b/usr.bin/lex/initparse.h index 6ede604579b5..fb0742445d55 100644 --- a/usr.bin/lex/initparse.h +++ b/usr.bin/lex/initparse.h @@ -7,13 +7,13 @@ #define NAME 262 #define PREVCCL 263 #define EOF_OP 264 -#define OPTION_OP 265 -#define OPT_OUTFILE 266 -#define OPT_PREFIX 267 -#define OPT_YYCLASS 268 -#define OPT_HEADER 269 -#define OPT_EXTRA_TYPE 270 -#define OPT_TABLES 271 +#define TOK_OPTION 265 +#define TOK_OUTFILE 266 +#define TOK_PREFIX 267 +#define TOK_YYCLASS 268 +#define TOK_HEADER_FILE 269 +#define TOK_EXTRA_TYPE 270 +#define TOK_TABLES_FILE 271 #define CCE_ALNUM 272 #define CCE_ALPHA 273 #define CCE_BLANK 274 diff --git a/usr.bin/lex/initscan.c b/usr.bin/lex/initscan.c index 58de7ebaa880..46070a4c6dc5 100644 --- a/usr.bin/lex/initscan.c +++ b/usr.bin/lex/initscan.c @@ -1,6 +1,6 @@ /* $FreeBSD$ */ -#line 3 "" +#line 2 "" #define YY_INT_ALIGNED short int @@ -8,8 +8,8 @@ #define FLEX_SCANNER #define YY_FLEX_MAJOR_VERSION 2 -#define YY_FLEX_MINOR_VERSION 5 -#define YY_FLEX_SUBMINOR_VERSION 37 +#define YY_FLEX_MINOR_VERSION 6 +#define YY_FLEX_SUBMINOR_VERSION 4 #if YY_FLEX_SUBMINOR_VERSION > 0 #define FLEX_BETA #endif @@ -17,11 +17,7 @@ /* First, we deal with platform-specific or compiler-specific issues. */ #if defined(__FreeBSD__) -#ifndef __STDC_LIMIT_MACROS -#define __STDC_LIMIT_MACROS -#endif #include -#include #else #define __dead2 #endif @@ -95,65 +91,61 @@ typedef unsigned int flex_uint32_t; #define UINT32_MAX (4294967295U) #endif +#ifndef SIZE_MAX +#define SIZE_MAX (~(size_t)0) +#endif + #endif /* ! C99 */ #endif /* ! FLEXINT_H */ -#ifdef __cplusplus +/* begin standard C++ headers. */ -/* The "const" storage-class-modifier is valid. */ -#define YY_USE_CONST - -#else /* ! __cplusplus */ - -/* C99 requires __STDC__ to be defined as 1. */ -#if defined (__STDC__) - -#define YY_USE_CONST - -#endif /* defined (__STDC__) */ -#endif /* ! __cplusplus */ - -#ifdef YY_USE_CONST +/* TODO: this is always defined, so inline it */ #define yyconst const + +#if defined(__GNUC__) && __GNUC__ >= 3 +#define yynoreturn __attribute__((__noreturn__)) #else -#define yyconst +#define yynoreturn #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. +/* Promotes a possibly negative, possibly signed char to an + * integer in range [0..255] for use as an array index. */ -#define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c) +#define YY_SC_TO_UI(c) ((YY_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_NEW_FILE yyrestart( yyin ) #define YY_END_OF_BUFFER_CHAR 0 /* Size of default input buffer. */ #ifndef YY_BUF_SIZE +#ifdef __ia64__ +/* On IA-64, the buffer size is 16k, not 8k. + * Moreover, YY_BUF_SIZE is 2*YY_READ_BUF_SIZE in the general case. + * Ditto for the __ia64__ case accordingly. + */ +#define YY_BUF_SIZE 32768 +#else #define YY_BUF_SIZE 16384 +#endif /* __ia64__ */ #endif /* The state buf must be large enough to hold one state per character in the main buffer. @@ -170,15 +162,16 @@ typedef struct yy_buffer_state *YY_BUFFER_STATE; typedef size_t yy_size_t; #endif -extern yy_size_t yyleng; +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 - + #define YY_LESS_LINENO(n) + #define YY_LINENO_REWIND_TO(ptr) /* Return all but the first "n" matched characters back to the input stream. */ #define yyless(n) \ @@ -193,7 +186,6 @@ extern FILE *yyin, *yyout; YY_DO_BEFORE_ACTION; /* set up yytext again */ \ } \ while ( 0 ) - #define unput(c) yyunput( c, (yytext_ptr) ) #ifndef YY_STRUCT_YY_BUFFER_STATE @@ -208,12 +200,12 @@ struct yy_buffer_state /* Size of input buffer in bytes, not including room for EOB * characters. */ - yy_size_t yy_buf_size; + int yy_buf_size; /* Number of characters read into yy_ch_buf, not including EOB * characters. */ - yy_size_t yy_n_chars; + 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 @@ -236,7 +228,7 @@ struct yy_buffer_state 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. */ @@ -264,7 +256,7 @@ 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. */ +static YY_BUFFER_STATE * yy_buffer_stack = NULL; /**< 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 @@ -276,7 +268,6 @@ static YY_BUFFER_STATE * yy_buffer_stack = 0; /**< Stack as an array. */ ? (yy_buffer_stack)[(yy_buffer_stack_top)] \ : NULL) #define yy_current_buffer YY_CURRENT_BUFFER - /* 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. */ @@ -284,11 +275,11 @@ static YY_BUFFER_STATE * yy_buffer_stack = 0; /**< Stack as an array. */ /* yy_hold_char holds the character lost when yytext is formed. */ static char yy_hold_char; -static yy_size_t yy_n_chars; /* number of characters read into yy_ch_buf */ -yy_size_t yyleng; +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 char *yy_c_buf_p = NULL; static int yy_init = 0; /* whether we need to initialize */ static int yy_start = 0; /* start state number */ @@ -297,85 +288,80 @@ static int yy_start = 0; /* start state number */ */ 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 ); +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 ); +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 ) -#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 ( const char *yy_str ); +YY_BUFFER_STATE yy_scan_bytes ( const char *bytes, int len ); -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,yy_size_t len ); - -void *yyalloc (yy_size_t ); -void *yyrealloc (void *,yy_size_t ); -void yyfree (void * ); +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_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_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 flex_uint8_t YY_CHAR; -typedef unsigned char YY_CHAR; - -FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0; +FILE *yyin = NULL, *yyout = NULL; typedef int yy_state_type; extern int yylineno; - int yylineno = 1; extern char *yytext; +#ifdef yytext_ptr +#undef yytext_ptr +#endif #define yytext_ptr 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[] ) __dead2; +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 yynoreturn yy_fatal_error ( const char* msg ) __dead2; /* 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; \ - (yytext_ptr) -= (yy_more_len); \ - yyleng = (size_t) (yy_cp - (yytext_ptr)); \ + yyleng = (int) (yy_cp - yy_bp); \ (yy_hold_char) = *yy_cp; \ *yy_cp = '\0'; \ (yy_c_buf_p) = yy_cp; - -#define YY_NUM_RULES 251 -#define YY_END_OF_BUFFER 252 +#define YY_NUM_RULES 253 +#define YY_END_OF_BUFFER 254 /* This struct is not used in this scanner, but its presence is necessary. */ struct yy_trans_info @@ -383,272 +369,134 @@ struct yy_trans_info flex_int32_t yy_verify; flex_int32_t yy_nxt; }; -static yyconst flex_int16_t yy_acclist[1223] = +static const flex_int16_t yy_accept[1114] = { 0, - 248, 248, 252, 250, 251, 9, 250, 251, 20, 250, - 251, 250, 251, 18, 250, 251, 1, 9, 250, 251, - 19, 20, 250, 251, 250, 251, 250, 251, 250, 251, - 250, 251, 17, 18, 250, 251, 164, 250, 251, 149, - 164, 250, 251, 150, 250, 251, 164, 250, 251, 142, - 164, 250, 251, 164, 250, 251, 161, 163, 164, 250, - 251, 162, 163, 164, 250, 251, 163, 164, 250, 251, - 163, 164, 250, 251, 164, 250, 251, 164, 250, 251, - 164, 250, 251, 163, 164, 250, 251, 148, 149, 164, - 250, 251, 138, 150, 250, 251, 164, 250, 251, 164, + 0, 0, 0, 0, 0, 0, 246, 246, 40, 40, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 21, 21, + 239, 239, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 21, 21, + 250, 250, 239, 239, 254, 252, 9, 20, 252, 18, + 1, 19, 252, 252, 252, 252, 17, 163, 148, 149, + 163, 141, 163, 160, 161, 162, 162, 163, 163, 163, + 162, 147, 137, 163, 163, 139, 140, 135, 136, 135, + 134, 133, 134, 246, 247, 247, 40, 42, 40, 41, - 250, 251, 140, 164, 250, 251, 141, 164, 250, 251, - 136, 250, 251, 137, 250, 251, 136, 250, 251, 135, - 136, 250, 251, 134, 136, 250, 251, 135, 136, 250, - 251, 248, 249, 250, 251, 248, 249, 250, 251, 249, - 250, 251, 249, 250, 251, 41, 250, 251, 42, 250, - 251, 41, 250, 251, 41, 250, 251, 41, 250, 251, - 41, 250, 251, 41, 250, 251, 41, 250, 251, 50, - 250, 251, 49, 250, 251, 51, 250, 251, 250, 251, - 170, 250, 251, 170, 250, 251, 165, 250, 251, 170, - 250, 251, 166, 170, 250, 251, 167, 170, 250, 251, + 40, 40, 41, 41, 41, 50, 49, 51, 252, 169, + 169, 164, 169, 165, 166, 168, 170, 218, 219, 218, + 216, 215, 217, 171, 173, 171, 172, 171, 185, 185, + 185, 185, 187, 189, 187, 187, 187, 187, 188, 228, + 233, 228, 232, 231, 234, 229, 229, 229, 234, 234, + 226, 227, 252, 130, 252, 21, 23, 21, 22, 22, + 22, 235, 241, 235, 236, 242, 242, 242, 224, 224, + 225, 224, 224, 224, 224, 224, 224, 224, 129, 53, + 52, 129, 129, 129, 129, 54, 129, 129, 129, 129, + 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, - 169, 170, 250, 251, 171, 250, 251, 219, 250, 251, - 220, 250, 251, 219, 250, 251, 217, 219, 250, 251, - 216, 219, 250, 251, 218, 219, 250, 251, 172, 250, - 251, 174, 250, 251, 172, 250, 251, 173, 250, 251, - 172, 250, 251, 186, 250, 251, 186, 250, 251, 186, - 250, 251, 186, 250, 251, 188, 190, 250, 251, 190, - 250, 251, 188, 190, 250, 251, 188, 190, 250, 251, - 188, 190, 250, 251, 188, 190, 250, 251, 189, 190, - 250, 251, 233, 239, 250, 251, 238, 250, 251, 233, - 239, 250, 251, 237, 239, 250, 251, 239, 250, 251, + 129, 129, 129, 129, 129, 129, 129, 36, 33, 36, + 34, 48, 45, 252, 48, 48, 44, 43, 175, 174, + 176, 177, 178, 179, 180, 181, 182, 31, 32, 31, + 30, 28, 29, 28, 27, 22, 250, 251, 251, 237, + 237, 238, 9, 20, 0, 18, 1, 19, 0, 0, + 0, 16, 10, 0, 0, 0, 0, 4, 16, 5, + 0, 2, 17, 148, 149, 0, 0, 0, 143, 0, + 159, 157, 0, 153, 153, 0, 243, 243, 243, 0, + 0, 142, 0, 147, 137, 0, 0, 0, 139, 140, + 152, 138, 0, 136, 134, 133, 131, 132, 246, 244, - 239, 250, 251, 235, 239, 250, 251, 235, 239, 250, - 251, 235, 239, 250, 251, 234, 239, 250, 251, 234, - 239, 250, 251, 229, 239, 250, 251, 230, 239, 250, - 251, 250, 251, 131, 250, 251, 250, 251, 25, 250, - 251, 26, 250, 251, 25, 250, 251, 22, 250, 251, - 25, 250, 251, 25, 250, 251, 240, 244, 250, 251, - 242, 250, 251, 240, 244, 250, 251, 243, 244, 250, - 251, 244, 250, 251, 227, 250, 251, 227, 250, 251, - 228, 250, 251, 227, 250, 251, 227, 250, 251, 227, - 250, 251, 227, 250, 251, 227, 250, 251, 227, 250, + 245, 40, 42, 40, 40, 37, 38, 0, 50, 49, + 51, 0, 164, 0, 164, 167, 168, 219, 215, 173, + 0, 183, 184, 189, 186, 228, 233, 0, 0, 221, + 229, 229, 229, 0, 130, 0, 21, 23, 24, 235, + 241, 240, 239, 240, 0, 0, 225, 220, 0, 0, + 53, 52, 0, 128, 0, 0, 129, 129, 129, 129, + 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, + 129, 129, 129, 129, 129, 129, 55, 129, 129, 129, + 129, 129, 129, 129, 129, 129, 129, 129, 0, 35, + 34, 48, 45, 46, 47, 31, 32, 29, 26, 25, - 251, 227, 250, 251, 130, 250, 251, 53, 130, 250, - 251, 52, 250, 251, 130, 250, 251, 130, 250, 251, - 130, 250, 251, 130, 250, 251, 54, 130, 250, 251, - 130, 250, 251, 130, 250, 251, 130, 250, 251, 130, - 250, 251, 130, 250, 251, 130, 250, 251, 130, 250, - 251, 130, 250, 251, 130, 250, 251, 130, 250, 251, - 130, 250, 251, 130, 250, 251, 130, 250, 251, 130, - 250, 251, 130, 250, 251, 130, 250, 251, 130, 250, - 251, 130, 250, 251, 130, 250, 251, 130, 250, 251, - 130, 250, 251, 37, 250, 251, 34, 250, 251, 37, + 250, 248, 249, 237, 0, 16, 10, 0, 14, 0, + 0, 0, 0, 0, 4, 16, 5, 0, 6, 0, + 144, 0, 145, 0, 158, 0, 153, 153, 0, 153, + 153, 153, 243, 243, 155, 154, 0, 156, 138, 146, + 0, 152, 0, 131, 132, 40, 40, 0, 39, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 230, 229, 229, 0, 0, 220, 0, 0, + 0, 0, 129, 129, 129, 129, 129, 129, 65, 129, + 129, 129, 70, 129, 129, 129, 129, 129, 129, 129, + 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, - 250, 251, 35, 37, 250, 251, 48, 250, 251, 45, - 250, 251, 250, 251, 48, 250, 251, 48, 250, 251, - 44, 250, 251, 43, 250, 251, 176, 250, 251, 175, - 250, 251, 177, 250, 251, 178, 250, 251, 179, 250, - 251, 180, 250, 251, 181, 250, 251, 182, 250, 251, - 183, 250, 251, 32, 250, 251, 33, 250, 251, 32, - 250, 251, 31, 250, 251, 29, 250, 251, 30, 250, - 251, 29, 250, 251, 28, 250, 251, 9, 20, 18, - 1, 9, 19, 20, 16, 10, 16, 4, 16, 5, - 2, 17, 18, 149, 150, 144, 160, 158, 154, 154, + 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, + 129, 129, 129, 129, 129, 129, 129, 129, 0, 0, + 0, 0, 14, 0, 0, 0, 0, 0, 0, 4, + 8, 5, 0, 153, 153, 153, 153, 153, 153, 153, + 243, 156, 0, 0, 40, 40, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 229, 229, + 0, 0, 56, 57, 129, 129, 129, 129, 129, 129, + 129, 129, 129, 129, 71, 72, 129, 129, 129, 129, + 77, 78, 129, 129, 129, 129, 129, 129, 129, 83, - 245, 245, 245, 143, 148, 149, 138, 150, 140, 141, - 153, 139, 137, 135, 134, 134, 132, 135, 133, 135, - 248, 248, 246, 247, 42, 39, 40, 50, 49, 51, - 165, 165, 168, 169, 220, 216, 174, 184, 185, 190, - 187, 233, 238, 236, 222, 235, 235, 235, 231, 232, - 131, 26, 21, 23, 24, 240, 242, 241, 228, 221, - 225, 226, 53, 52, 129, 130, 130, 130, 130, 130, - 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, - 130, 130, 130, 130, 130, 55, 130, 130, 130, 130, - 130, 130, 130, 130, 130, 130, 130, 36, 35, 45, + 129, 129, 129, 129, 129, 129, 129, 129, 129, 92, + 129, 129, 129, 129, 129, 129, 129, 129, 129, 0, + 0, 0, 0, 15, 0, 0, 0, 0, 0, 8, + 8, 8, 0, 153, 153, 153, 153, 153, 153, 153, + 0, 0, 40, 40, 214, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 229, 229, + 0, 0, 58, 129, 60, 129, 62, 129, 129, 129, + 129, 68, 129, 129, 129, 73, 129, 129, 129, 129, + 129, 129, 129, 129, 129, 129, 129, 86, 129, 129, - 46, 47, 32, 33, 30, 27, 16, 10, 16, 14, - 4, 16, 5, 6, 145, 146, 159, 154, 154, 154, - 154, 154, 245, 245, 156, 155, 157, 139, 145, 147, - 153, 132, 135, 133, 135, 38, 235, 235, 221, 130, - 130, 130, 130, 130, 130, 130, 67, 130, 130, 130, - 130, 72, 130, 130, 130, 130, 130, 130, 130, 130, - 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, - 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, - 130, 130, 130, 130, 130, 130, 130, 14, 15, 4, - 8, 16, 5, 154, 154, 154, 154, 154, 154, 154, + 129, 129, 90, 129, 129, 129, 129, 129, 129, 129, + 129, 129, 129, 0, 0, 0, 0, 3, 0, 0, + 0, 8, 7, 8, 0, 153, 153, 153, 0, 0, + 40, 40, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 222, 223, 222, 223, + 129, 61, 129, 129, 129, 129, 129, 129, 129, 125, + 129, 129, 129, 129, 129, 129, 129, 129, 123, 129, + 85, 129, 88, 129, 89, 129, 129, 129, 104, 0, + 129, 94, 129, 0, 95, 0, 0, 0, 0, 0, - 245, 157, 235, 235, 56, 57, 130, 130, 130, 130, - 130, 130, 130, 130, 130, 130, 130, 73, 130, 74, - 130, 130, 130, 130, 130, 79, 130, 130, 130, 130, - 130, 130, 130, 130, 84, 130, 130, 130, 130, 130, - 130, 130, 130, 130, 130, 93, 130, 130, 130, 130, - 130, 130, 130, 130, 130, 130, 15, 8, 16, 8, - 16, 8, 16, 154, 154, 154, 154, 154, 154, 154, - 215, 235, 235, 58, 130, 130, 130, 60, 130, 130, - 64, 130, 130, 130, 130, 130, 70, 130, 130, 130, - 130, 75, 130, 130, 130, 130, 130, 130, 130, 130, + 12, 0, 13, 0, 151, 0, 150, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 129, 129, 129, 129, 129, 66, 129, 69, 129, + 129, 129, 129, 129, 129, 122, 129, 82, 129, 129, + 87, 129, 91, 102, 124, 0, 0, 0, 0, 0, + 0, 129, 129, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 150, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 129, 129, - 130, 130, 130, 130, 87, 130, 130, 130, 130, 130, - 91, 130, 130, 130, 130, 130, 130, 130, 130, 130, - 130, 130, 3, 8, 16, 7, 8, 16, 154, 154, - 154, 223, 224, 223, 235, 224, 235, 130, 130, 130, - 63, 130, 130, 130, 130, 130, 130, 130, 130, 126, - 130, 130, 130, 130, 130, 130, 130, 130, 130, 124, - 130, 130, 86, 130, 130, 89, 130, 130, 90, 130, - 130, 130, 130, 105, 130, 130, 95, 130, 130, 96, - 130, 12, 13, 152, 151, 152, 130, 130, 130, 130, - 130, 130, 130, 68, 130, 130, 71, 130, 130, 130, + 129, 129, 129, 67, 129, 129, 129, 129, 79, 129, + 129, 129, 129, 129, 129, 0, 0, 113, 0, 0, + 0, 0, 0, 0, 93, 129, 0, 0, 114, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, + 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, + 200, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 129, 129, 129, 129, 129, 129, + 129, 129, 129, 129, 129, 129, 84, 129, 129, 0, + 0, 0, 0, 0, 0, 115, 0, 103, 0, 0, + 0, 0, 0, 116, 0, 0, 0, 0, 0, 201, - 130, 130, 130, 130, 123, 130, 130, 83, 130, 130, - 130, 88, 130, 130, 92, 130, 103, 130, 125, 130, - 130, 130, 151, 130, 130, 130, 130, 130, 130, 130, - 69, 130, 130, 130, 130, 130, 80, 130, 130, 130, - 130, 130, 130, 130, 114, 94, 130, 130, 115, 11, - 191, 215, 192, 215, 193, 215, 194, 215, 195, 215, - 196, 215, 197, 215, 198, 215, 199, 215, 200, 215, - 201, 215, 130, 130, 130, 130, 130, 130, 130, 130, - 130, 130, 130, 130, 130, 130, 85, 130, 130, 130, - 116, 104, 130, 117, 202, 215, 203, 215, 204, 215, + 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, + 212, 0, 129, 129, 129, 129, 129, 121, 129, 129, + 75, 129, 129, 129, 129, 129, 0, 0, 109, 0, + 119, 117, 110, 0, 0, 0, 120, 118, 0, 0, + 0, 0, 0, 0, 213, 129, 129, 129, 129, 129, + 125, 74, 129, 81, 129, 126, 129, 105, 107, 0, + 106, 108, 0, 0, 0, 0, 0, 0, 0, 129, + 63, 129, 129, 129, 129, 76, 129, 111, 112, 97, + 0, 0, 0, 0, 98, 129, 129, 129, 129, 129, + 127, 96, 0, 100, 0, 129, 129, 129, 66, 129, - 205, 215, 206, 215, 207, 215, 208, 215, 209, 215, - 210, 215, 211, 215, 212, 215, 213, 215, 130, 130, - 130, 130, 130, 130, 130, 122, 130, 130, 130, 77, - 130, 130, 130, 130, 130, 130, 110, 120, 118, 111, - 121, 119, 214, 215, 130, 130, 130, 130, 130, 130, - 130, 126, 130, 76, 130, 130, 82, 130, 130, 127, - 130, 130, 106, 108, 107, 109, 130, 130, 130, 65, - 130, 130, 130, 130, 130, 78, 130, 130, 112, 113, - 98, 99, 130, 130, 130, 130, 130, 130, 130, 128, - 130, 97, 101, 130, 130, 130, 130, 130, 68, 130, - - 130, 100, 102, 130, 130, 62, 130, 66, 130, 130, - 130, 130, 61, 130, 69, 130, 130, 130, 81, 130, - 59, 130 + 99, 101, 129, 64, 129, 129, 129, 67, 129, 129, + 80, 59, 0 } ; -static yyconst flex_int16_t yy_accept[1108] = - { 0, - 1, 1, 1, 1, 1, 1, 1, 2, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, - 6, 9, 12, 14, 17, 21, 25, 27, 29, 31, - 33, 37, 40, 44, 47, 50, 54, 57, 62, 67, - 71, 75, 78, 81, 84, 88, 93, 97, 100, 103, - 107, 111, 114, 117, 120, 124, 128, 132, 136, 140, - 143, 146, 149, 152, 155, 158, 161, 164, 167, 170, - - 173, 176, 179, 181, 184, 187, 190, 193, 197, 201, - 205, 208, 211, 214, 217, 221, 225, 229, 232, 235, - 238, 241, 244, 247, 250, 253, 256, 260, 263, 267, - 271, 275, 279, 283, 287, 290, 294, 298, 301, 304, - 308, 312, 316, 320, 324, 328, 332, 334, 337, 339, - 342, 345, 348, 351, 354, 357, 361, 364, 368, 372, - 375, 378, 381, 384, 387, 390, 393, 396, 399, 402, - 405, 408, 412, 415, 418, 421, 424, 427, 431, 434, - 437, 440, 443, 446, 449, 452, 455, 458, 461, 464, - 467, 470, 473, 476, 479, 482, 485, 488, 491, 494, - - 497, 500, 503, 507, 510, 513, 515, 518, 521, 524, - 527, 530, 533, 536, 539, 542, 545, 548, 551, 554, - 557, 560, 563, 566, 569, 572, 575, 578, 579, 580, - 580, 581, 583, 585, 585, 585, 585, 586, 588, 588, - 588, 588, 588, 589, 590, 591, 591, 592, 594, 595, - 596, 596, 596, 596, 597, 597, 598, 599, 599, 600, - 601, 601, 602, 603, 604, 604, 604, 605, 605, 607, - 609, 609, 609, 609, 610, 611, 612, 613, 613, 614, - 615, 616, 617, 619, 621, 622, 623, 624, 625, 626, - 626, 626, 627, 628, 628, 629, 630, 631, 631, 632, - - 632, 633, 634, 635, 636, 637, 638, 638, 639, 640, - 641, 642, 643, 644, 644, 645, 645, 646, 647, 648, - 649, 650, 651, 651, 652, 652, 653, 654, 655, 656, - 657, 658, 659, 659, 659, 660, 661, 662, 663, 664, - 665, 665, 666, 666, 666, 667, 668, 669, 670, 671, - 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, - 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, - 692, 693, 694, 695, 696, 697, 698, 698, 699, 700, - 701, 702, 703, 704, 705, 706, 707, 707, 708, 710, - 710, 711, 711, 711, 711, 711, 711, 712, 713, 714, - - 714, 715, 715, 716, 716, 717, 717, 718, 718, 719, - 720, 720, 721, 722, 723, 724, 725, 726, 727, 727, - 728, 730, 731, 731, 732, 732, 734, 736, 736, 736, - 736, 737, 737, 737, 737, 737, 737, 737, 737, 737, - 737, 737, 737, 737, 737, 738, 739, 740, 740, 740, - 741, 742, 743, 744, 745, 746, 747, 749, 750, 751, - 752, 754, 755, 756, 757, 758, 759, 760, 761, 762, - 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, - 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, - 783, 784, 785, 786, 787, 788, 788, 788, 788, 788, - - 790, 790, 790, 790, 790, 790, 790, 791, 793, 794, - 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, - 803, 803, 803, 803, 803, 803, 803, 803, 803, 803, - 803, 803, 803, 803, 803, 803, 803, 803, 803, 803, - 803, 803, 803, 803, 803, 803, 804, 805, 806, 807, - 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, - 818, 820, 822, 823, 824, 825, 826, 828, 829, 830, - 831, 832, 833, 834, 835, 837, 838, 839, 840, 841, - 842, 843, 844, 845, 846, 848, 849, 850, 851, 852, - 853, 854, 855, 856, 857, 857, 857, 857, 857, 858, - - 858, 858, 858, 858, 858, 860, 862, 864, 864, 865, - 866, 867, 868, 869, 870, 871, 871, 871, 871, 871, - 872, 872, 872, 872, 872, 872, 872, 872, 872, 872, - 872, 872, 872, 872, 872, 872, 872, 872, 872, 872, - 872, 872, 872, 872, 873, 874, 876, 877, 878, 880, - 881, 883, 884, 885, 886, 887, 889, 890, 891, 892, - 894, 895, 896, 897, 898, 899, 900, 901, 902, 903, - 904, 905, 907, 908, 909, 910, 911, 913, 914, 915, - 916, 917, 918, 919, 920, 921, 922, 923, 923, 923, - 923, 923, 924, 924, 924, 924, 926, 927, 929, 929, - - 930, 931, 932, 932, 932, 933, 934, 934, 934, 934, - 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, - 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, - 934, 936, 938, 939, 940, 941, 943, 944, 945, 946, - 947, 948, 949, 950, 952, 953, 954, 955, 956, 957, - 958, 959, 960, 962, 963, 965, 966, 968, 969, 971, - 972, 973, 974, 976, 976, 977, 979, 980, 980, 982, - 982, 982, 982, 982, 982, 983, 983, 984, 984, 985, - 985, 987, 987, 987, 987, 987, 987, 987, 987, 987, - 987, 987, 987, 987, 987, 987, 987, 987, 987, 987, - - 987, 987, 987, 987, 987, 987, 988, 989, 990, 991, - 992, 993, 994, 996, 997, 999, 1000, 1001, 1002, 1003, - 1004, 1005, 1007, 1008, 1010, 1011, 1012, 1014, 1015, 1017, - 1019, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1022, 1023, - 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, - 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, - 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, - 1024, 1024, 1024, 1024, 1024, 1025, 1026, 1027, 1028, 1029, - 1030, 1031, 1033, 1034, 1035, 1036, 1037, 1039, 1040, 1041, - 1042, 1043, 1044, 1045, 1045, 1045, 1046, 1046, 1046, 1046, - - 1046, 1046, 1046, 1048, 1049, 1049, 1049, 1050, 1050, 1050, - 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1051, 1051, 1053, - 1055, 1057, 1059, 1061, 1063, 1065, 1067, 1069, 1071, 1073, - 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, - 1073, 1073, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, - 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1089, 1090, 1091, - 1091, 1091, 1091, 1091, 1091, 1091, 1092, 1092, 1094, 1094, - 1094, 1094, 1094, 1094, 1095, 1095, 1095, 1095, 1095, 1095, - 1097, 1099, 1101, 1103, 1105, 1107, 1109, 1111, 1113, 1115, - 1117, 1119, 1119, 1120, 1121, 1122, 1123, 1124, 1125, 1126, - - 1128, 1129, 1130, 1132, 1133, 1134, 1135, 1136, 1137, 1137, - 1137, 1138, 1138, 1139, 1140, 1141, 1141, 1141, 1141, 1142, - 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1145, 1146, 1147, - 1148, 1149, 1150, 1151, 1152, 1154, 1156, 1157, 1159, 1160, - 1162, 1163, 1164, 1165, 1165, 1166, 1167, 1167, 1167, 1167, - 1167, 1167, 1167, 1167, 1168, 1169, 1170, 1172, 1173, 1174, - 1175, 1176, 1178, 1179, 1180, 1181, 1182, 1182, 1182, 1182, - 1182, 1183, 1184, 1185, 1186, 1187, 1188, 1189, 1190, 1192, - 1193, 1193, 1194, 1194, 1195, 1196, 1197, 1198, 1199, 1201, - 1202, 1203, 1204, 1205, 1206, 1208, 1210, 1211, 1212, 1213, - - 1215, 1217, 1218, 1219, 1221, 1223, 1223 - } ; - -static yyconst flex_int32_t yy_ec[256] = +static const YY_CHAR yy_ec[256] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, 4, 4, 5, 1, 1, 1, 1, 1, 1, 1, @@ -680,742 +528,806 @@ static yyconst flex_int32_t yy_ec[256] = 1, 1, 1, 1, 1 } ; -static yyconst flex_int32_t yy_meta[85] = +static const YY_CHAR yy_meta[85] = { 0, - 1, 1, 2, 1, 3, 4, 1, 1, 1, 5, - 1, 6, 1, 7, 1, 8, 1, 5, 9, 9, - 9, 9, 10, 1, 1, 1, 1, 11, 11, 11, - 11, 11, 11, 12, 12, 12, 12, 12, 12, 12, - 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, - 12, 12, 13, 14, 15, 1, 16, 11, 11, 11, - 11, 11, 11, 12, 12, 12, 12, 12, 12, 12, - 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, - 12, 5, 1, 17 + 1, 1, 2, 1, 3, 4, 1, 1, 5, 6, + 1, 7, 8, 9, 1, 10, 1, 11, 12, 12, + 12, 12, 13, 1, 1, 1, 1, 14, 14, 14, + 14, 14, 14, 15, 15, 15, 15, 15, 15, 15, + 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, + 15, 15, 16, 17, 18, 1, 19, 14, 14, 14, + 14, 14, 14, 15, 15, 15, 15, 15, 15, 15, + 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, + 15, 20, 1, 21 } ; -static yyconst flex_int16_t yy_base[1201] = +static const flex_int16_t yy_base[1221] = { 0, - 0, 84, 167, 250, 171, 184, 174, 179, 192, 233, - 196, 200, 334, 0, 3343, 3340, 203, 416, 206, 211, - 187, 216, 276, 417, 500, 0, 210, 223, 421, 427, - 436, 440, 583, 588, 669, 0, 277, 299, 584, 751, - 579, 580, 576, 732, 279, 305, 310, 444, 3378, 3975, - 228, 3975, 3371, 0, 322, 3975, 3358, 423, 827, 3328, - 0, 3975, 755, 3975, 3337, 3975, 448, 3312, 3975, 3975, - 3323, 3291, 222, 408, 444, 764, 3975, 3311, 230, 3289, - 3975, 3975, 3975, 3306, 0, 3306, 164, 3304, 3975, 3236, - 3217, 3975, 3975, 3266, 239, 119, 3215, 3212, 3180, 0, + 0, 84, 167, 250, 171, 184, 135, 142, 220, 231, + 196, 200, 334, 0, 3627, 3625, 211, 416, 203, 212, + 189, 225, 266, 417, 500, 0, 207, 208, 234, 421, + 424, 436, 583, 588, 669, 0, 294, 304, 584, 751, + 579, 580, 417, 576, 287, 306, 241, 441, 595, 608, + 169, 238, 440, 754, 3680, 4511, 325, 4511, 3676, 0, + 446, 4511, 3673, 430, 827, 3661, 0, 4511, 758, 4511, + 3650, 4511, 453, 3621, 4511, 4511, 3619, 3584, 129, 746, + 445, 766, 4511, 3604, 198, 3582, 4511, 4511, 4511, 3600, + 0, 3599, 214, 0, 3506, 3483, 0, 4511, 3532, 4511, - 3248, 3975, 3243, 3975, 476, 3227, 3222, 3975, 3168, 0, - 3975, 3975, 3975, 3203, 3975, 464, 3975, 3975, 3975, 3186, - 3975, 742, 3975, 3161, 751, 180, 3975, 3975, 3171, 0, - 3149, 757, 3975, 0, 3975, 3149, 3975, 200, 3138, 0, - 429, 241, 3097, 3092, 3975, 3975, 306, 3975, 323, 3975, - 3975, 3126, 3108, 3072, 3069, 0, 3975, 3115, 3975, 0, - 3975, 446, 3975, 3114, 3031, 3098, 435, 371, 3045, 3026, - 3975, 3076, 3975, 3074, 3070, 439, 440, 3975, 578, 751, - 586, 562, 735, 752, 0, 572, 577, 588, 786, 749, - 396, 809, 727, 582, 747, 753, 764, 769, 580, 3975, + 420, 119, 3481, 3478, 3446, 0, 3526, 4511, 3520, 4511, + 482, 3520, 3518, 4511, 3455, 0, 4511, 4511, 4511, 3504, + 4511, 598, 4511, 4511, 4511, 3499, 4511, 754, 4511, 3477, + 759, 180, 4511, 4511, 3467, 0, 3442, 762, 4511, 0, + 4511, 3459, 4511, 3406, 3434, 0, 562, 167, 3393, 3370, + 4511, 4511, 326, 4511, 420, 0, 4511, 3418, 3402, 3366, + 3342, 0, 4511, 3368, 4511, 3317, 444, 3314, 4511, 471, + 4511, 3354, 3271, 3337, 572, 189, 3295, 3285, 4511, 3332, + 4511, 3307, 3303, 585, 594, 4511, 746, 734, 744, 754, + 763, 770, 0, 755, 748, 763, 818, 789, 240, 822, - 3975, 3067, 588, 3975, 3975, 3053, 3002, 2996, 3975, 3975, - 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 0, - 3975, 3046, 3975, 3975, 3975, 3018, 2986, 837, 3975, 2998, - 0, 847, 3975, 2997, 817, 777, 0, 0, 891, 903, - 912, 924, 0, 774, 0, 451, 3975, 0, 858, 3975, - 2996, 2914, 472, 3975, 2974, 2953, 3975, 791, 236, 822, - 899, 3975, 275, 0, 2873, 2872, 3975, 2871, 949, 3975, - 2949, 2850, 2918, 2906, 3975, 0, 3975, 796, 3975, 0, - 0, 2925, 0, 0, 2597, 3975, 3975, 3975, 3975, 795, - 794, 3975, 3975, 484, 0, 2597, 3975, 877, 2596, 2594, + 762, 381, 802, 791, 813, 824, 577, 4511, 4511, 3302, + 871, 0, 4511, 3302, 3250, 3231, 4511, 4511, 4511, 4511, + 4511, 4511, 4511, 4511, 4511, 4511, 4511, 0, 4511, 3279, + 4511, 4511, 4511, 3276, 3260, 3259, 0, 3221, 3214, 0, + 3264, 4511, 835, 4511, 3262, 0, 903, 4511, 3257, 842, + 817, 0, 0, 910, 914, 918, 922, 0, 814, 0, + 457, 4511, 0, 943, 4511, 3241, 3141, 483, 4511, 3217, + 3212, 4511, 826, 556, 903, 930, 4511, 757, 0, 3134, + 3131, 4511, 3129, 964, 4511, 3190, 3110, 3174, 3161, 4511, + 0, 4511, 896, 4511, 0, 3172, 0, 0, 0, 4511, - 2594, 3975, 0, 3975, 918, 3975, 1005, 3975, 3975, 3975, - 3975, 0, 3975, 611, 3975, 0, 3975, 0, 853, 851, - 3975, 3975, 490, 3975, 608, 3975, 3975, 3975, 3975, 0, - 3975, 3975, 596, 2510, 3975, 0, 3975, 3975, 2588, 3975, - 2581, 3975, 894, 906, 0, 911, 717, 727, 923, 728, - 2571, 882, 930, 889, 902, 916, 917, 940, 928, 923, - 940, 933, 0, 932, 3975, 935, 939, 951, 956, 1059, - 964, 965, 1052, 955, 957, 1099, 2578, 3975, 1078, 3975, - 3975, 3975, 0, 3975, 3975, 3975, 987, 0, 0, 1087, - 3975, 2576, 1132, 985, 1046, 1058, 0, 1058, 0, 1009, + 4511, 0, 4511, 910, 913, 4511, 4511, 602, 0, 3169, + 4511, 957, 3164, 3161, 3127, 4511, 0, 4511, 976, 4511, + 1020, 4511, 4511, 4511, 4511, 0, 4511, 3116, 0, 4511, + 0, 926, 930, 644, 4511, 662, 0, 4511, 4511, 0, + 4511, 4511, 3071, 3121, 794, 3037, 4511, 0, 934, 932, + 3117, 4511, 3091, 4511, 938, 939, 0, 940, 738, 956, + 802, 3059, 876, 978, 933, 933, 939, 948, 964, 1030, + 938, 958, 976, 968, 0, 996, 4511, 999, 1057, 1068, + 981, 1079, 1077, 1080, 1074, 1068, 1070, 1120, 3062, 4511, + 1014, 0, 4511, 4511, 4511, 0, 4511, 4511, 4511, 4511, - 3975, 1016, 3975, 1057, 3975, 1099, 3975, 1068, 731, 1088, - 1095, 1178, 1244, 1280, 988, 0, 3975, 3975, 2492, 1162, - 3975, 3975, 1081, 0, 1086, 0, 0, 1098, 1105, 1100, - 3975, 1167, 1245, 1246, 1247, 1250, 2539, 1248, 1249, 1258, - 1244, 1251, 1259, 1321, 1233, 1224, 0, 1072, 1228, 1243, - 1261, 1287, 1298, 1289, 1298, 1287, 0, 1299, 1228, 1308, - 0, 1280, 1298, 1307, 1316, 1314, 1316, 2532, 1322, 1337, - 1338, 1340, 1342, 1342, 1348, 1353, 1356, 1347, 1357, 1362, - 1366, 1358, 1353, 1356, 1377, 1366, 1370, 1371, 1367, 1383, - 1384, 1379, 1391, 1392, 1381, 1388, 1397, 1275, 1455, 3975, + 0, 4511, 4511, 0, 1078, 0, 0, 1153, 4511, 3063, + 1166, 1077, 1076, 1091, 0, 1089, 0, 1018, 4511, 1022, + 4511, 1025, 4511, 1035, 4511, 1091, 1067, 1138, 1162, 1242, + 1177, 1308, 1105, 0, 4511, 4511, 2954, 1198, 4511, 4511, + 1144, 0, 1137, 0, 0, 1161, 1156, 1123, 4511, 1202, + 1308, 1309, 1310, 1319, 3013, 1312, 1311, 1327, 1320, 1321, + 1323, 1382, 4511, 1172, 1166, 2589, 2537, 0, 1178, 1169, + 1169, 1298, 1315, 1324, 1330, 1321, 1330, 1323, 0, 1341, + 1332, 1348, 0, 1346, 1350, 1348, 1361, 1350, 1367, 2573, + 1370, 1366, 1380, 1382, 1382, 1385, 1378, 1387, 1391, 1400, - 1439, 1463, 1444, 1415, 1412, 1415, 0, 1409, 0, 1429, - 1492, 1558, 1594, 1524, 2449, 1564, 1639, 3975, 3975, 1537, - 1556, 1560, 1407, 2427, 1558, 1563, 1559, 1564, 1572, 1584, - 1574, 1562, 1615, 1619, 1609, 1625, 1626, 1643, 1614, 1651, - 1662, 1658, 1664, 1665, 1616, 1616, 1637, 3975, 3975, 1638, - 1631, 2352, 1634, 1641, 1655, 1650, 1677, 1679, 1671, 1689, - 0, 0, 1690, 1677, 1681, 1697, 0, 2348, 1684, 1694, - 2274, 1686, 1685, 1695, 0, 1692, 1711, 1704, 1703, 1701, - 1713, 1703, 1704, 1712, 0, 1717, 1731, 1731, 1719, 1723, - 1722, 1741, 1726, 1742, 1734, 1747, 1741, 2241, 3975, 1464, + 1393, 1403, 1406, 1414, 1400, 1401, 1404, 1429, 1419, 1424, + 1428, 1425, 1436, 1435, 1430, 1441, 1442, 1432, 1432, 1450, + 1209, 1508, 4511, 1215, 1512, 1219, 1461, 1455, 1451, 0, + 1143, 0, 1461, 1534, 1600, 1636, 204, 2525, 1606, 1681, + 4511, 4511, 1453, 1463, 1591, 1442, 2524, 1599, 1604, 1600, + 1607, 1605, 1611, 1608, 1650, 1620, 1606, 1614, 1613, 1654, + 1663, 1652, 1661, 1666, 1682, 1664, 1693, 1694, 1655, 1674, + 1662, 1675, 4511, 4511, 1683, 1676, 1677, 1683, 1697, 1692, + 1731, 1711, 1702, 1718, 0, 0, 1719, 1706, 1716, 1735, + 0, 0, 2553, 1722, 1732, 2540, 1725, 1722, 1733, 0, - 1485, 1729, 1743, 1740, 0, 1721, 1591, 2173, 1585, 2139, - 1771, 1807, 1417, 962, 1426, 1755, 2049, 1745, 1769, 3975, - 1774, 1782, 1789, 1775, 1796, 1791, 1810, 1800, 1820, 1822, - 1821, 1823, 1832, 1831, 1838, 1840, 1853, 1856, 1854, 1855, - 1863, 1865, 1861, 1846, 1862, 0, 1853, 1864, 0, 1857, - 0, 2008, 1866, 1862, 1869, 0, 1874, 1893, 1870, 0, - 1888, 1875, 1886, 1882, 1880, 1878, 1897, 1876, 1882, 1889, - 1889, 0, 1904, 1895, 1899, 1919, 0, 1907, 1909, 1908, - 1923, 1791, 1924, 1925, 1919, 1747, 1917, 1918, 1918, 1938, - 1924, 1726, 1599, 1927, 1937, 1970, 3975, 1702, 1652, 1923, + 1727, 1747, 1740, 1739, 1735, 1752, 1739, 1740, 1746, 0, + 1750, 1763, 1760, 1750, 1752, 1759, 1777, 1762, 1778, 1769, + 1783, 1778, 2514, 4511, 1224, 1230, 1772, 1783, 1780, 0, + 1507, 1234, 2364, 732, 2273, 1809, 1845, 1430, 1076, 1585, + 1797, 2286, 1785, 1807, 4511, 1811, 1814, 1829, 1835, 1821, + 1808, 1822, 1845, 1859, 1860, 1862, 1868, 1869, 1870, 1825, + 1888, 1890, 1876, 1891, 1874, 1902, 1894, 1898, 1795, 1891, + 1882, 1899, 0, 1887, 0, 1892, 0, 2260, 1900, 1891, + 1909, 0, 1904, 2253, 1902, 0, 1916, 1907, 1918, 2227, + 1912, 1909, 1924, 2201, 1908, 1918, 1922, 0, 1934, 1925, - 1755, 1941, 1625, 1618, 3975, 3975, 1961, 1977, 1966, 1969, - 1956, 1979, 1983, 1986, 1989, 1984, 1992, 1987, 1994, 1990, - 1988, 1995, 2007, 2004, 2016, 2022, 1996, 2028, 2018, 2026, - 0, 0, 1620, 1990, 2009, 0, 2035, 2020, 2035, 2029, - 2024, 2025, 2029, 1589, 2049, 2041, 2052, 2048, 2053, 2054, - 2044, 2057, 0, 2064, 0, 2048, 0, 1576, 0, 2064, - 2070, 2056, 0, 2096, 2062, 0, 2067, 2108, 0, 1531, - 2072, 2078, 1438, 1853, 3975, 2105, 3975, 2068, 3975, 1463, - 3975, 1407, 1402, 1348, 1345, 1314, 1307, 1269, 1260, 1256, - 1210, 1158, 2106, 2111, 2097, 2118, 2122, 2129, 2125, 2140, + 1931, 1947, 0, 1936, 1942, 1941, 1953, 2103, 1957, 1958, + 1952, 2085, 1950, 1951, 1950, 1969, 1956, 2133, 1515, 1961, + 1971, 2002, 4511, 2117, 2038, 1981, 1592, 1842, 2025, 1983, + 0, 0, 1972, 1990, 1999, 1987, 1994, 2008, 2005, 2007, + 2015, 2023, 2016, 2021, 2017, 2024, 2022, 2026, 2030, 2029, + 2037, 2035, 2045, 2051, 2054, 2061, 0, 0, 4511, 4511, + 1922, 0, 2049, 2039, 2050, 2053, 2051, 2051, 2054, 1831, + 2073, 2064, 2077, 2073, 2081, 2082, 2072, 2085, 0, 2091, + 0, 2074, 0, 1824, 0, 2091, 2094, 2082, 0, 2116, + 2088, 0, 2092, 2133, 0, 1728, 2097, 2095, 1714, 1678, - 2131, 2136, 2141, 2143, 2156, 2131, 2138, 2147, 2101, 2151, - 2138, 2153, 0, 2141, 0, 2144, 2165, 2153, 2159, 2158, - 2165, 0, 2165, 0, 2167, 2169, 0, 2178, 0, 0, - 0, 2183, 2167, 2179, 2210, 2178, 2189, 2188, 2189, 2202, - 2186, 2194, 2218, 2196, 2202, 1119, 1114, 2206, 2118, 3975, - 1106, 1100, 1081, 1068, 1065, 1061, 1057, 972, 968, 965, - 914, 925, 893, 881, 874, 869, 865, 861, 854, 843, - 807, 802, 776, 2235, 2212, 2226, 2221, 2227, 2239, 2238, - 2228, 0, 2228, 2239, 2242, 2252, 0, 2238, 2244, 2249, - 2244, 2258, 2263, 2269, 2255, 3975, 2263, 2265, 2265, 2281, + 4511, 2135, 4511, 2096, 4511, 1726, 4511, 1703, 1612, 1601, + 1514, 1500, 1477, 1377, 1373, 1333, 1274, 1203, 2133, 2128, + 2148, 2151, 2144, 2150, 2156, 2158, 2161, 2163, 2184, 2167, + 2164, 2157, 2151, 2159, 2158, 2173, 0, 2165, 0, 2166, + 2182, 2173, 2179, 2178, 2186, 0, 2185, 0, 2187, 2193, + 0, 2202, 0, 0, 0, 2204, 2187, 2201, 2224, 2200, + 2222, 2213, 2219, 2230, 2199, 2227, 2239, 2222, 2225, 1162, + 1158, 2228, 2278, 4511, 1112, 1109, 1081, 1063, 1057, 984, + 976, 969, 923, 913, 910, 931, 895, 891, 887, 881, + 874, 856, 848, 843, 840, 804, 788, 2259, 2248, 2258, - 2265, 2262, 0, 2285, 2288, 2274, 3975, 2277, 2280, 2295, - 2279, 2280, 2283, 2303, 2283, 2330, 3975, 2335, 3975, 3975, - 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 735, - 612, 608, 598, 441, 374, 261, 245, 202, 152, 149, - 137, 165, 2296, 2303, 2304, 2320, 2326, 2316, 2324, 2329, - 2324, 2316, 2319, 2335, 2324, 2327, 0, 2332, 2328, 2327, - 2332, 2345, 2348, 2352, 2344, 3975, 2338, 0, 2338, 2343, - 2357, 2362, 2357, 3975, 2371, 2356, 2359, 2358, 2380, 3975, - 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, - 3975, 128, 2384, 2382, 2373, 2387, 2376, 2378, 2378, 0, + 2265, 2264, 2241, 0, 2254, 2265, 2268, 2279, 0, 2262, + 2268, 2271, 2266, 2278, 2283, 2289, 2273, 4511, 2280, 2281, + 2281, 2300, 2283, 2281, 0, 2303, 2307, 2292, 4511, 2302, + 2304, 2319, 2303, 2307, 2309, 2328, 2309, 2357, 4511, 2362, + 4511, 4511, 4511, 4511, 4511, 4511, 4511, 4511, 4511, 4511, + 4511, 746, 725, 597, 577, 441, 426, 420, 267, 253, + 247, 230, 183, 181, 2317, 2338, 2342, 2330, 2336, 2343, + 2339, 2331, 2334, 2350, 2341, 2345, 0, 2350, 2346, 2344, + 2349, 2361, 2364, 2367, 2359, 4511, 2357, 0, 2358, 2362, + 2379, 2383, 2375, 4511, 2388, 2375, 2382, 2377, 2389, 4511, - 2395, 2396, 0, 2385, 2384, 2405, 2403, 2401, 2405, 2413, - 3975, 2401, 3975, 3975, 3975, 2409, 2416, 2404, 3975, 3975, - 2400, 2422, 2422, 2414, 2417, 2417, 3975, 2421, 2421, 2418, - 2424, 2441, 2442, 2443, 0, 0, 2453, 0, 2436, 0, - 2451, 3975, 3975, 2445, 3975, 3975, 2446, 2457, 2445, 2461, - 2464, 2462, 2468, 2473, 2466, 2460, 0, 2462, 2459, 2461, - 2483, 0, 2463, 3975, 3975, 3975, 2484, 2488, 2476, 2482, - 3975, 2495, 2485, 2497, 2495, 2501, 2506, 2493, 0, 3975, - 2496, 3975, 2508, 2498, 2506, 2503, 2506, 2505, 0, 2520, - 3975, 3975, 2522, 2514, 0, 0, 2529, 2514, 2515, 0, + 4511, 4511, 4511, 4511, 4511, 4511, 4511, 4511, 4511, 4511, + 4511, 122, 2399, 2398, 2382, 2391, 2391, 0, 2407, 2408, + 0, 2397, 2398, 2420, 2417, 2414, 2418, 2426, 4511, 2414, + 4511, 4511, 4511, 2422, 2429, 2419, 4511, 4511, 2417, 2437, + 2435, 2425, 2428, 2428, 4511, 2431, 2445, 2445, 2447, 2452, + 0, 0, 2461, 0, 2444, 0, 2459, 4511, 4511, 2452, + 4511, 4511, 2454, 2465, 2452, 2467, 2471, 2470, 2476, 2481, + 0, 2468, 2465, 2465, 2485, 0, 2465, 4511, 4511, 4511, + 2489, 2491, 2479, 2488, 4511, 2501, 2491, 2498, 2503, 2490, + 0, 4511, 2497, 4511, 2510, 2500, 2502, 2500, 0, 2514, - 0, 2533, 2539, 0, 0, 3975, 2601, 2618, 2635, 2652, - 2669, 2686, 2703, 2720, 2737, 2754, 2771, 2788, 2805, 2822, - 2839, 2856, 2873, 2890, 2907, 2917, 2933, 2942, 2958, 2975, - 2986, 3002, 3019, 3036, 3053, 3063, 3079, 3096, 3113, 3127, - 3137, 3153, 3170, 3187, 3204, 3215, 2009, 3227, 3244, 3254, - 3270, 3287, 3294, 3300, 3316, 3326, 3342, 3359, 3376, 2564, - 3386, 3403, 3420, 3437, 3454, 3471, 3488, 3505, 3522, 3532, - 3548, 3562, 3572, 3588, 3605, 3622, 3639, 3650, 3662, 3679, - 3696, 3713, 3730, 3740, 3749, 3765, 3782, 3799, 2571, 3809, - 3826, 3843, 3860, 3877, 3885, 3890, 3906, 3923, 3940, 3957 + 4511, 4511, 2516, 0, 2523, 2508, 2509, 0, 2528, 2531, + 0, 0, 4511, 2593, 2614, 2635, 2656, 2677, 2698, 2719, + 2740, 2761, 2782, 2803, 2824, 2845, 2866, 2887, 2908, 2929, + 2950, 2971, 2992, 3013, 3025, 3044, 3055, 3074, 3095, 3108, + 3127, 3148, 3169, 3190, 3202, 3221, 3242, 3263, 3280, 3292, + 3311, 3332, 3353, 3374, 3395, 3408, 2553, 3423, 3444, 3463, + 3484, 3505, 3517, 3536, 3557, 2569, 3057, 3578, 3590, 3609, + 3630, 3651, 2558, 3663, 3684, 3705, 3726, 3747, 3768, 3789, + 3810, 3831, 3843, 3862, 3879, 3891, 3910, 3931, 3952, 3973, + 3994, 4007, 4022, 4043, 4062, 4083, 4104, 4125, 4146, 4167, + 4179, 4189, 4208, 4229, 4250, 2561, 4262, 4283, 4304, 4325, + 4346, 4367, 3028, 4379, 4398, 4419, 4432, 4447, 4468, 4489 } ; -static yyconst flex_int16_t yy_def[1201] = +static const flex_int16_t yy_def[1221] = { 0, - 1106, 1106, 1107, 1107, 1108, 1109, 1110, 1110, 1111, 1111, - 1112, 1112, 1106, 13, 1113, 1113, 1114, 1114, 1115, 1115, - 1116, 1116, 1117, 1117, 1106, 25, 1118, 1118, 1119, 1119, - 1120, 1120, 1121, 1121, 1106, 35, 1122, 1122, 1123, 1123, - 1113, 1113, 1113, 1113, 1124, 1124, 1125, 1125, 1106, 1106, - 1106, 1106, 1106, 1126, 1106, 1106, 1106, 1106, 1127, 1106, - 1128, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, - 1106, 1106, 1129, 1130, 1131, 1106, 1106, 1106, 1106, 1106, - 1106, 1106, 1106, 1106, 1132, 1133, 1132, 1134, 1106, 1106, - 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1135, + 1113, 1113, 1114, 1114, 1115, 1116, 1117, 1117, 1118, 1118, + 1119, 1119, 1113, 13, 1120, 1120, 1121, 1121, 1122, 1122, + 1123, 1123, 1124, 1124, 1113, 25, 1125, 1125, 1126, 1126, + 1127, 1127, 1128, 1128, 1113, 35, 1129, 1129, 1130, 1130, + 1120, 1120, 1120, 1120, 1131, 1131, 1132, 1132, 1126, 1126, + 1133, 1133, 1134, 1134, 1113, 1113, 1113, 1113, 1113, 1135, + 1113, 1113, 1113, 1113, 1136, 1113, 1137, 1113, 1113, 1113, + 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1138, 1139, + 1140, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, + 1141, 1113, 1141, 1142, 1113, 1113, 1143, 1113, 1143, 1113, - 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1136, - 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, - 1106, 1130, 1106, 1106, 1130, 1137, 1106, 1106, 1106, 1138, - 1106, 1130, 1106, 1139, 1106, 1139, 1106, 1140, 1106, 1141, - 1141, 1141, 1106, 1106, 1106, 1106, 1142, 1106, 1142, 1106, - 1106, 1106, 1106, 1106, 1106, 1143, 1106, 1143, 1106, 1144, - 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, - 1106, 1106, 1106, 1106, 1145, 1106, 1106, 1106, 1146, 1146, - 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1147, - 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1106, + 1143, 1143, 1113, 1113, 1113, 1144, 1113, 1113, 1113, 1113, + 1113, 1113, 1113, 1113, 1113, 1145, 1113, 1113, 1113, 1113, + 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1139, 1113, 1113, + 1139, 1146, 1113, 1113, 1113, 1147, 1113, 1139, 1113, 1148, + 1113, 1148, 1113, 1149, 1113, 1150, 1150, 1150, 1113, 1113, + 1113, 1113, 1151, 1113, 1151, 1152, 1113, 1152, 1113, 1113, + 1113, 1153, 1113, 1153, 1113, 1113, 1154, 1113, 1113, 1113, + 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, + 1113, 1113, 1155, 1113, 1113, 1113, 1156, 1156, 1156, 1156, + 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1157, 1156, 1156, - 1106, 1148, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, - 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1149, - 1106, 1149, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, - 1150, 1106, 1106, 1106, 1106, 1106, 1151, 1152, 1106, 1106, - 1106, 1106, 1153, 1151, 1154, 1155, 1106, 1156, 1106, 1106, - 1106, 1106, 1157, 1106, 1106, 1106, 1106, 1106, 1158, 1158, - 1159, 1106, 1106, 1160, 1106, 1106, 1106, 1161, 1106, 1106, - 1106, 1106, 1106, 1106, 1106, 1162, 1106, 1106, 1106, 1163, - 1164, 1164, 1165, 1166, 1167, 1106, 1106, 1106, 1106, 1106, - 1106, 1106, 1106, 1168, 1169, 1106, 1106, 1106, 1106, 1106, + 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1113, 1113, 1158, + 1113, 1159, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, + 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1160, 1113, 1160, + 1113, 1113, 1113, 1113, 1113, 1113, 1161, 1113, 1113, 1162, + 1162, 1113, 1113, 1113, 1113, 1163, 1113, 1113, 1113, 1113, + 1113, 1164, 1165, 1113, 1113, 1113, 1113, 1166, 1164, 1167, + 1168, 1113, 1169, 1113, 1113, 1113, 1113, 1170, 1113, 1113, + 1113, 1113, 1113, 1171, 1171, 1172, 1113, 1113, 1173, 1113, + 1113, 1113, 1174, 1113, 1113, 1113, 1113, 1113, 1113, 1113, + 1175, 1113, 1113, 1113, 1176, 1113, 1177, 1178, 1179, 1113, - 1106, 1106, 1170, 1106, 1106, 1106, 1106, 1106, 1106, 1106, - 1106, 1171, 1106, 1172, 1106, 1172, 1106, 1173, 1173, 1173, - 1106, 1106, 1174, 1106, 1174, 1106, 1106, 1106, 1106, 1175, - 1106, 1106, 1106, 1106, 1106, 1176, 1106, 1106, 1106, 1106, - 1177, 1106, 1106, 1106, 1178, 1178, 1178, 1178, 1178, 1178, - 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, - 1178, 1178, 1178, 1178, 1106, 1178, 1178, 1178, 1178, 1178, - 1178, 1178, 1178, 1178, 1178, 1178, 1179, 1106, 1106, 1106, - 1106, 1106, 1180, 1106, 1106, 1106, 1106, 1181, 1182, 1183, - 1106, 1106, 1106, 1106, 1106, 1106, 1184, 1181, 1185, 1186, + 1113, 1180, 1113, 1180, 1180, 1113, 1113, 1181, 1182, 1113, + 1113, 1113, 1113, 1113, 1113, 1113, 1183, 1113, 1113, 1113, + 1113, 1113, 1113, 1113, 1113, 1184, 1113, 1113, 1185, 1113, + 1186, 1186, 1186, 1187, 1113, 1187, 1188, 1113, 1113, 1189, + 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1190, 1113, 1113, + 1113, 1113, 1191, 1113, 1113, 1113, 1192, 1192, 1192, 1192, + 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, + 1192, 1192, 1192, 1192, 1192, 1192, 1113, 1192, 1192, 1192, + 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1193, 1113, + 1113, 1194, 1113, 1113, 1113, 1195, 1113, 1113, 1113, 1113, - 1106, 1186, 1106, 1187, 1106, 1187, 1106, 1106, 1188, 1188, - 1188, 1106, 1188, 1188, 1106, 1189, 1106, 1106, 1190, 1106, - 1106, 1106, 1106, 1191, 1106, 1192, 1193, 1106, 1106, 1194, - 1106, 1194, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, - 1195, 1195, 1195, 1195, 1196, 1196, 1197, 1106, 1106, 1178, - 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, - 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, - 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, - 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, - 1178, 1178, 1178, 1178, 1178, 1106, 1106, 1183, 1183, 1106, + 1196, 1113, 1113, 1197, 1113, 1198, 1199, 1200, 1113, 1113, + 1113, 1113, 1113, 1113, 1201, 1198, 1202, 1203, 1113, 1203, + 1113, 1204, 1113, 1204, 1113, 1113, 1205, 1205, 1205, 1113, + 1205, 1205, 1113, 1206, 1113, 1113, 1207, 1113, 1113, 1113, + 1113, 1208, 1113, 1209, 1210, 1211, 1211, 1212, 1113, 1212, + 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, + 1213, 1213, 1113, 1214, 1214, 1113, 1215, 1216, 1113, 1113, + 1113, 1113, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, + 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, + 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, - 1183, 1183, 1106, 1106, 1106, 1106, 1184, 1198, 1185, 1106, - 1106, 1188, 414, 412, 412, 1188, 414, 1106, 1106, 1106, - 1106, 1106, 1106, 1106, 1195, 1195, 1195, 1195, 1195, 1195, - 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, - 1195, 1195, 1195, 1195, 1195, 1196, 1196, 1106, 1106, 1178, - 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, - 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, - 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, - 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, - 1178, 1178, 1178, 1178, 1106, 1106, 1106, 1106, 1106, 1183, + 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, + 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1113, 1113, + 1200, 1200, 1113, 1200, 1200, 1113, 1113, 1113, 1113, 1201, + 1218, 1202, 1113, 1113, 1205, 432, 430, 430, 1205, 432, + 1113, 1113, 1113, 1113, 1211, 1211, 1113, 1213, 1213, 1213, + 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, + 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1214, 1214, + 1113, 1113, 1113, 1113, 1217, 1217, 1217, 1217, 1217, 1217, + 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, + 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, - 1183, 1106, 1106, 1106, 1198, 1198, 1198, 1106, 511, 511, - 1188, 414, 1188, 1188, 1188, 1106, 1106, 1106, 1106, 1106, - 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, - 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, - 1195, 1195, 1195, 1196, 1196, 1178, 1178, 1178, 1178, 1178, - 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, - 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, - 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, - 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1106, 1106, 1106, - 1106, 1106, 1199, 1106, 1106, 1198, 1106, 1198, 1106, 1188, + 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, + 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1113, + 1113, 1113, 1113, 1113, 1200, 1200, 1113, 1113, 1113, 1218, + 1218, 1218, 1113, 534, 534, 1205, 432, 1205, 1205, 1205, + 1113, 1113, 1211, 1211, 1113, 1213, 1213, 1213, 1213, 1213, + 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, + 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1214, 1214, + 1113, 1113, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, + 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, + 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, - 1188, 1188, 1106, 1106, 1106, 1106, 1195, 1195, 1195, 1195, - 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, - 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, - 1196, 1196, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, - 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, - 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, - 1178, 1178, 1178, 1106, 1178, 1178, 1178, 1106, 1178, 1106, - 1106, 1106, 1106, 1199, 1106, 1199, 1106, 1106, 1106, 1106, - 1106, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, - 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, + 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, + 1217, 1217, 1217, 1113, 1113, 1113, 1113, 1113, 1219, 1113, + 1113, 1218, 1113, 1218, 1113, 1205, 1205, 1205, 1113, 1113, + 1211, 1211, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, + 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, + 1213, 1213, 1213, 1213, 1213, 1213, 1214, 1214, 1113, 1113, + 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, + 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, + 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1113, + 1217, 1217, 1217, 1113, 1217, 1113, 1113, 1113, 1113, 1219, - 1195, 1195, 1195, 1195, 1195, 1178, 1178, 1178, 1178, 1178, - 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, - 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, - 1178, 1106, 1106, 1106, 1106, 1106, 1106, 1178, 1178, 1106, - 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1200, 1106, - 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, - 1106, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, - 1195, 1195, 1195, 1195, 1178, 1178, 1178, 1178, 1178, 1178, - 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, - 1178, 1178, 1178, 1106, 1106, 1106, 1106, 1106, 1106, 1106, + 1113, 1219, 1113, 1113, 1113, 1113, 1113, 1213, 1213, 1213, + 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, + 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, + 1213, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, + 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, + 1217, 1217, 1217, 1217, 1217, 1113, 1113, 1113, 1113, 1113, + 1113, 1217, 1217, 1113, 1113, 1113, 1113, 1113, 1113, 1113, + 1113, 1113, 1220, 1113, 1113, 1113, 1113, 1113, 1113, 1113, + 1113, 1113, 1113, 1113, 1113, 1213, 1213, 1213, 1213, 1213, + 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1217, 1217, - 1106, 1106, 1178, 1178, 1106, 1106, 1106, 1106, 1106, 1106, - 1106, 1106, 1106, 1106, 1106, 1200, 1106, 1200, 1106, 1106, - 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, - 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, - 1106, 1195, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, - 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1106, - 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1178, 1106, 1106, - 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, - 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, - 1106, 1106, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, + 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, + 1217, 1217, 1217, 1217, 1217, 1113, 1113, 1113, 1113, 1113, + 1113, 1113, 1113, 1113, 1217, 1217, 1113, 1113, 1113, 1113, + 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1220, 1113, 1220, + 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, + 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, + 1113, 1113, 1113, 1213, 1217, 1217, 1217, 1217, 1217, 1217, + 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1113, + 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1217, 1113, 1113, + 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, - 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1106, 1106, - 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, - 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1178, 1178, 1178, - 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, - 1178, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, - 1106, 1106, 1106, 1178, 1178, 1178, 1178, 1178, 1178, 1178, - 1178, 1178, 1178, 1106, 1106, 1106, 1106, 1106, 1106, 1106, - 1106, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1106, - 1106, 1106, 1106, 1178, 1178, 1178, 1178, 1178, 1178, 1178, - 1106, 1106, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, + 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, + 1113, 1113, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, + 1217, 1217, 1217, 1217, 1217, 1217, 1113, 1113, 1113, 1113, + 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, + 1113, 1113, 1113, 1113, 1113, 1217, 1217, 1217, 1217, 1217, + 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1113, 1113, 1113, + 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1217, + 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1113, 1113, 1113, + 1113, 1113, 1113, 1113, 1113, 1217, 1217, 1217, 1217, 1217, + 1217, 1113, 1113, 1113, 1113, 1217, 1217, 1217, 1217, 1217, - 1178, 1178, 1178, 1178, 1178, 0, 1106, 1106, 1106, 1106, - 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, - 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, - 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, - 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, - 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, - 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, - 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, - 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, - 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106 + 1113, 1113, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, + 1217, 1217, 0, 1113, 1113, 1113, 1113, 1113, 1113, 1113, + 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, + 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, + 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, + 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, + 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, + 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, + 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, + 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, + 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, + 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113 } ; -static yyconst flex_int16_t yy_nxt[4060] = +static const flex_int16_t yy_nxt[4596] = { 0, - 50, 51, 52, 50, 53, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 54, 54, 54, - 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, - 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, - 54, 54, 50, 50, 50, 50, 54, 54, 54, 54, - 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, - 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, - 54, 50, 50, 50, 50, 55, 56, 50, 57, 50, - 58, 50, 59, 50, 50, 50, 50, 50, 50, 50, + 56, 57, 58, 56, 59, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 60, 60, 60, + 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, + 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, + 60, 60, 56, 56, 56, 56, 60, 60, 60, 60, + 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, + 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, + 60, 56, 56, 56, 56, 61, 62, 56, 63, 56, + 64, 56, 65, 56, 56, 56, 56, 56, 56, 56, - 50, 60, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 61, 61, 61, 61, 61, 61, 61, 61, 61, - 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, - 61, 61, 61, 61, 61, 61, 50, 50, 50, 50, - 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, - 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, - 61, 61, 61, 61, 61, 50, 50, 50, 63, 64, - 291, 65, 66, 83, 67, 84, 89, 68, 69, 70, - 70, 89, 1027, 70, 71, 86, 83, 992, 84, 50, - 72, 991, 87, 70, 93, 309, 94, 101, 102, 291, + 56, 66, 56, 56, 56, 56, 56, 56, 56, 56, + 56, 67, 67, 67, 67, 67, 67, 67, 67, 67, + 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, + 67, 67, 67, 67, 67, 67, 56, 56, 56, 56, + 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, + 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, + 67, 67, 67, 67, 67, 56, 56, 56, 69, 70, + 305, 71, 72, 89, 73, 90, 1045, 74, 75, 76, + 76, 275, 276, 76, 77, 92, 89, 95, 90, 96, + 78, 56, 93, 76, 95, 323, 96, 107, 108, 305, - 103, 101, 102, 990, 103, 113, 989, 114, 119, 315, - 120, 121, 148, 119, 149, 120, 121, 115, 50, 73, - 74, 116, 116, 116, 116, 148, 90, 149, 91, 228, - 229, 90, 230, 91, 309, 93, 95, 94, 276, 124, - 125, 99, 126, 96, 97, 283, 98, 284, 75, 70, - 70, 76, 77, 316, 78, 66, 988, 67, 79, 122, - 68, 69, 70, 70, 122, 95, 70, 71, 124, 125, - 290, 126, 96, 80, 260, 261, 70, 95, 128, 201, - 129, 221, 202, 222, 96, 97, 117, 98, 410, 411, - 223, 130, 320, 415, 415, 203, 203, 203, 203, 987, + 109, 107, 108, 1012, 109, 125, 291, 126, 127, 154, + 154, 155, 155, 119, 125, 120, 126, 127, 333, 79, + 80, 238, 98, 239, 99, 121, 638, 56, 100, 122, + 122, 122, 122, 98, 323, 99, 157, 1011, 158, 105, + 350, 130, 131, 233, 132, 234, 159, 333, 81, 76, + 76, 82, 83, 235, 84, 72, 128, 73, 85, 427, + 74, 75, 76, 76, 101, 128, 76, 77, 134, 350, + 135, 102, 103, 86, 104, 101, 76, 130, 131, 292, + 132, 136, 102, 103, 1010, 104, 160, 378, 161, 229, + 238, 230, 239, 101, 123, 297, 209, 298, 231, 210, - 290, 201, 73, 74, 202, 81, 95, 221, 324, 222, - 325, 277, 225, 96, 226, 986, 223, 203, 203, 203, - 203, 320, 227, 232, 233, 324, 234, 325, 131, 132, - 133, 75, 70, 70, 104, 105, 106, 104, 107, 104, - 104, 104, 104, 104, 104, 104, 108, 104, 108, 104, - 104, 104, 104, 104, 104, 104, 104, 104, 104, 109, - 104, 110, 110, 110, 110, 110, 110, 110, 110, 110, - 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, - 110, 110, 110, 110, 110, 110, 104, 104, 104, 104, - 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, + 102, 1009, 79, 80, 101, 87, 209, 1008, 229, 210, + 230, 102, 211, 211, 211, 211, 378, 231, 137, 138, + 139, 1007, 211, 211, 211, 211, 243, 244, 335, 245, + 336, 81, 76, 76, 110, 111, 112, 110, 113, 110, + 110, 110, 110, 110, 110, 110, 114, 110, 114, 110, + 110, 110, 110, 110, 110, 110, 110, 110, 110, 115, + 110, 116, 116, 116, 116, 116, 116, 116, 116, 116, + 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, + 116, 116, 116, 116, 116, 116, 110, 110, 110, 110, + 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, - 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, - 110, 110, 110, 110, 110, 104, 104, 104, 113, 128, - 114, 129, 291, 151, 235, 152, 263, 263, 985, 151, - 115, 152, 130, 153, 116, 116, 116, 116, 157, 153, - 158, 159, 157, 366, 158, 159, 225, 333, 226, 254, - 254, 291, 255, 401, 334, 402, 227, 265, 264, 266, - 319, 236, 267, 267, 267, 267, 290, 343, 344, 131, - 132, 133, 366, 154, 405, 155, 406, 298, 299, 154, - 300, 155, 305, 305, 305, 305, 431, 264, 432, 160, - 319, 236, 324, 160, 325, 984, 290, 343, 344, 117, + 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, + 116, 116, 116, 116, 116, 110, 110, 110, 119, 134, + 120, 135, 335, 157, 336, 158, 163, 383, 164, 165, + 121, 250, 136, 159, 122, 122, 122, 122, 163, 224, + 164, 165, 163, 233, 241, 234, 343, 247, 248, 242, + 249, 304, 225, 235, 269, 269, 383, 270, 280, 419, + 281, 420, 226, 282, 282, 282, 282, 227, 251, 137, + 138, 139, 345, 160, 1006, 161, 166, 167, 168, 346, + 1005, 304, 225, 312, 313, 423, 314, 424, 166, 167, + 168, 226, 166, 167, 168, 1004, 227, 344, 251, 123, - 134, 134, 135, 134, 136, 137, 134, 134, 134, 138, - 134, 134, 134, 134, 134, 134, 134, 139, 134, 134, - 134, 134, 134, 134, 134, 134, 134, 140, 140, 140, - 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, - 140, 140, 140, 140, 141, 140, 140, 140, 140, 140, - 140, 142, 143, 134, 144, 134, 140, 140, 140, 140, - 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, - 140, 140, 140, 141, 140, 140, 140, 140, 140, 140, - 142, 145, 134, 146, 162, 163, 205, 164, 206, 162, - 163, 165, 164, 353, 211, 211, 165, 333, 216, 351, + 140, 140, 141, 140, 142, 143, 140, 140, 140, 144, + 140, 140, 140, 140, 140, 140, 140, 145, 140, 140, + 140, 140, 140, 140, 140, 140, 140, 146, 146, 146, + 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, + 146, 146, 146, 146, 147, 146, 146, 146, 146, 146, + 146, 148, 149, 140, 150, 140, 146, 146, 146, 146, + 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, + 146, 146, 146, 147, 146, 146, 146, 146, 146, 146, + 148, 151, 140, 152, 170, 171, 213, 172, 214, 170, + 171, 173, 172, 332, 219, 219, 173, 157, 224, 158, - 166, 212, 212, 358, 334, 166, 379, 379, 379, 379, - 324, 217, 325, 352, 213, 213, 346, 359, 347, 360, - 315, 218, 348, 353, 214, 214, 219, 167, 371, 215, - 215, 376, 167, 358, 168, 169, 207, 170, 208, 168, - 169, 217, 170, 352, 213, 213, 346, 359, 347, 360, - 218, 348, 983, 214, 214, 219, 167, 371, 215, 215, - 376, 167, 982, 168, 316, 209, 981, 210, 168, 171, - 172, 173, 171, 174, 175, 171, 171, 171, 171, 171, - 171, 171, 171, 171, 171, 171, 171, 171, 176, 177, - 171, 171, 171, 178, 171, 171, 179, 180, 181, 182, + 174, 220, 220, 349, 449, 174, 450, 236, 428, 429, + 157, 225, 158, 355, 221, 221, 319, 319, 319, 319, + 236, 226, 356, 332, 222, 222, 227, 175, 388, 223, + 223, 1003, 175, 349, 176, 177, 215, 178, 216, 176, + 177, 225, 178, 355, 221, 221, 335, 160, 336, 161, + 226, 1002, 356, 222, 222, 227, 175, 388, 223, 223, + 160, 175, 161, 176, 335, 217, 336, 218, 176, 179, + 180, 181, 179, 182, 183, 179, 179, 179, 179, 179, + 179, 179, 179, 179, 179, 179, 179, 179, 184, 185, + 179, 179, 179, 186, 179, 179, 187, 188, 189, 190, - 183, 184, 185, 186, 187, 185, 185, 188, 189, 190, - 191, 192, 185, 193, 194, 195, 196, 197, 198, 185, - 199, 171, 171, 171, 171, 171, 179, 180, 181, 182, - 183, 184, 185, 186, 187, 185, 185, 188, 189, 190, - 191, 192, 193, 194, 195, 196, 197, 198, 185, 199, - 171, 171, 171, 205, 216, 206, 249, 250, 370, 251, - 263, 263, 452, 252, 354, 269, 270, 217, 271, 263, - 263, 453, 272, 456, 372, 263, 263, 218, 349, 356, - 364, 273, 219, 410, 411, 355, 350, 274, 370, 980, - 365, 452, 264, 373, 354, 374, 375, 217, 941, 357, + 191, 192, 193, 194, 195, 193, 193, 196, 197, 198, + 199, 200, 193, 201, 202, 203, 204, 205, 206, 193, + 207, 179, 179, 179, 179, 179, 187, 188, 189, 190, + 191, 192, 193, 194, 195, 193, 193, 196, 197, 198, + 199, 200, 201, 202, 203, 204, 205, 206, 193, 207, + 179, 179, 179, 213, 726, 214, 163, 362, 241, 264, + 265, 360, 266, 242, 278, 278, 267, 284, 285, 361, + 286, 363, 278, 278, 287, 433, 433, 278, 278, 1001, + 278, 278, 475, 288, 358, 364, 369, 427, 370, 289, + 359, 360, 365, 382, 371, 345, 279, 367, 372, 361, - 453, 264, 456, 207, 372, 208, 218, 264, 349, 356, - 364, 219, 387, 361, 355, 398, 350, 362, 235, 275, - 365, 264, 408, 373, 940, 374, 375, 425, 357, 939, - 264, 428, 209, 429, 210, 238, 264, 253, 228, 229, - 367, 230, 387, 361, 412, 398, 253, 362, 232, 233, - 368, 234, 408, 369, 239, 236, 240, 425, 240, 249, - 250, 428, 251, 429, 240, 938, 252, 240, 241, 242, - 367, 240, 243, 244, 410, 411, 937, 245, 298, 299, - 368, 300, 369, 936, 239, 236, 240, 935, 240, 445, - 446, 934, 390, 391, 240, 392, 933, 240, 241, 242, + 1000, 363, 346, 215, 279, 216, 166, 167, 168, 279, + 963, 475, 279, 366, 358, 364, 369, 368, 370, 359, + 376, 290, 365, 382, 371, 279, 962, 367, 372, 384, + 377, 385, 217, 279, 218, 253, 243, 244, 279, 245, + 268, 279, 366, 250, 386, 373, 368, 478, 268, 374, + 376, 387, 405, 379, 254, 416, 255, 426, 255, 384, + 377, 385, 961, 380, 255, 960, 381, 255, 256, 257, + 959, 255, 258, 259, 386, 373, 478, 260, 958, 374, + 251, 387, 405, 379, 254, 416, 255, 426, 255, 391, + 391, 391, 391, 380, 255, 381, 957, 255, 256, 257, - 240, 243, 244, 932, 390, 391, 245, 392, 246, 393, - 393, 393, 393, 390, 391, 931, 392, 413, 413, 445, - 446, 393, 393, 393, 393, 390, 391, 458, 392, 448, - 393, 393, 393, 393, 461, 394, 305, 305, 305, 305, - 253, 449, 393, 393, 393, 393, 450, 930, 462, 414, - 269, 270, 454, 271, 395, 464, 458, 272, 459, 448, - 451, 463, 460, 461, 394, 396, 273, 465, 929, 455, - 466, 449, 274, 468, 467, 469, 450, 462, 414, 470, - 471, 472, 454, 473, 395, 464, 474, 476, 459, 451, - 463, 480, 460, 482, 481, 396, 475, 465, 455, 485, + 255, 258, 259, 956, 247, 248, 260, 249, 261, 955, + 251, 408, 409, 954, 410, 408, 409, 953, 410, 408, + 409, 480, 410, 408, 409, 430, 410, 443, 411, 411, + 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, + 411, 411, 411, 411, 264, 265, 446, 266, 431, 431, + 480, 267, 447, 952, 412, 428, 429, 443, 312, 313, + 413, 314, 464, 414, 951, 284, 285, 950, 286, 465, + 469, 470, 287, 471, 472, 473, 446, 949, 483, 484, + 432, 288, 447, 412, 485, 476, 486, 289, 490, 474, + 413, 487, 464, 414, 319, 319, 319, 319, 491, 465, - 466, 486, 468, 467, 275, 469, 262, 262, 470, 471, - 472, 401, 473, 402, 410, 411, 474, 476, 401, 928, - 402, 480, 927, 482, 481, 475, 926, 497, 485, 504, - 486, 253, 433, 434, 435, 436, 437, 437, 438, 437, - 437, 437, 437, 439, 437, 437, 437, 440, 437, 437, - 441, 437, 442, 437, 437, 443, 437, 497, 504, 405, - 444, 406, 433, 434, 435, 436, 437, 437, 438, 437, - 437, 437, 437, 439, 437, 437, 437, 440, 437, 441, - 437, 442, 437, 437, 443, 437, 477, 483, 499, 500, - 478, 501, 505, 506, 484, 479, 379, 379, 379, 379, + 469, 470, 477, 471, 472, 473, 481, 483, 484, 432, + 482, 492, 499, 485, 493, 476, 486, 490, 474, 290, + 419, 487, 420, 948, 419, 268, 420, 423, 491, 424, + 947, 477, 391, 391, 391, 391, 481, 423, 946, 424, + 482, 492, 499, 493, 494, 495, 268, 451, 452, 453, + 454, 455, 455, 456, 455, 455, 455, 455, 457, 455, + 455, 455, 458, 455, 455, 459, 455, 460, 455, 455, + 461, 455, 488, 494, 495, 462, 489, 451, 452, 453, + 454, 455, 455, 456, 455, 455, 455, 455, 457, 455, + 455, 455, 458, 455, 459, 455, 460, 455, 455, 461, - 508, 405, 431, 406, 432, 502, 502, 502, 502, 510, - 511, 925, 520, 512, 512, 924, 477, 483, 548, 923, - 478, 505, 922, 506, 484, 479, 487, 521, 488, 522, - 508, 489, 490, 503, 391, 921, 392, 491, 492, 510, - 410, 411, 520, 493, 494, 513, 523, 548, 495, 409, - 393, 393, 393, 393, 920, 496, 487, 521, 488, 522, - 919, 489, 490, 519, 519, 519, 519, 491, 492, 431, - 914, 432, 493, 494, 513, 913, 523, 495, 409, 409, - 861, 409, 409, 409, 409, 409, 409, 409, 409, 409, - 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, + 455, 496, 488, 497, 503, 489, 500, 504, 505, 506, + 501, 945, 508, 498, 509, 502, 507, 944, 520, 428, + 429, 527, 528, 277, 277, 449, 529, 450, 428, 429, + 496, 531, 533, 497, 503, 943, 500, 504, 505, 506, + 501, 508, 498, 509, 631, 502, 507, 510, 520, 511, + 527, 528, 512, 513, 522, 523, 529, 524, 514, 515, + 534, 531, 533, 942, 516, 517, 941, 526, 409, 518, + 410, 525, 525, 525, 525, 543, 519, 510, 544, 511, + 535, 535, 512, 513, 411, 411, 411, 411, 514, 515, + 428, 429, 545, 516, 517, 539, 539, 546, 518, 542, - 409, 409, 409, 409, 409, 514, 514, 514, 514, 514, - 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, - 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, - 410, 411, 860, 515, 409, 514, 514, 514, 514, 514, - 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, - 514, 514, 514, 514, 514, 514, 514, 514, 514, 409, - 409, 409, 516, 516, 546, 547, 524, 524, 524, 524, - 524, 524, 524, 524, 549, 558, 550, 599, 859, 600, - 524, 524, 858, 525, 526, 528, 533, 527, 551, 535, - 530, 857, 529, 534, 546, 547, 410, 411, 517, 517, + 542, 542, 542, 569, 449, 543, 450, 570, 544, 571, + 572, 624, 536, 625, 936, 573, 427, 523, 935, 625, + 526, 409, 545, 410, 632, 885, 624, 546, 625, 428, + 429, 626, 523, 569, 524, 722, 723, 570, 724, 571, + 572, 536, 427, 427, 573, 427, 427, 427, 427, 427, + 427, 427, 427, 427, 427, 427, 427, 427, 427, 427, + 427, 427, 427, 427, 427, 427, 427, 427, 427, 537, + 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, + 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, + 537, 537, 537, 537, 428, 429, 884, 538, 427, 537, - 517, 517, 531, 549, 558, 532, 550, 517, 517, 517, - 517, 517, 517, 525, 526, 528, 533, 527, 551, 535, - 530, 529, 552, 534, 560, 553, 554, 555, 556, 856, - 557, 531, 410, 411, 532, 559, 855, 517, 517, 517, - 517, 517, 517, 1106, 561, 562, 563, 565, 536, 537, - 538, 539, 552, 560, 540, 553, 554, 555, 556, 541, - 557, 564, 567, 542, 568, 559, 543, 854, 544, 569, - 853, 545, 570, 561, 571, 562, 563, 565, 536, 537, - 538, 539, 572, 573, 540, 574, 575, 576, 577, 541, - 564, 578, 567, 542, 568, 543, 581, 544, 582, 569, + 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, + 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, + 537, 537, 537, 427, 427, 427, 540, 540, 540, 540, + 547, 547, 547, 547, 547, 540, 540, 540, 540, 540, + 540, 547, 547, 547, 574, 547, 548, 549, 575, 547, + 550, 576, 553, 558, 551, 883, 552, 577, 578, 579, + 428, 429, 556, 557, 580, 540, 540, 540, 540, 540, + 540, 554, 581, 574, 555, 583, 548, 549, 575, 582, + 550, 576, 553, 558, 551, 552, 586, 577, 578, 579, + 584, 587, 556, 557, 580, 882, 585, 588, 589, 881, - 545, 579, 570, 583, 571, 584, 585, 580, 586, 587, - 606, 588, 572, 573, 589, 574, 575, 576, 577, 590, - 591, 578, 592, 593, 852, 594, 581, 582, 598, 851, - 595, 579, 583, 596, 597, 584, 585, 580, 586, 587, - 588, 500, 602, 600, 589, 503, 391, 603, 392, 590, - 591, 619, 592, 593, 594, 604, 499, 500, 598, 501, - 595, 608, 596, 597, 601, 500, 599, 501, 600, 410, - 411, 259, 602, 502, 502, 502, 502, 603, 410, 411, - 619, 502, 502, 502, 502, 604, 601, 500, 850, 501, - 607, 608, 409, 409, 848, 409, 409, 409, 409, 409, + 554, 591, 581, 555, 1113, 583, 592, 593, 582, 559, + 560, 561, 562, 594, 595, 563, 586, 596, 597, 584, + 564, 587, 598, 599, 565, 585, 588, 566, 589, 567, + 600, 591, 568, 601, 602, 603, 592, 593, 606, 559, + 560, 561, 562, 594, 595, 563, 607, 596, 597, 604, + 564, 608, 598, 599, 565, 605, 566, 609, 567, 610, + 600, 568, 611, 601, 602, 603, 612, 614, 606, 613, + 615, 616, 617, 618, 620, 607, 619, 621, 622, 604, + 608, 623, 428, 429, 274, 605, 644, 609, 627, 610, + 628, 629, 611, 633, 641, 642, 612, 614, 613, 880, - 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, - 409, 409, 409, 409, 409, 409, 409, 409, 409, 609, - 609, 609, 609, 609, 609, 609, 609, 609, 609, 609, - 609, 609, 609, 609, 609, 609, 609, 609, 609, 609, - 609, 609, 609, 609, 410, 411, 613, 610, 409, 609, - 609, 609, 609, 609, 609, 609, 609, 609, 609, 609, - 609, 609, 609, 609, 609, 609, 609, 609, 609, 609, - 609, 609, 609, 409, 409, 409, 611, 611, 616, 409, - 524, 524, 614, 614, 524, 524, 524, 845, 617, 618, - 623, 828, 696, 697, 524, 698, 524, 625, 621, 626, + 615, 616, 617, 618, 620, 619, 621, 622, 631, 522, + 523, 623, 524, 626, 523, 644, 524, 801, 627, 802, + 628, 629, 879, 633, 641, 642, 525, 525, 525, 525, + 525, 525, 525, 525, 427, 427, 878, 427, 427, 427, + 427, 427, 427, 427, 427, 427, 427, 427, 427, 427, + 427, 427, 427, 427, 427, 427, 427, 427, 427, 427, + 427, 634, 634, 634, 634, 634, 634, 634, 634, 634, + 634, 634, 634, 634, 634, 634, 634, 634, 634, 634, + 634, 634, 634, 634, 634, 634, 428, 429, 632, 635, + 427, 634, 634, 634, 634, 634, 634, 634, 634, 634, - 622, 775, 629, 776, 817, 624, 524, 700, 616, 628, - 410, 411, 612, 612, 612, 612, 410, 411, 617, 618, - 623, 612, 612, 612, 612, 612, 612, 625, 621, 626, - 622, 524, 629, 627, 624, 806, 524, 524, 524, 628, - 409, 524, 630, 781, 632, 644, 643, 524, 524, 636, - 780, 612, 612, 612, 612, 612, 612, 615, 615, 615, - 615, 631, 627, 633, 634, 524, 615, 615, 615, 615, - 615, 615, 630, 524, 632, 644, 643, 779, 646, 636, - 524, 645, 647, 635, 524, 649, 524, 524, 650, 651, - 652, 631, 653, 633, 634, 637, 615, 615, 615, 615, + 634, 634, 634, 634, 634, 634, 634, 634, 634, 634, + 634, 634, 634, 634, 634, 427, 427, 427, 636, 636, + 643, 547, 547, 877, 639, 639, 547, 547, 547, 547, + 547, 648, 651, 547, 876, 547, 547, 428, 429, 646, + 650, 647, 547, 653, 428, 429, 649, 655, 656, 657, + 643, 658, 428, 429, 637, 637, 637, 637, 428, 429, + 652, 648, 651, 637, 637, 637, 637, 637, 637, 646, + 650, 647, 547, 653, 547, 649, 547, 655, 656, 657, + 801, 658, 802, 547, 669, 547, 547, 661, 547, 652, + 654, 671, 659, 637, 637, 637, 637, 637, 637, 640, - 615, 615, 639, 638, 697, 640, 641, 642, 646, 654, - 645, 647, 656, 635, 649, 655, 658, 650, 657, 651, - 652, 659, 606, 660, 637, 661, 662, 692, 664, 665, - 669, 639, 667, 638, 640, 668, 641, 642, 670, 654, - 671, 672, 656, 673, 675, 655, 658, 657, 674, 676, - 677, 659, 660, 678, 661, 679, 662, 664, 680, 665, - 669, 667, 681, 683, 668, 682, 684, 670, 685, 687, - 671, 672, 686, 673, 675, 688, 690, 674, 676, 677, - 693, 689, 691, 678, 694, 679, 695, 703, 680, 701, - 701, 705, 681, 683, 682, 684, 524, 524, 685, 687, + 640, 640, 640, 660, 547, 662, 666, 663, 640, 640, + 640, 640, 640, 640, 669, 547, 547, 661, 670, 672, + 654, 671, 659, 673, 668, 875, 664, 674, 675, 665, + 676, 677, 678, 660, 662, 667, 666, 663, 640, 640, + 640, 640, 640, 640, 682, 684, 679, 670, 672, 683, + 685, 874, 686, 673, 668, 664, 674, 675, 665, 676, + 687, 677, 678, 680, 688, 667, 690, 691, 695, 681, + 872, 693, 694, 696, 682, 684, 697, 698, 683, 699, + 685, 686, 700, 701, 869, 702, 703, 704, 705, 687, + 706, 707, 709, 680, 688, 690, 708, 691, 695, 681, - 706, 686, 607, 768, 524, 688, 690, 410, 411, 693, - 689, 524, 691, 524, 694, 695, 708, 703, 524, 710, - 705, 707, 524, 410, 411, 702, 702, 702, 702, 709, - 706, 711, 524, 712, 702, 702, 702, 702, 702, 702, - 714, 713, 524, 524, 524, 524, 708, 764, 710, 715, - 707, 716, 717, 524, 524, 775, 718, 776, 721, 709, - 524, 711, 524, 712, 702, 702, 702, 702, 702, 702, - 714, 713, 719, 723, 720, 524, 524, 524, 524, 715, - 724, 716, 717, 524, 722, 524, 718, 524, 721, 726, - 728, 752, 731, 732, 734, 727, 730, 748, 733, 736, + 693, 694, 696, 710, 711, 713, 697, 698, 712, 699, + 714, 700, 716, 701, 702, 703, 715, 704, 705, 717, + 706, 707, 709, 719, 720, 708, 721, 727, 727, 729, + 547, 731, 710, 547, 711, 713, 547, 712, 732, 852, + 714, 757, 716, 547, 547, 715, 841, 547, 734, 717, + 738, 547, 719, 739, 720, 721, 737, 547, 733, 729, + 731, 428, 429, 728, 728, 728, 728, 547, 732, 735, + 757, 748, 728, 728, 728, 728, 728, 728, 734, 736, + 738, 547, 547, 739, 547, 740, 737, 733, 741, 742, + 547, 547, 547, 743, 428, 429, 547, 747, 547, 735, - 741, 738, 719, 723, 720, 725, 735, 729, 743, 740, - 724, 739, 742, 722, 744, 745, 746, 747, 749, 726, - 728, 731, 750, 732, 734, 727, 730, 733, 751, 736, - 741, 738, 753, 754, 725, 755, 735, 729, 740, 756, - 739, 757, 742, 744, 758, 745, 746, 747, 749, 759, - 761, 750, 760, 762, 763, 765, 766, 767, 751, 769, - 770, 753, 754, 771, 755, 772, 773, 777, 778, 756, - 757, 696, 697, 758, 698, 410, 411, 409, 524, 759, - 761, 760, 762, 524, 763, 765, 766, 767, 524, 769, - 770, 524, 771, 410, 411, 772, 773, 777, 778, 524, + 748, 744, 728, 728, 728, 728, 728, 728, 736, 745, + 547, 746, 547, 547, 753, 740, 547, 750, 741, 742, + 547, 749, 758, 743, 547, 751, 752, 747, 759, 754, + 760, 744, 761, 756, 762, 764, 755, 832, 766, 745, + 767, 746, 768, 771, 753, 765, 770, 750, 772, 773, + 775, 749, 758, 776, 751, 777, 752, 759, 779, 754, + 760, 761, 780, 756, 762, 764, 755, 766, 781, 782, + 767, 783, 768, 771, 765, 770, 784, 785, 772, 773, + 775, 786, 776, 787, 789, 777, 788, 779, 791, 792, + 793, 780, 795, 796, 547, 797, 798, 781, 799, 782, - 782, 524, 786, 784, 783, 524, 524, 785, 524, 524, - 524, 524, 524, 787, 524, 791, 524, 524, 524, 363, - 363, 807, 793, 737, 795, 802, 524, 788, 796, 524, - 782, 786, 789, 784, 783, 790, 792, 785, 524, 797, - 524, 794, 798, 787, 524, 791, 799, 800, 524, 804, - 524, 807, 793, 808, 795, 802, 788, 803, 796, 805, - 811, 789, 801, 809, 790, 792, 812, 813, 797, 814, - 794, 815, 798, 810, 704, 816, 799, 800, 818, 804, - 819, 820, 808, 821, 822, 823, 825, 803, 824, 805, - 811, 826, 801, 809, 827, 829, 812, 813, 814, 830, + 783, 803, 804, 722, 723, 784, 724, 785, 807, 547, + 786, 808, 547, 787, 789, 788, 547, 809, 791, 792, + 793, 547, 795, 796, 797, 811, 798, 547, 799, 547, + 547, 803, 804, 428, 429, 427, 810, 547, 547, 547, + 812, 808, 813, 547, 547, 547, 547, 809, 547, 814, + 806, 547, 547, 815, 817, 811, 819, 547, 821, 547, + 818, 816, 822, 805, 820, 824, 810, 547, 826, 812, + 823, 825, 813, 547, 828, 827, 547, 833, 814, 835, + 829, 836, 815, 547, 817, 830, 819, 834, 821, 818, + 816, 837, 822, 820, 831, 824, 838, 839, 826, 823, - 815, 831, 838, 810, 816, 839, 846, 775, 818, 776, - 819, 820, 849, 821, 822, 823, 825, 824, 847, 524, - 917, 826, 918, 827, 864, 829, 832, 833, 524, 830, - 831, 834, 838, 524, 835, 839, 846, 836, 840, 841, - 524, 849, 837, 842, 524, 878, 843, 524, 847, 844, - 863, 524, 862, 524, 864, 865, 832, 833, 524, 868, - 866, 834, 524, 524, 835, 524, 875, 836, 840, 841, - 876, 837, 872, 842, 878, 867, 843, 870, 524, 844, - 863, 862, 871, 880, 869, 865, 882, 873, 877, 868, - 866, 874, 879, 881, 409, 883, 875, 884, 699, 885, + 840, 825, 842, 843, 828, 827, 844, 833, 845, 835, + 829, 836, 846, 847, 849, 830, 848, 834, 850, 723, + 851, 837, 853, 854, 831, 838, 839, 855, 862, 840, + 863, 870, 842, 843, 718, 871, 844, 801, 845, 802, + 873, 794, 846, 847, 849, 848, 856, 857, 850, 851, + 547, 858, 853, 854, 859, 547, 855, 860, 862, 790, + 863, 870, 861, 864, 865, 871, 547, 887, 866, 873, + 547, 867, 547, 547, 868, 888, 856, 857, 547, 886, + 547, 858, 890, 547, 859, 547, 547, 860, 889, 547, + 892, 861, 899, 864, 865, 900, 891, 887, 866, 898, - 876, 886, 872, 887, 867, 888, 870, 889, 890, 891, - 892, 871, 880, 869, 894, 882, 873, 895, 877, 896, - 902, 874, 879, 881, 883, 901, 893, 884, 885, 903, - 904, 886, 887, 905, 907, 888, 906, 889, 890, 891, - 892, 897, 692, 911, 894, 898, 895, 912, 899, 896, - 902, 915, 943, 908, 901, 893, 909, 524, 900, 903, - 904, 944, 946, 905, 907, 906, 910, 945, 947, 948, - 950, 897, 911, 949, 951, 898, 912, 952, 899, 953, - 915, 942, 943, 908, 954, 955, 909, 900, 956, 666, - 957, 944, 946, 958, 959, 910, 945, 960, 947, 948, + 901, 867, 893, 902, 868, 888, 547, 894, 886, 895, + 904, 897, 890, 903, 906, 896, 778, 905, 889, 907, + 892, 908, 899, 909, 900, 891, 910, 911, 912, 898, + 901, 893, 902, 913, 914, 916, 894, 917, 895, 904, + 897, 918, 774, 903, 906, 896, 905, 923, 907, 928, + 915, 908, 909, 924, 925, 919, 910, 911, 912, 920, + 926, 927, 921, 913, 914, 916, 917, 929, 769, 933, + 934, 918, 922, 937, 930, 763, 923, 931, 928, 915, + 939, 547, 940, 924, 925, 919, 969, 932, 965, 920, + 926, 927, 921, 966, 967, 968, 970, 929, 933, 934, - 950, 961, 949, 962, 951, 963, 964, 952, 965, 953, - 942, 966, 967, 954, 968, 955, 969, 971, 956, 957, - 970, 972, 973, 958, 959, 974, 975, 960, 976, 979, - 961, 977, 917, 962, 918, 963, 964, 917, 965, 918, - 966, 967, 993, 994, 968, 995, 969, 971, 978, 970, - 996, 972, 973, 997, 974, 975, 998, 976, 979, 999, - 1000, 977, 1001, 663, 1002, 1003, 1004, 648, 1005, 1006, - 1007, 993, 1008, 994, 1009, 995, 1010, 978, 1011, 1012, - 996, 1013, 1014, 997, 1015, 1016, 998, 1017, 1018, 999, - 1000, 1019, 1001, 1002, 1003, 1020, 1004, 1005, 1021, 1006, + 971, 922, 937, 972, 930, 964, 973, 931, 974, 975, + 976, 730, 977, 978, 979, 969, 932, 980, 965, 981, + 982, 983, 984, 966, 967, 968, 970, 985, 427, 986, + 971, 987, 988, 972, 964, 989, 973, 974, 990, 975, + 976, 977, 991, 978, 979, 992, 993, 980, 981, 994, + 982, 983, 984, 995, 996, 999, 997, 985, 986, 939, + 987, 940, 988, 1013, 939, 989, 940, 990, 1014, 1015, + 1016, 1017, 991, 998, 1018, 992, 993, 1019, 994, 1020, + 1021, 1022, 995, 996, 999, 1023, 997, 1024, 1025, 725, + 1026, 1027, 1013, 1028, 1029, 1030, 1031, 1032, 1014, 1015, - 1007, 1008, 1022, 1009, 1025, 1010, 1023, 1026, 1011, 1012, - 1024, 1013, 1014, 1015, 1016, 1028, 1017, 1029, 1018, 1030, - 1031, 1019, 1032, 1033, 1034, 1020, 1035, 1036, 1021, 1037, - 1038, 1022, 1039, 1025, 1040, 1023, 1041, 1026, 1042, 1024, - 1043, 1044, 1045, 1046, 1047, 1028, 1048, 1029, 1030, 1049, - 1031, 1032, 1033, 1034, 1050, 1057, 1035, 1036, 1037, 1038, - 1051, 1052, 1039, 1053, 1040, 1054, 1041, 1055, 1042, 1056, - 1043, 1044, 1045, 1046, 1047, 1048, 1058, 1059, 1060, 1049, - 1061, 620, 1062, 1063, 1050, 1057, 1064, 1065, 1066, 1051, - 1052, 1067, 1053, 1068, 1054, 1069, 1055, 1070, 1056, 1071, + 1016, 1017, 998, 1033, 1018, 1034, 1035, 1019, 1020, 1021, + 1036, 1022, 1037, 1038, 1023, 1039, 1044, 1024, 1025, 1026, + 1027, 1040, 1028, 1043, 1029, 1030, 1031, 1032, 1048, 1041, + 1046, 1047, 1033, 1042, 1034, 1035, 1049, 1050, 1051, 1052, + 1036, 1053, 1037, 1038, 1054, 1039, 1044, 1055, 1056, 1057, + 1040, 1058, 1043, 1059, 1060, 1061, 1062, 1048, 1041, 1063, + 1046, 1047, 1042, 1064, 1065, 1049, 1050, 1066, 1051, 1052, + 1053, 1067, 1068, 1054, 1069, 1070, 1071, 1055, 1056, 1057, + 1072, 1058, 1073, 1059, 1060, 1061, 1062, 1074, 1075, 1063, + 1076, 1077, 1064, 1078, 1065, 1079, 1080, 1066, 1081, 1082, - 1072, 1073, 1074, 1075, 409, 1076, 1058, 1059, 1060, 1077, - 1061, 1062, 1078, 1063, 1079, 1080, 1064, 1065, 1066, 1081, - 1067, 1082, 1083, 1068, 1084, 1069, 1085, 1070, 1086, 1071, - 1072, 1073, 1074, 1075, 1076, 1087, 1088, 1089, 1077, 1090, - 1091, 1092, 1078, 1079, 1093, 1080, 1094, 566, 1095, 1081, - 1082, 1096, 1083, 1097, 1084, 1098, 1085, 1099, 1086, 1100, - 1101, 524, 1102, 1103, 1104, 1087, 1088, 1089, 1090, 1091, - 1105, 1092, 416, 1093, 416, 420, 1094, 1095, 391, 518, - 1096, 518, 1097, 378, 457, 1098, 342, 1099, 1100, 339, - 1101, 1102, 1103, 336, 1104, 301, 299, 301, 296, 286, + 1067, 1068, 1083, 1069, 1070, 1084, 1071, 1085, 1086, 1087, + 1072, 1088, 1073, 1089, 1090, 718, 1091, 1074, 1075, 1076, + 1092, 1077, 1093, 1078, 1094, 1079, 1080, 1081, 1095, 1082, + 1096, 1097, 1083, 1098, 1099, 1084, 1100, 1085, 1086, 1087, + 1088, 1101, 1089, 1102, 1090, 1091, 1103, 1104, 1105, 1106, + 1092, 1107, 1093, 1094, 1108, 692, 1109, 1110, 1095, 1111, + 1096, 1097, 1112, 1098, 1099, 1100, 375, 375, 689, 434, + 1101, 434, 541, 1102, 541, 1103, 1104, 1105, 645, 1106, + 427, 1107, 415, 415, 1108, 1109, 1110, 415, 590, 1111, + 344, 343, 1112, 68, 68, 68, 68, 68, 68, 68, - 1105, 62, 62, 62, 62, 62, 62, 62, 62, 62, - 62, 62, 62, 62, 62, 62, 62, 62, 82, 82, - 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, - 82, 82, 82, 82, 82, 85, 85, 85, 85, 85, - 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, - 85, 85, 88, 88, 88, 88, 88, 88, 88, 88, - 88, 88, 88, 88, 88, 88, 88, 88, 88, 92, - 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, - 92, 92, 92, 92, 92, 92, 100, 100, 100, 100, - 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, + 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, + 68, 68, 68, 68, 88, 88, 88, 88, 88, 88, + 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, + 88, 88, 88, 88, 88, 91, 91, 91, 91, 91, + 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, + 91, 91, 91, 91, 91, 91, 94, 94, 94, 94, + 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, + 94, 94, 94, 94, 94, 94, 94, 97, 97, 97, + 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, + 97, 97, 97, 97, 97, 97, 97, 97, 106, 106, - 100, 100, 100, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, - 112, 112, 112, 112, 112, 112, 112, 118, 118, 118, + 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, + 106, 106, 106, 106, 106, 106, 106, 106, 106, 56, + 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, - 118, 118, 118, 118, 123, 123, 123, 123, 123, 123, - 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, - 123, 127, 127, 127, 127, 127, 127, 127, 127, 127, - 127, 127, 127, 127, 127, 127, 127, 127, 147, 147, - 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, + 118, 124, 124, 124, 124, 124, 124, 124, 124, 124, + 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, + 124, 124, 129, 129, 129, 129, 129, 129, 129, 129, + 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, - 147, 147, 147, 147, 147, 150, 150, 150, 150, 150, - 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, - 150, 150, 156, 156, 156, 156, 156, 156, 156, 156, - 156, 156, 156, 156, 156, 156, 156, 156, 156, 161, - 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, - 161, 161, 161, 161, 161, 161, 200, 200, 200, 200, - 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, - 200, 200, 200, 204, 204, 204, 204, 204, 204, 204, - 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, - 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, + 129, 129, 129, 133, 133, 133, 133, 133, 133, 133, + 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, + 133, 133, 133, 133, 153, 153, 153, 153, 153, 153, + 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, + 153, 153, 153, 153, 153, 156, 156, 156, 156, 156, + 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, + 156, 156, 156, 156, 156, 156, 162, 162, 162, 162, + 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, + 162, 162, 162, 162, 162, 162, 162, 169, 169, 169, + 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, - 220, 220, 220, 220, 220, 220, 220, 224, 224, 224, - 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, - 224, 224, 224, 224, 231, 231, 282, 231, 231, 423, - 422, 421, 231, 237, 237, 237, 237, 237, 237, 237, - 237, 237, 237, 237, 237, 237, 237, 237, 237, 248, - 248, 270, 248, 248, 420, 418, 417, 248, 259, 407, - 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, - 259, 259, 259, 259, 259, 262, 254, 262, 262, 262, - 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, - 262, 262, 268, 268, 268, 403, 268, 268, 250, 233, + 169, 169, 169, 169, 169, 169, 169, 169, 208, 208, + 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, + 208, 208, 208, 208, 208, 208, 208, 208, 208, 212, + 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, + 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, + 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, + 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, + 228, 232, 232, 232, 232, 232, 232, 232, 232, 232, + 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, + 232, 232, 237, 237, 237, 237, 237, 237, 237, 237, - 229, 268, 280, 386, 280, 280, 280, 280, 280, 280, - 280, 280, 280, 280, 280, 280, 280, 280, 280, 281, - 385, 281, 281, 281, 281, 281, 281, 281, 281, 281, - 281, 281, 281, 281, 281, 281, 285, 285, 285, 285, - 285, 285, 285, 285, 285, 285, 285, 285, 384, 285, - 382, 285, 285, 295, 381, 380, 295, 295, 295, 295, + 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, + 237, 237, 237, 240, 240, 240, 240, 240, 240, 240, + 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, + 240, 240, 240, 240, 246, 547, 246, 438, 246, 246, + 455, 455, 455, 246, 252, 252, 252, 252, 252, 252, + 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, + 252, 252, 252, 252, 263, 409, 263, 390, 263, 263, + 417, 417, 479, 263, 274, 417, 274, 274, 274, 274, + 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, + 274, 274, 274, 274, 274, 277, 354, 277, 277, 277, + + 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, + 277, 277, 277, 277, 277, 277, 283, 283, 351, 283, + 348, 283, 283, 467, 466, 463, 283, 295, 315, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, - 303, 303, 378, 303, 303, 342, 340, 339, 303, 308, - 338, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 311, 337, 311, 311, + 295, 295, 295, 295, 295, 295, 295, 295, 299, 299, + 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, + 299, 299, 299, 313, 299, 315, 299, 299, 299, 302, + 310, 302, 302, 296, 302, 302, 302, 302, 302, 302, + 302, 302, 302, 302, 441, 302, 440, 302, 302, 302, + 309, 439, 285, 309, 309, 309, 309, 309, 309, 309, - 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, - 317, 311, 311, 312, 336, 312, 335, 331, 312, 312, - 312, 312, 312, 329, 328, 327, 312, 314, 326, 314, - 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, - 314, 314, 314, 314, 318, 318, 322, 318, 318, 321, - 317, 313, 318, 323, 323, 323, 323, 323, 323, 323, - 323, 323, 323, 323, 323, 323, 323, 323, 323, 323, - 330, 307, 330, 310, 330, 330, 330, 330, 330, 330, - 330, 330, 330, 307, 330, 330, 330, 332, 306, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, + 309, 317, 438, 317, 436, 317, 317, 435, 425, 269, + 317, 322, 421, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 325, 265, 325, 325, 325, 325, 325, 325, + 325, 325, 325, 325, 325, 325, 325, 325, 325, 248, + 325, 325, 325, 326, 244, 326, 341, 326, 403, 326, + 326, 326, 326, 402, 326, 326, 400, 399, 398, 326, + 328, 397, 328, 328, 328, 395, 328, 328, 328, 328, + 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, - 332, 332, 332, 332, 341, 304, 341, 341, 341, 341, - 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, - 341, 345, 345, 302, 299, 345, 345, 377, 301, 377, - 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, - 377, 377, 377, 377, 383, 297, 383, 383, 383, 296, - 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, - 383, 231, 231, 294, 231, 231, 293, 292, 289, 231, - 388, 288, 388, 388, 388, 388, 388, 388, 388, 388, - 388, 388, 388, 388, 388, 388, 388, 389, 287, 389, + 328, 331, 394, 331, 393, 331, 331, 390, 354, 352, + 331, 334, 334, 334, 334, 334, 334, 334, 334, 334, + 334, 334, 334, 334, 334, 334, 334, 334, 334, 334, + 334, 334, 337, 351, 337, 337, 337, 337, 337, 307, + 337, 337, 337, 337, 337, 337, 337, 306, 337, 330, + 337, 337, 337, 340, 348, 340, 347, 340, 340, 340, + 340, 340, 340, 340, 340, 340, 340, 340, 307, 306, + 341, 340, 340, 340, 342, 342, 342, 342, 342, 342, + 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, + 342, 342, 342, 342, 342, 353, 307, 353, 353, 353, + + 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, + 353, 353, 353, 353, 353, 353, 357, 357, 306, 339, + 338, 357, 357, 389, 307, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 392, 306, 330, 392, 392, 392, + 392, 392, 392, 392, 392, 392, 392, 392, 392, 329, + 392, 327, 392, 396, 321, 396, 396, 396, 396, 324, + 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, + 396, 396, 396, 396, 401, 401, 401, 401, 401, 401, + 401, 401, 401, 401, 401, 401, 401, 401, 401, 321, - 389, 389, 389, 389, 397, 397, 286, 282, 279, 397, - 399, 399, 278, 270, 258, 399, 400, 400, 400, 400, - 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, - 400, 400, 400, 248, 248, 257, 248, 248, 256, 250, - 247, 248, 404, 404, 404, 404, 404, 404, 404, 404, - 404, 404, 404, 404, 404, 404, 404, 404, 404, 409, - 233, 409, 409, 409, 409, 409, 409, 409, 409, 409, - 409, 409, 409, 229, 409, 409, 259, 1106, 259, 259, - 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, - 259, 259, 259, 419, 419, 111, 419, 419, 111, 1106, + 401, 320, 401, 401, 401, 404, 318, 404, 404, 404, + 316, 404, 404, 404, 404, 404, 404, 404, 404, 404, + 313, 315, 311, 404, 404, 404, 246, 310, 246, 308, + 246, 246, 307, 306, 303, 246, 406, 301, 406, 406, + 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, + 406, 406, 406, 406, 406, 406, 406, 407, 300, 407, + 407, 407, 407, 407, 407, 407, 407, 407, 407, 407, + 407, 407, 407, 407, 407, 407, 407, 407, 418, 418, + 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, + 418, 418, 418, 418, 418, 418, 418, 418, 418, 263, - 1106, 419, 419, 424, 1106, 424, 424, 424, 424, 424, - 424, 424, 424, 424, 424, 424, 424, 424, 424, 424, - 280, 1106, 280, 280, 280, 280, 280, 280, 280, 280, - 280, 280, 280, 280, 280, 280, 280, 281, 1106, 281, - 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, - 281, 281, 281, 281, 426, 1106, 426, 426, 426, 426, - 426, 426, 426, 426, 426, 426, 426, 426, 426, 426, - 426, 427, 1106, 427, 427, 427, 427, 427, 427, 427, - 427, 427, 427, 427, 427, 427, 427, 427, 285, 285, - 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, + 296, 263, 294, 263, 263, 293, 285, 273, 263, 422, + 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, + 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, + 427, 272, 427, 427, 427, 427, 427, 427, 427, 427, + 427, 427, 427, 427, 427, 427, 427, 271, 427, 427, + 427, 274, 265, 274, 274, 274, 274, 274, 274, 274, + 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, + 274, 274, 437, 262, 437, 248, 437, 437, 244, 1113, + 117, 437, 117, 437, 442, 1113, 442, 442, 442, 442, + 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, - 1106, 285, 1106, 285, 285, 430, 430, 430, 430, 430, - 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, - 430, 430, 295, 1106, 1106, 295, 295, 295, 295, 295, - 295, 295, 295, 295, 295, 295, 295, 295, 295, 303, - 303, 1106, 303, 303, 1106, 1106, 1106, 303, 312, 1106, - 312, 1106, 1106, 312, 312, 312, 312, 312, 1106, 1106, - 1106, 312, 314, 1106, 314, 314, 314, 314, 314, 314, - 314, 314, 314, 314, 314, 314, 314, 314, 314, 318, - 318, 1106, 318, 318, 1106, 1106, 1106, 318, 323, 323, - 323, 323, 323, 323, 323, 323, 323, 323, 323, 323, + 442, 442, 442, 442, 442, 295, 1113, 295, 295, 295, + 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, + 295, 295, 295, 295, 295, 295, 444, 1113, 444, 444, + 444, 444, 444, 444, 444, 444, 444, 444, 444, 444, + 444, 444, 444, 444, 444, 444, 444, 445, 1113, 445, + 445, 445, 445, 445, 445, 445, 445, 445, 445, 445, + 445, 445, 445, 445, 445, 445, 445, 445, 299, 299, + 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, + 299, 299, 299, 1113, 299, 1113, 299, 299, 299, 302, + 1113, 302, 302, 1113, 302, 302, 302, 302, 302, 302, - 323, 323, 323, 323, 323, 330, 1106, 330, 1106, 330, - 330, 330, 330, 330, 330, 330, 330, 330, 1106, 330, - 330, 330, 447, 1106, 447, 447, 447, 447, 447, 447, - 447, 447, 447, 447, 447, 447, 447, 447, 447, 341, - 1106, 341, 341, 341, 341, 341, 341, 341, 341, 341, - 341, 341, 341, 341, 341, 341, 345, 345, 1106, 1106, - 345, 345, 377, 1106, 377, 377, 377, 377, 377, 377, - 377, 377, 377, 377, 377, 377, 377, 377, 377, 383, - 1106, 383, 383, 383, 1106, 383, 383, 383, 383, 383, - 383, 383, 383, 383, 383, 383, 388, 1106, 388, 388, + 302, 302, 302, 302, 1113, 302, 1113, 302, 302, 302, + 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, + 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, + 448, 309, 1113, 1113, 309, 309, 309, 309, 309, 309, + 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, + 309, 309, 317, 1113, 317, 1113, 317, 317, 1113, 1113, + 1113, 317, 326, 1113, 326, 1113, 326, 1113, 326, 326, + 326, 326, 1113, 326, 326, 1113, 1113, 1113, 326, 328, + 1113, 328, 328, 328, 328, 328, 328, 328, 328, 328, + 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, - 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, - 388, 388, 388, 389, 1106, 389, 389, 389, 389, 389, + 331, 1113, 331, 1113, 331, 331, 1113, 1113, 1113, 331, + 334, 334, 334, 334, 334, 334, 334, 334, 334, 334, + 334, 334, 334, 334, 334, 334, 334, 334, 334, 334, + 334, 337, 1113, 337, 337, 337, 337, 337, 1113, 337, + 337, 337, 337, 337, 337, 337, 1113, 337, 1113, 337, + 337, 337, 340, 1113, 340, 1113, 340, 340, 340, 340, + 340, 340, 340, 340, 340, 340, 340, 1113, 1113, 1113, + 340, 340, 340, 468, 1113, 468, 468, 468, 468, 468, + 468, 468, 468, 468, 468, 468, 468, 468, 468, 468, + 468, 468, 468, 468, 353, 1113, 353, 353, 353, 353, + + 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, + 353, 353, 353, 353, 353, 357, 357, 1113, 1113, 1113, + 357, 357, 389, 1113, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, - 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, - 498, 498, 498, 498, 498, 498, 498, 507, 507, 1106, - 507, 507, 1106, 1106, 1106, 507, 509, 509, 1106, 509, - 509, 1106, 1106, 1106, 509, 400, 400, 400, 400, 400, - 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, - 400, 400, 404, 404, 404, 404, 404, 404, 404, 404, - 404, 404, 404, 404, 404, 404, 404, 404, 404, 409, + 389, 389, 389, 392, 1113, 1113, 392, 392, 392, 392, + 392, 392, 392, 392, 392, 392, 392, 392, 1113, 392, + 1113, 392, 396, 1113, 396, 396, 396, 396, 1113, 396, + 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, + 396, 396, 396, 401, 401, 401, 401, 401, 401, 401, + 401, 401, 401, 401, 401, 401, 401, 401, 1113, 401, - 1106, 409, 409, 409, 409, 409, 409, 409, 409, 409, - 409, 409, 409, 1106, 409, 409, 419, 419, 1106, 419, - 419, 1106, 1106, 1106, 419, 419, 424, 1106, 424, 424, - 424, 424, 424, 424, 424, 424, 424, 424, 424, 424, - 424, 424, 424, 426, 1106, 426, 426, 426, 426, 426, - 426, 426, 426, 426, 426, 426, 426, 426, 426, 426, - 427, 1106, 427, 427, 427, 427, 427, 427, 427, 427, - 427, 427, 427, 427, 427, 427, 427, 430, 430, 430, - 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, - 430, 430, 430, 430, 437, 437, 437, 318, 318, 1106, + 1113, 401, 401, 401, 404, 1113, 404, 404, 404, 1113, + 404, 404, 404, 404, 404, 404, 404, 404, 404, 1113, + 1113, 1113, 404, 404, 404, 406, 1113, 406, 406, 406, + 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, + 406, 406, 406, 406, 406, 406, 407, 1113, 407, 407, + 407, 407, 407, 407, 407, 407, 407, 407, 407, 407, + 407, 407, 407, 407, 407, 407, 407, 521, 521, 521, + 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, + 521, 521, 521, 521, 521, 521, 521, 521, 530, 1113, + 530, 1113, 530, 530, 1113, 1113, 1113, 530, 532, 1113, - 318, 318, 1106, 1106, 1106, 318, 447, 1106, 447, 447, - 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, - 447, 447, 447, 605, 1106, 605, 605, 605, 605, 605, - 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, - 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, - 774, 774, 774, 774, 774, 774, 774, 916, 916, 916, - 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, - 916, 916, 916, 916, 49, 1106, 1106, 1106, 1106, 1106, - 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, - 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, + 532, 1113, 532, 532, 1113, 1113, 1113, 532, 418, 418, + 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, + 418, 418, 418, 418, 418, 418, 418, 418, 418, 422, + 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, + 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, + 427, 1113, 427, 427, 427, 427, 427, 427, 427, 427, + 427, 427, 427, 427, 427, 427, 427, 1113, 427, 427, + 427, 437, 1113, 437, 1113, 437, 437, 1113, 1113, 1113, + 437, 1113, 437, 442, 1113, 442, 442, 442, 442, 442, + 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, + + 442, 442, 442, 442, 444, 1113, 444, 444, 444, 444, + 444, 444, 444, 444, 444, 444, 444, 444, 444, 444, + 444, 444, 444, 444, 444, 445, 1113, 445, 445, 445, + 445, 445, 445, 445, 445, 445, 445, 445, 445, 445, + 445, 445, 445, 445, 445, 445, 302, 1113, 302, 302, + 1113, 302, 302, 302, 302, 302, 302, 302, 302, 302, + 302, 1113, 302, 1113, 302, 302, 302, 448, 448, 448, + 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, + 448, 448, 448, 448, 448, 448, 448, 448, 331, 1113, + 331, 1113, 331, 331, 1113, 1113, 1113, 331, 342, 1113, + + 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, + 342, 342, 342, 342, 342, 342, 342, 342, 342, 468, + 1113, 468, 468, 468, 468, 468, 468, 468, 468, 468, + 468, 468, 468, 468, 468, 468, 468, 468, 468, 468, + 357, 357, 1113, 1113, 1113, 357, 357, 630, 1113, 630, + 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, + 630, 630, 630, 630, 630, 630, 630, 630, 800, 800, + 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, + 800, 800, 800, 800, 800, 800, 800, 800, 800, 938, + 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, + + 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, + 55, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, + 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, + 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, + 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, + 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, + 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, + 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, + 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, + 1113, 1113, 1113, 1113, 1113 - 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, - 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, - 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, - 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, - 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, - 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106 } ; -static yyconst flex_int16_t yy_chk[4060] = +static const flex_int16_t yy_chk[4596] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -1435,25 +1347,25 @@ static yyconst flex_int16_t yy_chk[4060] = 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, - 96, 3, 3, 5, 3, 5, 7, 3, 3, 3, - 3, 8, 992, 3, 3, 6, 6, 942, 6, 21, - 3, 941, 6, 3, 9, 126, 9, 11, 11, 96, + 102, 3, 3, 5, 3, 5, 1012, 3, 3, 3, + 3, 79, 79, 3, 3, 6, 6, 7, 6, 7, + 3, 21, 6, 3, 8, 132, 8, 11, 11, 102, - 11, 12, 12, 940, 12, 17, 939, 17, 19, 138, - 19, 19, 27, 20, 27, 20, 20, 17, 22, 3, - 3, 17, 17, 17, 17, 28, 7, 28, 7, 51, - 51, 8, 51, 8, 126, 10, 9, 10, 79, 21, - 21, 10, 21, 9, 9, 87, 9, 87, 3, 3, - 3, 4, 4, 138, 4, 4, 938, 4, 4, 19, - 4, 4, 4, 4, 20, 9, 4, 4, 22, 22, - 95, 22, 9, 4, 73, 73, 4, 10, 23, 37, - 23, 45, 37, 45, 10, 10, 17, 10, 259, 259, - 45, 23, 142, 263, 263, 37, 37, 37, 37, 937, + 11, 12, 12, 964, 12, 19, 85, 19, 19, 27, + 28, 27, 28, 17, 20, 17, 20, 20, 148, 3, + 3, 51, 9, 51, 9, 17, 537, 22, 9, 17, + 17, 17, 17, 10, 132, 10, 29, 963, 29, 10, + 176, 21, 21, 47, 21, 47, 29, 148, 3, 3, + 3, 4, 4, 47, 4, 4, 19, 4, 4, 537, + 4, 4, 4, 4, 9, 20, 4, 4, 23, 176, + 23, 9, 9, 4, 9, 10, 4, 22, 22, 85, + 22, 23, 10, 10, 962, 10, 29, 199, 29, 45, + 52, 45, 52, 9, 17, 93, 37, 93, 45, 37, - 95, 38, 4, 4, 38, 4, 10, 46, 147, 46, - 147, 79, 47, 10, 47, 936, 46, 38, 38, 38, - 38, 142, 47, 55, 55, 149, 55, 149, 23, 23, - 23, 4, 4, 4, 13, 13, 13, 13, 13, 13, + 9, 961, 4, 4, 10, 4, 38, 960, 46, 38, + 46, 10, 37, 37, 37, 37, 199, 46, 23, 23, + 23, 959, 38, 38, 38, 38, 57, 57, 153, 57, + 153, 4, 4, 4, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, @@ -1463,14 +1375,14 @@ static yyconst flex_int16_t yy_chk[4060] = 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 18, 24, - 18, 24, 168, 29, 58, 29, 74, 74, 935, 30, - 18, 30, 24, 29, 18, 18, 18, 18, 31, 30, - 31, 31, 32, 191, 32, 32, 48, 162, 48, 67, - 67, 168, 67, 246, 162, 246, 48, 75, 74, 75, - 141, 58, 75, 75, 75, 75, 167, 176, 177, 24, - 24, 24, 191, 29, 253, 29, 253, 105, 105, 30, - 105, 30, 116, 116, 116, 116, 294, 74, 294, 31, - 141, 58, 323, 32, 323, 934, 167, 176, 177, 18, + 18, 24, 155, 30, 155, 30, 31, 202, 31, 31, + 18, 64, 24, 30, 18, 18, 18, 18, 32, 43, + 32, 32, 53, 48, 53, 48, 167, 61, 61, 53, + 61, 101, 43, 48, 73, 73, 202, 73, 81, 261, + 81, 261, 43, 81, 81, 81, 81, 43, 64, 24, + 24, 24, 170, 30, 958, 30, 31, 31, 31, 170, + 957, 101, 43, 111, 111, 268, 111, 268, 32, 32, + 32, 43, 53, 53, 53, 956, 43, 167, 64, 18, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, @@ -1481,15 +1393,15 @@ static yyconst flex_int16_t yy_chk[4060] = 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 33, 33, 39, 33, 39, 34, - 34, 33, 34, 182, 41, 42, 34, 333, 43, 181, + 34, 33, 34, 147, 41, 42, 34, 49, 44, 49, - 33, 41, 42, 186, 333, 34, 203, 203, 203, 203, - 325, 43, 325, 181, 41, 42, 179, 187, 179, 188, - 314, 43, 179, 182, 41, 42, 43, 33, 194, 41, - 42, 199, 34, 186, 33, 33, 39, 33, 39, 34, - 34, 43, 34, 181, 41, 42, 179, 187, 179, 188, - 43, 179, 933, 41, 42, 43, 33, 194, 41, 42, - 199, 34, 932, 33, 314, 39, 931, 39, 34, 35, + 33, 41, 42, 175, 308, 34, 308, 49, 274, 274, + 50, 44, 50, 184, 41, 42, 122, 122, 122, 122, + 50, 44, 185, 147, 41, 42, 44, 33, 207, 41, + 42, 955, 34, 175, 33, 33, 39, 33, 39, 34, + 34, 44, 34, 184, 41, 42, 334, 49, 334, 49, + 44, 954, 185, 41, 42, 44, 33, 207, 41, 42, + 50, 34, 50, 33, 336, 39, 336, 39, 34, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, @@ -1499,390 +1411,444 @@ static yyconst flex_int16_t yy_chk[4060] = 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 40, 44, 40, 63, 63, 193, 63, - 122, 122, 347, 63, 183, 76, 76, 44, 76, 125, - 125, 348, 76, 350, 195, 132, 132, 44, 180, 184, - 190, 76, 44, 409, 409, 183, 180, 76, 193, 930, - 190, 347, 122, 196, 183, 197, 198, 44, 873, 184, + 35, 35, 35, 40, 634, 40, 54, 189, 54, 69, + 69, 188, 69, 54, 80, 80, 69, 82, 82, 188, + 82, 189, 128, 128, 82, 278, 278, 131, 131, 953, + 138, 138, 359, 82, 187, 190, 194, 634, 195, 82, + 187, 188, 191, 201, 196, 345, 80, 192, 196, 188, - 348, 125, 350, 40, 195, 40, 44, 132, 180, 184, - 190, 44, 236, 189, 183, 244, 180, 189, 235, 76, - 190, 122, 258, 196, 872, 197, 198, 278, 184, 871, - 125, 290, 40, 291, 40, 59, 132, 63, 228, 228, - 192, 228, 236, 189, 260, 244, 76, 189, 232, 232, - 192, 232, 258, 192, 59, 235, 59, 278, 59, 249, - 249, 290, 249, 291, 59, 870, 249, 59, 59, 59, - 192, 59, 59, 59, 260, 260, 869, 59, 298, 298, - 192, 298, 192, 868, 59, 235, 59, 867, 59, 319, - 320, 866, 239, 239, 59, 239, 865, 59, 59, 59, + 952, 189, 345, 40, 128, 40, 54, 54, 54, 131, + 897, 359, 138, 191, 187, 190, 194, 192, 195, 187, + 198, 82, 191, 201, 196, 80, 896, 192, 196, 203, + 198, 204, 40, 128, 40, 65, 243, 243, 131, 243, + 69, 138, 191, 250, 205, 197, 192, 361, 82, 197, + 198, 206, 251, 200, 65, 259, 65, 273, 65, 203, + 198, 204, 895, 200, 65, 894, 200, 65, 65, 65, + 893, 65, 65, 65, 205, 197, 361, 65, 892, 197, + 250, 206, 251, 200, 65, 259, 65, 273, 65, 211, + 211, 211, 211, 200, 65, 200, 891, 65, 65, 65, - 59, 59, 59, 864, 240, 240, 59, 240, 59, 239, - 239, 239, 239, 241, 241, 863, 241, 261, 261, 319, - 320, 240, 240, 240, 240, 242, 242, 352, 242, 343, - 241, 241, 241, 241, 354, 239, 305, 305, 305, 305, - 249, 344, 242, 242, 242, 242, 346, 862, 355, 261, - 269, 269, 349, 269, 241, 357, 352, 269, 353, 343, - 346, 356, 353, 354, 239, 242, 269, 358, 861, 349, - 359, 344, 269, 360, 359, 361, 346, 355, 261, 362, - 364, 366, 349, 367, 241, 357, 368, 369, 353, 346, - 356, 371, 353, 372, 371, 242, 368, 358, 349, 374, + 65, 65, 65, 890, 247, 247, 65, 247, 65, 889, + 250, 254, 254, 888, 254, 255, 255, 887, 255, 256, + 256, 363, 256, 257, 257, 275, 257, 293, 254, 254, + 254, 254, 255, 255, 255, 255, 256, 256, 256, 256, + 257, 257, 257, 257, 264, 264, 304, 264, 276, 276, + 363, 264, 305, 886, 254, 275, 275, 293, 312, 312, + 256, 312, 332, 257, 885, 284, 284, 884, 284, 333, + 349, 350, 284, 355, 356, 358, 304, 883, 365, 366, + 276, 284, 305, 254, 367, 360, 368, 284, 371, 358, + 256, 369, 332, 257, 319, 319, 319, 319, 372, 333, - 359, 375, 360, 359, 269, 361, 415, 415, 362, 364, - 366, 400, 367, 400, 614, 614, 368, 369, 402, 860, - 402, 371, 859, 372, 371, 368, 858, 387, 374, 394, - 375, 269, 307, 307, 307, 307, 307, 307, 307, 307, - 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, - 307, 307, 307, 307, 307, 307, 307, 387, 394, 404, - 307, 404, 307, 307, 307, 307, 307, 307, 307, 307, - 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, - 307, 307, 307, 307, 307, 307, 370, 373, 390, 390, - 370, 390, 395, 396, 373, 370, 379, 379, 379, 379, + 349, 350, 360, 355, 356, 358, 364, 365, 366, 276, + 364, 373, 381, 367, 374, 360, 368, 371, 358, 284, + 418, 369, 418, 882, 420, 264, 420, 422, 372, 422, + 881, 360, 391, 391, 391, 391, 364, 424, 880, 424, + 364, 373, 381, 374, 376, 378, 284, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 370, 376, 378, 321, 370, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 398, 406, 430, 406, 430, 390, 390, 390, 390, 408, - 410, 857, 423, 411, 411, 856, 370, 373, 448, 855, - 370, 395, 854, 396, 373, 370, 376, 425, 376, 428, - 398, 376, 376, 393, 393, 853, 393, 376, 376, 408, - 410, 410, 423, 376, 376, 411, 429, 448, 376, 411, - 393, 393, 393, 393, 852, 376, 376, 425, 376, 428, - 851, 376, 376, 420, 420, 420, 420, 376, 376, 432, - 847, 432, 376, 376, 411, 846, 429, 376, 412, 412, - 792, 412, 412, 412, 412, 412, 412, 412, 412, 412, - 412, 412, 412, 412, 412, 412, 412, 412, 412, 412, + 321, 379, 370, 380, 383, 370, 382, 383, 384, 385, + 382, 879, 386, 380, 387, 382, 385, 878, 405, 427, + 427, 412, 413, 433, 433, 448, 414, 448, 639, 639, + 379, 416, 426, 380, 383, 877, 382, 383, 384, 385, + 382, 386, 380, 387, 531, 382, 385, 388, 405, 388, + 412, 413, 388, 388, 408, 408, 414, 408, 388, 388, + 428, 416, 426, 876, 388, 388, 875, 411, 411, 388, + 411, 408, 408, 408, 408, 441, 388, 388, 443, 388, + 429, 429, 388, 388, 411, 411, 411, 411, 388, 388, + 428, 428, 446, 388, 388, 431, 431, 447, 388, 438, - 412, 412, 412, 412, 412, 412, 412, 412, 412, 412, - 412, 412, 412, 412, 412, 412, 412, 412, 412, 412, - 412, 412, 412, 412, 412, 412, 412, 412, 412, 412, - 412, 412, 791, 412, 412, 412, 412, 412, 412, 412, - 412, 412, 412, 412, 412, 412, 412, 412, 412, 412, - 412, 412, 412, 412, 412, 412, 412, 412, 412, 412, - 412, 412, 413, 413, 445, 446, 441, 433, 434, 435, - 438, 439, 436, 442, 449, 459, 450, 498, 790, 498, - 440, 443, 789, 433, 434, 436, 441, 435, 451, 443, - 439, 788, 438, 442, 445, 446, 413, 413, 414, 414, + 438, 438, 438, 464, 450, 441, 450, 465, 443, 469, + 470, 521, 429, 521, 871, 471, 429, 524, 870, 524, + 526, 526, 446, 526, 531, 818, 625, 447, 625, 431, + 431, 626, 626, 464, 626, 632, 632, 465, 632, 469, + 470, 429, 430, 430, 471, 430, 430, 430, 430, 430, + 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, + 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, + 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, + 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, + 430, 430, 430, 430, 430, 430, 817, 430, 430, 430, - 414, 414, 440, 449, 459, 440, 450, 414, 414, 414, - 414, 414, 414, 433, 434, 436, 441, 435, 451, 443, - 439, 438, 452, 442, 462, 453, 454, 455, 456, 787, - 458, 440, 414, 414, 440, 460, 786, 414, 414, 414, - 414, 414, 414, 444, 463, 464, 465, 467, 444, 444, - 444, 444, 452, 462, 444, 453, 454, 455, 456, 444, - 458, 466, 469, 444, 470, 460, 444, 785, 444, 471, - 784, 444, 472, 463, 473, 464, 465, 467, 444, 444, - 444, 444, 474, 475, 444, 476, 477, 478, 479, 444, - 466, 480, 469, 444, 470, 444, 482, 444, 483, 471, + 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, + 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, + 430, 430, 430, 430, 430, 430, 432, 432, 432, 432, + 451, 452, 453, 457, 456, 432, 432, 432, 432, 432, + 432, 454, 459, 460, 472, 461, 451, 452, 473, 458, + 453, 474, 457, 461, 454, 816, 456, 475, 476, 477, + 432, 432, 459, 460, 478, 432, 432, 432, 432, 432, + 432, 458, 480, 472, 458, 482, 451, 452, 473, 481, + 453, 474, 457, 461, 454, 456, 486, 475, 476, 477, + 484, 487, 459, 460, 478, 815, 485, 488, 489, 814, - 444, 481, 472, 484, 473, 485, 486, 481, 487, 488, - 508, 489, 474, 475, 490, 476, 477, 478, 479, 491, - 492, 480, 493, 494, 783, 495, 482, 483, 497, 782, - 496, 481, 484, 496, 496, 485, 486, 481, 487, 488, - 489, 501, 504, 501, 490, 503, 503, 505, 503, 491, - 492, 523, 493, 494, 495, 506, 499, 499, 497, 499, - 496, 510, 496, 496, 502, 502, 600, 502, 600, 613, - 613, 613, 504, 499, 499, 499, 499, 505, 615, 615, - 523, 502, 502, 502, 502, 506, 601, 601, 780, 601, - 508, 510, 511, 511, 773, 511, 511, 511, 511, 511, + 458, 491, 480, 458, 462, 482, 492, 493, 481, 462, + 462, 462, 462, 494, 495, 462, 486, 496, 497, 484, + 462, 487, 498, 499, 462, 485, 488, 462, 489, 462, + 500, 491, 462, 501, 502, 503, 492, 493, 505, 462, + 462, 462, 462, 494, 495, 462, 506, 496, 497, 504, + 462, 507, 498, 499, 462, 504, 462, 508, 462, 509, + 500, 462, 510, 501, 502, 503, 511, 513, 505, 512, + 514, 515, 516, 517, 519, 506, 518, 519, 519, 504, + 507, 520, 638, 638, 638, 504, 546, 508, 527, 509, + 528, 529, 510, 533, 543, 544, 511, 513, 512, 813, - 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, - 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, - 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, - 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, - 511, 511, 511, 511, 511, 511, 514, 511, 511, 511, - 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, - 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, - 511, 511, 511, 511, 511, 511, 512, 512, 520, 514, - 525, 527, 516, 516, 532, 526, 528, 770, 521, 522, - 526, 758, 607, 607, 529, 607, 531, 528, 525, 529, + 514, 515, 516, 517, 519, 518, 519, 519, 631, 522, + 522, 520, 522, 525, 525, 546, 525, 719, 527, 719, + 528, 529, 812, 533, 543, 544, 522, 522, 522, 522, + 525, 525, 525, 525, 534, 534, 811, 534, 534, 534, + 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, + 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, + 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, + 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, + 534, 534, 534, 534, 534, 534, 534, 534, 631, 534, + 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, - 525, 693, 532, 693, 744, 527, 530, 609, 520, 531, - 512, 512, 513, 513, 513, 513, 516, 516, 521, 522, - 526, 513, 513, 513, 513, 513, 513, 528, 525, 529, - 525, 535, 532, 530, 527, 733, 539, 533, 545, 531, - 609, 534, 533, 704, 535, 546, 545, 536, 537, 539, - 703, 513, 513, 513, 513, 513, 513, 517, 517, 517, - 517, 534, 530, 536, 537, 538, 517, 517, 517, 517, - 517, 517, 533, 540, 535, 546, 545, 699, 550, 539, - 542, 547, 551, 538, 541, 553, 543, 544, 554, 555, - 556, 534, 557, 536, 537, 540, 517, 517, 517, 517, + 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, + 534, 534, 534, 534, 534, 534, 534, 534, 535, 535, + 545, 548, 550, 810, 539, 539, 549, 552, 557, 551, + 554, 549, 552, 553, 809, 559, 558, 640, 640, 548, + 551, 548, 556, 554, 727, 727, 550, 556, 557, 558, + 545, 559, 535, 535, 536, 536, 536, 536, 539, 539, + 553, 549, 552, 536, 536, 536, 536, 536, 536, 548, + 551, 548, 555, 554, 562, 550, 560, 556, 557, 558, + 800, 559, 800, 563, 569, 561, 566, 562, 564, 553, + 555, 571, 560, 536, 536, 536, 536, 536, 536, 540, - 517, 517, 542, 541, 698, 542, 543, 544, 550, 557, - 547, 551, 558, 538, 553, 557, 560, 554, 559, 555, - 556, 563, 606, 564, 540, 565, 566, 692, 569, 570, - 574, 542, 572, 541, 542, 573, 543, 544, 576, 557, - 577, 578, 558, 579, 581, 557, 560, 559, 580, 582, - 583, 563, 564, 584, 565, 586, 566, 569, 587, 570, - 574, 572, 588, 590, 573, 589, 591, 576, 592, 594, - 577, 578, 593, 579, 581, 595, 596, 580, 582, 583, - 602, 595, 597, 584, 603, 586, 604, 616, 587, 611, - 611, 618, 588, 590, 589, 591, 621, 624, 592, 594, + 540, 540, 540, 561, 565, 563, 566, 564, 540, 540, + 540, 540, 540, 540, 569, 567, 568, 562, 570, 572, + 555, 571, 560, 575, 568, 808, 565, 576, 577, 565, + 578, 579, 580, 561, 563, 567, 566, 564, 540, 540, + 540, 540, 540, 540, 582, 584, 581, 570, 572, 583, + 587, 806, 588, 575, 568, 565, 576, 577, 565, 578, + 589, 579, 580, 581, 590, 567, 594, 595, 599, 581, + 799, 597, 598, 601, 582, 584, 602, 603, 583, 604, + 587, 588, 605, 606, 796, 607, 608, 609, 611, 589, + 612, 613, 615, 581, 590, 594, 614, 595, 599, 581, - 619, 593, 606, 686, 622, 595, 596, 701, 701, 602, - 595, 623, 597, 626, 603, 604, 622, 616, 625, 624, - 618, 621, 628, 611, 611, 612, 612, 612, 612, 623, - 619, 625, 627, 626, 612, 612, 612, 612, 612, 612, - 628, 627, 629, 631, 630, 632, 622, 682, 624, 629, - 621, 630, 631, 634, 633, 774, 632, 774, 634, 623, - 635, 625, 636, 626, 612, 612, 612, 612, 612, 612, - 628, 627, 633, 636, 633, 637, 639, 640, 638, 629, - 637, 630, 631, 643, 635, 641, 632, 642, 634, 639, - 641, 668, 644, 645, 648, 640, 643, 664, 647, 650, + 597, 598, 601, 616, 617, 619, 602, 603, 618, 604, + 620, 605, 621, 606, 607, 608, 620, 609, 611, 622, + 612, 613, 615, 627, 628, 614, 629, 636, 636, 641, + 651, 643, 616, 646, 617, 619, 647, 618, 644, 784, + 620, 669, 621, 650, 652, 620, 770, 660, 647, 622, + 651, 648, 627, 652, 628, 629, 650, 649, 646, 641, + 643, 636, 636, 637, 637, 637, 637, 653, 644, 648, + 669, 660, 637, 637, 637, 637, 637, 637, 647, 649, + 651, 654, 655, 652, 656, 653, 650, 646, 654, 655, + 657, 658, 659, 656, 728, 728, 665, 659, 663, 648, - 655, 653, 633, 636, 633, 638, 648, 642, 658, 654, - 637, 653, 657, 635, 659, 661, 662, 663, 665, 639, - 641, 644, 666, 645, 648, 640, 643, 647, 667, 650, - 655, 653, 669, 670, 638, 671, 648, 642, 654, 673, - 653, 674, 657, 659, 675, 661, 662, 663, 665, 676, - 679, 666, 678, 680, 681, 683, 684, 685, 667, 687, - 688, 669, 670, 689, 671, 690, 691, 694, 695, 673, - 674, 696, 696, 675, 696, 700, 700, 700, 711, 676, - 679, 678, 680, 707, 681, 683, 684, 685, 709, 687, - 688, 710, 689, 702, 702, 690, 691, 694, 695, 708, + 660, 657, 637, 637, 637, 637, 637, 637, 649, 658, + 661, 658, 662, 664, 665, 653, 667, 662, 654, 655, + 668, 661, 670, 656, 666, 663, 664, 659, 671, 666, + 672, 657, 674, 668, 676, 679, 667, 761, 680, 658, + 681, 658, 683, 687, 665, 679, 685, 662, 688, 689, + 691, 661, 670, 692, 663, 693, 664, 671, 695, 666, + 672, 674, 696, 668, 676, 679, 667, 680, 697, 699, + 681, 700, 683, 687, 679, 685, 701, 702, 688, 689, + 691, 704, 692, 705, 707, 693, 706, 695, 709, 710, + 711, 696, 713, 714, 733, 715, 716, 697, 717, 699, - 707, 712, 711, 709, 708, 713, 716, 710, 714, 718, - 721, 715, 720, 712, 717, 716, 719, 722, 727, 1147, - 1147, 734, 718, 652, 720, 727, 724, 713, 721, 723, - 707, 711, 714, 709, 708, 715, 717, 710, 725, 722, - 729, 719, 723, 712, 726, 716, 724, 725, 730, 729, - 728, 734, 718, 735, 720, 727, 713, 728, 721, 730, - 738, 714, 726, 737, 715, 717, 739, 740, 722, 741, - 719, 742, 723, 737, 617, 743, 724, 725, 745, 729, - 746, 747, 735, 748, 749, 750, 752, 728, 751, 730, - 738, 754, 726, 737, 756, 760, 739, 740, 741, 761, + 700, 720, 721, 722, 722, 701, 722, 702, 730, 736, + 704, 733, 734, 705, 707, 706, 737, 734, 709, 710, + 711, 735, 713, 714, 715, 736, 716, 739, 717, 740, + 738, 720, 721, 726, 726, 726, 735, 741, 743, 745, + 737, 733, 738, 744, 747, 742, 746, 734, 748, 739, + 729, 750, 749, 740, 742, 736, 744, 752, 746, 751, + 743, 741, 747, 725, 745, 749, 735, 753, 751, 737, + 748, 750, 738, 754, 753, 752, 755, 763, 739, 764, + 754, 765, 740, 756, 742, 755, 744, 763, 746, 743, + 741, 766, 747, 745, 756, 749, 767, 768, 751, 748, - 742, 762, 765, 737, 743, 767, 771, 776, 745, 776, - 746, 747, 778, 748, 749, 750, 752, 751, 772, 795, - 849, 754, 849, 756, 795, 760, 764, 764, 793, 761, - 762, 764, 765, 794, 764, 767, 771, 764, 768, 768, - 796, 778, 764, 768, 797, 809, 768, 799, 772, 768, - 794, 798, 793, 801, 795, 796, 764, 764, 802, 799, - 797, 764, 800, 803, 764, 804, 806, 764, 768, 768, - 807, 764, 803, 768, 809, 798, 768, 801, 805, 768, - 794, 793, 802, 811, 800, 796, 814, 804, 808, 799, - 797, 805, 810, 812, 610, 816, 806, 817, 608, 818, + 769, 750, 771, 772, 753, 752, 773, 763, 774, 764, + 754, 765, 775, 776, 778, 755, 777, 763, 780, 724, + 782, 766, 786, 787, 756, 767, 768, 788, 791, 769, + 793, 797, 771, 772, 718, 798, 773, 802, 774, 802, + 804, 712, 775, 776, 778, 777, 790, 790, 780, 782, + 820, 790, 786, 787, 790, 819, 788, 790, 791, 708, + 793, 797, 790, 794, 794, 798, 823, 820, 794, 804, + 821, 794, 824, 822, 794, 821, 790, 790, 825, 819, + 826, 790, 823, 827, 790, 828, 831, 790, 822, 830, + 825, 790, 832, 794, 794, 833, 824, 820, 794, 831, - 807, 819, 803, 820, 798, 821, 801, 823, 825, 826, - 828, 802, 811, 800, 832, 814, 804, 833, 808, 834, - 837, 805, 810, 812, 816, 836, 828, 817, 818, 838, - 839, 819, 820, 840, 842, 821, 841, 823, 825, 826, - 828, 835, 598, 844, 832, 835, 833, 845, 835, 834, - 837, 848, 875, 843, 836, 828, 843, 874, 835, 838, - 839, 876, 878, 840, 842, 841, 843, 877, 879, 880, - 883, 835, 844, 881, 884, 835, 845, 885, 835, 886, - 848, 874, 875, 843, 888, 889, 843, 835, 890, 571, - 891, 876, 878, 892, 893, 843, 877, 894, 879, 880, + 834, 794, 826, 835, 794, 821, 829, 827, 819, 828, + 838, 830, 823, 836, 841, 829, 694, 840, 822, 842, + 825, 843, 832, 844, 833, 824, 845, 847, 849, 831, + 834, 826, 835, 850, 852, 856, 827, 857, 828, 838, + 830, 858, 690, 836, 841, 829, 840, 860, 842, 865, + 852, 843, 844, 861, 862, 859, 845, 847, 849, 859, + 863, 864, 859, 850, 852, 856, 857, 866, 684, 868, + 869, 858, 859, 872, 867, 678, 860, 867, 865, 852, + 873, 898, 873, 861, 862, 859, 903, 867, 899, 859, + 863, 864, 859, 900, 901, 902, 905, 866, 868, 869, - 883, 895, 881, 897, 884, 898, 899, 885, 900, 886, - 874, 901, 902, 888, 904, 889, 905, 908, 890, 891, - 906, 909, 910, 892, 893, 911, 912, 894, 913, 915, - 895, 914, 916, 897, 916, 898, 899, 918, 900, 918, - 901, 902, 943, 944, 904, 945, 905, 908, 914, 906, - 946, 909, 910, 947, 911, 912, 948, 913, 915, 949, - 950, 914, 951, 568, 952, 953, 954, 552, 955, 956, - 958, 943, 959, 944, 960, 945, 961, 914, 962, 963, - 946, 964, 965, 947, 967, 969, 948, 970, 971, 949, - 950, 972, 951, 952, 953, 973, 954, 955, 975, 956, + 906, 859, 872, 907, 867, 898, 908, 867, 910, 911, + 912, 642, 913, 914, 915, 903, 867, 916, 899, 917, + 919, 920, 921, 900, 901, 902, 905, 922, 635, 923, + 906, 924, 926, 907, 898, 927, 908, 910, 928, 911, + 912, 913, 930, 914, 915, 931, 932, 916, 917, 933, + 919, 920, 921, 934, 935, 937, 936, 922, 923, 938, + 924, 938, 926, 965, 940, 927, 940, 928, 966, 967, + 968, 969, 930, 936, 970, 931, 932, 971, 933, 972, + 973, 974, 934, 935, 937, 975, 936, 976, 978, 633, + 979, 980, 965, 981, 982, 983, 984, 985, 966, 967, - 958, 959, 976, 960, 978, 961, 977, 979, 962, 963, - 977, 964, 965, 967, 969, 993, 970, 994, 971, 995, - 996, 972, 997, 998, 999, 973, 1001, 1002, 975, 1004, - 1005, 976, 1006, 978, 1007, 977, 1008, 979, 1009, 977, - 1010, 1012, 1016, 1017, 1018, 993, 1021, 994, 995, 1022, - 996, 997, 998, 999, 1023, 1031, 1001, 1002, 1004, 1005, - 1024, 1025, 1006, 1026, 1007, 1028, 1008, 1029, 1009, 1030, - 1010, 1012, 1016, 1017, 1018, 1021, 1032, 1033, 1034, 1022, - 1037, 524, 1039, 1041, 1023, 1031, 1044, 1047, 1048, 1024, - 1025, 1049, 1026, 1050, 1028, 1051, 1029, 1052, 1030, 1053, + 968, 969, 936, 987, 970, 989, 990, 971, 972, 973, + 991, 974, 992, 993, 975, 995, 999, 976, 978, 979, + 980, 996, 981, 998, 982, 983, 984, 985, 1015, 997, + 1013, 1014, 987, 997, 989, 990, 1016, 1017, 1019, 1020, + 991, 1022, 992, 993, 1023, 995, 999, 1024, 1025, 1026, + 996, 1027, 998, 1028, 1030, 1034, 1035, 1015, 997, 1036, + 1013, 1014, 997, 1039, 1040, 1016, 1017, 1041, 1019, 1020, + 1022, 1042, 1043, 1023, 1044, 1046, 1047, 1024, 1025, 1026, + 1048, 1027, 1049, 1028, 1030, 1034, 1035, 1050, 1053, 1036, + 1055, 1057, 1039, 1060, 1040, 1063, 1064, 1041, 1065, 1066, - 1054, 1055, 1056, 1058, 515, 1059, 1032, 1033, 1034, 1060, - 1037, 1039, 1061, 1041, 1063, 1067, 1044, 1047, 1048, 1068, - 1049, 1069, 1070, 1050, 1072, 1051, 1073, 1052, 1074, 1053, - 1054, 1055, 1056, 1058, 1059, 1075, 1076, 1077, 1060, 1078, - 1081, 1083, 1061, 1063, 1084, 1067, 1085, 468, 1086, 1068, - 1069, 1087, 1070, 1088, 1072, 1090, 1073, 1093, 1074, 1094, - 1097, 437, 1098, 1099, 1102, 1075, 1076, 1077, 1078, 1081, - 1103, 1083, 1160, 1084, 1160, 419, 1085, 1086, 392, 1189, - 1087, 1189, 1088, 377, 351, 1090, 341, 1093, 1094, 339, - 1097, 1098, 1099, 334, 1102, 301, 300, 299, 296, 285, + 1042, 1043, 1067, 1044, 1046, 1068, 1047, 1069, 1070, 1072, + 1048, 1073, 1049, 1074, 1075, 623, 1077, 1050, 1053, 1055, + 1081, 1057, 1082, 1060, 1083, 1063, 1064, 1065, 1084, 1066, + 1086, 1087, 1067, 1088, 1089, 1068, 1090, 1069, 1070, 1072, + 1073, 1093, 1074, 1095, 1075, 1077, 1096, 1097, 1098, 1100, + 1081, 1103, 1082, 1083, 1105, 596, 1106, 1107, 1084, 1109, + 1086, 1087, 1110, 1088, 1089, 1090, 1157, 1157, 593, 1173, + 1093, 1173, 1206, 1095, 1206, 1096, 1097, 1098, 547, 1100, + 538, 1103, 1166, 1166, 1105, 1106, 1107, 1166, 490, 1109, + 467, 466, 1110, 1114, 1114, 1114, 1114, 1114, 1114, 1114, - 1103, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, - 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1108, 1108, - 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, - 1108, 1108, 1108, 1108, 1108, 1109, 1109, 1109, 1109, 1109, - 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, - 1109, 1109, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, - 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1111, - 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, - 1111, 1111, 1111, 1111, 1111, 1111, 1112, 1112, 1112, 1112, - 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, - - 1112, 1112, 1112, 1113, 1113, 1113, 1113, 1113, 1113, 1113, - 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, - 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1115, 1115, 1115, + 1114, 1114, 1114, 1114, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, - 1115, 1115, 1115, 1115, 1116, 1116, 1116, 1116, 1116, 1116, + 1115, 1115, 1115, 1115, 1115, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, - 1116, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, - 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1118, 1118, + 1116, 1116, 1116, 1116, 1116, 1116, 1117, 1117, 1117, 1117, + 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, + 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, + 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1119, 1119, - 1118, 1118, 1118, 1118, 1118, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, - 1119, 1119, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, - 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1121, + 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1120, + 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, + 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, - 1121, 1121, 1121, 1121, 1121, 1121, 1122, 1122, 1122, 1122, + 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, + 1121, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, - 1122, 1122, 1122, 1123, 1123, 1123, 1123, 1123, 1123, 1123, + 1122, 1122, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, + + 1123, 1123, 1123, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, - - 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1125, 1125, 1125, + 1124, 1124, 1124, 1124, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, - 1125, 1125, 1125, 1125, 1126, 1126, 282, 1126, 1126, 274, - 273, 272, 1126, 1127, 1127, 1127, 1127, 1127, 1127, 1127, - 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1128, - 1128, 271, 1128, 1128, 268, 266, 265, 1128, 1129, 256, + 1125, 1125, 1125, 1125, 1125, 1126, 1126, 1126, 1126, 1126, + 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, + 1126, 1126, 1126, 1126, 1126, 1126, 1127, 1127, 1127, 1127, + 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, + 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1128, 1128, 1128, + 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, + + 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, - 1129, 1129, 1129, 1129, 1129, 1130, 255, 1130, 1130, 1130, + 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, - 1130, 1130, 1131, 1131, 1131, 252, 1131, 1131, 251, 234, - - 230, 1131, 1132, 227, 1132, 1132, 1132, 1132, 1132, 1132, - 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1133, - 226, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, - 1133, 1133, 1133, 1133, 1133, 1133, 1134, 1134, 1134, 1134, - 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 222, 1134, - 208, 1134, 1134, 1135, 207, 206, 1135, 1135, 1135, 1135, - 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, - 1136, 1136, 202, 1136, 1136, 175, 174, 172, 1136, 1137, - 170, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, - 1137, 1137, 1137, 1137, 1137, 1137, 1138, 169, 1138, 1138, + 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, + 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, + 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, + 1131, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, + 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, + 1132, 1132, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, + 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, + 1133, 1133, 1133, 1134, 1134, 1134, 1134, 1134, 1134, 1134, + 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, + 1134, 1134, 1134, 1134, 1135, 455, 1135, 437, 1135, 1135, + 1213, 1213, 1213, 1135, 1136, 1136, 1136, 1136, 1136, 1136, + 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, + 1136, 1136, 1136, 1136, 1137, 410, 1137, 389, 1137, 1137, + 1167, 1167, 362, 1137, 1138, 1167, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, - 166, 1138, 1138, 1139, 165, 1139, 164, 158, 1139, 1139, - 1139, 1139, 1139, 155, 154, 153, 1139, 1140, 152, 1140, - 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, - 1140, 1140, 1140, 1140, 1141, 1141, 144, 1141, 1141, 143, - 139, 136, 1141, 1142, 1142, 1142, 1142, 1142, 1142, 1142, + 1138, 1138, 1138, 1138, 1138, 1139, 353, 1139, 1139, 1139, + + 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, + 1139, 1139, 1139, 1139, 1139, 1139, 1140, 1140, 351, 1140, + 346, 1140, 1140, 344, 343, 328, 1140, 1141, 315, 1141, + 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, + 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, - 1143, 131, 1143, 129, 1143, 1143, 1143, 1143, 1143, 1143, - 1143, 1143, 1143, 124, 1143, 1143, 1143, 1144, 120, 1144, + 1142, 1142, 1142, 314, 1142, 313, 1142, 1142, 1142, 1143, + 310, 1143, 1143, 296, 1143, 1143, 1143, 1143, 1143, 1143, + 1143, 1143, 1143, 1143, 289, 1143, 288, 1143, 1143, 1143, + 1144, 287, 286, 1144, 1144, 1144, 1144, 1144, 1144, 1144, + 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, - - 1144, 1144, 1144, 1144, 1145, 114, 1145, 1145, 1145, 1145, - 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, - 1145, 1146, 1146, 109, 107, 1146, 1146, 1148, 106, 1148, - 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, - 1148, 1148, 1148, 1148, 1149, 103, 1149, 1149, 1149, 101, + 1144, 1145, 283, 1145, 281, 1145, 1145, 280, 271, 270, + 1145, 1146, 267, 1146, 1146, 1146, 1146, 1146, 1146, 1146, + 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, + 1146, 1146, 1147, 266, 1147, 1147, 1147, 1147, 1147, 1147, + 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 249, + 1147, 1147, 1147, 1148, 245, 1148, 241, 1148, 239, 1148, + 1148, 1148, 1148, 238, 1148, 1148, 236, 235, 234, 1148, + 1149, 230, 1149, 1149, 1149, 216, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, - 1149, 1150, 1150, 99, 1150, 1150, 98, 97, 94, 1150, - 1151, 91, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, - 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1152, 90, 1152, - 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, - 1152, 1152, 1152, 1152, 1153, 1153, 88, 86, 84, 1153, - 1154, 1154, 80, 78, 72, 1154, 1155, 1155, 1155, 1155, + 1149, 1150, 215, 1150, 214, 1150, 1150, 210, 183, 182, + 1150, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, + 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, + 1151, 1151, 1152, 180, 1152, 1152, 1152, 1152, 1152, 178, + 1152, 1152, 1152, 1152, 1152, 1152, 1152, 177, 1152, 174, + 1152, 1152, 1152, 1153, 173, 1153, 172, 1153, 1153, 1153, + 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 168, 166, + 164, 1153, 1153, 1153, 1154, 1154, 1154, 1154, 1154, 1154, + 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, + 1154, 1154, 1154, 1154, 1154, 1155, 161, 1155, 1155, 1155, + 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, - 1155, 1155, 1155, 1156, 1156, 71, 1156, 1156, 68, 65, - 60, 1156, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, - 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1158, - 57, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, - 1158, 1158, 1158, 53, 1158, 1158, 1159, 49, 1159, 1159, - 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, - 1159, 1159, 1159, 1161, 1161, 16, 1161, 1161, 15, 0, + 1155, 1155, 1155, 1155, 1155, 1155, 1156, 1156, 160, 159, + 158, 1156, 1156, 1158, 150, 1158, 1158, 1158, 1158, 1158, + 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, + 1158, 1158, 1158, 1158, 1159, 149, 145, 1159, 1159, 1159, + 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 144, + 1159, 142, 1159, 1160, 137, 1160, 1160, 1160, 1160, 135, + 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, + 1160, 1160, 1160, 1160, 1161, 1161, 1161, 1161, 1161, 1161, + 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 130, - 0, 1161, 1161, 1162, 0, 1162, 1162, 1162, 1162, 1162, - 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, - 1163, 0, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, - 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1164, 0, 1164, + 1161, 126, 1161, 1161, 1161, 1162, 120, 1162, 1162, 1162, + 115, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, + 113, 112, 109, 1162, 1162, 1162, 1163, 107, 1163, 105, + 1163, 1163, 104, 103, 99, 1163, 1164, 96, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, - 1164, 1164, 1164, 1164, 1165, 0, 1165, 1165, 1165, 1165, + 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1165, 95, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, - 1165, 1166, 0, 1166, 1166, 1166, 1166, 1166, 1166, 1166, - 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1167, 1167, - 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, - - 0, 1167, 0, 1167, 1167, 1168, 1168, 1168, 1168, 1168, + 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, - 1168, 1168, 1169, 0, 0, 1169, 1169, 1169, 1169, 1169, - 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1170, - 1170, 0, 1170, 1170, 0, 0, 0, 1170, 1171, 0, - 1171, 0, 0, 1171, 1171, 1171, 1171, 1171, 0, 0, - 0, 1171, 1172, 0, 1172, 1172, 1172, 1172, 1172, 1172, - 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1173, - 1173, 0, 1173, 1173, 0, 0, 0, 1173, 1174, 1174, - 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, + 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1169, - 1174, 1174, 1174, 1174, 1174, 1175, 0, 1175, 0, 1175, - 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 0, 1175, - 1175, 1175, 1176, 0, 1176, 1176, 1176, 1176, 1176, 1176, - 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1177, - 0, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, - 1177, 1177, 1177, 1177, 1177, 1177, 1178, 1178, 0, 0, - 1178, 1178, 1179, 0, 1179, 1179, 1179, 1179, 1179, 1179, - 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1180, - 0, 1180, 1180, 1180, 0, 1180, 1180, 1180, 1180, 1180, - 1180, 1180, 1180, 1180, 1180, 1180, 1181, 0, 1181, 1181, + 92, 1169, 90, 1169, 1169, 86, 84, 78, 1169, 1170, + 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, + 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, + 1171, 77, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, + 1171, 1171, 1171, 1171, 1171, 1171, 1171, 74, 1171, 1171, + 1171, 1172, 71, 1172, 1172, 1172, 1172, 1172, 1172, 1172, + 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, + 1172, 1172, 1174, 66, 1174, 63, 1174, 1174, 59, 55, + 16, 1174, 15, 1174, 1175, 0, 1175, 1175, 1175, 1175, + 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, + 1175, 1175, 1175, 1175, 1175, 1176, 0, 1176, 1176, 1176, + 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, + 1176, 1176, 1176, 1176, 1176, 1176, 1177, 0, 1177, 1177, + 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, + 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1178, 0, 1178, + 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, + 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1179, 1179, + 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, + 1179, 1179, 1179, 0, 1179, 0, 1179, 1179, 1179, 1180, + 0, 1180, 1180, 0, 1180, 1180, 1180, 1180, 1180, 1180, + + 1180, 1180, 1180, 1180, 0, 1180, 0, 1180, 1180, 1180, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, - 1181, 1181, 1181, 1182, 0, 1182, 1182, 1182, 1182, 1182, + 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, + 1181, 1182, 0, 0, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, - 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, - 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1184, 1184, 0, - 1184, 1184, 0, 0, 0, 1184, 1185, 1185, 0, 1185, - 1185, 0, 0, 0, 1185, 1186, 1186, 1186, 1186, 1186, - 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, - 1186, 1186, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, - 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1188, + 1182, 1182, 1183, 0, 1183, 0, 1183, 1183, 0, 0, + 0, 1183, 1184, 0, 1184, 0, 1184, 0, 1184, 1184, + 1184, 1184, 0, 1184, 1184, 0, 0, 0, 1184, 1185, + 0, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, + 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, + + 1186, 0, 1186, 0, 1186, 1186, 0, 0, 0, 1186, + 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, + 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, + 1187, 1188, 0, 1188, 1188, 1188, 1188, 1188, 0, 1188, + 1188, 1188, 1188, 1188, 1188, 1188, 0, 1188, 0, 1188, + 1188, 1188, 1189, 0, 1189, 0, 1189, 1189, 1189, 1189, + 1189, 1189, 1189, 1189, 1189, 1189, 1189, 0, 0, 0, + 1189, 1189, 1189, 1190, 0, 1190, 1190, 1190, 1190, 1190, + 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, + 1190, 1190, 1190, 1190, 1191, 0, 1191, 1191, 1191, 1191, - 0, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, - 1188, 1188, 1188, 0, 1188, 1188, 1190, 1190, 0, 1190, - 1190, 0, 0, 0, 1190, 1190, 1191, 0, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, - 1191, 1191, 1191, 1192, 0, 1192, 1192, 1192, 1192, 1192, - 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, - 1193, 0, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, - 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1194, 1194, 1194, - 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, - 1194, 1194, 1194, 1194, 1195, 1195, 1195, 1196, 1196, 0, + 1191, 1191, 1191, 1191, 1191, 1192, 1192, 0, 0, 0, + 1192, 1192, 1193, 0, 1193, 1193, 1193, 1193, 1193, 1193, + 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, + 1193, 1193, 1193, 1194, 0, 0, 1194, 1194, 1194, 1194, + 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 0, 1194, + 0, 1194, 1195, 0, 1195, 1195, 1195, 1195, 0, 1195, + 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, + 1195, 1195, 1195, 1196, 1196, 1196, 1196, 1196, 1196, 1196, + 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 0, 1196, - 1196, 1196, 0, 0, 0, 1196, 1197, 0, 1197, 1197, - 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, - 1197, 1197, 1197, 1198, 0, 1198, 1198, 1198, 1198, 1198, + 0, 1196, 1196, 1196, 1197, 0, 1197, 1197, 1197, 0, + 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 0, + 0, 0, 1197, 1197, 1197, 1198, 0, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, + 1198, 1198, 1198, 1198, 1198, 1198, 1199, 0, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, - 1200, 1200, 1200, 1200, 1106, 1106, 1106, 1106, 1106, 1106, - 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, - 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, + 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1201, 0, + 1201, 0, 1201, 1201, 0, 0, 0, 1201, 1202, 0, + + 1202, 0, 1202, 1202, 0, 0, 0, 1202, 1203, 1203, + 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, + 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1204, + 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, + 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, + 1205, 0, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, + 1205, 1205, 1205, 1205, 1205, 1205, 1205, 0, 1205, 1205, + 1205, 1207, 0, 1207, 0, 1207, 1207, 0, 0, 0, + 1207, 0, 1207, 1208, 0, 1208, 1208, 1208, 1208, 1208, + 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, + + 1208, 1208, 1208, 1208, 1209, 0, 1209, 1209, 1209, 1209, + 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, + 1209, 1209, 1209, 1209, 1209, 1210, 0, 1210, 1210, 1210, + 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, + 1210, 1210, 1210, 1210, 1210, 1210, 1211, 0, 1211, 1211, + 0, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, + 1211, 0, 1211, 0, 1211, 1211, 1211, 1212, 1212, 1212, + 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, + 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1214, 0, + 1214, 0, 1214, 1214, 0, 0, 0, 1214, 1215, 0, + + 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, + 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1216, + 0, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, + 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, + 1217, 1217, 0, 0, 0, 1217, 1217, 1218, 0, 1218, + 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, + 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1219, 1219, + 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, + 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1220, + 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, + + 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, + 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, + 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, + 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, + 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, + 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, + 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, + 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, + 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, + 1113, 1113, 1113, 1113, 1113 - 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, - 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, - 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, - 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, - 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, - 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106 } ; +static yy_state_type yy_last_accepting_state; +static char *yy_last_accepting_cpos; + 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_flag = 0; -static int yy_more_len = 0; -#define yymore() ((yy_more_flag) = 1) -#define YY_MORE_ADJ (yy_more_len) +/* The intent behind this definition is that it'll catch + * any uses of REJECT which flex missed. + */ +#define REJECT reject_used_but_not_detected +#define yymore() yymore_used_but_not_detected +#define YY_MORE_ADJ 0 #define YY_RESTORE_YY_MORE_OFFSET char *yytext; #line 1 "scan.l" @@ -1924,6 +1890,13 @@ char *yytext; extern bool tablesverify, tablesext; extern int trlcontxt; /* Set in parse.y for each rule. */ extern const char *escaped_qstart, *escaped_qend; +extern int yylval; + +#define M4QSTART "[""[" +#define M4QEND "]""]" + +#define ESCAPED_QSTART "[" M4QEND M4QSTART "[" M4QEND M4QSTART +#define ESCAPED_QEND M4QEND "]" M4QSTART M4QEND "]" M4QSTART #define ACTION_ECHO add_action( yytext ) #define ACTION_IFDEF(def, should_define) \ @@ -1932,8 +1905,8 @@ extern const char *escaped_qstart, *escaped_qend; action_define( def, 1 ); \ } -#define ACTION_ECHO_QSTART add_action (escaped_qstart) -#define ACTION_ECHO_QEND add_action (escaped_qend) +#define ACTION_ECHO_QSTART add_action (ESCAPED_QSTART) +#define ACTION_ECHO_QEND add_action (ESCAPED_QEND) #define ACTION_M4_IFDEF(def, should_define) \ do{ \ @@ -1946,7 +1919,7 @@ extern const char *escaped_qstart, *escaped_qend; #define MARK_END_OF_PROLOG mark_prolog(); #define YY_DECL \ - int flexscan() + int flexscan(void) #define RETURNCHAR \ yylval = (unsigned char) yytext[0]; \ @@ -1955,18 +1928,20 @@ extern const char *escaped_qstart, *escaped_qend; #define RETURNNAME \ if(yyleng < MAXLINE) \ { \ - strcpy( nmstr, yytext ); \ + strncpy( nmstr, yytext, sizeof(nmstr) ); \ + return NAME; \ } \ else \ - { \ + do { \ synerr(_("Input line too long\n")); \ FLEX_EXIT(EXIT_FAILURE); \ - } \ - return NAME; + } while (0) #define PUT_BACK_STRING(str, start) \ - for ( i = strlen( str ) - 1; i >= start; --i ) \ - unput((str)[i]) + { size_t i = strlen( str ); \ + while ( i > start ) \ + unput((str)[--i]); \ + } #define CHECK_REJECT(str) \ if ( all_upper( str ) ) \ @@ -1980,14 +1955,26 @@ extern const char *escaped_qstart, *escaped_qend; if ( getenv("POSIXLY_CORRECT") ) \ posix_compat = true; +#define START_CODEBLOCK(x) do { \ + /* Emit the needed line directive... */\ + if (indented_code == false) { \ + linenum++; \ + line_directive_out(NULL, 1); \ + } \ + add_action(M4QSTART); \ + yy_push_state(CODEBLOCK); \ + if ((indented_code = x)) ACTION_ECHO; \ +} while(0) +#define END_CODEBLOCK do { \ + yy_pop_state();\ + add_action(M4QEND); \ + if (!indented_code) line_directive_out(NULL, 0);\ +} while (0) +#line 1974 "" - - - - -#line 1990 "" +#line 1976 "" #define INITIAL 0 #define SECT2 1 @@ -2013,6 +2000,9 @@ extern const char *escaped_qstart, *escaped_qend; #define GROUP_MINUS_PARAMS 21 #define EXTENDED_COMMENT 22 #define COMMENT_DISCARD 23 +#define CODE_COMMENT 24 +#define SECT3_NOESCAPE 25 +#define CHARACTER_CONSTANT 26 #ifndef YY_NO_UNISTD_H /* Special case for "unistd.h", since it is non-ANSI. We include it way @@ -2026,36 +2016,36 @@ extern const char *escaped_qstart, *escaped_qend; #define YY_EXTRA_TYPE void * #endif -static int yy_init_globals (void ); +static int yy_init_globals ( void ); /* Accessor methods to globals. These are made visible to non-reentrant scanners for convenience. */ -int yylex_destroy (void ); +int yylex_destroy ( void ); -int yyget_debug (void ); +int yyget_debug ( void ); -void yyset_debug (int debug_flag ); +void yyset_debug ( int debug_flag ); -YY_EXTRA_TYPE yyget_extra (void ); +YY_EXTRA_TYPE yyget_extra ( void ); -void yyset_extra (YY_EXTRA_TYPE user_defined ); +void yyset_extra ( YY_EXTRA_TYPE user_defined ); -FILE *yyget_in (void ); +FILE *yyget_in ( void ); -void yyset_in (FILE * in_str ); +void yyset_in ( FILE * _in_str ); -FILE *yyget_out (void ); +FILE *yyget_out ( void ); -void yyset_out (FILE * out_str ); +void yyset_out ( FILE * _out_str ); -yy_size_t yyget_leng (void ); + int yyget_leng ( void ); -char *yyget_text (void ); +char *yyget_text ( void ); -int yyget_lineno (void ); +int yyget_lineno ( void ); -void yyset_lineno (int line_number ); +void yyset_lineno ( int _line_number ); /* Macros after this point can all be overridden by user definitions in * section 1. @@ -2063,30 +2053,31 @@ void yyset_lineno (int line_number ); #ifndef YY_SKIP_YYWRAP #ifdef __cplusplus -extern "C" int yywrap (void ); +extern "C" int yywrap ( void ); #else -extern int yywrap (void ); +extern int yywrap ( void ); #endif #endif #ifndef YY_NO_UNPUT - static void yyunput (int c,char *buf_ptr ); -#endif + static void yyunput ( int c, char *buf_ptr ); + +#endif + #ifndef yytext_ptr -static void yy_flex_strncpy (char *,yyconst char *,int ); +static void yy_flex_strncpy ( char *, const char *, int ); #endif #ifdef YY_NEED_STRLEN -static int yy_flex_strlen (yyconst char * ); +static int yy_flex_strlen ( const char * ); #endif #ifndef YY_NO_INPUT - #ifdef __cplusplus -static int yyinput (void ); +static int yyinput ( void ); #else -static int input (void ); +static int input ( void ); #endif #endif @@ -2095,13 +2086,18 @@ static int input (void ); static int yy_start_stack_depth = 0; static int *yy_start_stack = NULL; - static void yy_push_state (int new_state ); + static void yy_push_state ( int _new_state ); - static void yy_pop_state (void ); + static void yy_pop_state ( void ); /* Amount of stuff to slurp up with each read. */ #ifndef YY_READ_BUF_SIZE +#ifdef __ia64__ +/* On IA-64, the buffer size is 16k, not 8k */ +#define YY_READ_BUF_SIZE 16384 +#else #define YY_READ_BUF_SIZE 8192 +#endif /* __ia64__ */ #endif /* Copy whatever the last rule matched to the standard output. */ @@ -2109,7 +2105,7 @@ static int input (void ); /* This used to be an fputs(), but since the string might contain NUL's, * we now use fwrite(). */ -#define ECHO do { if (fwrite( yytext, yyleng, 1, yyout )) {} } while (0) +#define ECHO do { if (fwrite( yytext, (size_t) yyleng, 1, yyout )) {} } while (0) #endif /* Gets input and stuffs it into "buf". number of characters read, or YY_NULL, @@ -2120,7 +2116,7 @@ static int input (void ); if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \ { \ int c = '*'; \ - size_t n; \ + int n; \ for ( n = 0; n < max_size && \ (c = getc( yyin )) != EOF && c != '\n'; ++n ) \ buf[n] = (char) c; \ @@ -2133,7 +2129,7 @@ static int input (void ); else \ { \ errno=0; \ - while ( (result = fread(buf, 1, max_size, yyin))==0 && ferror(yyin)) \ + while ( (result = (int) fread(buf, 1, (yy_size_t) max_size, yyin)) == 0 && ferror(yyin)) \ { \ if( errno != EINTR) \ { \ @@ -2188,7 +2184,7 @@ extern int yylex (void); /* Code executed at the end of each rule. */ #ifndef YY_BREAK -#define YY_BREAK break; +#define YY_BREAK /*LINTED*/break; #endif #define YY_RULE_SETUP \ @@ -2205,19 +2201,6 @@ YY_DECL char *yy_cp, *yy_bp; int yy_act; -#line 131 "scan.l" - - static int bracelevel, didadef, indented_code; - static int doing_rule_action = false; - static int option_sense; - - int doing_codeblock = false; - int i, brace_depth=0, brace_start_line=0; - Char nmdef[MAXLINE]; - - -#line 2219 "" - if ( !(yy_init) ) { (yy_init) = 1; @@ -2226,12 +2209,6 @@ YY_DECL YY_USER_INIT; #endif - /* Create the reject buffer large enough to save one state per allowed character. */ - if ( ! (yy_state_buf) ) - (yy_state_buf) = (yy_state_type *)yyalloc(YY_STATE_BUF_SIZE ); - if ( ! (yy_state_buf) ) - YY_FATAL_ERROR( "out of dynamic memory in yylex()" ); - if ( ! (yy_start) ) (yy_start) = 1; /* first start state */ @@ -2244,20 +2221,29 @@ YY_DECL if ( ! YY_CURRENT_BUFFER ) { yyensure_buffer_stack (); YY_CURRENT_BUFFER_LVALUE = - yy_create_buffer(yyin,YY_BUF_SIZE ); + yy_create_buffer( yyin, YY_BUF_SIZE ); } - yy_load_buffer_state( ); + yy_load_buffer_state( ); } - while ( 1 ) /* loops until end-of-file is reached */ + { +#line 159 "scan.l" + +#line 161 "scan.l" + static int bracelevel, didadef, indented_code; + static int doing_rule_action = false; + static int option_sense; + + int doing_codeblock = false; + int brace_depth=0, brace_start_line=0; + char nmdef[MAXLINE]; + + +#line 2242 "" + + while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ { - (yy_more_len) = 0; - if ( (yy_more_flag) ) - { - (yy_more_len) = (yy_c_buf_p) - (yytext_ptr); - (yy_more_flag) = 0; - } yy_cp = (yy_c_buf_p); /* Support of yytext. */ @@ -2270,44 +2256,33 @@ YY_DECL yy_current_state = (yy_start); yy_current_state += YY_AT_BOL(); - - (yy_state_ptr) = (yy_state_buf); - *(yy_state_ptr)++ = yy_current_state; - yy_match: do { YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)] ; + if ( yy_accept[yy_current_state] ) + { + (yy_last_accepting_state) = yy_current_state; + (yy_last_accepting_cpos) = 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 >= 1107 ) - yy_c = yy_meta[(unsigned int) yy_c]; + if ( yy_current_state >= 1114 ) + yy_c = yy_meta[yy_c]; } - yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; - *(yy_state_ptr)++ = yy_current_state; + yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; ++yy_cp; } - while ( yy_base[yy_current_state] != 3975 ); + while ( yy_base[yy_current_state] != 4511 ); yy_find_action: - yy_current_state = *--(yy_state_ptr); - (yy_lp) = yy_accept[yy_current_state]; -goto find_rule; /* avoid `defined but not used' warning */ -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_act = yy_accept[yy_current_state]; + if ( yy_act == 0 ) + { /* have to back up */ + yy_cp = (yy_last_accepting_cpos); + yy_current_state = (yy_last_accepting_state); + yy_act = yy_accept[yy_current_state]; } YY_DO_BEFORE_ACTION; @@ -2316,47 +2291,48 @@ goto find_rule; /* avoid `defined but not used' warning */ switch ( yy_act ) { /* beginning of action switch */ + case 0: /* must back up */ + /* undo the effects of YY_DO_BEFORE_ACTION */ + *yy_cp = (yy_hold_char); + yy_cp = (yy_last_accepting_cpos); + yy_current_state = (yy_last_accepting_state); + goto yy_find_action; case 1: YY_RULE_SETUP -#line 142 "scan.l" -indented_code = true; BEGIN(CODEBLOCK); +#line 171 "scan.l" +START_CODEBLOCK(true); YY_BREAK case 2: YY_RULE_SETUP -#line 143 "scan.l" -ACTION_ECHO; yy_push_state( COMMENT ); +#line 172 "scan.l" +add_action("/*[""["); yy_push_state( COMMENT ); YY_BREAK case 3: YY_RULE_SETUP -#line 144 "scan.l" +#line 173 "scan.l" yy_push_state( LINEDIR ); YY_BREAK case 4: YY_RULE_SETUP -#line 145 "scan.l" +#line 174 "scan.l" return SCDECL; YY_BREAK case 5: YY_RULE_SETUP -#line 146 "scan.l" +#line 175 "scan.l" return XSCDECL; YY_BREAK case 6: /* rule 6 can match eol */ YY_RULE_SETUP -#line 147 "scan.l" -{ - ++linenum; - line_directive_out( (FILE *) 0, 1 ); - indented_code = false; - BEGIN(CODEBLOCK); - } +#line 176 "scan.l" +START_CODEBLOCK(false); YY_BREAK case 7: /* rule 7 can match eol */ YY_RULE_SETUP -#line 153 "scan.l" +#line 177 "scan.l" { brace_start_line = linenum; ++linenum; @@ -2367,22 +2343,22 @@ YY_RULE_SETUP YY_BREAK case 8: YY_RULE_SETUP -#line 161 "scan.l" +#line 185 "scan.l" synerr( _("malformed '%top' directive") ); YY_BREAK case 9: YY_RULE_SETUP -#line 163 "scan.l" +#line 187 "scan.l" /* discard */ YY_BREAK case 10: YY_RULE_SETUP -#line 165 "scan.l" +#line 189 "scan.l" { sectnum = 2; bracelevel = 0; mark_defs1(); - line_directive_out( (FILE *) 0, 1 ); + line_directive_out(NULL, 1); BEGIN(SECT2PROLOG); return SECTEND; } @@ -2390,46 +2366,46 @@ YY_RULE_SETUP case 11: /* rule 11 can match eol */ YY_RULE_SETUP -#line 174 "scan.l" +#line 198 "scan.l" yytext_is_array = false; ++linenum; YY_BREAK case 12: /* rule 12 can match eol */ YY_RULE_SETUP -#line 175 "scan.l" +#line 199 "scan.l" yytext_is_array = true; ++linenum; YY_BREAK case 13: YY_RULE_SETUP -#line 177 "scan.l" -BEGIN(OPTION); return OPTION_OP; +#line 201 "scan.l" +BEGIN(OPTION); return TOK_OPTION; YY_BREAK case 14: /* rule 14 can match eol */ YY_RULE_SETUP -#line 179 "scan.l" +#line 203 "scan.l" ++linenum; /* ignore */ YY_BREAK case 15: /* rule 15 can match eol */ YY_RULE_SETUP -#line 180 "scan.l" +#line 204 "scan.l" ++linenum; /* ignore */ YY_BREAK /* xgettext: no-c-format */ case 16: /* rule 16 can match eol */ YY_RULE_SETUP -#line 183 "scan.l" +#line 207 "scan.l" synerr( _( "unrecognized '%' directive" ) ); YY_BREAK case 17: YY_RULE_SETUP -#line 185 "scan.l" +#line 209 "scan.l" { if(yyleng < MAXLINE) { - strcpy( nmstr, yytext ); + strncpy( nmstr, yytext, sizeof(nmstr) ); } else { @@ -2443,162 +2419,167 @@ YY_RULE_SETUP YY_BREAK case 18: YY_RULE_SETUP -#line 200 "scan.l" +#line 224 "scan.l" RETURNNAME; YY_BREAK case 19: /* rule 19 can match eol */ YY_RULE_SETUP -#line 201 "scan.l" +#line 225 "scan.l" ++linenum; /* allows blank lines in section 1 */ YY_BREAK case 20: /* rule 20 can match eol */ YY_RULE_SETUP -#line 202 "scan.l" +#line 226 "scan.l" ACTION_ECHO; ++linenum; /* maybe end of comment line */ YY_BREAK - +/* */ case 21: YY_RULE_SETUP -#line 207 "scan.l" -ACTION_ECHO; yy_pop_state(); +#line 231 "scan.l" +ACTION_ECHO; YY_BREAK case 22: YY_RULE_SETUP -#line 208 "scan.l" +#line 232 "scan.l" ACTION_ECHO; YY_BREAK case 23: +/* rule 23 can match eol */ YY_RULE_SETUP -#line 209 "scan.l" -ACTION_ECHO_QSTART; - YY_BREAK -case 24: -YY_RULE_SETUP -#line 210 "scan.l" -ACTION_ECHO_QEND; - YY_BREAK -case 25: -YY_RULE_SETUP -#line 211 "scan.l" -ACTION_ECHO; - YY_BREAK -case 26: -/* rule 26 can match eol */ -YY_RULE_SETUP -#line 212 "scan.l" +#line 234 "scan.l" ++linenum; ACTION_ECHO; YY_BREAK +case 24: +YY_RULE_SETUP +#line 237 "scan.l" +add_action("*/]""]"); yy_pop_state(); + YY_BREAK + + +case 25: +YY_RULE_SETUP +#line 240 "scan.l" +ACTION_ECHO; yy_pop_state(); + YY_BREAK + + /* This is the same as COMMENT, but is discarded rather than output. */ +case 26: +YY_RULE_SETUP +#line 245 "scan.l" +yy_pop_state(); + YY_BREAK case 27: YY_RULE_SETUP -#line 217 "scan.l" -yy_pop_state(); +#line 246 "scan.l" +; YY_BREAK case 28: YY_RULE_SETUP -#line 218 "scan.l" +#line 247 "scan.l" ; YY_BREAK case 29: +/* rule 29 can match eol */ YY_RULE_SETUP -#line 219 "scan.l" -; - YY_BREAK -case 30: -/* rule 30 can match eol */ -YY_RULE_SETUP -#line 220 "scan.l" +#line 248 "scan.l" ++linenum; YY_BREAK -case 31: +case 30: YY_RULE_SETUP -#line 224 "scan.l" +#line 252 "scan.l" yy_pop_state(); YY_BREAK -case 32: +case 31: YY_RULE_SETUP -#line 225 "scan.l" +#line 253 "scan.l" ; YY_BREAK +case 32: +/* rule 32 can match eol */ +YY_RULE_SETUP +#line 254 "scan.l" +++linenum; + YY_BREAK + + case 33: /* rule 33 can match eol */ YY_RULE_SETUP -#line 226 "scan.l" -++linenum; - YY_BREAK - - -case 34: -/* rule 34 can match eol */ -YY_RULE_SETUP -#line 230 "scan.l" +#line 258 "scan.l" yy_pop_state(); YY_BREAK +case 34: +YY_RULE_SETUP +#line 259 "scan.l" +linenum = myctoi( yytext ); + YY_BREAK case 35: YY_RULE_SETUP -#line 231 "scan.l" -linenum = myctoi( yytext ); - YY_BREAK -case 36: -YY_RULE_SETUP -#line 233 "scan.l" +#line 261 "scan.l" { - flex_free( (void *) infilename ); - infilename = copy_string( yytext + 1 ); + free(infilename); + infilename = xstrdup(yytext + 1); infilename[strlen( infilename ) - 1] = '\0'; } YY_BREAK -case 37: +case 36: YY_RULE_SETUP -#line 238 "scan.l" +#line 266 "scan.l" /* ignore spurious characters */ YY_BREAK -case 38: -/* rule 38 can match eol */ +case 37: YY_RULE_SETUP -#line 242 "scan.l" -++linenum; BEGIN(INITIAL); - YY_BREAK -case 39: -YY_RULE_SETUP -#line 244 "scan.l" +#line 269 "scan.l" ACTION_ECHO_QSTART; YY_BREAK +case 38: +YY_RULE_SETUP +#line 270 "scan.l" +ACTION_ECHO_QEND; + YY_BREAK + + +case 39: +/* rule 39 can match eol */ +YY_RULE_SETUP +#line 274 "scan.l" +++linenum; END_CODEBLOCK; + YY_BREAK case 40: YY_RULE_SETUP -#line 245 "scan.l" -ACTION_ECHO_QEND; +#line 275 "scan.l" +ACTION_ECHO; YY_BREAK case 41: YY_RULE_SETUP -#line 246 "scan.l" +#line 276 "scan.l" ACTION_ECHO; YY_BREAK case 42: /* rule 42 can match eol */ YY_RULE_SETUP -#line 248 "scan.l" +#line 277 "scan.l" { ++linenum; ACTION_ECHO; - if ( indented_code ) - BEGIN(INITIAL); + if ( indented_code ) END_CODEBLOCK; } YY_BREAK case 43: YY_RULE_SETUP -#line 257 "scan.l" +#line 285 "scan.l" { if( --brace_depth == 0){ /* TODO: Matched. */ @@ -2609,7 +2590,7 @@ YY_RULE_SETUP YY_BREAK case 44: YY_RULE_SETUP -#line 265 "scan.l" +#line 293 "scan.l" { brace_depth++; buf_strnappend(&top_buf, yytext, yyleng); @@ -2618,7 +2599,7 @@ YY_RULE_SETUP case 45: /* rule 45 can match eol */ YY_RULE_SETUP -#line 270 "scan.l" +#line 298 "scan.l" { ++linenum; buf_strnappend(&top_buf, yytext, yyleng); @@ -2626,23 +2607,23 @@ YY_RULE_SETUP YY_BREAK case 46: YY_RULE_SETUP -#line 275 "scan.l" -buf_strnappend(&top_buf, escaped_qstart, strlen(escaped_qstart)); +#line 303 "scan.l" +buf_strnappend(&top_buf, escaped_qstart, (int) strlen(escaped_qstart)); YY_BREAK case 47: YY_RULE_SETUP -#line 276 "scan.l" -buf_strnappend(&top_buf, escaped_qend, strlen(escaped_qend)); +#line 304 "scan.l" +buf_strnappend(&top_buf, escaped_qend, (int) strlen(escaped_qend)); YY_BREAK case 48: YY_RULE_SETUP -#line 278 "scan.l" +#line 305 "scan.l" { - buf_strnappend(&top_buf, yytext, yyleng); - } + buf_strnappend(&top_buf, yytext, yyleng); + } YY_BREAK case YY_STATE_EOF(CODEBLOCK_MATCH_BRACE): -#line 282 "scan.l" +#line 309 "scan.l" { linenum = brace_start_line; synerr(_("Unmatched '{'")); @@ -2653,16 +2634,16 @@ case YY_STATE_EOF(CODEBLOCK_MATCH_BRACE): case 49: YY_RULE_SETUP -#line 291 "scan.l" +#line 318 "scan.l" /* separates name and definition */ YY_BREAK case 50: YY_RULE_SETUP -#line 293 "scan.l" +#line 320 "scan.l" { if(yyleng < MAXLINE) { - strcpy( (char *) nmdef, yytext ); + strncpy( nmdef, yytext, sizeof(nmdef) ); } else { @@ -2670,12 +2651,12 @@ YY_RULE_SETUP FLEX_EXIT(EXIT_FAILURE); } /* Skip trailing whitespace. */ - for ( i = strlen( (char *) nmdef ) - 1; - i >= 0 && (nmdef[i] == ' ' || nmdef[i] == '\t'); - --i ) - ; - - nmdef[i + 1] = '\0'; + { + size_t i = strlen( nmdef ); + while (i > 0 && (nmdef[i-1] == ' ' || nmdef[i-1] == '\t')) + --i; + nmdef[i] = '\0'; + } ndinstal( nmstr, nmdef ); didadef = true; @@ -2684,7 +2665,7 @@ YY_RULE_SETUP case 51: /* rule 51 can match eol */ YY_RULE_SETUP -#line 315 "scan.l" +#line 342 "scan.l" { if ( ! didadef ) synerr( _( "incomplete name definition" ) ); @@ -2697,42 +2678,42 @@ YY_RULE_SETUP case 52: /* rule 52 can match eol */ YY_RULE_SETUP -#line 325 "scan.l" +#line 352 "scan.l" ++linenum; BEGIN(INITIAL); YY_BREAK case 53: YY_RULE_SETUP -#line 326 "scan.l" +#line 353 "scan.l" option_sense = true; YY_BREAK case 54: YY_RULE_SETUP -#line 328 "scan.l" +#line 355 "scan.l" return '='; YY_BREAK case 55: YY_RULE_SETUP -#line 330 "scan.l" +#line 357 "scan.l" option_sense = ! option_sense; YY_BREAK case 56: YY_RULE_SETUP -#line 332 "scan.l" +#line 359 "scan.l" csize = option_sense ? 128 : 256; YY_BREAK case 57: YY_RULE_SETUP -#line 333 "scan.l" +#line 360 "scan.l" csize = option_sense ? 256 : 128; YY_BREAK case 58: YY_RULE_SETUP -#line 335 "scan.l" +#line 362 "scan.l" long_align = option_sense; YY_BREAK case 59: YY_RULE_SETUP -#line 336 "scan.l" +#line 363 "scan.l" { ACTION_M4_IFDEF( "M4""_YY_ALWAYS_INTERACTIVE", option_sense ); interactive = option_sense; @@ -2740,110 +2721,105 @@ YY_RULE_SETUP YY_BREAK case 60: YY_RULE_SETUP -#line 340 "scan.l" +#line 367 "scan.l" yytext_is_array = option_sense; YY_BREAK case 61: YY_RULE_SETUP -#line 341 "scan.l" -ansi_func_defs = option_sense; +#line 368 "scan.l" +backing_up_report = option_sense; YY_BREAK case 62: YY_RULE_SETUP -#line 342 "scan.l" -ansi_func_protos = option_sense; +#line 369 "scan.l" +interactive = ! option_sense; YY_BREAK case 63: YY_RULE_SETUP -#line 343 "scan.l" -backing_up_report = option_sense; +#line 370 "scan.l" +bison_bridge_lval = option_sense; YY_BREAK case 64: YY_RULE_SETUP -#line 344 "scan.l" -interactive = ! option_sense; - YY_BREAK -case 65: -YY_RULE_SETUP -#line 345 "scan.l" -bison_bridge_lval = option_sense; - YY_BREAK -case 66: -YY_RULE_SETUP -#line 346 "scan.l" +#line 371 "scan.l" { if((bison_bridge_lloc = option_sense)) bison_bridge_lval = true; } YY_BREAK +case 65: +YY_RULE_SETUP +#line 374 "scan.l" +C_plus_plus = option_sense; + YY_BREAK +case 66: +YY_RULE_SETUP +#line 375 "scan.l" +sf_set_case_ins(!option_sense); + YY_BREAK case 67: YY_RULE_SETUP -#line 349 "scan.l" -C_plus_plus = option_sense; +#line 376 "scan.l" +sf_set_case_ins(option_sense); YY_BREAK case 68: YY_RULE_SETUP -#line 350 "scan.l" -sf_set_case_ins(!option_sense); +#line 377 "scan.l" +ddebug = option_sense; YY_BREAK case 69: YY_RULE_SETUP -#line 351 "scan.l" -sf_set_case_ins(option_sense); +#line 378 "scan.l" +spprdflt = ! option_sense; YY_BREAK case 70: YY_RULE_SETUP -#line 352 "scan.l" -ddebug = option_sense; +#line 379 "scan.l" +useecs = option_sense; YY_BREAK case 71: YY_RULE_SETUP -#line 353 "scan.l" -spprdflt = ! option_sense; - YY_BREAK -case 72: -YY_RULE_SETUP -#line 354 "scan.l" -useecs = option_sense; - YY_BREAK -case 73: -YY_RULE_SETUP -#line 355 "scan.l" +#line 380 "scan.l" { useecs = usemecs = false; use_read = fullspd = true; } YY_BREAK -case 74: +case 72: YY_RULE_SETUP -#line 359 "scan.l" +#line 384 "scan.l" { useecs = usemecs = false; use_read = fulltbl = true; } YY_BREAK +case 73: +YY_RULE_SETUP +#line 388 "scan.l" +ACTION_IFDEF("YY_NO_INPUT", ! option_sense); + YY_BREAK +case 74: +YY_RULE_SETUP +#line 389 "scan.l" +interactive = option_sense; + YY_BREAK case 75: YY_RULE_SETUP -#line 363 "scan.l" -ACTION_IFDEF("YY_NO_INPUT", ! option_sense); +#line 390 "scan.l" +lex_compat = option_sense; YY_BREAK case 76: YY_RULE_SETUP -#line 364 "scan.l" -interactive = option_sense; +#line 391 "scan.l" +posix_compat = option_sense; YY_BREAK case 77: YY_RULE_SETUP -#line 365 "scan.l" -lex_compat = option_sense; +#line 392 "scan.l" +gen_line_dirs = option_sense; YY_BREAK case 78: YY_RULE_SETUP -#line 366 "scan.l" -posix_compat = option_sense; - YY_BREAK -case 79: -YY_RULE_SETUP -#line 367 "scan.l" +#line 393 "scan.l" { ACTION_M4_IFDEF( "M4""_YY_MAIN", option_sense); /* Override yywrap */ @@ -2851,265 +2827,265 @@ YY_RULE_SETUP do_yywrap = false; } YY_BREAK -case 80: +case 79: YY_RULE_SETUP -#line 373 "scan.l" +#line 399 "scan.l" usemecs = option_sense; YY_BREAK -case 81: +case 80: YY_RULE_SETUP -#line 374 "scan.l" +#line 400 "scan.l" { ACTION_M4_IFDEF( "M4""_YY_NEVER_INTERACTIVE", option_sense ); interactive = !option_sense; } YY_BREAK +case 81: +YY_RULE_SETUP +#line 404 "scan.l" +performance_report += option_sense ? 1 : -1; + YY_BREAK case 82: YY_RULE_SETUP -#line 378 "scan.l" -performance_report += option_sense ? 1 : -1; +#line 405 "scan.l" +yytext_is_array = ! option_sense; YY_BREAK case 83: YY_RULE_SETUP -#line 379 "scan.l" -yytext_is_array = ! option_sense; +#line 406 "scan.l" +use_read = option_sense; YY_BREAK case 84: YY_RULE_SETUP -#line 380 "scan.l" -use_read = option_sense; +#line 407 "scan.l" +reentrant = option_sense; YY_BREAK case 85: YY_RULE_SETUP -#line 381 "scan.l" -reentrant = option_sense; +#line 408 "scan.l" +reject_really_used = option_sense; YY_BREAK case 86: YY_RULE_SETUP -#line 382 "scan.l" -reject_really_used = option_sense; +#line 409 "scan.l" +ACTION_M4_IFDEF( "M4""_YY_STACK_USED", option_sense ); YY_BREAK case 87: YY_RULE_SETUP -#line 383 "scan.l" -ACTION_M4_IFDEF( "M4""_YY_STACK_USED", option_sense ); +#line 410 "scan.l" +do_stdinit = option_sense; YY_BREAK case 88: YY_RULE_SETUP -#line 384 "scan.l" -do_stdinit = option_sense; +#line 411 "scan.l" +use_stdout = option_sense; YY_BREAK case 89: YY_RULE_SETUP -#line 385 "scan.l" -use_stdout = option_sense; +#line 412 "scan.l" +ACTION_IFDEF("YY_NO_UNISTD_H", ! option_sense); YY_BREAK case 90: YY_RULE_SETUP -#line 386 "scan.l" -ACTION_IFDEF("YY_NO_UNISTD_H", ! option_sense); +#line 413 "scan.l" +ACTION_M4_IFDEF("M4""_YY_NO_UNPUT", ! option_sense); YY_BREAK case 91: YY_RULE_SETUP -#line 387 "scan.l" -ACTION_M4_IFDEF("M4""_YY_NO_UNPUT", ! option_sense); +#line 414 "scan.l" +printstats = option_sense; YY_BREAK case 92: YY_RULE_SETUP -#line 388 "scan.l" -printstats = option_sense; +#line 415 "scan.l" +nowarn = ! option_sense; YY_BREAK case 93: YY_RULE_SETUP -#line 389 "scan.l" -nowarn = ! option_sense; +#line 416 "scan.l" +do_yylineno = option_sense; ACTION_M4_IFDEF("M4""_YY_USE_LINENO", option_sense); YY_BREAK case 94: YY_RULE_SETUP -#line 390 "scan.l" -do_yylineno = option_sense; ACTION_M4_IFDEF("M4""_YY_USE_LINENO", option_sense); +#line 417 "scan.l" +yymore_really_used = option_sense; YY_BREAK case 95: YY_RULE_SETUP -#line 391 "scan.l" -yymore_really_used = option_sense; +#line 418 "scan.l" +do_yywrap = option_sense; YY_BREAK case 96: YY_RULE_SETUP -#line 392 "scan.l" -do_yywrap = option_sense; +#line 420 "scan.l" +ACTION_M4_IFDEF("M4""_YY_NO_PUSH_STATE", ! option_sense); YY_BREAK case 97: YY_RULE_SETUP -#line 394 "scan.l" -ACTION_M4_IFDEF("M4""_YY_NO_PUSH_STATE", ! option_sense); +#line 421 "scan.l" +ACTION_M4_IFDEF("M4""_YY_NO_POP_STATE", ! option_sense); YY_BREAK case 98: YY_RULE_SETUP -#line 395 "scan.l" -ACTION_M4_IFDEF("M4""_YY_NO_POP_STATE", ! option_sense); +#line 422 "scan.l" +ACTION_M4_IFDEF("M4""_YY_NO_TOP_STATE", ! option_sense); YY_BREAK case 99: YY_RULE_SETUP -#line 396 "scan.l" -ACTION_M4_IFDEF("M4""_YY_NO_TOP_STATE", ! option_sense); +#line 424 "scan.l" +ACTION_M4_IFDEF("M4""_YY_NO_SCAN_BUFFER", ! option_sense); YY_BREAK case 100: YY_RULE_SETUP -#line 398 "scan.l" -ACTION_M4_IFDEF("M4""_YY_NO_SCAN_BUFFER", ! option_sense); +#line 425 "scan.l" +ACTION_M4_IFDEF("M4""_YY_NO_SCAN_BYTES", ! option_sense); YY_BREAK case 101: YY_RULE_SETUP -#line 399 "scan.l" -ACTION_M4_IFDEF("M4""_YY_NO_SCAN_BYTES", ! option_sense); +#line 426 "scan.l" +ACTION_M4_IFDEF("M4""_YY_NO_SCAN_STRING", ! option_sense); YY_BREAK case 102: YY_RULE_SETUP -#line 400 "scan.l" -ACTION_M4_IFDEF("M4""_YY_NO_SCAN_STRING", ! option_sense); +#line 428 "scan.l" +ACTION_M4_IFDEF("M4""_YY_NO_FLEX_ALLOC", ! option_sense); YY_BREAK case 103: YY_RULE_SETUP -#line 402 "scan.l" -ACTION_M4_IFDEF("M4""_YY_NO_FLEX_ALLOC", ! option_sense); +#line 429 "scan.l" +ACTION_M4_IFDEF("M4""_YY_NO_FLEX_REALLOC", ! option_sense); YY_BREAK case 104: YY_RULE_SETUP -#line 403 "scan.l" -ACTION_M4_IFDEF("M4""_YY_NO_FLEX_REALLOC", ! option_sense); +#line 430 "scan.l" +ACTION_M4_IFDEF("M4""_YY_NO_FLEX_FREE", ! option_sense); YY_BREAK case 105: YY_RULE_SETUP -#line 404 "scan.l" -ACTION_M4_IFDEF("M4""_YY_NO_FLEX_FREE", ! option_sense); +#line 432 "scan.l" +ACTION_M4_IFDEF("M4""_YY_NO_GET_DEBUG", ! option_sense); YY_BREAK case 106: YY_RULE_SETUP -#line 406 "scan.l" -ACTION_M4_IFDEF("M4""_YY_NO_GET_DEBUG", ! option_sense); +#line 433 "scan.l" +ACTION_M4_IFDEF("M4""_YY_NO_SET_DEBUG", ! option_sense); YY_BREAK case 107: YY_RULE_SETUP -#line 407 "scan.l" -ACTION_M4_IFDEF("M4""_YY_NO_SET_DEBUG", ! option_sense); +#line 434 "scan.l" +ACTION_M4_IFDEF("M4""_YY_NO_GET_EXTRA", ! option_sense); YY_BREAK case 108: YY_RULE_SETUP -#line 408 "scan.l" -ACTION_M4_IFDEF("M4""_YY_NO_GET_EXTRA", ! option_sense); +#line 435 "scan.l" +ACTION_M4_IFDEF("M4""_YY_NO_SET_EXTRA", ! option_sense); YY_BREAK case 109: YY_RULE_SETUP -#line 409 "scan.l" -ACTION_M4_IFDEF("M4""_YY_NO_SET_EXTRA", ! option_sense); +#line 436 "scan.l" +ACTION_M4_IFDEF("M4""_YY_NO_GET_LENG", ! option_sense); YY_BREAK case 110: YY_RULE_SETUP -#line 410 "scan.l" -ACTION_M4_IFDEF("M4""_YY_NO_GET_LENG", ! option_sense); +#line 437 "scan.l" +ACTION_M4_IFDEF("M4""_YY_NO_GET_TEXT", ! option_sense); YY_BREAK case 111: YY_RULE_SETUP -#line 411 "scan.l" -ACTION_M4_IFDEF("M4""_YY_NO_GET_TEXT", ! option_sense); +#line 438 "scan.l" +ACTION_M4_IFDEF("M4""_YY_NO_GET_LINENO", ! option_sense); YY_BREAK case 112: YY_RULE_SETUP -#line 412 "scan.l" -ACTION_M4_IFDEF("M4""_YY_NO_GET_LINENO", ! option_sense); +#line 439 "scan.l" +ACTION_M4_IFDEF("M4""_YY_NO_SET_LINENO", ! option_sense); YY_BREAK case 113: YY_RULE_SETUP -#line 413 "scan.l" -ACTION_M4_IFDEF("M4""_YY_NO_SET_LINENO", ! option_sense); +#line 440 "scan.l" +ACTION_M4_IFDEF("M4""_YY_NO_GET_IN", ! option_sense); YY_BREAK case 114: YY_RULE_SETUP -#line 414 "scan.l" -ACTION_M4_IFDEF("M4""_YY_NO_GET_IN", ! option_sense); +#line 441 "scan.l" +ACTION_M4_IFDEF("M4""_YY_NO_SET_IN", ! option_sense); YY_BREAK case 115: YY_RULE_SETUP -#line 415 "scan.l" -ACTION_M4_IFDEF("M4""_YY_NO_SET_IN", ! option_sense); +#line 442 "scan.l" +ACTION_M4_IFDEF("M4""_YY_NO_GET_OUT", ! option_sense); YY_BREAK case 116: YY_RULE_SETUP -#line 416 "scan.l" -ACTION_M4_IFDEF("M4""_YY_NO_GET_OUT", ! option_sense); +#line 443 "scan.l" +ACTION_M4_IFDEF("M4""_YY_NO_SET_OUT", ! option_sense); YY_BREAK case 117: YY_RULE_SETUP -#line 417 "scan.l" -ACTION_M4_IFDEF("M4""_YY_NO_SET_OUT", ! option_sense); +#line 444 "scan.l" +ACTION_M4_IFDEF("M4""_YY_NO_GET_LVAL", ! option_sense); YY_BREAK case 118: YY_RULE_SETUP -#line 418 "scan.l" -ACTION_M4_IFDEF("M4""_YY_NO_GET_LVAL", ! option_sense); +#line 445 "scan.l" +ACTION_M4_IFDEF("M4""_YY_NO_SET_LVAL", ! option_sense); YY_BREAK case 119: YY_RULE_SETUP -#line 419 "scan.l" -ACTION_M4_IFDEF("M4""_YY_NO_SET_LVAL", ! option_sense); +#line 446 "scan.l" +ACTION_M4_IFDEF("M4""_YY_NO_GET_LLOC", ! option_sense); YY_BREAK case 120: YY_RULE_SETUP -#line 420 "scan.l" -ACTION_M4_IFDEF("M4""_YY_NO_GET_LLOC", ! option_sense); +#line 447 "scan.l" +ACTION_M4_IFDEF("M4""_YY_NO_SET_LLOC", ! option_sense); YY_BREAK case 121: YY_RULE_SETUP -#line 421 "scan.l" -ACTION_M4_IFDEF("M4""_YY_NO_SET_LLOC", ! option_sense); +#line 449 "scan.l" +return TOK_EXTRA_TYPE; YY_BREAK case 122: YY_RULE_SETUP -#line 423 "scan.l" -return OPT_EXTRA_TYPE; +#line 450 "scan.l" +return TOK_OUTFILE; YY_BREAK case 123: YY_RULE_SETUP -#line 424 "scan.l" -return OPT_OUTFILE; +#line 451 "scan.l" +return TOK_PREFIX; YY_BREAK case 124: YY_RULE_SETUP -#line 425 "scan.l" -return OPT_PREFIX; +#line 452 "scan.l" +return TOK_YYCLASS; YY_BREAK case 125: YY_RULE_SETUP -#line 426 "scan.l" -return OPT_YYCLASS; +#line 453 "scan.l" +return TOK_HEADER_FILE; YY_BREAK case 126: YY_RULE_SETUP -#line 427 "scan.l" -return OPT_HEADER; +#line 454 "scan.l" +return TOK_TABLES_FILE; YY_BREAK case 127: YY_RULE_SETUP -#line 428 "scan.l" -return OPT_TABLES; - YY_BREAK -case 128: -YY_RULE_SETUP -#line 429 "scan.l" +#line 455 "scan.l" { tablesverify = option_sense; if(!tablesext && option_sense) tablesext = true; } YY_BREAK -case 129: +case 128: YY_RULE_SETUP -#line 436 "scan.l" +#line 462 "scan.l" { if(yyleng-1 < MAXLINE) { - strcpy( nmstr, yytext + 1 ); + strncpy( nmstr, yytext + 1, sizeof(nmstr) ); } else { @@ -3120,9 +3096,9 @@ YY_RULE_SETUP return NAME; } YY_BREAK -case 130: +case 129: YY_RULE_SETUP -#line 450 "scan.l" +#line 476 "scan.l" { format_synerr( _( "unrecognized %%option: %s" ), yytext ); @@ -3130,56 +3106,57 @@ YY_RULE_SETUP } YY_BREAK -case 131: -/* rule 131 can match eol */ +case 130: +/* rule 130 can match eol */ YY_RULE_SETUP -#line 457 "scan.l" +#line 483 "scan.l" ++linenum; BEGIN(INITIAL); YY_BREAK +case 131: +YY_RULE_SETUP +#line 487 "scan.l" +++bracelevel; yyless( 2 ); /* eat only %{ */ + YY_BREAK case 132: YY_RULE_SETUP -#line 461 "scan.l" -++bracelevel; yyless( 2 ); /* eat only %{ */ +#line 488 "scan.l" +--bracelevel; yyless( 2 ); /* eat only %} */ YY_BREAK case 133: YY_RULE_SETUP -#line 462 "scan.l" ---bracelevel; yyless( 2 ); /* eat only %} */ +#line 490 "scan.l" +START_CODEBLOCK(true); /* indented code in prolog */ YY_BREAK case 134: YY_RULE_SETUP -#line 464 "scan.l" -ACTION_ECHO; /* indented code in prolog */ +#line 492 "scan.l" +{ + /* non-indented code */ + if ( bracelevel <= 0 ) { + /* not in %{ ... %} */ + yyless( 0 ); /* put it all back */ + yy_set_bol( 1 ); + mark_prolog(); + BEGIN(SECT2); + } else { + START_CODEBLOCK(true); + } + } YY_BREAK case 135: YY_RULE_SETUP -#line 466 "scan.l" -{ /* non-indented code */ - if ( bracelevel <= 0 ) - { /* not in %{ ... %} */ - yyless( 0 ); /* put it all back */ - yy_set_bol( 1 ); - mark_prolog(); - BEGIN(SECT2); - } - else - ACTION_ECHO; - } - YY_BREAK -case 136: -YY_RULE_SETUP -#line 478 "scan.l" +#line 505 "scan.l" ACTION_ECHO; YY_BREAK -case 137: -/* rule 137 can match eol */ +case 136: +/* rule 136 can match eol */ YY_RULE_SETUP -#line 479 "scan.l" +#line 506 "scan.l" ++linenum; ACTION_ECHO; YY_BREAK case YY_STATE_EOF(SECT2PROLOG): -#line 481 "scan.l" +#line 508 "scan.l" { mark_prolog(); sectnum = 0; @@ -3188,15 +3165,15 @@ case YY_STATE_EOF(SECT2PROLOG): YY_BREAK -case 138: -/* rule 138 can match eol */ +case 137: +/* rule 137 can match eol */ YY_RULE_SETUP -#line 489 "scan.l" +#line 516 "scan.l" ++linenum; /* allow blank lines in section 2 */ YY_BREAK -case 139: +case 138: YY_RULE_SETUP -#line 491 "scan.l" +#line 518 "scan.l" { indented_code = false; doing_codeblock = true; @@ -3204,9 +3181,9 @@ YY_RULE_SETUP BEGIN(PERCENT_BRACE_ACTION); } YY_BREAK -case 140: +case 139: YY_RULE_SETUP -#line 498 "scan.l" +#line 525 "scan.l" { /* Allow "<" to appear in (?x) patterns. */ if (!sf_skip_ws()) @@ -3214,22 +3191,22 @@ YY_RULE_SETUP return '<'; } YY_BREAK -case 141: +case 140: YY_RULE_SETUP -#line 504 "scan.l" +#line 531 "scan.l" return '^'; YY_BREAK -case 142: +case 141: YY_RULE_SETUP -#line 505 "scan.l" +#line 532 "scan.l" BEGIN(QUOTE); return '"'; YY_BREAK -case 143: +case 142: *yy_cp = (yy_hold_char); /* undo effects of setting up yytext */ (yy_c_buf_p) = yy_cp = yy_bp + 1; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP -#line 506 "scan.l" +#line 533 "scan.l" { BEGIN(NUM); if ( lex_compat || posix_compat ) @@ -3238,18 +3215,19 @@ YY_RULE_SETUP return BEGIN_REPEAT_FLEX; } YY_BREAK -case 144: -/* rule 144 can match eol */ +case 143: +/* rule 143 can match eol */ *yy_cp = (yy_hold_char); /* undo effects of setting up yytext */ +YY_LINENO_REWIND_TO(yy_bp + 1); (yy_c_buf_p) = yy_cp = yy_bp + 1; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP -#line 513 "scan.l" +#line 540 "scan.l" return '$'; YY_BREAK -case 145: +case 144: YY_RULE_SETUP -#line 515 "scan.l" +#line 542 "scan.l" { bracelevel = 1; BEGIN(PERCENT_BRACE_ACTION); @@ -3262,28 +3240,28 @@ YY_RULE_SETUP } } YY_BREAK -case 146: -/* rule 146 can match eol */ +case 145: +/* rule 145 can match eol */ YY_RULE_SETUP -#line 526 "scan.l" +#line 553 "scan.l" { if (sf_skip_ws()){ /* We're in the middle of a (?x: ) pattern. */ /* Push back everything starting at the "|" */ - size_t amt; - amt = strchr (yytext, '|') - yytext; + int amt = (int) (strchr (yytext, '|') - yytext); yyless(amt); } else { + add_action("]""]"); continued_action = true; ++linenum; return '\n'; } } YY_BREAK -case 147: +case 146: YY_RULE_SETUP -#line 541 "scan.l" +#line 568 "scan.l" { if (sf_skip_ws()){ @@ -3298,14 +3276,14 @@ YY_RULE_SETUP } } YY_BREAK -case 148: +case 147: YY_RULE_SETUP -#line 555 "scan.l" +#line 582 "scan.l" /* allow indented rules */ ; YY_BREAK -case 149: +case 148: YY_RULE_SETUP -#line 557 "scan.l" +#line 584 "scan.l" { if (sf_skip_ws()){ /* We're in the middle of a (?x: ) pattern. */ @@ -3328,10 +3306,10 @@ YY_RULE_SETUP } } YY_BREAK -case 150: -/* rule 150 can match eol */ +case 149: +/* rule 149 can match eol */ YY_RULE_SETUP -#line 579 "scan.l" +#line 606 "scan.l" { if (sf_skip_ws()){ /* We're in the middle of a (?x: ) pattern. */ @@ -3352,32 +3330,33 @@ YY_RULE_SETUP } } YY_BREAK +case 150: +#line 627 "scan.l" case 151: -#line 600 "scan.l" +YY_RULE_SETUP +#line 627 "scan.l" +return EOF_OP; + YY_BREAK case 152: YY_RULE_SETUP -#line 600 "scan.l" -return EOF_OP; +#line 629 "scan.l" +{ + sectnum = 3; + BEGIN(no_section3_escape ? SECT3_NOESCAPE : SECT3); + outn("/* Begin user sect3 */"); + yyterminate(); /* to stop the parser */ + + } YY_BREAK case 153: YY_RULE_SETUP -#line 602 "scan.l" -{ - sectnum = 3; - BEGIN(SECT3); - outn("/* Begin user sect3 */"); - yyterminate(); /* to stop the parser */ - } - YY_BREAK -case 154: -YY_RULE_SETUP -#line 609 "scan.l" +#line 637 "scan.l" { int cclval; if(yyleng < MAXLINE) { - strcpy( nmstr, yytext ); + strncpy( nmstr, yytext, sizeof(nmstr) ); } else { @@ -3393,7 +3372,7 @@ YY_RULE_SETUP * The reason it was disabled is so yacc/bison can parse * ccl operations, such as ccl difference and union. */ - && (cclval = ccllookup( (Char *) nmstr )) != 0 ) + && (cclval = ccllookup( nmstr )) != 0 ) { if ( input() != ']' ) synerr( _( "bad character class" ) ); @@ -3407,7 +3386,7 @@ YY_RULE_SETUP /* We fudge a bit. We know that this ccl will * soon be numbered as lastccl + 1 by cclinit. */ - cclinstal( (Char *) nmstr, lastccl + 1 ); + cclinstal( nmstr, lastccl + 1 ); /* Push back everything but the leading bracket * so the ccl can be rescanned. @@ -3419,26 +3398,26 @@ YY_RULE_SETUP } } YY_BREAK -case 155: +case 154: YY_RULE_SETUP -#line 655 "scan.l" +#line 683 "scan.l" return CCL_OP_DIFF; YY_BREAK -case 156: +case 155: YY_RULE_SETUP -#line 656 "scan.l" +#line 684 "scan.l" return CCL_OP_UNION; YY_BREAK /* Check for :space: at the end of the rule so we don't * wrap the expanded regex in '(' ')' -- breaking trailing * context. */ -case 157: -/* rule 157 can match eol */ +case 156: +/* rule 156 can match eol */ YY_RULE_SETUP -#line 663 "scan.l" +#line 691 "scan.l" { - Char *nmdefptr; + char *nmdefptr; int end_is_ws, end_ch; end_ch = yytext[yyleng-1]; @@ -3446,7 +3425,7 @@ YY_RULE_SETUP if(yyleng-1 < MAXLINE) { - strcpy( nmstr, yytext + 1 ); + strncpy( nmstr, yytext + 1, sizeof(nmstr) ); } else { @@ -3462,7 +3441,7 @@ nmstr[yyleng - 2 - end_is_ws] = '\0'; /* chop trailing brace */ else { /* push back name surrounded by ()'s */ - int len = strlen( (char *) nmdefptr ); + size_t len = strlen( nmdefptr ); if (end_is_ws) unput(end_ch); @@ -3470,7 +3449,7 @@ nmstr[yyleng - 2 - end_is_ws] = '\0'; /* chop trailing brace */ (len > 0 && nmdefptr[len - 1] == '$') || (end_is_ws && trlcontxt && !sf_skip_ws())) { /* don't use ()'s after all */ - PUT_BACK_STRING((char *) nmdefptr, 0); + PUT_BACK_STRING(nmdefptr, 0); if ( nmdefptr[0] == '^' ) BEGIN(CARETISBOL); @@ -3479,15 +3458,15 @@ nmstr[yyleng - 2 - end_is_ws] = '\0'; /* chop trailing brace */ else { unput(')'); - PUT_BACK_STRING((char *) nmdefptr, 0); + PUT_BACK_STRING(nmdefptr, 0); unput('('); } } } YY_BREAK -case 158: +case 157: YY_RULE_SETUP -#line 711 "scan.l" +#line 739 "scan.l" { if (sf_skip_ws()) yy_push_state(COMMENT_DISCARD); @@ -3498,9 +3477,9 @@ YY_RULE_SETUP } } YY_BREAK -case 159: +case 158: YY_RULE_SETUP -#line 721 "scan.l" +#line 749 "scan.l" { if (lex_compat || posix_compat){ /* Push back the "?#" and treat it like a normal parens. */ @@ -3512,9 +3491,9 @@ YY_RULE_SETUP yy_push_state(EXTENDED_COMMENT); } YY_BREAK -case 160: +case 159: YY_RULE_SETUP -#line 731 "scan.l" +#line 759 "scan.l" { sf_push(); if (lex_compat || posix_compat) @@ -3525,86 +3504,92 @@ YY_RULE_SETUP return '('; } YY_BREAK +case 160: +YY_RULE_SETUP +#line 768 "scan.l" +sf_push(); return '('; + YY_BREAK case 161: YY_RULE_SETUP -#line 740 "scan.l" -sf_push(); return '('; +#line 769 "scan.l" +{ + if (_sf_top_ix > 0) { + sf_pop(); + return ')'; + } else + synerr(_("unbalanced parenthesis")); + } YY_BREAK case 162: YY_RULE_SETUP -#line 741 "scan.l" -sf_pop(); return ')'; +#line 777 "scan.l" +return (unsigned char) yytext[0]; YY_BREAK case 163: YY_RULE_SETUP -#line 743 "scan.l" -return (unsigned char) yytext[0]; - YY_BREAK -case 164: -YY_RULE_SETUP -#line 744 "scan.l" +#line 778 "scan.l" RETURNCHAR; YY_BREAK -case 165: -/* rule 165 can match eol */ +case 164: +/* rule 164 can match eol */ YY_RULE_SETUP -#line 749 "scan.l" +#line 783 "scan.l" ++linenum; /* Allow blank lines & continuations */ YY_BREAK +case 165: +YY_RULE_SETUP +#line 784 "scan.l" +return (unsigned char) yytext[0]; + YY_BREAK case 166: YY_RULE_SETUP -#line 750 "scan.l" -return (unsigned char) yytext[0]; - YY_BREAK -case 167: -YY_RULE_SETUP -#line 751 "scan.l" +#line 785 "scan.l" BEGIN(SECT2); return '>'; YY_BREAK -case 168: +case 167: *yy_cp = (yy_hold_char); /* undo effects of setting up yytext */ (yy_c_buf_p) = yy_cp = yy_bp + 1; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP -#line 752 "scan.l" +#line 786 "scan.l" BEGIN(CARETISBOL); return '>'; YY_BREAK +case 168: +YY_RULE_SETUP +#line 787 "scan.l" +RETURNNAME; + YY_BREAK case 169: YY_RULE_SETUP -#line 753 "scan.l" -RETURNNAME; - YY_BREAK -case 170: -YY_RULE_SETUP -#line 754 "scan.l" +#line 788 "scan.l" { format_synerr( _( "bad : %s" ), yytext ); } YY_BREAK -case 171: +case 170: YY_RULE_SETUP -#line 760 "scan.l" +#line 794 "scan.l" BEGIN(SECT2); return '^'; YY_BREAK -case 172: +case 171: YY_RULE_SETUP -#line 764 "scan.l" +#line 798 "scan.l" RETURNCHAR; YY_BREAK -case 173: +case 172: YY_RULE_SETUP -#line 765 "scan.l" +#line 799 "scan.l" BEGIN(SECT2); return '"'; YY_BREAK -case 174: -/* rule 174 can match eol */ +case 173: +/* rule 173 can match eol */ YY_RULE_SETUP -#line 767 "scan.l" +#line 801 "scan.l" { synerr( _( "missing quote" ) ); BEGIN(SECT2); @@ -3614,100 +3599,100 @@ YY_RULE_SETUP YY_BREAK +case 174: +YY_RULE_SETUP +#line 810 "scan.l" +BEGIN(SECT2); + YY_BREAK case 175: YY_RULE_SETUP -#line 776 "scan.l" -BEGIN(SECT2); +#line 811 "scan.l" +BEGIN(GROUP_MINUS_PARAMS); YY_BREAK case 176: YY_RULE_SETUP -#line 777 "scan.l" -BEGIN(GROUP_MINUS_PARAMS); +#line 812 "scan.l" +sf_set_case_ins(1); YY_BREAK case 177: YY_RULE_SETUP -#line 778 "scan.l" -sf_set_case_ins(1); +#line 813 "scan.l" +sf_set_dot_all(1); YY_BREAK case 178: YY_RULE_SETUP -#line 779 "scan.l" -sf_set_dot_all(1); - YY_BREAK -case 179: -YY_RULE_SETUP -#line 780 "scan.l" +#line 814 "scan.l" sf_set_skip_ws(1); YY_BREAK +case 179: +YY_RULE_SETUP +#line 817 "scan.l" +BEGIN(SECT2); + YY_BREAK case 180: YY_RULE_SETUP -#line 783 "scan.l" -BEGIN(SECT2); +#line 818 "scan.l" +sf_set_case_ins(0); YY_BREAK case 181: YY_RULE_SETUP -#line 784 "scan.l" -sf_set_case_ins(0); +#line 819 "scan.l" +sf_set_dot_all(0); YY_BREAK case 182: YY_RULE_SETUP -#line 785 "scan.l" -sf_set_dot_all(0); - YY_BREAK -case 183: -YY_RULE_SETUP -#line 786 "scan.l" +#line 820 "scan.l" sf_set_skip_ws(0); YY_BREAK +case 183: +*yy_cp = (yy_hold_char); /* undo effects of setting up yytext */ +(yy_c_buf_p) = yy_cp = yy_bp + 1; +YY_DO_BEFORE_ACTION; /* set up yytext again */ +YY_RULE_SETUP +#line 824 "scan.l" +BEGIN(CCL); return '^'; + YY_BREAK case 184: *yy_cp = (yy_hold_char); /* undo effects of setting up yytext */ (yy_c_buf_p) = yy_cp = yy_bp + 1; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP -#line 790 "scan.l" -BEGIN(CCL); return '^'; - YY_BREAK -case 185: -*yy_cp = (yy_hold_char); /* undo effects of setting up yytext */ -(yy_c_buf_p) = yy_cp = yy_bp + 1; -YY_DO_BEFORE_ACTION; /* set up yytext again */ -YY_RULE_SETUP -#line 791 "scan.l" +#line 825 "scan.l" return '^'; YY_BREAK -case 186: +case 185: YY_RULE_SETUP -#line 792 "scan.l" +#line 826 "scan.l" BEGIN(CCL); RETURNCHAR; YY_BREAK -case 187: +case 186: *yy_cp = (yy_hold_char); /* undo effects of setting up yytext */ (yy_c_buf_p) = yy_cp = yy_bp + 1; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP -#line 796 "scan.l" +#line 830 "scan.l" return '-'; YY_BREAK +case 187: +YY_RULE_SETUP +#line 831 "scan.l" +RETURNCHAR; + YY_BREAK case 188: YY_RULE_SETUP -#line 797 "scan.l" -RETURNCHAR; - YY_BREAK -case 189: -YY_RULE_SETUP -#line 798 "scan.l" +#line 832 "scan.l" BEGIN(SECT2); return ']'; YY_BREAK -case 190: -/* rule 190 can match eol */ +case 189: +/* rule 189 can match eol */ YY_RULE_SETUP -#line 799 "scan.l" +#line 833 "scan.l" { synerr( _( "bad character class" ) ); BEGIN(SECT2); @@ -3716,129 +3701,129 @@ YY_RULE_SETUP YY_BREAK +case 190: +YY_RULE_SETUP +#line 841 "scan.l" +BEGIN(CCL); return CCE_ALNUM; + YY_BREAK case 191: YY_RULE_SETUP -#line 807 "scan.l" -BEGIN(CCL); return CCE_ALNUM; +#line 842 "scan.l" +BEGIN(CCL); return CCE_ALPHA; YY_BREAK case 192: YY_RULE_SETUP -#line 808 "scan.l" -BEGIN(CCL); return CCE_ALPHA; +#line 843 "scan.l" +BEGIN(CCL); return CCE_BLANK; YY_BREAK case 193: YY_RULE_SETUP -#line 809 "scan.l" -BEGIN(CCL); return CCE_BLANK; +#line 844 "scan.l" +BEGIN(CCL); return CCE_CNTRL; YY_BREAK case 194: YY_RULE_SETUP -#line 810 "scan.l" -BEGIN(CCL); return CCE_CNTRL; +#line 845 "scan.l" +BEGIN(CCL); return CCE_DIGIT; YY_BREAK case 195: YY_RULE_SETUP -#line 811 "scan.l" -BEGIN(CCL); return CCE_DIGIT; +#line 846 "scan.l" +BEGIN(CCL); return CCE_GRAPH; YY_BREAK case 196: YY_RULE_SETUP -#line 812 "scan.l" -BEGIN(CCL); return CCE_GRAPH; +#line 847 "scan.l" +BEGIN(CCL); return CCE_LOWER; YY_BREAK case 197: YY_RULE_SETUP -#line 813 "scan.l" -BEGIN(CCL); return CCE_LOWER; +#line 848 "scan.l" +BEGIN(CCL); return CCE_PRINT; YY_BREAK case 198: YY_RULE_SETUP -#line 814 "scan.l" -BEGIN(CCL); return CCE_PRINT; +#line 849 "scan.l" +BEGIN(CCL); return CCE_PUNCT; YY_BREAK case 199: YY_RULE_SETUP -#line 815 "scan.l" -BEGIN(CCL); return CCE_PUNCT; +#line 850 "scan.l" +BEGIN(CCL); return CCE_SPACE; YY_BREAK case 200: YY_RULE_SETUP -#line 816 "scan.l" -BEGIN(CCL); return CCE_SPACE; +#line 851 "scan.l" +BEGIN(CCL); return CCE_UPPER; YY_BREAK case 201: YY_RULE_SETUP -#line 817 "scan.l" -BEGIN(CCL); return CCE_UPPER; +#line 852 "scan.l" +BEGIN(CCL); return CCE_XDIGIT; YY_BREAK case 202: YY_RULE_SETUP -#line 818 "scan.l" -BEGIN(CCL); return CCE_XDIGIT; +#line 854 "scan.l" +BEGIN(CCL); return CCE_NEG_ALNUM; YY_BREAK case 203: YY_RULE_SETUP -#line 820 "scan.l" -BEGIN(CCL); return CCE_NEG_ALNUM; +#line 855 "scan.l" +BEGIN(CCL); return CCE_NEG_ALPHA; YY_BREAK case 204: YY_RULE_SETUP -#line 821 "scan.l" -BEGIN(CCL); return CCE_NEG_ALPHA; +#line 856 "scan.l" +BEGIN(CCL); return CCE_NEG_BLANK; YY_BREAK case 205: YY_RULE_SETUP -#line 822 "scan.l" -BEGIN(CCL); return CCE_NEG_BLANK; +#line 857 "scan.l" +BEGIN(CCL); return CCE_NEG_CNTRL; YY_BREAK case 206: YY_RULE_SETUP -#line 823 "scan.l" -BEGIN(CCL); return CCE_NEG_CNTRL; +#line 858 "scan.l" +BEGIN(CCL); return CCE_NEG_DIGIT; YY_BREAK case 207: YY_RULE_SETUP -#line 824 "scan.l" -BEGIN(CCL); return CCE_NEG_DIGIT; +#line 859 "scan.l" +BEGIN(CCL); return CCE_NEG_GRAPH; YY_BREAK case 208: YY_RULE_SETUP -#line 825 "scan.l" -BEGIN(CCL); return CCE_NEG_GRAPH; +#line 860 "scan.l" +BEGIN(CCL); return CCE_NEG_LOWER; YY_BREAK case 209: YY_RULE_SETUP -#line 826 "scan.l" -BEGIN(CCL); return CCE_NEG_LOWER; +#line 861 "scan.l" +BEGIN(CCL); return CCE_NEG_PRINT; YY_BREAK case 210: YY_RULE_SETUP -#line 827 "scan.l" -BEGIN(CCL); return CCE_NEG_PRINT; +#line 862 "scan.l" +BEGIN(CCL); return CCE_NEG_PUNCT; YY_BREAK case 211: YY_RULE_SETUP -#line 828 "scan.l" -BEGIN(CCL); return CCE_NEG_PUNCT; +#line 863 "scan.l" +BEGIN(CCL); return CCE_NEG_SPACE; YY_BREAK case 212: YY_RULE_SETUP -#line 829 "scan.l" -BEGIN(CCL); return CCE_NEG_SPACE; +#line 864 "scan.l" +BEGIN(CCL); return CCE_NEG_UPPER; YY_BREAK case 213: YY_RULE_SETUP -#line 830 "scan.l" -BEGIN(CCL); return CCE_NEG_UPPER; +#line 865 "scan.l" +BEGIN(CCL); return CCE_NEG_XDIGIT; YY_BREAK case 214: YY_RULE_SETUP -#line 831 "scan.l" -BEGIN(CCL); return CCE_NEG_XDIGIT; - YY_BREAK -case 215: -YY_RULE_SETUP -#line 832 "scan.l" +#line 866 "scan.l" { format_synerr( _( "bad character class expression: %s" ), @@ -3848,22 +3833,22 @@ YY_RULE_SETUP YY_BREAK -case 216: +case 215: YY_RULE_SETUP -#line 841 "scan.l" +#line 875 "scan.l" { yylval = myctoi( yytext ); return NUMBER; } YY_BREAK -case 217: +case 216: YY_RULE_SETUP -#line 846 "scan.l" +#line 880 "scan.l" return ','; YY_BREAK -case 218: +case 217: YY_RULE_SETUP -#line 847 "scan.l" +#line 881 "scan.l" { BEGIN(SECT2); if ( lex_compat || posix_compat ) @@ -3872,19 +3857,19 @@ YY_RULE_SETUP return END_REPEAT_FLEX; } YY_BREAK -case 219: +case 218: YY_RULE_SETUP -#line 855 "scan.l" +#line 889 "scan.l" { synerr( _( "bad character inside {}'s" ) ); BEGIN(SECT2); return '}'; } YY_BREAK -case 220: -/* rule 220 can match eol */ +case 219: +/* rule 219 can match eol */ YY_RULE_SETUP -#line 861 "scan.l" +#line 895 "scan.l" { synerr( _( "missing }" ) ); BEGIN(SECT2); @@ -3894,171 +3879,171 @@ YY_RULE_SETUP YY_BREAK -case 221: +case 220: YY_RULE_SETUP -#line 871 "scan.l" +#line 905 "scan.l" bracelevel = 0; YY_BREAK +case 221: +YY_RULE_SETUP +#line 907 "scan.l" +ACTION_ECHO; yy_push_state( CODE_COMMENT ); + YY_BREAK + case 222: YY_RULE_SETUP -#line 873 "scan.l" -ACTION_ECHO; yy_push_state( COMMENT ); +#line 910 "scan.l" +{ + ACTION_ECHO; + CHECK_REJECT(yytext); + } YY_BREAK - case 223: YY_RULE_SETUP -#line 876 "scan.l" +#line 914 "scan.l" { - ACTION_ECHO; - CHECK_REJECT(yytext); - } + ACTION_ECHO; + CHECK_YYMORE(yytext); + } YY_BREAK + case 224: YY_RULE_SETUP -#line 880 "scan.l" -{ - ACTION_ECHO; - CHECK_YYMORE(yytext); - } - YY_BREAK - -case 225: -YY_RULE_SETUP -#line 886 "scan.l" -ACTION_ECHO_QSTART; - YY_BREAK -case 226: -YY_RULE_SETUP -#line 887 "scan.l" -ACTION_ECHO_QEND; - YY_BREAK -case 227: -YY_RULE_SETUP -#line 888 "scan.l" +#line 920 "scan.l" ACTION_ECHO; YY_BREAK -case 228: -/* rule 228 can match eol */ +case 225: +/* rule 225 can match eol */ YY_RULE_SETUP -#line 889 "scan.l" +#line 921 "scan.l" { - ++linenum; - ACTION_ECHO; - if ( bracelevel == 0 || - (doing_codeblock && indented_code) ) - { - if ( doing_rule_action ) - add_action( "\tYY_BREAK\n" ); + ++linenum; + ACTION_ECHO; + if (bracelevel <= 0 || (doing_codeblock && indented_code)) { + if ( doing_rule_action ) + add_action( "\tYY_BREAK]""]\n" ); - doing_rule_action = doing_codeblock = false; - BEGIN(SECT2); - } - } + doing_rule_action = doing_codeblock = false; + BEGIN(SECT2); + } + } YY_BREAK /* Reject and YYmore() are checked for above, in PERCENT_BRACE_ACTION */ +case 226: +YY_RULE_SETUP +#line 937 "scan.l" +ACTION_ECHO; ++bracelevel; + YY_BREAK +case 227: +YY_RULE_SETUP +#line 938 "scan.l" +ACTION_ECHO; --bracelevel; + YY_BREAK +case 228: +YY_RULE_SETUP +#line 939 "scan.l" +ACTION_ECHO; + YY_BREAK case 229: YY_RULE_SETUP -#line 907 "scan.l" -ACTION_ECHO; ++bracelevel; +#line 940 "scan.l" +ACTION_ECHO; YY_BREAK case 230: YY_RULE_SETUP -#line 908 "scan.l" -ACTION_ECHO; --bracelevel; +#line 941 "scan.l" +ACTION_ECHO; /* character constant */ YY_BREAK case 231: YY_RULE_SETUP -#line 909 "scan.l" -ACTION_ECHO_QSTART; +#line 942 "scan.l" +ACTION_ECHO; BEGIN(CHARACTER_CONSTANT); YY_BREAK case 232: YY_RULE_SETUP -#line 910 "scan.l" -ACTION_ECHO_QEND; +#line 943 "scan.l" +ACTION_ECHO; BEGIN(ACTION_STRING); YY_BREAK case 233: +/* rule 233 can match eol */ YY_RULE_SETUP -#line 911 "scan.l" -ACTION_ECHO; +#line 944 "scan.l" +{ + ++linenum; + ACTION_ECHO; + if (bracelevel <= 0) { + if ( doing_rule_action ) + add_action( "\tYY_BREAK]""]\n" ); + + doing_rule_action = false; + BEGIN(SECT2); + } + } YY_BREAK case 234: YY_RULE_SETUP -#line 912 "scan.l" +#line 955 "scan.l" ACTION_ECHO; YY_BREAK + + case 235: YY_RULE_SETUP -#line 913 "scan.l" +#line 959 "scan.l" ACTION_ECHO; YY_BREAK case 236: YY_RULE_SETUP -#line 914 "scan.l" -ACTION_ECHO; /* character constant */ +#line 960 "scan.l" +ACTION_ECHO; BEGIN(ACTION); YY_BREAK + + case 237: YY_RULE_SETUP -#line 915 "scan.l" -ACTION_ECHO; BEGIN(ACTION_STRING); - YY_BREAK -case 238: -/* rule 238 can match eol */ -YY_RULE_SETUP -#line 916 "scan.l" -{ - ++linenum; - ACTION_ECHO; - if ( bracelevel == 0 ) - { - if ( doing_rule_action ) - add_action( "\tYY_BREAK\n" ); - - doing_rule_action = false; - BEGIN(SECT2); - } - } - YY_BREAK -case 239: -YY_RULE_SETUP -#line 928 "scan.l" +#line 963 "scan.l" ACTION_ECHO; YY_BREAK - - -case 240: +case 238: YY_RULE_SETUP -#line 932 "scan.l" +#line 964 "scan.l" +ACTION_ECHO; BEGIN(ACTION); + YY_BREAK + + +case 239: +/* rule 239 can match eol */ +YY_RULE_SETUP +#line 967 "scan.l" +ACTION_ECHO; + YY_BREAK +case 240: +/* rule 240 can match eol */ +YY_RULE_SETUP +#line 968 "scan.l" ACTION_ECHO; YY_BREAK case 241: +/* rule 241 can match eol */ YY_RULE_SETUP -#line 933 "scan.l" -ACTION_ECHO; +#line 969 "scan.l" +++linenum; ACTION_ECHO; if (bracelevel <= 0) { BEGIN(SECT2); } else { BEGIN(ACTION); } YY_BREAK case 242: -/* rule 242 can match eol */ YY_RULE_SETUP -#line 934 "scan.l" -++linenum; ACTION_ECHO; BEGIN(ACTION); - YY_BREAK -case 243: -YY_RULE_SETUP -#line 935 "scan.l" -ACTION_ECHO; BEGIN(ACTION); - YY_BREAK -case 244: -YY_RULE_SETUP -#line 936 "scan.l" +#line 970 "scan.l" ACTION_ECHO; YY_BREAK case YY_STATE_EOF(COMMENT): +case YY_STATE_EOF(CODE_COMMENT): case YY_STATE_EOF(COMMENT_DISCARD): case YY_STATE_EOF(ACTION): case YY_STATE_EOF(ACTION_STRING): -#line 939 "scan.l" +case YY_STATE_EOF(CHARACTER_CONSTANT): +#line 973 "scan.l" { synerr( _( "EOF encountered inside an action" ) ); yyterminate(); @@ -4067,17 +4052,17 @@ case YY_STATE_EOF(ACTION_STRING): case YY_STATE_EOF(EXTENDED_COMMENT): case YY_STATE_EOF(GROUP_WITH_PARAMS): case YY_STATE_EOF(GROUP_MINUS_PARAMS): -#line 944 "scan.l" +#line 978 "scan.l" { synerr( _( "EOF encountered inside pattern" ) ); yyterminate(); } YY_BREAK -case 245: +case 243: YY_RULE_SETUP -#line 949 "scan.l" +#line 983 "scan.l" { - yylval = myesc( (Char *) yytext ); + yylval = myesc( (unsigned char *) yytext ); if ( YY_START == FIRSTCCL ) BEGIN(CCL); @@ -4086,60 +4071,92 @@ YY_RULE_SETUP } YY_BREAK -case 246: +case 244: YY_RULE_SETUP -#line 960 "scan.l" -fwrite (escaped_qstart, 1, strlen(escaped_qstart), yyout); +#line 993 "scan.l" +fputs(escaped_qstart, yyout); + YY_BREAK +case 245: +YY_RULE_SETUP +#line 994 "scan.l" +fputs(escaped_qend, yyout); + YY_BREAK +case 246: +/* rule 246 can match eol */ +YY_RULE_SETUP +#line 995 "scan.l" +ECHO; YY_BREAK case 247: YY_RULE_SETUP -#line 961 "scan.l" -fwrite (escaped_qend, 1, strlen(escaped_qend), yyout); - YY_BREAK -case 248: -/* rule 248 can match eol */ -YY_RULE_SETUP -#line 962 "scan.l" -ECHO; - YY_BREAK -case 249: -/* rule 249 can match eol */ -YY_RULE_SETUP -#line 963 "scan.l" +#line 996 "scan.l" ECHO; YY_BREAK case YY_STATE_EOF(SECT3): -#line 964 "scan.l" -sectnum = 0; yyterminate(); +#line 997 "scan.l" +{ + sectnum = 0; + yyterminate(); + } YY_BREAK + +case 248: +YY_RULE_SETUP +#line 1003 "scan.l" +fprintf(yyout, "[""[%s]""]", escaped_qstart); + YY_BREAK +case 249: +YY_RULE_SETUP +#line 1004 "scan.l" +fprintf(yyout, "[""[%s]""]", escaped_qend); + YY_BREAK case 250: /* rule 250 can match eol */ YY_RULE_SETUP -#line 967 "scan.l" -format_synerr( _( "bad character: %s" ), yytext ); +#line 1005 "scan.l" +ECHO; YY_BREAK case 251: YY_RULE_SETUP -#line 969 "scan.l" +#line 1006 "scan.l" +ECHO; + YY_BREAK +case YY_STATE_EOF(SECT3_NOESCAPE): +#line 1007 "scan.l" +{ + sectnum = 0; + yyterminate(); + } + YY_BREAK + +case 252: +/* rule 252 can match eol */ +YY_RULE_SETUP +#line 1012 "scan.l" +format_synerr( _( "bad character: %s" ), yytext ); + YY_BREAK +case 253: +YY_RULE_SETUP +#line 1014 "scan.l" YY_FATAL_ERROR( "flex scanner jammed" ); YY_BREAK -#line 4127 "" - case YY_STATE_EOF(INITIAL): - case YY_STATE_EOF(SECT2): - case YY_STATE_EOF(CODEBLOCK): - case YY_STATE_EOF(PICKUPDEF): - case YY_STATE_EOF(SC): - case YY_STATE_EOF(CARETISBOL): - case YY_STATE_EOF(NUM): - case YY_STATE_EOF(QUOTE): - case YY_STATE_EOF(FIRSTCCL): - case YY_STATE_EOF(CCL): - case YY_STATE_EOF(RECOVER): - case YY_STATE_EOF(PERCENT_BRACE_ACTION): - case YY_STATE_EOF(OPTION): - case YY_STATE_EOF(LINEDIR): - yyterminate(); +#line 4143 "" +case YY_STATE_EOF(INITIAL): +case YY_STATE_EOF(SECT2): +case YY_STATE_EOF(CODEBLOCK): +case YY_STATE_EOF(PICKUPDEF): +case YY_STATE_EOF(SC): +case YY_STATE_EOF(CARETISBOL): +case YY_STATE_EOF(NUM): +case YY_STATE_EOF(QUOTE): +case YY_STATE_EOF(FIRSTCCL): +case YY_STATE_EOF(CCL): +case YY_STATE_EOF(RECOVER): +case YY_STATE_EOF(PERCENT_BRACE_ACTION): +case YY_STATE_EOF(OPTION): +case YY_STATE_EOF(LINEDIR): + yyterminate(); case YY_END_OF_BUFFER: { @@ -4215,7 +4232,7 @@ YY_FATAL_ERROR( "flex scanner jammed" ); { (yy_did_buffer_switch_on_eof) = 0; - if ( yywrap( ) ) + if ( yywrap( ) ) { /* Note: because we've taken care in * yy_get_next_buffer() to have set up @@ -4268,6 +4285,7 @@ YY_FATAL_ERROR( "flex scanner jammed" ); "fatal flex scanner internal error--no action found" ); } /* end of action switch */ } /* end of scanning one token */ + } /* end of user's declarations */ } /* end of yylex */ /* yy_get_next_buffer - try to read in a new buffer @@ -4310,7 +4328,7 @@ static int yy_get_next_buffer (void) /* Try to read more data. */ /* First move last chars to start of buffer. */ - number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr)) - 1; + number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr) - 1); for ( i = 0; i < number_to_move; ++i ) *(dest++) = *(source++); @@ -4323,14 +4341,44 @@ static int yy_get_next_buffer (void) else { - yy_size_t num_to_read = + int 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" ); + /* just a shorter name for the current buffer */ + YY_BUFFER_STATE b = YY_CURRENT_BUFFER_LVALUE; + + 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. */ + yyrealloc( (void *) b->yy_ch_buf, + (yy_size_t) (b->yy_buf_size + 2) ); + } + else + /* Can't grow it, we don't own it. */ + b->yy_ch_buf = NULL; + + 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_LVALUE->yy_buf_size - + number_to_move - 1; } @@ -4349,7 +4397,7 @@ static int yy_get_next_buffer (void) if ( number_to_move == YY_MORE_ADJ ) { ret_val = EOB_ACT_END_OF_FILE; - yyrestart(yyin ); + yyrestart( yyin ); } else @@ -4363,12 +4411,15 @@ static int yy_get_next_buffer (void) else ret_val = EOB_ACT_CONTINUE_SCAN; - if ((yy_size_t) ((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) { + if (((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) { /* Extend the array by 50%, plus the number we really need. */ - yy_size_t new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1); - YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size ); + int new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1); + YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc( + (void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf, (yy_size_t) new_size ); if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" ); + /* "- 2" to take care of EOB's */ + YY_CURRENT_BUFFER_LVALUE->yy_buf_size = (int) (new_size - 2); } (yy_n_chars) += number_to_move; @@ -4390,20 +4441,21 @@ static int yy_get_next_buffer (void) yy_current_state = (yy_start); yy_current_state += YY_AT_BOL(); - (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 ) { YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1); + if ( yy_accept[yy_current_state] ) + { + (yy_last_accepting_state) = yy_current_state; + (yy_last_accepting_cpos) = 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 >= 1107 ) - yy_c = yy_meta[(unsigned int) yy_c]; + if ( yy_current_state >= 1114 ) + yy_c = yy_meta[yy_c]; } - yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; - *(yy_state_ptr)++ = yy_current_state; + yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; } return yy_current_state; @@ -4417,23 +4469,28 @@ static int yy_get_next_buffer (void) static yy_state_type yy_try_NUL_trans (yy_state_type yy_current_state ) { int yy_is_jam; - + char *yy_cp = (yy_c_buf_p); + YY_CHAR yy_c = 1; + if ( yy_accept[yy_current_state] ) + { + (yy_last_accepting_state) = yy_current_state; + (yy_last_accepting_cpos) = 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 >= 1107 ) - yy_c = yy_meta[(unsigned int) yy_c]; + if ( yy_current_state >= 1114 ) + yy_c = yy_meta[yy_c]; } - yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; - yy_is_jam = (yy_current_state == 1106); - if ( ! yy_is_jam ) - *(yy_state_ptr)++ = yy_current_state; + yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; + yy_is_jam = (yy_current_state == 1113); return yy_is_jam ? 0 : yy_current_state; } #ifndef YY_NO_UNPUT + static void yyunput (int c, char * yy_bp ) { char *yy_cp; @@ -4446,7 +4503,7 @@ static int yy_get_next_buffer (void) if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 ) { /* need to shift things up to make room */ /* +2 for EOB chars. */ - yy_size_t number_to_move = (yy_n_chars) + 2; + int number_to_move = (yy_n_chars) + 2; char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[ YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2]; char *source = @@ -4458,7 +4515,7 @@ static int yy_get_next_buffer (void) 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; + (yy_n_chars) = (int) 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" ); @@ -4470,7 +4527,8 @@ static int yy_get_next_buffer (void) (yy_hold_char) = *yy_cp; (yy_c_buf_p) = yy_cp; } -#endif /* ifndef YY_NO_UNPUT */ + +#endif #ifndef YY_NO_INPUT #ifdef __cplusplus @@ -4496,7 +4554,7 @@ static int yy_get_next_buffer (void) else { /* need more input */ - yy_size_t offset = (yy_c_buf_p) - (yytext_ptr); + int offset = (int) ((yy_c_buf_p) - (yytext_ptr)); ++(yy_c_buf_p); switch ( yy_get_next_buffer( ) ) @@ -4513,14 +4571,14 @@ static int yy_get_next_buffer (void) */ /* Reset buffer status. */ - yyrestart(yyin ); + yyrestart( yyin ); /*FALLTHROUGH*/ case EOB_ACT_END_OF_FILE: { - if ( yywrap( ) ) - return EOF; + if ( yywrap( ) ) + return 0; if ( ! (yy_did_buffer_switch_on_eof) ) YY_NEW_FILE; @@ -4559,11 +4617,11 @@ static int yy_get_next_buffer (void) if ( ! YY_CURRENT_BUFFER ){ yyensure_buffer_stack (); YY_CURRENT_BUFFER_LVALUE = - yy_create_buffer(yyin,YY_BUF_SIZE ); + yy_create_buffer( yyin, YY_BUF_SIZE ); } - yy_init_buffer(YY_CURRENT_BUFFER,input_file ); - yy_load_buffer_state( ); + yy_init_buffer( YY_CURRENT_BUFFER, input_file ); + yy_load_buffer_state( ); } /** Switch to a different input buffer. @@ -4591,7 +4649,7 @@ static int yy_get_next_buffer (void) } YY_CURRENT_BUFFER_LVALUE = new_buffer; - yy_load_buffer_state( ); + yy_load_buffer_state( ); /* We don't actually know whether we did this switch during * EOF (yywrap()) processing, but the only time this flag @@ -4619,7 +4677,7 @@ static void yy_load_buffer_state (void) { YY_BUFFER_STATE b; - b = (YY_BUFFER_STATE) yyalloc(sizeof( struct yy_buffer_state ) ); + b = (YY_BUFFER_STATE) yyalloc( sizeof( struct yy_buffer_state ) ); if ( ! b ) YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); @@ -4628,13 +4686,13 @@ static void yy_load_buffer_state (void) /* 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 ); + b->yy_ch_buf = (char *) yyalloc( (yy_size_t) (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 ); + yy_init_buffer( b, file ); return b; } @@ -4653,9 +4711,9 @@ static void yy_load_buffer_state (void) YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0; if ( b->yy_is_our_buffer ) - yyfree((void *) b->yy_ch_buf ); + yyfree( (void *) b->yy_ch_buf ); - yyfree((void *) b ); + yyfree( (void *) b ); } /* Initializes or reinitializes a buffer. @@ -4667,7 +4725,7 @@ static void yy_load_buffer_state (void) { int oerrno = errno; - yy_flush_buffer(b ); + yy_flush_buffer( b ); b->yy_input_file = file; b->yy_fill_buffer = 1; @@ -4710,7 +4768,7 @@ static void yy_load_buffer_state (void) b->yy_buffer_status = YY_BUFFER_NEW; if ( b == YY_CURRENT_BUFFER ) - yy_load_buffer_state( ); + yy_load_buffer_state( ); } /** Pushes the new state onto the stack. The new state becomes @@ -4741,7 +4799,7 @@ void yypush_buffer_state (YY_BUFFER_STATE new_buffer ) YY_CURRENT_BUFFER_LVALUE = new_buffer; /* copied from yy_switch_to_buffer. */ - yy_load_buffer_state( ); + yy_load_buffer_state( ); (yy_did_buffer_switch_on_eof) = 1; } @@ -4760,7 +4818,7 @@ void yypop_buffer_state (void) --(yy_buffer_stack_top); if (YY_CURRENT_BUFFER) { - yy_load_buffer_state( ); + yy_load_buffer_state( ); (yy_did_buffer_switch_on_eof) = 1; } } @@ -4778,15 +4836,15 @@ static void yyensure_buffer_stack (void) * 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; + num_to_alloc = 1; /* After all that talk, this was set to 1 anyways... */ (yy_buffer_stack) = (struct yy_buffer_state**)yyalloc (num_to_alloc * sizeof(struct yy_buffer_state*) ); if ( ! (yy_buffer_stack) ) YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" ); - + 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; @@ -4795,7 +4853,7 @@ static void yyensure_buffer_stack (void) 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 */; + yy_size_t grow_size = 8 /* arbitrary grow size */; num_to_alloc = (yy_buffer_stack_max) + grow_size; (yy_buffer_stack) = (struct yy_buffer_state**)yyrealloc @@ -4815,7 +4873,7 @@ static void yyensure_buffer_stack (void) * @param base the character buffer * @param size the size in bytes of the character buffer * - * @return the newly allocated buffer state object. + * @return the newly allocated buffer state object. */ YY_BUFFER_STATE yy_scan_buffer (char * base, yy_size_t size ) { @@ -4825,23 +4883,23 @@ YY_BUFFER_STATE yy_scan_buffer (char * base, yy_size_t size ) 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; + return NULL; - b = (YY_BUFFER_STATE) yyalloc(sizeof( struct yy_buffer_state ) ); + 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_size = (int) (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_input_file = NULL; 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 ); + yy_switch_to_buffer( b ); return b; } @@ -4854,10 +4912,10 @@ YY_BUFFER_STATE yy_scan_buffer (char * base, yy_size_t size ) * @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 * yystr ) +YY_BUFFER_STATE yy_scan_string (const char * yystr ) { - return yy_scan_bytes(yystr,strlen(yystr) ); + return yy_scan_bytes( yystr, (int) strlen(yystr) ); } /** Setup the input buffer state to scan the given bytes. The next call to yylex() will @@ -4867,16 +4925,16 @@ YY_BUFFER_STATE yy_scan_string (yyconst char * yystr ) * * @return the newly allocated buffer state object. */ -YY_BUFFER_STATE yy_scan_bytes (yyconst char * yybytes, yy_size_t _yybytes_len ) +YY_BUFFER_STATE yy_scan_bytes (const char * yybytes, int _yybytes_len ) { YY_BUFFER_STATE b; char *buf; yy_size_t n; - yy_size_t i; + int i; /* Get memory for full buffer, including space for trailing EOB's. */ - n = _yybytes_len + 2; - buf = (char *) yyalloc(n ); + n = (yy_size_t) (_yybytes_len + 2); + buf = (char *) yyalloc( n ); if ( ! buf ) YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" ); @@ -4885,7 +4943,7 @@ YY_BUFFER_STATE yy_scan_bytes (yyconst char * yybytes, yy_size_t _yybytes_len buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR; - b = yy_scan_buffer(buf,n ); + b = yy_scan_buffer( buf, n ); if ( ! b ) YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" ); @@ -4897,20 +4955,21 @@ YY_BUFFER_STATE yy_scan_bytes (yyconst char * yybytes, yy_size_t _yybytes_len return b; } - static void yy_push_state (int new_state ) + static void yy_push_state (int _new_state ) { 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 ); + new_size = (yy_size_t) (yy_start_stack_depth) * sizeof( int ); if ( ! (yy_start_stack) ) - (yy_start_stack) = (int *) yyalloc(new_size ); + (yy_start_stack) = (int *) yyalloc( new_size ); else - (yy_start_stack) = (int *) yyrealloc((void *) (yy_start_stack),new_size ); + (yy_start_stack) = (int *) yyrealloc( + (void *) (yy_start_stack), new_size ); if ( ! (yy_start_stack) ) YY_FATAL_ERROR( "out of memory expanding start-condition stack" ); @@ -4918,7 +4977,7 @@ YY_BUFFER_STATE yy_scan_bytes (yyconst char * yybytes, yy_size_t _yybytes_len (yy_start_stack)[(yy_start_stack_ptr)++] = YY_START; - BEGIN(new_state); + BEGIN(_new_state); } static void yy_pop_state (void) @@ -4933,9 +4992,9 @@ YY_BUFFER_STATE yy_scan_bytes (yyconst char * yybytes, yy_size_t _yybytes_len #define YY_EXIT_FAILURE 2 #endif -static void yy_fatal_error (yyconst char* msg ) +static void yynoreturn yy_fatal_error (const char* msg ) { - (void) fprintf( stderr, "%s\n", msg ); + fprintf( stderr, "%s\n", msg ); exit( YY_EXIT_FAILURE ); } @@ -4963,7 +5022,7 @@ static void yy_fatal_error (yyconst char* msg ) */ int yyget_lineno (void) { - + return yylineno; } @@ -4986,7 +5045,7 @@ FILE *yyget_out (void) /** Get the length of the current token. * */ -yy_size_t yyget_leng (void) +int yyget_leng (void) { return yyleng; } @@ -5001,29 +5060,29 @@ char *yyget_text (void) } /** Set the current line number. - * @param line_number + * @param _line_number line number * */ -void yyset_lineno (int line_number ) +void yyset_lineno (int _line_number ) { - yylineno = line_number; + yylineno = _line_number; } /** Set the input stream. This does not discard the current * input buffer. - * @param in_str A readable stream. + * @param _in_str A readable stream. * * @see yy_switch_to_buffer */ -void yyset_in (FILE * in_str ) +void yyset_in (FILE * _in_str ) { - yyin = in_str ; + yyin = _in_str ; } -void yyset_out (FILE * out_str ) +void yyset_out (FILE * _out_str ) { - yyout = out_str ; + yyout = _out_str ; } int yyget_debug (void) @@ -5031,9 +5090,9 @@ int yyget_debug (void) return yy_flex_debug; } -void yyset_debug (int bdebug ) +void yyset_debug (int _bdebug ) { - yy_flex_debug = bdebug ; + yy_flex_debug = _bdebug ; } static int yy_init_globals (void) @@ -5042,10 +5101,10 @@ static int yy_init_globals (void) * This function is called from yylex_destroy(), so don't allocate here. */ - (yy_buffer_stack) = 0; + (yy_buffer_stack) = NULL; (yy_buffer_stack_top) = 0; (yy_buffer_stack_max) = 0; - (yy_c_buf_p) = (char *) 0; + (yy_c_buf_p) = NULL; (yy_init) = 0; (yy_start) = 0; @@ -5053,18 +5112,13 @@ static int yy_init_globals (void) (yy_start_stack_depth) = 0; (yy_start_stack) = NULL; - (yy_state_buf) = 0; - (yy_state_ptr) = 0; - (yy_full_match) = 0; - (yy_lp) = 0; - /* Defined in main.c */ #ifdef YY_STDINIT yyin = stdin; yyout = stdout; #else - yyin = (FILE *) 0; - yyout = (FILE *) 0; + yyin = NULL; + yyout = NULL; #endif /* For future reference: Set errno on error, since we are called by @@ -5079,7 +5133,7 @@ int yylex_destroy (void) /* Pop the buffer stack, destroying each element. */ while(YY_CURRENT_BUFFER){ - yy_delete_buffer(YY_CURRENT_BUFFER ); + yy_delete_buffer( YY_CURRENT_BUFFER ); YY_CURRENT_BUFFER_LVALUE = NULL; yypop_buffer_state(); } @@ -5089,12 +5143,9 @@ int yylex_destroy (void) (yy_buffer_stack) = NULL; /* Destroy the start condition stack. */ - yyfree((yy_start_stack) ); + yyfree( (yy_start_stack) ); (yy_start_stack) = NULL; - yyfree ( (yy_state_buf) ); - (yy_state_buf) = NULL; - /* Reset the globals. This is important in a non-reentrant scanner so the next time * yylex() is called, initialization will occur. */ yy_init_globals( ); @@ -5107,8 +5158,9 @@ int yylex_destroy (void) */ #ifndef yytext_ptr -static void yy_flex_strncpy (char* s1, yyconst char * s2, int n ) +static void yy_flex_strncpy (char* s1, const char * s2, int n ) { + int i; for ( i = 0; i < n; ++i ) s1[i] = s2[i]; @@ -5116,7 +5168,7 @@ static void yy_flex_strncpy (char* s1, yyconst char * s2, int n ) #endif #ifdef YY_NEED_STRLEN -static int yy_flex_strlen (yyconst char * s ) +static int yy_flex_strlen (const char * s ) { int n; for ( n = 0; s[n]; ++n ) @@ -5128,11 +5180,12 @@ static int yy_flex_strlen (yyconst char * s ) void *yyalloc (yy_size_t size ) { - return (void *) malloc( size ); + return 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 @@ -5140,22 +5193,21 @@ void *yyrealloc (void * ptr, yy_size_t size ) * any pointer type to void*, and deal with argument conversions * as though doing an assignment. */ - return (void *) realloc( (char *) ptr, size ); + return realloc(ptr, size); } void yyfree (void * ptr ) { - free( (char *) ptr ); /* see yyrealloc() for (char *) cast */ + free( (char *) ptr ); /* see yyrealloc() for (char *) cast */ } #define YYTABLES_NAME "yytables" -#line 969 "scan.l" +#line 1014 "scan.l" - -int yywrap() +int yywrap(void) { if ( --num_input_files > 0 ) { @@ -5170,47 +5222,23 @@ int yywrap() /* set_input_file - open the given file (if NULL, stdin) for scanning */ -void set_input_file( file ) -char *file; +void set_input_file( char *file ) { if ( file && strcmp( file, "-" ) ) { - infilename = copy_string( file ); + infilename = xstrdup(file); yyin = fopen( infilename, "r" ); if ( yyin == NULL ) - lerrsf( _( "can't open %s" ), file ); + lerr( _( "can't open %s" ), file ); } else { yyin = stdin; - infilename = copy_string( "" ); + infilename = xstrdup(""); } linenum = 1; } - -/* Wrapper routines for accessing the scanner's malloc routines. */ - -void *flex_alloc( size ) -size_t size; - { - return (void *) malloc( size ); - } - -void *flex_realloc( ptr, size ) -void *ptr; -size_t size; - { - return (void *) realloc( ptr, size ); - } - -void flex_free( ptr ) -void *ptr; - { - if ( ptr ) - free( ptr ); - } - diff --git a/usr.bin/lex/initskel.c b/usr.bin/lex/initskel.c index 8b756a30d8cb..a7a69875521d 100644 --- a/usr.bin/lex/initskel.c +++ b/usr.bin/lex/initskel.c @@ -4,62 +4,14 @@ #include "flexdef.h" const char *skel[] = { - "%# -*-C-*- vi: set ft=c:", - "%# This file is processed in several stages.", - "%# Here are the stages, as best as I can describe:", - "%#", - "%# 1. flex.skl is processed through GNU m4 during the", - "%# pre-compilation stage of flex. Only macros starting", - "%# with `m4_' are processed, and quoting is normal.", - "%#", - "%# 2. The preprocessed skeleton is translated verbatim into a", - "%# C array, saved as \"skel.c\" and compiled into the flex binary.", - "%#", - "%# 3. At runtime, the skeleton is generated and filtered (again)", - "%# through m4. Macros beginning with `m4_' will be processed.", - "%# The quoting is \"[[\" and \"]]\" so we don't interfere with", - "%# user code.", - "%# ", - "%# All generate macros for the m4 stage contain the text \"m4\" or \"M4\"", - "%# in them. This is to distinguish them from CPP macros.", - "%# The exception to this rule is YY_G, which is an m4 macro, ", - "%# but it needs to be remain short because it is used everywhere.", - "%#", "/* A lexical scanner generated by flex */", "", - "%# Macros for preproc stage.", "", "", - "%# Macros for runtime processing stage.", "m4_changecom", "m4_changequote", "m4_changequote([[, ]])", "", - "%# ", - "%# Lines in this skeleton starting with a \"%\" character are \"control lines\"", - "%# and affect the generation of the scanner. The possible control codes are", - "%# listed and processed in misc.c.", - "%#", - "%# %# - A comment. The current line is omitted from the generated scanner.", - "%# %if-c++-only - The following lines are printed for C++ scanners ONLY.", - "%# %if-c-only - The following lines are NOT printed for C++ scanners.", - "%# %if-c-or-c++ - The following lines are printed in BOTH C and C++ scanners.", - "%# %if-reentrant - Print for reentrant scanners.(push)", - "%# %if-not-reentrant - Print for non-reentrant scanners. (push)", - "%# %if-bison-bridge - Print for bison-bridge. (push)", - "%# %if-not-bison-bridge - Print for non-bison-bridge. (push)", - "%# %endif - pop from the previous if code.", - "%# %% - A stop-point, where code is inserted by flex.", - "%# Each stop-point is numbered here and also in the code generator.", - "%# (See gen.c, etc. for details.)", - "%# %not-for-header - Begin code that should NOT appear in a \".h\" file.", - "%# %ok-for-header - %c and %e are used for building a header file.", - "%# %if-tables-serialization", - "%#", - "%# All control-lines EXCEPT comment lines (\"%#\") will be inserted into", - "%# the generated scanner as a C-style comment. This is to aid those who", - "%# edit the skeleton.", - "%#", "", "%not-for-header", "%if-c-only", @@ -67,11 +19,17 @@ const char *skel[] = { "m4_ifelse(M4_YY_PREFIX,yy,,", "#define yy_create_buffer M4_YY_PREFIX[[_create_buffer]]", "#define yy_delete_buffer M4_YY_PREFIX[[_delete_buffer]]", - "#define yy_flex_debug M4_YY_PREFIX[[_flex_debug]]", + "#define yy_scan_buffer M4_YY_PREFIX[[_scan_buffer]]", + "#define yy_scan_string M4_YY_PREFIX[[_scan_string]]", + "#define yy_scan_bytes M4_YY_PREFIX[[_scan_bytes]]", "#define yy_init_buffer M4_YY_PREFIX[[_init_buffer]]", "#define yy_flush_buffer M4_YY_PREFIX[[_flush_buffer]]", "#define yy_load_buffer_state M4_YY_PREFIX[[_load_buffer_state]]", "#define yy_switch_to_buffer M4_YY_PREFIX[[_switch_to_buffer]]", + "#define yypush_buffer_state M4_YY_PREFIX[[push_buffer_state]]", + "#define yypop_buffer_state M4_YY_PREFIX[[pop_buffer_state]]", + "#define yyensure_buffer_stack M4_YY_PREFIX[[ensure_buffer_stack]]", + "#define yy_flex_debug M4_YY_PREFIX[[_flex_debug]]", "#define yyin M4_YY_PREFIX[[in]]", "#define yyleng M4_YY_PREFIX[[leng]]", "#define yylex M4_YY_PREFIX[[lex]]", @@ -90,23 +48,18 @@ const char *skel[] = { "", "#define FLEX_SCANNER", "#define YY_FLEX_MAJOR_VERSION 2", - "#define YY_FLEX_MINOR_VERSION 5", - "#define YY_FLEX_SUBMINOR_VERSION 37", + "#define YY_FLEX_MINOR_VERSION 6", + "#define YY_FLEX_SUBMINOR_VERSION 4", "#if YY_FLEX_SUBMINOR_VERSION > 0", "#define FLEX_BETA", "#endif", "", - "%# Some negated symbols", "m4_ifdef( [[M4_YY_IN_HEADER]], , [[m4_define([[M4_YY_NOT_IN_HEADER]], [[]])]])", "m4_ifdef( [[M4_YY_REENTRANT]], , [[m4_define([[M4_YY_NOT_REENTRANT]], [[]])]])", "", - "%# This is the m4 way to say \"(stack_used || is_reentrant)", "m4_ifdef( [[M4_YY_STACK_USED]], [[m4_define([[M4_YY_HAS_START_STACK_VARS]])]])", "m4_ifdef( [[M4_YY_REENTRANT]], [[m4_define([[M4_YY_HAS_START_STACK_VARS]])]])", "", - "%# Prefixes.", - "%# The complexity here is necessary so that m4 preserves", - "%# the argument lists to each C function.", "", "", "m4_ifdef( [[M4_YY_PREFIX]],, [[m4_define([[M4_YY_PREFIX]], [[yy]])]])", @@ -124,78 +77,372 @@ const char *skel[] = { "%endif", "", "%if-c-only", - " m4_define(yy[[_create_buffer]], [[M4_YY_PREFIX[[_create_buffer]]m4_ifelse($#,0,,[[($@)]])]])", - " m4_define(yy[[_delete_buffer]], [[M4_YY_PREFIX[[_delete_buffer]]m4_ifelse($#,0,,[[($@)]])]])", - " m4_define(yy[[_scan_buffer]], [[M4_YY_PREFIX[[_scan_buffer]]m4_ifelse($#,0,,[[($@)]])]])", - " m4_define(yy[[_scan_string]], [[M4_YY_PREFIX[[_scan_string]]m4_ifelse($#,0,,[[($@)]])]])", - " m4_define(yy[[_scan_bytes]], [[M4_YY_PREFIX[[_scan_bytes]]m4_ifelse($#,0,,[[($@)]])]])", - " m4_define(yy[[_init_buffer]], [[M4_YY_PREFIX[[_init_buffer]]m4_ifelse($#,0,,[[($@)]])]])", - " m4_define(yy[[_flush_buffer]], [[M4_YY_PREFIX[[_flush_buffer]]m4_ifelse($#,0,,[[($@)]])]])", - " m4_define(yy[[_load_buffer_state]], [[M4_YY_PREFIX[[_load_buffer_state]]m4_ifelse($#,0,,[[($@)]])]])", - " m4_define(yy[[_switch_to_buffer]], [[M4_YY_PREFIX[[_switch_to_buffer]]m4_ifelse($#,0,,[[($@)]])]])", - " m4_define(yy[[push_buffer_state]], [[M4_YY_PREFIX[[push_buffer_state]]m4_ifelse($#,0,,[[($@)]])]])", - " m4_define(yy[[pop_buffer_state]], [[M4_YY_PREFIX[[pop_buffer_state]]m4_ifelse($#,0,,[[($@)]])]])", - " m4_define(yy[[ensure_buffer_stack]], [[M4_YY_PREFIX[[ensure_buffer_stack]]m4_ifelse($#,0,,[[($@)]])]])", - " m4_define(yy[[lex]], [[M4_YY_PREFIX[[lex]]m4_ifelse($#,0,,[[($@)]])]])", - " m4_define(yy[[restart]], [[M4_YY_PREFIX[[restart]]m4_ifelse($#,0,,[[($@)]])]])", - " m4_define(yy[[lex_init]], [[M4_YY_PREFIX[[lex_init]]m4_ifelse($#,0,,[[($@)]])]])", - " m4_define(yy[[lex_init_extra]], [[M4_YY_PREFIX[[lex_init_extra]]m4_ifelse($#,0,,[[($@)]])]])", - " m4_define(yy[[lex_destroy]], [[M4_YY_PREFIX[[lex_destroy]]m4_ifelse($#,0,,[[($@)]])]])", - " m4_define(yy[[get_debug]], [[M4_YY_PREFIX[[get_debug]]m4_ifelse($#,0,,[[($@)]])]])", - " m4_define(yy[[set_debug]], [[M4_YY_PREFIX[[set_debug]]m4_ifelse($#,0,,[[($@)]])]])", - " m4_define(yy[[get_extra]], [[M4_YY_PREFIX[[get_extra]]m4_ifelse($#,0,,[[($@)]])]])", - " m4_define(yy[[set_extra]], [[M4_YY_PREFIX[[set_extra]]m4_ifelse($#,0,,[[($@)]])]])", - " m4_define(yy[[get_in]], [[M4_YY_PREFIX[[get_in]]m4_ifelse($#,0,,[[($@)]])]])", - " m4_define(yy[[set_in]], [[M4_YY_PREFIX[[set_in]]m4_ifelse($#,0,,[[($@)]])]])", - " m4_define(yy[[get_out]], [[M4_YY_PREFIX[[get_out]]m4_ifelse($#,0,,[[($@)]])]])", - " m4_define(yy[[set_out]], [[M4_YY_PREFIX[[set_out]]m4_ifelse($#,0,,[[($@)]])]])", - " m4_define(yy[[get_leng]], [[M4_YY_PREFIX[[get_leng]]m4_ifelse($#,0,,[[($@)]])]])", - " m4_define(yy[[get_text]], [[M4_YY_PREFIX[[get_text]]m4_ifelse($#,0,,[[($@)]])]])", - " m4_define(yy[[get_lineno]], [[M4_YY_PREFIX[[get_lineno]]m4_ifelse($#,0,,[[($@)]])]])", - " m4_define(yy[[set_lineno]], [[M4_YY_PREFIX[[set_lineno]]m4_ifelse($#,0,,[[($@)]])]])", + "m4_ifelse(M4_YY_PREFIX,yy,,", + " ", + "[[#ifdef yy_create_buffer", + "#define ]]M4_YY_PREFIX[[_create_buffer_ALREADY_DEFINED", + "#else", + "#define yy_create_buffer ]]M4_YY_PREFIX[[_create_buffer", + "#endif]]", + "", + " ", + "[[#ifdef yy_delete_buffer", + "#define ]]M4_YY_PREFIX[[_delete_buffer_ALREADY_DEFINED", + "#else", + "#define yy_delete_buffer ]]M4_YY_PREFIX[[_delete_buffer", + "#endif]]", + "", + " ", + "[[#ifdef yy_scan_buffer", + "#define ]]M4_YY_PREFIX[[_scan_buffer_ALREADY_DEFINED", + "#else", + "#define yy_scan_buffer ]]M4_YY_PREFIX[[_scan_buffer", + "#endif]]", + "", + " ", + "[[#ifdef yy_scan_string", + "#define ]]M4_YY_PREFIX[[_scan_string_ALREADY_DEFINED", + "#else", + "#define yy_scan_string ]]M4_YY_PREFIX[[_scan_string", + "#endif]]", + "", + " ", + "[[#ifdef yy_scan_bytes", + "#define ]]M4_YY_PREFIX[[_scan_bytes_ALREADY_DEFINED", + "#else", + "#define yy_scan_bytes ]]M4_YY_PREFIX[[_scan_bytes", + "#endif]]", + "", + " ", + "[[#ifdef yy_init_buffer", + "#define ]]M4_YY_PREFIX[[_init_buffer_ALREADY_DEFINED", + "#else", + "#define yy_init_buffer ]]M4_YY_PREFIX[[_init_buffer", + "#endif]]", + "", + " ", + "[[#ifdef yy_flush_buffer", + "#define ]]M4_YY_PREFIX[[_flush_buffer_ALREADY_DEFINED", + "#else", + "#define yy_flush_buffer ]]M4_YY_PREFIX[[_flush_buffer", + "#endif]]", + "", + " ", + "[[#ifdef yy_load_buffer_state", + "#define ]]M4_YY_PREFIX[[_load_buffer_state_ALREADY_DEFINED", + "#else", + "#define yy_load_buffer_state ]]M4_YY_PREFIX[[_load_buffer_state", + "#endif]]", + "", + " ", + "[[#ifdef yy_switch_to_buffer", + "#define ]]M4_YY_PREFIX[[_switch_to_buffer_ALREADY_DEFINED", + "#else", + "#define yy_switch_to_buffer ]]M4_YY_PREFIX[[_switch_to_buffer", + "#endif]]", + "", + " ", + "[[#ifdef yypush_buffer_state", + "#define ]]M4_YY_PREFIX[[push_buffer_state_ALREADY_DEFINED", + "#else", + "#define yypush_buffer_state ]]M4_YY_PREFIX[[push_buffer_state", + "#endif]]", + "", + " ", + "[[#ifdef yypop_buffer_state", + "#define ]]M4_YY_PREFIX[[pop_buffer_state_ALREADY_DEFINED", + "#else", + "#define yypop_buffer_state ]]M4_YY_PREFIX[[pop_buffer_state", + "#endif]]", + "", + " ", + "[[#ifdef yyensure_buffer_stack", + "#define ]]M4_YY_PREFIX[[ensure_buffer_stack_ALREADY_DEFINED", + "#else", + "#define yyensure_buffer_stack ]]M4_YY_PREFIX[[ensure_buffer_stack", + "#endif]]", + "", + " ", + "[[#ifdef yylex", + "#define ]]M4_YY_PREFIX[[lex_ALREADY_DEFINED", + "#else", + "#define yylex ]]M4_YY_PREFIX[[lex", + "#endif]]", + "", + " ", + "[[#ifdef yyrestart", + "#define ]]M4_YY_PREFIX[[restart_ALREADY_DEFINED", + "#else", + "#define yyrestart ]]M4_YY_PREFIX[[restart", + "#endif]]", + "", + " ", + "[[#ifdef yylex_init", + "#define ]]M4_YY_PREFIX[[lex_init_ALREADY_DEFINED", + "#else", + "#define yylex_init ]]M4_YY_PREFIX[[lex_init", + "#endif]]", + "", + " ", + "[[#ifdef yylex_init_extra", + "#define ]]M4_YY_PREFIX[[lex_init_extra_ALREADY_DEFINED", + "#else", + "#define yylex_init_extra ]]M4_YY_PREFIX[[lex_init_extra", + "#endif]]", + "", + " ", + "[[#ifdef yylex_destroy", + "#define ]]M4_YY_PREFIX[[lex_destroy_ALREADY_DEFINED", + "#else", + "#define yylex_destroy ]]M4_YY_PREFIX[[lex_destroy", + "#endif]]", + "", + " ", + "[[#ifdef yyget_debug", + "#define ]]M4_YY_PREFIX[[get_debug_ALREADY_DEFINED", + "#else", + "#define yyget_debug ]]M4_YY_PREFIX[[get_debug", + "#endif]]", + "", + " ", + "[[#ifdef yyset_debug", + "#define ]]M4_YY_PREFIX[[set_debug_ALREADY_DEFINED", + "#else", + "#define yyset_debug ]]M4_YY_PREFIX[[set_debug", + "#endif]]", + "", + " ", + "[[#ifdef yyget_extra", + "#define ]]M4_YY_PREFIX[[get_extra_ALREADY_DEFINED", + "#else", + "#define yyget_extra ]]M4_YY_PREFIX[[get_extra", + "#endif]]", + "", + " ", + "[[#ifdef yyset_extra", + "#define ]]M4_YY_PREFIX[[set_extra_ALREADY_DEFINED", + "#else", + "#define yyset_extra ]]M4_YY_PREFIX[[set_extra", + "#endif]]", + "", + " ", + "[[#ifdef yyget_in", + "#define ]]M4_YY_PREFIX[[get_in_ALREADY_DEFINED", + "#else", + "#define yyget_in ]]M4_YY_PREFIX[[get_in", + "#endif]]", + "", + " ", + "[[#ifdef yyset_in", + "#define ]]M4_YY_PREFIX[[set_in_ALREADY_DEFINED", + "#else", + "#define yyset_in ]]M4_YY_PREFIX[[set_in", + "#endif]]", + "", + " ", + "[[#ifdef yyget_out", + "#define ]]M4_YY_PREFIX[[get_out_ALREADY_DEFINED", + "#else", + "#define yyget_out ]]M4_YY_PREFIX[[get_out", + "#endif]]", + "", + " ", + "[[#ifdef yyset_out", + "#define ]]M4_YY_PREFIX[[set_out_ALREADY_DEFINED", + "#else", + "#define yyset_out ]]M4_YY_PREFIX[[set_out", + "#endif]]", + "", + " ", + "[[#ifdef yyget_leng", + "#define ]]M4_YY_PREFIX[[get_leng_ALREADY_DEFINED", + "#else", + "#define yyget_leng ]]M4_YY_PREFIX[[get_leng", + "#endif]]", + "", + " ", + "[[#ifdef yyget_text", + "#define ]]M4_YY_PREFIX[[get_text_ALREADY_DEFINED", + "#else", + "#define yyget_text ]]M4_YY_PREFIX[[get_text", + "#endif]]", + "", + " ", + "[[#ifdef yyget_lineno", + "#define ]]M4_YY_PREFIX[[get_lineno_ALREADY_DEFINED", + "#else", + "#define yyget_lineno ]]M4_YY_PREFIX[[get_lineno", + "#endif]]", + "", + " ", + "[[#ifdef yyset_lineno", + "#define ]]M4_YY_PREFIX[[set_lineno_ALREADY_DEFINED", + "#else", + "#define yyset_lineno ]]M4_YY_PREFIX[[set_lineno", + "#endif]]", + "", " m4_ifdef( [[M4_YY_REENTRANT]],", " [[", - " m4_define(yy[[get_column]], [[M4_YY_PREFIX[[get_column]]m4_ifelse($#,0,,[[($@)]])]])", - " m4_define(yy[[set_column]], [[M4_YY_PREFIX[[set_column]]m4_ifelse($#,0,,[[($@)]])]])", + " ", + "[[#ifdef yyget_column", + "#define ]]M4_YY_PREFIX[[get_column_ALREADY_DEFINED", + "#else", + "#define yyget_column ]]M4_YY_PREFIX[[get_column", + "#endif]]", + "", + " ", + "[[#ifdef yyset_column", + "#define ]]M4_YY_PREFIX[[set_column_ALREADY_DEFINED", + "#else", + "#define yyset_column ]]M4_YY_PREFIX[[set_column", + "#endif]]", + "", " ]])", - " m4_define(yy[[wrap]], [[M4_YY_PREFIX[[wrap]]m4_ifelse($#,0,,[[($@)]])]])", + " ", + "[[#ifdef yywrap", + "#define ]]M4_YY_PREFIX[[wrap_ALREADY_DEFINED", + "#else", + "#define yywrap ]]M4_YY_PREFIX[[wrap", + "#endif]]", + "", + ")", "%endif", "", "m4_ifdef( [[M4_YY_BISON_LVAL]],", "[[", - " m4_define(yy[[get_lval]], [[M4_YY_PREFIX[[get_lval]]m4_ifelse($#,0,,[[($@)]])]])", - " m4_define(yy[[set_lval]], [[M4_YY_PREFIX[[set_lval]]m4_ifelse($#,0,,[[($@)]])]])", + " ", + "[[#ifdef yyget_lval", + "#define ]]M4_YY_PREFIX[[get_lval_ALREADY_DEFINED", + "#else", + "#define yyget_lval ]]M4_YY_PREFIX[[get_lval", + "#endif]]", + "", + " ", + "[[#ifdef yyset_lval", + "#define ]]M4_YY_PREFIX[[set_lval_ALREADY_DEFINED", + "#else", + "#define yyset_lval ]]M4_YY_PREFIX[[set_lval", + "#endif]]", + "", "]])", "", "m4_ifdef( [[]],", "[[", - " m4_define(yy[[get_lloc]], [[M4_YY_PREFIX[[get_lloc]]m4_ifelse($#,0,,[[($@)]])]])", - " m4_define(yy[[set_lloc]], [[M4_YY_PREFIX[[set_lloc]]m4_ifelse($#,0,,[[($@)]])]])", + " ", + "[[#ifdef yyget_lloc", + "#define ]]M4_YY_PREFIX[[get_lloc_ALREADY_DEFINED", + "#else", + "#define yyget_lloc ]]M4_YY_PREFIX[[get_lloc", + "#endif]]", + "", + " ", + "[[#ifdef yyset_lloc", + "#define ]]M4_YY_PREFIX[[set_lloc_ALREADY_DEFINED", + "#else", + "#define yyset_lloc ]]M4_YY_PREFIX[[set_lloc", + "#endif]]", + "", "]])", "", "", - " m4_define(yy[[alloc]], [[M4_YY_PREFIX[[alloc]]m4_ifelse($#,0,,[[($@)]])]])", - " m4_define(yy[[realloc]], [[M4_YY_PREFIX[[realloc]]m4_ifelse($#,0,,[[($@)]])]])", - " m4_define(yy[[free]], [[M4_YY_PREFIX[[free]]m4_ifelse($#,0,,[[($@)]])]])", + "m4_ifelse(M4_YY_PREFIX,yy,,", + " ", + "[[#ifdef yyalloc", + "#define ]]M4_YY_PREFIX[[alloc_ALREADY_DEFINED", + "#else", + "#define yyalloc ]]M4_YY_PREFIX[[alloc", + "#endif]]", + "", + " ", + "[[#ifdef yyrealloc", + "#define ]]M4_YY_PREFIX[[realloc_ALREADY_DEFINED", + "#else", + "#define yyrealloc ]]M4_YY_PREFIX[[realloc", + "#endif]]", + "", + " ", + "[[#ifdef yyfree", + "#define ]]M4_YY_PREFIX[[free_ALREADY_DEFINED", + "#else", + "#define yyfree ]]M4_YY_PREFIX[[free", + "#endif]]", + "", + ")", "", "%if-c-only", + "m4_ifelse(M4_YY_PREFIX,yy,,", "m4_ifdef( [[M4_YY_NOT_REENTRANT]],", "[[", - " m4_define(yy[[text]], [[M4_YY_PREFIX[[text]]m4_ifelse($#,0,,[[($@)]])]])", - " m4_define(yy[[leng]], [[M4_YY_PREFIX[[leng]]m4_ifelse($#,0,,[[($@)]])]])", - " m4_define(yy[[in]], [[M4_YY_PREFIX[[in]]m4_ifelse($#,0,,[[($@)]])]])", - " m4_define(yy[[out]], [[M4_YY_PREFIX[[out]]m4_ifelse($#,0,,[[($@)]])]])", - " m4_define(yy[[_flex_debug]], [[M4_YY_PREFIX[[_flex_debug]]m4_ifelse($#,0,,[[($@)]])]])", - " m4_define(yy[[lineno]], [[M4_YY_PREFIX[[lineno]]m4_ifelse($#,0,,[[($@)]])]])", + " ", + "[[#ifdef yytext", + "#define ]]M4_YY_PREFIX[[text_ALREADY_DEFINED", + "#else", + "#define yytext ]]M4_YY_PREFIX[[text", + "#endif]]", + "", + " ", + "[[#ifdef yyleng", + "#define ]]M4_YY_PREFIX[[leng_ALREADY_DEFINED", + "#else", + "#define yyleng ]]M4_YY_PREFIX[[leng", + "#endif]]", + "", + " ", + "[[#ifdef yyin", + "#define ]]M4_YY_PREFIX[[in_ALREADY_DEFINED", + "#else", + "#define yyin ]]M4_YY_PREFIX[[in", + "#endif]]", + "", + " ", + "[[#ifdef yyout", + "#define ]]M4_YY_PREFIX[[out_ALREADY_DEFINED", + "#else", + "#define yyout ]]M4_YY_PREFIX[[out", + "#endif]]", + "", + " ", + "[[#ifdef yy_flex_debug", + "#define ]]M4_YY_PREFIX[[_flex_debug_ALREADY_DEFINED", + "#else", + "#define yy_flex_debug ]]M4_YY_PREFIX[[_flex_debug", + "#endif]]", + "", + " ", + "[[#ifdef yylineno", + "#define ]]M4_YY_PREFIX[[lineno_ALREADY_DEFINED", + "#else", + "#define yylineno ]]M4_YY_PREFIX[[lineno", + "#endif]]", + "", "]])", + ")", "%endif", "", "", "m4_ifdef( [[M4_YY_TABLES_EXTERNAL]],", "[[", - " m4_define(yy[[tables_fload]], [[M4_YY_PREFIX[[tables_fload]]m4_ifelse($#,0,,[[($@)]])]])", - " m4_define(yy[[tables_destroy]], [[M4_YY_PREFIX[[tables_destroy]]m4_ifelse($#,0,,[[($@)]])]])", - " m4_define(yy[[TABLES_NAME]], [[M4_YY_PREFIX[[TABLES_NAME]]m4_ifelse($#,0,,[[($@)]])]])", + " ", + "[[#ifdef yytables_fload", + "#define ]]M4_YY_PREFIX[[tables_fload_ALREADY_DEFINED", + "#else", + "#define yytables_fload ]]M4_YY_PREFIX[[tables_fload", + "#endif]]", + "", + " ", + "[[#ifdef yytables_destroy", + "#define ]]M4_YY_PREFIX[[tables_destroy_ALREADY_DEFINED", + "#else", + "#define yytables_destroy ]]M4_YY_PREFIX[[tables_destroy", + "#endif]]", + "", + " ", + "[[#ifdef yyTABLES_NAME", + "#define ]]M4_YY_PREFIX[[TABLES_NAME_ALREADY_DEFINED", + "#else", + "#define yyTABLES_NAME ]]M4_YY_PREFIX[[TABLES_NAME", + "#endif]]", + "", "]])", "", "/* First, we deal with platform-specific or compiler-specific issues. */", @@ -286,15 +533,19 @@ const char *skel[] = { "#define UINT32_MAX (4294967295U)", "#endif", "", + "#ifndef SIZE_MAX", + "#define SIZE_MAX (~(size_t)0)", + "#endif", + "", "#endif /* ! C99 */", "", "#endif /* ! FLEXINT_H */", "", "%endif", "", - "%if-c++-only", "/* begin standard C++ headers. */", - "#include ", + "%if-c++-only", + "#include ", "#include ", "#include ", "#include ", @@ -302,45 +553,14 @@ const char *skel[] = { "/* end standard C++ headers. */", "%endif", "", - "#ifdef __cplusplus", - "", - "/* The \"const\" storage-class-modifier is valid. */", - "#define YY_USE_CONST", - "", - "#else /* ! __cplusplus */", - "", - "/* C99 requires __STDC__ to be defined as 1. */", - "#if defined (__STDC__)", - "", - "#define YY_USE_CONST", - "", - "#endif /* defined (__STDC__) */", - "#endif /* ! __cplusplus */", - "", - "#ifdef YY_USE_CONST", + "/* TODO: this is always defined, so inline it */", "#define yyconst const", - "#else", - "#define yyconst", - "#endif", "", - "%# For compilers that can not handle prototypes.", - "%# e.g.,", - "%# The function prototype", - "%# int foo(int x, char* y);", - "%# ", - "%# ...should be written as", - "%# int foo M4_YY_PARAMS(int x, char* y);", - "%# ", - "%# ...which could possibly generate", - "%# int foo ();", - "%# ", - "m4_ifdef( [[M4_YY_NO_ANSI_FUNC_PROTOS]],", - "[[", - " m4_define( [[M4_YY_PARAMS]], [[()]])", - "]],", - "[[", - " m4_define( [[M4_YY_PARAMS]], [[($*)]])", - "]])", + "#if defined(__GNUC__) && __GNUC__ >= 3", + "#define yynoreturn __attribute__((__noreturn__))", + "#else", + "#define yynoreturn", + "#endif", "", "%not-for-header", "/* Returned upon end-of-file. */", @@ -348,12 +568,10 @@ const char *skel[] = { "%ok-for-header", "", "%not-for-header", - "/* 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.", + "/* Promotes a possibly negative, possibly signed char to an", + " * integer in range [0..255] for use as an array index.", " */", - "#define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)", + "#define YY_SC_TO_UI(c) ((YY_CHAR) (c))", "%ok-for-header", "", "", @@ -366,34 +584,20 @@ const char *skel[] = { "typedef void* yyscan_t;", "#endif", "", - "%# Declare yyguts variable", "m4_define( [[M4_YY_DECL_GUTS_VAR]], [[struct yyguts_t * yyg = (struct yyguts_t*)yyscanner]])", - "%# Perform a noop access on yyguts to prevent unused variable complains", "m4_define( [[M4_YY_NOOP_GUTS_VAR]], [[(void)yyg]])", - "%# For use wherever a Global is accessed or assigned.", "m4_define( [[YY_G]], [[yyg->$1]])", "", - "%# For use in function prototypes to append the additional argument.", "m4_define( [[M4_YY_PROTO_LAST_ARG]], [[, yyscan_t yyscanner]])", "m4_define( [[M4_YY_PROTO_ONLY_ARG]], [[yyscan_t yyscanner]])", "", - "%# For use in function definitions to append the additional argument.", - "m4_ifdef( [[M4_YY_NO_ANSI_FUNC_DEFS]],", - "[[", - " m4_define( [[M4_YY_DEF_LAST_ARG]], [[, yyscanner]])", - " m4_define( [[M4_YY_DEF_ONLY_ARG]], [[yyscanner]])", - "]],", - "[[", - " m4_define( [[M4_YY_DEF_LAST_ARG]], [[, yyscan_t yyscanner]])", - " m4_define( [[M4_YY_DEF_ONLY_ARG]], [[yyscan_t yyscanner]])", - "]])", + "m4_define( [[M4_YY_DEF_LAST_ARG]], [[, yyscan_t yyscanner]])", + "m4_define( [[M4_YY_DEF_ONLY_ARG]], [[yyscan_t yyscanner]])", "m4_define( [[M4_YY_DECL_LAST_ARG]], [[yyscan_t yyscanner;]])", "", - "%# For use in function calls to pass the additional argument.", "m4_define( [[M4_YY_CALL_LAST_ARG]], [[, yyscanner]])", "m4_define( [[M4_YY_CALL_ONLY_ARG]], [[yyscanner]])", "", - "%# For use in function documentation to adjust for additional argument.", "m4_define( [[M4_YY_DOC_PARAM]], [[@param yyscanner The scanner object.]])", "", "/* For convenience, these vars (plus the bison vars far below)", @@ -408,7 +612,7 @@ const char *skel[] = { "#define yy_flex_debug YY_G(yy_flex_debug_r)", "", "m4_define( [[M4_YY_INCR_LINENO]],", - "[[ ", + "[[", " do{ yylineno++;", " yycolumn=0;", " }while(0)", @@ -421,11 +625,10 @@ const char *skel[] = { "%if-not-reentrant", "", "m4_define( [[M4_YY_INCR_LINENO]],", - "[[ ", + "[[", " yylineno++;", "]])", "", - "%# Define these macros to be no-ops.", "m4_define( [[M4_YY_DECL_GUTS_VAR]], [[m4_dnl]])", "m4_define( [[M4_YY_NOOP_GUTS_VAR]], [[m4_dnl]])", "m4_define( [[YY_G]], [[($1)]])", @@ -433,60 +636,18 @@ const char *skel[] = { "m4_define( [[M4_YY_PROTO_ONLY_ARG]], [[void]])", "m4_define( [[M4_YY_DEF_LAST_ARG]])", "", - "m4_ifdef( [[M4_YY_NO_ANSI_FUNC_DEFS]],", - "[[", - " m4_define( [[M4_YY_DEF_ONLY_ARG]])", - "]],", - "[[", - " m4_define( [[M4_YY_DEF_ONLY_ARG]], [[void]])", - "]])", + "m4_define( [[M4_YY_DEF_ONLY_ARG]], [[void]])", "m4_define([[M4_YY_DECL_LAST_ARG]])", "m4_define([[M4_YY_CALL_LAST_ARG]])", "m4_define([[M4_YY_CALL_ONLY_ARG]])", - "m4_define( [[M4_YY_DOC_PARAM]], [[]])", + "m4_define( [[M4_YY_DOC_PARAM]], )", "", "%endif", "", "", - "m4_ifdef( [[M4_YY_NO_ANSI_FUNC_DEFS]],", - "[[", - "%# For compilers that need traditional function definitions.", - "%# e.g.,", - "%# The function prototype taking 2 arguments", - "%# int foo (int x, char* y)", - "%#", - "%# ...should be written as", - "%# int foo YYFARGS2(int,x, char*,y)", - "%#", - "%# ...which could possibly generate", - "%# int foo (x,y,yyscanner)", - "%# int x;", - "%# char * y;", - "%# yyscan_t yyscanner;", - "%#", - "%# Generate traditional function defs", - " m4_define( [[YYFARGS0]], [[(M4_YY_DEF_ONLY_ARG) [[\\]]", - " M4_YY_DECL_LAST_ARG]])", - " m4_define( [[YYFARGS1]], [[($2 M4_YY_DEF_LAST_ARG) [[\\]]", - " $1 $2; [[\\]]", - " M4_YY_DECL_LAST_ARG]])", - " m4_define( [[YYFARGS2]], [[($2,$4 M4_YY_DEF_LAST_ARG) [[\\]]", - " $1 $2; [[\\]]", - " $3 $4; [[\\]]", - " M4_YY_DECL_LAST_ARG]])", - " m4_define( [[YYFARGS3]], [[($2,$4,$6 M4_YY_DEF_LAST_ARG) [[\\]]", - " $1 $2; [[\\]]", - " $3 $4; [[\\]]", - " $5 $6; [[\\]]", - " M4_YY_DECL_LAST_ARG]])", - "]],", - "[[", - "%# Generate C99 function defs.", - " m4_define( [[YYFARGS0]], [[(M4_YY_DEF_ONLY_ARG)]])", - " m4_define( [[YYFARGS1]], [[($1 $2 M4_YY_DEF_LAST_ARG)]])", - " m4_define( [[YYFARGS2]], [[($1 $2, $3 $4 M4_YY_DEF_LAST_ARG)]])", - " m4_define( [[YYFARGS3]], [[($1 $2, $3 $4, $5 $6 M4_YY_DEF_LAST_ARG)]])", - "]])", + "m4_define( [[YYFARGS1]], [[($1 $2 M4_YY_DEF_LAST_ARG)]])", + "m4_define( [[YYFARGS2]], [[($1 $2, $3 $4 M4_YY_DEF_LAST_ARG)]])", + "m4_define( [[YYFARGS3]], [[($1 $2, $3 $4, $5 $6 M4_YY_DEF_LAST_ARG)]])", "", "m4_ifdef( [[M4_YY_NOT_IN_HEADER]],", "[[", @@ -495,38 +656,30 @@ const char *skel[] = { " * definition of BEGIN.", " */", "#define BEGIN YY_G(yy_start) = 1 + 2 *", - "]])", - "", - "m4_ifdef( [[M4_YY_NOT_IN_HEADER]],", - "[[", "/* 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_G(yy_start) - 1) / 2)", "#define YYSTATE YY_START", - "]])", - "", - "m4_ifdef( [[M4_YY_NOT_IN_HEADER]],", - "[[", "/* Action number for EOF rule of a given start state. */", "#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)", - "]])", - "", - "m4_ifdef( [[M4_YY_NOT_IN_HEADER]],", - "[[", "/* Special action meaning \"start processing a new file\". */", "#define YY_NEW_FILE yyrestart( yyin M4_YY_CALL_LAST_ARG )", - "]])", - "", - "m4_ifdef( [[M4_YY_NOT_IN_HEADER]],", - "[[", "#define YY_END_OF_BUFFER_CHAR 0", "]])", "", "/* Size of default input buffer. */", "#ifndef YY_BUF_SIZE", + "#ifdef __ia64__", + "/* On IA-64, the buffer size is 16k, not 8k.", + " * Moreover, YY_BUF_SIZE is 2*YY_READ_BUF_SIZE in the general case.", + " * Ditto for the __ia64__ case accordingly.", + " */", + "#define YY_BUF_SIZE 32768", + "#else", "#define YY_BUF_SIZE 16384", + "#endif /* __ia64__ */", "#endif", "", "m4_ifdef( [[M4_YY_NOT_IN_HEADER]],", @@ -548,7 +701,7 @@ const char *skel[] = { "#endif", "", "%if-not-reentrant", - "extern yy_size_t yyleng;", + "extern int yyleng;", "%endif", "", "%if-c-only", @@ -562,15 +715,11 @@ const char *skel[] = { "#define EOB_ACT_CONTINUE_SCAN 0", "#define EOB_ACT_END_OF_FILE 1", "#define EOB_ACT_LAST_MATCH 2", - "]])", - "", - "m4_ifdef( [[M4_YY_NOT_IN_HEADER]],", - "[[", " m4_ifdef( [[M4_YY_USE_LINENO]],", " [[", " /* 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. ", + " * 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.", @@ -582,14 +731,18 @@ const char *skel[] = { " if ( yytext[yyl] == '\\n' )\\", " --yylineno;\\", " }while(0)", + " #define YY_LINENO_REWIND_TO(dst) \\", + " do {\\", + " const char *p;\\", + " for ( p = yy_cp-1; p >= (dst); --p)\\", + " if ( *p == '\\n' )\\", + " --yylineno;\\", + " }while(0)", " ]],", " [[", " #define YY_LESS_LINENO(n)", + " #define YY_LINENO_REWIND_TO(ptr)", " ]])", - "]])", - "", - "m4_ifdef( [[M4_YY_NOT_IN_HEADER]],", - "[[", "/* Return all but the first \"n\" matched characters back to the input stream. */", "#define yyless(n) \\", " do \\", @@ -603,10 +756,6 @@ const char *skel[] = { " YY_DO_BEFORE_ACTION; /* set up yytext again */ \\", " } \\", " while ( 0 )", - "]])", - "", - "m4_ifdef( [[M4_YY_NOT_IN_HEADER]],", - "[[", "#define unput(c) yyunput( c, YY_G(yytext_ptr) M4_YY_CALL_LAST_ARG )", "]])", "", @@ -619,7 +768,7 @@ const char *skel[] = { "%endif", "", "%if-c++-only", - " std::istream* yy_input_file;", + " std::streambuf* yy_input_file;", "%endif", "", "", @@ -629,12 +778,12 @@ const char *skel[] = { " /* Size of input buffer in bytes, not including room for EOB", " * characters.", " */", - " yy_size_t yy_buf_size;", + " int yy_buf_size;", "", " /* Number of characters read into yy_ch_buf, not including EOB", " * characters.", " */", - " yy_size_t yy_n_chars;", + " 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", @@ -657,7 +806,7 @@ const char *skel[] = { "", " 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.", @@ -691,7 +840,7 @@ const char *skel[] = { "/* 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. */", + "static YY_BUFFER_STATE * yy_buffer_stack = NULL; /**< Stack as an array. */", "%endif", "%ok-for-header", "%endif", @@ -708,10 +857,6 @@ const char *skel[] = { " ? YY_G(yy_buffer_stack)[YY_G(yy_buffer_stack_top)] \\", " : NULL)", "#define yy_current_buffer YY_CURRENT_BUFFER", - "]])", - "", - "m4_ifdef( [[M4_YY_NOT_IN_HEADER]],", - "[[", "/* 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.", " */", @@ -724,11 +869,11 @@ const char *skel[] = { "%not-for-header", "/* yy_hold_char holds the character lost when yytext is formed. */", "static char yy_hold_char;", - "static yy_size_t yy_n_chars; /* number of characters read into yy_ch_buf */", - "yy_size_t yyleng;", + "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 char *yy_c_buf_p = NULL;", "static int yy_init = 0; /* whether we need to initialize */", "static int yy_start = 0; /* start state number */", "", @@ -739,43 +884,35 @@ const char *skel[] = { "%ok-for-header", "%endif", "", - "void yyrestart M4_YY_PARAMS( FILE *input_file M4_YY_PROTO_LAST_ARG );", - "void yy_switch_to_buffer M4_YY_PARAMS( YY_BUFFER_STATE new_buffer M4_YY_PROTO_LAST_ARG );", - "YY_BUFFER_STATE yy_create_buffer M4_YY_PARAMS( FILE *file, int size M4_YY_PROTO_LAST_ARG );", - "void yy_delete_buffer M4_YY_PARAMS( YY_BUFFER_STATE b M4_YY_PROTO_LAST_ARG );", - "void yy_flush_buffer M4_YY_PARAMS( YY_BUFFER_STATE b M4_YY_PROTO_LAST_ARG );", - "void yypush_buffer_state M4_YY_PARAMS( YY_BUFFER_STATE new_buffer M4_YY_PROTO_LAST_ARG );", - "void yypop_buffer_state M4_YY_PARAMS( M4_YY_PROTO_ONLY_ARG );", - "", - "m4_ifdef( [[M4_YY_NOT_IN_HEADER]],", - "[[", - "static void yyensure_buffer_stack M4_YY_PARAMS( M4_YY_PROTO_ONLY_ARG );", - "static void yy_load_buffer_state M4_YY_PARAMS( M4_YY_PROTO_ONLY_ARG );", - "static void yy_init_buffer M4_YY_PARAMS( YY_BUFFER_STATE b, FILE *file M4_YY_PROTO_LAST_ARG );", - "]])", + "void yyrestart ( FILE *input_file M4_YY_PROTO_LAST_ARG );", + "void yy_switch_to_buffer ( YY_BUFFER_STATE new_buffer M4_YY_PROTO_LAST_ARG );", + "YY_BUFFER_STATE yy_create_buffer ( FILE *file, int size M4_YY_PROTO_LAST_ARG );", + "void yy_delete_buffer ( YY_BUFFER_STATE b M4_YY_PROTO_LAST_ARG );", + "void yy_flush_buffer ( YY_BUFFER_STATE b M4_YY_PROTO_LAST_ARG );", + "void yypush_buffer_state ( YY_BUFFER_STATE new_buffer M4_YY_PROTO_LAST_ARG );", + "void yypop_buffer_state ( M4_YY_PROTO_ONLY_ARG );", "", "m4_ifdef( [[M4_YY_NOT_IN_HEADER]],", "[[", + "static void yyensure_buffer_stack ( M4_YY_PROTO_ONLY_ARG );", + "static void yy_load_buffer_state ( M4_YY_PROTO_ONLY_ARG );", + "static void yy_init_buffer ( YY_BUFFER_STATE b, FILE *file M4_YY_PROTO_LAST_ARG );", "#define YY_FLUSH_BUFFER yy_flush_buffer( YY_CURRENT_BUFFER M4_YY_CALL_LAST_ARG)", "]])", "", - "YY_BUFFER_STATE yy_scan_buffer M4_YY_PARAMS( char *base, yy_size_t size M4_YY_PROTO_LAST_ARG );", - "YY_BUFFER_STATE yy_scan_string M4_YY_PARAMS( yyconst char *yy_str M4_YY_PROTO_LAST_ARG );", - "YY_BUFFER_STATE yy_scan_bytes M4_YY_PARAMS( yyconst char *bytes, yy_size_t len M4_YY_PROTO_LAST_ARG );", + "YY_BUFFER_STATE yy_scan_buffer ( char *base, yy_size_t size M4_YY_PROTO_LAST_ARG );", + "YY_BUFFER_STATE yy_scan_string ( const char *yy_str M4_YY_PROTO_LAST_ARG );", + "YY_BUFFER_STATE yy_scan_bytes ( const char *bytes, int len M4_YY_PROTO_LAST_ARG );", "", "%endif", "", - "void *yyalloc M4_YY_PARAMS( yy_size_t M4_YY_PROTO_LAST_ARG );", - "void *yyrealloc M4_YY_PARAMS( void *, yy_size_t M4_YY_PROTO_LAST_ARG );", - "void yyfree M4_YY_PARAMS( void * M4_YY_PROTO_LAST_ARG );", + "void *yyalloc ( yy_size_t M4_YY_PROTO_LAST_ARG );", + "void *yyrealloc ( void *, yy_size_t M4_YY_PROTO_LAST_ARG );", + "void yyfree ( void * M4_YY_PROTO_LAST_ARG );", "", "m4_ifdef( [[M4_YY_NOT_IN_HEADER]],", "[[", "#define yy_new_buffer yy_create_buffer", - "]])", - "", - "m4_ifdef( [[M4_YY_NOT_IN_HEADER]],", - "[[", "#define yy_set_interactive(is_interactive) \\", " { \\", " if ( ! YY_CURRENT_BUFFER ){ \\", @@ -785,10 +922,6 @@ const char *skel[] = { " } \\", " YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \\", " }", - "]])", - "", - "m4_ifdef( [[M4_YY_NOT_IN_HEADER]],", - "[[", "#define yy_set_bol(at_bol) \\", " { \\", " if ( ! YY_CURRENT_BUFFER ){\\", @@ -798,10 +931,6 @@ const char *skel[] = { " } \\", " YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \\", " }", - "]])", - "", - "m4_ifdef( [[M4_YY_NOT_IN_HEADER]],", - "[[", "#define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol)", "]])", "", @@ -816,10 +945,10 @@ const char *skel[] = { "", "m4_ifdef( [[M4_YY_NOT_IN_HEADER]],", "[[", - "static yy_state_type yy_get_previous_state M4_YY_PARAMS( M4_YY_PROTO_ONLY_ARG );", - "static yy_state_type yy_try_NUL_trans M4_YY_PARAMS( yy_state_type current_state M4_YY_PROTO_LAST_ARG);", - "static int yy_get_next_buffer M4_YY_PARAMS( M4_YY_PROTO_ONLY_ARG );", - "static void yy_fatal_error M4_YY_PARAMS( yyconst char msg[] M4_YY_PROTO_LAST_ARG ) __dead2;", + "static yy_state_type yy_get_previous_state ( M4_YY_PROTO_ONLY_ARG );", + "static yy_state_type yy_try_NUL_trans ( yy_state_type current_state M4_YY_PROTO_LAST_ARG);", + "static int yy_get_next_buffer ( M4_YY_PROTO_ONLY_ARG );", + "static void yynoreturn yy_fatal_error ( const char* msg M4_YY_PROTO_LAST_ARG ) __dead2;", "]])", "", "%endif", @@ -836,10 +965,6 @@ const char *skel[] = { " *yy_cp = '\\0'; \\", "%% [3.0] code to copy yytext_ptr to yytext[] goes here, if %array \\", " YY_G(yy_c_buf_p) = yy_cp;", - "]])", - "", - "m4_ifdef( [[M4_YY_NOT_IN_HEADER]],", - "[[", "%% [4.0] data tables for the DFA and the user's section 1 definitions go here", "]])", "", @@ -892,8 +1017,8 @@ const char *skel[] = { " size_t yy_buffer_stack_max; /**< capacity of stack. */", " YY_BUFFER_STATE * yy_buffer_stack; /**< Stack as an array. */", " char yy_hold_char;", - " yy_size_t yy_n_chars;", - " yy_size_t yyleng_r;", + " int yy_n_chars;", + " int yyleng_r;", " char *yy_c_buf_p;", " int yy_init;", " int yy_start;", @@ -951,7 +1076,7 @@ const char *skel[] = { "%if-c-only", "m4_ifdef( [[M4_YY_NOT_IN_HEADER]],", "[[", - "static int yy_init_globals M4_YY_PARAMS( M4_YY_PROTO_ONLY_ARG );", + "static int yy_init_globals ( M4_YY_PROTO_ONLY_ARG );", "]])", "%endif", "", @@ -972,9 +1097,9 @@ const char *skel[] = { " ]])", "]])", "", - "int yylex_init M4_YY_PARAMS(yyscan_t* scanner);", + "int yylex_init (yyscan_t* scanner);", "", - "int yylex_init_extra M4_YY_PARAMS( YY_EXTRA_TYPE user_defined, yyscan_t* scanner);", + "int yylex_init_extra ( YY_EXTRA_TYPE user_defined, yyscan_t* scanner);", "", "%endif", "", @@ -985,74 +1110,74 @@ const char *skel[] = { "", "m4_ifdef( [[M4_YY_NO_DESTROY]],,", "[[", - "int yylex_destroy M4_YY_PARAMS( M4_YY_PROTO_ONLY_ARG );", + "int yylex_destroy ( M4_YY_PROTO_ONLY_ARG );", "]])", "", "m4_ifdef( [[M4_YY_NO_GET_DEBUG]],,", "[[", - "int yyget_debug M4_YY_PARAMS( M4_YY_PROTO_ONLY_ARG );", + "int yyget_debug ( M4_YY_PROTO_ONLY_ARG );", "]])", "", "m4_ifdef( [[M4_YY_NO_SET_DEBUG]],,", "[[", - "void yyset_debug M4_YY_PARAMS( int debug_flag M4_YY_PROTO_LAST_ARG );", + "void yyset_debug ( int debug_flag M4_YY_PROTO_LAST_ARG );", "]])", "", "m4_ifdef( [[M4_YY_NO_GET_EXTRA]],,", "[[", - "YY_EXTRA_TYPE yyget_extra M4_YY_PARAMS( M4_YY_PROTO_ONLY_ARG );", + "YY_EXTRA_TYPE yyget_extra ( M4_YY_PROTO_ONLY_ARG );", "]])", "", "m4_ifdef( [[M4_YY_NO_SET_EXTRA]],,", "[[", - "void yyset_extra M4_YY_PARAMS( YY_EXTRA_TYPE user_defined M4_YY_PROTO_LAST_ARG );", + "void yyset_extra ( YY_EXTRA_TYPE user_defined M4_YY_PROTO_LAST_ARG );", "]])", "", "m4_ifdef( [[M4_YY_NO_GET_IN]],,", "[[", - "FILE *yyget_in M4_YY_PARAMS( M4_YY_PROTO_ONLY_ARG );", + "FILE *yyget_in ( M4_YY_PROTO_ONLY_ARG );", "]])", "", "m4_ifdef( [[M4_YY_NO_SET_IN]],,", "[[", - "void yyset_in M4_YY_PARAMS( FILE * in_str M4_YY_PROTO_LAST_ARG );", + "void yyset_in ( FILE * _in_str M4_YY_PROTO_LAST_ARG );", "]])", "", "m4_ifdef( [[M4_YY_NO_GET_OUT]],,", "[[", - "FILE *yyget_out M4_YY_PARAMS( M4_YY_PROTO_ONLY_ARG );", + "FILE *yyget_out ( M4_YY_PROTO_ONLY_ARG );", "]])", "", "m4_ifdef( [[M4_YY_NO_SET_OUT]],,", "[[", - "void yyset_out M4_YY_PARAMS( FILE * out_str M4_YY_PROTO_LAST_ARG );", + "void yyset_out ( FILE * _out_str M4_YY_PROTO_LAST_ARG );", "]])", "", "m4_ifdef( [[M4_YY_NO_GET_LENG]],,", "[[", - "yy_size_t yyget_leng M4_YY_PARAMS( M4_YY_PROTO_ONLY_ARG );", + " int yyget_leng ( M4_YY_PROTO_ONLY_ARG );", "]])", "", "m4_ifdef( [[M4_YY_NO_GET_TEXT]],,", "[[", - "char *yyget_text M4_YY_PARAMS( M4_YY_PROTO_ONLY_ARG );", + "char *yyget_text ( M4_YY_PROTO_ONLY_ARG );", "]])", "", "m4_ifdef( [[M4_YY_NO_GET_LINENO]],,", "[[", - "int yyget_lineno M4_YY_PARAMS( M4_YY_PROTO_ONLY_ARG );", + "int yyget_lineno ( M4_YY_PROTO_ONLY_ARG );", "]])", "", "m4_ifdef( [[M4_YY_NO_SET_LINENO]],,", "[[", - "void yyset_lineno M4_YY_PARAMS( int line_number M4_YY_PROTO_LAST_ARG );", + "void yyset_lineno ( int _line_number M4_YY_PROTO_LAST_ARG );", "]])", "", "m4_ifdef( [[M4_YY_REENTRANT]],", "[[", "m4_ifdef( [[M4_YY_NO_GET_COLUMN]],,", "[[", - "int yyget_column M4_YY_PARAMS( M4_YY_PROTO_ONLY_ARG );", + "int yyget_column ( M4_YY_PROTO_ONLY_ARG );", "]])", "]])", "", @@ -1060,28 +1185,28 @@ const char *skel[] = { "[[", "m4_ifdef( [[M4_YY_NO_SET_COLUMN]],,", "[[", - "void yyset_column M4_YY_PARAMS( int column_no M4_YY_PROTO_LAST_ARG );", + "void yyset_column ( int _column_no M4_YY_PROTO_LAST_ARG );", "]])", "]])", "", "%if-bison-bridge", "m4_ifdef( [[M4_YY_NO_GET_LVAL]],,", "[[", - "YYSTYPE * yyget_lval M4_YY_PARAMS( M4_YY_PROTO_ONLY_ARG );", + "YYSTYPE * yyget_lval ( M4_YY_PROTO_ONLY_ARG );", "]])", "", - "void yyset_lval M4_YY_PARAMS( YYSTYPE * yylval_param M4_YY_PROTO_LAST_ARG );", + "void yyset_lval ( YYSTYPE * yylval_param M4_YY_PROTO_LAST_ARG );", "", "m4_ifdef( [[]],", "[[", " m4_ifdef( [[M4_YY_NO_GET_LLOC]],,", " [[", - " YYLTYPE *yyget_lloc M4_YY_PARAMS( M4_YY_PROTO_ONLY_ARG );", + " YYLTYPE *yyget_lloc ( M4_YY_PROTO_ONLY_ARG );", " ]])", "", " m4_ifdef( [[M4_YY_NO_SET_LLOC]],,", " [[", - " void yyset_lloc M4_YY_PARAMS( YYLTYPE * yylloc_param M4_YY_PROTO_LAST_ARG );", + " void yyset_lloc ( YYLTYPE * yylloc_param M4_YY_PROTO_LAST_ARG );", " ]])", "]])", "%endif", @@ -1092,37 +1217,37 @@ const char *skel[] = { "", "#ifndef YY_SKIP_YYWRAP", "#ifdef __cplusplus", - "extern \"C\" int yywrap M4_YY_PARAMS( M4_YY_PROTO_ONLY_ARG );", + "extern \"C\" int yywrap ( M4_YY_PROTO_ONLY_ARG );", "#else", - "extern int yywrap M4_YY_PARAMS( M4_YY_PROTO_ONLY_ARG );", + "extern int yywrap ( M4_YY_PROTO_ONLY_ARG );", "#endif", "#endif", "", "%not-for-header", + "#ifndef YY_NO_UNPUT", " m4_ifdef( [[M4_YY_NO_UNPUT]],,", " [[", - "#ifndef YY_NO_UNPUT", - " static void yyunput M4_YY_PARAMS( int c, char *buf_ptr M4_YY_PROTO_LAST_ARG);", - "#endif", + " static void yyunput ( int c, char *buf_ptr M4_YY_PROTO_LAST_ARG);", " ]])", + "#endif", "%ok-for-header", "%endif", "", "#ifndef yytext_ptr", - "static void yy_flex_strncpy M4_YY_PARAMS( char *, yyconst char *, int M4_YY_PROTO_LAST_ARG);", + "static void yy_flex_strncpy ( char *, const char *, int M4_YY_PROTO_LAST_ARG);", "#endif", "", "#ifdef YY_NEED_STRLEN", - "static int yy_flex_strlen M4_YY_PARAMS( yyconst char * M4_YY_PROTO_LAST_ARG);", + "static int yy_flex_strlen ( const char * M4_YY_PROTO_LAST_ARG);", "#endif", "", "#ifndef YY_NO_INPUT", "%if-c-only Standard (non-C++) definition", "%not-for-header", "#ifdef __cplusplus", - "static int yyinput M4_YY_PARAMS( M4_YY_PROTO_ONLY_ARG );", + "static int yyinput ( M4_YY_PROTO_ONLY_ARG );", "#else", - "static int input M4_YY_PARAMS( M4_YY_PROTO_ONLY_ARG );", + "static int input ( M4_YY_PROTO_ONLY_ARG );", "#endif", "%ok-for-header", "%endif", @@ -1130,7 +1255,6 @@ const char *skel[] = { "", "", "%if-c-only", - "%# TODO: This is messy.", "m4_ifdef( [[M4_YY_STACK_USED]],", "[[", "", @@ -1148,15 +1272,15 @@ const char *skel[] = { "[[", " m4_ifdef( [[M4_YY_NO_PUSH_STATE]],,", " [[", - " static void yy_push_state M4_YY_PARAMS( int new_state M4_YY_PROTO_LAST_ARG);", + " static void yy_push_state ( int _new_state M4_YY_PROTO_LAST_ARG);", " ]])", " m4_ifdef( [[M4_YY_NO_POP_STATE]],,", " [[", - " static void yy_pop_state M4_YY_PARAMS( M4_YY_PROTO_ONLY_ARG );", + " static void yy_pop_state ( M4_YY_PROTO_ONLY_ARG );", " ]])", " m4_ifdef( [[M4_YY_NO_TOP_STATE]],,", " [[", - " static int yy_top_state M4_YY_PARAMS( M4_YY_PROTO_ONLY_ARG );", + " static int yy_top_state ( M4_YY_PROTO_ONLY_ARG );", " ]])", "]])", "", @@ -1170,7 +1294,12 @@ const char *skel[] = { "", "/* Amount of stuff to slurp up with each read. */", "#ifndef YY_READ_BUF_SIZE", + "#ifdef __ia64__", + "/* On IA-64, the buffer size is 16k, not 8k */", + "#define YY_READ_BUF_SIZE 16384", + "#else", "#define YY_READ_BUF_SIZE 8192", + "#endif /* __ia64__ */", "#endif", "", "m4_ifdef( [[M4_YY_NOT_IN_HEADER]],", @@ -1181,7 +1310,7 @@ const char *skel[] = { "/* This used to be an fputs(), but since the string might contain NUL's,", " * we now use fwrite().", " */", - "#define ECHO do { if (fwrite( yytext, yyleng, 1, yyout )) {} } while (0)", + "#define ECHO do { if (fwrite( yytext, (size_t) yyleng, 1, yyout )) {} } while (0)", "%endif", "%if-c++-only C++ definition", "#define ECHO LexerOutput( yytext, yyleng )", @@ -1199,7 +1328,7 @@ const char *skel[] = { "%% [5.0] fread()/read() definition of YY_INPUT goes here unless we're doing C++ \\", "\\", "%if-c++-only C++ definition \\", - " if ( (result = LexerInput( (char *) buf, max_size )) < 0 ) \\", + " if ( (int)(result = LexerInput( (char *) buf, max_size )) < 0 ) \\", " YY_FATAL_ERROR( \"input in flex scanner failed\" );", "%endif", "", @@ -1383,15 +1512,15 @@ const char *skel[] = { "", "", "/* Load the DFA tables from the given stream. */", - "int yytables_fload M4_YY_PARAMS(FILE * fp M4_YY_PROTO_LAST_ARG);", + "int yytables_fload (FILE * fp M4_YY_PROTO_LAST_ARG);", "", "/* Unload the tables from memory. */", - "int yytables_destroy M4_YY_PARAMS(M4_YY_PROTO_ONLY_ARG);", + "int yytables_destroy (M4_YY_PROTO_ONLY_ARG);", "%not-for-header", "", "/** Describes a mapping from a serialized table id to its deserialized state in", " * this scanner. This is the bridge between our \"generic\" deserialization code", - " * and the specifics of this scanner. ", + " * and the specifics of this scanner.", " */", "struct yytbl_dmap {", " enum yytbl_id dm_id;/**< table identifier */", @@ -1425,8 +1554,8 @@ const char *skel[] = { "%if-c-only Standard (non-C++) definition", "", "", - "m4_define( [[M4_YY_LEX_PROTO]], [[M4_YY_PARAMS(M4_YY_PROTO_ONLY_ARG)]])", - "m4_define( [[M4_YY_LEX_DECLARATION]], [[YYFARGS0(void)]])", + "m4_define( [[M4_YY_LEX_PROTO]], [[(M4_YY_PROTO_ONLY_ARG)]])", + "m4_define( [[M4_YY_LEX_DECLARATION]], [[(M4_YY_DEF_ONLY_ARG)]])", "", "m4_ifdef( [[M4_YY_BISON_LVAL]],", "[[", @@ -1434,7 +1563,7 @@ const char *skel[] = { " m4_dnl accept the lval parameter.", "", " m4_define( [[M4_YY_LEX_PROTO]], [[\\]]", - " [[M4_YY_PARAMS(YYSTYPE * yylval_param M4_YY_PROTO_LAST_ARG)]])", + " [[(YYSTYPE * yylval_param M4_YY_PROTO_LAST_ARG)]])", " m4_define( [[M4_YY_LEX_DECLARATION]], [[\\]]", " [[YYFARGS1(YYSTYPE *,yylval_param)]])", "]])", @@ -1444,7 +1573,7 @@ const char *skel[] = { " m4_dnl Locations are used. yylex should also accept the ylloc parameter.", "", " m4_define( [[M4_YY_LEX_PROTO]], [[\\]]", - " [[M4_YY_PARAMS(YYSTYPE * yylval_param, YYLTYPE * yylloc_param M4_YY_PROTO_LAST_ARG)]])", + " [[(YYSTYPE * yylval_param, YYLTYPE * yylloc_param M4_YY_PROTO_LAST_ARG)]])", " m4_define( [[M4_YY_LEX_DECLARATION]], [[\\]]", " [[YYFARGS2(YYSTYPE *,yylval_param, YYLTYPE *,yylloc_param)]])", "]])", @@ -1472,7 +1601,7 @@ const char *skel[] = { "[[", "/* Code executed at the end of each rule. */", "#ifndef YY_BREAK", - "#define YY_BREAK break;", + "#define YY_BREAK /*LINTED*/break;", "#endif", "]])", "", @@ -1503,8 +1632,6 @@ const char *skel[] = { " ]])", "]])", "", - "%% [7.0] user's declarations go here", - "", "m4_ifdef( [[M4_YY_BISON_LVAL]],", "[[", " yylval = yylval_param;", @@ -1540,7 +1667,7 @@ const char *skel[] = { " yyin = stdin;", "%endif", "%if-c++-only", - " yyin = & std::cin;", + " yyin.rdbuf(std::cin.rdbuf());", "%endif", "", " if ( ! yyout )", @@ -1548,7 +1675,7 @@ const char *skel[] = { " yyout = stdout;", "%endif", "%if-c++-only", - " yyout = & std::cout;", + " yyout.rdbuf(std::cout.rdbuf());", "%endif", "", " if ( ! YY_CURRENT_BUFFER ) {", @@ -1560,7 +1687,10 @@ const char *skel[] = { " yy_load_buffer_state( M4_YY_CALL_ONLY_ARG );", " }", "", - " while ( 1 ) /* loops until end-of-file is reached */", + " {", + "%% [7.0] user's declarations go here", + "", + " while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */", " {", "%% [8.0] yymore()-related code goes here", " yy_cp = YY_G(yy_c_buf_p);", @@ -1611,7 +1741,12 @@ const char *skel[] = { " * back-up) that will match for the new input source.", " */", " YY_G(yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;", + "%if-c-only", " YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin;", + "%endif", + "%if-c++-only", + " YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin.rdbuf();", + "%endif", " YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL;", " }", "", @@ -1717,17 +1852,36 @@ const char *skel[] = { " \"fatal flex scanner internal error--no action found\" );", " } /* end of action switch */", " } /* end of scanning one token */", + " } /* end of user's declarations */", "} /* end of yylex */", "%ok-for-header", "", "%if-c++-only", "%not-for-header", "/* The contents of this function are C++ specific, so the YY_G macro is not used.", + " * This constructor simply maintains backward compatibility.", + " * DEPRECATED", " */", - "yyFlexLexer::yyFlexLexer( std::istream* arg_yyin, std::ostream* arg_yyout )", + "yyFlexLexer::yyFlexLexer( std::istream* arg_yyin, std::ostream* arg_yyout ):", + " yyin(arg_yyin ? arg_yyin->rdbuf() : std::cin.rdbuf()),", + " yyout(arg_yyout ? arg_yyout->rdbuf() : std::cout.rdbuf())", + "{", + " ctor_common();", + "}", + "", + "/* The contents of this function are C++ specific, so the YY_G macro is not used.", + " */", + "yyFlexLexer::yyFlexLexer( std::istream& arg_yyin, std::ostream& arg_yyout ):", + " yyin(arg_yyin.rdbuf()),", + " yyout(arg_yyout.rdbuf())", + "{", + " ctor_common();", + "}", + "", + "/* The contents of this function are C++ specific, so the YY_G macro is not used.", + " */", + "void yyFlexLexer::ctor_common()", "{", - " yyin = arg_yyin;", - " yyout = arg_yyout;", " yy_c_buf_p = 0;", " yy_init = 0;", " yy_start = 0;", @@ -1744,7 +1898,7 @@ const char *skel[] = { " yy_start_stack_ptr = yy_start_stack_depth = 0;", " yy_start_stack = NULL;", "", - " yy_buffer_stack = 0;", + " yy_buffer_stack = NULL;", " yy_buffer_stack_top = 0;", " yy_buffer_stack_max = 0;", "", @@ -1770,16 +1924,29 @@ const char *skel[] = { "", "/* The contents of this function are C++ specific, so the YY_G macro is not used.", " */", + "void yyFlexLexer::switch_streams( std::istream& new_in, std::ostream& new_out )", + "{", + " // was if( new_in )", + " yy_delete_buffer( YY_CURRENT_BUFFER M4_YY_CALL_LAST_ARG);", + " yy_switch_to_buffer( yy_create_buffer( new_in, YY_BUF_SIZE M4_YY_CALL_LAST_ARG) M4_YY_CALL_LAST_ARG);", + "", + " // was if( new_out )", + " yyout.rdbuf(new_out.rdbuf());", + "}", + "", + "/* The contents of this function are C++ specific, so the YY_G macro is not used.", + " */", "void yyFlexLexer::switch_streams( std::istream* new_in, std::ostream* new_out )", "{", - " if ( new_in )", - " {", - " yy_delete_buffer( YY_CURRENT_BUFFER M4_YY_CALL_LAST_ARG);", - " yy_switch_to_buffer( yy_create_buffer( new_in, YY_BUF_SIZE M4_YY_CALL_LAST_ARG) M4_YY_CALL_LAST_ARG);", - " }", + " if( ! new_in ) {", + " new_in = &yyin;", + " }", "", - " if ( new_out )", - " yyout = new_out;", + " if ( ! new_out ) {", + " new_out = &yyout;", + " }", + "", + " switch_streams(*new_in, *new_out);", "}", "", "#ifdef YY_INTERACTIVE", @@ -1788,33 +1955,33 @@ const char *skel[] = { "int yyFlexLexer::LexerInput( char* buf, int max_size )", "#endif", "{", - " if ( yyin->eof() || yyin->fail() )", + " if ( yyin.eof() || yyin.fail() )", " return 0;", "", "#ifdef YY_INTERACTIVE", - " yyin->get( buf[0] );", + " yyin.get( buf[0] );", "", - " if ( yyin->eof() )", + " if ( yyin.eof() )", " return 0;", "", - " if ( yyin->bad() )", + " if ( yyin.bad() )", " return -1;", "", " return 1;", "", "#else", - " (void) yyin->read( buf, max_size );", + " (void) yyin.read( buf, max_size );", "", - " if ( yyin->bad() )", + " if ( yyin.bad() )", " return -1;", " else", - " return yyin->gcount();", + " return yyin.gcount();", "#endif", "}", "", "void yyFlexLexer::LexerOutput( const char* buf, int size )", "{", - " (void) yyout->write( buf, size );", + " (void) yyout.write( buf, size );", "}", "%ok-for-header", "%endif", @@ -1829,7 +1996,7 @@ const char *skel[] = { " * EOB_ACT_END_OF_FILE - end of file", " */", "%if-c-only", - "static int yy_get_next_buffer YYFARGS0(void)", + "static int yy_get_next_buffer (M4_YY_DEF_ONLY_ARG)", "%endif", "%if-c++-only", "int yyFlexLexer::yy_get_next_buffer()", @@ -1867,7 +2034,7 @@ const char *skel[] = { " /* Try to read more data. */", "", " /* First move last chars to start of buffer. */", - " number_to_move = (int) (YY_G(yy_c_buf_p) - YY_G(yytext_ptr)) - 1;", + " number_to_move = (int) (YY_G(yy_c_buf_p) - YY_G(yytext_ptr) - 1);", "", " for ( i = 0; i < number_to_move; ++i )", " *(dest++) = *(source++);", @@ -1880,7 +2047,7 @@ const char *skel[] = { "", " else", " {", - " yy_size_t num_to_read =", + " int num_to_read =", " YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;", "", " while ( num_to_read <= 0 )", @@ -1899,7 +2066,7 @@ const char *skel[] = { "", " if ( b->yy_is_our_buffer )", " {", - " yy_size_t new_size = b->yy_buf_size * 2;", + " int new_size = b->yy_buf_size * 2;", "", " if ( new_size <= 0 )", " b->yy_buf_size += b->yy_buf_size / 8;", @@ -1909,11 +2076,11 @@ const char *skel[] = { " b->yy_ch_buf = (char *)", " /* Include room in for 2 EOB chars. */", " yyrealloc( (void *) b->yy_ch_buf,", - " b->yy_buf_size + 2 M4_YY_CALL_LAST_ARG );", + " (yy_size_t) (b->yy_buf_size + 2) M4_YY_CALL_LAST_ARG );", " }", " else", " /* Can't grow it, we don't own it. */", - " b->yy_ch_buf = 0;", + " b->yy_ch_buf = NULL;", "", " if ( ! b->yy_ch_buf )", " YY_FATAL_ERROR(", @@ -1955,13 +2122,15 @@ const char *skel[] = { " else", " ret_val = EOB_ACT_CONTINUE_SCAN;", "", - " if ((yy_size_t) (YY_G(yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) {", + " if ((YY_G(yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) {", " /* Extend the array by 50%, plus the number we really need. */", - " yy_size_t new_size = YY_G(yy_n_chars) + number_to_move + (YY_G(yy_n_chars) >> 1);", + " int new_size = YY_G(yy_n_chars) + number_to_move + (YY_G(yy_n_chars) >> 1);", " YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc(", - " (void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf, new_size M4_YY_CALL_LAST_ARG );", + " (void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf, (yy_size_t) new_size M4_YY_CALL_LAST_ARG );", " if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )", " YY_FATAL_ERROR( \"out of dynamic memory in yy_get_next_buffer()\" );", + " /* \"- 2\" to take care of EOB's */", + " YY_CURRENT_BUFFER_LVALUE->yy_buf_size = (int) (new_size - 2);", " }", "", " YY_G(yy_n_chars) += number_to_move;", @@ -1978,7 +2147,7 @@ const char *skel[] = { "", "%if-c-only", "%not-for-header", - " static yy_state_type yy_get_previous_state YYFARGS0(void)", + " static yy_state_type yy_get_previous_state (M4_YY_DEF_ONLY_ARG)", "%endif", "%if-c++-only", " yy_state_type yyFlexLexer::yy_get_previous_state()", @@ -2020,14 +2189,13 @@ const char *skel[] = { "}", "", "", + "#ifndef YY_NO_UNPUT", "%if-c-only", "m4_ifdef( [[M4_YY_NO_UNPUT]],,", "[[", - "#ifndef YY_NO_UNPUT", " static void yyunput YYFARGS2( int,c, char *,yy_bp)", "%endif", "%if-c++-only", - "#ifndef YY_NO_UNPUT", " void yyFlexLexer::yyunput( int c, char* yy_bp)", "%endif", "{", @@ -2042,7 +2210,7 @@ const char *skel[] = { " if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )", " { /* need to shift things up to make room */", " /* +2 for EOB chars. */", - " yy_size_t number_to_move = YY_G(yy_n_chars) + 2;", + " int number_to_move = YY_G(yy_n_chars) + 2;", " char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[", " YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2];", " char *source =", @@ -2054,7 +2222,7 @@ const char *skel[] = { " yy_cp += (int) (dest - source);", " yy_bp += (int) (dest - source);", " YY_CURRENT_BUFFER_LVALUE->yy_n_chars =", - " YY_G(yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_buf_size;", + " YY_G(yy_n_chars) = (int) 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\" );", @@ -2074,17 +2242,17 @@ const char *skel[] = { " YY_G(yy_hold_char) = *yy_cp;", " YY_G(yy_c_buf_p) = yy_cp;", "}", - "#endif /* ifndef YY_NO_UNPUT */", "%if-c-only", "]])", "%endif", + "#endif", "", "%if-c-only", "#ifndef YY_NO_INPUT", "#ifdef __cplusplus", - " static int yyinput YYFARGS0(void)", + " static int yyinput (M4_YY_DEF_ONLY_ARG)", "#else", - " static int input YYFARGS0(void)", + " static int input (M4_YY_DEF_ONLY_ARG)", "#endif", "", "%endif", @@ -2109,7 +2277,7 @@ const char *skel[] = { "", " else", " { /* need more input */", - " yy_size_t offset = YY_G(yy_c_buf_p) - YY_G(yytext_ptr);", + " int offset = (int) (YY_G(yy_c_buf_p) - YY_G(yytext_ptr));", " ++YY_G(yy_c_buf_p);", "", " switch ( yy_get_next_buffer( M4_YY_CALL_ONLY_ARG ) )", @@ -2133,7 +2301,7 @@ const char *skel[] = { " case EOB_ACT_END_OF_FILE:", " {", " if ( yywrap( M4_YY_CALL_ONLY_ARG ) )", - " return EOF;", + " return 0;", "", " if ( ! YY_G(yy_did_buffer_switch_on_eof) )", " YY_NEW_FILE;", @@ -2172,7 +2340,7 @@ const char *skel[] = { " void yyrestart YYFARGS1( FILE *,input_file)", "%endif", "%if-c++-only", - " void yyFlexLexer::yyrestart( std::istream* input_file )", + " void yyFlexLexer::yyrestart( std::istream& input_file )", "%endif", "{", " M4_YY_DECL_GUTS_VAR();", @@ -2187,6 +2355,21 @@ const char *skel[] = { " yy_load_buffer_state( M4_YY_CALL_ONLY_ARG );", "}", "", + "%if-c++-only", + "/** Delegate to the new version that takes an istream reference.", + " * @param input_file A readable stream.", + " * M4_YY_DOC_PARAM", + " * @note This function does not reset the start condition to @c INITIAL .", + " */", + "void yyFlexLexer::yyrestart( std::istream* input_file )", + "{", + " if( ! input_file ) {", + " input_file = &yyin;", + " }", + " yyrestart( *input_file );", + "}", + "%endif", + "", "/** Switch to a different input buffer.", " * @param new_buffer The new input buffer.", " * M4_YY_DOC_PARAM", @@ -2230,7 +2413,7 @@ const char *skel[] = { "", "", "%if-c-only", - "static void yy_load_buffer_state YYFARGS0(void)", + "static void yy_load_buffer_state (M4_YY_DEF_ONLY_ARG)", "%endif", "%if-c++-only", " void yyFlexLexer::yy_load_buffer_state()", @@ -2239,7 +2422,12 @@ const char *skel[] = { " M4_YY_DECL_GUTS_VAR();", " YY_G(yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;", " YY_G(yytext_ptr) = YY_G(yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos;", + "%if-c-only", " yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file;", + "%endif", + "%if-c++-only", + " yyin.rdbuf(YY_CURRENT_BUFFER_LVALUE->yy_input_file);", + "%endif", " YY_G(yy_hold_char) = *YY_G(yy_c_buf_p);", "}", "", @@ -2253,7 +2441,7 @@ const char *skel[] = { " YY_BUFFER_STATE yy_create_buffer YYFARGS2( FILE *,file, int ,size)", "%endif", "%if-c++-only", - " YY_BUFFER_STATE yyFlexLexer::yy_create_buffer( std::istream* file, int size )", + " YY_BUFFER_STATE yyFlexLexer::yy_create_buffer( std::istream& file, int size )", "%endif", "{", " YY_BUFFER_STATE b;", @@ -2268,7 +2456,7 @@ const char *skel[] = { " /* 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 M4_YY_CALL_LAST_ARG );", + " b->yy_ch_buf = (char *) yyalloc( (yy_size_t) (b->yy_buf_size + 2) M4_YY_CALL_LAST_ARG );", " if ( ! b->yy_ch_buf )", " YY_FATAL_ERROR( \"out of dynamic memory in yy_create_buffer()\" );", "", @@ -2279,6 +2467,19 @@ const char *skel[] = { " return b;", "}", "", + "%if-c++-only", + "/** Delegate creation of buffers to the new version that takes an istream reference.", + " * @param file A readable stream.", + " * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE.", + " * M4_YY_DOC_PARAM", + " * @return the allocated buffer state.", + " */", + " YY_BUFFER_STATE yyFlexLexer::yy_create_buffer( std::istream* file, int size )", + "{", + " return yy_create_buffer( *file, size );", + "}", + "%endif", + "", "/** Destroy the buffer.", " * @param b a buffer created with yy_create_buffer()", " * M4_YY_DOC_PARAM", @@ -2313,7 +2514,7 @@ const char *skel[] = { " static void yy_init_buffer YYFARGS2( YY_BUFFER_STATE ,b, FILE *,file)", "%endif", "%if-c++-only", - " void yyFlexLexer::yy_init_buffer( YY_BUFFER_STATE b, std::istream* file )", + " void yyFlexLexer::yy_init_buffer( YY_BUFFER_STATE b, std::istream& file )", "%endif", "", "{", @@ -2322,7 +2523,12 @@ const char *skel[] = { "", " yy_flush_buffer( b M4_YY_CALL_LAST_ARG);", "", + "%if-c-only", " b->yy_input_file = file;", + "%endif", + "%if-c++-only", + " b->yy_input_file = file.rdbuf();", + "%endif", " b->yy_fill_buffer = 1;", "", " /* If b is the current buffer, then yy_init_buffer was _probably_", @@ -2435,7 +2641,7 @@ const char *skel[] = { " * M4_YY_DOC_PARAM", " */", "%if-c-only", - "void yypop_buffer_state YYFARGS0(void)", + "void yypop_buffer_state (M4_YY_DEF_ONLY_ARG)", "%endif", "%if-c++-only", "void yyFlexLexer::yypop_buffer_state (void)", @@ -2463,7 +2669,7 @@ const char *skel[] = { " * Guarantees space for at least one push.", " */", "%if-c-only", - "static void yyensure_buffer_stack YYFARGS0(void)", + "static void yyensure_buffer_stack (M4_YY_DEF_ONLY_ARG)", "%endif", "%if-c++-only", "void yyFlexLexer::yyensure_buffer_stack(void)", @@ -2478,16 +2684,16 @@ const char *skel[] = { " * 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;", + " num_to_alloc = 1; /* After all that talk, this was set to 1 anyways... */", " YY_G(yy_buffer_stack) = (struct yy_buffer_state**)yyalloc", " (num_to_alloc * sizeof(struct yy_buffer_state*)", " M4_YY_CALL_LAST_ARG);", " if ( ! YY_G(yy_buffer_stack) )", " YY_FATAL_ERROR( \"out of dynamic memory in yyensure_buffer_stack()\" );", - " ", - " ", + "", + "", " memset(YY_G(yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*));", - " ", + "", " YY_G(yy_buffer_stack_max) = num_to_alloc;", " YY_G(yy_buffer_stack_top) = 0;", " return;", @@ -2496,7 +2702,7 @@ const char *skel[] = { " if (YY_G(yy_buffer_stack_top) >= (YY_G(yy_buffer_stack_max)) - 1){", "", " /* Increase the buffer to prepare for a possible push. */", - " int grow_size = 8 /* arbitrary grow size */;", + " yy_size_t grow_size = 8 /* arbitrary grow size */;", "", " num_to_alloc = YY_G(yy_buffer_stack_max) + grow_size;", " YY_G(yy_buffer_stack) = (struct yy_buffer_state**)yyrealloc", @@ -2523,7 +2729,7 @@ const char *skel[] = { " * @param base the character buffer", " * @param size the size in bytes of the character buffer", " * M4_YY_DOC_PARAM", - " * @return the newly allocated buffer state object. ", + " * @return the newly allocated buffer state object.", " */", "YY_BUFFER_STATE yy_scan_buffer YYFARGS2( char *,base, yy_size_t ,size)", "{", @@ -2534,16 +2740,16 @@ const char *skel[] = { " 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;", + " return NULL;", "", " b = (YY_BUFFER_STATE) yyalloc( sizeof( struct yy_buffer_state ) M4_YY_CALL_LAST_ARG );", " 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_size = (int) (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_input_file = NULL;", " b->yy_n_chars = b->yy_buf_size;", " b->yy_is_interactive = 0;", " b->yy_at_bol = 1;", @@ -2569,11 +2775,11 @@ const char *skel[] = { " * @note If you want to scan bytes that may contain NUL values, then use", " * yy_scan_bytes() instead.", " */", - "YY_BUFFER_STATE yy_scan_string YYFARGS1( yyconst char *, yystr)", + "YY_BUFFER_STATE yy_scan_string YYFARGS1( const char *, yystr)", "{", " m4_dnl M4_YY_DECL_GUTS_VAR();", "", - " return yy_scan_bytes( yystr, strlen(yystr) M4_YY_CALL_LAST_ARG);", + " return yy_scan_bytes( yystr, (int) strlen(yystr) M4_YY_CALL_LAST_ARG);", "}", "%endif", "]])", @@ -2589,16 +2795,16 @@ const char *skel[] = { " * M4_YY_DOC_PARAM", " * @return the newly allocated buffer state object.", " */", - "YY_BUFFER_STATE yy_scan_bytes YYFARGS2( yyconst char *,yybytes, yy_size_t ,_yybytes_len)", + "YY_BUFFER_STATE yy_scan_bytes YYFARGS2( const char *,yybytes, int ,_yybytes_len)", "{", " YY_BUFFER_STATE b;", " char *buf;", " yy_size_t n;", - " yy_size_t i;", + " int i;", " m4_dnl M4_YY_DECL_GUTS_VAR();", "", " /* Get memory for full buffer, including space for trailing EOB's. */", - " n = _yybytes_len + 2;", + " n = (yy_size_t) (_yybytes_len + 2);", " buf = (char *) yyalloc( n M4_YY_CALL_LAST_ARG );", " if ( ! buf )", " YY_FATAL_ERROR( \"out of dynamic memory in yy_scan_bytes()\" );", @@ -2626,10 +2832,10 @@ const char *skel[] = { "m4_ifdef( [[M4_YY_NO_PUSH_STATE]],,", "[[", "%if-c-only", - " static void yy_push_state YYFARGS1( int ,new_state)", + " static void yy_push_state YYFARGS1( int ,_new_state)", "%endif", "%if-c++-only", - " void yyFlexLexer::yy_push_state( int new_state )", + " void yyFlexLexer::yy_push_state( int _new_state )", "%endif", "{", " M4_YY_DECL_GUTS_VAR();", @@ -2638,7 +2844,7 @@ const char *skel[] = { " yy_size_t new_size;", "", " YY_G(yy_start_stack_depth) += YY_START_STACK_INCR;", - " new_size = YY_G(yy_start_stack_depth) * sizeof( int );", + " new_size = (yy_size_t) YY_G(yy_start_stack_depth) * sizeof( int );", "", " if ( ! YY_G(yy_start_stack) )", " YY_G(yy_start_stack) = (int *) yyalloc( new_size M4_YY_CALL_LAST_ARG );", @@ -2653,7 +2859,7 @@ const char *skel[] = { "", " YY_G(yy_start_stack)[YY_G(yy_start_stack_ptr)++] = YY_START;", "", - " BEGIN(new_state);", + " BEGIN(_new_state);", "}", "]])", "", @@ -2661,7 +2867,7 @@ const char *skel[] = { "m4_ifdef( [[M4_YY_NO_POP_STATE]],,", "[[", "%if-c-only", - " static void yy_pop_state YYFARGS0(void)", + " static void yy_pop_state (M4_YY_DEF_ONLY_ARG)", "%endif", "%if-c++-only", " void yyFlexLexer::yy_pop_state()", @@ -2679,7 +2885,7 @@ const char *skel[] = { "m4_ifdef( [[M4_YY_NO_TOP_STATE]],,", "[[", "%if-c-only", - " static int yy_top_state YYFARGS0(void)", + " static int yy_top_state (M4_YY_DEF_ONLY_ARG)", "%endif", "%if-c++-only", " int yyFlexLexer::yy_top_state()", @@ -2695,15 +2901,16 @@ const char *skel[] = { "#endif", "", "%if-c-only", - "static void yy_fatal_error YYFARGS1(yyconst char*, msg)", + "static void yynoreturn yy_fatal_error YYFARGS1(const char*, msg)", "{", - " m4_dnl M4_YY_DECL_GUTS_VAR();", - " (void) fprintf( stderr, \"%s\\n\", msg );", + " M4_YY_DECL_GUTS_VAR();", + " M4_YY_NOOP_GUTS_VAR();", + " fprintf( stderr, \"%s\\n\", msg );", " exit( YY_EXIT_FAILURE );", "}", "%endif", "%if-c++-only", - "void yyFlexLexer::LexerError( yyconst char msg[] )", + "void yyFlexLexer::LexerError( const char* msg )", "{", " M4_YY_DECL_GUTS_VAR();", " std::cerr << msg << std::endl;", @@ -2739,7 +2946,7 @@ const char *skel[] = { "/** Get the user-defined data for this scanner.", " * M4_YY_DOC_PARAM", " */", - "YY_EXTRA_TYPE yyget_extra YYFARGS0(void)", + "YY_EXTRA_TYPE yyget_extra (M4_YY_DEF_ONLY_ARG)", "{", " M4_YY_DECL_GUTS_VAR();", " return yyextra;", @@ -2752,10 +2959,10 @@ const char *skel[] = { "/** Get the current line number.", " * M4_YY_DOC_PARAM", " */", - "int yyget_lineno YYFARGS0(void)", + "int yyget_lineno (M4_YY_DEF_ONLY_ARG)", "{", " M4_YY_DECL_GUTS_VAR();", - " ", + "", " m4_ifdef( [[M4_YY_REENTRANT]],", " [[", " if (! YY_CURRENT_BUFFER)", @@ -2772,10 +2979,10 @@ const char *skel[] = { "/** Get the current column number.", " * M4_YY_DOC_PARAM", " */", - "int yyget_column YYFARGS0(void)", + "int yyget_column (M4_YY_DEF_ONLY_ARG)", "{", " M4_YY_DECL_GUTS_VAR();", - " ", + "", " m4_ifdef( [[M4_YY_REENTRANT]],", " [[", " if (! YY_CURRENT_BUFFER)", @@ -2791,7 +2998,7 @@ const char *skel[] = { "/** Get the input stream.", " * M4_YY_DOC_PARAM", " */", - "FILE *yyget_in YYFARGS0(void)", + "FILE *yyget_in (M4_YY_DEF_ONLY_ARG)", "{", " M4_YY_DECL_GUTS_VAR();", " return yyin;", @@ -2803,7 +3010,7 @@ const char *skel[] = { "/** Get the output stream.", " * M4_YY_DOC_PARAM", " */", - "FILE *yyget_out YYFARGS0(void)", + "FILE *yyget_out (M4_YY_DEF_ONLY_ARG)", "{", " M4_YY_DECL_GUTS_VAR();", " return yyout;", @@ -2815,7 +3022,7 @@ const char *skel[] = { "/** Get the length of the current token.", " * M4_YY_DOC_PARAM", " */", - "yy_size_t yyget_leng YYFARGS0(void)", + "int yyget_leng (M4_YY_DEF_ONLY_ARG)", "{", " M4_YY_DECL_GUTS_VAR();", " return yyleng;", @@ -2827,7 +3034,7 @@ const char *skel[] = { " */", "m4_ifdef( [[M4_YY_NO_GET_TEXT]],,", "[[", - "char *yyget_text YYFARGS0(void)", + "char *yyget_text (M4_YY_DEF_ONLY_ARG)", "{", " M4_YY_DECL_GUTS_VAR();", " return yytext;", @@ -2852,10 +3059,10 @@ const char *skel[] = { "m4_ifdef( [[M4_YY_NO_SET_LINENO]],,", "[[", "/** Set the current line number.", - " * @param line_number", + " * @param _line_number line number", " * M4_YY_DOC_PARAM", " */", - "void yyset_lineno YYFARGS1( int ,line_number)", + "void yyset_lineno YYFARGS1( int ,_line_number)", "{", " M4_YY_DECL_GUTS_VAR();", "", @@ -2865,7 +3072,7 @@ const char *skel[] = { " if (! YY_CURRENT_BUFFER )", " YY_FATAL_ERROR( \"yyset_lineno called with no buffer\" );", " ]])", - " yylineno = line_number;", + " yylineno = _line_number;", "}", "]])", "", @@ -2874,10 +3081,10 @@ const char *skel[] = { "m4_ifdef( [[M4_YY_NO_SET_COLUMN]],,", "[[", "/** Set the current column.", - " * @param line_number", + " * @param _column_no column number", " * M4_YY_DOC_PARAM", " */", - "void yyset_column YYFARGS1( int , column_no)", + "void yyset_column YYFARGS1( int , _column_no)", "{", " M4_YY_DECL_GUTS_VAR();", "", @@ -2887,7 +3094,7 @@ const char *skel[] = { " if (! YY_CURRENT_BUFFER )", " YY_FATAL_ERROR( \"yyset_column called with no buffer\" );", " ]])", - " yycolumn = column_no;", + " yycolumn = _column_no;", "}", "]])", "]])", @@ -2897,30 +3104,30 @@ const char *skel[] = { "[[", "/** Set the input stream. This does not discard the current", " * input buffer.", - " * @param in_str A readable stream.", + " * @param _in_str A readable stream.", " * M4_YY_DOC_PARAM", " * @see yy_switch_to_buffer", " */", - "void yyset_in YYFARGS1( FILE * ,in_str)", + "void yyset_in YYFARGS1( FILE * ,_in_str)", "{", " M4_YY_DECL_GUTS_VAR();", - " yyin = in_str ;", + " yyin = _in_str ;", "}", "]])", "", "m4_ifdef( [[M4_YY_NO_SET_OUT]],,", "[[", - "void yyset_out YYFARGS1( FILE * ,out_str)", + "void yyset_out YYFARGS1( FILE * ,_out_str)", "{", " M4_YY_DECL_GUTS_VAR();", - " yyout = out_str ;", + " yyout = _out_str ;", "}", "]])", "", "", "m4_ifdef( [[M4_YY_NO_GET_DEBUG]],,", "[[", - "int yyget_debug YYFARGS0(void)", + "int yyget_debug (M4_YY_DEF_ONLY_ARG)", "{", " M4_YY_DECL_GUTS_VAR();", " return yy_flex_debug;", @@ -2929,10 +3136,10 @@ const char *skel[] = { "", "m4_ifdef( [[M4_YY_NO_SET_DEBUG]],,", "[[", - "void yyset_debug YYFARGS1( int ,bdebug)", + "void yyset_debug YYFARGS1( int ,_bdebug)", "{", " M4_YY_DECL_GUTS_VAR();", - " yy_flex_debug = bdebug ;", + " yy_flex_debug = _bdebug ;", "}", "]])", "%endif", @@ -2943,7 +3150,7 @@ const char *skel[] = { "%if-bison-bridge", "m4_ifdef( [[M4_YY_NO_GET_LVAL]],,", "[[", - "YYSTYPE * yyget_lval YYFARGS0(void)", + "YYSTYPE * yyget_lval (M4_YY_DEF_ONLY_ARG)", "{", " M4_YY_DECL_GUTS_VAR();", " return yylval;", @@ -2963,7 +3170,7 @@ const char *skel[] = { "[[", " m4_ifdef( [[M4_YY_NO_GET_LLOC]],,", " [[", - "YYLTYPE *yyget_lloc YYFARGS0(void)", + "YYLTYPE *yyget_lloc (M4_YY_DEF_ONLY_ARG)", "{", " M4_YY_DECL_GUTS_VAR();", " return yylloc;", @@ -2989,14 +3196,7 @@ const char *skel[] = { " * the ONLY reentrant function that doesn't take the scanner as the last argument.", " * That's why we explicitly handle the declaration, instead of using our macros.", " */", - "m4_ifdef( [[M4_YY_NO_ANSI_FUNC_DEFS]],", - "[[", - "int yylex_init( ptr_yy_globals )", - " yyscan_t* ptr_yy_globals;", - "]],", - "[[", "int yylex_init(yyscan_t* ptr_yy_globals)", - "]])", "{", " if (ptr_yy_globals == NULL){", " errno = EINVAL;", @@ -3024,15 +3224,7 @@ const char *skel[] = { " * The user defined value in the first argument will be available to yyalloc in", " * the yyextra field.", " */", - "m4_ifdef( [[M4_YY_NO_ANSI_FUNC_DEFS]],", - "[[", - "int yylex_init_extra( yy_user_defined, ptr_yy_globals )", - " YY_EXTRA_TYPE yy_user_defined;", - " yyscan_t* ptr_yy_globals;", - "]],", - "[[", "int yylex_init_extra( YY_EXTRA_TYPE yy_user_defined, yyscan_t* ptr_yy_globals )", - "]])", "{", " struct yyguts_t dummy_yyguts;", "", @@ -3042,28 +3234,27 @@ const char *skel[] = { " errno = EINVAL;", " return 1;", " }", - " ", + "", " *ptr_yy_globals = (yyscan_t) yyalloc ( sizeof( struct yyguts_t ), &dummy_yyguts );", - " ", + "", " if (*ptr_yy_globals == NULL){", " errno = ENOMEM;", " return 1;", " }", - " ", + "", " /* By setting to 0xAA, we expose bugs in", " yy_init_globals. Leave at 0x00 for releases. */", " memset(*ptr_yy_globals,0x00,sizeof(struct yyguts_t));", - " ", + "", " yyset_extra (yy_user_defined, *ptr_yy_globals);", - " ", + "", " return yy_init_globals ( *ptr_yy_globals );", "}", "", "%endif if-c-only", "", - "", "%if-c-only", - "static int yy_init_globals YYFARGS0(void)", + "static int yy_init_globals (M4_YY_DEF_ONLY_ARG)", "{", " M4_YY_DECL_GUTS_VAR();", " /* Initialization is the same as for the non-reentrant scanner.", @@ -3078,10 +3269,10 @@ const char *skel[] = { " yylineno = 1;", " ]])", "]])", - " YY_G(yy_buffer_stack) = 0;", + " YY_G(yy_buffer_stack) = NULL;", " YY_G(yy_buffer_stack_top) = 0;", " YY_G(yy_buffer_stack_max) = 0;", - " YY_G(yy_c_buf_p) = (char *) 0;", + " YY_G(yy_c_buf_p) = NULL;", " YY_G(yy_init) = 0;", " YY_G(yy_start) = 0;", "", @@ -3112,8 +3303,8 @@ const char *skel[] = { " yyin = stdin;", " yyout = stdout;", "#else", - " yyin = (FILE *) 0;", - " yyout = (FILE *) 0;", + " yyin = NULL;", + " yyout = NULL;", "#endif", "", " /* For future reference: Set errno on error, since we are called by", @@ -3126,7 +3317,7 @@ const char *skel[] = { "", "%if-c-only SNIP! this currently causes conflicts with the c++ scanner", "/* yylex_destroy is for both reentrant and non-reentrant scanners. */", - "int yylex_destroy YYFARGS0(void)", + "int yylex_destroy (M4_YY_DEF_ONLY_ARG)", "{", " M4_YY_DECL_GUTS_VAR();", "", @@ -3178,8 +3369,11 @@ const char *skel[] = { "m4_ifdef( [[M4_YY_NOT_IN_HEADER]],", "[[", "#ifndef yytext_ptr", - "static void yy_flex_strncpy YYFARGS3( char*,s1, yyconst char *,s2, int,n)", + "static void yy_flex_strncpy YYFARGS3( char*,s1, const char *,s2, int,n)", "{", + " M4_YY_DECL_GUTS_VAR();", + " M4_YY_NOOP_GUTS_VAR();", + "", " int i;", " for ( i = 0; i < n; ++i )", " s1[i] = s2[i];", @@ -3190,7 +3384,7 @@ const char *skel[] = { "m4_ifdef( [[M4_YY_NOT_IN_HEADER]],", "[[", "#ifdef YY_NEED_STRLEN", - "static int yy_flex_strlen YYFARGS1( yyconst char *,s)", + "static int yy_flex_strlen YYFARGS1( const char *,s)", "{", " int n;", " for ( n = 0; s[n]; ++n )", @@ -3205,7 +3399,9 @@ const char *skel[] = { "[[", "void *yyalloc YYFARGS1( yy_size_t ,size)", "{", - " return (void *) malloc( size );", + " M4_YY_DECL_GUTS_VAR();", + " M4_YY_NOOP_GUTS_VAR();", + " return malloc(size);", "}", "]])", "", @@ -3213,6 +3409,9 @@ const char *skel[] = { "[[", "void *yyrealloc YYFARGS2( void *,ptr, yy_size_t ,size)", "{", + " M4_YY_DECL_GUTS_VAR();", + " M4_YY_NOOP_GUTS_VAR();", + "", " /* 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", @@ -3220,7 +3419,7 @@ const char *skel[] = { " * any pointer type to void*, and deal with argument conversions", " * as though doing an assignment.", " */", - " return (void *) realloc( (char *) ptr, size );", + " return realloc(ptr, size);", "}", "]])", "", @@ -3228,6 +3427,8 @@ const char *skel[] = { "[[", "void yyfree YYFARGS1( void *,ptr)", "{", + " M4_YY_DECL_GUTS_VAR();", + " M4_YY_NOOP_GUTS_VAR();", " free( (char *) ptr ); /* see yyrealloc() for (char *) cast */", "}", "]])", @@ -3287,12 +3488,12 @@ const char *skel[] = { "", "/** Get the number of integers in this table. This is NOT the", " * same thing as the number of elements.", - " * @param td the table ", + " * @param tbl the table", " * @return the number of integers in the table", " */", "yyskel_static flex_int32_t yytbl_calc_total_len (const struct yytbl_data *tbl)", "{", - " flex_int32_t n;", + " flex_uint32_t n;", "", " /* total number of ints */", " n = tbl->td_lolen;", @@ -3301,7 +3502,7 @@ const char *skel[] = { "", " if (tbl->td_id == YYTD_ID_TRANSITION)", " n *= 2;", - " return n;", + " return (flex_int32_t) n;", "}", "", "", @@ -3312,7 +3513,7 @@ const char *skel[] = { " errno = EIO;", " return -1;", " }", - " rd->bread += sizeof(flex_uint8_t);", + " rd->bread += (flex_uint32_t) sizeof(flex_uint8_t);", " return 0;", "}", "", @@ -3324,7 +3525,7 @@ const char *skel[] = { " return -1;", " }", " *((flex_uint16_t *) v) = ntohs (*((flex_uint16_t *) v));", - " rd->bread += sizeof(flex_uint16_t);", + " rd->bread += (flex_uint32_t) sizeof(flex_uint16_t);", " return 0;", "}", "", @@ -3336,14 +3537,14 @@ const char *skel[] = { " return -1;", " }", " *((flex_uint32_t *) v) = ntohl (*((flex_uint32_t *) v));", - " rd->bread += sizeof(flex_uint32_t);", + " rd->bread += (flex_uint32_t) sizeof(flex_uint32_t);", " return 0;", "}", "", "/** Read the header */", "static int yytbl_hdr_read YYFARGS2(struct yytbl_hdr *, th, struct yytbl_reader *, rd)", "{", - " int bytes;", + " size_t bytes;", " memset (th, 0, sizeof (struct yytbl_hdr));", "", " if (yytbl_read32 (&(th->th_magic), rd) != 0)", @@ -3379,7 +3580,7 @@ const char *skel[] = { " return -1;", " }", " else", - " rd->bread += bytes;", + " rd->bread += (flex_uint32_t) bytes;", "", " th->th_name = th->th_version + strlen (th->th_version) + 1;", " return 0;", @@ -3392,15 +3593,18 @@ const char *skel[] = { "static struct yytbl_dmap *yytbl_dmap_lookup YYFARGS2(struct yytbl_dmap *, dmap,", " int, id)", "{", + " M4_YY_DECL_GUTS_VAR();", + " M4_YY_NOOP_GUTS_VAR();", + "", " while (dmap->dm_id)", - " if (dmap->dm_id == id)", + " if ((int)(dmap->dm_id) == id)", " return dmap;", " else", " dmap++;", " return NULL;", "}", "", - "/** Read a table while mapping its contents to the local array. ", + "/** Read a table while mapping its contents to the local array.", " * @param dmap used to performing mapping", " * @return 0 on success", " */", @@ -3445,7 +3649,7 @@ const char *skel[] = { "", " if(M4_YY_TABLES_VERIFY)", " /* We point to the array itself */", - " p = dmap->dm_arr; ", + " p = dmap->dm_arr;", " else", " /* We point to the address of a pointer. */", " *dmap->dm_arr = p = (void *) yyalloc (bytes M4_YY_CALL_LAST_ARG);", @@ -3492,7 +3696,7 @@ const char *skel[] = { " rv = yytbl_read8 (&t8, rd);", " t32 = t8;", " break;", - " default: ", + " default:", " YY_FATAL_ERROR( \"invalid td_flags\" ); /* TODO: not fatal. */", " return -1;", " }", @@ -3549,7 +3753,7 @@ const char *skel[] = { " YY_FATAL_ERROR( \"transition table not found\" ); /* TODO: not fatal. */", " return -1;", " }", - " ", + "", " if( M4_YY_TABLES_VERIFY)", " v = &(((struct yy_trans_info *) (transdmap->dm_arr))[t32]);", " else", @@ -3560,7 +3764,7 @@ const char *skel[] = { " YY_FATAL_ERROR( \"tables verification failed at YYTD_PTRANS\" );", " }else", " ((struct yy_trans_info **) p)[0] = v;", - " ", + "", " /* increment p */", " p = (struct yy_trans_info **) p + 1;", " }", @@ -3675,8 +3879,8 @@ const char *skel[] = { "}", "", "/** Destroy the loaded tables, freeing memory, etc.. */", - "int yytables_destroy YYFARGS0(void)", - "{ ", + "int yytables_destroy (M4_YY_DEF_ONLY_ARG)", + "{", " struct yytbl_dmap *dmap=0;", "", " if(!M4_YY_TABLES_VERIFY){", @@ -3699,7 +3903,7 @@ const char *skel[] = { "", "", "m4_ifdef([[M4_YY_MAIN]], [[", - "int main M4_YY_PARAMS(void);", + "int main (void);", "", "int main ()", "{", @@ -3733,6 +3937,151 @@ const char *skel[] = { "#undef YY_DECL_IS_OURS", "#undef YY_DECL", "#endif", + "", + "[[#ifndef ]]M4_YY_PREFIX[[_create_buffer_ALREADY_DEFINED", + "#undef yy_create_buffer", + "#endif]]", + "[[#ifndef ]]M4_YY_PREFIX[[_delete_buffer_ALREADY_DEFINED", + "#undef yy_delete_buffer", + "#endif]]", + "[[#ifndef ]]M4_YY_PREFIX[[_scan_buffer_ALREADY_DEFINED", + "#undef yy_scan_buffer", + "#endif]]", + "[[#ifndef ]]M4_YY_PREFIX[[_scan_string_ALREADY_DEFINED", + "#undef yy_scan_string", + "#endif]]", + "[[#ifndef ]]M4_YY_PREFIX[[_scan_bytes_ALREADY_DEFINED", + "#undef yy_scan_bytes", + "#endif]]", + "[[#ifndef ]]M4_YY_PREFIX[[_init_buffer_ALREADY_DEFINED", + "#undef yy_init_buffer", + "#endif]]", + "[[#ifndef ]]M4_YY_PREFIX[[_flush_buffer_ALREADY_DEFINED", + "#undef yy_flush_buffer", + "#endif]]", + "[[#ifndef ]]M4_YY_PREFIX[[_load_buffer_state_ALREADY_DEFINED", + "#undef yy_load_buffer_state", + "#endif]]", + "[[#ifndef ]]M4_YY_PREFIX[[_switch_to_buffer_ALREADY_DEFINED", + "#undef yy_switch_to_buffer", + "#endif]]", + "[[#ifndef ]]M4_YY_PREFIX[[push_buffer_state_ALREADY_DEFINED", + "#undef yypush_buffer_state", + "#endif]]", + "[[#ifndef ]]M4_YY_PREFIX[[pop_buffer_state_ALREADY_DEFINED", + "#undef yypop_buffer_state", + "#endif]]", + "[[#ifndef ]]M4_YY_PREFIX[[ensure_buffer_stack_ALREADY_DEFINED", + "#undef yyensure_buffer_stack", + "#endif]]", + "[[#ifndef ]]M4_YY_PREFIX[[lex_ALREADY_DEFINED", + "#undef yylex", + "#endif]]", + "[[#ifndef ]]M4_YY_PREFIX[[restart_ALREADY_DEFINED", + "#undef yyrestart", + "#endif]]", + "[[#ifndef ]]M4_YY_PREFIX[[lex_init_ALREADY_DEFINED", + "#undef yylex_init", + "#endif]]", + "[[#ifndef ]]M4_YY_PREFIX[[lex_init_extra_ALREADY_DEFINED", + "#undef yylex_init_extra", + "#endif]]", + "[[#ifndef ]]M4_YY_PREFIX[[lex_destroy_ALREADY_DEFINED", + "#undef yylex_destroy", + "#endif]]", + "[[#ifndef ]]M4_YY_PREFIX[[get_debug_ALREADY_DEFINED", + "#undef yyget_debug", + "#endif]]", + "[[#ifndef ]]M4_YY_PREFIX[[set_debug_ALREADY_DEFINED", + "#undef yyset_debug", + "#endif]]", + "[[#ifndef ]]M4_YY_PREFIX[[get_extra_ALREADY_DEFINED", + "#undef yyget_extra", + "#endif]]", + "[[#ifndef ]]M4_YY_PREFIX[[set_extra_ALREADY_DEFINED", + "#undef yyset_extra", + "#endif]]", + "[[#ifndef ]]M4_YY_PREFIX[[get_in_ALREADY_DEFINED", + "#undef yyget_in", + "#endif]]", + "[[#ifndef ]]M4_YY_PREFIX[[set_in_ALREADY_DEFINED", + "#undef yyset_in", + "#endif]]", + "[[#ifndef ]]M4_YY_PREFIX[[get_out_ALREADY_DEFINED", + "#undef yyget_out", + "#endif]]", + "[[#ifndef ]]M4_YY_PREFIX[[set_out_ALREADY_DEFINED", + "#undef yyset_out", + "#endif]]", + "[[#ifndef ]]M4_YY_PREFIX[[get_leng_ALREADY_DEFINED", + "#undef yyget_leng", + "#endif]]", + "[[#ifndef ]]M4_YY_PREFIX[[get_text_ALREADY_DEFINED", + "#undef yyget_text", + "#endif]]", + "[[#ifndef ]]M4_YY_PREFIX[[get_lineno_ALREADY_DEFINED", + "#undef yyget_lineno", + "#endif]]", + "[[#ifndef ]]M4_YY_PREFIX[[set_lineno_ALREADY_DEFINED", + "#undef yyset_lineno", + "#endif]]", + "[[#ifndef ]]M4_YY_PREFIX[[get_column_ALREADY_DEFINED", + "#undef yyget_column", + "#endif]]", + "[[#ifndef ]]M4_YY_PREFIX[[set_column_ALREADY_DEFINED", + "#undef yyset_column", + "#endif]]", + "[[#ifndef ]]M4_YY_PREFIX[[wrap_ALREADY_DEFINED", + "#undef yywrap", + "#endif]]", + "[[#ifndef ]]M4_YY_PREFIX[[get_lval_ALREADY_DEFINED", + "#undef yyget_lval", + "#endif]]", + "[[#ifndef ]]M4_YY_PREFIX[[set_lval_ALREADY_DEFINED", + "#undef yyset_lval", + "#endif]]", + "[[#ifndef ]]M4_YY_PREFIX[[get_lloc_ALREADY_DEFINED", + "#undef yyget_lloc", + "#endif]]", + "[[#ifndef ]]M4_YY_PREFIX[[set_lloc_ALREADY_DEFINED", + "#undef yyset_lloc", + "#endif]]", + "[[#ifndef ]]M4_YY_PREFIX[[alloc_ALREADY_DEFINED", + "#undef yyalloc", + "#endif]]", + "[[#ifndef ]]M4_YY_PREFIX[[realloc_ALREADY_DEFINED", + "#undef yyrealloc", + "#endif]]", + "[[#ifndef ]]M4_YY_PREFIX[[free_ALREADY_DEFINED", + "#undef yyfree", + "#endif]]", + "[[#ifndef ]]M4_YY_PREFIX[[text_ALREADY_DEFINED", + "#undef yytext", + "#endif]]", + "[[#ifndef ]]M4_YY_PREFIX[[leng_ALREADY_DEFINED", + "#undef yyleng", + "#endif]]", + "[[#ifndef ]]M4_YY_PREFIX[[in_ALREADY_DEFINED", + "#undef yyin", + "#endif]]", + "[[#ifndef ]]M4_YY_PREFIX[[out_ALREADY_DEFINED", + "#undef yyout", + "#endif]]", + "[[#ifndef ]]M4_YY_PREFIX[[_flex_debug_ALREADY_DEFINED", + "#undef yy_flex_debug", + "#endif]]", + "[[#ifndef ]]M4_YY_PREFIX[[lineno_ALREADY_DEFINED", + "#undef yylineno", + "#endif]]", + "[[#ifndef ]]M4_YY_PREFIX[[tables_fload_ALREADY_DEFINED", + "#undef yytables_fload", + "#endif]]", + "[[#ifndef ]]M4_YY_PREFIX[[tables_destroy_ALREADY_DEFINED", + "#undef yytables_destroy", + "#endif]]", + "[[#ifndef ]]M4_YY_PREFIX[[TABLES_NAME_ALREADY_DEFINED", + "#undef yyTABLES_NAME", + "#endif]]", "]])", 0 }; diff --git a/usr.bin/lex/lex.1 b/usr.bin/lex/lex.1 index 83d3a0c12aac..1f2c73886824 100644 --- a/usr.bin/lex/lex.1 +++ b/usr.bin/lex/lex.1 @@ -1,6 +1,6 @@ .\" $FreeBSD$ .\" -.TH FLEX 1 "May 21, 2013" "Version 2.5.37" +.TH FLEX 1 "May 6, 2017" "Version 2.6.4" .SH NAME flex, lex \- fast lexical analyzer generator .SH SYNOPSIS diff --git a/usr.bin/lex/lib/Makefile b/usr.bin/lex/lib/Makefile index 0bca11f2113e..dfffe96159f3 100644 --- a/usr.bin/lex/lib/Makefile +++ b/usr.bin/lex/lib/Makefile @@ -2,7 +2,7 @@ .include -.PATH: ${SRCTOP}/contrib/flex +.PATH: ${SRCTOP}/contrib/flex/src LIB= ln SRCS= libmain.c libyywrap.c diff --git a/usr.bin/lex/version.awk b/usr.bin/lex/version.awk index 3d34093bef6d..434c1388682c 100644 --- a/usr.bin/lex/version.awk +++ b/usr.bin/lex/version.awk @@ -6,8 +6,6 @@ BEGIN { { if ($1 ~ /^#define$/ && $2 ~ /^VERSION$/) { - printf("-DFLEX_MAJOR_VERSION=%s\n", $3); - printf("-DFLEX_MINOR_VERSION=%s\n", $4); - printf("-DFLEX_SUBMINOR_VERSION=%s\n", $5); + printf("%s.%s.%s\n", $3, $4, $5); } }