]> git.saurik.com Git - bison.git/blobdiff - src/bison.c++
* src/bison.simple, src/bison.hairy, src/bison.c++: Move to...
[bison.git] / src / bison.c++
diff --git a/src/bison.c++ b/src/bison.c++
deleted file mode 100644 (file)
index f996e47..0000000
+++ /dev/null
@@ -1,523 +0,0 @@
-%%{section} %%{output-prefix} %%{output-infix} %%".hh"
-/* -*- C++ -*- */
-
-/* A Bison parser, made from %%filename,
-   by GNU bison %%version.  */
-
-/* Skeleton output parser for bison,
-   Copyright 1984, 1989, 1990, 2000, 2001 Free Software Foundation, Inc.
-
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 2, or (at your option)
-   any later version.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; if not, write to the Free Software
-   Foundation, Inc., 59 Temple Place - Suite 330,
-   Boston, MA 02111-1307, USA.  */
-
-/* As a special exception, when this file is copied by Bison into a
-   Bison output file, you may use that output file without restriction.
-   This special exception was added by the Free Software Foundation
-   in version 1.24 of Bison.  */
-
-#include "stack.hh"
-/* #include "parser.hh" */
-#include "location.hh"
-
-namespace yy
-{
-  class %%{name};
-  template < typename P >
-  struct Traits
-  {
-  };
-
-  template < >
-  struct Traits< %%{name} >
-  {
-    typedef int       StateType;
-    typedef %%{stype} SemanticType;
-    typedef Location  LocationType;
-  };
-}
-
-%%{prologue}
-
-namespace yy
-{
-  class %%{name}
-  {
-  public:
-    
-    typedef Traits< %%{name} >::StateType StateType;
-    typedef Traits< %%{name} >::SemanticType SemanticType;
-    typedef Traits< %%{name} >::LocationType LocationType;
-
-    typedef Stack< StateType >    StateStack;
-    typedef Stack< SemanticType > SemanticStack;
-    typedef Stack< LocationType > LocationStack;
-
-    %%{name} () : debug (1)
-    {
-      looka = empty;
-    }
-
-    virtual int parse ();
-
-  private:
-    
-    /* Call to lexical analyser.  */
-    virtual 
-    void 
-    lex () 
-    { 
-      looka = yylex (&value);
-    }
-
-    /* Stacks.  */
-    StateStack    state_stack;
-    SemanticStack semantic_stack;
-    LocationStack location_stack;
-
-    /* Tables.  */
-    static const short pact_[];
-    static const short defact_[];
-    static const short pgoto_[];
-    static const short defgoto_[];
-    static const short table_[];
-    static const short check_[];
-    static const short line_[];
-    static const short r1_[];
-    static const short r2_[];
-    static const char* const name_[];
-
-    /* More tables, for debugging.  */
-    /* FIXME: These tables should not be printed when not in debug 
-       mode.  %%ifdef?  */
-    static const short rhs_[];
-    static const short prhs_[];
-    static const short rline_[];
-
-    /* Even more tables.  */
-    static inline char translate (int token);
-
-    /* Eof and empty.  */
-    static const int eof;
-    static const int empty;
-
-    /* State.  */
-    int n;
-    int len;
-    int debug;
-    int state;
-    
-    /* Lookahead.  */
-    int looka;
-    int ilooka;
-    
-    /* @$ and $$.  */
-    SemanticType value;
-    LocationType location;
-  };
-}
-
-%%{section} %%{output-prefix} %%{output-infix} %%".cc"
-#include "%%{output-prefix}%%{output-infix}.hh"
-
-/* Enable debugging if requested.  */
-#if %%{debug}
-
-# include <cstdio>
-# define YYFPRINTF std::fprintf
-
-# define YYDPRINTF(Args)                       \
-do {                                           \
-  if (debug)                                   \
-    YYFPRINTF Args;                            \
-} while (0)
-/* Nonzero means print parse trace. [The following comment makes no
-   sense to me.  Could someone clarify it?  --akim] Since this is
-   uninitialized, it does not stop multiple parsers from coexisting.
-   */
-int yydebug;
-#else /* !YYDEBUG */
-# define YYDPRINTF(Args)
-#endif /* !YYDEBUG */
-
-/* Tokens.  */
-%%{tokendef}
-
-int
-yy::%%{name}::parse ()
-{
-  /* Initialize stack.  */
-  state_stack = StateStack (0);
-  semantic_stack = SemanticStack (1);
-  location_stack = LocationStack (1);
-
-  /* Reserve initial space.  The C parser needed that, but is it really
-     useful here?  */
-  state_stack.reserve (%%{initdepth});
-  semantic_stack.reserve (%%{initdepth});
-  location_stack.reserve (%%{initdepth});
-
-  /* Start.  */
-  state = 0;
-  YYDPRINTF ((stderr, "Starting parse\n"));
-
-  /* New state.  */
- yynewstate:
-  state_stack.push (state);
-  YYDPRINTF ((stderr, "Entering state %d\n", state));
-
-  /* Backup.  */
- yybackup:
-
-  /* Try to take a decision without lookahead.  */
-  n = pact_[state];
-  if (n == %%{flag})
-    goto yydefault;
-
-  /* Read a lookahead token.  */
-  if (looka == empty)
-    {
-      YYDPRINTF ((stderr, "Reading a token: "));
-      lex ();
-    }
-
-  /* Convert token to internal form.  */
-  if (looka <= 0)
-    {
-      looka = eof;
-      ilooka = 0;
-      YYDPRINTF ((stderr, "Now at end of input.\n"));
-    }
-  else
-    {
-      ilooka = translate (looka);
-#if %%{debug}
-      YYFPRINTF (stderr, "Next token is %d (%s", looka, name_[ilooka]);
-      YYFPRINTF (stderr, ")\n");
-#endif
-    }
-
-  n += ilooka;
-  if (n < 0 || n > %%{last} || check_[n] != ilooka)
-    goto yydefault;
-
-  /* Reduce or error.  */
-  n = table_[n];
-  if (n < 0)
-    {
-      if (n == %%{flag})
-       goto yyerrlab;
-      else
-       {
-         n = -n;
-         goto yyreduce;
-       }
-    }
-  else if (n == 0)
-    goto yyerrlab;
-  
-  /* Accept?  */
-  if (n == %%{final})
-    goto yyacceptlab;
-
-  /* Shift the lookahead token.  */
-  YYDPRINTF ((stderr, "Shifting token %d (%s), ", looka, name_[ilooka]));
-
-  /* Discard the token being shifted unless it is eof.  */
-  if (looka != eof)
-    looka = empty;
-
-  semantic_stack.push (value);
-  location_stack.push (location);
-  state = n;
-  goto yynewstate;
-
-  /* Default action.  */
- yydefault:
-  n = defact_[state];
-  if (n == 0)
-    goto yyerrlab;
-
-  /* Reduce.  */
- yyreduce:
-  len = r2_[n];
-  value = semantic_stack[1 - len];
-  location = location_stack[1 - len];
-
-#if %%{debug}
-  if (debug)
-    {
-      YYFPRINTF (stderr, "Reducing via rule %d (line %d), ", n - 1, rline_[n]);
-      for (unsigned i = prhs_[n];
-          rhs_[i] >= 0; ++i)
-       YYFPRINTF (stderr, "%s ", name_[rhs_[i]]);
-      YYFPRINTF (stderr, "-> %s\n", name_[r1_[n]]);
-    }
-#endif
-  
-  {
-    SemanticType& yyval (value);
-    SemanticStack& yyvsp (semantic_stack);
-
-    switch (n)
-      {
-       %%{actions}
-      }
-  }
-  
-  state_stack.pop (len);
-  semantic_stack.pop (len);
-  location_stack.pop (len);
-
-#if %%{debug}
-  if (debug)
-    {
-      YYFPRINTF (stderr, "state stack now");
-      for (StateStack::ConstIterator i = state_stack.begin (); 
-          i != state_stack.end (); ++i)
-       YYFPRINTF (stderr, " %d", *i);
-      YYFPRINTF (stderr, "\n");
-    }
-#endif
-  
-  semantic_stack.push (value);
-  location_stack.push (location);
-
-  /* Shift the result of the reduction.  */
-  n = r1_[n];
-  state = pgoto_[n - %%{ntokens}] + state_stack[0];
-  if (state >= 0 && state <= %%{last} && check_[state] == state_stack[0])
-    state = table_[state];
-  else
-    state = defgoto_[n - %%{ntokens}];
-  goto yynewstate;
-
-  /* Report and recover from errors.  This is very incomplete.  */
- yyerrlab:
-  std::cerr << "Parse error." << std::endl; // FIXME: Need something like yyerror?
-  return 1;
-  
-  /* Accept.  */
- yyacceptlab:
-  return 0;
-}
-
-/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
-   STATE-NUM.  */
-const short 
-yy::%%{name}::pact_[] =
-{
-  %%{pact}
-};
-
-/* YYDEFACT[S] -- default rule to reduce with in state S when YYTABLE
-   doesn't specify something else to do.  Zero means the default is an
-   error.  */
-const short 
-yy::%%{name}::defact_[] =
-{
-  %%{defact}
-};
-
-/* YYPGOTO[NTERM-NUM].  */
-const short 
-yy::%%{name}::pgoto_[] =
-{
-  %%{pgoto}
-};
-
-/* YYDEFGOTO[NTERM-NUM].  */
-const short 
-yy::%%{name}::defgoto_[] =
-{
-  %%{defgoto}
-};
-
-/* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
-   positive, shift that token.  If negative, reduce the rule which
-   number is the opposite.  If zero, do what YYDEFACT says.  */
-const short 
-yy::%%{name}::table_[] =
-{
-  %%{table}
-};
-
-/* YYCHECK.  */
-const short 
-yy::%%{name}::check_[] =
-{
-  %%{check}
-};
-
-/* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
-const short
-yy::%%{name}::line_[] =
-{
-  %%{line}
-};
-
-/*YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
-const short 
-yy::%%{name}::r1_[] =
-{
-  %%{r1}
-};
-
-/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
-const short 
-yy::%%{name}::r2_[] =
-{
-  %%{r2}
-};
-
-/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
-   First, the terminals, then, starting at YYNTOKENS, nonterminals. */
-const char*
-const yy::%%{name}::name_[] =
-{
-  %%{tname}
-};
-
-/* YYRHS -- A `-1'-separated list of the rules' RHS. */
-const short 
-yy::%%{name}::rhs_[] =
-{
-  %%{rhs}
-};
-
-/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
-   YYRHS.  */
-const short 
-yy::%%{name}::prhs_[] =
-{
-  %%{prhs}
-};
-
-/* YYRLINE[YYN] -- Source line where rule number YYN was defined.  */
-const short 
-yy::%%{name}::rline_[] =
-{
-  %%{rline}
-};
-
-/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
-char
-yy::%%{name}::translate (int token)
-{
-  static 
-  const char 
-  translate_[] =
-  {
-    %%{translate}
-  };
-  return ((unsigned)(token) <= %%{maxtok} ? translate_[token] : %%{nsym});
-}
-
-const int yy::%%{name}::eof = 0;
-const int yy::%%{name}::empty = -2;
-
-%%{epilogue}
-
-%%{section} %%"stack.hh"
-#ifndef BISON_STACK_HH
-# define BISON_STACK_HH
-
-#include <vector>
-
-namespace yy
-{
-  template < class T, class S = std::vector< T > >
-  class Stack
-  {
-  public:
-
-    typedef typename S::iterator Iterator;
-    typedef typename S::const_iterator ConstIterator;
-
-    Stack () : seq_ ()
-    {
-    }
-
-    Stack (unsigned n) : seq_ (n)
-    {
-    }
-
-    inline
-    T&
-    operator [] (int index)
-    {
-      return seq_[seq_.size () - 1 + index];
-    }
-
-    inline
-    const T&
-    operator [] (int index) const
-    {
-      return seq_[seq_.size () - 1 + index];
-    }
-
-    inline
-    void
-    push (const T& t)
-    {
-      seq_.push_back (t);
-    }
-
-    inline
-    void
-    pop (unsigned n = 1)
-    {
-      for (; n; --n)
-       seq_.pop_back ();
-    }
-    
-    inline
-    void
-    reserve (unsigned n)
-    {
-      seq_.reserve (n);
-    }
-
-    inline ConstIterator begin () const { return seq_.begin (); }
-    inline ConstIterator end () const { return seq_.end (); }
-
-  private:
-
-    S seq_;
-  };
-}
-
-#endif // not BISON_STACK_HH
-
-%%{section} %%"location.hh"
-#ifndef BISON_LOCATION_HH
-# define BISON_LOCATION_HH
-
-namespace yy
-{
-  struct Position
-  {
-    int line;
-    int column;
-  };
-
-  struct Location
-  {
-    Position first;
-    Position last;
-  };
-}
-
-#endif // not BISON_LOCATION_HH