[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: playground/libs/qjson/src
From: Flavio Castelli <flavio.castelli () gmail ! com>
Date: 2009-11-01 0:16:08
Message-ID: 1257034568.478866.8405.nullmailer () svn ! kde ! org
[Download RAW message or body]
SVN commit 1043185 by micron:
Improved parser performances - thanks to Kim Hansen for his patch
M +39 -36 json_parser.cc
M +1 -1 json_parser.hh
M +5 -2 json_parser.yy
M +1 -0 parser.cpp
--- trunk/playground/libs/qjson/src/json_parser.cc #1043184:1043185
@@ -42,7 +42,7 @@
#line 43 "json_parser.cc"
#ifndef YY_
-# if YYENABLE_NLS
+# if defined YYENABLE_NLS && YYENABLE_NLS
# if ENABLE_NLS
# include <libintl.h> /* FIXME: INFRINGES ON USER NAME SPACE */
# define YY_(msgid) dgettext ("bison-runtime", msgid)
@@ -424,26 +424,27 @@
#line 98 "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 10:
-#line 103 "json_parser.yy"
+#line 104 "json_parser.yy"
{ (yyval) = QVariant (QVariantMap()); ;}
break;
case 11:
-#line 104 "json_parser.yy"
+#line 105 "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 12:
-#line 110 "json_parser.yy"
+#line 111 "json_parser.yy"
{
QVariantMap pair;
pair.insert ((yysemantic_stack_[(3) - (1)]).toString(), \
QVariant((yysemantic_stack_[(3) - (3)]))); @@ -452,70 +453,72 @@
break;
case 13:
-#line 116 "json_parser.yy"
+#line 117 "json_parser.yy"
{ (yyval) = (yysemantic_stack_[(3) - (2)]); ;}
break;
case 14:
-#line 118 "json_parser.yy"
+#line 119 "json_parser.yy"
{ (yyval) = QVariant (QVariantList()); ;}
break;
case 15:
-#line 119 "json_parser.yy"
+#line 120 "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 16:
-#line 125 "json_parser.yy"
+#line 127 "json_parser.yy"
{ (yyval) = QVariant (QVariantList()); ;}
break;
case 17:
-#line 126 "json_parser.yy"
+#line 128 "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 18:
-#line 132 "json_parser.yy"
+#line 135 "json_parser.yy"
{ (yyval) = (yysemantic_stack_[(1) - (1)]); ;}
break;
case 19:
-#line 133 "json_parser.yy"
+#line 136 "json_parser.yy"
{ (yyval) = (yysemantic_stack_[(1) - (1)]); ;}
break;
case 20:
-#line 134 "json_parser.yy"
+#line 137 "json_parser.yy"
{ (yyval) = (yysemantic_stack_[(1) - (1)]); ;}
break;
case 21:
-#line 135 "json_parser.yy"
+#line 138 "json_parser.yy"
{ (yyval) = (yysemantic_stack_[(1) - (1)]); ;}
break;
case 22:
-#line 136 "json_parser.yy"
+#line 139 "json_parser.yy"
{ (yyval) = QVariant (true); ;}
break;
case 23:
-#line 137 "json_parser.yy"
+#line 140 "json_parser.yy"
{ (yyval) = QVariant (false); ;}
break;
case 24:
-#line 138 "json_parser.yy"
+#line 141 "json_parser.yy"
{
QVariant null_variant;
(yyval) = null_variant;
@@ -523,7 +526,7 @@
break;
case 25:
-#line 143 "json_parser.yy"
+#line 146 "json_parser.yy"
{
if ((yysemantic_stack_[(1) - (1)]).toByteArray().startsWith('-')) {
(yyval) = QVariant (QVariant::LongLong);
@@ -537,7 +540,7 @@
break;
case 26:
-#line 153 "json_parser.yy"
+#line 156 "json_parser.yy"
{
const QByteArray value = (yysemantic_stack_[(2) - (1)]).toByteArray() + \
(yysemantic_stack_[(2) - (2)]).toByteArray(); (yyval) = QVariant(QVariant::Double);
@@ -546,12 +549,12 @@
break;
case 27:
-#line 158 "json_parser.yy"
+#line 161 "json_parser.yy"
{ (yyval) = QVariant ((yysemantic_stack_[(2) - (1)]).toByteArray() + \
(yysemantic_stack_[(2) - (2)]).toByteArray()); ;} break;
case 28:
-#line 159 "json_parser.yy"
+#line 162 "json_parser.yy"
{
const QByteArray value = (yysemantic_stack_[(3) - (1)]).toByteArray() + \
(yysemantic_stack_[(3) - (2)]).toByteArray() + (yysemantic_stack_[(3) - \
(3)]).toByteArray(); (yyval) = QVariant (value);
@@ -559,51 +562,51 @@
break;
case 29:
-#line 164 "json_parser.yy"
+#line 167 "json_parser.yy"
{ (yyval) = QVariant ((yysemantic_stack_[(2) - (1)]).toByteArray() + \
(yysemantic_stack_[(2) - (2)]).toByteArray()); ;} break;
case 30:
-#line 165 "json_parser.yy"
+#line 168 "json_parser.yy"
{ (yyval) = QVariant (QByteArray("-") + (yysemantic_stack_[(3) - \
(2)]).toByteArray() + (yysemantic_stack_[(3) - (3)]).toByteArray()); ;} break;
case 31:
-#line 167 "json_parser.yy"
+#line 170 "json_parser.yy"
{ (yyval) = QVariant (QByteArray("")); ;}
break;
case 32:
-#line 168 "json_parser.yy"
+#line 171 "json_parser.yy"
{
(yyval) = QVariant((yysemantic_stack_[(2) - (1)]).toByteArray() + \
(yysemantic_stack_[(2) - (2)]).toByteArray()); ;}
break;
case 33:
-#line 172 "json_parser.yy"
+#line 175 "json_parser.yy"
{
(yyval) = QVariant(QByteArray(".") + (yysemantic_stack_[(2) - \
(2)]).toByteArray()); ;}
break;
case 34:
-#line 176 "json_parser.yy"
+#line 179 "json_parser.yy"
{ (yyval) = QVariant((yysemantic_stack_[(2) - (1)]).toByteArray() + \
(yysemantic_stack_[(2) - (2)]).toByteArray()); ;} break;
case 35:
-#line 178 "json_parser.yy"
- { (yyval) = (yysemantic_stack_[(3) - (2)]) ;}
+#line 181 "json_parser.yy"
+ { (yyval) = (yysemantic_stack_[(3) - (2)]); ;}
break;
case 36:
-#line 180 "json_parser.yy"
+#line 183 "json_parser.yy"
{ (yyval) = QVariant (QString(QLatin1String(""))); ;}
break;
case 37:
-#line 181 "json_parser.yy"
+#line 184 "json_parser.yy"
{
(yyval) = (yysemantic_stack_[(1) - (1)]);
;}
@@ -611,7 +614,7 @@
/* Line 675 of lalr1.cc. */
-#line 615 "json_parser.cc"
+#line 618 "json_parser.cc"
default: break;
}
YY_SYMBOL_PRINT ("-> $$ =", yyr1_[yyn], &yyval, &yyloc);
@@ -976,9 +979,9 @@
json_parser::yyrline_[] =
{
0, 80, 80, 85, 86, 87, 93, 95, 97, 98,
- 103, 104, 110, 116, 118, 119, 125, 126, 132, 133,
- 134, 135, 136, 137, 138, 143, 153, 158, 159, 164,
- 165, 167, 168, 172, 176, 178, 180, 181
+ 104, 105, 111, 117, 119, 120, 127, 128, 135, 136,
+ 137, 138, 139, 140, 141, 146, 156, 161, 162, 167,
+ 168, 170, 171, 175, 179, 181, 183, 184
};
// Print the state stack on the debug stream.
@@ -1065,7 +1068,7 @@
} // namespace yy
-#line 185 "json_parser.yy"
+#line 188 "json_parser.yy"
int yy::yylex(YYSTYPE *yylval, yy::location *yylloc, QJson::ParserPrivate* driver)
--- trunk/playground/libs/qjson/src/json_parser.hh #1043184:1043185
@@ -68,7 +68,7 @@
#define YYERROR_VERBOSE 1
-/* Line 35 of lalr1.cc. */
+/* Line 303 of lalr1.cc. */
#line 73 "json_parser.hh"
#include "location.hh"
--- trunk/playground/libs/qjson/src/json_parser.yy #1043184:1043185
@@ -97,13 +97,14 @@
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()));
};
@@ -118,6 +119,7 @@
values: /* empty */ { $$ = QVariant (QVariantList()); }
| value r_values {
QVariantList members = $2.toList();
+ $2 = QVariant(); // Allow reuse of list
members.prepend ($1);
$$ = QVariant(members);
};
@@ -125,6 +127,7 @@
r_values: /* empty */ { $$ = QVariant (QVariantList()); }
| COMMA value r_values {
QVariantList members = $3.toList();
+ $3 = QVariant(); // Allow reuse of list
members.prepend ($2);
$$ = QVariant(members);
};
@@ -175,7 +178,7 @@
exp: E digits { $$ = QVariant($1.toByteArray() + $2.toByteArray()); };
-string: QUOTMARKOPEN string_arg QUOTMARKCLOSE { $$ = $2 };
+string: QUOTMARKOPEN string_arg QUOTMARKCLOSE { $$ = $2; };
string_arg: /*empty */ { $$ = QVariant (QString(QLatin1String(""))); }
| STRING {
--- trunk/playground/libs/qjson/src/parser.cpp #1043184:1043185
@@ -21,6 +21,7 @@
#include "parser.h"
#include "parser_p.h"
#include "json_parser.hh"
+#include "json_scanner.h"
#include <QtCore/QBuffer>
#include <QtCore/QStringList>
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic