% Copyright 2012-2024, Alexander Shibakov % This file is part of SPLinT % % SPLinT is free software: you can redistribute it and/or modify % it under the terms of the GNU General Public License as published by % the Free Software Foundation, either version 3 of the License, or % (at your option) any later version. % % SPLinT is distributed in the hope that it will be useful, % but WITHOUT ANY WARRANTY; without even the implied warranty of % MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the % GNU General Public License for more details. % % You should have received a copy of the GNU General Public License % along with SPLinT. If not, see . \input limbo.sty \input yy.sty \let\N\textN @**Parser tables. This is the main table output code. Its core comes from the Bison Sourcer(er?) (\.{bs.w}) which will be included as soon as this paragraph is over. Since the main function of this code is to {\it dump\/} tables produced by \bison, and a {\it bison\/} is a large buffalo like animal, {\it and\/} the only reason it has to be done like this is due to a less than optimal choices of a few developers, feel free to interpret the acronym as something easier to remember. @ @= @@; @ @= @@; #ifdef YYEOF @@; #endif @ @= @@; @ @= @@; @ @= @@; @ @= @@; @ @= @@; @ @= @@; @ @= @@; @ @= @@; @ @= @@; @ @= @@; @ @= @@; @ @= @@; @ @= @@; @ @= @@; @ @= @@; @ @= @@; @ @<\Cee\ preamble@>= @@; @<\Cee\ setup code specific to \bison@>@; @i common.w @i bs.w @*1 Parser dependent settings. This is it for the core table output functions. To make all of this into working code in this case, lexing and error functions are supplied. If an existing parser is reused as |PARSER_FILE| these functions may have been redefined by the programmer, in which case a mechanism to supply the appropriate definitions is provided. @= #ifndef HAS_SCANNER int yylex(void); int yyerror(char *); #endif @ @= #ifndef HAS_SCANNER int yylex(void){} int yyerror(char * text){} #endif @ %\let\B\oldB % \Cee\ mode mixes all up @c @<\Cee\ preamble@>@; #include PARSER_FILE @<\Cee\ postamble@>@; @** Index (for {\tt \jobname}). \def\readcontents{% {% \acrofalse % \def\jobname{bparser}\input bparser.toc % \def\jobname{ftablesout}\input ftablesout.toc }% \input \contentsfile }