- first experiments with QJson serialization
[buliscores] / qjson / src / json_parser.yy
diff --git a/qjson/src/json_parser.yy b/qjson/src/json_parser.yy
deleted file mode 100644 (file)
index 76c698a..0000000
+++ /dev/null
@@ -1,219 +0,0 @@
-/* This file is part of QJSon
-  *
-  * Copyright (C) 2008 Flavio Castelli <flavio.castelli@gmail.com>
-  *
-  * This library is free software; you can redistribute it and/or
-  * modify it under the terms of the GNU Library General Public
-  * License as published by the Free Software Foundation; either
-  * version 2 of the License, or (at your option) any later version.
-  *
-  * This library 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
-  * Library General Public License for more details.
-  *
-  * You should have received a copy of the GNU Library General Public License
-  * along with this library; see the file COPYING.LIB.  If not, write to
-  * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
-  * Boston, MA 02110-1301, USA.
-  */
-
-%skeleton "lalr1.cc"
-%defines
-%define "parser_class_name" "json_parser"
-
-%{
-  #include "parser_p.h"
-  #include "json_scanner.h"
-  #include "qjson_debug.h"
-
-  #include <QtCore/QByteArray>
-  #include <QtCore/QMap>
-  #include <QtCore/QString>
-  #include <QtCore/QVariant>
-
-  #include <limits>
-
-  class JSonScanner;
-
-  namespace QJson {
-    class Parser;
-  }
-
-  #define YYERROR_VERBOSE 1
-%}
-
-%parse-param { QJson::ParserPrivate* driver }
-%lex-param { QJson::ParserPrivate* driver }
-
-%locations
-
-%debug
-%error-verbose
-
-%token END 0 "end of file"
-
-%token CURLY_BRACKET_OPEN 1 "{"
-%token CURLY_BRACKET_CLOSE 2 "}"
-%token SQUARE_BRACKET_OPEN 3 "["
-%token SQUARE_BRACKET_CLOSE 4 "]"
-
-%token COLON 5 ":"
-%token COMMA 6 ","
-%token MINUS 7 "-"
-%token DOT 8 "."
-%token DIGIT 9 "digit"
-%token E 10 "exponential"
-%token TRUE_VAL 11 "true"
-%token FALSE_VAL 12 "false"
-%token NULL_VAL 13 "null"
-%token QUOTMARKOPEN 14 "open quotation mark"
-%token QUOTMARKCLOSE 15 "close quotation mark"
-
-%token STRING 16 "string"
-%token INFINITY_VAL 17 "Infinity"
-%token NAN_VAL 18 "NaN"
-
-// define the initial token
-%start start
-
-%%
-
-// grammar rules
-
-start: data {
-              driver->m_result = $1;
-              qjsonDebug() << "json_parser - parsing finished";
-            };
-
-data: value { $$ = $1; }
-      | error
-          {
-            qCritical()<< "json_parser - syntax error found, "
-                    << "forcing abort, Line" << @$.begin.line << "Column" << @$.begin.column;
-            YYABORT;
-          }
-      | END;
-
-object: CURLY_BRACKET_OPEN members CURLY_BRACKET_CLOSE { $$ = $2; };
-
-members: /* empty */ { $$ = QVariant (QVariantMap()); }
-        | pair r_members {
-            QVariantMap members = $2.toMap();
-            $2 = QVariant(); // Allow reuse of map
-            $$ = QVariant(members.unite ($1.toMap()));
-          };
-
-r_members: /* empty */ { $$ = QVariant (QVariantMap()); }
-        | COMMA pair r_members {
-          QVariantMap members = $3.toMap();
-          $3 = QVariant(); // Allow reuse of map
-          $$ = QVariant(members.unite ($2.toMap()));
-          };
-
-pair:   string COLON value {
-            QVariantMap pair;
-            pair.insert ($1.toString(), QVariant($3));
-            $$ = QVariant (pair);
-          };
-
-array: SQUARE_BRACKET_OPEN values SQUARE_BRACKET_CLOSE { $$ = $2; };
-
-values: /* empty */ { $$ = QVariant (QVariantList()); }
-        | value r_values {
-          QVariantList members = $2.toList();
-          $2 = QVariant(); // Allow reuse of list
-          members.prepend ($1);
-          $$ = QVariant(members);
-        };
-
-r_values: /* empty */ { $$ = QVariant (QVariantList()); }
-          | COMMA value r_values {
-            QVariantList members = $3.toList();
-            $3 = QVariant(); // Allow reuse of list
-            members.prepend ($2);
-            $$ = QVariant(members);
-          };
-
-value: string { $$ = $1; }
-        | special_or_number { $$ = $1; }
-        | object { $$ = $1; }
-        | array { $$ = $1; }
-        | TRUE_VAL { $$ = QVariant (true); }
-        | FALSE_VAL { $$ = QVariant (false); }
-        | NULL_VAL {
-          QVariant null_variant;
-          $$ = null_variant;
-        };
-
-special_or_number: MINUS INFINITY_VAL { $$ = QVariant(QVariant::Double); $$.setValue( -std::numeric_limits<double>::infinity() ); }
-                   | INFINITY_VAL { $$ = QVariant(QVariant::Double); $$.setValue( std::numeric_limits<double>::infinity() ); }
-                   | NAN_VAL { $$ = QVariant(QVariant::Double); $$.setValue( std::numeric_limits<double>::quiet_NaN() ); }
-                   | number;
-
-number: int {
-            if ($1.toByteArray().startsWith('-')) {
-              $$ = QVariant (QVariant::LongLong);
-              $$.setValue($1.toLongLong());
-            }
-            else {
-              $$ = QVariant (QVariant::ULongLong);
-              $$.setValue($1.toULongLong());
-            }
-          }
-        | int fract {
-            const QByteArray value = $1.toByteArray() + $2.toByteArray();
-            $$ = QVariant(QVariant::Double);
-            $$.setValue(value.toDouble());
-          }
-        | int exp { $$ = QVariant ($1.toByteArray() + $2.toByteArray()); }
-        | int fract exp {
-            const QByteArray value = $1.toByteArray() + $2.toByteArray() + $3.toByteArray();
-            $$ = QVariant (value);
-          };
-
-int:  DIGIT digits { $$ = QVariant ($1.toByteArray() + $2.toByteArray()); }
-      | MINUS DIGIT digits { $$ = QVariant (QByteArray("-") + $2.toByteArray() + $3.toByteArray()); };
-
-digits: /* empty */ { $$ = QVariant (QByteArray("")); }
-        | DIGIT digits {
-          $$ = QVariant($1.toByteArray() + $2.toByteArray());
-        };
-
-fract: DOT digits {
-          $$ = QVariant(QByteArray(".") + $2.toByteArray());
-        };
-
-exp: E digits { $$ = QVariant($1.toByteArray() + $2.toByteArray()); };
-
-string: QUOTMARKOPEN string_arg QUOTMARKCLOSE { $$ = $2; };
-
-string_arg: /*empty */ { $$ = QVariant (QString(QLatin1String(""))); }
-            | STRING {
-                $$ = $1;
-              };
-
-%%
-
-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);
-}