Mercurial > octave
view libinterp/corefcn/oct-tex-lexer.in.ll @ 20831:35241c4b696c
eliminate return statements after calls to error
* Cell.cc, __ichol__.cc, __lin_interpn__.cc, __pchip_deriv__.cc,
besselj.cc, cellfun.cc, colloc.cc, debug.cc, dlmread.cc,
dynamic-ld.cc, filter.cc, find.cc, gl2ps-renderer.cc, load-path.cc,
load-save.cc, ls-mat4.cc, ls-mat5.cc, ls-oct-text.cc, luinc.cc,
max.cc, nproc.cc, oct-hist.cc, oct-map.cc, oct-obj.cc, oct-stream.cc,
ordschur.cc, pinv.cc, pr-output.cc, profiler.cc, psi.cc, quadcc.cc,
qz.cc, rand.cc, strfind.cc, strfns.cc, sysdep.cc, toplev.cc, tril.cc,
typecast.cc, urlwrite.cc, utils.cc, variables.cc: Eliminate return
statements after calls to error.
author | John W. Eaton <jwe@octave.org> |
---|---|
date | Wed, 09 Dec 2015 14:00:43 -0500 |
parents | e3c0fee87493 |
children | ec532a439c6f |
line wrap: on
line source
/* Copyright (C) 2013-2015 Michael Goffioul This file is part of Octave. Octave 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. Octave 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 Octave; see the file COPYING. If not, see <http://www.gnu.org/licenses/>. */ %option prefix = "octave_tex_" %option noyywrap %option reentrant %option bison-bridge %option noyyalloc %option noyyrealloc %option noyyfree %top { #ifdef HAVE_CONFIG_H #include <config.h> #endif } %x NUM_MODE %x MAYBE_NUM_MODE %{ // The generated code may include unistd.h. We need that to happen // before defining isatty to be prefixed with the gnulib namespace // identifier. #include <sys/types.h> #include <unistd.h> #include "txt-eng.h" #include "oct-tex-parser.h" // FIXME: with bison 3.x, OCTAVE_TEX_STYPE appears in the generated // oct-parse.h file, but there is no definition for YYSTYPE, which is // needed by the code that is generated by flex. I can't seem to find // a way to tell flex to use OCTAVE_TEX_STYPE instead of YYSTYPE in // the code it generates, or to tell bison to provide the definition // of YYSTYPE in the generated oct-parse.h file. #if defined (OCTAVE_TEX_STYPE_IS_DECLARED) && ! defined YYSTYPE #define YYSTYPE OCTAVE_TEX_STYPE #endif #if defined (GNULIB_NAMESPACE) // Calls to the following functions appear in the generated output // from flex without the namespace tag. Redefine them so we will use // them via the gnulib namespace. #define fprintf GNULIB_NAMESPACE::fprintf #define fread GNULIB_NAMESPACE::fread #define fwrite GNULIB_NAMESPACE::fwrite #define getc GNULIB_NAMESPACE::getc #define isatty GNULIB_NAMESPACE::isatty #define malloc GNULIB_NAMESPACE::malloc #define realloc GNULIB_NAMESPACE::realloc #endif %} D [0-9] NUM (({D}+\.?{D}*)|(\.{D}+)) %% %{ // Numeric values. %} <NUM_MODE>{NUM} { int nread = sscanf (yytext, "%lf", &(yylval->num)); if (nread == 1) return NUM; } <NUM_MODE>[ \t]+ { } <NUM_MODE>"\n"|. { yyless (0); BEGIN (INITIAL); } <MAYBE_NUM_MODE>"{" { BEGIN (NUM_MODE); return START; } <MAYBE_NUM_MODE>"\n"|. { yyless (0); BEGIN (INITIAL); } %{ // Simple commands. %} "\\bf" { return BF; } "\\it" { return IT; } "\\sl" { return SL; } "\\rm" { return RM; } %{ // Generic font commands. %} "\\fontname" { return FONTNAME; } "\\fontsize" { BEGIN (MAYBE_NUM_MODE); return FONTSIZE; } "\\color[rgb]" { BEGIN (MAYBE_NUM_MODE); return COLOR_RGB; } "\\color" { return COLOR; } %{ // Special characters. %} "{" { return START; } "}" { return END; } "^" { return SUPER; } "_" { return SUB; } "\\{" | "\\}" | "\\^" | "\\_" | "\\\\" { yylval->ch = yytext[1]; return CH; } %{ // Symbols. %} @SYMBOL_RULES@ %{ // Generic character. %} "\n" | . { yylval->ch = yytext[0]; return CH; } %% void * octave_tex_alloc (yy_size_t size, yyscan_t) { return malloc (size); } void * octave_tex_realloc (void *ptr, yy_size_t size, yyscan_t) { return realloc (ptr, size); } void octave_tex_free (void *ptr, yyscan_t) { free (ptr); } bool text_parser_tex::init_lexer (const std::string& s) { if (! scanner) octave_tex_lex_init (&scanner); if (scanner) { if (buffer_state) { octave_tex__delete_buffer (reinterpret_cast<YY_BUFFER_STATE> (buffer_state), scanner); buffer_state = 0; } buffer_state = octave_tex__scan_bytes (s.data (), s.length (), scanner); } return (scanner && buffer_state); } void text_parser_tex::destroy_lexer (void) { if (buffer_state) { octave_tex__delete_buffer (reinterpret_cast<YY_BUFFER_STATE> (buffer_state), scanner); buffer_state = 0; } if (scanner) { octave_tex_lex_destroy (scanner); scanner = 0; } }