- first experiments with QJson serialization
[buliscores] / qjson / src / json_parser.cc
diff --git a/qjson/src/json_parser.cc b/qjson/src/json_parser.cc
deleted file mode 100644 (file)
index 620e135..0000000
+++ /dev/null
@@ -1,1116 +0,0 @@
-/* A Bison parser, made by GNU Bison 2.3.  */
-
-/* Skeleton implementation for Bison LALR(1) parsers in C++
-
-   Copyright (C) 2002, 2003, 2004, 2005, 2006 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., 51 Franklin Street, Fifth Floor,
-   Boston, MA 02110-1301, USA.  */
-
-/* As a special exception, you may create a larger work that contains
-   part or all of the Bison parser skeleton and distribute that work
-   under terms of your choice, so long as that work isn't itself a
-   parser generator using the skeleton or a modified version thereof
-   as a parser skeleton.  Alternatively, if you modify or redistribute
-   the parser skeleton itself, you may (at your option) remove this
-   special exception, which will cause the skeleton and the resulting
-   Bison output files to be licensed under the GNU General Public
-   License without this special exception.
-
-   This special exception was added by the Free Software Foundation in
-   version 2.2 of Bison.  */
-
-
-#include "json_parser.hh"
-
-/* User implementation prologue.  */
-
-
-/* Line 317 of lalr1.cc.  */
-#line 43 "json_parser.cc"
-
-#ifndef YY_
-# if YYENABLE_NLS
-#  if ENABLE_NLS
-#   include <libintl.h> /* FIXME: INFRINGES ON USER NAME SPACE */
-#   define YY_(msgid) dgettext ("bison-runtime", msgid)
-#  endif
-# endif
-# ifndef YY_
-#  define YY_(msgid) msgid
-# endif
-#endif
-
-/* Suppress unused-variable warnings by "using" E.  */
-#define YYUSE(e) ((void) (e))
-
-/* A pseudo ostream that takes yydebug_ into account.  */
-# define YYCDEBUG                                                      \
-  for (bool yydebugcond_ = yydebug_; yydebugcond_; yydebugcond_ = false)       \
-    (*yycdebug_)
-
-/* Enable debugging if requested.  */
-#if YYDEBUG
-
-# define YY_SYMBOL_PRINT(Title, Type, Value, Location) \
-do {                                                   \
-  if (yydebug_)                                                \
-    {                                                  \
-      *yycdebug_ << Title << ' ';                      \
-      yy_symbol_print_ ((Type), (Value), (Location));  \
-      *yycdebug_ << std::endl;                         \
-    }                                                  \
-} while (false)
-
-# define YY_REDUCE_PRINT(Rule)         \
-do {                                   \
-  if (yydebug_)                                \
-    yy_reduce_print_ (Rule);           \
-} while (false)
-
-# define YY_STACK_PRINT()              \
-do {                                   \
-  if (yydebug_)                                \
-    yystack_print_ ();                 \
-} while (false)
-
-#else /* !YYDEBUG */
-
-# define YY_SYMBOL_PRINT(Title, Type, Value, Location)
-# define YY_REDUCE_PRINT(Rule)
-# define YY_STACK_PRINT()
-
-#endif /* !YYDEBUG */
-
-#define YYACCEPT       goto yyacceptlab
-#define YYABORT                goto yyabortlab
-#define YYERROR                goto yyerrorlab
-
-namespace yy
-{
-#if YYERROR_VERBOSE
-
-  /* Return YYSTR after stripping away unnecessary quotes and
-     backslashes, so that it's suitable for yyerror.  The heuristic is
-     that double-quoting is unnecessary unless the string contains an
-     apostrophe, a comma, or backslash (other than backslash-backslash).
-     YYSTR is taken from yytname.  */
-  std::string
-  json_parser::yytnamerr_ (const char *yystr)
-  {
-    if (*yystr == '"')
-      {
-        std::string yyr = "";
-        char const *yyp = yystr;
-
-        for (;;)
-          switch (*++yyp)
-            {
-            case '\'':
-            case ',':
-              goto do_not_strip_quotes;
-
-            case '\\':
-              if (*++yyp != '\\')
-                goto do_not_strip_quotes;
-              /* Fall through.  */
-            default:
-              yyr += *yyp;
-              break;
-
-            case '"':
-              return yyr;
-            }
-      do_not_strip_quotes: ;
-      }
-
-    return yystr;
-  }
-
-#endif
-
-  /// Build a parser object.
-  json_parser::json_parser (QJson::ParserPrivate* driver_yyarg)
-    : yydebug_ (false),
-      yycdebug_ (&std::cerr),
-      driver (driver_yyarg)
-  {
-  }
-
-  json_parser::~json_parser ()
-  {
-  }
-
-#if YYDEBUG
-  /*--------------------------------.
-  | Print this symbol on YYOUTPUT.  |
-  `--------------------------------*/
-
-  inline void
-  json_parser::yy_symbol_value_print_ (int yytype,
-                          const semantic_type* yyvaluep, const location_type* yylocationp)
-  {
-    YYUSE (yylocationp);
-    YYUSE (yyvaluep);
-    switch (yytype)
-      {
-         default:
-         break;
-      }
-  }
-
-
-  void
-  json_parser::yy_symbol_print_ (int yytype,
-                          const semantic_type* yyvaluep, const location_type* yylocationp)
-  {
-    *yycdebug_ << (yytype < yyntokens_ ? "token" : "nterm")
-              << ' ' << yytname_[yytype] << " ("
-              << *yylocationp << ": ";
-    yy_symbol_value_print_ (yytype, yyvaluep, yylocationp);
-    *yycdebug_ << ')';
-  }
-#endif /* ! YYDEBUG */
-
-  void
-  json_parser::yydestruct_ (const char* yymsg,
-                          int yytype, semantic_type* yyvaluep, location_type* yylocationp)
-  {
-    YYUSE (yylocationp);
-    YYUSE (yymsg);
-    YYUSE (yyvaluep);
-
-    YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
-
-    switch (yytype)
-      {
-  
-       default:
-         break;
-      }
-  }
-
-  void
-  json_parser::yypop_ (unsigned int n)
-  {
-    yystate_stack_.pop (n);
-    yysemantic_stack_.pop (n);
-    yylocation_stack_.pop (n);
-  }
-
-  std::ostream&
-  json_parser::debug_stream () const
-  {
-    return *yycdebug_;
-  }
-
-  void
-  json_parser::set_debug_stream (std::ostream& o)
-  {
-    yycdebug_ = &o;
-  }
-
-
-  json_parser::debug_level_type
-  json_parser::debug_level () const
-  {
-    return yydebug_;
-  }
-
-  void
-  json_parser::set_debug_level (debug_level_type l)
-  {
-    yydebug_ = l;
-  }
-
-
-  int
-  json_parser::parse ()
-  {
-    /// Look-ahead and look-ahead in internal form.
-    int yychar = yyempty_;
-    int yytoken = 0;
-
-    /* State.  */
-    int yyn;
-    int yylen = 0;
-    int yystate = 0;
-
-    /* Error handling.  */
-    int yynerrs_ = 0;
-    int yyerrstatus_ = 0;
-
-    /// Semantic value of the look-ahead.
-    semantic_type yylval;
-    /// Location of the look-ahead.
-    location_type yylloc;
-    /// The locations where the error started and ended.
-    location yyerror_range[2];
-
-    /// $$.
-    semantic_type yyval;
-    /// @$.
-    location_type yyloc;
-
-    int yyresult;
-
-    YYCDEBUG << "Starting parse" << std::endl;
-
-
-    /* Initialize the stacks.  The initial state will be pushed in
-       yynewstate, since the latter expects the semantical and the
-       location values to have been already stored, initialize these
-       stacks with a primary value.  */
-    yystate_stack_ = state_stack_type (0);
-    yysemantic_stack_ = semantic_stack_type (0);
-    yylocation_stack_ = location_stack_type (0);
-    yysemantic_stack_.push (yylval);
-    yylocation_stack_.push (yylloc);
-
-    /* New state.  */
-  yynewstate:
-    yystate_stack_.push (yystate);
-    YYCDEBUG << "Entering state " << yystate << std::endl;
-    goto yybackup;
-
-    /* Backup.  */
-  yybackup:
-
-    /* Try to take a decision without look-ahead.  */
-    yyn = yypact_[yystate];
-    if (yyn == yypact_ninf_)
-      goto yydefault;
-
-    /* Read a look-ahead token.  */
-    if (yychar == yyempty_)
-      {
-       YYCDEBUG << "Reading a token: ";
-       yychar = yylex (&yylval, &yylloc, driver);
-      }
-
-
-    /* Convert token to internal form.  */
-    if (yychar <= yyeof_)
-      {
-       yychar = yytoken = yyeof_;
-       YYCDEBUG << "Now at end of input." << std::endl;
-      }
-    else
-      {
-       yytoken = yytranslate_ (yychar);
-       YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
-      }
-
-    /* If the proper action on seeing token YYTOKEN is to reduce or to
-       detect an error, take that action.  */
-    yyn += yytoken;
-    if (yyn < 0 || yylast_ < yyn || yycheck_[yyn] != yytoken)
-      goto yydefault;
-
-    /* Reduce or error.  */
-    yyn = yytable_[yyn];
-    if (yyn <= 0)
-      {
-       if (yyn == 0 || yyn == yytable_ninf_)
-       goto yyerrlab;
-       yyn = -yyn;
-       goto yyreduce;
-      }
-
-    /* Accept?  */
-    if (yyn == yyfinal_)
-      goto yyacceptlab;
-
-    /* Shift the look-ahead token.  */
-    YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
-
-    /* Discard the token being shifted unless it is eof.  */
-    if (yychar != yyeof_)
-      yychar = yyempty_;
-
-    yysemantic_stack_.push (yylval);
-    yylocation_stack_.push (yylloc);
-
-    /* Count tokens shifted since error; after three, turn off error
-       status.  */
-    if (yyerrstatus_)
-      --yyerrstatus_;
-
-    yystate = yyn;
-    goto yynewstate;
-
-  /*-----------------------------------------------------------.
-  | yydefault -- do the default action for the current state.  |
-  `-----------------------------------------------------------*/
-  yydefault:
-    yyn = yydefact_[yystate];
-    if (yyn == 0)
-      goto yyerrlab;
-    goto yyreduce;
-
-  /*-----------------------------.
-  | yyreduce -- Do a reduction.  |
-  `-----------------------------*/
-  yyreduce:
-    yylen = yyr2_[yyn];
-    /* If YYLEN is nonzero, implement the default value of the action:
-       `$$ = $1'.  Otherwise, use the top of the stack.
-
-       Otherwise, the following line sets YYVAL to garbage.
-       This behavior is undocumented and Bison
-       users should not rely upon it.  */
-    if (yylen)
-      yyval = yysemantic_stack_[yylen - 1];
-    else
-      yyval = yysemantic_stack_[0];
-
-    {
-      slice<location_type, location_stack_type> slice (yylocation_stack_, yylen);
-      YYLLOC_DEFAULT (yyloc, slice, yylen);
-    }
-    YY_REDUCE_PRINT (yyn);
-    switch (yyn)
-      {
-         case 2:
-#line 84 "json_parser.yy"
-    {
-              driver->m_result = (yysemantic_stack_[(1) - (1)]);
-              qjsonDebug() << "json_parser - parsing finished";
-            ;}
-    break;
-
-  case 3:
-#line 89 "json_parser.yy"
-    { (yyval) = (yysemantic_stack_[(1) - (1)]); ;}
-    break;
-
-  case 4:
-#line 91 "json_parser.yy"
-    {
-            qCritical()<< "json_parser - syntax error found, "
-                    << "forcing abort, Line" << (yyloc).begin.line << "Column" << (yyloc).begin.column;
-            YYABORT;
-          ;}
-    break;
-
-  case 6:
-#line 98 "json_parser.yy"
-    { (yyval) = (yysemantic_stack_[(3) - (2)]); ;}
-    break;
-
-  case 7:
-#line 100 "json_parser.yy"
-    { (yyval) = QVariant (QVariantMap()); ;}
-    break;
-
-  case 8:
-#line 101 "json_parser.yy"
-    {
-            QVariantMap members = (yysemantic_stack_[(2) - (2)]).toMap();
-            (yysemantic_stack_[(2) - (2)]) = QVariant(); // Allow reuse of map
-            (yyval) = QVariant(members.unite ((yysemantic_stack_[(2) - (1)]).toMap()));
-          ;}
-    break;
-
-  case 9:
-#line 107 "json_parser.yy"
-    { (yyval) = QVariant (QVariantMap()); ;}
-    break;
-
-  case 10:
-#line 108 "json_parser.yy"
-    {
-          QVariantMap members = (yysemantic_stack_[(3) - (3)]).toMap();
-          (yysemantic_stack_[(3) - (3)]) = QVariant(); // Allow reuse of map
-          (yyval) = QVariant(members.unite ((yysemantic_stack_[(3) - (2)]).toMap()));
-          ;}
-    break;
-
-  case 11:
-#line 114 "json_parser.yy"
-    {
-            QVariantMap pair;
-            pair.insert ((yysemantic_stack_[(3) - (1)]).toString(), QVariant((yysemantic_stack_[(3) - (3)])));
-            (yyval) = QVariant (pair);
-          ;}
-    break;
-
-  case 12:
-#line 120 "json_parser.yy"
-    { (yyval) = (yysemantic_stack_[(3) - (2)]); ;}
-    break;
-
-  case 13:
-#line 122 "json_parser.yy"
-    { (yyval) = QVariant (QVariantList()); ;}
-    break;
-
-  case 14:
-#line 123 "json_parser.yy"
-    {
-          QVariantList members = (yysemantic_stack_[(2) - (2)]).toList();
-          (yysemantic_stack_[(2) - (2)]) = QVariant(); // Allow reuse of list
-          members.prepend ((yysemantic_stack_[(2) - (1)]));
-          (yyval) = QVariant(members);
-        ;}
-    break;
-
-  case 15:
-#line 130 "json_parser.yy"
-    { (yyval) = QVariant (QVariantList()); ;}
-    break;
-
-  case 16:
-#line 131 "json_parser.yy"
-    {
-            QVariantList members = (yysemantic_stack_[(3) - (3)]).toList();
-            (yysemantic_stack_[(3) - (3)]) = QVariant(); // Allow reuse of list
-            members.prepend ((yysemantic_stack_[(3) - (2)]));
-            (yyval) = QVariant(members);
-          ;}
-    break;
-
-  case 17:
-#line 138 "json_parser.yy"
-    { (yyval) = (yysemantic_stack_[(1) - (1)]); ;}
-    break;
-
-  case 18:
-#line 139 "json_parser.yy"
-    { (yyval) = (yysemantic_stack_[(1) - (1)]); ;}
-    break;
-
-  case 19:
-#line 140 "json_parser.yy"
-    { (yyval) = (yysemantic_stack_[(1) - (1)]); ;}
-    break;
-
-  case 20:
-#line 141 "json_parser.yy"
-    { (yyval) = (yysemantic_stack_[(1) - (1)]); ;}
-    break;
-
-  case 21:
-#line 142 "json_parser.yy"
-    { (yyval) = QVariant (true); ;}
-    break;
-
-  case 22:
-#line 143 "json_parser.yy"
-    { (yyval) = QVariant (false); ;}
-    break;
-
-  case 23:
-#line 144 "json_parser.yy"
-    {
-          QVariant null_variant;
-          (yyval) = null_variant;
-        ;}
-    break;
-
-  case 24:
-#line 149 "json_parser.yy"
-    { (yyval) = QVariant(QVariant::Double); (yyval).setValue( -std::numeric_limits<double>::infinity() ); ;}
-    break;
-
-  case 25:
-#line 150 "json_parser.yy"
-    { (yyval) = QVariant(QVariant::Double); (yyval).setValue( std::numeric_limits<double>::infinity() ); ;}
-    break;
-
-  case 26:
-#line 151 "json_parser.yy"
-    { (yyval) = QVariant(QVariant::Double); (yyval).setValue( std::numeric_limits<double>::quiet_NaN() ); ;}
-    break;
-
-  case 28:
-#line 154 "json_parser.yy"
-    {
-            if ((yysemantic_stack_[(1) - (1)]).toByteArray().startsWith('-')) {
-              (yyval) = QVariant (QVariant::LongLong);
-              (yyval).setValue((yysemantic_stack_[(1) - (1)]).toLongLong());
-            }
-            else {
-              (yyval) = QVariant (QVariant::ULongLong);
-              (yyval).setValue((yysemantic_stack_[(1) - (1)]).toULongLong());
-            }
-          ;}
-    break;
-
-  case 29:
-#line 164 "json_parser.yy"
-    {
-            const QByteArray value = (yysemantic_stack_[(2) - (1)]).toByteArray() + (yysemantic_stack_[(2) - (2)]).toByteArray();
-            (yyval) = QVariant(QVariant::Double);
-            (yyval).setValue(value.toDouble());
-          ;}
-    break;
-
-  case 30:
-#line 169 "json_parser.yy"
-    { (yyval) = QVariant ((yysemantic_stack_[(2) - (1)]).toByteArray() + (yysemantic_stack_[(2) - (2)]).toByteArray()); ;}
-    break;
-
-  case 31:
-#line 170 "json_parser.yy"
-    {
-            const QByteArray value = (yysemantic_stack_[(3) - (1)]).toByteArray() + (yysemantic_stack_[(3) - (2)]).toByteArray() + (yysemantic_stack_[(3) - (3)]).toByteArray();
-            (yyval) = QVariant (value);
-          ;}
-    break;
-
-  case 32:
-#line 175 "json_parser.yy"
-    { (yyval) = QVariant ((yysemantic_stack_[(2) - (1)]).toByteArray() + (yysemantic_stack_[(2) - (2)]).toByteArray()); ;}
-    break;
-
-  case 33:
-#line 176 "json_parser.yy"
-    { (yyval) = QVariant (QByteArray("-") + (yysemantic_stack_[(3) - (2)]).toByteArray() + (yysemantic_stack_[(3) - (3)]).toByteArray()); ;}
-    break;
-
-  case 34:
-#line 178 "json_parser.yy"
-    { (yyval) = QVariant (QByteArray("")); ;}
-    break;
-
-  case 35:
-#line 179 "json_parser.yy"
-    {
-          (yyval) = QVariant((yysemantic_stack_[(2) - (1)]).toByteArray() + (yysemantic_stack_[(2) - (2)]).toByteArray());
-        ;}
-    break;
-
-  case 36:
-#line 183 "json_parser.yy"
-    {
-          (yyval) = QVariant(QByteArray(".") + (yysemantic_stack_[(2) - (2)]).toByteArray());
-        ;}
-    break;
-
-  case 37:
-#line 187 "json_parser.yy"
-    { (yyval) = QVariant((yysemantic_stack_[(2) - (1)]).toByteArray() + (yysemantic_stack_[(2) - (2)]).toByteArray()); ;}
-    break;
-
-  case 38:
-#line 189 "json_parser.yy"
-    { (yyval) = (yysemantic_stack_[(3) - (2)]); ;}
-    break;
-
-  case 39:
-#line 191 "json_parser.yy"
-    { (yyval) = QVariant (QString(QLatin1String(""))); ;}
-    break;
-
-  case 40:
-#line 192 "json_parser.yy"
-    {
-                (yyval) = (yysemantic_stack_[(1) - (1)]);
-              ;}
-    break;
-
-
-    /* Line 675 of lalr1.cc.  */
-#line 628 "json_parser.cc"
-       default: break;
-      }
-    YY_SYMBOL_PRINT ("-> $$ =", yyr1_[yyn], &yyval, &yyloc);
-
-    yypop_ (yylen);
-    yylen = 0;
-    YY_STACK_PRINT ();
-
-    yysemantic_stack_.push (yyval);
-    yylocation_stack_.push (yyloc);
-
-    /* Shift the result of the reduction.  */
-    yyn = yyr1_[yyn];
-    yystate = yypgoto_[yyn - yyntokens_] + yystate_stack_[0];
-    if (0 <= yystate && yystate <= yylast_
-       && yycheck_[yystate] == yystate_stack_[0])
-      yystate = yytable_[yystate];
-    else
-      yystate = yydefgoto_[yyn - yyntokens_];
-    goto yynewstate;
-
-  /*------------------------------------.
-  | yyerrlab -- here on detecting error |
-  `------------------------------------*/
-  yyerrlab:
-    /* If not already recovering from an error, report this error.  */
-    if (!yyerrstatus_)
-      {
-       ++yynerrs_;
-       error (yylloc, yysyntax_error_ (yystate, yytoken));
-      }
-
-    yyerror_range[0] = yylloc;
-    if (yyerrstatus_ == 3)
-      {
-       /* If just tried and failed to reuse look-ahead token after an
-        error, discard it.  */
-
-       if (yychar <= yyeof_)
-         {
-         /* Return failure if at end of input.  */
-         if (yychar == yyeof_)
-           YYABORT;
-         }
-       else
-         {
-           yydestruct_ ("Error: discarding", yytoken, &yylval, &yylloc);
-           yychar = yyempty_;
-         }
-      }
-
-    /* Else will try to reuse look-ahead token after shifting the error
-       token.  */
-    goto yyerrlab1;
-
-
-  /*---------------------------------------------------.
-  | yyerrorlab -- error raised explicitly by YYERROR.  |
-  `---------------------------------------------------*/
-  yyerrorlab:
-
-    /* Pacify compilers like GCC when the user code never invokes
-       YYERROR and the label yyerrorlab therefore never appears in user
-       code.  */
-    if (false)
-      goto yyerrorlab;
-
-    yyerror_range[0] = yylocation_stack_[yylen - 1];
-    /* Do not reclaim the symbols of the rule which action triggered
-       this YYERROR.  */
-    yypop_ (yylen);
-    yylen = 0;
-    yystate = yystate_stack_[0];
-    goto yyerrlab1;
-
-  /*-------------------------------------------------------------.
-  | yyerrlab1 -- common code for both syntax error and YYERROR.  |
-  `-------------------------------------------------------------*/
-  yyerrlab1:
-    yyerrstatus_ = 3;  /* Each real token shifted decrements this.  */
-
-    for (;;)
-      {
-       yyn = yypact_[yystate];
-       if (yyn != yypact_ninf_)
-       {
-         yyn += yyterror_;
-         if (0 <= yyn && yyn <= yylast_ && yycheck_[yyn] == yyterror_)
-           {
-             yyn = yytable_[yyn];
-             if (0 < yyn)
-               break;
-           }
-       }
-
-       /* Pop the current state because it cannot handle the error token.  */
-       if (yystate_stack_.height () == 1)
-       YYABORT;
-
-       yyerror_range[0] = yylocation_stack_[0];
-       yydestruct_ ("Error: popping",
-                    yystos_[yystate],
-                    &yysemantic_stack_[0], &yylocation_stack_[0]);
-       yypop_ ();
-       yystate = yystate_stack_[0];
-       YY_STACK_PRINT ();
-      }
-
-    if (yyn == yyfinal_)
-      goto yyacceptlab;
-
-    yyerror_range[1] = yylloc;
-    // Using YYLLOC is tempting, but would change the location of
-    // the look-ahead.  YYLOC is available though.
-    YYLLOC_DEFAULT (yyloc, (yyerror_range - 1), 2);
-    yysemantic_stack_.push (yylval);
-    yylocation_stack_.push (yyloc);
-
-    /* Shift the error token.  */
-    YY_SYMBOL_PRINT ("Shifting", yystos_[yyn],
-                  &yysemantic_stack_[0], &yylocation_stack_[0]);
-
-    yystate = yyn;
-    goto yynewstate;
-
-    /* Accept.  */
-  yyacceptlab:
-    yyresult = 0;
-    goto yyreturn;
-
-    /* Abort.  */
-  yyabortlab:
-    yyresult = 1;
-    goto yyreturn;
-
-  yyreturn:
-    if (yychar != yyeof_ && yychar != yyempty_)
-      yydestruct_ ("Cleanup: discarding lookahead", yytoken, &yylval, &yylloc);
-
-    /* Do not reclaim the symbols of the rule which action triggered
-       this YYABORT or YYACCEPT.  */
-    yypop_ (yylen);
-    while (yystate_stack_.height () != 1)
-      {
-       yydestruct_ ("Cleanup: popping",
-                  yystos_[yystate_stack_[0]],
-                  &yysemantic_stack_[0],
-                  &yylocation_stack_[0]);
-       yypop_ ();
-      }
-
-    return yyresult;
-  }
-
-  // Generate an error message.
-  std::string
-  json_parser::yysyntax_error_ (int yystate, int tok)
-  {
-    std::string res;
-    YYUSE (yystate);
-#if YYERROR_VERBOSE
-    int yyn = yypact_[yystate];
-    if (yypact_ninf_ < yyn && yyn <= yylast_)
-      {
-       /* Start YYX at -YYN if negative to avoid negative indexes in
-          YYCHECK.  */
-       int yyxbegin = yyn < 0 ? -yyn : 0;
-
-       /* Stay within bounds of both yycheck and yytname.  */
-       int yychecklim = yylast_ - yyn + 1;
-       int yyxend = yychecklim < yyntokens_ ? yychecklim : yyntokens_;
-       int count = 0;
-       for (int x = yyxbegin; x < yyxend; ++x)
-         if (yycheck_[x + yyn] == x && x != yyterror_)
-           ++count;
-
-       // FIXME: This method of building the message is not compatible
-       // with internationalization.  It should work like yacc.c does it.
-       // That is, first build a string that looks like this:
-       // "syntax error, unexpected %s or %s or %s"
-       // Then, invoke YY_ on this string.
-       // Finally, use the string as a format to output
-       // yytname_[tok], etc.
-       // Until this gets fixed, this message appears in English only.
-       res = "syntax error, unexpected ";
-       res += yytnamerr_ (yytname_[tok]);
-       if (count < 5)
-         {
-           count = 0;
-           for (int x = yyxbegin; x < yyxend; ++x)
-             if (yycheck_[x + yyn] == x && x != yyterror_)
-               {
-                 res += (!count++) ? ", expecting " : " or ";
-                 res += yytnamerr_ (yytname_[x]);
-               }
-         }
-      }
-    else
-#endif
-      res = YY_("syntax error");
-    return res;
-  }
-
-
-  /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
-     STATE-NUM.  */
-  const signed char json_parser::yypact_ninf_ = -21;
-  const signed char
-  json_parser::yypact_[] =
-  {
-         3,   -21,   -21,    -6,    31,   -10,     0,   -21,   -21,   -21,
-       6,   -21,   -21,    25,   -21,   -21,   -21,   -21,   -21,   -21,
-      -5,   -21,    22,    19,    21,    23,    24,     0,   -21,     0,
-     -21,   -21,    13,   -21,     0,     0,    29,   -21,   -21,    -6,
-     -21,    31,   -21,    31,   -21,   -21,   -21,   -21,   -21,   -21,
-     -21,    19,   -21,    24,   -21,   -21
-  };
-
-  /* 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 unsigned char
-  json_parser::yydefact_[] =
-  {
-         0,     5,     4,     7,    13,     0,    34,    21,    22,    23,
-      39,    25,    26,     0,     2,    19,    20,     3,    18,    27,
-      28,    17,     0,     9,     0,     0,    15,    34,    24,    34,
-      32,    40,     0,     1,    34,    34,    29,    30,     6,     0,
-       8,     0,    12,     0,    14,    33,    35,    38,    36,    37,
-      31,     9,    11,    15,    10,    16
-  };
-
-  /* YYPGOTO[NTERM-NUM].  */
-  const signed char
-  json_parser::yypgoto_[] =
-  {
-       -21,   -21,   -21,   -21,   -21,   -20,     4,   -21,   -21,   -18,
-      -4,   -21,   -21,   -21,   -14,   -21,    -3,    -1,   -21
-  };
-
-  /* YYDEFGOTO[NTERM-NUM].  */
-  const signed char
-  json_parser::yydefgoto_[] =
-  {
-        -1,    13,    14,    15,    22,    40,    23,    16,    25,    44,
-      17,    18,    19,    20,    30,    36,    37,    21,    32
-  };
-
-  /* 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 signed char json_parser::yytable_ninf_ = -1;
-  const unsigned char
-  json_parser::yytable_[] =
-  {
-        26,    27,    24,     1,     2,    34,     3,    35,     4,    28,
-      10,    29,     5,    45,     6,    46,     7,     8,     9,    10,
-      48,    49,    11,    12,    31,    33,    38,    39,    41,    42,
-      47,    54,    43,    50,     3,    55,     4,    52,    24,    53,
-       5,    35,     6,    51,     7,     8,     9,    10,     0,     0,
-      11,    12
-  };
-
-  /* YYCHECK.  */
-  const signed char
-  json_parser::yycheck_[] =
-  {
-         4,    11,     3,     0,     1,    10,     3,    12,     5,    19,
-      16,    11,     9,    27,    11,    29,    13,    14,    15,    16,
-      34,    35,    19,    20,    18,     0,     4,     8,     7,     6,
-      17,    51,     8,    36,     3,    53,     5,    41,    39,    43,
-       9,    12,    11,    39,    13,    14,    15,    16,    -1,    -1,
-      19,    20
-  };
-
-  /* STOS_[STATE-NUM] -- The (internal number of the) accessing
-     symbol of state STATE-NUM.  */
-  const unsigned char
-  json_parser::yystos_[] =
-  {
-         0,     0,     1,     3,     5,     9,    11,    13,    14,    15,
-      16,    19,    20,    22,    23,    24,    28,    31,    32,    33,
-      34,    38,    25,    27,    38,    29,    31,    11,    19,    11,
-      35,    18,    39,     0,    10,    12,    36,    37,     4,     8,
-      26,     7,     6,     8,    30,    35,    35,    17,    35,    35,
-      37,    27,    31,    31,    26,    30
-  };
-
-#if YYDEBUG
-  /* TOKEN_NUMBER_[YYLEX-NUM] -- Internal symbol number corresponding
-     to YYLEX-NUM.  */
-  const unsigned short int
-  json_parser::yytoken_number_[] =
-  {
-         0,   256,   257,     1,     2,     3,     4,     5,     6,     7,
-       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
-      18
-  };
-#endif
-
-  /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
-  const unsigned char
-  json_parser::yyr1_[] =
-  {
-         0,    21,    22,    23,    23,    23,    24,    25,    25,    26,
-      26,    27,    28,    29,    29,    30,    30,    31,    31,    31,
-      31,    31,    31,    31,    32,    32,    32,    32,    33,    33,
-      33,    33,    34,    34,    35,    35,    36,    37,    38,    39,
-      39
-  };
-
-  /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
-  const unsigned char
-  json_parser::yyr2_[] =
-  {
-         0,     2,     1,     1,     1,     1,     3,     0,     2,     0,
-       3,     3,     3,     0,     2,     0,     3,     1,     1,     1,
-       1,     1,     1,     1,     2,     1,     1,     1,     1,     2,
-       2,     3,     2,     3,     0,     2,     2,     2,     3,     0,
-       1
-  };
-
-#if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE
-  /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
-     First, the terminals, then, starting at \a yyntokens_, nonterminals.  */
-  const char*
-  const json_parser::yytname_[] =
-  {
-    "\"end of file\"", "error", "$undefined", "\"{\"", "\"}\"", "\"[\"",
-  "\"]\"", "\":\"", "\",\"", "\"-\"", "\".\"", "\"digit\"",
-  "\"exponential\"", "\"true\"", "\"false\"", "\"null\"",
-  "\"open quotation mark\"", "\"close quotation mark\"", "\"string\"",
-  "\"Infinity\"", "\"NaN\"", "$accept", "start", "data", "object",
-  "members", "r_members", "pair", "array", "values", "r_values", "value",
-  "special_or_number", "number", "int", "digits", "fract", "exp", "string",
-  "string_arg", 0
-  };
-#endif
-
-#if YYDEBUG
-  /* YYRHS -- A `-1'-separated list of the rules' RHS.  */
-  const json_parser::rhs_number_type
-  json_parser::yyrhs_[] =
-  {
-        22,     0,    -1,    23,    -1,    31,    -1,     1,    -1,     0,
-      -1,     3,    25,     4,    -1,    -1,    27,    26,    -1,    -1,
-       8,    27,    26,    -1,    38,     7,    31,    -1,     5,    29,
-       6,    -1,    -1,    31,    30,    -1,    -1,     8,    31,    30,
-      -1,    38,    -1,    32,    -1,    24,    -1,    28,    -1,    13,
-      -1,    14,    -1,    15,    -1,     9,    19,    -1,    19,    -1,
-      20,    -1,    33,    -1,    34,    -1,    34,    36,    -1,    34,
-      37,    -1,    34,    36,    37,    -1,    11,    35,    -1,     9,
-      11,    35,    -1,    -1,    11,    35,    -1,    10,    35,    -1,
-      12,    35,    -1,    16,    39,    17,    -1,    -1,    18,    -1
-  };
-
-  /* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
-     YYRHS.  */
-  const unsigned char
-  json_parser::yyprhs_[] =
-  {
-         0,     0,     3,     5,     7,     9,    11,    15,    16,    19,
-      20,    24,    28,    32,    33,    36,    37,    41,    43,    45,
-      47,    49,    51,    53,    55,    58,    60,    62,    64,    66,
-      69,    72,    76,    79,    83,    84,    87,    90,    93,    97,
-      98
-  };
-
-  /* YYRLINE[YYN] -- Source line where rule number YYN was defined.  */
-  const unsigned char
-  json_parser::yyrline_[] =
-  {
-         0,    84,    84,    89,    90,    96,    98,   100,   101,   107,
-     108,   114,   120,   122,   123,   130,   131,   138,   139,   140,
-     141,   142,   143,   144,   149,   150,   151,   152,   154,   164,
-     169,   170,   175,   176,   178,   179,   183,   187,   189,   191,
-     192
-  };
-
-  // Print the state stack on the debug stream.
-  void
-  json_parser::yystack_print_ ()
-  {
-    *yycdebug_ << "Stack now";
-    for (state_stack_type::const_iterator i = yystate_stack_.begin ();
-        i != yystate_stack_.end (); ++i)
-      *yycdebug_ << ' ' << *i;
-    *yycdebug_ << std::endl;
-  }
-
-  // Report on the debug stream that the rule \a yyrule is going to be reduced.
-  void
-  json_parser::yy_reduce_print_ (int yyrule)
-  {
-    unsigned int yylno = yyrline_[yyrule];
-    int yynrhs = yyr2_[yyrule];
-    /* Print the symbols being reduced, and their result.  */
-    *yycdebug_ << "Reducing stack by rule " << yyrule - 1
-              << " (line " << yylno << "), ";
-    /* The symbols being reduced.  */
-    for (int yyi = 0; yyi < yynrhs; yyi++)
-      YY_SYMBOL_PRINT ("   $" << yyi + 1 << " =",
-                      yyrhs_[yyprhs_[yyrule] + yyi],
-                      &(yysemantic_stack_[(yynrhs) - (yyi + 1)]),
-                      &(yylocation_stack_[(yynrhs) - (yyi + 1)]));
-  }
-#endif // YYDEBUG
-
-  /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
-  json_parser::token_number_type
-  json_parser::yytranslate_ (int t)
-  {
-    static
-    const token_number_type
-    translate_table[] =
-    {
-           0,     3,     4,     5,     6,     7,     8,     9,    10,    11,
-      12,    13,    14,    15,    16,    17,    18,    19,    20,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     1,     2
-    };
-    if ((unsigned int) t <= yyuser_token_number_max_)
-      return translate_table[t];
-    else
-      return yyundef_token_;
-  }
-
-  const int json_parser::yyeof_ = 0;
-  const int json_parser::yylast_ = 51;
-  const int json_parser::yynnts_ = 19;
-  const int json_parser::yyempty_ = -2;
-  const int json_parser::yyfinal_ = 33;
-  const int json_parser::yyterror_ = 1;
-  const int json_parser::yyerrcode_ = 256;
-  const int json_parser::yyntokens_ = 21;
-
-  const unsigned int json_parser::yyuser_token_number_max_ = 257;
-  const json_parser::token_number_type json_parser::yyundef_token_ = 2;
-
-} // namespace yy
-
-#line 196 "json_parser.yy"
-
-
-int yy::yylex(YYSTYPE *yylval, yy::location *yylloc, QJson::ParserPrivate* driver)
-{
-  JSonScanner* scanner = driver->m_scanner;
-  yylval->clear();
-  int ret = scanner->yylex(yylval, yylloc);
-
-  qjsonDebug() << "json_parser::yylex - calling scanner yylval==|"
-           << yylval->toByteArray() << "|, ret==|" << QString::number(ret) << "|";
-  
-  return ret;
-}
-
-void yy::json_parser::error (const yy::location& yyloc,
-                                 const std::string& error)
-{
-  /*qjsonDebug() << yyloc.begin.line;
-  qjsonDebug() << yyloc.begin.column;
-  qjsonDebug() << yyloc.end.line;
-  qjsonDebug() << yyloc.end.column;*/
-  qjsonDebug() << "json_parser::error [line" << yyloc.end.line << "] -" << error.c_str() ;
-  driver->setError(QString::fromLatin1(error.c_str()), yyloc.end.line);
-}
-