aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorFawzi Mohamed <fawzi.mohamed@digia.com>2013-11-06 14:17:23 +0100
committerFawzi Mohamed <fawzi.mohamed@digia.com>2013-11-06 17:06:15 +0100
commite9c97aa1d1be46fffa8eecfa64bc4e3c4f1dd7b9 (patch)
tree085edbf2de55fce70b2a3d3474927b6f85315901 /src
parent0374d83e8362811d0e9b2174d4baf2337d100d4a (diff)
qmljs: use new qml parser
adds support for singleton and getter/setter properties Change-Id: Ia6691ac7799a46885db0df44617617dcc3c13189 Reviewed-by: Kai Koehne <kai.koehne@digia.com> Reviewed-by: Thomas Hartmann <Thomas.Hartmann@digia.com>
Diffstat (limited to 'src')
-rw-r--r--src/libs/qmljs/jsoncheck.cpp9
-rwxr-xr-xsrc/libs/qmljs/parser/gen-parser.sh2
-rw-r--r--src/libs/qmljs/parser/qmldirparser.cpp45
-rw-r--r--src/libs/qmljs/parser/qmldirparser_p.h5
-rw-r--r--src/libs/qmljs/parser/qmlerror.cpp34
-rw-r--r--src/libs/qmljs/parser/qmlerror.h3
-rw-r--r--src/libs/qmljs/parser/qmljs.g218
-rw-r--r--src/libs/qmljs/parser/qmljsast.cpp52
-rw-r--r--src/libs/qmljs/parser/qmljsast_p.h275
-rw-r--r--src/libs/qmljs/parser/qmljsastfwd_p.h8
-rw-r--r--src/libs/qmljs/parser/qmljsastvisitor_p.h18
-rw-r--r--src/libs/qmljs/parser/qmljsengine_p.cpp8
-rw-r--r--src/libs/qmljs/parser/qmljsengine_p.h1
-rw-r--r--src/libs/qmljs/parser/qmljsglobal_p.h4
-rw-r--r--src/libs/qmljs/parser/qmljsgrammar.cpp1843
-rw-r--r--src/libs/qmljs/parser/qmljsgrammar_p.h41
-rw-r--r--src/libs/qmljs/parser/qmljskeywords_p.h85
-rw-r--r--src/libs/qmljs/parser/qmljslexer.cpp340
-rw-r--r--src/libs/qmljs/parser/qmljslexer_p.h9
-rw-r--r--src/libs/qmljs/parser/qmljsparser.cpp549
-rw-r--r--src/libs/qmljs/parser/qmljsparser_p.h16
-rw-r--r--src/libs/qmljs/qmljsdelta.cpp9
-rw-r--r--src/libs/qmljs/qmljsdocument.h1
-rw-r--r--src/libs/qmljs/qmljsevaluate.cpp24
-rw-r--r--src/libs/qmljs/qmljsevaluate.h8
-rw-r--r--src/libs/qmljs/qmljsreformatter.cpp47
-rw-r--r--src/libs/qmljs/qmljstypedescriptionreader.cpp38
-rw-r--r--src/libs/qmljs/qmljsutils.h3
-rw-r--r--src/plugins/qmldesigner/designercore/filemanager/changeimportsvisitor.cpp11
-rw-r--r--src/plugins/qmldesigner/designercore/model/paster.cpp11
-rw-r--r--src/plugins/qmldesigner/designercore/model/texttomodelmerger.cpp4
-rw-r--r--src/plugins/qmljseditor/qmljscomponentfromobjectdef.cpp4
-rw-r--r--src/plugins/qmljseditor/qmloutlinemodel.cpp74
-rw-r--r--src/plugins/qmljseditor/qmloutlinemodel.h6
-rw-r--r--src/plugins/qmljstools/qmljssemanticinfo.cpp2
35 files changed, 2276 insertions, 1531 deletions
diff --git a/src/libs/qmljs/jsoncheck.cpp b/src/libs/qmljs/jsoncheck.cpp
index c6c455a760..d712b843df 100644
--- a/src/libs/qmljs/jsoncheck.cpp
+++ b/src/libs/qmljs/jsoncheck.cpp
@@ -100,8 +100,9 @@ bool JsonCheck::visit(ObjectLiteral *ast)
return false;
QSet<QString> propertiesFound;
- for (PropertyNameAndValueList *it = ast->properties; it; it = it->next) {
- StringLiteralPropertyName *literalName = cast<StringLiteralPropertyName *>(it->name);
+ for (PropertyAssignmentList *it = ast->properties; it; it = it->next) {
+ PropertyNameAndValue *assignment = AST::cast<AST::PropertyNameAndValue *>(it->assignment);
+ StringLiteralPropertyName *literalName = cast<StringLiteralPropertyName *>(assignment->name);
if (literalName) {
const QString &propertyName = literalName->id.toString();
if (m_schema->hasPropertySchema(propertyName)) {
@@ -109,7 +110,7 @@ bool JsonCheck::visit(ObjectLiteral *ast)
propertiesFound.insert(propertyName);
// Sec. 5.2: "... each property definition's value MUST be a schema..."
m_schema->enterNestedPropertySchema(propertyName);
- processSchema(it->value);
+ processSchema(assignment->value);
m_schema->leaveNestedSchema();
} else {
analysis()->m_messages.append(Message(ErrInvalidPropertyName,
@@ -119,7 +120,7 @@ bool JsonCheck::visit(ObjectLiteral *ast)
}
} else {
analysis()->m_messages.append(Message(ErrStringValueExpected,
- it->name->firstSourceLocation(),
+ assignment->name->firstSourceLocation(),
QString(), QString(),
false));
}
diff --git a/src/libs/qmljs/parser/gen-parser.sh b/src/libs/qmljs/parser/gen-parser.sh
index 4f779f7cfc..e19de7ffb7 100755
--- a/src/libs/qmljs/parser/gen-parser.sh
+++ b/src/libs/qmljs/parser/gen-parser.sh
@@ -12,7 +12,7 @@
me=$(dirname $0)
-for i in $QTDIR/src/qml/qml/parser/*.{g,h,cpp,pri}; do
+for i in $QTDIR/src/qml/parser/*.{g,h,cpp,pri}; do
sed -f $me/cmd.sed $i > $me/$(echo $(basename $i) | sed s/qqmljs/qmljs/)
done
diff --git a/src/libs/qmljs/parser/qmldirparser.cpp b/src/libs/qmljs/parser/qmldirparser.cpp
index 7e2fcfeaf4..f2d7cf4115 100644
--- a/src/libs/qmljs/parser/qmldirparser.cpp
+++ b/src/libs/qmljs/parser/qmldirparser.cpp
@@ -104,7 +104,7 @@ bool QmlDirParser::parse(const QString &source)
if (ch->isNull())
break;
- QString sections[3];
+ QString sections[4];
int sectionCount = 0;
do {
@@ -114,7 +114,7 @@ bool QmlDirParser::parse(const QString &source)
}
const QChar *start = ch;
scanWord(ch);
- if (sectionCount < 3) {
+ if (sectionCount < 4) {
sections[sectionCount++] = source.mid(start-source.constData(), ch-start);
} else {
reportError(lineNumber, start-lineStart, QLatin1String("unexpected token"));
@@ -148,14 +148,14 @@ bool QmlDirParser::parse(const QString &source)
}
if (!firstLine) {
reportError(lineNumber, 0,
- QString::fromUtf8("module identifier directive must be the first command in a qmldir file"));
+ QString::fromUtf8("module identifier directive must be the first directive in a qmldir file"));
continue;
}
_typeNamespace = sections[1];
} else if (sections[0] == QLatin1String("plugin")) {
- if (sectionCount < 2) {
+ if (sectionCount < 2 || sectionCount > 3) {
reportError(lineNumber, 0,
QString::fromUtf8("plugin directive requires one or two arguments, but %1 were provided").arg(sectionCount - 1));
@@ -175,6 +175,43 @@ bool QmlDirParser::parse(const QString &source)
Component entry(sections[1], sections[2], -1, -1);
entry.internal = true;
_components.insertMulti(entry.typeName, entry);
+ } else if (sections[0] == QLatin1String("singleton")) {
+ if (sectionCount < 3 || sectionCount > 4) {
+ reportError(lineNumber, 0,
+ QString::fromUtf8("singleton types require 2 or 3 arguments, but %1 were provided").arg(sectionCount - 1));
+ continue;
+ } else if (sectionCount == 3) {
+ // handle qmldir directory listing case where singleton is defined in the following pattern:
+ // singleton TestSingletonType TestSingletonType.qml
+ Component entry(sections[1], sections[2], -1, -1);
+ entry.singleton = true;
+ _components.insertMulti(entry.typeName, entry);
+ } else {
+ // handle qmldir module listing case where singleton is defined in the following pattern:
+ // singleton TestSingletonType 2.0 TestSingletonType20.qml
+ const QString &version = sections[2];
+ const int dotIndex = version.indexOf(QLatin1Char('.'));
+
+ if (dotIndex == -1) {
+ reportError(lineNumber, 0, QLatin1String("expected '.'"));
+ } else if (version.indexOf(QLatin1Char('.'), dotIndex + 1) != -1) {
+ reportError(lineNumber, 0, QLatin1String("unexpected '.'"));
+ } else {
+ bool validVersionNumber = false;
+ const int majorVersion = parseInt(QStringRef(&version, 0, dotIndex), &validVersionNumber);
+
+ if (validVersionNumber) {
+ const int minorVersion = parseInt(QStringRef(&version, dotIndex+1, version.length()-dotIndex-1), &validVersionNumber);
+
+ if (validVersionNumber) {
+ const QString &fileName = sections[3];
+ Component entry(sections[1], fileName, majorVersion, minorVersion);
+ entry.singleton = true;
+ _components.insertMulti(entry.typeName, entry);
+ }
+ }
+ }
+ }
} else if (sections[0] == QLatin1String("typeinfo")) {
if (sectionCount != 2) {
reportError(lineNumber, 0,
diff --git a/src/libs/qmljs/parser/qmldirparser_p.h b/src/libs/qmljs/parser/qmldirparser_p.h
index 9262800f31..12f74e0fac 100644
--- a/src/libs/qmljs/parser/qmldirparser_p.h
+++ b/src/libs/qmljs/parser/qmldirparser_p.h
@@ -83,17 +83,18 @@ public:
struct Component
{
Component()
- : majorVersion(0), minorVersion(0), internal(false) {}
+ : majorVersion(0), minorVersion(0), internal(false), singleton(false) {}
Component(const QString &typeName, const QString &fileName, int majorVersion, int minorVersion)
: typeName(typeName), fileName(fileName), majorVersion(majorVersion), minorVersion(minorVersion),
- internal(false) {}
+ internal(false), singleton(false) {}
QString typeName;
QString fileName;
int majorVersion;
int minorVersion;
bool internal;
+ bool singleton;
};
struct Script
diff --git a/src/libs/qmljs/parser/qmlerror.cpp b/src/libs/qmljs/parser/qmlerror.cpp
index 1ea06d329f..7c155cfcb4 100644
--- a/src/libs/qmljs/parser/qmlerror.cpp
+++ b/src/libs/qmljs/parser/qmlerror.cpp
@@ -44,13 +44,13 @@ QT_BEGIN_NAMESPACE
QmlError includes a textual description of the error, as well
as location information (the file, line, and column). The toString()
- function creates a single-line, human-readable string containing all of
+ method creates a single-line, human-readable string containing all of
this information, for example:
\code
file:///home/user/test.qml:7:8: Invalid property assignment: double expected
\endcode
- You can use qDebug() or qWarning() to output errors to the console. This function
+ You can use qDebug() or qWarning() to output errors to the console. This method
will attempt to open the file indicated by the error
and include additional contextual information.
\code
@@ -59,7 +59,7 @@ QT_BEGIN_NAMESPACE
^
\endcode
- \note The QtQuick 1 version is named QDeclarativeError.
+ Note that the \l {Qt Quick 1} version is named QDeclarativeError
\sa QQuickView::errors(), QmlComponent::errors()
*/
@@ -78,10 +78,11 @@ public:
QString description;
quint16 line;
quint16 column;
+ QObject *object;
};
QmlErrorPrivate::QmlErrorPrivate()
-: line(0), column(0)
+: line(0), column(0), object()
{
}
@@ -116,6 +117,7 @@ QmlError &QmlError::operator=(const QmlError &other)
d->description = other.d->description;
d->line = other.d->line;
d->column = other.d->column;
+ d->object = other.d->object;
}
return *this;
}
@@ -137,7 +139,7 @@ bool QmlError::isValid() const
}
/*!
- Returns the URL for the file that caused this error.
+ Returns the url for the file that caused this error.
*/
QUrl QmlError::url() const
{
@@ -209,6 +211,27 @@ void QmlError::setColumn(int column)
}
/*!
+ Returns the nearest object where this error occurred.
+ Exceptions in bound property expressions set this to the object
+ to which the property belongs. It will be 0 for all
+ other exceptions.
+ */
+QObject *QmlError::object() const
+{
+ if (d) return d->object;
+ else return 0;
+}
+
+/*!
+ Sets the nearest \a object where this error occurred.
+ */
+void QmlError::setObject(QObject *object)
+{
+ if (!d) d = new QmlErrorPrivate;
+ d->object = object;
+}
+
+/*!
Returns the error as a human readable string.
*/
QString QmlError::toString() const
@@ -237,6 +260,7 @@ QString QmlError::toString() const
/*!
\relates QmlError
+ \fn QDebug operator<<(QDebug debug, const QmlError &error)
Outputs a human readable version of \a error to \a debug.
*/
diff --git a/src/libs/qmljs/parser/qmlerror.h b/src/libs/qmljs/parser/qmlerror.h
index 7719ceb3cc..675608062c 100644
--- a/src/libs/qmljs/parser/qmlerror.h
+++ b/src/libs/qmljs/parser/qmlerror.h
@@ -37,7 +37,6 @@
QT_BEGIN_NAMESPACE
-
class QDebug;
class QmlErrorPrivate;
class QmlError
@@ -58,6 +57,8 @@ public:
void setLine(int);
int column() const;
void setColumn(int);
+ QObject *object() const;
+ void setObject(QObject *);
QString toString() const;
private:
diff --git a/src/libs/qmljs/parser/qmljs.g b/src/libs/qmljs/parser/qmljs.g
index 998e9df660..876ec19359 100644
--- a/src/libs/qmljs/parser/qmljs.g
+++ b/src/libs/qmljs/parser/qmljs.g
@@ -24,7 +24,7 @@
%parser QmlJSGrammar
%decl qmljsparser_p.h
%impl qmljsparser.cpp
-%expect 2
+%expect 5
%expect-rr 2
%token T_AND "&" T_AND_AND "&&" T_AND_EQ "&="
@@ -65,8 +65,11 @@
--- context keywords.
%token T_PUBLIC "public"
%token T_IMPORT "import"
+%token T_PRAGMA "pragma"
%token T_AS "as"
%token T_ON "on"
+%token T_GET "get"
+%token T_SET "set"
%token T_ERROR
@@ -79,7 +82,7 @@
%token T_FEED_JS_PROGRAM
%nonassoc SHIFT_THERE
-%nonassoc T_IDENTIFIER T_COLON T_SIGNAL T_PROPERTY T_READONLY
+%nonassoc T_IDENTIFIER T_COLON T_SIGNAL T_PROPERTY T_READONLY T_ON T_SET T_GET
%nonassoc REDUCE_HERE
%start TopLevel
@@ -125,16 +128,16 @@
**
****************************************************************************/
-#include <QtCore/QtDebug>
-#include <QtCore/QCoreApplication>
-
-#include <string.h>
-
#include "qmljsengine_p.h"
#include "qmljslexer_p.h"
#include "qmljsast_p.h"
#include "qmljsmemorypool_p.h"
+#include <QtCore/qdebug.h>
+#include <QtCore/qcoreapplication.h>
+
+#include <string.h>
+
./
/:/****************************************************************************
@@ -210,8 +213,8 @@
#include "qmljsast_p.h"
#include "qmljsengine_p.h"
-#include <QtCore/QList>
-#include <QtCore/QString>
+#include <QtCore/qlist.h>
+#include <QtCore/qstring.h>
QT_QML_BEGIN_NAMESPACE
@@ -240,7 +243,8 @@ public:
AST::FunctionDeclaration *FunctionDeclaration;
AST::Node *Node;
AST::PropertyName *PropertyName;
- AST::PropertyNameAndValueList *PropertyNameAndValueList;
+ AST::PropertyAssignment *PropertyAssignment;
+ AST::PropertyAssignmentList *PropertyAssignmentList;
AST::SourceElement *SourceElement;
AST::SourceElements *SourceElements;
AST::Statement *Statement;
@@ -250,7 +254,8 @@ public:
AST::VariableDeclarationList *VariableDeclarationList;
AST::UiProgram *UiProgram;
- AST::UiImportList *UiImportList;
+ AST::UiHeaderItemList *UiHeaderItemList;
+ AST::UiPragma *UiPragma;
AST::UiImport *UiImport;
AST::UiParameterList *UiParameterList;
AST::UiPublicMember *UiPublicMember;
@@ -263,6 +268,7 @@ public:
AST::UiObjectMemberList *UiObjectMemberList;
AST::UiArrayMemberList *UiArrayMemberList;
AST::UiQualifiedId *UiQualifiedId;
+ AST::UiQualifiedPragmaId *UiQualifiedPragmaId;
};
public:
@@ -344,6 +350,7 @@ protected:
{ return location_stack [tos + index - 1]; }
AST::UiQualifiedId *reparseAsQualifiedId(AST::ExpressionNode *expr);
+ AST::UiQualifiedPragmaId *reparseAsQualifiedPragmaId(AST::ExpressionNode *expr);
protected:
Engine *driver;
@@ -388,7 +395,8 @@ protected:
/.
#include "qmljsparser_p.h"
-#include <QVarLengthArray>
+
+#include <QtCore/qvarlengtharray.h>
//
// W A R N I N G
@@ -482,6 +490,19 @@ AST::UiQualifiedId *Parser::reparseAsQualifiedId(AST::ExpressionNode *expr)
return 0;
}
+AST::UiQualifiedPragmaId *Parser::reparseAsQualifiedPragmaId(AST::ExpressionNode *expr)
+{
+ if (AST::IdentifierExpression *idExpr = AST::cast<AST::IdentifierExpression *>(expr)) {
+ AST::UiQualifiedPragmaId *q = new (pool) AST::UiQualifiedPragmaId(idExpr->name);
+ q->identifierToken = idExpr->identifierToken;
+
+ return q->finish();
+ }
+
+ return 0;
+}
+
+
bool Parser::parse(int startToken)
{
Lexer *lexer = driver->lexer();
@@ -590,38 +611,62 @@ case $rule_number: {
} break;
./
-UiProgram: UiImportListOpt UiRootMember ;
+UiProgram: UiHeaderItemListOpt UiRootMember;
/.
case $rule_number: {
- sym(1).UiProgram = new (pool) AST::UiProgram(sym(1).UiImportList,
+ sym(1).UiProgram = new (pool) AST::UiProgram(sym(1).UiHeaderItemList,
sym(2).UiObjectMemberList->finish());
} break;
./
-UiImportListOpt: Empty ;
-UiImportListOpt: UiImportList ;
+UiHeaderItemListOpt: Empty ;
+UiHeaderItemListOpt: UiHeaderItemList ;
+/.
+case $rule_number: {
+ sym(1).Node = sym(1).UiHeaderItemList->finish();
+} break;
+./
+
+UiHeaderItemList: UiPragma ;
/.
case $rule_number: {
- sym(1).Node = sym(1).UiImportList->finish();
+ sym(1).Node = new (pool) AST::UiHeaderItemList(sym(1).UiPragma);
} break;
./
-UiImportList: UiImport ;
+UiHeaderItemList: UiImport ;
/.
case $rule_number: {
- sym(1).Node = new (pool) AST::UiImportList(sym(1).UiImport);
+ sym(1).Node = new (pool) AST::UiHeaderItemList(sym(1).UiImport);
} break;
./
-UiImportList: UiImportList UiImport ;
+UiHeaderItemList: UiHeaderItemList UiPragma ;
/.
case $rule_number: {
- sym(1).Node = new (pool) AST::UiImportList(sym(1).UiImportList, sym(2).UiImport);
+ sym(1).Node = new (pool) AST::UiHeaderItemList(sym(1).UiHeaderItemList, sym(2).UiPragma);
} break;
./
+UiHeaderItemList: UiHeaderItemList UiImport ;
+/.
+case $rule_number: {
+ sym(1).Node = new (pool) AST::UiHeaderItemList(sym(1).UiHeaderItemList, sym(2).UiImport);
+} break;
+./
+
+PragmaId: MemberExpression ;
+
ImportId: MemberExpression ;
+UiPragma: UiPragmaHead T_AUTOMATIC_SEMICOLON ;
+UiPragma: UiPragmaHead T_SEMICOLON ;
+/.
+case $rule_number: {
+ sym(1).UiPragma->semicolonToken = loc(2);
+} break;
+./
+
UiImport: UiImportHead T_AUTOMATIC_SEMICOLON ;
UiImport: UiImportHead T_SEMICOLON ;
/.
@@ -662,6 +707,28 @@ case $rule_number: {
} break;
./
+UiPragmaHead: T_PRAGMA PragmaId ;
+/.
+case $rule_number: {
+ AST::UiPragma *node = 0;
+
+ if (AST::UiQualifiedPragmaId *qualifiedId = reparseAsQualifiedPragmaId(sym(2).Expression)) {
+ node = new (pool) AST::UiPragma(qualifiedId);
+ }
+
+ sym(1).Node = node;
+
+ if (node) {
+ node->pragmaToken = loc(1);
+ } else {
+ diagnostic_messages.append(DiagnosticMessage(DiagnosticMessage::Error, loc(1),
+ QLatin1String("Expected a qualified name id")));
+
+ return false; // ### remove me
+ }
+} break;
+./
+
UiImportHead: T_IMPORT ImportId ;
/.
@@ -1043,6 +1110,8 @@ JsIdentifier: T_PROPERTY ;
JsIdentifier: T_SIGNAL ;
JsIdentifier: T_READONLY ;
JsIdentifier: T_ON ;
+JsIdentifier: T_GET ;
+JsIdentifier: T_SET ;
--------------------------------------------------------------------------------------------------------
-- Expressions
@@ -1219,13 +1288,13 @@ case $rule_number: {
-- } break;
-- ./
-PrimaryExpression: T_LBRACE PropertyNameAndValueListOpt T_RBRACE ;
+PrimaryExpression: T_LBRACE PropertyAssignmentListOpt T_RBRACE ;
/.
case $rule_number: {
AST::ObjectLiteral *node = 0;
if (sym(2).Node)
node = new (pool) AST::ObjectLiteral(
- sym(2).PropertyNameAndValueList->finish ());
+ sym(2).PropertyAssignmentList->finish ());
else
node = new (pool) AST::ObjectLiteral();
node->lbraceToken = loc(1);
@@ -1234,11 +1303,11 @@ case $rule_number: {
} break;
./
-PrimaryExpression: T_LBRACE PropertyNameAndValueList T_COMMA T_RBRACE ;
+PrimaryExpression: T_LBRACE PropertyAssignmentList T_COMMA T_RBRACE ;
/.
case $rule_number: {
AST::ObjectLiteral *node = new (pool) AST::ObjectLiteral(
- sym(2).PropertyNameAndValueList->finish ());
+ sym(2).PropertyAssignmentList->finish ());
node->lbraceToken = loc(1);
node->rbraceToken = loc(4);
sym(1).Node = node;
@@ -1255,6 +1324,7 @@ case $rule_number: {
} break;
./
+
UiQualifiedId: MemberExpression ;
/.
case $rule_number: {
@@ -1330,40 +1400,62 @@ case $rule_number: {
} break;
./
-PropertyNameAndValueList: PropertyName T_COLON AssignmentExpression ;
+PropertyAssignment: PropertyName T_COLON AssignmentExpression ;
/.
case $rule_number: {
- AST::PropertyNameAndValueList *node = new (pool) AST::PropertyNameAndValueList(
+ AST::PropertyNameAndValue *node = new (pool) AST::PropertyNameAndValue(
sym(1).PropertyName, sym(3).Expression);
node->colonToken = loc(2);
sym(1).Node = node;
} break;
./
-PropertyNameAndValueList: PropertyNameAndValueList T_COMMA PropertyName T_COLON AssignmentExpression ;
+PropertyAssignment: T_GET PropertyName T_LPAREN T_RPAREN T_LBRACE FunctionBodyOpt T_RBRACE ;
/.
case $rule_number: {
- AST::PropertyNameAndValueList *node = new (pool) AST::PropertyNameAndValueList(
- sym(1).PropertyNameAndValueList, sym(3).PropertyName, sym(5).Expression);
- node->commaToken = loc(2);
- node->colonToken = loc(4);
+ AST::PropertyGetterSetter *node = new (pool) AST::PropertyGetterSetter(
+ sym(2).PropertyName, sym(6).FunctionBody);
+ node->getSetToken = loc(1);
+ node->lparenToken = loc(3);
+ node->rparenToken = loc(4);
+ node->lbraceToken = loc(5);
+ node->rbraceToken = loc(7);
sym(1).Node = node;
} break;
./
-PropertyName: T_IDENTIFIER %prec SHIFT_THERE ;
+PropertyAssignment: T_SET PropertyName T_LPAREN FormalParameterListOpt T_RPAREN T_LBRACE FunctionBodyOpt T_RBRACE ;
/.
case $rule_number: {
- AST::IdentifierPropertyName *node = new (pool) AST::IdentifierPropertyName(stringRef(1));
- node->propertyNameToken = loc(1);
+ AST::PropertyGetterSetter *node = new (pool) AST::PropertyGetterSetter(
+ sym(2).PropertyName, sym(4).FormalParameterList, sym(7).FunctionBody);
+ node->getSetToken = loc(1);
+ node->lparenToken = loc(3);
+ node->rparenToken = loc(5);
+ node->lbraceToken = loc(6);
+ node->rbraceToken = loc(8);
sym(1).Node = node;
} break;
./
-PropertyName: T_SIGNAL ;
-/.case $rule_number:./
+PropertyAssignmentList: PropertyAssignment ;
+/.
+case $rule_number: {
+ sym(1).Node = new (pool) AST::PropertyAssignmentList(sym(1).PropertyAssignment);
+} break;
+./
+
+PropertyAssignmentList: PropertyAssignmentList T_COMMA PropertyAssignment ;
+/.
+case $rule_number: {
+ AST::PropertyAssignmentList *node = new (pool) AST::PropertyAssignmentList(
+ sym(1).PropertyAssignmentList, sym(3).PropertyAssignment);
+ node->commaToken = loc(2);
+ sym(1).Node = node;
+} break;
+./
-PropertyName: T_PROPERTY ;
+PropertyName: JsIdentifier %prec SHIFT_THERE ;
/.
case $rule_number: {
AST::IdentifierPropertyName *node = new (pool) AST::IdentifierPropertyName(stringRef(1));
@@ -2669,20 +2761,7 @@ case $rule_number: {
} break;
./
-LabelledStatement: T_SIGNAL T_COLON Statement ;
-/.case $rule_number:./
-
-LabelledStatement: T_PROPERTY T_COLON Statement ;
-/.
-case $rule_number: {
- AST::LabelledStatement *node = new (pool) AST::LabelledStatement(stringRef(1), sym(3).Statement);
- node->identifierToken = loc(1);
- node->colonToken = loc(2);
- sym(1).Node = node;
-} break;
-./
-
-LabelledStatement: T_IDENTIFIER T_COLON Statement ;
+LabelledStatement: JsIdentifier T_COLON Statement ;
/.
case $rule_number: {
AST::LabelledStatement *node = new (pool) AST::LabelledStatement(stringRef(1), sym(3).Statement);
@@ -2762,7 +2841,12 @@ case $rule_number: {
} break;
./
-FunctionDeclaration: T_FUNCTION JsIdentifier T_LPAREN FormalParameterListOpt T_RPAREN T_LBRACE FunctionBodyOpt T_RBRACE ;
+-- tell the parser to prefer function declarations to function expressions.
+-- That is, the `Function' symbol is used to mark the start of a function
+-- declaration.
+Function: T_FUNCTION %prec REDUCE_HERE ;
+
+FunctionDeclaration: Function JsIdentifier T_LPAREN FormalParameterListOpt T_RPAREN T_LBRACE FunctionBodyOpt T_RBRACE ;
/.
case $rule_number: {
AST::FunctionDeclaration *node = new (pool) AST::FunctionDeclaration(stringRef(2), sym(4).FormalParameterList, sym(7).FunctionBody);
@@ -2776,7 +2860,7 @@ case $rule_number: {
} break;
./
-FunctionExpression: T_FUNCTION IdentifierOpt T_LPAREN FormalParameterListOpt T_RPAREN T_LBRACE FunctionBodyOpt T_RBRACE ;
+FunctionExpression: T_FUNCTION JsIdentifier T_LPAREN FormalParameterListOpt T_RPAREN T_LBRACE FunctionBodyOpt T_RBRACE ;
/.
case $rule_number: {
AST::FunctionExpression *node = new (pool) AST::FunctionExpression(stringRef(2), sym(4).FormalParameterList, sym(7).FunctionBody);
@@ -2791,6 +2875,19 @@ case $rule_number: {
} break;
./
+FunctionExpression: T_FUNCTION T_LPAREN FormalParameterListOpt T_RPAREN T_LBRACE FunctionBodyOpt T_RBRACE ;
+/.
+case $rule_number: {
+ AST::FunctionExpression *node = new (pool) AST::FunctionExpression(QStringRef(), sym(3).FormalParameterList, sym(6).FunctionBody);
+ node->functionToken = loc(1);
+ node->lparenToken = loc(2);
+ node->rparenToken = loc(4);
+ node->lbraceToken = loc(5);
+ node->rbraceToken = loc(7);
+ sym(1).Node = node;
+} break;
+./
+
FormalParameterList: JsIdentifier ;
/.
case $rule_number: {
@@ -2877,23 +2974,14 @@ case $rule_number: {
} break;
./
-IdentifierOpt: ;
-/.
-case $rule_number: {
- stringRef(1) = QStringRef();
-} break;
-./
-
-IdentifierOpt: JsIdentifier ;
-
-PropertyNameAndValueListOpt: ;
+PropertyAssignmentListOpt: ;
/.
case $rule_number: {
sym(1).Node = 0;
} break;
./
-PropertyNameAndValueListOpt: PropertyNameAndValueList ;
+PropertyAssignmentListOpt: PropertyAssignmentList ;
/.
} // switch
diff --git a/src/libs/qmljs/parser/qmljsast.cpp b/src/libs/qmljs/parser/qmljsast.cpp
index 314600d61e..fc4d885630 100644
--- a/src/libs/qmljs/parser/qmljsast.cpp
+++ b/src/libs/qmljs/parser/qmljsast.cpp
@@ -201,12 +201,32 @@ void Elision::accept0(Visitor *visitor)
visitor->endVisit(this);
}
-void PropertyNameAndValueList::accept0(Visitor *visitor)
+void PropertyNameAndValue::accept0(Visitor *visitor)
{
if (visitor->visit(this)) {
- for (PropertyNameAndValueList *it = this; it; it = it->next) {
- accept(it->name, visitor);
- accept(it->value, visitor);
+ accept(name, visitor);
+ accept(value, visitor);
+ }
+
+ visitor->endVisit(this);
+}
+
+void PropertyGetterSetter::accept0(Visitor *visitor)
+{
+ if (visitor->visit(this)) {
+ accept(name, visitor);
+ accept(formals, visitor);
+ accept(functionBody, visitor);
+ }
+
+ visitor->endVisit(this);
+}
+
+void PropertyAssignmentList::accept0(Visitor *visitor)
+{
+ if (visitor->visit(this)) {
+ for (PropertyAssignmentList *it = this; it; it = it->next) {
+ accept(it->assignment, visitor);
}
}
@@ -789,7 +809,7 @@ void DebuggerStatement::accept0(Visitor *visitor)
void UiProgram::accept0(Visitor *visitor)
{
if (visitor->visit(this)) {
- accept(imports, visitor);
+ accept(headers, visitor);
accept(members, visitor);
}
@@ -900,16 +920,34 @@ void UiImport::accept0(Visitor *visitor)
visitor->endVisit(this);
}
-void UiImportList::accept0(Visitor *visitor)
+void UiQualifiedPragmaId::accept0(Visitor *visitor)
{
if (visitor->visit(this)) {
- accept(import, visitor);
+ }
+
+ visitor->endVisit(this);
+}
+
+void UiPragma::accept0(Visitor *visitor)
+{
+ if (visitor->visit(this)) {
+ accept(pragmaType, visitor);
+ }
+
+ visitor->endVisit(this);
+}
+
+void UiHeaderItemList::accept0(Visitor *visitor)
+{
+ if (visitor->visit(this)) {
+ accept(headerItem, visitor);
accept(next, visitor);
}
visitor->endVisit(this);
}
+
void UiSourceElement::accept0(Visitor *visitor)
{
if (visitor->visit(this)) {
diff --git a/src/libs/qmljs/parser/qmljsast_p.h b/src/libs/qmljs/parser/qmljsast_p.h
index ffae3140ee..eb03b8c8f6 100644
--- a/src/libs/qmljs/parser/qmljsast_p.h
+++ b/src/libs/qmljs/parser/qmljsast_p.h
@@ -45,7 +45,7 @@
#include "qmljsglobal_p.h"
#include "qmljsmemorypool_p.h"
-#include <QtCore/QString>
+#include <QtCore/qstring.h>
QT_QML_BEGIN_NAMESPACE
@@ -164,8 +164,10 @@ public:
Kind_PreDecrementExpression,
Kind_PreIncrementExpression,
Kind_Program,
+ Kind_PropertyAssignmentList,
+ Kind_PropertyGetterSetter,
Kind_PropertyName,
- Kind_PropertyNameAndValueList,
+ Kind_PropertyNameAndValue,
Kind_RegExpLiteral,
Kind_ReturnStatement,
Kind_SourceElement,
@@ -193,18 +195,20 @@ public:
Kind_UiArrayBinding,
Kind_UiImport,
- Kind_UiImportList,
Kind_UiObjectBinding,
Kind_UiObjectDefinition,
Kind_UiObjectInitializer,
Kind_UiObjectMemberList,
Kind_UiArrayMemberList,
+ Kind_UiPragma,
Kind_UiProgram,
Kind_UiParameterList,
Kind_UiPublicMember,
Kind_UiQualifiedId,
+ Kind_UiQualifiedPragmaId,
Kind_UiScriptBinding,
- Kind_UiSourceElement
+ Kind_UiSourceElement,
+ Kind_UiHeaderItemList
};
inline Node()
@@ -475,7 +479,7 @@ public:
ObjectLiteral():
properties (0) { kind = K; }
- ObjectLiteral(PropertyNameAndValueList *plist):
+ ObjectLiteral(PropertyAssignmentList *plist):
properties (plist) { kind = K; }
virtual void accept0(Visitor *visitor);
@@ -487,7 +491,7 @@ public:
{ return rbraceToken; }
// attributes
- PropertyNameAndValueList *properties;
+ PropertyAssignmentList *properties;
SourceLocation lbraceToken;
SourceLocation rbraceToken;
};
@@ -591,50 +595,113 @@ public:
SourceLocation propertyNameToken;
};
-class QML_PARSER_EXPORT PropertyNameAndValueList: public Node
+class QML_PARSER_EXPORT PropertyAssignment: public Node
{
public:
- QMLJS_DECLARE_AST_NODE(PropertyNameAndValueList)
+ PropertyAssignment() {}
+};
- PropertyNameAndValueList(PropertyName *n, ExpressionNode *v):
- name (n), value (v), next (this)
- { kind = K; }
+class QML_PARSER_EXPORT PropertyAssignmentList: public Node
+{
+public:
+ QMLJS_DECLARE_AST_NODE(PropertyAssignmentList)
+
+ PropertyAssignmentList(PropertyAssignment *assignment)
+ : assignment(assignment)
+ , next(this)
+ { kind = K; }
- PropertyNameAndValueList(PropertyNameAndValueList *previous, PropertyName *n, ExpressionNode *v):
- name (n), value (v)
+ PropertyAssignmentList(PropertyAssignmentList *previous, PropertyAssignment *assignment)
+ : assignment(assignment)
{
kind = K;
next = previous->next;
previous->next = this;
}
+ inline PropertyAssignmentList *finish ()
+ {
+ PropertyAssignmentList *front = next;
+ next = 0;
+ return front;
+ }
+
virtual void accept0(Visitor *visitor);
virtual SourceLocation firstSourceLocation() const
- { return name->firstSourceLocation(); }
+ { return assignment->firstSourceLocation(); }
virtual SourceLocation lastSourceLocation() const
- {
- if (next)
- return next->lastSourceLocation();
- return value->lastSourceLocation();
- }
+ { return next ? next->lastSourceLocation() : assignment->lastSourceLocation(); }
- inline PropertyNameAndValueList *finish ()
- {
- PropertyNameAndValueList *front = next;
- next = 0;
- return front;
- }
+// attributes
+ PropertyAssignment *assignment;
+ PropertyAssignmentList *next;
+ SourceLocation commaToken;
+};
+
+class QML_PARSER_EXPORT PropertyNameAndValue: public PropertyAssignment
+{
+public:
+ QMLJS_DECLARE_AST_NODE(PropertyNameAndValue)
+
+ PropertyNameAndValue(PropertyName *n, ExpressionNode *v)
+ : name(n), value(v)
+ { kind = K; }
+
+ virtual void accept0(Visitor *visitor);
+
+ virtual SourceLocation firstSourceLocation() const
+ { return name->firstSourceLocation(); }
+
+ virtual SourceLocation lastSourceLocation() const
+ { return value->lastSourceLocation(); }
// attributes
PropertyName *name;
- ExpressionNode *value;
- PropertyNameAndValueList *next;
SourceLocation colonToken;
+ ExpressionNode *value;
SourceLocation commaToken;
};
+class QML_PARSER_EXPORT PropertyGetterSetter: public PropertyAssignment
+{
+public:
+ QMLJS_DECLARE_AST_NODE(PropertyGetterSetter)
+
+ enum Type {
+ Getter,
+ Setter
+ };
+
+ PropertyGetterSetter(PropertyName *n, FunctionBody *b)
+ : type(Getter), name(n), formals(0), functionBody (b)
+ { kind = K; }
+
+ PropertyGetterSetter(PropertyName *n, FormalParameterList *f, FunctionBody *b)
+ : type(Setter), name(n), formals(f), functionBody (b)
+ { kind = K; }
+
+ virtual void accept0(Visitor *visitor);
+
+ virtual SourceLocation firstSourceLocation() const
+ { return getSetToken; }
+
+ virtual SourceLocation lastSourceLocation() const
+ { return rbraceToken; }
+
+// attributes
+ Type type;
+ SourceLocation getSetToken;
+ PropertyName *name;
+ SourceLocation lparenToken;
+ FormalParameterList *formals;
+ SourceLocation rparenToken;
+ SourceLocation lbraceToken;
+ FunctionBody *functionBody;
+ SourceLocation rbraceToken;
+};
+
class QML_PARSER_EXPORT IdentifierPropertyName: public PropertyName
{
public:
@@ -2194,27 +2261,72 @@ public:
SourceLocation semicolonToken;
};
-class QML_PARSER_EXPORT UiImportList: public Node
+class QML_PARSER_EXPORT UiObjectMember: public Node
+{
+public:
+ virtual SourceLocation firstSourceLocation() const = 0;
+ virtual SourceLocation lastSourceLocation() const = 0;
+
+ virtual UiObjectMember *uiObjectMemberCast();
+};
+
+class QML_PARSER_EXPORT UiObjectMemberList: public Node
{
public:
- QMLJS_DECLARE_AST_NODE(UiImportList)
+ QMLJS_DECLARE_AST_NODE(UiObjectMemberList)
- UiImportList(UiImport *import)
- : import(import),
- next(this)
+ UiObjectMemberList(UiObjectMember *member)
+ : next(this), member(member)
{ kind = K; }
- UiImportList(UiImportList *previous, UiImport *import)
- : import(import)
+ UiObjectMemberList(UiObjectMemberList *previous, UiObjectMember *member)
+ : member(member)
{
kind = K;
next = previous->next;
previous->next = this;
}
- UiImportList *finish()
+ virtual void accept0(Visitor *visitor);
+
+ virtual SourceLocation firstSourceLocation() const
+ { return member->firstSourceLocation(); }
+
+ virtual SourceLocation lastSourceLocation() const
+ { return next ? next->lastSourceLocation() : member->lastSourceLocation(); }
+
+ UiObjectMemberList *finish()
+ {
+ UiObjectMemberList *head = next;
+ next = 0;
+ return head;
+ }
+
+// attributes
+ UiObjectMemberList *next;
+ UiObjectMember *member;
+};
+
+class QML_PARSER_EXPORT UiQualifiedPragmaId: public Node
+{
+public:
+ QMLJS_DECLARE_AST_NODE(UiQualifiedPragmaId)
+
+ UiQualifiedPragmaId(const QStringRef &name)
+ : next(this), name(name)
+ { kind = K; }
+
+ UiQualifiedPragmaId(UiQualifiedPragmaId *previous, const QStringRef &name)
+ : name(name)
+ {
+ kind = K;
+ next = previous->next;
+ previous->next = this;
+ }
+
+ UiQualifiedPragmaId *finish()
{
- UiImportList *head = next;
+ UiQualifiedPragmaId *head = next;
next = 0;
return head;
}
@@ -2222,60 +2334,87 @@ public:
virtual void accept0(Visitor *visitor);
virtual SourceLocation firstSourceLocation() const
- { return import->firstSourceLocation(); }
+ { return identifierToken; }
virtual SourceLocation lastSourceLocation() const
- { return next ? next->lastSourceLocation() : import->lastSourceLocation(); }
+ { return next ? next->lastSourceLocation() : identifierToken; }
// attributes
- UiImport *import;
- UiImportList *next;
+ UiQualifiedPragmaId *next;
+ QStringRef name;
+ SourceLocation identifierToken;
};
-class QML_PARSER_EXPORT UiObjectMember: public Node
+class QML_PARSER_EXPORT UiPragma: public Node
{
public:
- virtual SourceLocation firstSourceLocation() const = 0;
- virtual SourceLocation lastSourceLocation() const = 0;
+ QMLJS_DECLARE_AST_NODE(UiPragma)
- virtual UiObjectMember *uiObjectMemberCast();
+ UiPragma(UiQualifiedPragmaId *type)
+ : pragmaType(type)
+ { kind = K; }
+
+ virtual void accept0(Visitor *visitor);
+
+ virtual SourceLocation firstSourceLocation() const
+ { return pragmaToken; }
+
+ virtual SourceLocation lastSourceLocation() const
+ { return semicolonToken; }
+
+// attributes
+ UiQualifiedPragmaId *pragmaType;
+ SourceLocation pragmaToken;
+ SourceLocation semicolonToken;
};
-class QML_PARSER_EXPORT UiObjectMemberList: public Node
+class QML_PARSER_EXPORT UiHeaderItemList: public Node
{
public:
- QMLJS_DECLARE_AST_NODE(UiObjectMemberList)
+ QMLJS_DECLARE_AST_NODE(UiHeaderItemList)
- UiObjectMemberList(UiObjectMember *member)
- : next(this), member(member)
+ UiHeaderItemList(UiImport *import)
+ : headerItem(import), next(this)
{ kind = K; }
- UiObjectMemberList(UiObjectMemberList *previous, UiObjectMember *member)
- : member(member)
+ UiHeaderItemList(UiPragma *pragma)
+ : headerItem(pragma), next(this)
+ { kind = K; }
+
+ UiHeaderItemList(UiHeaderItemList *previous, UiImport *import)
+ : headerItem(import)
{
kind = K;
next = previous->next;
previous->next = this;
}
- virtual void accept0(Visitor *visitor);
-
- virtual SourceLocation firstSourceLocation() const
- { return member->firstSourceLocation(); }
-
- virtual SourceLocation lastSourceLocation() const
- { return next ? next->lastSourceLocation() : member->lastSourceLocation(); }
+ UiHeaderItemList(UiHeaderItemList *previous, UiPragma *pragma)
+ : headerItem(pragma)
+ {
+ kind = K;
+ next = previous->next;
+ previous->next = this;
+ }
- UiObjectMemberList *finish()
+ UiHeaderItemList *finish()
{
- UiObjectMemberList *head = next;
+ UiHeaderItemList *head = next;
next = 0;
return head;
}
+ virtual void accept0(Visitor *visitor);
+
+ virtual SourceLocation firstSourceLocation() const
+ { return headerItem->firstSourceLocation(); }
+
+ virtual SourceLocation lastSourceLocation() const
+ { return next ? next->lastSourceLocation() : headerItem->lastSourceLocation(); }
+
// attributes
- UiObjectMemberList *next;
- UiObjectMember *member;
+ Node *headerItem;
+ UiHeaderItemList *next;
};
class QML_PARSER_EXPORT UiProgram: public Node
@@ -2283,16 +2422,16 @@ class QML_PARSER_EXPORT UiProgram: public Node
public:
QMLJS_DECLARE_AST_NODE(UiProgram)
- UiProgram(UiImportList *imports, UiObjectMemberList *members)
- : imports(imports), members(members)
+ UiProgram(UiHeaderItemList *headers, UiObjectMemberList *members)
+ : headers(headers), members(members)
{ kind = K; }
virtual void accept0(Visitor *visitor);
virtual SourceLocation firstSourceLocation() const
{
- if (imports)
- return imports->firstSourceLocation();
+ if (headers)
+ return headers->firstSourceLocation();
else if (members)
return members->firstSourceLocation();
return SourceLocation();
@@ -2302,13 +2441,13 @@ public:
{
if (members)
return members->lastSourceLocation();
- else if (imports)
- return imports->lastSourceLocation();
+ else if (headers)
+ return headers->lastSourceLocation();
return SourceLocation();
}
// attributes
- UiImportList *imports;
+ UiHeaderItemList *headers;
UiObjectMemberList *members;
};
diff --git a/src/libs/qmljs/parser/qmljsastfwd_p.h b/src/libs/qmljs/parser/qmljsastfwd_p.h
index d1ab8d68f2..05f7c4acb0 100644
--- a/src/libs/qmljs/parser/qmljsastfwd_p.h
+++ b/src/libs/qmljs/parser/qmljsastfwd_p.h
@@ -86,7 +86,9 @@ class ArrayLiteral;
class ObjectLiteral;
class ElementList;
class Elision;
-class PropertyNameAndValueList;
+class PropertyAssignmentList;
+class PropertyGetterSetter;
+class PropertyNameAndValue;
class PropertyName;
class IdentifierPropertyName;
class StringLiteralPropertyName;
@@ -153,7 +155,7 @@ class NestedExpression;
// ui elements
class UiProgram;
-class UiImportList;
+class UiPragma;
class UiImport;
class UiPublicMember;
class UiParameterList;
@@ -167,6 +169,8 @@ class UiObjectMember;
class UiObjectMemberList;
class UiArrayMemberList;
class UiQualifiedId;
+class UiQualifiedPragmaId;
+class UiHeaderItemList;
} } // namespace AST
diff --git a/src/libs/qmljs/parser/qmljsastvisitor_p.h b/src/libs/qmljs/parser/qmljsastvisitor_p.h
index 3a0370c9a0..cc4ff897cf 100644
--- a/src/libs/qmljs/parser/qmljsastvisitor_p.h
+++ b/src/libs/qmljs/parser/qmljsastvisitor_p.h
@@ -59,7 +59,8 @@ public:
// Ui
virtual bool visit(UiProgram *) { return true; }
- virtual bool visit(UiImportList *) { return true; }
+ virtual bool visit(UiHeaderItemList *) { return true; }
+ virtual bool visit(UiPragma *) { return true; }
virtual bool visit(UiImport *) { return true; }
virtual bool visit(UiPublicMember *) { return true; }
virtual bool visit(UiSourceElement *) { return true; }
@@ -72,10 +73,12 @@ public:
virtual bool visit(UiObjectMemberList *) { return true; }
virtual bool visit(UiArrayMemberList *) { return true; }
virtual bool visit(UiQualifiedId *) { return true; }
+ virtual bool visit(UiQualifiedPragmaId *) { return true; }
virtual void endVisit(UiProgram *) {}
- virtual void endVisit(UiImportList *) {}
virtual void endVisit(UiImport *) {}
+ virtual void endVisit(UiHeaderItemList *) {}
+ virtual void endVisit(UiPragma *) {}
virtual void endVisit(UiPublicMember *) {}
virtual void endVisit(UiSourceElement *) {}
virtual void endVisit(UiObjectDefinition *) {}
@@ -87,6 +90,7 @@ public:
virtual void endVisit(UiObjectMemberList *) {}
virtual void endVisit(UiArrayMemberList *) {}
virtual void endVisit(UiQualifiedId *) {}
+ virtual void endVisit(UiQualifiedPragmaId *) {}
// QmlJS
virtual bool visit(ThisExpression *) { return true; }
@@ -125,8 +129,14 @@ public:
virtual bool visit(Elision *) { return true; }
virtual void endVisit(Elision *) {}
- virtual bool visit(PropertyNameAndValueList *) { return true; }
- virtual void endVisit(PropertyNameAndValueList *) {}
+ virtual bool visit(PropertyAssignmentList *) { return true; }
+ virtual void endVisit(PropertyAssignmentList *) {}
+
+ virtual bool visit(PropertyNameAndValue *) { return true; }
+ virtual void endVisit(PropertyNameAndValue *) {}
+
+ virtual bool visit(PropertyGetterSetter *) { return true; }
+ virtual void endVisit(PropertyGetterSetter *) {}
virtual bool visit(NestedExpression *) { return true; }
virtual void endVisit(NestedExpression *) {}
diff --git a/src/libs/qmljs/parser/qmljsengine_p.cpp b/src/libs/qmljs/parser/qmljsengine_p.cpp
index c2527b69b8..e1d28cfd6b 100644
--- a/src/libs/qmljs/parser/qmljsengine_p.cpp
+++ b/src/libs/qmljs/parser/qmljsengine_p.cpp
@@ -30,15 +30,15 @@
#include "qmljsengine_p.h"
#include "qmljsglobal_p.h"
-#include <qnumeric.h>
-#include <QHash>
-#include <QDebug>
+#include <QtCore/qnumeric.h>
+#include <QtCore/qhash.h>
+#include <QtCore/qdebug.h>
QT_QML_BEGIN_NAMESPACE
namespace QmlJS {
-static int toDigit(char c)
+static inline int toDigit(char c)
{
if ((c >= '0') && (c <= '9'))
return c - '0';
diff --git a/src/libs/qmljs/parser/qmljsengine_p.h b/src/libs/qmljs/parser/qmljsengine_p.h
index b43b1be239..e266491d4d 100644
--- a/src/libs/qmljs/parser/qmljsengine_p.h
+++ b/src/libs/qmljs/parser/qmljsengine_p.h
@@ -91,6 +91,7 @@ public:
~Engine();
void setCode(const QString &code);
+ const QString &code() const { return _code; }
void addComment(int pos, int len, int line, int col);
QList<AST::SourceLocation> comments() const;
diff --git a/src/libs/qmljs/parser/qmljsglobal_p.h b/src/libs/qmljs/parser/qmljsglobal_p.h
index 7252f277fe..bfd3dfda74 100644
--- a/src/libs/qmljs/parser/qmljsglobal_p.h
+++ b/src/libs/qmljs/parser/qmljsglobal_p.h
@@ -49,8 +49,10 @@
# if defined(QT_BUILD_QMLDEVTOOLS_LIB) || defined(QT_QMLDEVTOOLS_LIB)
// QmlDevTools is a static library
# define QML_PARSER_EXPORT
-# else
+# elif defined(QT_BUILD_QML_LIB)
# define QML_PARSER_EXPORT Q_AUTOTEST_EXPORT
+# else
+# define QML_PARSER_EXPORT
# endif
#endif // QT_CREATOR
diff --git a/src/libs/qmljs/parser/qmljsgrammar.cpp b/src/libs/qmljs/parser/qmljsgrammar.cpp
index 39bfad5c1b..d74297d6cf 100644
--- a/src/libs/qmljs/parser/qmljsgrammar.cpp
+++ b/src/libs/qmljs/parser/qmljsgrammar.cpp
@@ -42,847 +42,868 @@ const char *const QmlJSGrammar::spell [] = {
")", ";", 0, "*", "*=", "string literal", "property", "signal", "readonly", "switch",
"this", "throw", "~", "try", "typeof", "var", "void", "while", "with", "^",
"^=", "null", "true", "false", "const", "debugger", "reserved word", "multiline string literal", "comment", 0,
- "public", "import", "as", "on", 0, 0, 0, 0, 0, 0,
- 0, 0, 0};
+ "public", "import", "pragma", "as", "on", "get", "set", 0, 0, 0,
+ 0, 0, 0, 0, 0, 0};
const short QmlJSGrammar::lhs [] = {
- 103, 103, 103, 103, 103, 103, 104, 110, 110, 113,
- 113, 115, 114, 114, 114, 114, 114, 114, 114, 114,
- 117, 112, 111, 120, 120, 121, 121, 122, 122, 119,
- 108, 108, 108, 108, 124, 124, 124, 124, 124, 124,
- 124, 108, 132, 132, 132, 133, 133, 134, 134, 108,
+ 106, 106, 106, 106, 106, 106, 107, 113, 113, 116,
+ 116, 116, 116, 119, 121, 117, 117, 118, 118, 118,
+ 118, 118, 118, 118, 118, 122, 123, 115, 114, 126,
+ 126, 127, 127, 128, 128, 125, 111, 111, 111, 111,
+ 130, 130, 130, 130, 130, 130, 130, 111, 138, 138,
+ 138, 139, 139, 140, 140, 111, 111, 111, 111, 111,
+ 111, 111, 111, 111, 111, 111, 111, 111, 111, 111,
+ 111, 111, 124, 124, 124, 124, 124, 124, 124, 143,
+ 143, 143, 143, 143, 143, 143, 143, 143, 143, 143,
+ 143, 143, 143, 143, 143, 143, 143, 129, 145, 145,
+ 145, 145, 144, 144, 149, 149, 149, 147, 147, 150,
+ 150, 150, 150, 153, 153, 153, 153, 153, 153, 153,
+ 153, 153, 153, 153, 153, 153, 153, 153, 153, 153,
+ 153, 153, 153, 153, 153, 153, 153, 153, 153, 153,
+ 153, 153, 153, 153, 154, 154, 120, 120, 120, 120,
+ 120, 157, 157, 158, 158, 158, 158, 156, 156, 159,
+ 159, 160, 160, 161, 161, 161, 162, 162, 162, 162,
+ 162, 162, 162, 162, 162, 162, 163, 163, 163, 163,
+ 164, 164, 164, 165, 165, 165, 165, 166, 166, 166,
+ 166, 166, 166, 166, 167, 167, 167, 167, 167, 167,
+ 168, 168, 168, 168, 168, 169, 169, 169, 169, 169,
+ 170, 170, 171, 171, 172, 172, 173, 173, 174, 174,
+ 175, 175, 176, 176, 177, 177, 178, 178, 179, 179,
+ 180, 180, 181, 181, 148, 148, 182, 182, 183, 183,
+ 183, 183, 183, 183, 183, 183, 183, 183, 183, 183,
+ 109, 109, 184, 184, 185, 185, 186, 186, 108, 108,
108, 108, 108, 108, 108, 108, 108, 108, 108, 108,
- 108, 108, 108, 108, 108, 108, 118, 118, 118, 118,
- 118, 137, 137, 137, 137, 137, 137, 137, 137, 137,
- 137, 137, 137, 137, 137, 137, 137, 137, 137, 123,
- 139, 139, 139, 139, 138, 138, 141, 141, 143, 143,
- 143, 143, 143, 143, 144, 144, 144, 144, 144, 144,
- 144, 144, 144, 144, 144, 144, 144, 144, 144, 144,
- 144, 144, 144, 144, 144, 144, 144, 144, 144, 144,
- 144, 144, 144, 144, 144, 145, 145, 116, 116, 116,
- 116, 116, 148, 148, 149, 149, 149, 149, 147, 147,
- 150, 150, 151, 151, 152, 152, 152, 153, 153, 153,
- 153, 153, 153, 153, 153, 153, 153, 154, 154, 154,
- 154, 155, 155, 155, 156, 156, 156, 156, 157, 157,
- 157, 157, 157, 157, 157, 158, 158, 158, 158, 158,
- 158, 159, 159, 159, 159, 159, 160, 160, 160, 160,
- 160, 161, 161, 162, 162, 163, 163, 164, 164, 165,
- 165, 166, 166, 167, 167, 168, 168, 169, 169, 170,
- 170, 171, 171, 172, 172, 142, 142, 173, 173, 174,
- 174, 174, 174, 174, 174, 174, 174, 174, 174, 174,
- 174, 106, 106, 175, 175, 176, 176, 177, 177, 105,
- 105, 105, 105, 105, 105, 105, 105, 105, 105, 105,
- 105, 105, 105, 105, 125, 186, 186, 185, 185, 136,
- 136, 187, 187, 188, 188, 190, 190, 189, 191, 194,
- 192, 192, 195, 193, 193, 126, 127, 127, 128, 128,
- 178, 178, 178, 178, 178, 178, 178, 178, 179, 179,
- 179, 179, 180, 180, 180, 180, 181, 181, 129, 130,
- 196, 196, 199, 199, 197, 197, 200, 198, 182, 182,
- 182, 183, 183, 131, 131, 131, 201, 202, 184, 184,
- 135, 146, 206, 206, 203, 203, 204, 204, 207, 109,
- 109, 208, 208, 107, 107, 205, 205, 140, 140, 209};
+ 108, 108, 108, 131, 195, 195, 194, 194, 142, 142,
+ 196, 196, 197, 197, 199, 199, 198, 200, 203, 201,
+ 201, 204, 202, 202, 132, 133, 133, 134, 134, 187,
+ 187, 187, 187, 187, 187, 187, 187, 188, 188, 188,
+ 188, 189, 189, 189, 189, 190, 190, 135, 136, 205,
+ 205, 208, 208, 206, 206, 209, 207, 191, 192, 192,
+ 137, 137, 137, 210, 211, 193, 193, 212, 141, 155,
+ 155, 213, 213, 152, 152, 151, 151, 214, 112, 112,
+ 215, 215, 110, 110, 146, 146, 216};
const short QmlJSGrammar::rhs [] = {
2, 2, 2, 2, 2, 2, 2, 1, 1, 1,
- 2, 1, 2, 2, 3, 3, 5, 5, 4, 4,
- 2, 0, 1, 1, 2, 1, 3, 2, 3, 2,
- 1, 5, 4, 4, 1, 1, 1, 1, 1, 1,
- 1, 3, 1, 1, 1, 0, 1, 2, 4, 6,
- 6, 3, 3, 7, 7, 4, 4, 5, 5, 5,
- 6, 6, 10, 6, 1, 1, 1, 1, 1, 1,
+ 1, 2, 2, 1, 1, 2, 2, 2, 2, 3,
+ 3, 5, 5, 4, 4, 2, 2, 0, 1, 1,
+ 2, 1, 3, 2, 3, 2, 1, 5, 4, 4,
+ 1, 1, 1, 1, 1, 1, 1, 3, 1, 1,
+ 1, 0, 1, 2, 4, 6, 6, 3, 3, 7,
+ 7, 4, 4, 5, 5, 5, 6, 6, 10, 6,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 2, 3, 3, 4, 5, 3, 4, 3, 1,
- 1, 2, 3, 4, 1, 2, 3, 5, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 2,
+ 3, 3, 4, 5, 3, 4, 3, 1, 1, 2,
+ 3, 4, 1, 2, 3, 7, 8, 1, 3, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 4,
- 3, 5, 1, 2, 4, 4, 4, 3, 0, 1,
- 1, 3, 1, 1, 1, 2, 2, 1, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 1, 3, 3,
- 3, 1, 3, 3, 1, 3, 3, 3, 1, 3,
- 3, 3, 3, 3, 3, 1, 3, 3, 3, 3,
- 3, 1, 3, 3, 3, 3, 1, 3, 3, 3,
- 3, 1, 3, 1, 3, 1, 3, 1, 3, 1,
- 3, 1, 3, 1, 3, 1, 3, 1, 3, 1,
- 3, 1, 5, 1, 5, 1, 3, 1, 3, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 4, 3,
+ 5, 1, 2, 4, 4, 4, 3, 0, 1, 1,
+ 3, 1, 1, 1, 2, 2, 1, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 1, 3, 3, 3,
+ 1, 3, 3, 1, 3, 3, 3, 1, 3, 3,
+ 3, 3, 3, 3, 1, 3, 3, 3, 3, 3,
+ 1, 3, 3, 3, 3, 1, 3, 3, 3, 3,
+ 1, 3, 1, 3, 1, 3, 1, 3, 1, 3,
+ 1, 3, 1, 3, 1, 3, 1, 3, 1, 3,
+ 1, 5, 1, 5, 1, 3, 1, 3, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 3, 0, 1, 1, 3, 0, 1, 1,
+ 1, 3, 0, 1, 1, 3, 0, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 3, 1, 2, 0, 1, 3,
- 3, 1, 1, 1, 3, 1, 3, 2, 2, 2,
- 0, 1, 2, 0, 1, 1, 2, 2, 7, 5,
- 7, 7, 7, 5, 9, 10, 7, 8, 2, 2,
- 3, 3, 2, 2, 3, 3, 3, 3, 5, 5,
- 3, 5, 1, 2, 0, 1, 4, 3, 3, 3,
- 3, 3, 3, 3, 3, 4, 5, 2, 2, 2,
- 8, 8, 1, 3, 0, 1, 0, 1, 1, 1,
- 1, 1, 2, 1, 1, 0, 1, 0, 1, 2};
+ 1, 1, 1, 3, 1, 2, 0, 1, 3, 3,
+ 1, 1, 1, 3, 1, 3, 2, 2, 2, 0,
+ 1, 2, 0, 1, 1, 2, 2, 7, 5, 7,
+ 7, 7, 5, 9, 10, 7, 8, 2, 2, 3,
+ 3, 2, 2, 3, 3, 3, 3, 5, 5, 3,
+ 5, 1, 2, 0, 1, 4, 3, 3, 3, 3,
+ 3, 3, 4, 5, 2, 2, 2, 1, 8, 8,
+ 7, 1, 3, 0, 1, 0, 1, 1, 1, 1,
+ 1, 2, 1, 1, 0, 1, 2};
const short QmlJSGrammar::action_default [] = {
- 0, 0, 22, 0, 0, 0, 22, 0, 175, 242,
- 206, 214, 210, 154, 226, 202, 3, 139, 73, 155,
- 218, 222, 143, 172, 153, 158, 138, 192, 179, 0,
- 80, 81, 76, 346, 67, 348, 0, 0, 0, 0,
- 78, 0, 0, 74, 77, 71, 0, 0, 68, 70,
- 69, 79, 72, 0, 75, 0, 0, 168, 0, 0,
- 155, 174, 157, 156, 0, 0, 0, 170, 171, 169,
- 173, 0, 203, 0, 0, 0, 0, 193, 0, 0,
- 0, 0, 0, 0, 183, 0, 0, 0, 177, 178,
- 176, 181, 185, 184, 182, 180, 195, 194, 196, 0,
- 211, 0, 207, 0, 0, 149, 136, 148, 137, 105,
- 106, 107, 132, 108, 133, 109, 110, 111, 112, 113,
- 114, 115, 116, 117, 118, 119, 120, 121, 134, 122,
- 123, 124, 125, 126, 127, 128, 129, 130, 131, 135,
- 0, 0, 147, 243, 150, 0, 151, 0, 152, 146,
- 0, 239, 232, 230, 237, 238, 236, 235, 241, 234,
- 233, 231, 240, 227, 0, 215, 0, 0, 219, 0,
- 0, 223, 0, 0, 149, 141, 0, 140, 0, 145,
- 159, 0, 347, 335, 336, 0, 333, 0, 334, 0,
- 337, 250, 257, 256, 264, 252, 0, 253, 338, 0,
- 345, 254, 255, 260, 258, 342, 339, 344, 261, 0,
- 272, 0, 0, 0, 0, 346, 67, 0, 348, 68,
- 244, 286, 69, 0, 0, 0, 273, 0, 0, 262,
- 263, 0, 251, 259, 287, 288, 332, 343, 0, 303,
- 304, 305, 306, 0, 299, 300, 301, 302, 329, 330,
- 0, 0, 0, 0, 0, 291, 292, 293, 248, 246,
- 208, 216, 212, 228, 204, 249, 0, 155, 220, 224,
- 197, 186, 0, 0, 205, 0, 0, 0, 0, 198,
- 0, 0, 0, 0, 0, 190, 188, 191, 189, 187,
- 200, 199, 201, 0, 213, 0, 209, 0, 247, 155,
- 0, 229, 244, 245, 0, 244, 0, 0, 295, 0,
- 0, 0, 297, 0, 217, 0, 0, 221, 0, 0,
- 225, 284, 0, 276, 285, 279, 0, 283, 0, 244,
- 277, 0, 244, 0, 0, 296, 0, 0, 0, 298,
- 347, 335, 0, 0, 337, 0, 331, 0, 321, 0,
- 0, 0, 290, 0, 289, 0, 349, 0, 104, 266,
- 269, 0, 105, 272, 108, 133, 110, 111, 76, 115,
- 116, 67, 117, 120, 74, 77, 68, 244, 69, 79,
- 123, 72, 125, 75, 127, 128, 273, 130, 131, 135,
- 0, 97, 0, 0, 99, 103, 101, 88, 100, 102,
- 0, 98, 87, 267, 265, 143, 144, 149, 0, 142,
- 0, 320, 0, 307, 308, 0, 319, 0, 0, 0,
- 310, 315, 313, 316, 0, 0, 314, 315, 0, 311,
- 0, 312, 268, 318, 0, 268, 317, 0, 322, 323,
- 0, 268, 324, 325, 0, 0, 326, 0, 0, 0,
- 327, 328, 161, 160, 0, 0, 0, 294, 0, 0,
- 0, 309, 281, 274, 0, 282, 278, 0, 280, 270,
- 0, 271, 275, 91, 0, 0, 95, 82, 0, 84,
- 93, 0, 85, 94, 96, 86, 92, 83, 0, 89,
- 165, 163, 167, 164, 162, 166, 340, 6, 341, 4,
- 2, 65, 90, 0, 0, 68, 70, 69, 31, 5,
- 0, 66, 0, 45, 44, 43, 0, 0, 58, 0,
- 59, 35, 36, 37, 38, 40, 41, 62, 39, 0,
- 45, 0, 0, 0, 0, 0, 54, 0, 55, 0,
- 0, 26, 0, 0, 63, 27, 0, 30, 28, 24,
- 0, 29, 25, 0, 56, 0, 57, 143, 0, 60,
- 64, 0, 0, 0, 0, 61, 0, 52, 46, 53,
- 47, 0, 0, 0, 0, 49, 0, 50, 51, 48,
- 0, 0, 143, 268, 0, 0, 42, 105, 272, 108,
- 133, 110, 111, 76, 115, 116, 67, 117, 120, 74,
- 77, 68, 244, 69, 79, 123, 72, 125, 75, 127,
- 128, 273, 130, 131, 135, 0, 32, 33, 0, 34,
- 8, 0, 10, 0, 9, 0, 1, 21, 12, 0,
- 13, 0, 14, 0, 19, 20, 0, 15, 16, 0,
- 17, 18, 11, 23, 7, 350};
+ 0, 0, 28, 0, 0, 0, 28, 0, 184, 251,
+ 215, 223, 219, 163, 235, 211, 3, 148, 81, 164,
+ 227, 231, 152, 181, 162, 167, 147, 201, 188, 0,
+ 88, 89, 84, 0, 78, 73, 355, 0, 0, 0,
+ 0, 86, 0, 0, 82, 85, 77, 0, 0, 74,
+ 76, 79, 75, 87, 80, 0, 83, 0, 0, 177,
+ 0, 0, 164, 183, 166, 165, 0, 0, 0, 179,
+ 180, 178, 182, 0, 212, 0, 0, 0, 0, 202,
+ 0, 0, 0, 0, 0, 0, 192, 0, 0, 0,
+ 186, 187, 185, 190, 194, 193, 191, 189, 204, 203,
+ 205, 0, 220, 0, 216, 0, 0, 158, 145, 157,
+ 146, 114, 115, 116, 141, 117, 142, 118, 119, 120,
+ 121, 122, 123, 124, 125, 126, 127, 128, 129, 130,
+ 143, 131, 132, 133, 134, 135, 136, 137, 138, 139,
+ 140, 144, 0, 0, 156, 252, 159, 0, 160, 0,
+ 161, 155, 0, 248, 241, 239, 246, 247, 245, 244,
+ 250, 243, 242, 240, 249, 236, 0, 224, 0, 0,
+ 228, 0, 0, 232, 0, 0, 158, 150, 0, 149,
+ 0, 154, 168, 0, 344, 344, 345, 0, 342, 0,
+ 343, 0, 346, 259, 266, 265, 273, 261, 0, 262,
+ 0, 347, 0, 354, 263, 264, 81, 269, 267, 351,
+ 348, 353, 270, 0, 281, 0, 0, 0, 0, 338,
+ 0, 355, 253, 295, 0, 0, 0, 282, 0, 0,
+ 271, 272, 0, 260, 268, 296, 297, 0, 344, 0,
+ 0, 346, 0, 339, 340, 0, 328, 352, 0, 312,
+ 313, 314, 315, 0, 308, 309, 310, 311, 336, 337,
+ 0, 0, 0, 0, 0, 300, 301, 302, 257, 255,
+ 217, 225, 221, 237, 213, 258, 0, 164, 229, 233,
+ 206, 195, 0, 0, 214, 0, 0, 0, 0, 207,
+ 0, 0, 0, 0, 0, 199, 197, 200, 198, 196,
+ 209, 208, 210, 0, 222, 0, 218, 0, 256, 164,
+ 0, 238, 253, 254, 0, 253, 0, 0, 304, 0,
+ 0, 0, 306, 0, 226, 0, 0, 230, 0, 0,
+ 234, 293, 0, 285, 294, 288, 0, 292, 0, 253,
+ 286, 0, 253, 0, 0, 305, 0, 0, 0, 307,
+ 0, 0, 0, 299, 0, 298, 81, 108, 356, 0,
+ 0, 113, 275, 278, 0, 114, 281, 117, 142, 119,
+ 120, 84, 124, 125, 78, 126, 129, 82, 85, 253,
+ 79, 87, 132, 80, 134, 83, 136, 137, 282, 139,
+ 140, 144, 0, 110, 109, 112, 96, 111, 95, 0,
+ 105, 276, 274, 0, 0, 0, 346, 0, 106, 152,
+ 153, 158, 0, 151, 0, 316, 317, 0, 344, 0,
+ 0, 346, 0, 107, 0, 0, 0, 319, 324, 322,
+ 325, 0, 0, 323, 324, 0, 320, 0, 321, 277,
+ 327, 0, 277, 326, 0, 329, 330, 0, 277, 331,
+ 332, 0, 0, 333, 0, 0, 0, 334, 335, 170,
+ 169, 0, 0, 0, 303, 0, 0, 0, 318, 290,
+ 283, 0, 291, 287, 0, 289, 279, 0, 280, 284,
+ 0, 0, 346, 0, 341, 99, 0, 0, 103, 90,
+ 0, 92, 101, 0, 93, 102, 104, 94, 100, 91,
+ 0, 97, 174, 172, 176, 173, 171, 175, 349, 6,
+ 350, 4, 2, 71, 98, 0, 0, 74, 76, 75,
+ 37, 5, 0, 72, 0, 51, 50, 49, 0, 0,
+ 64, 0, 65, 41, 42, 43, 44, 46, 47, 68,
+ 45, 0, 51, 0, 0, 0, 0, 0, 60, 0,
+ 61, 0, 0, 32, 0, 0, 69, 33, 0, 36,
+ 34, 30, 0, 35, 31, 0, 62, 0, 63, 152,
+ 0, 66, 70, 0, 0, 0, 0, 67, 0, 58,
+ 52, 59, 53, 0, 0, 0, 0, 55, 0, 56,
+ 57, 54, 0, 0, 152, 277, 0, 0, 48, 81,
+ 114, 281, 117, 142, 119, 120, 84, 124, 125, 126,
+ 129, 82, 85, 253, 87, 132, 80, 134, 83, 136,
+ 137, 282, 139, 140, 144, 0, 38, 39, 0, 40,
+ 8, 0, 0, 9, 0, 11, 0, 10, 0, 1,
+ 27, 15, 14, 26, 13, 12, 29, 7, 0, 18,
+ 0, 19, 0, 24, 25, 0, 20, 21, 0, 22,
+ 23, 16, 17, 357};
const short QmlJSGrammar::goto_default [] = {
- 7, 626, 207, 196, 205, 509, 497, 625, 644, 496,
- 624, 622, 627, 22, 623, 18, 508, 550, 540, 547,
- 542, 527, 191, 195, 197, 201, 233, 208, 230, 531,
- 571, 570, 200, 232, 26, 475, 474, 357, 356, 9,
- 355, 358, 107, 17, 145, 24, 13, 144, 19, 25,
- 57, 23, 8, 28, 27, 270, 15, 264, 10, 260,
- 12, 262, 11, 261, 20, 268, 21, 269, 14, 263,
- 259, 300, 412, 265, 266, 202, 193, 192, 204, 203,
- 229, 194, 361, 360, 231, 464, 463, 322, 323, 466,
- 325, 465, 324, 420, 424, 427, 423, 422, 442, 443,
- 185, 199, 181, 184, 198, 206, 0};
+ 7, 639, 211, 198, 209, 521, 509, 634, 647, 508,
+ 633, 637, 635, 643, 22, 640, 638, 636, 18, 520,
+ 562, 552, 559, 554, 539, 193, 197, 199, 204, 234,
+ 212, 231, 543, 583, 582, 203, 233, 26, 487, 486,
+ 359, 358, 9, 357, 360, 202, 480, 361, 109, 17,
+ 147, 24, 13, 146, 19, 25, 59, 23, 8, 28,
+ 27, 280, 15, 274, 10, 270, 12, 272, 11, 271,
+ 20, 278, 21, 279, 14, 273, 269, 310, 414, 275,
+ 276, 205, 195, 194, 208, 207, 230, 196, 364, 363,
+ 232, 471, 470, 332, 333, 473, 335, 472, 334, 427,
+ 431, 434, 430, 429, 449, 450, 200, 186, 201, 210,
+ 0};
const short QmlJSGrammar::action_index [] = {
- 425, 1471, 2619, 2619, 2718, 1193, 69, 100, 86, -103,
- 97, 62, 60, 236, -103, 278, 93, -103, -103, 609,
- 83, 117, 266, 184, -103, -103, -103, 514, 179, 1471,
- -103, -103, -103, 392, -103, 2421, 1754, 1471, 1471, 1471,
- -103, 1001, 1471, -103, -103, -103, 1471, 1471, -103, -103,
- -103, -103, -103, 1471, -103, 1471, 1471, -103, 1471, 1471,
- 115, 169, -103, -103, 1471, 1471, 1471, -103, -103, -103,
- 152, 1471, 286, 1471, 1471, 1471, 1471, 562, 1471, 1471,
- 1471, 1471, 1471, 1471, 198, 1471, 1471, 1471, 87, 122,
- 138, 212, 197, 183, 227, 265, 562, 504, 472, 1471,
- 79, 1471, 102, 2322, 1471, 1471, -103, -103, -103, -103,
- -103, -103, -103, -103, -103, -103, -103, -103, -103, -103,
- -103, -103, -103, -103, -103, -103, -103, -103, -103, -103,
- -103, -103, -103, -103, -103, -103, -103, -103, -103, -103,
- 132, 1471, -103, -103, 94, 11, -103, 1471, -103, -103,
- 1471, -103, -103, -103, -103, -103, -103, -103, -103, -103,
- -103, -103, -103, -103, 1471, 31, 1471, 1471, 67, 68,
- 1471, -103, 2322, 1471, 1471, -103, 98, -103, 39, -103,
- -103, 61, -103, 296, 66, 30, -103, 376, -103, 35,
- 2619, -103, -103, -103, -103, -103, 237, -103, -103, 21,
- -103, -103, -103, -103, -103, -103, 2619, -103, -103, 513,
- -103, 541, 114, 2718, 36, 422, 59, 42, 2916, 75,
- 1471, -103, 77, 53, 1471, 63, -103, 57, 58, -103,
- -103, 407, -103, -103, -103, -103, -103, -103, 80, -103,
- -103, -103, -103, 82, -103, -103, -103, -103, -103, -103,
- 52, 51, 1471, 96, 200, -103, -103, -103, 1659, -103,
- 76, 44, 46, -103, 298, 73, 48, 736, 78, 95,
- 363, 233, 347, 1471, 303, 1471, 1471, 1471, 1471, 402,
- 1471, 1471, 1471, 1471, 1471, 248, 189, 159, 167, 174,
- 482, 482, 444, 1471, 7, 1471, 64, 1471, -103, 627,
- 1471, -103, 1471, 65, 34, 1471, 54, 2718, -103, 1471,
- 140, 2718, -103, 1471, 74, 1471, 1471, 81, 84, 1471,
- -103, 71, 116, 33, -103, -103, 1471, -103, 313, 1471,
- -103, 70, 1471, 72, 2718, -103, 1471, 234, 2718, -103,
- -16, 324, -42, -12, 2619, -39, -103, 2718, -103, 1471,
- 151, 2718, 12, 2718, -103, 20, 16, -32, -103, -103,
- 2718, -52, 521, -2, 505, 129, 1471, 2718, -5, -35,
- 497, 2, -24, 819, 6, 3, -103, 1567, -103, -1,
- -36, 26, 1471, 47, 22, 1471, 45, 1471, 17, 15,
- 1471, -103, 2520, 49, -103, -103, -103, -103, -103, -103,
- 1471, -103, -103, -103, -103, 322, -103, 1471, -25, -103,
- 2718, -103, 118, -103, -103, 2718, -103, 1471, 112, 8,
- -103, 40, -103, 41, 106, 1471, -103, 38, 32, -103,
- -38, -103, 2718, -103, 104, 2718, -103, 247, -103, -103,
- 99, 2718, -6, -103, -10, -18, -103, 387, 10, 9,
- -103, -103, -103, -103, 1471, 125, 2718, -103, 1471, 127,
- 2718, -103, -13, -103, 187, -103, -103, 1471, -103, -103,
- 398, -103, -103, -103, 110, 2039, -103, -103, 1849, -103,
- -103, 1944, -103, -103, -103, -103, -103, -103, 105, -103,
- -103, -103, -103, -103, -103, -103, -103, -103, 2619, -103,
- -103, -103, 113, -7, 1009, 145, -8, 19, -103, -103,
- 186, -103, 178, -103, -103, -103, 356, 226, -103, 2131,
- -103, -103, -103, -103, -103, -103, -103, -103, -103, 322,
- -26, 364, 205, 43, 316, 206, -103, -3, -103, 1009,
- 107, -103, -11, 827, -103, -103, 1379, -103, -103, -103,
- 1286, -103, -103, 195, -103, 2131, -103, 305, -4, -103,
- -103, 209, 379, 18, 2131, -103, 182, -103, 199, -103,
- 0, -53, 306, 154, 284, -103, 108, -103, -103, -103,
- 2223, 918, 300, 2817, 1754, 5, -103, 549, 139, 636,
- 114, 1471, 2718, 50, 24, 463, 55, -17, 910, 23,
- 56, -103, 1567, -103, 27, 1, 29, 1471, 37, 14,
- 1471, 25, 1471, 4, 13, 126, -103, -103, 28, -103,
- -103, 1100, -103, 267, -41, 714, -103, -103, 121, 301,
- -103, 215, -103, 91, -103, -103, 336, -103, -103, 89,
- -103, -103, -103, -103, -103, -103,
+ 239, 1406, 2692, 2692, 2794, 1119, 115, 29, 168, -106,
+ 26, -23, -60, 225, -106, 306, 33, -106, -106, 732,
+ -2, 145, 243, 223, -106, -106, -106, 379, 227, 1406,
+ -106, -106, -106, 539, -106, -106, 2488, 1698, 1406, 1406,
+ 1406, -106, 1023, 1406, -106, -106, -106, 1406, 1406, -106,
+ -106, -106, -106, -106, -106, 1406, -106, 1406, 1406, -106,
+ 1406, 1406, 114, 206, -106, -106, 1406, 1406, 1406, -106,
+ -106, -106, 211, 1406, 302, 1406, 1406, 1406, 1406, 369,
+ 1406, 1406, 1406, 1406, 1406, 1406, 226, 1406, 1406, 1406,
+ 135, 151, 110, 257, 279, 276, 256, 222, 475, 475,
+ 475, 1406, 7, 1406, 57, 2284, 1406, 1406, -106, -106,
+ -106, -106, -106, -106, -106, -106, -106, -106, -106, -106,
+ -106, -106, -106, -106, -106, -106, -106, -106, -106, -106,
+ -106, -106, -106, -106, -106, -106, -106, -106, -106, -106,
+ -106, -106, 136, 1406, -106, -106, 30, -24, -106, 1406,
+ -106, -106, 1406, -106, -106, -106, -106, -106, -106, -106,
+ -106, -106, -106, -106, -106, -106, 1406, 2, 1406, 1406,
+ 10, 97, 1406, -106, 2284, 1406, 1406, -106, 141, -106,
+ -45, -106, -106, 4, 457, 386, 89, 79, -106, 448,
+ -106, 74, 2692, -106, -106, -106, -106, -106, 164, -106,
+ 460, -106, 85, -106, -106, -106, 96, -106, -106, -106,
+ 2692, -106, -106, 547, -106, 629, 143, 2794, 62, 54,
+ 43, 2998, 1406, -106, 51, 1406, 52, -106, 47, 45,
+ -106, -106, 454, -106, -106, -106, -106, 64, 352, 31,
+ 61, 2692, 27, -106, -106, 2794, -106, -106, 139, -106,
+ -106, -106, -106, 126, -106, -106, -106, -106, -106, -106,
+ -6, 25, 1406, 130, 159, -106, -106, -106, 1600, -106,
+ 68, 65, 5, -106, 308, 60, 3, 835, 99, 105,
+ 337, 207, 408, 1406, 317, 1406, 1406, 1406, 1406, 353,
+ 1406, 1406, 1406, 1406, 1406, 186, 203, 204, 212, 219,
+ 333, 343, 359, 1406, 20, 1406, 202, 1406, -106, 732,
+ 1406, -106, 1406, 81, 72, 1406, 77, 2794, -106, 1406,
+ 149, 2794, -106, 1406, 80, 1406, 1406, 94, 88, 1406,
+ -106, -8, 128, -25, -106, -106, 1406, -106, 471, 1406,
+ -106, -53, 1406, -56, 2794, -106, 1406, 134, 2794, -106,
+ 1406, 138, 2794, -5, 2794, -106, -4, -106, 9, -9,
+ 37, -106, -106, 2794, -12, 555, 32, 629, 123, 1406,
+ 2794, 41, 18, 504, 2386, 21, 1023, 49, 46, 1505,
+ 2386, 42, 16, 44, 1406, 24, -10, 1406, 17, 1406,
+ -15, -18, 2590, -106, -106, -106, -106, -106, -106, 1406,
+ -106, -106, -106, -1, -26, -3, 2692, -27, -106, 277,
+ -106, 1406, -28, -106, 90, -106, -106, 1, 552, -40,
+ -11, 2692, -29, -106, 1406, 117, 14, -106, 50, -106,
+ 40, 119, 1406, -106, 11, 35, -106, -54, -106, 2794,
+ -106, 116, 2794, -106, 267, -106, -106, 121, 2794, -7,
+ -106, -31, -19, -106, 376, 6, 78, -106, -106, -106,
+ -106, 1406, 98, 2794, -106, 1406, 106, 2794, -106, 76,
+ -106, 254, -106, -106, 1406, -106, -106, 552, -106, -106,
+ 71, 75, 2692, 67, -106, -106, 122, 1992, -106, -106,
+ 1796, -106, -106, 1894, -106, -106, -106, -106, -106, -106,
+ 113, -106, -106, -106, -106, -106, -106, -106, -106, -106,
+ 2692, -106, -106, -106, 111, 22, 929, 152, 39, 48,
+ -106, -106, 301, -106, 147, -106, -106, -106, 468, 155,
+ -106, 2182, -106, -106, -106, -106, -106, -106, -106, -106,
+ -106, 178, -30, 463, 181, -14, 400, 229, -106, -32,
+ -106, 929, 104, -106, 0, 929, -106, -106, 1311, -106,
+ -106, -106, 1215, -106, -106, 248, -106, 2182, -106, 392,
+ 59, -106, -106, 244, 552, 73, 2182, -106, 236, -106,
+ 237, -106, 70, 15, 368, 214, 355, -106, 103, -106,
+ -106, -106, 2087, 721, 392, 2896, 1698, 34, -106, 56,
+ 598, 55, 629, 107, 1406, 2794, 53, 23, 544, 36,
+ 1023, 58, 66, 1505, 69, 38, 63, 1406, 95, 84,
+ 1406, 102, 1406, 83, 82, 124, -106, -106, 87, -106,
+ -106, 929, 813, 91, 929, -106, 271, -106, 86, -106,
+ -106, 100, 101, -106, -106, -106, -106, -106, 552, -106,
+ 209, -106, 109, -106, -106, 552, -106, -106, 92, -106,
+ -106, -106, -106, -106,
- -107, 12, -95, 3, 6, 275, 2, -107, -107, -107,
- -107, -107, -107, -107, -107, -107, -107, -107, -107, -37,
- -107, -107, -107, -107, -107, -107, -107, -107, -107, 96,
- -107, -107, -107, 8, -107, -107, -17, 24, 95, 74,
- -107, 85, 175, -107, -107, -107, 172, 168, -107, -107,
- -107, -107, -107, 169, -107, 165, 164, -107, 156, 176,
- -107, -107, -107, -107, 182, 178, 112, -107, -107, -107,
- -107, 121, -107, 144, 118, 116, 117, -107, 108, 133,
- 134, 137, 143, 152, -107, 147, 141, 136, -107, -107,
- -107, -107, -107, -107, -107, -107, -107, -107, -107, 107,
- -107, 173, -107, 153, 84, 56, -107, -107, -107, -107,
- -107, -107, -107, -107, -107, -107, -107, -107, -107, -107,
- -107, -107, -107, -107, -107, -107, -107, -107, -107, -107,
- -107, -107, -107, -107, -107, -107, -107, -107, -107, -107,
- -107, 36, -107, -107, -107, -107, -107, 30, -107, -107,
- 0, -107, -107, -107, -107, -107, -107, -107, -107, -107,
- -107, -107, -107, -107, 79, -107, 99, 44, -107, -107,
- 46, -107, 194, 70, 64, -107, -107, -107, -107, -107,
- -107, -107, -107, 29, -107, -107, -107, 65, -107, -107,
- -107, -107, -107, -107, -107, -107, -107, -107, -107, -107,
- -107, -107, -107, -107, -107, -107, 80, -107, -107, 51,
- -107, 48, -107, 40, -107, 34, -107, -107, 86, -107,
- 88, -107, -107, -107, 78, 60, -107, -107, -107, -107,
- -107, -6, -107, -107, -107, -107, -107, -107, -107, -107,
- -107, -107, -107, -107, -107, -107, -107, -107, -107, -107,
- -107, -107, 21, -107, -107, -107, -107, -107, 104, -107,
- -107, -107, -107, -107, -107, -107, -107, -107, -107, -107,
- -107, -107, 16, 201, -107, 202, 224, 223, 215, -107,
- 67, 73, 75, 59, 106, -107, -107, -107, -107, -107,
- -107, -107, -107, 185, -107, 208, -107, 233, -107, -107,
- 234, -107, 203, -107, -107, 299, -107, 90, -107, -2,
- -107, 11, -107, 181, -107, 200, 192, -107, -107, 189,
- -107, -107, -107, -107, -107, -107, 199, -107, 123, 131,
- -107, -107, 111, -107, 77, -107, 87, -107, 195, -107,
- -107, 110, -107, -107, -50, -107, -107, 39, -107, 42,
- -107, 63, -107, 66, -107, -107, -107, -107, -107, -107,
- 68, -107, 43, -107, 47, -107, 92, 35, -107, -107,
- 31, -107, -107, 105, -107, -107, -107, 94, -107, -107,
- -107, -107, 71, -107, 54, 101, -107, 89, -107, -107,
- 55, -107, 49, -107, -107, -107, -107, -107, -107, -107,
- 38, -107, -107, -107, -107, -107, -107, 114, -107, -107,
- 76, -107, -107, -107, -107, 91, -107, 93, -107, -107,
- -107, -107, -107, -57, -107, 50, -107, -44, -107, -107,
- -107, -107, 98, -107, -107, 97, -107, -107, -107, -107,
- -107, 52, -42, -107, -107, 45, -107, 41, -107, 37,
- -107, -107, -107, -107, 57, -107, 53, -107, 58, -107,
- 62, -107, -107, -107, -107, -107, -107, 9, -107, -107,
- 187, -107, -107, -107, -107, 33, -107, -107, 139, -107,
- -107, 32, -107, -107, -107, -107, -107, -107, -107, -107,
- -107, -107, -107, -107, -107, -107, -107, -107, 82, -107,
- -107, -107, -107, -107, -11, -107, -107, -107, -107, -107,
- -107, -107, -25, -107, -107, -107, -9, -107, -107, 297,
- -107, -107, -107, -107, -107, -107, -107, -107, -107, -107,
- -107, -3, -26, -107, -10, -107, -107, -107, -107, 160,
- -107, -107, -107, 120, -107, -107, 279, -107, -107, -107,
- 285, -107, -107, -107, -107, 329, -107, -107, 17, -107,
- -107, -13, 14, -107, 385, -107, -107, -107, 23, -107,
- -107, -107, 28, 18, 20, -107, -107, -107, -107, -107,
- 313, 188, -107, 26, 267, 7, -107, 5, -107, -1,
- -107, 69, 19, -107, -107, 10, -107, -107, 103, -107,
- -107, -107, 27, -107, -107, -107, -107, 15, -107, -5,
- 61, -107, 81, -107, -107, -107, -107, -107, 13, -107,
- -107, 25, -107, -107, 22, 119, -107, -107, -107, 4,
- -107, -107, -107, -107, -107, -107, -15, -107, -107, -107,
- -107, -107, -107, -107, -107, -107};
+ -111, 43, 59, 70, 71, 369, 40, -111, -111, -111,
+ -111, -111, -111, -111, -111, -111, -111, -111, -111, 21,
+ -111, -111, -111, -111, -111, -111, -111, -111, -111, 79,
+ -111, -111, -111, -16, -111, -111, 5, -26, 23, 73,
+ 91, -111, 83, 61, -111, -111, -111, 88, 87, -111,
+ -111, -111, -111, -111, -111, 29, -111, 66, 39, -111,
+ 97, 193, -111, -111, -111, -111, 160, 180, 183, -111,
+ -111, -111, -111, 176, -111, 167, 151, 155, 152, -111,
+ 148, 187, 195, 197, 199, 201, -111, 186, 92, 194,
+ -111, -111, -111, -111, -111, -111, -111, -111, -111, -111,
+ -111, 103, -111, 108, -111, 181, -2, -42, -111, -111,
+ -111, -111, -111, -111, -111, -111, -111, -111, -111, -111,
+ -111, -111, -111, -111, -111, -111, -111, -111, -111, -111,
+ -111, -111, -111, -111, -111, -111, -111, -111, -111, -111,
+ -111, -111, -111, 34, -111, -111, -111, -111, -111, 3,
+ -111, -111, 10, -111, -111, -111, -111, -111, -111, -111,
+ -111, -111, -111, -111, -111, -111, 127, -111, 109, 15,
+ -111, -111, 16, -111, 225, 44, 128, -111, -111, -111,
+ -111, -111, -111, -111, 25, 157, -111, -111, -111, 26,
+ -111, -111, 24, -111, -111, -111, -111, -111, -111, -111,
+ 22, -111, -111, -111, -111, -111, -111, -111, -111, -111,
+ 179, -111, -111, 45, -111, 46, -111, 107, -111, 48,
+ -111, 106, 62, -111, -111, 163, -3, -111, -111, -111,
+ -111, -111, -14, -111, -111, -111, -111, -111, 57, -111,
+ -111, 224, -111, -111, -111, 227, -111, -111, -111, -111,
+ -111, -111, -111, -111, -111, -111, -111, -111, -111, -111,
+ -111, -111, 35, -111, -111, -111, -111, -111, 72, -111,
+ -111, -111, -111, -111, -111, -111, -111, -111, -111, -111,
+ -111, -111, 12, 264, -111, 258, 246, 254, 209, -111,
+ 60, 51, 52, 27, 53, -111, -111, -111, -111, -111,
+ -111, -111, -111, 244, -111, 255, -111, 203, -111, -111,
+ 207, -111, 217, -111, -111, 198, -111, 208, -111, 8,
+ -111, 215, -111, 232, -111, 233, 234, -111, -111, 223,
+ -111, -111, -111, -111, -111, -111, 230, -111, 95, 113,
+ -111, -111, 153, -111, 156, -111, 2, -111, 147, -111,
+ 58, -111, 137, -111, 100, -111, -111, -111, -111, -111,
+ -111, -111, -111, 135, -111, 41, -111, 54, -111, 117,
+ 162, -111, -111, 50, 169, -111, 174, -111, -111, 32,
+ 178, -111, -111, -111, 31, -111, 7, 144, -111, 130,
+ -111, -111, 142, -111, -111, -111, -111, -111, -111, 11,
+ -111, -111, -111, -111, -111, -111, 214, -111, -111, -111,
+ -111, 140, -111, -111, -111, -111, -111, -111, 158, -111,
+ -111, 149, -111, -111, 47, -111, -111, -111, -111, -111,
+ -55, -111, 38, -111, -67, -111, -111, -111, -111, 263,
+ -111, -111, 262, -111, -111, -111, -111, -111, 190, -76,
+ -111, -111, 30, -111, 19, -111, 14, -111, -111, -111,
+ -111, 33, -111, 272, -111, 64, -111, 175, -111, -111,
+ -111, -111, -111, -111, 18, -111, -111, 69, -111, -111,
+ -111, -111, 114, -111, -111, -111, -111, 20, -111, -111,
+ 110, -111, -111, 28, -111, -111, -111, -111, -111, -111,
+ -111, -111, -111, -111, -111, -111, -111, -111, -111, -111,
+ 86, -111, -111, -111, -111, -111, 55, -111, -111, -111,
+ -111, -111, -111, -111, -7, -111, -111, -111, 1, -111,
+ -111, 329, -111, -111, -111, -111, -111, -111, -111, -111,
+ -111, -111, -111, 0, -11, -111, -10, -111, -111, -111,
+ -111, 204, -111, -111, -111, 205, -111, -111, 317, -111,
+ -111, -111, 311, -111, -111, -111, -111, 370, -111, -111,
+ -9, -111, -111, -4, -12, -111, 337, -111, -111, -111,
+ -18, -111, -111, -111, -1, -17, -6, -111, -111, -111,
+ -111, -111, 466, 78, -111, 82, 307, -13, -111, -111,
+ -8, -111, 6, -111, 74, 76, -111, -111, 9, -111,
+ 85, -111, -111, 17, -111, -111, -111, 4, -111, -22,
+ 84, -111, 67, -111, -111, -111, -111, -111, 49, -111,
+ -111, 37, 42, 68, 77, -111, -111, -111, -111, -111,
+ -111, -111, -111, -111, -111, -111, -111, -111, 13, -111,
+ -111, -111, -111, -111, -111, 36, -111, -111, -111, -111,
+ -111, -111, -111, -111};
const short QmlJSGrammar::action_info [] = {
- 417, 258, -113, 404, 467, -132, -102, 576, 573, 347,
- -103, 532, 349, -121, 445, 441, 346, 431, 343, 349,
- 341, 344, 546, 402, 392, 564, 447, 390, 353, 546,
- -121, 539, -129, -124, -102, 409, -124, 417, 546, 432,
- 454, 421, 441, 425, -126, 425, 425, 441, 566, 458,
- 621, 458, -129, 454, -126, 441, 400, -113, 561, 512,
- 258, 546, 347, -103, 336, 273, 347, 534, 190, 164,
- 449, 149, 258, 141, 187, 170, 236, 273, 349, 99,
- 313, 297, 410, 313, 415, 164, 295, 252, 326, 417,
- 189, 319, 293, 454, 458, 305, 441, 183, 71, 179,
- 645, 141, 147, 71, 141, 444, 141, 0, 0, 302,
- 99, 435, 141, 141, 307, 543, 428, 0, 478, 445,
- 141, 0, 293, 0, 328, 295, 58, 58, 172, 251,
- 0, 332, 334, 141, 543, 141, 172, 59, 59, 101,
- 141, 242, 241, 247, 246, 315, -132, 173, 141, 316,
- 641, 640, 635, 634, 177, 173, 254, 62, 101, 141,
- 621, 429, 58, 544, 64, 489, 479, 166, 63, 578,
- 577, 167, 419, 59, 530, 249, 248, 329, 58, 414,
- 413, 64, 616, 513, 85, 456, 86, 460, 142, 59,
- 249, 248, 85, 580, 86, 470, 64, 87, 0, 85,
- 311, 86, 555, 0, 85, 87, 86, 513, 85, 65,
- 86, 351, 87, 537, 85, 66, 86, 87, 568, 546,
- 515, 87, 85, 85, 86, 86, 65, 87, 513, 515,
- 0, 514, 66, 519, 513, 87, 87, 85, 513, 86,
- 514, 65, 141, 569, 567, 141, 0, 66, 471, 469,
- 87, 103, 85, 515, 86, 141, 556, 554, 85, 0,
- 86, 257, 255, 0, 514, 87, 0, 538, 536, 0,
- 104, 87, 105, 85, 515, 86, 638, 637, 0, 581,
- 515, 172, 0, 0, 515, 514, 87, 520, 518, 256,
- 85, 514, 86, 0, 338, 514, 73, 74, 235, 234,
- 173, 0, 174, 87, 73, 74, 0, 636, 439, 438,
- 0, 0, 0, 34, 631, 172, 275, 276, 0, 0,
- 172, 275, 276, 75, 76, 34, 0, 0, 632, 630,
- 34, 75, 76, -90, 173, 34, 174, 172, -90, 173,
- 0, 174, 34, 277, 278, 34, 0, 0, 277, 278,
- 48, 50, 49, 34, 0, 0, 173, 0, 407, 629,
- 0, 0, 48, 50, 49, 34, 0, 48, 50, 49,
- 0, 0, 48, 50, 49, 0, 34, 45, 0, 48,
- 50, 49, 48, 50, 49, 34, 280, 281, 0, 45,
- 48, 50, 49, 34, 45, 282, 0, 0, 283, 45,
- 284, 0, 48, 50, 49, 34, 45, 0, 34, 45,
- 0, 0, 0, 48, 50, 49, 34, 45, 0, 0,
- 0, 34, 48, 50, 49, 280, 281, 34, 0, 45,
- 48, 50, 49, 0, 282, 0, 34, 283, 0, 284,
- 45, 0, 48, 50, 49, 48, 50, 49, 0, 45,
- 0, 34, 0, 48, 50, 49, 0, 45, 48, 50,
- 49, 0, 0, 0, 48, 50, 49, 280, 281, 45,
- 0, 0, 45, 48, 50, 49, 282, 0, 0, 283,
- 45, 284, 0, 0, 0, 45, 0, 0, 48, 50,
- 49, 45, 34, 0, 0, 78, 79, 0, 0, -346,
- 45, 0, 0, 80, 81, 280, 281, 82, 0, 83,
- 0, 0, 0, 0, 282, 45, 0, 283, 0, 284,
- 6, 5, 4, 1, 3, 2, 34, 78, 79, 48,
- 50, 49, 0, -346, 34, 80, 81, 78, 79, 82,
- 0, 83, 34, 0, 0, 80, 81, 0, 0, 82,
- 34, 83, 0, 0, 0, 0, 45, 0, 0, 0,
- 0, 0, 0, 48, 50, 49, 245, 244, 0, 0,
- 34, 48, 50, 49, 240, 239, 0, 0, 34, 48,
- 50, 49, 240, 239, 0, 78, 79, 48, 50, 49,
- 45, 0, 0, 80, 81, 0, 0, 82, 45, 83,
- 0, 0, 245, 244, 0, 0, 45, 48, 50, 49,
- 240, 239, 151, 0, 45, 48, 50, 49, 0, 0,
- 0, 0, 152, 0, 0, 0, 153, 0, 0, 0,
- 151, 0, 0, 0, 45, 154, 0, 155, 0, 0,
- 152, 0, 45, 0, 153, 0, 0, 0, 156, 0,
- 157, 62, 0, 154, 0, 155, 0, 0, 158, 0,
- 0, 159, 63, 0, 0, 34, 156, 160, 157, 62,
- 0, 0, 0, 161, 0, 0, 158, 0, 0, 159,
- 63, 0, 0, 0, 0, 160, 0, 0, 0, 162,
- 0, 161, 0, 0, 0, 0, 0, 245, 244, 0,
- 0, 0, 48, 50, 49, 0, 0, 162, 0, 0,
+ 166, 438, 551, 245, 344, 454, 346, 544, 342, 336,
+ 546, 354, 166, 452, 448, 181, 432, 392, 465, 103,
+ 420, 461, 421, 448, -138, 101, 423, 73, 408, 663,
+ 406, -135, 413, 558, 405, 404, 151, 418, 149, -141,
+ 185, 143, 439, 402, 399, 432, 398, 428, -122, -111,
+ 101, -133, 424, -112, 268, 432, -130, 350, 73, 268,
+ -122, 262, -141, 245, 312, -130, 456, 558, 307, 283,
+ -133, 261, 350, -112, 424, 588, -111, 578, 585, 350,
+ 576, 465, 243, 461, 305, 448, 103, 424, 524, 143,
+ 184, 240, 558, 474, 241, 329, 323, 189, 268, 305,
+ 238, 323, -135, 245, 172, 573, 143, 192, 482, -138,
+ 0, 448, 555, 303, 143, 174, 174, 448, 465, 461,
+ 558, 143, 484, 442, 143, 143, 174, 451, 303, 435,
+ 490, 481, 555, 315, 175, 175, 338, 317, 143, 191,
+ 244, 452, 143, 0, 143, 175, 143, 662, 661, 143,
+ 60, 416, 415, 660, 659, 325, 64, 143, 463, 326,
+ 556, 61, 531, 0, 590, 589, 467, 65, 259, 258,
+ 654, 653, 143, 501, 436, 60, 525, 426, 491, 0,
+ 626, 542, 631, 632, 259, 258, 61, 257, 256, 339,
+ 264, 60, 144, 174, 348, 168, 0, 179, 352, 169,
+ 252, 251, 61, 283, 259, 258, 631, 632, 60, 321,
+ 525, 87, 175, 88, 411, 0, 532, 530, 66, 61,
+ 267, 265, 527, 66, 89, 236, 235, 527, 87, 87,
+ 88, 88, 87, 526, 88, 66, 549, 87, 526, 88,
+ 105, 89, 89, 525, 87, 89, 88, 87, 266, 88,
+ 89, 87, 87, 88, 88, 567, 527, 89, 174, 106,
+ 89, 107, 477, 67, 89, 89, 525, 526, 67, 68,
+ 657, 656, 580, 525, 68, 143, 0, 175, 0, 176,
+ 67, 87, 87, 88, 88, 0, 68, 0, 0, 527,
+ 550, 548, 174, 0, 89, 89, 0, 581, 579, 0,
+ 526, 87, 655, 88, 87, 0, 88, 0, 592, 568,
+ 566, 175, 527, 411, 89, 478, 476, 89, 650, 527,
+ 75, 76, 0, 526, 75, 76, 285, 286, 446, 445,
+ 526, 0, 651, 649, 558, 285, 286, 6, 5, 4,
+ 1, 3, 2, 0, 0, 0, 0, 77, 78, 0,
+ 0, 77, 78, 287, 288, 0, 290, 291, 0, 0,
+ 290, 291, 287, 288, 648, 292, 290, 291, 293, 292,
+ 294, 0, 293, 0, 294, 292, 290, 291, 293, 0,
+ 294, 35, 290, 291, 35, 292, 0, 0, 293, 0,
+ 294, 292, 80, 81, 293, 593, 294, 35, 0, 0,
+ 82, 83, 80, 81, 84, 35, 85, 174, 0, 0,
+ 82, 83, 0, 0, 84, 35, 85, 0, 49, 52,
+ 50, 49, 52, 50, 0, -98, 175, 0, 176, 35,
+ 0, 0, 0, 0, 49, 52, 50, 35, 0, 0,
+ 0, 0, 49, 52, 50, 0, 46, 34, 51, 46,
+ 34, 51, 49, 52, 50, 0, 0, 0, 0, 0,
+ 0, 0, 46, 34, 51, 0, 49, 52, 50, 0,
+ 46, 34, 51, 0, 49, 52, 50, 35, 0, 0,
+ 46, 34, 51, 35, 0, 0, 35, 0, 0, 35,
+ 0, 0, 35, 0, 46, 34, 51, 35, 80, 81,
+ 35, 0, 46, 34, 51, 0, 82, 83, 0, 0,
+ 84, 0, 85, 0, 49, 52, 50, 0, 0, 0,
+ 49, 52, 50, 49, 52, 50, 49, 52, 50, 49,
+ 52, 50, 0, 35, 49, 52, 50, 49, 52, 50,
+ 184, 0, 46, 34, 51, 0, 0, 0, 46, 34,
+ 51, 46, 34, 51, 46, 34, 51, 46, 34, 51,
+ 0, 0, 46, 34, 51, 46, 34, 51, 35, 0,
+ 49, 52, 50, 35, 0, 184, 35, 0, 0, 0,
+ 184, 35, 0, 0, 35, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 46, 34,
+ 51, 0, 0, 0, 0, 49, 52, 50, 250, 249,
+ 49, 52, 50, 49, 52, 50, 250, 249, 49, 52,
+ 50, 49, 52, 50, 0, 0, 0, 35, 0, 0,
+ 0, 0, 0, 46, 34, 51, 0, 0, 46, 34,
+ 51, 46, 34, 51, 0, 0, 46, 34, 51, 46,
+ 34, 51, 0, 0, 0, 0, 0, 0, 35, 250,
+ 249, 0, 0, 0, 49, 52, 50, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 30, 31, 0, 45,
- 0, 0, 0, 0, 0, 0, 33, 0, 0, 151,
- 0, 0, 0, 34, 0, 0, 0, 35, 36, 152,
- 37, 0, 0, 153, 0, 0, 0, 504, 0, 0,
- 0, 44, 154, 0, 155, 0, 0, 309, 0, 0,
- 0, 0, 0, 0, 0, 156, 0, 157, 62, 51,
- 48, 50, 49, 0, 52, 158, 0, 0, 159, 63,
- 0, 0, 0, 0, 160, 43, 54, 32, 0, 0,
- 161, 40, 0, 0, 0, 0, 0, 45, 0, 0,
- 0, 0, 0, 0, 0, 0, 162, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 30, 31, 0, 0, 0, 0, 0, 0, 30,
- 31, 33, 0, 0, 0, 0, 0, 0, 34, 33,
- 0, 0, 35, 36, 0, 37, 34, 0, 0, 0,
- 35, 36, 41, 37, 0, 0, 44, 0, 0, 0,
- 504, 0, 0, 0, 44, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 51, 48, 50, 49, 0, 52,
- 0, 0, 51, 48, 50, 49, 0, 52, 0, 0,
- 43, 54, 32, 0, 0, 0, 40, 0, 43, 54,
- 32, 0, 45, 0, 40, 0, 0, 0, 0, 0,
- 45, 0, 30, 31, 0, 0, 0, 0, 0, 0,
- 30, 31, 33, 0, 0, 0, 0, 0, 0, 34,
- 33, 0, 0, 35, 36, 0, 37, 34, 0, 0,
- 0, 35, 36, 41, 37, 0, 0, 44, 0, 0,
- 0, 504, 0, 0, 0, 44, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 51, 48, 50, 49, 0,
- 52, 0, 0, 51, 48, 50, 49, 0, 52, 0,
- 0, 43, 54, 32, 0, 0, 0, 40, 0, 43,
- 54, 32, 0, 45, 0, 40, 0, 0, 0, 0,
- 0, 45, 0, 30, 31, 0, 0, 0, 0, 0,
- 0, 30, 31, 33, 0, 0, 0, 0, 0, 0,
- 34, 33, 0, 0, 35, 36, 0, 37, 34, 0,
- 0, 0, 35, 36, 41, 37, 0, 0, 44, 0,
- 0, 0, 504, 0, 0, 0, 44, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 51, 48, 50, 49,
- 0, 52, 0, 0, 51, 48, 50, 49, 0, 52,
- 0, 0, 43, 54, 32, 0, 0, 0, 40, 0,
- 43, 54, 32, 0, 45, 0, 40, 0, 0, 0,
- 0, 0, 45, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 30, 31, 0, 0, 0, 0, 0, 0,
- 0, 0, 33, 0, 0, 0, 0, 0, 0, 34,
- 0, 0, 0, 35, 36, 0, 37, 0, 0, 0,
- 0, 0, 0, 504, 0, 0, 0, 44, 0, 0,
+ 255, 254, 46, 34, 51, 49, 52, 50, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 46, 34, 51, 0, 0, 0, 0,
+ 0, 0, 0, 30, 31, 153, 0, 0, 0, 0,
+ 0, 0, 0, 33, 0, 154, 0, 0, 0, 155,
+ 35, 0, 0, 0, 36, 37, 0, 38, 156, 0,
+ 157, 0, 0, 0, 516, 0, 0, 0, 45, 0,
+ 0, 158, 0, 159, 64, 0, 0, 0, 0, 0,
+ 0, 160, 0, 0, 161, 65, 53, 49, 52, 50,
+ 162, 54, 0, 0, 0, 0, 163, 0, 0, 0,
+ 0, 0, 44, 56, 32, 0, 0, 0, 41, 0,
+ 0, 0, 164, 0, 0, 46, 34, 51, 0, 0,
+ 0, 0, 0, 0, 0, 30, 31, 0, 0, 0,
+ 0, 0, 0, 0, 0, 33, 0, 0, 153, 0,
+ 0, 0, 35, 0, 0, 0, 36, 37, 154, 38,
+ 0, 0, 155, 0, 0, 0, 516, 0, 0, 0,
+ 45, 156, 0, 157, 0, 0, 319, 0, 0, 0,
+ 0, 0, 0, 0, 158, 0, 159, 64, 53, 49,
+ 52, 50, 0, 54, 160, 0, 0, 161, 65, 0,
+ 0, 0, 0, 162, 44, 56, 32, 0, 0, 163,
+ 41, 0, 0, 0, 0, 0, 0, 46, 34, 51,
+ 0, 0, 0, 0, 0, 164, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 51, 48, 50, 49, 0,
- 52, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 43, 54, 32, 0, 0, 0, 40, 0, 0,
- 0, 0, 0, 45, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 503, 0, 30, 31, 0, 0, 0,
- 0, 0, 0, 0, 0, 215, 0, 0, 0, 0,
- 0, 0, 34, 0, 0, 0, 35, 36, 0, 37,
- 0, 0, 0, 0, 0, 0, 504, 0, 0, 0,
- 44, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 51, 505,
- 507, 506, 0, 52, 0, 0, 0, 0, 226, 0,
- 0, 0, 0, 0, 43, 54, 32, 210, 0, 0,
- 40, 0, 0, 0, 0, 0, 45, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 503, 0, 30, 31,
- 0, 0, 0, 0, 0, 0, 0, 0, 215, 0,
- 0, 0, 0, 0, 0, 34, 0, 0, 0, 35,
- 36, 0, 37, 0, 0, 0, 0, 0, 0, 504,
- 0, 0, 0, 44, 0, 0, 0, 0, 0, 0,
- 0, 551, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 51, 505, 507, 506, 0, 52, 0, 0, 0,
- 0, 226, 0, 0, 0, 0, 0, 43, 54, 32,
- 210, 0, 0, 40, 0, 0, 0, 0, 0, 45,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 503,
0, 30, 31, 0, 0, 0, 0, 0, 0, 0,
- 0, 215, 0, 0, 0, 0, 0, 0, 34, 0,
- 0, 0, 35, 36, 0, 37, 0, 0, 0, 0,
- 0, 0, 504, 0, 0, 0, 44, 0, 0, 0,
- 0, 0, 0, 0, 548, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 51, 505, 507, 506, 0, 52,
- 0, 0, 0, 0, 226, 0, 0, 0, 0, 0,
- 43, 54, 32, 210, 0, 0, 40, 0, 0, 0,
- 0, 0, 45, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 29, 30, 31, 0, 0, 0, 0, 0,
- 0, 0, 0, 33, 0, 0, 0, 0, 0, 0,
- 34, 0, 0, 0, 35, 36, 0, 37, 0, 0,
- 0, 38, 0, 39, 41, 42, 0, 0, 44, 0,
- 0, 0, 46, 0, 47, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 51, 48, 50, 49,
- 0, 52, 0, 53, 0, 55, 0, 56, 0, 0,
- 0, 0, 43, 54, 32, 0, 0, 0, 40, 0,
- 0, 0, 0, 0, 45, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, -122, 0, 0, 0, 29, 30,
- 31, 0, 0, 0, 0, 0, 0, 0, 0, 33,
- 0, 0, 0, 0, 0, 0, 34, 0, 0, 0,
- 35, 36, 0, 37, 0, 0, 0, 38, 0, 39,
- 41, 42, 0, 0, 44, 0, 0, 0, 46, 0,
- 47, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 51, 48, 50, 49, 0, 52, 0, 53,
- 0, 55, 0, 56, 0, 0, 0, 0, 43, 54,
- 32, 0, 0, 0, 40, 0, 0, 0, 0, 0,
+ 0, 33, 0, 0, 0, 0, 0, 0, 35, 0,
+ 0, 0, 36, 37, 0, 38, 0, 0, 0, 0,
+ 0, 0, 516, 0, 0, 0, 45, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 53, 49, 52, 50, 0, 54,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 44, 56, 32, 0, 0, 0, 41, 0, 0, 0,
+ 0, 0, 0, 46, 34, 51, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 30, 31, 0, 0, 0,
+ 0, 0, 0, 0, 0, 33, 0, 0, 0, 0,
+ 0, 0, 35, 0, 0, 0, 36, 37, 0, 38,
+ 0, 0, 0, 0, 0, 0, 42, 0, 0, 0,
45, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 29, 30, 31, 0, 0, 0, 0, 0, 0, 0,
- 0, 33, 0, 0, 0, 0, 0, 0, 34, 0,
- 0, 0, 35, 36, 0, 37, 0, 0, 0, 38,
- 0, 39, 41, 42, 0, 0, 44, 0, 0, 0,
- 46, 0, 47, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 51, 48, 50, 49, 0, 52,
- 0, 53, 0, 55, 272, 56, 0, 0, 0, 0,
- 43, 54, 32, 0, 0, 0, 40, 0, 0, 0,
- 0, 0, 45, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 476, 0, 0, 29, 30, 31, 0, 0,
- 0, 0, 0, 0, 0, 0, 33, 0, 0, 0,
- 0, 0, 0, 34, 0, 0, 0, 35, 36, 0,
- 37, 0, 0, 0, 38, 0, 39, 41, 42, 0,
- 0, 44, 0, 0, 0, 46, 0, 47, 0, 0,
- 477, 0, 0, 0, 0, 0, 0, 0, 0, 51,
- 48, 50, 49, 0, 52, 0, 53, 0, 55, 0,
- 56, 0, 0, 0, 0, 43, 54, 32, 0, 0,
- 0, 40, 0, 0, 0, 0, 0, 45, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 476, 0, 0,
- 29, 30, 31, 0, 0, 0, 0, 0, 0, 0,
- 0, 33, 0, 0, 0, 0, 0, 0, 34, 0,
- 0, 0, 35, 36, 0, 37, 0, 0, 0, 38,
- 0, 39, 41, 42, 0, 0, 44, 0, 0, 0,
- 46, 0, 47, 0, 0, 482, 0, 0, 0, 0,
- 0, 0, 0, 0, 51, 48, 50, 49, 0, 52,
- 0, 53, 0, 55, 0, 56, 0, 0, 0, 0,
- 43, 54, 32, 0, 0, 0, 40, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 53, 49,
+ 52, 50, 0, 54, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 44, 56, 32, 0, 0, 0,
+ 41, 0, 0, 0, 0, 0, 0, 46, 34, 51,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 515,
+ 0, 30, 31, 0, 0, 0, 0, 0, 0, 0,
+ 0, 219, 0, 0, 0, 0, 0, 0, 35, 0,
+ 0, 0, 36, 37, 0, 38, 0, 0, 0, 0,
+ 0, 0, 516, 0, 0, 0, 45, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 53, 517, 519, 518, 0, 54,
+ 0, 0, 0, 0, 227, 0, 0, 0, 0, 0,
+ 44, 56, 32, 214, 0, 0, 41, 0, 0, 0,
+ 0, 0, 0, 46, 34, 51, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 515, 0, 30, 31, 0,
+ 0, 0, 0, 0, 0, 0, 0, 219, 0, 0,
+ 0, 0, 0, 0, 35, 0, 0, 0, 36, 37,
+ 0, 38, 0, 0, 0, 0, 0, 0, 516, 0,
0, 0, 45, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 484, 0, 0, 29, 30, 31, 0, 0,
+ 563, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 53, 517, 519, 518, 0, 54, 0, 0, 0, 0,
+ 227, 0, 0, 0, 0, 0, 44, 56, 32, 214,
+ 0, 0, 41, 0, 0, 0, 0, 0, 0, 46,
+ 34, 51, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 515, 0, 30, 31, 0, 0, 0, 0, 0,
+ 0, 0, 0, 219, 0, 0, 0, 0, 0, 0,
+ 35, 0, 0, 0, 36, 37, 0, 38, 0, 0,
+ 0, 0, 0, 0, 516, 0, 0, 0, 45, 0,
+ 0, 0, 0, 0, 0, 0, 560, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 53, 517, 519, 518,
+ 0, 54, 0, 0, 0, 0, 227, 0, 0, 0,
+ 0, 0, 44, 56, 32, 214, 0, 0, 41, 0,
+ 0, 0, 0, 0, 0, 46, 34, 51, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 29, 30, 31,
+ 0, 0, 0, 0, 0, 0, 0, 0, 33, 0,
+ 0, 0, 0, 0, 0, 35, 0, 0, 0, 36,
+ 37, 0, 38, 0, 0, 0, 39, 0, 40, 42,
+ 43, 0, 0, 45, 0, 0, 0, 47, 0, 48,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 53, 49, 52, 50, 0, 54, 0, 55, 0,
+ 57, 0, 58, 0, 0, 0, 0, 44, 56, 32,
+ 0, 0, 0, 41, 0, 0, 0, 0, 0, 0,
+ 46, 34, 51, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, -131, 0, 0, 0, 29, 30, 31, 0,
+ 0, 0, 0, 0, 0, 0, 0, 33, 0, 0,
+ 0, 0, 0, 0, 35, 0, 0, 0, 36, 37,
+ 0, 38, 0, 0, 0, 39, 0, 40, 42, 43,
+ 0, 0, 45, 0, 0, 0, 47, 0, 48, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 53, 49, 52, 50, 0, 54, 0, 55, 0, 57,
+ 0, 58, 0, 0, 0, 0, 44, 56, 32, 0,
+ 0, 0, 41, 0, 0, 0, 0, 0, 0, 46,
+ 34, 51, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 29, 30, 31, 0, 0, 0, 0, 0, 0,
+ 0, 0, 33, 0, 0, 0, 0, 0, 0, 35,
+ 0, 0, 0, 36, 37, 0, 38, 0, 0, 0,
+ 39, 0, 40, 42, 43, 0, 0, 45, 0, 0,
+ 0, 47, 0, 48, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 53, 49, 52, 50, 0,
+ 54, 0, 55, 0, 57, 282, 58, 0, 0, 0,
+ 0, 44, 56, 32, 0, 0, 0, 41, 0, 0,
+ 0, 0, 0, 0, 46, 34, 51, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 488, 0, 0, 29,
+ 30, 31, 0, 0, 0, 0, 0, 0, 0, 0,
+ 33, 0, 0, 0, 0, 0, 0, 35, 0, 0,
+ 0, 36, 37, 0, 38, 0, 0, 0, 39, 0,
+ 40, 42, 43, 0, 0, 45, 0, 0, 0, 47,
+ 0, 48, 0, 0, 489, 0, 0, 0, 0, 0,
+ 0, 0, 0, 53, 49, 52, 50, 0, 54, 0,
+ 55, 0, 57, 0, 58, 0, 0, 0, 0, 44,
+ 56, 32, 0, 0, 0, 41, 0, 0, 0, 0,
+ 0, 0, 46, 34, 51, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 488, 0, 0, 29, 30, 31,
+ 0, 0, 0, 0, 0, 0, 0, 0, 33, 0,
+ 0, 0, 0, 0, 0, 35, 0, 0, 0, 36,
+ 37, 0, 38, 0, 0, 0, 39, 0, 40, 42,
+ 43, 0, 0, 45, 0, 0, 0, 47, 0, 48,
+ 0, 0, 494, 0, 0, 0, 0, 0, 0, 0,
+ 0, 53, 49, 52, 50, 0, 54, 0, 55, 0,
+ 57, 0, 58, 0, 0, 0, 0, 44, 56, 32,
+ 0, 0, 0, 41, 0, 0, 0, 0, 0, 0,
+ 46, 34, 51, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 496, 0, 0, 29, 30, 31, 0, 0,
0, 0, 0, 0, 0, 0, 33, 0, 0, 0,
- 0, 0, 0, 34, 0, 0, 0, 35, 36, 0,
- 37, 0, 0, 0, 38, 0, 39, 41, 42, 0,
- 0, 44, 0, 0, 0, 46, 0, 47, 0, 0,
- 485, 0, 0, 0, 0, 0, 0, 0, 0, 51,
- 48, 50, 49, 0, 52, 0, 53, 0, 55, 0,
- 56, 0, 0, 0, 0, 43, 54, 32, 0, 0,
- 0, 40, 0, 0, 0, 0, 0, 45, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 484, 0, 0,
- 29, 30, 31, 0, 0, 0, 0, 0, 0, 0,
- 0, 33, 0, 0, 0, 0, 0, 0, 34, 0,
- 0, 0, 35, 36, 0, 37, 0, 0, 0, 38,
- 0, 39, 41, 42, 0, 0, 44, 0, 0, 0,
- 46, 0, 47, 0, 0, 487, 0, 0, 0, 0,
- 0, 0, 0, 0, 51, 48, 50, 49, 0, 52,
- 0, 53, 0, 55, 0, 56, 0, 0, 0, 0,
- 43, 54, 32, 0, 0, 0, 40, 0, 0, 0,
- 0, 0, 45, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 29, 30, 31, 0, 0, 0, 0, 0,
- 0, 0, 0, 33, 0, 0, 0, 0, 0, 0,
- 34, 217, 0, 0, 218, 36, 0, 37, 0, 0,
- 0, 38, 0, 39, 41, 42, 0, 0, 44, 0,
- 0, 0, 46, 0, 47, 0, 0, 0, 0, 0,
- 0, 0, 221, 0, 0, 0, 51, 48, 50, 49,
- 223, 52, 0, 53, 225, 55, 0, 56, 0, 228,
- 0, 0, 43, 54, 32, 0, 0, 0, 40, 0,
- 0, 0, 0, 0, 45, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 29, 30, 31, 0, 0, 0,
- 0, 0, 0, 0, 0, 33, 0, 0, 0, 0,
- 0, 0, 34, 217, 0, 0, 583, 584, 0, 37,
- 0, 0, 0, 38, 0, 39, 41, 42, 0, 0,
- 44, 0, 0, 0, 46, 0, 47, 0, 0, 0,
- 0, 0, 0, 0, 221, 0, 0, 0, 51, 48,
- 50, 49, 223, 52, 0, 53, 225, 55, 0, 56,
- 0, 228, 0, 0, 43, 54, 32, 0, 0, 0,
- 40, 0, 0, 0, 0, 0, 45, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 109, 110, 111, 0,
- 0, 113, 115, 116, 0, 0, 117, 0, 118, 0,
- 0, 0, 120, 121, 122, 0, 0, 0, 0, 0,
- 0, 34, 123, 124, 125, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 126, 0, 0, 0, 0,
+ 0, 0, 0, 35, 0, 0, 0, 36, 37, 0,
+ 38, 0, 0, 0, 39, 0, 40, 42, 43, 0,
+ 0, 45, 0, 0, 0, 47, 0, 48, 0, 0,
+ 497, 0, 0, 0, 0, 0, 0, 0, 0, 53,
+ 49, 52, 50, 0, 54, 0, 55, 0, 57, 0,
+ 58, 0, 0, 0, 0, 44, 56, 32, 0, 0,
+ 0, 41, 0, 0, 0, 0, 0, 0, 46, 34,
+ 51, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 496, 0, 0, 29, 30, 31, 0, 0, 0, 0,
+ 0, 0, 0, 0, 33, 0, 0, 0, 0, 0,
+ 0, 35, 0, 0, 0, 36, 37, 0, 38, 0,
+ 0, 0, 39, 0, 40, 42, 43, 0, 0, 45,
+ 0, 0, 0, 47, 0, 48, 0, 0, 499, 0,
+ 0, 0, 0, 0, 0, 0, 0, 53, 49, 52,
+ 50, 0, 54, 0, 55, 0, 57, 0, 58, 0,
+ 0, 0, 0, 44, 56, 32, 0, 0, 0, 41,
+ 0, 0, 0, 0, 0, 0, 46, 34, 51, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 29, 30,
+ 31, 0, 0, 0, 0, 0, 0, 0, 0, 33,
+ 0, 0, 0, 0, 0, 0, 35, 220, 0, 0,
+ 595, 596, 0, 38, 0, 0, 0, 39, 0, 40,
+ 42, 43, 0, 0, 45, 0, 0, 0, 47, 0,
+ 48, 0, 0, 0, 0, 0, 0, 0, 223, 0,
+ 0, 0, 53, 49, 52, 50, 224, 54, 0, 55,
+ 226, 57, 0, 58, 0, 229, 0, 0, 44, 56,
+ 32, 0, 0, 0, 41, 0, 0, 0, 0, 0,
+ 0, 46, 34, 51, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 29, 30, 31, 0, 0, 0, 0,
+ 0, 0, 0, 0, 33, 0, 0, 0, 0, 0,
+ 0, 35, 220, 0, 0, 221, 37, 0, 38, 0,
+ 0, 0, 39, 0, 40, 42, 43, 0, 0, 45,
+ 0, 0, 0, 47, 0, 48, 0, 0, 0, 0,
+ 0, 0, 0, 223, 0, 0, 0, 53, 49, 52,
+ 50, 224, 54, 0, 55, 226, 57, 0, 58, 0,
+ 229, 0, 0, 44, 56, 32, 0, 0, 0, 41,
+ 0, 0, 0, 0, 0, 0, 46, 34, 51, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 111, 112,
+ 113, 0, 0, 115, 117, 118, 0, 0, 119, 0,
+ 120, 0, 0, 0, 122, 123, 124, 0, 0, 0,
+ 0, 0, 0, 35, 125, 126, 127, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 128, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 131, 0, 0, 0, 0, 0, 0,
+ 49, 52, 50, 132, 133, 134, 0, 136, 137, 138,
+ 139, 140, 141, 0, 0, 129, 135, 121, 114, 116,
+ 130, 0, 0, 0, 0, 0, 0, 0, 46, 34,
+ 51, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 111, 112, 113, 0, 0, 115, 117, 118, 0, 0,
+ 119, 0, 120, 0, 0, 0, 122, 123, 124, 0,
+ 0, 0, 0, 0, 0, 35, 125, 126, 127, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 128,
+ 0, 0, 0, 395, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 131, 0, 0, 0, 0,
+ 0, 397, 49, 52, 50, 132, 133, 134, 0, 136,
+ 137, 138, 139, 140, 141, 0, 0, 129, 135, 121,
+ 114, 116, 130, 0, 0, 0, 0, 0, 0, 0,
+ 46, 34, 51, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 111, 112, 113, 0, 0, 115, 117, 118,
+ 0, 0, 119, 0, 120, 0, 0, 0, 122, 123,
+ 124, 0, 0, 0, 0, 0, 0, 35, 125, 126,
+ 127, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 128, 0, 0, 0, 395, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 131, 0, 0,
+ 0, 0, 0, 397, 49, 52, 50, 132, 133, 134,
+ 0, 136, 137, 138, 139, 140, 141, 0, 0, 129,
+ 135, 121, 114, 116, 130, 0, 0, 0, 0, 0,
+ 0, 0, 46, 374, 380, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 111, 112, 113, 0, 0, 115,
+ 117, 118, 0, 0, 119, 0, 120, 0, 0, 0,
+ 122, 123, 124, 0, 0, 0, 0, 0, 0, 35,
+ 125, 126, 127, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 128, 0, 0, 0, 395, 0, 0,
+ 0, 0, 0, 0, 0, 396, 0, 0, 0, 131,
+ 0, 0, 0, 0, 0, 397, 49, 52, 50, 132,
+ 133, 134, 0, 136, 137, 138, 139, 140, 141, 0,
+ 0, 129, 135, 121, 114, 116, 130, 0, 0, 0,
+ 0, 0, 0, 0, 46, 374, 380, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 213, 0, 0, 0,
+ 0, 215, 0, 29, 30, 31, 217, 0, 0, 0,
+ 0, 0, 0, 218, 219, 0, 0, 0, 0, 0,
+ 0, 35, 220, 0, 0, 221, 37, 0, 38, 0,
+ 0, 0, 39, 0, 40, 42, 43, 0, 0, 45,
+ 0, 0, 0, 47, 0, 48, 0, 0, 0, 0,
+ 0, 222, 0, 223, 0, 0, 0, 53, 49, 52,
+ 50, 224, 54, 225, 55, 226, 57, 227, 58, 228,
+ 229, 0, 0, 44, 56, 32, 214, 216, 0, 41,
+ 0, 0, 0, 0, 0, 0, 46, 34, 51, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 213, 0,
+ 0, 0, 0, 215, 0, 29, 30, 31, 217, 0,
+ 0, 0, 0, 0, 0, 218, 33, 0, 0, 0,
+ 0, 0, 0, 35, 220, 0, 0, 221, 37, 0,
+ 38, 0, 0, 0, 39, 0, 40, 42, 43, 0,
+ 0, 45, 0, 0, 0, 47, 0, 48, 0, 0,
+ 0, 0, 0, 222, 0, 223, 0, 0, 0, 53,
+ 49, 52, 50, 224, 54, 225, 55, 226, 57, 227,
+ 58, 228, 229, 0, 0, 44, 56, 32, 214, 216,
+ 0, 41, 0, 0, 0, 0, 0, 0, 46, 34,
+ 51, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 600, 112, 113, 0, 0, 602, 117, 604, 30, 31,
+ 605, 0, 120, 0, 0, 0, 122, 607, 608, 0,
+ 0, 0, 0, 0, 0, 35, 609, 126, 127, 221,
+ 37, 0, 38, 0, 0, 0, 39, 0, 40, 610,
+ 43, 0, 0, 612, 0, 0, 0, 47, 0, 48,
+ 0, 0, 0, 0, 0, 613, 0, 223, 0, 0,
+ 0, 614, 49, 52, 50, 615, 616, 617, 55, 619,
+ 620, 621, 622, 623, 624, 0, 0, 611, 618, 606,
+ 601, 603, 130, 41, 0, 0, 0, 0, 0, 0,
+ 46, 374, 380, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 365, 112, 113, 0, 0, 367, 117, 369,
+ 30, 31, 370, 0, 120, 0, 0, 0, 122, 372,
+ 373, 0, 0, 0, 0, 0, 0, 35, 375, 126,
+ 127, 221, 37, 0, 38, 0, 0, 0, 39, 0,
+ 40, 376, 43, 0, 0, 378, 0, 0, 0, 47,
+ 0, 48, 0, -277, 0, 0, 0, 379, 0, 223,
+ 0, 0, 0, 381, 49, 52, 50, 382, 383, 384,
+ 55, 386, 387, 388, 389, 390, 391, 0, 0, 377,
+ 385, 371, 366, 368, 130, 41, 0, 0, 0, 0,
+ 0, 0, 46, 374, 380, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,
+
+ 148, 142, 183, 447, 469, 347, 575, 444, 547, 627,
+ 248, 320, 587, 572, 584, 586, 485, 591, 565, 529,
+ 313, 545, 447, 393, 253, 528, 500, 183, 574, 453,
+ 331, 652, 447, 437, 444, 313, 462, 455, 263, 457,
+ 237, 441, 206, 188, 190, 150, 16, 178, 433, 630,
+ 425, 641, 165, 400, 658, 458, 642, 171, 173, 248,
+ 475, 351, 498, 248, 253, 313, 183, 466, 183, 541,
+ 495, 629, 253, 512, 511, 188, 145, 206, 260, 645,
+ 644, 62, 0, 62, 362, 507, 298, 469, 206, 206,
+ 247, 514, 514, 62, 206, 460, 646, 409, 152, 409,
+ 599, 628, 355, 239, 206, 62, 62, 62, 362, 260,
+ 296, 297, 299, 331, 62, 62, 313, 504, 206, 295,
+ 62, 62, 459, 460, 356, 206, 277, 62, 62, 502,
+ 182, 281, 206, 62, 410, 182, 410, 401, 62, 353,
+ 459, 62, 62, 506, 505, 62, 62, 503, 493, 349,
+ 91, 62, 492, 206, 63, 206, 313, 62, 345, 483,
+ 393, 479, 62, 62, 260, 206, 444, 206, 510, 102,
+ 148, 62, 104, 182, 206, 188, 188, 468, 180, 170,
+ 206, 62, 148, 247, 62, 394, 460, 393, 409, 340,
+ 412, 341, 362, 206, 422, 167, 393, 206, 62, 108,
+ 459, 313, 62, 187, 419, 62, 62, 86, 206, 62,
+ 318, 98, 100, 403, 62, 99, 69, 322, 514, 514,
+ 313, 62, 417, 553, 557, 410, 206, 79, 110, 246,
+ 62, 343, 206, 206, 62, 0, 70, 62, 74, 71,
+ 62, 62, 206, 108, 90, 206, 93, 62, 62, 62,
+ 72, 62, 92, 62, 94, 62, 95, 309, 96, 407,
+ 97, 309, 281, 62, 362, 362, 281, 0, 281, 242,
+ 302, 0, 110, 177, 464, 0, 316, 309, 0, 308,
+ 206, 206, 281, 311, 309, 0, 62, 62, 309, 281,
+ 206, 281, 281, 281, 0, 314, 0, 0, 62, 330,
+ 62, 324, 0, 281, 327, 281, 337, 300, 62, 62,
+ 328, 304, 62, 281, 281, 301, 564, 281, 62, 289,
+ 306, 569, 561, 281, 0, 514, 553, 284, 625, 0,
+ 0, 514, 0, 0, 522, 0, 0, 0, 0, 0,
+ 522, 0, 0, 0, 0, 0, 513, 523, 0, 485,
+ 443, 440, 513, 523, 533, 534, 535, 536, 540, 537,
+ 538, 577, 533, 534, 535, 536, 540, 537, 538, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 129, 0, 0, 0, 0, 0, 0, 48, 50,
- 49, 130, 131, 132, 0, 134, 135, 136, 137, 138,
- 139, 0, 0, 127, 133, 119, 112, 114, 128, 0,
- 0, 0, 0, 0, 0, 45, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 109, 110, 111, 0, 0,
- 113, 115, 116, 0, 0, 117, 0, 118, 0, 0,
- 0, 120, 121, 122, 0, 0, 0, 0, 0, 0,
- 394, 123, 124, 125, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 126, 0, 0, 0, 395, 0,
+ 0, 0, 0, 514, 569, 0, 0, 0, 0, 0,
+ 0, 0, 522, 570, 571, 533, 534, 535, 536, 540,
+ 537, 538, 0, 0, 513, 523, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 129, 0, 0, 0, 0, 0, 399, 396, 398, 0,
- 130, 131, 132, 0, 134, 135, 136, 137, 138, 139,
- 0, 0, 127, 133, 119, 112, 114, 128, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 109, 110, 111, 0, 0, 113,
- 115, 116, 0, 0, 117, 0, 118, 0, 0, 0,
- 120, 121, 122, 0, 0, 0, 0, 0, 0, 394,
- 123, 124, 125, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 126, 0, 0, 0, 395, 0, 0,
- 0, 0, 0, 0, 0, 397, 0, 0, 0, 129,
- 0, 0, 0, 0, 0, 399, 396, 398, 0, 130,
- 131, 132, 0, 134, 135, 136, 137, 138, 139, 0,
- 0, 127, 133, 119, 112, 114, 128, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 209, 0, 0, 0, 0, 211, 0,
- 29, 30, 31, 213, 0, 0, 0, 0, 0, 0,
- 214, 215, 0, 0, 0, 0, 0, 0, 216, 217,
- 0, 0, 218, 36, 0, 37, 0, 0, 0, 38,
- 0, 39, 41, 42, 0, 0, 44, 0, 0, 0,
- 46, 0, 47, 0, 0, 0, 0, 0, 220, 0,
- 221, 0, 0, 0, 51, 219, 222, 49, 223, 52,
- 224, 53, 225, 55, 226, 56, 227, 228, 0, 0,
- 43, 54, 32, 210, 212, 0, 40, 0, 0, 0,
- 0, 0, 45, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 209, 0, 0, 0, 0, 211, 0, 29,
- 30, 31, 213, 0, 0, 0, 0, 0, 0, 214,
- 33, 0, 0, 0, 0, 0, 0, 216, 217, 0,
- 0, 218, 36, 0, 37, 0, 0, 0, 38, 0,
- 39, 41, 42, 0, 0, 44, 0, 0, 0, 46,
- 0, 47, 0, 0, 0, 0, 0, 220, 0, 221,
- 0, 0, 0, 51, 219, 222, 49, 223, 52, 224,
- 53, 225, 55, 226, 56, 227, 228, 0, 0, 43,
- 54, 32, 210, 212, 0, 40, 0, 0, 0, 0,
- 0, 45, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 587, 110, 111, 0, 0, 589, 115, 591, 30,
- 31, 592, 0, 118, 0, 0, 0, 120, 594, 595,
- 0, 0, 0, 0, 0, 0, 596, 597, 124, 125,
- 218, 36, 0, 37, 0, 0, 0, 38, 0, 39,
- 598, 42, 0, 0, 600, 0, 0, 0, 46, 0,
- 47, 0, 0, 0, 0, 0, 602, 0, 221, 0,
- 0, 0, 604, 601, 603, 49, 605, 606, 607, 53,
- 609, 610, 611, 612, 613, 614, 0, 0, 599, 608,
- 593, 588, 590, 128, 40, 0, 0, 0, 0, 0,
- 45, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 362, 110, 111, 0, 0, 364, 115, 366, 30, 31,
- 367, 0, 118, 0, 0, 0, 120, 369, 370, 0,
- 0, 0, 0, 0, 0, 371, 372, 124, 125, 218,
- 36, 0, 37, 0, 0, 0, 38, 0, 39, 373,
- 42, 0, 0, 375, 0, 0, 0, 46, 0, 47,
- 0, -268, 0, 0, 0, 377, 0, 221, 0, 0,
- 0, 379, 376, 378, 49, 380, 381, 382, 53, 384,
- 385, 386, 387, 388, 389, 0, 0, 374, 383, 368,
- 363, 365, 128, 40, 0, 0, 0, 0, 0, 45,
- 0, 0, 0, 0, 0, 0, 0, 0, 0,
-
- 639, 310, 529, 533, 516, 535, 517, 499, 500, 462,
- 498, 620, 553, 312, 243, 16, 562, 440, 437, 633,
- 238, 250, 473, 182, 253, 182, 617, 488, 359, 563,
- 303, 321, 619, 642, 150, 575, 560, 250, 628, 163,
- 426, 348, 250, 579, 186, 350, 182, 574, 468, 340,
- 430, 345, 572, 434, 359, 457, 448, 446, 238, 450,
- 455, 459, 243, 243, 461, 352, 238, 451, 354, 148,
- 403, 483, 486, 176, 437, 143, 440, 401, 411, 335,
- 188, 437, 440, 169, 237, 171, 237, 140, 359, 393,
- 337, 303, 308, 416, 391, 146, 418, 303, 405, 359,
- 359, 0, 0, 146, 0, 0, 0, 60, 178, 60,
- 0, 452, 288, 0, 303, 60, 405, 60, 405, 180,
- 285, 60, 60, 60, 491, 186, 286, 60, 287, 60,
- 406, 453, 502, 502, 303, 643, 545, 60, 321, 453,
- 60, 165, 180, 60, 60, 490, 180, 60, 406, 60,
- 406, 452, 267, 146, 60, 60, 60, 271, 408, 289,
- 60, 84, 69, 168, 60, 60, 60, 100, 106, 60,
- 97, 98, 96, 502, 481, 0, 541, 72, 480, 436,
- 433, 60, 60, 333, 60, 60, 91, 92, 90, 60,
- 93, 60, 60, 89, 108, 60, 94, 339, 77, 88,
- 60, 502, 462, 331, 60, 95, 303, 61, 618, 106,
- 342, 330, 60, 60, 453, 452, 60, 60, 494, 495,
- 60, 60, 493, 60, 60, 492, 60, 70, 68, 60,
- 60, 102, 67, 60, 271, 108, 175, 299, 271, 0,
- 299, 0, 271, 0, 314, 271, 294, 299, 60, 60,
- 60, 0, 271, 271, 271, 271, 60, 279, 274, 320,
- 0, 271, 318, 60, 0, 317, 0, 296, 271, 327,
- 292, 60, 60, 472, 0, 304, 271, 271, 291, 290,
- 557, 299, 299, 541, 549, 615, 271, 271, 502, 0,
- 552, 0, 502, 0, 0, 510, 0, 0, 502, 510,
- 0, 0, 303, 298, 301, 510, 473, 501, 511, 0,
- 0, 501, 511, 0, 0, 0, 0, 501, 511, 521,
- 522, 523, 524, 528, 525, 526, 582, 0, 0, 0,
- 0, 0, 0, 585, 586, 521, 522, 523, 524, 528,
- 525, 526, 557, 0, 0, 0, 0, 0, 0, 558,
- 559, 521, 522, 523, 524, 528, 525, 526, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 306, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 565, 521, 522, 523,
- 524, 528, 525, 526, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 594, 0, 0, 0, 0, 0, 0, 0, 0, 597,
+ 598, 533, 534, 535, 536, 540, 537, 538, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0};
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0};
const short QmlJSGrammar::action_check [] = {
- 36, 36, 7, 55, 17, 7, 7, 60, 8, 7,
- 7, 37, 36, 7, 20, 33, 55, 55, 60, 36,
- 36, 33, 33, 55, 8, 7, 36, 7, 16, 33,
- 7, 34, 7, 7, 7, 60, 7, 36, 33, 7,
- 36, 33, 33, 5, 7, 5, 5, 33, 29, 36,
- 91, 36, 7, 36, 7, 33, 7, 7, 66, 66,
- 36, 33, 7, 7, 31, 1, 7, 24, 33, 2,
- 60, 60, 36, 8, 8, 7, 55, 1, 36, 48,
- 2, 8, 7, 2, 7, 2, 79, 36, 17, 36,
- 60, 7, 48, 36, 36, 61, 33, 36, 1, 60,
- 0, 8, 8, 1, 8, 6, 8, -1, -1, 61,
- 48, 7, 8, 8, 60, 8, 10, -1, 8, 20,
- 8, -1, 48, -1, 8, 79, 40, 40, 15, 77,
- -1, 61, 60, 8, 8, 8, 15, 51, 51, 79,
- 8, 61, 62, 61, 62, 50, 7, 34, 8, 54,
- 61, 62, 61, 62, 56, 34, 60, 42, 79, 8,
- 91, 55, 40, 56, 12, 60, 56, 50, 53, 61,
- 62, 54, 60, 51, 29, 61, 62, 61, 40, 61,
- 62, 12, 56, 29, 25, 60, 27, 60, 56, 51,
- 61, 62, 25, 7, 27, 8, 12, 38, -1, 25,
- 60, 27, 7, -1, 25, 38, 27, 29, 25, 57,
- 27, 60, 38, 7, 25, 63, 27, 38, 36, 33,
- 75, 38, 25, 25, 27, 27, 57, 38, 29, 75,
- -1, 86, 63, 7, 29, 38, 38, 25, 29, 27,
- 86, 57, 8, 61, 62, 8, -1, 63, 61, 62,
- 38, 15, 25, 75, 27, 8, 61, 62, 25, -1,
- 27, 61, 62, -1, 86, 38, -1, 61, 62, -1,
- 34, 38, 36, 25, 75, 27, 61, 62, -1, 93,
- 75, 15, -1, -1, 75, 86, 38, 61, 62, 89,
- 25, 86, 27, -1, 60, 86, 18, 19, 61, 62,
- 34, -1, 36, 38, 18, 19, -1, 92, 61, 62,
- -1, -1, -1, 29, 47, 15, 18, 19, -1, -1,
- 15, 18, 19, 45, 46, 29, -1, -1, 61, 62,
- 29, 45, 46, 33, 34, 29, 36, 15, 33, 34,
- -1, 36, 29, 45, 46, 29, -1, -1, 45, 46,
- 66, 67, 68, 29, -1, -1, 34, -1, 36, 92,
- -1, -1, 66, 67, 68, 29, -1, 66, 67, 68,
- -1, -1, 66, 67, 68, -1, 29, 93, -1, 66,
- 67, 68, 66, 67, 68, 29, 23, 24, -1, 93,
- 66, 67, 68, 29, 93, 32, -1, -1, 35, 93,
- 37, -1, 66, 67, 68, 29, 93, -1, 29, 93,
- -1, -1, -1, 66, 67, 68, 29, 93, -1, -1,
- -1, 29, 66, 67, 68, 23, 24, 29, -1, 93,
- 66, 67, 68, -1, 32, -1, 29, 35, -1, 37,
- 93, -1, 66, 67, 68, 66, 67, 68, -1, 93,
- -1, 29, -1, 66, 67, 68, -1, 93, 66, 67,
- 68, -1, -1, -1, 66, 67, 68, 23, 24, 93,
- -1, -1, 93, 66, 67, 68, 32, -1, -1, 35,
- 93, 37, -1, -1, -1, 93, -1, -1, 66, 67,
- 68, 93, 29, -1, -1, 23, 24, -1, -1, 36,
- 93, -1, -1, 31, 32, 23, 24, 35, -1, 37,
- -1, -1, -1, -1, 32, 93, -1, 35, -1, 37,
- 95, 96, 97, 98, 99, 100, 29, 23, 24, 66,
- 67, 68, -1, 36, 29, 31, 32, 23, 24, 35,
- -1, 37, 29, -1, -1, 31, 32, -1, -1, 35,
- 29, 37, -1, -1, -1, -1, 93, -1, -1, -1,
- -1, -1, -1, 66, 67, 68, 61, 62, -1, -1,
- 29, 66, 67, 68, 61, 62, -1, -1, 29, 66,
- 67, 68, 61, 62, -1, 23, 24, 66, 67, 68,
- 93, -1, -1, 31, 32, -1, -1, 35, 93, 37,
- -1, -1, 61, 62, -1, -1, 93, 66, 67, 68,
- 61, 62, 3, -1, 93, 66, 67, 68, -1, -1,
- -1, -1, 13, -1, -1, -1, 17, -1, -1, -1,
- 3, -1, -1, -1, 93, 26, -1, 28, -1, -1,
- 13, -1, 93, -1, 17, -1, -1, -1, 39, -1,
- 41, 42, -1, 26, -1, 28, -1, -1, 49, -1,
- -1, 52, 53, -1, -1, 29, 39, 58, 41, 42,
- -1, -1, -1, 64, -1, -1, 49, -1, -1, 52,
- 53, -1, -1, -1, -1, 58, -1, -1, -1, 80,
- -1, 64, -1, -1, -1, -1, -1, 61, 62, -1,
- -1, -1, 66, 67, 68, -1, -1, 80, -1, -1,
+ 2, 55, 34, 7, 60, 36, 31, 37, 61, 17,
+ 24, 16, 2, 20, 33, 60, 5, 8, 36, 79,
+ 60, 36, 33, 33, 7, 48, 55, 1, 55, 0,
+ 33, 7, 60, 33, 60, 36, 60, 36, 8, 7,
+ 36, 8, 7, 55, 7, 5, 55, 33, 7, 7,
+ 48, 7, 36, 7, 36, 5, 7, 36, 1, 36,
+ 7, 36, 7, 7, 61, 7, 60, 33, 8, 1,
+ 7, 77, 36, 7, 36, 60, 7, 29, 8, 36,
+ 7, 36, 55, 36, 79, 33, 79, 36, 66, 8,
+ 36, 60, 33, 17, 33, 7, 2, 8, 36, 79,
+ 36, 2, 7, 7, 7, 66, 8, 33, 33, 7,
+ -1, 33, 8, 48, 8, 15, 15, 33, 36, 36,
+ 33, 8, 55, 7, 8, 8, 15, 6, 48, 10,
+ 8, 60, 8, 61, 34, 34, 8, 60, 8, 60,
+ 55, 20, 8, -1, 8, 34, 8, 61, 62, 8,
+ 40, 61, 62, 61, 62, 50, 42, 8, 60, 54,
+ 56, 51, 7, -1, 61, 62, 60, 53, 61, 62,
+ 61, 62, 8, 60, 55, 40, 29, 60, 56, -1,
+ 56, 29, 91, 92, 61, 62, 51, 61, 62, 61,
+ 60, 40, 56, 15, 60, 50, -1, 56, 60, 54,
+ 61, 62, 51, 1, 61, 62, 91, 92, 40, 60,
+ 29, 25, 34, 27, 36, -1, 61, 62, 12, 51,
+ 61, 62, 75, 12, 38, 61, 62, 75, 25, 25,
+ 27, 27, 25, 86, 27, 12, 7, 25, 86, 27,
+ 15, 38, 38, 29, 25, 38, 27, 25, 89, 27,
+ 38, 25, 25, 27, 27, 7, 75, 38, 15, 34,
+ 38, 36, 8, 57, 38, 38, 29, 86, 57, 63,
+ 61, 62, 36, 29, 63, 8, -1, 34, -1, 36,
+ 57, 25, 25, 27, 27, -1, 63, -1, -1, 75,
+ 61, 62, 15, -1, 38, 38, -1, 61, 62, -1,
+ 86, 25, 93, 27, 25, -1, 27, -1, 7, 61,
+ 62, 34, 75, 36, 38, 61, 62, 38, 47, 75,
+ 18, 19, -1, 86, 18, 19, 18, 19, 61, 62,
+ 86, -1, 61, 62, 33, 18, 19, 98, 99, 100,
+ 101, 102, 103, -1, -1, -1, -1, 45, 46, -1,
+ -1, 45, 46, 45, 46, -1, 23, 24, -1, -1,
+ 23, 24, 45, 46, 93, 32, 23, 24, 35, 32,
+ 37, -1, 35, -1, 37, 32, 23, 24, 35, -1,
+ 37, 29, 23, 24, 29, 32, -1, -1, 35, -1,
+ 37, 32, 23, 24, 35, 94, 37, 29, -1, -1,
+ 31, 32, 23, 24, 35, 29, 37, 15, -1, -1,
+ 31, 32, -1, -1, 35, 29, 37, -1, 66, 67,
+ 68, 66, 67, 68, -1, 33, 34, -1, 36, 29,
+ -1, -1, -1, -1, 66, 67, 68, 29, -1, -1,
+ -1, -1, 66, 67, 68, -1, 94, 95, 96, 94,
+ 95, 96, 66, 67, 68, -1, -1, -1, -1, -1,
+ -1, -1, 94, 95, 96, -1, 66, 67, 68, -1,
+ 94, 95, 96, -1, 66, 67, 68, 29, -1, -1,
+ 94, 95, 96, 29, -1, -1, 29, -1, -1, 29,
+ -1, -1, 29, -1, 94, 95, 96, 29, 23, 24,
+ 29, -1, 94, 95, 96, -1, 31, 32, -1, -1,
+ 35, -1, 37, -1, 66, 67, 68, -1, -1, -1,
+ 66, 67, 68, 66, 67, 68, 66, 67, 68, 66,
+ 67, 68, -1, 29, 66, 67, 68, 66, 67, 68,
+ 36, -1, 94, 95, 96, -1, -1, -1, 94, 95,
+ 96, 94, 95, 96, 94, 95, 96, 94, 95, 96,
+ -1, -1, 94, 95, 96, 94, 95, 96, 29, -1,
+ 66, 67, 68, 29, -1, 36, 29, -1, -1, -1,
+ 36, 29, -1, -1, 29, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 94, 95,
+ 96, -1, -1, -1, -1, 66, 67, 68, 61, 62,
+ 66, 67, 68, 66, 67, 68, 61, 62, 66, 67,
+ 68, 66, 67, 68, -1, -1, -1, 29, -1, -1,
+ -1, -1, -1, 94, 95, 96, -1, -1, 94, 95,
+ 96, 94, 95, 96, -1, -1, 94, 95, 96, 94,
+ 95, 96, -1, -1, -1, -1, -1, -1, 29, 61,
+ 62, -1, -1, -1, 66, 67, 68, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 12, 13, -1, 93,
- -1, -1, -1, -1, -1, -1, 22, -1, -1, 3,
- -1, -1, -1, 29, -1, -1, -1, 33, 34, 13,
- 36, -1, -1, 17, -1, -1, -1, 43, -1, -1,
- -1, 47, 26, -1, 28, -1, -1, 31, -1, -1,
- -1, -1, -1, -1, -1, 39, -1, 41, 42, 65,
- 66, 67, 68, -1, 70, 49, -1, -1, 52, 53,
- -1, -1, -1, -1, 58, 81, 82, 83, -1, -1,
- 64, 87, -1, -1, -1, -1, -1, 93, -1, -1,
- -1, -1, -1, -1, -1, -1, 80, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 12, 13, -1, -1, -1, -1, -1, -1, 12,
- 13, 22, -1, -1, -1, -1, -1, -1, 29, 22,
- -1, -1, 33, 34, -1, 36, 29, -1, -1, -1,
- 33, 34, 43, 36, -1, -1, 47, -1, -1, -1,
- 43, -1, -1, -1, 47, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 65, 66, 67, 68, -1, 70,
- -1, -1, 65, 66, 67, 68, -1, 70, -1, -1,
- 81, 82, 83, -1, -1, -1, 87, -1, 81, 82,
- 83, -1, 93, -1, 87, -1, -1, -1, -1, -1,
- 93, -1, 12, 13, -1, -1, -1, -1, -1, -1,
- 12, 13, 22, -1, -1, -1, -1, -1, -1, 29,
- 22, -1, -1, 33, 34, -1, 36, 29, -1, -1,
- -1, 33, 34, 43, 36, -1, -1, 47, -1, -1,
- -1, 43, -1, -1, -1, 47, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 65, 66, 67, 68, -1,
- 70, -1, -1, 65, 66, 67, 68, -1, 70, -1,
- -1, 81, 82, 83, -1, -1, -1, 87, -1, 81,
- 82, 83, -1, 93, -1, 87, -1, -1, -1, -1,
- -1, 93, -1, 12, 13, -1, -1, -1, -1, -1,
- -1, 12, 13, 22, -1, -1, -1, -1, -1, -1,
- 29, 22, -1, -1, 33, 34, -1, 36, 29, -1,
- -1, -1, 33, 34, 43, 36, -1, -1, 47, -1,
- -1, -1, 43, -1, -1, -1, 47, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 65, 66, 67, 68,
- -1, 70, -1, -1, 65, 66, 67, 68, -1, 70,
+ 61, 62, 94, 95, 96, 66, 67, 68, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 94, 95, 96, -1, -1, -1, -1,
+ -1, -1, -1, 12, 13, 3, -1, -1, -1, -1,
+ -1, -1, -1, 22, -1, 13, -1, -1, -1, 17,
+ 29, -1, -1, -1, 33, 34, -1, 36, 26, -1,
+ 28, -1, -1, -1, 43, -1, -1, -1, 47, -1,
+ -1, 39, -1, 41, 42, -1, -1, -1, -1, -1,
+ -1, 49, -1, -1, 52, 53, 65, 66, 67, 68,
+ 58, 70, -1, -1, -1, -1, 64, -1, -1, -1,
-1, -1, 81, 82, 83, -1, -1, -1, 87, -1,
- 81, 82, 83, -1, 93, -1, 87, -1, -1, -1,
- -1, -1, 93, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 12, 13, -1, -1, -1, -1, -1, -1,
- -1, -1, 22, -1, -1, -1, -1, -1, -1, 29,
- -1, -1, -1, 33, 34, -1, 36, -1, -1, -1,
- -1, -1, -1, 43, -1, -1, -1, 47, -1, -1,
+ -1, -1, 80, -1, -1, 94, 95, 96, -1, -1,
+ -1, -1, -1, -1, -1, 12, 13, -1, -1, -1,
+ -1, -1, -1, -1, -1, 22, -1, -1, 3, -1,
+ -1, -1, 29, -1, -1, -1, 33, 34, 13, 36,
+ -1, -1, 17, -1, -1, -1, 43, -1, -1, -1,
+ 47, 26, -1, 28, -1, -1, 31, -1, -1, -1,
+ -1, -1, -1, -1, 39, -1, 41, 42, 65, 66,
+ 67, 68, -1, 70, 49, -1, -1, 52, 53, -1,
+ -1, -1, -1, 58, 81, 82, 83, -1, -1, 64,
+ 87, -1, -1, -1, -1, -1, -1, 94, 95, 96,
+ -1, -1, -1, -1, -1, 80, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 65, 66, 67, 68, -1,
- 70, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 81, 82, 83, -1, -1, -1, 87, -1, -1,
- -1, -1, -1, 93, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 10, -1, 12, 13, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 12, 13, -1, -1, -1, -1, -1, -1, -1,
+ -1, 22, -1, -1, -1, -1, -1, -1, 29, -1,
+ -1, -1, 33, 34, -1, 36, -1, -1, -1, -1,
+ -1, -1, 43, -1, -1, -1, 47, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 65, 66, 67, 68, -1, 70,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 81, 82, 83, -1, -1, -1, 87, -1, -1, -1,
+ -1, -1, -1, 94, 95, 96, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 12, 13, -1, -1, -1,
-1, -1, -1, -1, -1, 22, -1, -1, -1, -1,
-1, -1, 29, -1, -1, -1, 33, 34, -1, 36,
-1, -1, -1, -1, -1, -1, 43, -1, -1, -1,
47, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, 65, 66,
- 67, 68, -1, 70, -1, -1, -1, -1, 75, -1,
- -1, -1, -1, -1, 81, 82, 83, 84, -1, -1,
- 87, -1, -1, -1, -1, -1, 93, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 10, -1, 12, 13,
- -1, -1, -1, -1, -1, -1, -1, -1, 22, -1,
- -1, -1, -1, -1, -1, 29, -1, -1, -1, 33,
- 34, -1, 36, -1, -1, -1, -1, -1, -1, 43,
- -1, -1, -1, 47, -1, -1, -1, -1, -1, -1,
- -1, 55, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 65, 66, 67, 68, -1, 70, -1, -1, -1,
- -1, 75, -1, -1, -1, -1, -1, 81, 82, 83,
- 84, -1, -1, 87, -1, -1, -1, -1, -1, 93,
+ 67, 68, -1, 70, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 81, 82, 83, -1, -1, -1,
+ 87, -1, -1, -1, -1, -1, -1, 94, 95, 96,
-1, -1, -1, -1, -1, -1, -1, -1, -1, 10,
-1, 12, 13, -1, -1, -1, -1, -1, -1, -1,
-1, 22, -1, -1, -1, -1, -1, -1, 29, -1,
-1, -1, 33, 34, -1, 36, -1, -1, -1, -1,
-1, -1, 43, -1, -1, -1, 47, -1, -1, -1,
- -1, -1, -1, -1, 55, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, 65, 66, 67, 68, -1, 70,
-1, -1, -1, -1, 75, -1, -1, -1, -1, -1,
81, 82, 83, 84, -1, -1, 87, -1, -1, -1,
- -1, -1, 93, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 11, 12, 13, -1, -1, -1, -1, -1,
+ -1, -1, -1, 94, 95, 96, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 10, -1, 12, 13, -1,
+ -1, -1, -1, -1, -1, -1, -1, 22, -1, -1,
+ -1, -1, -1, -1, 29, -1, -1, -1, 33, 34,
+ -1, 36, -1, -1, -1, -1, -1, -1, 43, -1,
+ -1, -1, 47, -1, -1, -1, -1, -1, -1, -1,
+ 55, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 65, 66, 67, 68, -1, 70, -1, -1, -1, -1,
+ 75, -1, -1, -1, -1, -1, 81, 82, 83, 84,
+ -1, -1, 87, -1, -1, -1, -1, -1, -1, 94,
+ 95, 96, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 10, -1, 12, 13, -1, -1, -1, -1, -1,
-1, -1, -1, 22, -1, -1, -1, -1, -1, -1,
29, -1, -1, -1, 33, 34, -1, 36, -1, -1,
- -1, 40, -1, 42, 43, 44, -1, -1, 47, -1,
- -1, -1, 51, -1, 53, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 43, -1, -1, -1, 47, -1,
+ -1, -1, -1, -1, -1, -1, 55, -1, -1, -1,
-1, -1, -1, -1, -1, -1, 65, 66, 67, 68,
- -1, 70, -1, 72, -1, 74, -1, 76, -1, -1,
- -1, -1, 81, 82, 83, -1, -1, -1, 87, -1,
- -1, -1, -1, -1, 93, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 7, -1, -1, -1, 11, 12,
- 13, -1, -1, -1, -1, -1, -1, -1, -1, 22,
- -1, -1, -1, -1, -1, -1, 29, -1, -1, -1,
- 33, 34, -1, 36, -1, -1, -1, 40, -1, 42,
- 43, 44, -1, -1, 47, -1, -1, -1, 51, -1,
- 53, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 65, 66, 67, 68, -1, 70, -1, 72,
- -1, 74, -1, 76, -1, -1, -1, -1, 81, 82,
- 83, -1, -1, -1, 87, -1, -1, -1, -1, -1,
- 93, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 11, 12, 13, -1, -1, -1, -1, -1, -1, -1,
- -1, 22, -1, -1, -1, -1, -1, -1, 29, -1,
- -1, -1, 33, 34, -1, 36, -1, -1, -1, 40,
- -1, 42, 43, 44, -1, -1, 47, -1, -1, -1,
- 51, -1, 53, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 65, 66, 67, 68, -1, 70,
- -1, 72, -1, 74, 75, 76, -1, -1, -1, -1,
- 81, 82, 83, -1, -1, -1, 87, -1, -1, -1,
- -1, -1, 93, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 8, -1, -1, 11, 12, 13, -1, -1,
- -1, -1, -1, -1, -1, -1, 22, -1, -1, -1,
- -1, -1, -1, 29, -1, -1, -1, 33, 34, -1,
- 36, -1, -1, -1, 40, -1, 42, 43, 44, -1,
- -1, 47, -1, -1, -1, 51, -1, 53, -1, -1,
- 56, -1, -1, -1, -1, -1, -1, -1, -1, 65,
- 66, 67, 68, -1, 70, -1, 72, -1, 74, -1,
- 76, -1, -1, -1, -1, 81, 82, 83, -1, -1,
- -1, 87, -1, -1, -1, -1, -1, 93, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 8, -1, -1,
- 11, 12, 13, -1, -1, -1, -1, -1, -1, -1,
- -1, 22, -1, -1, -1, -1, -1, -1, 29, -1,
- -1, -1, 33, 34, -1, 36, -1, -1, -1, 40,
- -1, 42, 43, 44, -1, -1, 47, -1, -1, -1,
- 51, -1, 53, -1, -1, 56, -1, -1, -1, -1,
- -1, -1, -1, -1, 65, 66, 67, 68, -1, 70,
- -1, 72, -1, 74, -1, 76, -1, -1, -1, -1,
- 81, 82, 83, -1, -1, -1, 87, -1, -1, -1,
- -1, -1, 93, -1, -1, -1, -1, -1, -1, -1,
+ -1, 70, -1, -1, -1, -1, 75, -1, -1, -1,
+ -1, -1, 81, 82, 83, 84, -1, -1, 87, -1,
+ -1, -1, -1, -1, -1, 94, 95, 96, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 11, 12, 13,
+ -1, -1, -1, -1, -1, -1, -1, -1, 22, -1,
+ -1, -1, -1, -1, -1, 29, -1, -1, -1, 33,
+ 34, -1, 36, -1, -1, -1, 40, -1, 42, 43,
+ 44, -1, -1, 47, -1, -1, -1, 51, -1, 53,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 65, 66, 67, 68, -1, 70, -1, 72, -1,
+ 74, -1, 76, -1, -1, -1, -1, 81, 82, 83,
+ -1, -1, -1, 87, -1, -1, -1, -1, -1, -1,
+ 94, 95, 96, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 7, -1, -1, -1, 11, 12, 13, -1,
+ -1, -1, -1, -1, -1, -1, -1, 22, -1, -1,
+ -1, -1, -1, -1, 29, -1, -1, -1, 33, 34,
+ -1, 36, -1, -1, -1, 40, -1, 42, 43, 44,
+ -1, -1, 47, -1, -1, -1, 51, -1, 53, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 65, 66, 67, 68, -1, 70, -1, 72, -1, 74,
+ -1, 76, -1, -1, -1, -1, 81, 82, 83, -1,
+ -1, -1, 87, -1, -1, -1, -1, -1, -1, 94,
+ 95, 96, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 11, 12, 13, -1, -1, -1, -1, -1, -1,
+ -1, -1, 22, -1, -1, -1, -1, -1, -1, 29,
+ -1, -1, -1, 33, 34, -1, 36, -1, -1, -1,
+ 40, -1, 42, 43, 44, -1, -1, 47, -1, -1,
+ -1, 51, -1, 53, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 65, 66, 67, 68, -1,
+ 70, -1, 72, -1, 74, 75, 76, -1, -1, -1,
+ -1, 81, 82, 83, -1, -1, -1, 87, -1, -1,
+ -1, -1, -1, -1, 94, 95, 96, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 8, -1, -1, 11,
+ 12, 13, -1, -1, -1, -1, -1, -1, -1, -1,
+ 22, -1, -1, -1, -1, -1, -1, 29, -1, -1,
+ -1, 33, 34, -1, 36, -1, -1, -1, 40, -1,
+ 42, 43, 44, -1, -1, 47, -1, -1, -1, 51,
+ -1, 53, -1, -1, 56, -1, -1, -1, -1, -1,
+ -1, -1, -1, 65, 66, 67, 68, -1, 70, -1,
+ 72, -1, 74, -1, 76, -1, -1, -1, -1, 81,
+ 82, 83, -1, -1, -1, 87, -1, -1, -1, -1,
+ -1, -1, 94, 95, 96, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 8, -1, -1, 11, 12, 13,
+ -1, -1, -1, -1, -1, -1, -1, -1, 22, -1,
+ -1, -1, -1, -1, -1, 29, -1, -1, -1, 33,
+ 34, -1, 36, -1, -1, -1, 40, -1, 42, 43,
+ 44, -1, -1, 47, -1, -1, -1, 51, -1, 53,
+ -1, -1, 56, -1, -1, -1, -1, -1, -1, -1,
+ -1, 65, 66, 67, 68, -1, 70, -1, 72, -1,
+ 74, -1, 76, -1, -1, -1, -1, 81, 82, 83,
+ -1, -1, -1, 87, -1, -1, -1, -1, -1, -1,
+ 94, 95, 96, -1, -1, -1, -1, -1, -1, -1,
-1, -1, 8, -1, -1, 11, 12, 13, -1, -1,
-1, -1, -1, -1, -1, -1, 22, -1, -1, -1,
-1, -1, -1, 29, -1, -1, -1, 33, 34, -1,
@@ -891,148 +912,170 @@ const short QmlJSGrammar::action_check [] = {
56, -1, -1, -1, -1, -1, -1, -1, -1, 65,
66, 67, 68, -1, 70, -1, 72, -1, 74, -1,
76, -1, -1, -1, -1, 81, 82, 83, -1, -1,
- -1, 87, -1, -1, -1, -1, -1, 93, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 8, -1, -1,
- 11, 12, 13, -1, -1, -1, -1, -1, -1, -1,
- -1, 22, -1, -1, -1, -1, -1, -1, 29, -1,
- -1, -1, 33, 34, -1, 36, -1, -1, -1, 40,
- -1, 42, 43, 44, -1, -1, 47, -1, -1, -1,
- 51, -1, 53, -1, -1, 56, -1, -1, -1, -1,
- -1, -1, -1, -1, 65, 66, 67, 68, -1, 70,
- -1, 72, -1, 74, -1, 76, -1, -1, -1, -1,
- 81, 82, 83, -1, -1, -1, 87, -1, -1, -1,
- -1, -1, 93, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 11, 12, 13, -1, -1, -1, -1, -1,
- -1, -1, -1, 22, -1, -1, -1, -1, -1, -1,
- 29, 30, -1, -1, 33, 34, -1, 36, -1, -1,
- -1, 40, -1, 42, 43, 44, -1, -1, 47, -1,
- -1, -1, 51, -1, 53, -1, -1, -1, -1, -1,
- -1, -1, 61, -1, -1, -1, 65, 66, 67, 68,
- 69, 70, -1, 72, 73, 74, -1, 76, -1, 78,
- -1, -1, 81, 82, 83, -1, -1, -1, 87, -1,
- -1, -1, -1, -1, 93, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 11, 12, 13, -1, -1, -1,
- -1, -1, -1, -1, -1, 22, -1, -1, -1, -1,
- -1, -1, 29, 30, -1, -1, 33, 34, -1, 36,
- -1, -1, -1, 40, -1, 42, 43, 44, -1, -1,
- 47, -1, -1, -1, 51, -1, 53, -1, -1, -1,
- -1, -1, -1, -1, 61, -1, -1, -1, 65, 66,
- 67, 68, 69, 70, -1, 72, 73, 74, -1, 76,
- -1, 78, -1, -1, 81, 82, 83, -1, -1, -1,
- 87, -1, -1, -1, -1, -1, 93, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 4, 5, 6, -1,
- -1, 9, 10, 11, -1, -1, 14, -1, 16, -1,
- -1, -1, 20, 21, 22, -1, -1, -1, -1, -1,
- -1, 29, 30, 31, 32, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 43, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 59, -1, -1, -1, -1, -1, -1, 66, 67,
- 68, 69, 70, 71, -1, 73, 74, 75, 76, 77,
- 78, -1, -1, 81, 82, 83, 84, 85, 86, -1,
- -1, -1, -1, -1, -1, 93, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 4, 5, 6, -1, -1,
- 9, 10, 11, -1, -1, 14, -1, 16, -1, -1,
- -1, 20, 21, 22, -1, -1, -1, -1, -1, -1,
- 29, 30, 31, 32, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 43, -1, -1, -1, 47, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 59, -1, -1, -1, -1, -1, 65, 66, 67, -1,
- 69, 70, 71, -1, 73, 74, 75, 76, 77, 78,
- -1, -1, 81, 82, 83, 84, 85, 86, -1, -1,
+ -1, 87, -1, -1, -1, -1, -1, -1, 94, 95,
+ 96, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 8, -1, -1, 11, 12, 13, -1, -1, -1, -1,
+ -1, -1, -1, -1, 22, -1, -1, -1, -1, -1,
+ -1, 29, -1, -1, -1, 33, 34, -1, 36, -1,
+ -1, -1, 40, -1, 42, 43, 44, -1, -1, 47,
+ -1, -1, -1, 51, -1, 53, -1, -1, 56, -1,
+ -1, -1, -1, -1, -1, -1, -1, 65, 66, 67,
+ 68, -1, 70, -1, 72, -1, 74, -1, 76, -1,
+ -1, -1, -1, 81, 82, 83, -1, -1, -1, 87,
+ -1, -1, -1, -1, -1, -1, 94, 95, 96, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 11, 12,
+ 13, -1, -1, -1, -1, -1, -1, -1, -1, 22,
+ -1, -1, -1, -1, -1, -1, 29, 30, -1, -1,
+ 33, 34, -1, 36, -1, -1, -1, 40, -1, 42,
+ 43, 44, -1, -1, 47, -1, -1, -1, 51, -1,
+ 53, -1, -1, -1, -1, -1, -1, -1, 61, -1,
+ -1, -1, 65, 66, 67, 68, 69, 70, -1, 72,
+ 73, 74, -1, 76, -1, 78, -1, -1, 81, 82,
+ 83, -1, -1, -1, 87, -1, -1, -1, -1, -1,
+ -1, 94, 95, 96, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 11, 12, 13, -1, -1, -1, -1,
+ -1, -1, -1, -1, 22, -1, -1, -1, -1, -1,
+ -1, 29, 30, -1, -1, 33, 34, -1, 36, -1,
+ -1, -1, 40, -1, 42, 43, 44, -1, -1, 47,
+ -1, -1, -1, 51, -1, 53, -1, -1, -1, -1,
+ -1, -1, -1, 61, -1, -1, -1, 65, 66, 67,
+ 68, 69, 70, -1, 72, 73, 74, -1, 76, -1,
+ 78, -1, -1, 81, 82, 83, -1, -1, -1, 87,
+ -1, -1, -1, -1, -1, -1, 94, 95, 96, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 4, 5,
+ 6, -1, -1, 9, 10, 11, -1, -1, 14, -1,
+ 16, -1, -1, -1, 20, 21, 22, -1, -1, -1,
+ -1, -1, -1, 29, 30, 31, 32, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 43, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 59, -1, -1, -1, -1, -1, -1,
+ 66, 67, 68, 69, 70, 71, -1, 73, 74, 75,
+ 76, 77, 78, -1, -1, 81, 82, 83, 84, 85,
+ 86, -1, -1, -1, -1, -1, -1, -1, 94, 95,
+ 96, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 4, 5, 6, -1, -1, 9, 10, 11, -1, -1,
+ 14, -1, 16, -1, -1, -1, 20, 21, 22, -1,
+ -1, -1, -1, -1, -1, 29, 30, 31, 32, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 43,
+ -1, -1, -1, 47, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 59, -1, -1, -1, -1,
+ -1, 65, 66, 67, 68, 69, 70, 71, -1, 73,
+ 74, 75, 76, 77, 78, -1, -1, 81, 82, 83,
+ 84, 85, 86, -1, -1, -1, -1, -1, -1, -1,
+ 94, 95, 96, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 4, 5, 6, -1, -1, 9, 10, 11,
+ -1, -1, 14, -1, 16, -1, -1, -1, 20, 21,
+ 22, -1, -1, -1, -1, -1, -1, 29, 30, 31,
+ 32, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 43, -1, -1, -1, 47, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 59, -1, -1,
+ -1, -1, -1, 65, 66, 67, 68, 69, 70, 71,
+ -1, 73, 74, 75, 76, 77, 78, -1, -1, 81,
+ 82, 83, 84, 85, 86, -1, -1, -1, -1, -1,
+ -1, -1, 94, 95, 96, -1, -1, -1, -1, -1,
-1, -1, -1, -1, 4, 5, 6, -1, -1, 9,
10, 11, -1, -1, 14, -1, 16, -1, -1, -1,
20, 21, 22, -1, -1, -1, -1, -1, -1, 29,
30, 31, 32, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, 43, -1, -1, -1, 47, -1, -1,
-1, -1, -1, -1, -1, 55, -1, -1, -1, 59,
- -1, -1, -1, -1, -1, 65, 66, 67, -1, 69,
+ -1, -1, -1, -1, -1, 65, 66, 67, 68, 69,
70, 71, -1, 73, 74, 75, 76, 77, 78, -1,
-1, 81, 82, 83, 84, 85, 86, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 4, -1, -1, -1, -1, 9, -1,
- 11, 12, 13, 14, -1, -1, -1, -1, -1, -1,
- 21, 22, -1, -1, -1, -1, -1, -1, 29, 30,
- -1, -1, 33, 34, -1, 36, -1, -1, -1, 40,
- -1, 42, 43, 44, -1, -1, 47, -1, -1, -1,
- 51, -1, 53, -1, -1, -1, -1, -1, 59, -1,
- 61, -1, -1, -1, 65, 66, 67, 68, 69, 70,
- 71, 72, 73, 74, 75, 76, 77, 78, -1, -1,
- 81, 82, 83, 84, 85, -1, 87, -1, -1, -1,
- -1, -1, 93, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 4, -1, -1, -1, -1, 9, -1, 11,
- 12, 13, 14, -1, -1, -1, -1, -1, -1, 21,
- 22, -1, -1, -1, -1, -1, -1, 29, 30, -1,
- -1, 33, 34, -1, 36, -1, -1, -1, 40, -1,
- 42, 43, 44, -1, -1, 47, -1, -1, -1, 51,
- -1, 53, -1, -1, -1, -1, -1, 59, -1, 61,
- -1, -1, -1, 65, 66, 67, 68, 69, 70, 71,
- 72, 73, 74, 75, 76, 77, 78, -1, -1, 81,
- 82, 83, 84, 85, -1, 87, -1, -1, -1, -1,
- -1, 93, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 4, 5, 6, -1, -1, 9, 10, 11, 12,
- 13, 14, -1, 16, -1, -1, -1, 20, 21, 22,
- -1, -1, -1, -1, -1, -1, 29, 30, 31, 32,
- 33, 34, -1, 36, -1, -1, -1, 40, -1, 42,
- 43, 44, -1, -1, 47, -1, -1, -1, 51, -1,
- 53, -1, -1, -1, -1, -1, 59, -1, 61, -1,
- -1, -1, 65, 66, 67, 68, 69, 70, 71, 72,
- 73, 74, 75, 76, 77, 78, -1, -1, 81, 82,
- 83, 84, 85, 86, 87, -1, -1, -1, -1, -1,
- 93, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 94, 95, 96, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 4, -1, -1, -1,
+ -1, 9, -1, 11, 12, 13, 14, -1, -1, -1,
+ -1, -1, -1, 21, 22, -1, -1, -1, -1, -1,
+ -1, 29, 30, -1, -1, 33, 34, -1, 36, -1,
+ -1, -1, 40, -1, 42, 43, 44, -1, -1, 47,
+ -1, -1, -1, 51, -1, 53, -1, -1, -1, -1,
+ -1, 59, -1, 61, -1, -1, -1, 65, 66, 67,
+ 68, 69, 70, 71, 72, 73, 74, 75, 76, 77,
+ 78, -1, -1, 81, 82, 83, 84, 85, -1, 87,
+ -1, -1, -1, -1, -1, -1, 94, 95, 96, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 4, -1,
+ -1, -1, -1, 9, -1, 11, 12, 13, 14, -1,
+ -1, -1, -1, -1, -1, 21, 22, -1, -1, -1,
+ -1, -1, -1, 29, 30, -1, -1, 33, 34, -1,
+ 36, -1, -1, -1, 40, -1, 42, 43, 44, -1,
+ -1, 47, -1, -1, -1, 51, -1, 53, -1, -1,
+ -1, -1, -1, 59, -1, 61, -1, -1, -1, 65,
+ 66, 67, 68, 69, 70, 71, 72, 73, 74, 75,
+ 76, 77, 78, -1, -1, 81, 82, 83, 84, 85,
+ -1, 87, -1, -1, -1, -1, -1, -1, 94, 95,
+ 96, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4, 5, 6, -1, -1, 9, 10, 11, 12, 13,
14, -1, 16, -1, -1, -1, 20, 21, 22, -1,
-1, -1, -1, -1, -1, 29, 30, 31, 32, 33,
34, -1, 36, -1, -1, -1, 40, -1, 42, 43,
44, -1, -1, 47, -1, -1, -1, 51, -1, 53,
- -1, 55, -1, -1, -1, 59, -1, 61, -1, -1,
+ -1, -1, -1, -1, -1, 59, -1, 61, -1, -1,
-1, 65, 66, 67, 68, 69, 70, 71, 72, 73,
74, 75, 76, 77, 78, -1, -1, 81, 82, 83,
- 84, 85, 86, 87, -1, -1, -1, -1, -1, 93,
- -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 84, 85, 86, 87, -1, -1, -1, -1, -1, -1,
+ 94, 95, 96, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 4, 5, 6, -1, -1, 9, 10, 11,
+ 12, 13, 14, -1, 16, -1, -1, -1, 20, 21,
+ 22, -1, -1, -1, -1, -1, -1, 29, 30, 31,
+ 32, 33, 34, -1, 36, -1, -1, -1, 40, -1,
+ 42, 43, 44, -1, -1, 47, -1, -1, -1, 51,
+ -1, 53, -1, 55, -1, -1, -1, 59, -1, 61,
+ -1, -1, -1, 65, 66, 67, 68, 69, 70, 71,
+ 72, 73, 74, 75, 76, 77, 78, -1, -1, 81,
+ 82, 83, 84, 85, 86, 87, -1, -1, -1, -1,
+ -1, -1, 94, 95, 96, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1,
- 15, 3, 13, 29, 29, 15, 15, 4, 2, 15,
- 105, 9, 15, 2, 15, 3, 29, 22, 3, 15,
- 15, 2, 39, 15, 3, 15, 19, 3, 2, 15,
- 3, 15, 19, 11, 71, 15, 19, 2, 13, 39,
- 97, 2, 2, 15, 15, 3, 15, 29, 39, 15,
- 94, 101, 29, 3, 2, 2, 15, 99, 15, 22,
- 3, 3, 15, 15, 2, 2, 15, 22, 2, 39,
- 2, 39, 39, 3, 3, 39, 22, 39, 2, 2,
- 15, 3, 22, 39, 4, 39, 4, 3, 2, 40,
- 3, 3, 2, 2, 39, 39, 3, 3, 13, 2,
- 2, -1, -1, 39, -1, -1, -1, 48, 44, 48,
- -1, 50, 53, -1, 3, 48, 13, 48, 13, 50,
- 53, 48, 48, 48, 50, 15, 53, 48, 53, 48,
- 45, 50, 13, 13, 3, 16, 16, 48, 15, 50,
- 48, 62, 50, 48, 48, 50, 50, 48, 45, 48,
- 45, 50, 48, 39, 48, 48, 48, 53, 44, 53,
- 48, 53, 50, 64, 48, 48, 48, 60, 15, 48,
- 54, 54, 54, 13, 35, -1, 16, 56, 39, 82,
- 82, 48, 48, 72, 48, 48, 53, 53, 52, 48,
- 53, 48, 48, 52, 41, 48, 53, 2, 54, 52,
- 48, 13, 15, 72, 48, 53, 3, 51, 20, 15,
- 100, 88, 48, 48, 50, 50, 48, 48, 50, 50,
- 48, 48, 50, 48, 48, 50, 48, 51, 50, 48,
- 48, 58, 50, 48, 53, 41, 42, 48, 53, -1,
- 48, -1, 53, -1, 63, 53, 61, 48, 48, 48,
- 48, -1, 53, 53, 53, 53, 48, 55, 57, 70,
- -1, 53, 70, 48, -1, 65, -1, 59, 53, 70,
- 55, 48, 48, 86, -1, 72, 53, 53, 55, 55,
- 13, 48, 48, 16, 5, 18, 53, 53, 13, -1,
- 5, -1, 13, -1, -1, 20, -1, -1, 13, 20,
- -1, -1, 3, 70, 70, 20, 39, 32, 33, -1,
- -1, 32, 33, -1, -1, -1, -1, 32, 33, 22,
- 23, 24, 25, 26, 27, 28, 13, -1, -1, -1,
- -1, -1, -1, 20, 21, 22, 23, 24, 25, 26,
- 27, 28, 13, -1, -1, -1, -1, -1, -1, 20,
- 21, 22, 23, 24, 25, 26, 27, 28, -1, -1,
+ 42, 3, 18, 25, 18, 3, 18, 3, 18, 22,
+ 18, 3, 18, 22, 32, 32, 42, 18, 18, 18,
+ 3, 32, 25, 18, 18, 32, 3, 18, 32, 105,
+ 18, 18, 25, 100, 3, 3, 3, 18, 3, 25,
+ 18, 3, 18, 18, 18, 42, 3, 3, 103, 9,
+ 3, 14, 42, 42, 18, 25, 14, 42, 42, 18,
+ 42, 3, 42, 18, 18, 3, 18, 3, 18, 14,
+ 42, 22, 18, 2, 4, 18, 42, 18, 2, 11,
+ 12, 54, -1, 54, 2, 56, 59, 18, 18, 18,
+ 4, 14, 14, 54, 18, 56, 19, 14, 77, 14,
+ 18, 23, 2, 46, 18, 54, 54, 54, 2, 2,
+ 59, 59, 59, 18, 54, 54, 3, 56, 18, 59,
+ 54, 54, 56, 56, 18, 18, 54, 54, 54, 56,
+ 56, 59, 18, 54, 51, 56, 51, 2, 54, 2,
+ 56, 54, 54, 56, 56, 54, 54, 56, 38, 2,
+ 58, 54, 42, 18, 57, 18, 3, 54, 2, 45,
+ 18, 92, 54, 54, 2, 18, 3, 18, 109, 66,
+ 42, 54, 64, 56, 18, 18, 18, 2, 50, 70,
+ 18, 54, 42, 4, 54, 43, 56, 18, 14, 94,
+ 50, 78, 2, 18, 45, 68, 18, 18, 54, 18,
+ 56, 3, 54, 46, 46, 54, 54, 59, 18, 54,
+ 2, 60, 60, 44, 54, 60, 56, 2, 14, 14,
+ 3, 54, 44, 19, 19, 51, 18, 60, 47, 2,
+ 54, 78, 18, 18, 54, -1, 56, 54, 62, 56,
+ 54, 54, 18, 18, 58, 18, 59, 54, 54, 54,
+ 57, 54, 58, 54, 59, 54, 59, 54, 59, 45,
+ 59, 54, 59, 54, 2, 2, 59, -1, 59, 45,
+ 61, -1, 47, 48, 2, -1, 78, 54, -1, 76,
+ 18, 18, 59, 76, 54, -1, 54, 54, 54, 59,
+ 18, 59, 59, 59, -1, 78, -1, -1, 54, 76,
+ 54, 69, -1, 59, 71, 59, 76, 61, 54, 54,
+ 76, 67, 54, 59, 59, 61, 5, 59, 54, 61,
+ 65, 14, 5, 59, -1, 14, 19, 63, 21, -1,
+ -1, 14, -1, -1, 23, -1, -1, -1, -1, -1,
+ 23, -1, -1, -1, -1, -1, 35, 36, -1, 42,
+ 88, 88, 35, 36, 25, 26, 27, 28, 29, 30,
+ 31, 24, 25, 26, 27, 28, 29, 30, 31, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 14, 14, -1, -1, -1, -1, -1,
+ -1, -1, 23, 23, 24, 25, 26, 27, 28, 29,
+ 30, 31, -1, -1, 35, 36, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 72, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 21, 22, 23, 24,
- 25, 26, 27, 28, -1, -1, -1, -1, -1, -1,
+ 14, -1, -1, -1, -1, -1, -1, -1, -1, 23,
+ 24, 25, 26, 27, 28, 29, 30, 31, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
@@ -1040,6 +1083,6 @@ const short QmlJSGrammar::action_check [] = {
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1};
+ -1, -1, -1, -1, -1, -1, -1};
QT_END_NAMESPACE
diff --git a/src/libs/qmljs/parser/qmljsgrammar_p.h b/src/libs/qmljs/parser/qmljsgrammar_p.h
index f28711777c..c9e627260a 100644
--- a/src/libs/qmljs/parser/qmljsgrammar_p.h
+++ b/src/libs/qmljs/parser/qmljsgrammar_p.h
@@ -52,12 +52,12 @@ class QML_PARSER_EXPORT QmlJSGrammar
public:
enum VariousConstants {
EOF_SYMBOL = 0,
- REDUCE_HERE = 102,
- SHIFT_THERE = 101,
+ REDUCE_HERE = 105,
+ SHIFT_THERE = 104,
T_AND = 1,
T_AND_AND = 2,
T_AND_EQ = 3,
- T_AS = 92,
+ T_AS = 93,
T_AUTOMATIC_SEMICOLON = 62,
T_BREAK = 4,
T_CASE = 5,
@@ -79,18 +79,19 @@ public:
T_EQ = 17,
T_EQ_EQ = 18,
T_EQ_EQ_EQ = 19,
- T_ERROR = 94,
+ T_ERROR = 97,
T_FALSE = 83,
- T_FEED_JS_EXPRESSION = 98,
- T_FEED_JS_PROGRAM = 100,
- T_FEED_JS_SOURCE_ELEMENT = 99,
- T_FEED_JS_STATEMENT = 97,
- T_FEED_UI_OBJECT_MEMBER = 96,
- T_FEED_UI_PROGRAM = 95,
+ T_FEED_JS_EXPRESSION = 101,
+ T_FEED_JS_PROGRAM = 103,
+ T_FEED_JS_SOURCE_ELEMENT = 102,
+ T_FEED_JS_STATEMENT = 100,
+ T_FEED_UI_OBJECT_MEMBER = 99,
+ T_FEED_UI_PROGRAM = 98,
T_FINALLY = 20,
T_FOR = 21,
T_FUNCTION = 22,
T_GE = 23,
+ T_GET = 95,
T_GT = 24,
T_GT_GT = 25,
T_GT_GT_EQ = 26,
@@ -118,13 +119,14 @@ public:
T_NOT_EQ_EQ = 46,
T_NULL = 81,
T_NUMERIC_LITERAL = 47,
- T_ON = 93,
+ T_ON = 94,
T_OR = 48,
T_OR_EQ = 49,
T_OR_OR = 50,
T_PLUS = 51,
T_PLUS_EQ = 52,
T_PLUS_PLUS = 53,
+ T_PRAGMA = 92,
T_PROPERTY = 66,
T_PUBLIC = 90,
T_QUESTION = 54,
@@ -137,6 +139,7 @@ public:
T_RETURN = 59,
T_RPAREN = 60,
T_SEMICOLON = 61,
+ T_SET = 96,
T_SIGNAL = 67,
T_STAR = 63,
T_STAR_EQ = 64,
@@ -155,15 +158,15 @@ public:
T_XOR = 79,
T_XOR_EQ = 80,
- ACCEPT_STATE = 645,
- RULE_COUNT = 350,
- STATE_COUNT = 646,
- TERMINAL_COUNT = 103,
- NON_TERMINAL_COUNT = 107,
+ ACCEPT_STATE = 663,
+ RULE_COUNT = 357,
+ STATE_COUNT = 664,
+ TERMINAL_COUNT = 106,
+ NON_TERMINAL_COUNT = 111,
- GOTO_INDEX_OFFSET = 646,
- GOTO_INFO_OFFSET = 3019,
- GOTO_CHECK_OFFSET = 3019
+ GOTO_INDEX_OFFSET = 664,
+ GOTO_INFO_OFFSET = 3104,
+ GOTO_CHECK_OFFSET = 3104
};
static const char *const spell [];
diff --git a/src/libs/qmljs/parser/qmljskeywords_p.h b/src/libs/qmljs/parser/qmljskeywords_p.h
index 0c77ff8584..ae7e945177 100644
--- a/src/libs/qmljs/parser/qmljskeywords_p.h
+++ b/src/libs/qmljs/parser/qmljskeywords_p.h
@@ -41,6 +41,12 @@
// We mean it.
//
+#include "qmljslexer_p.h"
+
+QT_QML_BEGIN_NAMESPACE
+
+namespace QmlJS {
+
// Note on the int() casts in the following code:
// they casts values from Lexer's anonymous enum (aliasing some of the inherited
// QmlJSGrammar::VariousConstants) to int when used with inherited values of the
@@ -82,10 +88,17 @@ static inline int classify3(const QChar *s, bool qmlMode) {
}
}
}
+ else if (s[0].unicode() == 'g') {
+ if (s[1].unicode() == 'e') {
+ if (s[2].unicode() == 't') {
+ return Lexer::T_GET;
+ }
+ }
+ }
else if (s[0].unicode() == 'i') {
if (s[1].unicode() == 'n') {
if (s[2].unicode() == 't') {
- return qmlMode ? int(Lexer::T_INT) : Lexer::T_IDENTIFIER;
+ return qmlMode ? int(Lexer::T_INT) : int(Lexer::T_IDENTIFIER);
}
}
}
@@ -96,6 +109,13 @@ static inline int classify3(const QChar *s, bool qmlMode) {
}
}
}
+ else if (s[0].unicode() == 's') {
+ if (s[1].unicode() == 'e') {
+ if (s[2].unicode() == 't') {
+ return Lexer::T_SET;
+ }
+ }
+ }
else if (s[0].unicode() == 't') {
if (s[1].unicode() == 'r') {
if (s[2].unicode() == 'y') {
@@ -118,7 +138,7 @@ static inline int classify4(const QChar *s, bool qmlMode) {
if (s[1].unicode() == 'y') {
if (s[2].unicode() == 't') {
if (s[3].unicode() == 'e') {
- return qmlMode ? int(Lexer::T_BYTE) : Lexer::T_IDENTIFIER;
+ return qmlMode ? int(Lexer::T_BYTE) : int(Lexer::T_IDENTIFIER);
}
}
}
@@ -134,7 +154,7 @@ static inline int classify4(const QChar *s, bool qmlMode) {
else if (s[1].unicode() == 'h') {
if (s[2].unicode() == 'a') {
if (s[3].unicode() == 'r') {
- return qmlMode ? int(Lexer::T_CHAR) : Lexer::T_IDENTIFIER;
+ return qmlMode ? int(Lexer::T_CHAR) : int(Lexer::T_IDENTIFIER);
}
}
}
@@ -159,7 +179,7 @@ static inline int classify4(const QChar *s, bool qmlMode) {
if (s[1].unicode() == 'o') {
if (s[2].unicode() == 't') {
if (s[3].unicode() == 'o') {
- return qmlMode ? int(Lexer::T_GOTO) : Lexer::T_IDENTIFIER;
+ return qmlMode ? int(Lexer::T_GOTO) : int(Lexer::T_IDENTIFIER);
}
}
}
@@ -168,7 +188,7 @@ static inline int classify4(const QChar *s, bool qmlMode) {
if (s[1].unicode() == 'o') {
if (s[2].unicode() == 'n') {
if (s[3].unicode() == 'g') {
- return qmlMode ? int(Lexer::T_LONG) : Lexer::T_IDENTIFIER;
+ return qmlMode ? int(Lexer::T_LONG) : int(Lexer::T_IDENTIFIER);
}
}
}
@@ -254,7 +274,7 @@ static inline int classify5(const QChar *s, bool qmlMode) {
if (s[2].unicode() == 'n') {
if (s[3].unicode() == 's') {
if (s[4].unicode() == 't') {
- return qmlMode ? Lexer::T_CONST : Lexer::T_RESERVED_WORD;
+ return qmlMode ? int(Lexer::T_CONST) : int(Lexer::T_RESERVED_WORD);
}
}
}
@@ -274,7 +294,7 @@ static inline int classify5(const QChar *s, bool qmlMode) {
if (s[2].unicode() == 'n') {
if (s[3].unicode() == 'a') {
if (s[4].unicode() == 'l') {
- return qmlMode ? int(Lexer::T_FINAL) : Lexer::T_IDENTIFIER;
+ return qmlMode ? int(Lexer::T_FINAL) : int(Lexer::T_IDENTIFIER);
}
}
}
@@ -283,7 +303,7 @@ static inline int classify5(const QChar *s, bool qmlMode) {
if (s[2].unicode() == 'o') {
if (s[3].unicode() == 'a') {
if (s[4].unicode() == 't') {
- return qmlMode ? int(Lexer::T_FLOAT) : Lexer::T_IDENTIFIER;
+ return qmlMode ? int(Lexer::T_FLOAT) : int(Lexer::T_IDENTIFIER);
}
}
}
@@ -294,7 +314,7 @@ static inline int classify5(const QChar *s, bool qmlMode) {
if (s[2].unicode() == 'o') {
if (s[3].unicode() == 'r') {
if (s[4].unicode() == 't') {
- return qmlMode ? int(Lexer::T_SHORT) : Lexer::T_IDENTIFIER;
+ return qmlMode ? int(Lexer::T_SHORT) : int(Lexer::T_IDENTIFIER);
}
}
}
@@ -303,7 +323,7 @@ static inline int classify5(const QChar *s, bool qmlMode) {
if (s[2].unicode() == 'p') {
if (s[3].unicode() == 'e') {
if (s[4].unicode() == 'r') {
- return qmlMode ? int(Lexer::T_SUPER) : Lexer::T_IDENTIFIER;
+ return qmlMode ? int(Lexer::T_SUPER) : int(Lexer::T_RESERVED_WORD);
}
}
}
@@ -352,7 +372,7 @@ static inline int classify6(const QChar *s, bool qmlMode) {
if (s[3].unicode() == 'b') {
if (s[4].unicode() == 'l') {
if (s[5].unicode() == 'e') {
- return qmlMode ? int(Lexer::T_DOUBLE) : Lexer::T_IDENTIFIER;
+ return qmlMode ? int(Lexer::T_DOUBLE) : int(Lexer::T_IDENTIFIER);
}
}
}
@@ -378,7 +398,7 @@ static inline int classify6(const QChar *s, bool qmlMode) {
if (s[3].unicode() == 'o') {
if (s[4].unicode() == 'r') {
if (s[5].unicode() == 't') {
- return qmlMode ? Lexer::T_IMPORT : Lexer::T_RESERVED_WORD;
+ return qmlMode ? int(Lexer::T_IMPORT) : int(Lexer::T_RESERVED_WORD);
}
}
}
@@ -391,7 +411,7 @@ static inline int classify6(const QChar *s, bool qmlMode) {
if (s[3].unicode() == 'i') {
if (s[4].unicode() == 'v') {
if (s[5].unicode() == 'e') {
- return qmlMode ? int(Lexer::T_NATIVE) : Lexer::T_IDENTIFIER;
+ return qmlMode ? int(Lexer::T_NATIVE) : int(Lexer::T_IDENTIFIER);
}
}
}
@@ -410,6 +430,17 @@ static inline int classify6(const QChar *s, bool qmlMode) {
}
}
}
+ else if (s[1].unicode() == 'r') {
+ if (s[2].unicode() == 'a') {
+ if (s[3].unicode() == 'g') {
+ if (s[4].unicode() == 'm') {
+ if (s[5].unicode() == 'a') {
+ return qmlMode ? Lexer::T_PRAGMA : Lexer::T_IDENTIFIER;
+ }
+ }
+ }
+ }
+ }
}
else if (s[0].unicode() == 'r') {
if (s[1].unicode() == 'e') {
@@ -441,7 +472,7 @@ static inline int classify6(const QChar *s, bool qmlMode) {
if (s[3].unicode() == 't') {
if (s[4].unicode() == 'i') {
if (s[5].unicode() == 'c') {
- return qmlMode ? int(Lexer::T_STATIC) : Lexer::T_IDENTIFIER;
+ return qmlMode ? int(Lexer::T_STATIC) : int(Lexer::T_IDENTIFIER);
}
}
}
@@ -465,7 +496,7 @@ static inline int classify6(const QChar *s, bool qmlMode) {
if (s[3].unicode() == 'o') {
if (s[4].unicode() == 'w') {
if (s[5].unicode() == 's') {
- return qmlMode ? int(Lexer::T_THROWS) : Lexer::T_IDENTIFIER;
+ return qmlMode ? int(Lexer::T_THROWS) : int(Lexer::T_IDENTIFIER);
}
}
}
@@ -494,7 +525,7 @@ static inline int classify7(const QChar *s, bool qmlMode) {
if (s[4].unicode() == 'e') {
if (s[5].unicode() == 'a') {
if (s[6].unicode() == 'n') {
- return qmlMode ? int(Lexer::T_BOOLEAN) : Lexer::T_IDENTIFIER;
+ return qmlMode ? int(Lexer::T_BOOLEAN) : int(Lexer::T_IDENTIFIER);
}
}
}
@@ -554,7 +585,7 @@ static inline int classify7(const QChar *s, bool qmlMode) {
if (s[4].unicode() == 'a') {
if (s[5].unicode() == 'g') {
if (s[6].unicode() == 'e') {
- return qmlMode ? int(Lexer::T_PACKAGE) : Lexer::T_IDENTIFIER;
+ return qmlMode ? int(Lexer::T_PACKAGE) : int(Lexer::T_IDENTIFIER);
}
}
}
@@ -567,7 +598,7 @@ static inline int classify7(const QChar *s, bool qmlMode) {
if (s[4].unicode() == 'a') {
if (s[5].unicode() == 't') {
if (s[6].unicode() == 'e') {
- return qmlMode ? int(Lexer::T_PRIVATE) : Lexer::T_IDENTIFIER;
+ return qmlMode ? int(Lexer::T_PRIVATE) : int(Lexer::T_IDENTIFIER);
}
}
}
@@ -587,7 +618,7 @@ static inline int classify8(const QChar *s, bool qmlMode) {
if (s[5].unicode() == 'a') {
if (s[6].unicode() == 'c') {
if (s[7].unicode() == 't') {
- return qmlMode ? int(Lexer::T_ABSTRACT) : Lexer::T_IDENTIFIER;
+ return qmlMode ? int(Lexer::T_ABSTRACT) : int(Lexer::T_IDENTIFIER);
}
}
}
@@ -689,7 +720,7 @@ static inline int classify8(const QChar *s, bool qmlMode) {
if (s[5].unicode() == 'i') {
if (s[6].unicode() == 'l') {
if (s[7].unicode() == 'e') {
- return qmlMode ? int(Lexer::T_VOLATILE) : Lexer::T_IDENTIFIER;
+ return qmlMode ? int(Lexer::T_VOLATILE) : int(Lexer::T_IDENTIFIER);
}
}
}
@@ -711,7 +742,7 @@ static inline int classify9(const QChar *s, bool qmlMode) {
if (s[6].unicode() == 'a') {
if (s[7].unicode() == 'c') {
if (s[8].unicode() == 'e') {
- return qmlMode ? int(Lexer::T_INTERFACE) : Lexer::T_IDENTIFIER;
+ return qmlMode ? int(Lexer::T_INTERFACE) : int(Lexer::T_IDENTIFIER);
}
}
}
@@ -730,7 +761,7 @@ static inline int classify9(const QChar *s, bool qmlMode) {
if (s[6].unicode() == 't') {
if (s[7].unicode() == 'e') {
if (s[8].unicode() == 'd') {
- return qmlMode ? int(Lexer::T_PROTECTED) : Lexer::T_IDENTIFIER;
+ return qmlMode ? int(Lexer::T_PROTECTED) : int(Lexer::T_IDENTIFIER);
}
}
}
@@ -749,7 +780,7 @@ static inline int classify9(const QChar *s, bool qmlMode) {
if (s[6].unicode() == 'e') {
if (s[7].unicode() == 'n') {
if (s[8].unicode() == 't') {
- return qmlMode ? int(Lexer::T_TRANSIENT) : Lexer::T_IDENTIFIER;
+ return qmlMode ? int(Lexer::T_TRANSIENT) : int(Lexer::T_IDENTIFIER);
}
}
}
@@ -773,7 +804,7 @@ static inline int classify10(const QChar *s, bool qmlMode) {
if (s[7].unicode() == 'n') {
if (s[8].unicode() == 't') {
if (s[9].unicode() == 's') {
- return qmlMode ? int(Lexer::T_IMPLEMENTS) : Lexer::T_IDENTIFIER;
+ return qmlMode ? int(Lexer::T_IMPLEMENTS) : int(Lexer::T_IDENTIFIER);
}
}
}
@@ -819,7 +850,7 @@ static inline int classify12(const QChar *s, bool qmlMode) {
if (s[9].unicode() == 'z') {
if (s[10].unicode() == 'e') {
if (s[11].unicode() == 'd') {
- return qmlMode ? int(Lexer::T_SYNCHRONIZED) : Lexer::T_IDENTIFIER;
+ return qmlMode ? int(Lexer::T_SYNCHRONIZED) : int(Lexer::T_IDENTIFIER);
}
}
}
@@ -851,4 +882,8 @@ int Lexer::classify(const QChar *s, int n, bool qmlMode) {
} // switch
}
+} // namespace QmlJS
+
+QT_QML_END_NAMESPACE
+
#endif // QMLJSKEYWORDS_P_H
diff --git a/src/libs/qmljs/parser/qmljslexer.cpp b/src/libs/qmljs/parser/qmljslexer.cpp
index 68e5e9519d..8f93e30063 100644
--- a/src/libs/qmljs/parser/qmljslexer.cpp
+++ b/src/libs/qmljs/parser/qmljslexer.cpp
@@ -30,10 +30,11 @@
#include "qmljslexer_p.h"
#include "qmljsengine_p.h"
#include "qmljsmemorypool_p.h"
+#include "qmljskeywords_p.h"
-#include <QtCore/QCoreApplication>
-#include <QtCore/QVarLengthArray>
-#include <QtCore/QDebug>
+#include <QtCore/qcoreapplication.h>
+#include <QtCore/qvarlengtharray.h>
+#include <QtCore/qdebug.h>
QT_BEGIN_NAMESPACE
Q_CORE_EXPORT double qstrtod(const char *s00, char const **se, bool *ok);
@@ -41,7 +42,7 @@ QT_END_NAMESPACE
using namespace QmlJS;
-static int regExpFlagFromChar(const QChar &ch)
+static inline int regExpFlagFromChar(const QChar &ch)
{
switch (ch.unicode()) {
case 'g': return Lexer::RegExp_Global;
@@ -51,7 +52,7 @@ static int regExpFlagFromChar(const QChar &ch)
return 0;
}
-static unsigned char convertHex(ushort c)
+static inline unsigned char convertHex(ushort c)
{
if (c >= '0' && c <= '9')
return (c - '0');
@@ -61,12 +62,12 @@ static unsigned char convertHex(ushort c)
return (c - 'A' + 10);
}
-static QChar convertHex(QChar c1, QChar c2)
+static inline QChar convertHex(QChar c1, QChar c2)
{
return QChar((convertHex(c1.unicode()) << 4) + convertHex(c2.unicode()));
}
-static QChar convertUnicode(QChar c1, QChar c2, QChar c3, QChar c4)
+static inline QChar convertUnicode(QChar c1, QChar c2, QChar c3, QChar c4)
{
return QChar((convertHex(c3.unicode()) << 4) + convertHex(c4.unicode()),
(convertHex(c1.unicode()) << 4) + convertHex(c2.unicode()));
@@ -124,6 +125,7 @@ void Lexer::setCode(const QString &code, int lineno, bool qmlMode)
_tokenSpell = QStringRef();
_codePtr = code.unicode();
+ _endPtr = _codePtr + code.length();
_lastLinePtr = _codePtr;
_tokenLinePtr = _codePtr;
_tokenStartPtr = _codePtr;
@@ -165,6 +167,52 @@ void Lexer::scanChar()
}
}
+namespace {
+inline bool isBinop(int tok)
+{
+ switch (tok) {
+ case Lexer::T_AND:
+ case Lexer::T_AND_AND:
+ case Lexer::T_AND_EQ:
+ case Lexer::T_DIVIDE_:
+ case Lexer::T_DIVIDE_EQ:
+ case Lexer::T_EQ:
+ case Lexer::T_EQ_EQ:
+ case Lexer::T_EQ_EQ_EQ:
+ case Lexer::T_GE:
+ case Lexer::T_GT:
+ case Lexer::T_GT_GT:
+ case Lexer::T_GT_GT_EQ:
+ case Lexer::T_GT_GT_GT:
+ case Lexer::T_GT_GT_GT_EQ:
+ case Lexer::T_LE:
+ case Lexer::T_LT:
+ case Lexer::T_LT_LT:
+ case Lexer::T_LT_LT_EQ:
+ case Lexer::T_MINUS:
+ case Lexer::T_MINUS_EQ:
+ case Lexer::T_NOT_EQ:
+ case Lexer::T_NOT_EQ_EQ:
+ case Lexer::T_OR:
+ case Lexer::T_OR_EQ:
+ case Lexer::T_OR_OR:
+ case Lexer::T_PLUS:
+ case Lexer::T_PLUS_EQ:
+ case Lexer::T_REMAINDER:
+ case Lexer::T_REMAINDER_EQ:
+ case Lexer::T_RETURN:
+ case Lexer::T_STAR:
+ case Lexer::T_STAR_EQ:
+ case Lexer::T_XOR:
+ case Lexer::T_XOR_EQ:
+ return true;
+
+ default:
+ return false;
+ }
+}
+} // anonymous namespace
+
int Lexer::lex()
{
const int previousTokenKind = _tokenKind;
@@ -181,9 +229,15 @@ int Lexer::lex()
switch (_tokenKind) {
case T_LBRACE:
case T_SEMICOLON:
+ case T_QUESTION:
case T_COLON:
+ case T_TILDE:
_delimited = true;
break;
+ default:
+ if (isBinop(_tokenKind))
+ _delimited = true;
+ break;
case T_IF:
case T_FOR:
@@ -193,6 +247,7 @@ int Lexer::lex()
_parenthesesCount = 0;
break;
+ case T_ELSE:
case T_DO:
_parenthesesState = BalancedParentheses;
break;
@@ -221,7 +276,8 @@ int Lexer::lex()
break;
case BalancedParentheses:
- _parenthesesState = IgnoreParentheses;
+ if (_tokenKind != T_DO && _tokenKind != T_ELSE)
+ _parenthesesState = IgnoreParentheses;
break;
} // switch
@@ -263,6 +319,80 @@ QChar Lexer::decodeUnicodeEscapeCharacter(bool *ok)
return QChar();
}
+QChar Lexer::decodeHexEscapeCharacter(bool *ok)
+{
+ if (isHexDigit(_codePtr[0]) && isHexDigit(_codePtr[1])) {
+ scanChar();
+
+ const QChar c1 = _char;
+ scanChar();
+
+ const QChar c2 = _char;
+ scanChar();
+
+ if (ok)
+ *ok = true;
+
+ return convertHex(c1, c2);
+ }
+
+ *ok = false;
+ return QChar();
+}
+
+static inline bool isIdentifierStart(QChar ch)
+{
+ // fast path for ascii
+ if ((ch.unicode() >= 'a' && ch.unicode() <= 'z') ||
+ (ch.unicode() >= 'A' && ch.unicode() <= 'Z') ||
+ ch == QLatin1Char('$') || ch == QLatin1Char('_'))
+ return true;
+
+ switch (ch.category()) {
+ case QChar::Number_Letter:
+ case QChar::Letter_Uppercase:
+ case QChar::Letter_Lowercase:
+ case QChar::Letter_Titlecase:
+ case QChar::Letter_Modifier:
+ case QChar::Letter_Other:
+ return true;
+ default:
+ break;
+ }
+ return false;
+}
+
+static bool isIdentifierPart(QChar ch)
+{
+ // fast path for ascii
+ if ((ch.unicode() >= 'a' && ch.unicode() <= 'z') ||
+ (ch.unicode() >= 'A' && ch.unicode() <= 'Z') ||
+ (ch.unicode() >= '0' && ch.unicode() <= '9') ||
+ ch == QLatin1Char('$') || ch == QLatin1Char('_') ||
+ ch.unicode() == 0x200c /* ZWNJ */ || ch.unicode() == 0x200d /* ZWJ */)
+ return true;
+
+ switch (ch.category()) {
+ case QChar::Mark_NonSpacing:
+ case QChar::Mark_SpacingCombining:
+
+ case QChar::Number_DecimalDigit:
+ case QChar::Number_Letter:
+
+ case QChar::Letter_Uppercase:
+ case QChar::Letter_Lowercase:
+ case QChar::Letter_Titlecase:
+ case QChar::Letter_Modifier:
+ case QChar::Letter_Other:
+
+ case QChar::Punctuation_Connector:
+ return true;
+ default:
+ break;
+ }
+ return false;
+}
+
int Lexer::scanToken()
{
if (_stackToken != -1) {
@@ -298,7 +428,7 @@ again:
_tokenStartPtr = _codePtr - 1;
_tokenLine = _currentLineNumber;
- if (_char.isNull())
+ if (_codePtr > _endPtr)
return EOF_SYMBOL;
const QChar ch = _char;
@@ -383,7 +513,7 @@ again:
case '/':
if (_char == QLatin1Char('*')) {
scanChar();
- while (!_char.isNull()) {
+ while (_codePtr <= _endPtr) {
if (_char == QLatin1Char('*')) {
scanChar();
if (_char == QLatin1Char('/')) {
@@ -401,7 +531,7 @@ again:
}
}
} else if (_char == QLatin1Char('/')) {
- while (!_char.isNull() && !isLineTerminator()) {
+ while (_codePtr <= _endPtr && !isLineTerminator()) {
scanChar();
}
if (_engine) {
@@ -543,8 +673,14 @@ again:
const QChar *startCode = _codePtr;
if (_engine) {
- while (!_char.isNull()) {
- if (isLineTerminator() || _char == QLatin1Char('\\')) {
+ while (_codePtr <= _endPtr) {
+ if (isLineTerminator()) {
+ if (qmlMode())
+ break;
+ _errorCode = IllegalCharacter;
+ _errorMessage = QCoreApplication::translate("QmlParser", "Stray newline in string literal");
+ return T_ERROR;
+ } else if (_char == QLatin1Char('\\')) {
break;
} else if (_char == quote) {
_tokenSpell = _engine->midRef(startCode - _code.unicode() - 1, _codePtr - startCode);
@@ -562,7 +698,7 @@ again:
while (startCode != _codePtr - 1)
_tokenText += *startCode++;
- while (! _char.isNull()) {
+ while (_codePtr <= _endPtr) {
if (unsigned sequenceLength = isLineTerminatorSequence()) {
multilineStringLiteral = true;
_tokenText += _char;
@@ -580,32 +716,29 @@ again:
scanChar();
QChar u;
- bool ok = false;
switch (_char.unicode()) {
// unicode escape sequence
- case 'u':
+ case 'u': {
+ bool ok = false;
u = decodeUnicodeEscapeCharacter(&ok);
- if (! ok)
- u = _char;
- break;
+ if (! ok) {
+ _errorCode = IllegalUnicodeEscapeSequence;
+ _errorMessage = QCoreApplication::translate("QmlParser", "Illegal unicode escape sequence");
+ return T_ERROR;
+ }
+ } break;
// hex escape sequence
- case 'x':
- if (isHexDigit(_codePtr[0]) && isHexDigit(_codePtr[1])) {
- scanChar();
-
- const QChar c1 = _char;
- scanChar();
-
- const QChar c2 = _char;
- scanChar();
-
- u = convertHex(c1, c2);
- } else {
- u = _char;
+ case 'x': {
+ bool ok = false;
+ u = decodeHexEscapeCharacter(&ok);
+ if (!ok) {
+ _errorCode = IllegalHexadecimalEscapeSequence;
+ _errorMessage = QCoreApplication::translate("QmlParser", "Illegal hexadecimal escape sequence");
+ return T_ERROR;
}
- break;
+ } break;
// single character escape sequence
case '\\': u = QLatin1Char('\\'); scanChar(); break;
@@ -619,32 +752,31 @@ again:
case 'v': u = QLatin1Char('\v'); scanChar(); break;
case '0':
- if (! _codePtr[1].isDigit()) {
+ if (! _codePtr->isDigit()) {
scanChar();
u = QLatin1Char('\0');
- } else {
- // ### parse deprecated octal escape sequence ?
- u = _char;
+ break;
}
- break;
+ // fall through
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9':
+ _errorCode = IllegalEscapeSequence;
+ _errorMessage = QCoreApplication::translate("QmlParser", "Octal escape sequences are not allowed");
+ return T_ERROR;
case '\r':
- if (isLineTerminatorSequence() == 2) {
- _tokenText += QLatin1Char('\r');
- u = QLatin1Char('\n');
- } else {
- u = QLatin1Char('\r');
- }
- scanChar();
- break;
-
case '\n':
case 0x2028u:
case 0x2029u:
- u = _char;
scanChar();
- break;
-
+ continue;
default:
// non escape character
@@ -675,28 +807,28 @@ again:
case '9':
return scanNumber(ch);
- default:
- if (ch.isLetter() || ch == QLatin1Char('$') || ch == QLatin1Char('_') || (ch == QLatin1Char('\\') && _char == QLatin1Char('u'))) {
- bool identifierWithEscapeChars = false;
- if (ch == QLatin1Char('\\')) {
- identifierWithEscapeChars = true;
+ default: {
+ QChar c = ch;
+ bool identifierWithEscapeChars = false;
+ if (c == QLatin1Char('\\') && _char == QLatin1Char('u')) {
+ identifierWithEscapeChars = true;
+ bool ok = false;
+ c = decodeUnicodeEscapeCharacter(&ok);
+ if (! ok) {
+ _errorCode = IllegalUnicodeEscapeSequence;
+ _errorMessage = QCoreApplication::translate("QmlParser", "Illegal unicode escape sequence");
+ return T_ERROR;
+ }
+ }
+ if (isIdentifierStart(c)) {
+ if (identifierWithEscapeChars) {
_tokenText.resize(0);
- bool ok = false;
- _tokenText += decodeUnicodeEscapeCharacter(&ok);
+ _tokenText += c;
_validTokenText = true;
- if (! ok) {
- _errorCode = IllegalUnicodeEscapeSequence;
- _errorMessage = QCoreApplication::translate("QmlParser", "Illegal unicode escape sequence");
- return T_ERROR;
- }
}
while (true) {
- if (_char.isLetterOrNumber() || _char == QLatin1Char('$') || _char == QLatin1Char('_')) {
- if (identifierWithEscapeChars)
- _tokenText += _char;
-
- scanChar();
- } else if (_char == QLatin1Char('\\') && _codePtr[0] == QLatin1Char('u')) {
+ c = _char;
+ if (_char == QLatin1Char('\\') && _codePtr[0] == QLatin1Char('u')) {
if (! identifierWithEscapeChars) {
identifierWithEscapeChars = true;
_tokenText.resize(0);
@@ -706,31 +838,41 @@ again:
scanChar(); // skip '\\'
bool ok = false;
- _tokenText += decodeUnicodeEscapeCharacter(&ok);
+ c = decodeUnicodeEscapeCharacter(&ok);
if (! ok) {
_errorCode = IllegalUnicodeEscapeSequence;
_errorMessage = QCoreApplication::translate("QmlParser", "Illegal unicode escape sequence");
return T_ERROR;
}
- } else {
- _tokenLength = _codePtr - _tokenStartPtr - 1;
+ if (isIdentifierPart(c))
+ _tokenText += c;
+ continue;
+ } else if (isIdentifierPart(c)) {
+ if (identifierWithEscapeChars)
+ _tokenText += c;
- int kind = T_IDENTIFIER;
+ scanChar();
+ continue;
+ }
- if (! identifierWithEscapeChars)
- kind = classify(_tokenStartPtr, _tokenLength, _qmlMode);
+ _tokenLength = _codePtr - _tokenStartPtr - 1;
- if (_engine) {
- if (kind == T_IDENTIFIER && identifierWithEscapeChars)
- _tokenSpell = _engine->newStringRef(_tokenText);
- else
- _tokenSpell = _engine->midRef(_tokenStartPtr - _code.unicode(), _tokenLength);
- }
+ int kind = T_IDENTIFIER;
+
+ if (! identifierWithEscapeChars)
+ kind = classify(_tokenStartPtr, _tokenLength, _qmlMode);
- return kind;
+ if (_engine) {
+ if (kind == T_IDENTIFIER && identifierWithEscapeChars)
+ _tokenSpell = _engine->newStringRef(_tokenText);
+ else
+ _tokenSpell = _engine->midRef(_tokenStartPtr - _code.unicode(), _tokenLength);
}
+
+ return kind;
}
}
+ }
break;
}
@@ -741,12 +883,14 @@ again:
int Lexer::scanNumber(QChar ch)
{
if (ch != QLatin1Char('0')) {
- double integer = ch.unicode() - '0';
+ QByteArray buf;
+ buf.reserve(64);
+ buf += ch.toLatin1();
QChar n = _char;
const QChar *code = _codePtr;
while (n.isDigit()) {
- integer = integer * 10 + (n.unicode() - '0');
+ buf += n.toLatin1();
n = *code++;
}
@@ -755,17 +899,23 @@ int Lexer::scanNumber(QChar ch)
_codePtr = code - 1;
scanChar();
}
- _tokenValue = integer;
+ buf.append('\0');
+ _tokenValue = strtod(buf.constData(), 0);
return T_NUMERIC_LITERAL;
}
+ } else if (_char.isDigit() && !qmlMode()) {
+ _errorCode = IllegalCharacter;
+ _errorMessage = QCoreApplication::translate("QmlParser", "Decimal numbers can't start with '0'");
+ return T_ERROR;
}
QVarLengthArray<char,32> chars;
chars.append(ch.unicode());
if (ch == QLatin1Char('0') && (_char == QLatin1Char('x') || _char == QLatin1Char('X'))) {
- // parse hex integer literal
+ ch = _char; // remember the x or X to use it in the error message below.
+ // parse hex integer literal
chars.append(_char.unicode());
scanChar(); // consume `x'
@@ -774,6 +924,12 @@ int Lexer::scanNumber(QChar ch)
scanChar();
}
+ if (chars.size() < 3) {
+ _errorCode = IllegalHexNumber;
+ _errorMessage = QCoreApplication::translate("QmlParser", "At least one hexadecimal digit is required after '0%1'").arg(ch);
+ return T_ERROR;
+ }
+
_tokenValue = integerFromString(chars.constData(), chars.size(), 16);
return T_NUMERIC_LITERAL;
}
@@ -871,7 +1027,7 @@ bool Lexer::scanRegExp(RegExpBodyPrefix prefix)
_patternFlags = 0;
while (isIdentLetter(_char)) {
int flag = regExpFlagFromChar(_char);
- if (flag == 0) {
+ if (flag == 0 || _patternFlags & flag) {
_errorMessage = QCoreApplication::translate("QmlParser", "Invalid regular expression flag '%0'")
.arg(QChar(_char));
return false;
@@ -888,7 +1044,7 @@ bool Lexer::scanRegExp(RegExpBodyPrefix prefix)
_tokenText += _char;
scanChar();
- if (_char.isNull() || isLineTerminator()) {
+ if (_codePtr > _endPtr || isLineTerminator()) {
_errorMessage = QCoreApplication::translate("QmlParser", "Unterminated regular expression backslash sequence");
return false;
}
@@ -902,15 +1058,15 @@ bool Lexer::scanRegExp(RegExpBodyPrefix prefix)
_tokenText += _char;
scanChar();
- while (! _char.isNull() && ! isLineTerminator()) {
+ while (_codePtr <= _endPtr && ! isLineTerminator()) {
if (_char == QLatin1Char(']'))
break;
- if (_char == QLatin1Char('\\')) {
+ else if (_char == QLatin1Char('\\')) {
// regular expression backslash sequence
_tokenText += _char;
scanChar();
- if (_char.isNull() || isLineTerminator()) {
+ if (_codePtr > _endPtr || isLineTerminator()) {
_errorMessage = QCoreApplication::translate("QmlParser", "Unterminated regular expression backslash sequence");
return false;
}
@@ -933,7 +1089,7 @@ bool Lexer::scanRegExp(RegExpBodyPrefix prefix)
break;
default:
- if (_char.isNull() || isLineTerminator()) {
+ if (_codePtr > _endPtr || isLineTerminator()) {
_errorMessage = QCoreApplication::translate("QmlParser", "Unterminated regular expression literal");
return false;
} else {
@@ -1160,5 +1316,3 @@ bool Lexer::scanDirectives(Directives *directives)
return true;
}
-
-#include "qmljskeywords_p.h"
diff --git a/src/libs/qmljs/parser/qmljslexer_p.h b/src/libs/qmljs/parser/qmljslexer_p.h
index ae90b9ff32..02e16d2c68 100644
--- a/src/libs/qmljs/parser/qmljslexer_p.h
+++ b/src/libs/qmljs/parser/qmljslexer_p.h
@@ -43,7 +43,8 @@
#include "qmljsglobal_p.h"
#include "qmljsgrammar_p.h"
-#include <QtCore/QString>
+
+#include <QtCore/qstring.h>
QT_QML_BEGIN_NAMESPACE
@@ -109,12 +110,14 @@ public:
enum Error {
NoError,
IllegalCharacter,
+ IllegalHexNumber,
UnclosedStringLiteral,
IllegalEscapeSequence,
IllegalUnicodeEscapeSequence,
UnclosedComment,
IllegalExponentIndicator,
- IllegalIdentifier
+ IllegalIdentifier,
+ IllegalHexadecimalEscapeSequence
};
enum RegExpBodyPrefix {
@@ -189,6 +192,7 @@ private:
void syncProhibitAutomaticSemicolon();
QChar decodeUnicodeEscapeCharacter(bool *ok);
+ QChar decodeHexEscapeCharacter(bool *ok);
private:
Engine *_engine;
@@ -199,6 +203,7 @@ private:
QStringRef _tokenSpell;
const QChar *_codePtr;
+ const QChar *_endPtr;
const QChar *_lastLinePtr;
const QChar *_tokenLinePtr;
const QChar *_tokenStartPtr;
diff --git a/src/libs/qmljs/parser/qmljsparser.cpp b/src/libs/qmljs/parser/qmljsparser.cpp
index ecf1895480..00080ef53b 100644
--- a/src/libs/qmljs/parser/qmljsparser.cpp
+++ b/src/libs/qmljs/parser/qmljsparser.cpp
@@ -27,20 +27,21 @@
**
****************************************************************************/
-#include <QtCore/QtDebug>
-#include <QtCore/QCoreApplication>
-
-#include <string.h>
-
#include "qmljsengine_p.h"
#include "qmljslexer_p.h"
#include "qmljsast_p.h"
#include "qmljsmemorypool_p.h"
+#include <QtCore/qdebug.h>
+#include <QtCore/qcoreapplication.h>
+
+#include <string.h>
+
#include "qmljsparser_p.h"
-#include <QVarLengthArray>
+
+#include <QtCore/qvarlengtharray.h>
//
// W A R N I N G
@@ -134,6 +135,19 @@ AST::UiQualifiedId *Parser::reparseAsQualifiedId(AST::ExpressionNode *expr)
return 0;
}
+AST::UiQualifiedPragmaId *Parser::reparseAsQualifiedPragmaId(AST::ExpressionNode *expr)
+{
+ if (AST::IdentifierExpression *idExpr = AST::cast<AST::IdentifierExpression *>(expr)) {
+ AST::UiQualifiedPragmaId *q = new (pool) AST::UiQualifiedPragmaId(idExpr->name);
+ q->identifierToken = idExpr->identifierToken;
+
+ return q->finish();
+ }
+
+ return 0;
+}
+
+
bool Parser::parse(int startToken)
{
Lexer *lexer = driver->lexer();
@@ -233,32 +247,44 @@ case 5: {
} break;
case 6: {
- sym(1).UiProgram = new (pool) AST::UiProgram(sym(1).UiImportList,
+ sym(1).UiProgram = new (pool) AST::UiProgram(sym(1).UiHeaderItemList,
sym(2).UiObjectMemberList->finish());
} break;
case 8: {
- sym(1).Node = sym(1).UiImportList->finish();
+ sym(1).Node = sym(1).UiHeaderItemList->finish();
} break;
case 9: {
- sym(1).Node = new (pool) AST::UiImportList(sym(1).UiImport);
+ sym(1).Node = new (pool) AST::UiHeaderItemList(sym(1).UiPragma);
} break;
case 10: {
- sym(1).Node = new (pool) AST::UiImportList(sym(1).UiImportList, sym(2).UiImport);
+ sym(1).Node = new (pool) AST::UiHeaderItemList(sym(1).UiImport);
+} break;
+
+case 11: {
+ sym(1).Node = new (pool) AST::UiHeaderItemList(sym(1).UiHeaderItemList, sym(2).UiPragma);
+} break;
+
+case 12: {
+ sym(1).Node = new (pool) AST::UiHeaderItemList(sym(1).UiHeaderItemList, sym(2).UiImport);
+} break;
+
+case 16: {
+ sym(1).UiPragma->semicolonToken = loc(2);
} break;
-case 13: {
+case 18: {
sym(1).UiImport->semicolonToken = loc(2);
} break;
-case 15: {
+case 20: {
sym(1).UiImport->versionToken = loc(2);
sym(1).UiImport->semicolonToken = loc(3);
} break;
-case 17: {
+case 22: {
sym(1).UiImport->versionToken = loc(2);
sym(1).UiImport->asToken = loc(3);
sym(1).UiImport->importIdToken = loc(4);
@@ -266,14 +292,33 @@ case 17: {
sym(1).UiImport->semicolonToken = loc(5);
} break;
-case 19: {
+case 24: {
sym(1).UiImport->asToken = loc(2);
sym(1).UiImport->importIdToken = loc(3);
sym(1).UiImport->importId = stringRef(3);
sym(1).UiImport->semicolonToken = loc(4);
} break;
-case 20: {
+case 25: {
+ AST::UiPragma *node = 0;
+
+ if (AST::UiQualifiedPragmaId *qualifiedId = reparseAsQualifiedPragmaId(sym(2).Expression)) {
+ node = new (pool) AST::UiPragma(qualifiedId);
+ }
+
+ sym(1).Node = node;
+
+ if (node) {
+ node->pragmaToken = loc(1);
+ } else {
+ diagnostic_messages.append(DiagnosticMessage(Severity::Error, loc(1),
+ QLatin1String("Expected a qualified name id")));
+
+ return false; // ### remove me
+ }
+} break;
+
+case 26: {
AST::UiImport *node = 0;
if (AST::StringLiteral *importIdLiteral = AST::cast<AST::StringLiteral *>(sym(2).Expression)) {
@@ -296,56 +341,56 @@ case 20: {
}
} break;
-case 21: {
+case 27: {
sym(1).Node = 0;
} break;
-case 22: {
+case 28: {
sym(1).Node = new (pool) AST::UiObjectMemberList(sym(1).UiObjectMember);
} break;
-case 23: {
+case 29: {
sym(1).Node = new (pool) AST::UiObjectMemberList(sym(1).UiObjectMember);
} break;
-case 24: {
+case 30: {
AST::UiObjectMemberList *node = new (pool) AST:: UiObjectMemberList(
sym(1).UiObjectMemberList, sym(2).UiObjectMember);
sym(1).Node = node;
} break;
-case 25: {
+case 31: {
sym(1).Node = new (pool) AST::UiArrayMemberList(sym(1).UiObjectMember);
} break;
-case 26: {
+case 32: {
AST::UiArrayMemberList *node = new (pool) AST::UiArrayMemberList(
sym(1).UiArrayMemberList, sym(3).UiObjectMember);
node->commaToken = loc(2);
sym(1).Node = node;
} break;
-case 27: {
+case 33: {
AST::UiObjectInitializer *node = new (pool) AST::UiObjectInitializer((AST::UiObjectMemberList*)0);
node->lbraceToken = loc(1);
node->rbraceToken = loc(2);
sym(1).Node = node;
} break;
-case 28: {
+case 34: {
AST::UiObjectInitializer *node = new (pool) AST::UiObjectInitializer(sym(2).UiObjectMemberList->finish());
node->lbraceToken = loc(1);
node->rbraceToken = loc(3);
sym(1).Node = node;
} break;
-case 29: {
+case 35: {
AST::UiObjectDefinition *node = new (pool) AST::UiObjectDefinition(sym(1).UiQualifiedId,
sym(2).UiObjectInitializer);
sym(1).Node = node;
} break;
-case 31: {
+case 37: {
AST::UiArrayBinding *node = new (pool) AST::UiArrayBinding(
sym(1).UiQualifiedId, sym(4).UiArrayMemberList->finish());
node->colonToken = loc(2);
@@ -354,14 +399,14 @@ case 31: {
sym(1).Node = node;
} break;
-case 32: {
+case 38: {
AST::UiObjectBinding *node = new (pool) AST::UiObjectBinding(
sym(1).UiQualifiedId, sym(3).UiQualifiedId, sym(4).UiObjectInitializer);
node->colonToken = loc(2);
sym(1).Node = node;
} break;
-case 33: {
+case 39: {
AST::UiObjectBinding *node = new (pool) AST::UiObjectBinding(
sym(3).UiQualifiedId, sym(1).UiQualifiedId, sym(4).UiObjectInitializer);
node->colonToken = loc(2);
@@ -369,7 +414,7 @@ case 33: {
sym(1).Node = node;
} break;
-case 41:
+case 47:
{
AST::UiScriptBinding *node = new (pool) AST::UiScriptBinding(
sym(1).UiQualifiedId, sym(3).Statement);
@@ -377,22 +422,22 @@ case 41:
sym(1).Node = node;
} break;
-case 45: {
+case 51: {
sym(1).Node = 0;
} break;
-case 46: {
+case 52: {
sym(1).Node = sym(1).UiParameterList->finish ();
} break;
-case 47: {
+case 53: {
AST::UiParameterList *node = new (pool) AST::UiParameterList(stringRef(1), stringRef(2));
node->propertyTypeToken = loc(1);
node->identifierToken = loc(2);
sym(1).Node = node;
} break;
-case 48: {
+case 54: {
AST::UiParameterList *node = new (pool) AST::UiParameterList(sym(1).UiParameterList, stringRef(3), stringRef(4));
node->propertyTypeToken = loc(3);
node->commaToken = loc(2);
@@ -400,7 +445,7 @@ case 48: {
sym(1).Node = node;
} break;
-case 50: {
+case 56: {
AST::UiPublicMember *node = new (pool) AST::UiPublicMember(QStringRef(), stringRef(2));
node->type = AST::UiPublicMember::Signal;
node->propertyToken = loc(1);
@@ -411,7 +456,7 @@ case 50: {
sym(1).Node = node;
} break;
-case 52: {
+case 58: {
AST::UiPublicMember *node = new (pool) AST::UiPublicMember(QStringRef(), stringRef(2));
node->type = AST::UiPublicMember::Signal;
node->propertyToken = loc(1);
@@ -421,7 +466,7 @@ case 52: {
sym(1).Node = node;
} break;
-case 54: {
+case 60: {
AST::UiPublicMember *node = new (pool) AST::UiPublicMember(stringRef(4), stringRef(6));
node->typeModifier = stringRef(2);
node->propertyToken = loc(1);
@@ -432,7 +477,7 @@ case 54: {
sym(1).Node = node;
} break;
-case 56: {
+case 62: {
AST::UiPublicMember *node = new (pool) AST::UiPublicMember(stringRef(2), stringRef(3));
node->propertyToken = loc(1);
node->typeToken = loc(2);
@@ -441,7 +486,7 @@ case 56: {
sym(1).Node = node;
} break;
-case 58: {
+case 64: {
AST::UiPublicMember *node = new (pool) AST::UiPublicMember(stringRef(3), stringRef(4));
node->isDefaultMember = true;
node->defaultToken = loc(1);
@@ -452,7 +497,7 @@ case 58: {
sym(1).Node = node;
} break;
-case 59: {
+case 65: {
AST::UiPublicMember *node = new (pool) AST::UiPublicMember(stringRef(2), stringRef(3),
sym(5).Statement);
node->propertyToken = loc(1);
@@ -462,7 +507,7 @@ case 59: {
sym(1).Node = node;
} break;
-case 60: {
+case 66: {
AST::UiPublicMember *node = new (pool) AST::UiPublicMember(stringRef(3), stringRef(4),
sym(6).Statement);
node->isReadonlyMember = true;
@@ -474,7 +519,7 @@ case 60: {
sym(1).Node = node;
} break;
-case 61: {
+case 67: {
AST::UiPublicMember *node = new (pool) AST::UiPublicMember(stringRef(3), stringRef(4),
sym(6).Statement);
node->isDefaultMember = true;
@@ -486,7 +531,7 @@ case 61: {
sym(1).Node = node;
} break;
-case 62: {
+case 68: {
AST::UiPublicMember *node = new (pool) AST::UiPublicMember(stringRef(4), stringRef(6));
node->typeModifier = stringRef(2);
node->propertyToken = loc(1);
@@ -510,7 +555,7 @@ case 62: {
sym(1).Node = node;
} break;
-case 63: {
+case 69: {
AST::UiPublicMember *node = new (pool) AST::UiPublicMember(stringRef(2), stringRef(3));
node->propertyToken = loc(1);
node->typeToken = loc(2);
@@ -530,57 +575,57 @@ case 63: {
sym(1).Node = node;
} break;
-case 64: {
+case 70: {
sym(1).Node = new (pool) AST::UiSourceElement(sym(1).Node);
} break;
-case 65: {
+case 71: {
sym(1).Node = new (pool) AST::UiSourceElement(sym(1).Node);
} break;
-case 71: {
+case 79: {
AST::ThisExpression *node = new (pool) AST::ThisExpression();
node->thisToken = loc(1);
sym(1).Node = node;
} break;
-case 72: {
+case 80: {
AST::IdentifierExpression *node = new (pool) AST::IdentifierExpression(stringRef(1));
node->identifierToken = loc(1);
sym(1).Node = node;
} break;
-case 73: {
+case 81: {
AST::NullExpression *node = new (pool) AST::NullExpression();
node->nullToken = loc(1);
sym(1).Node = node;
} break;
-case 74: {
+case 82: {
AST::TrueLiteral *node = new (pool) AST::TrueLiteral();
node->trueToken = loc(1);
sym(1).Node = node;
} break;
-case 75: {
+case 83: {
AST::FalseLiteral *node = new (pool) AST::FalseLiteral();
node->falseToken = loc(1);
sym(1).Node = node;
} break;
-case 76: {
+case 84: {
AST::NumericLiteral *node = new (pool) AST::NumericLiteral(sym(1).dval);
node->literalToken = loc(1);
sym(1).Node = node;
} break;
-case 77:
-case 78: {
+case 85:
+case 86: {
AST::StringLiteral *node = new (pool) AST::StringLiteral(stringRef(1));
node->literalToken = loc(1);
sym(1).Node = node;
} break;
-case 79: {
+case 87: {
bool rx = lexer->scanRegExp(Lexer::NoPrefix);
if (!rx) {
diagnostic_messages.append(DiagnosticMessage(Severity::Error, location(lexer), lexer->errorMessage()));
@@ -596,7 +641,7 @@ case 79: {
sym(1).Node = node;
} break;
-case 80: {
+case 88: {
bool rx = lexer->scanRegExp(Lexer::EqualPrefix);
if (!rx) {
diagnostic_messages.append(DiagnosticMessage(Severity::Error, location(lexer), lexer->errorMessage()));
@@ -612,28 +657,28 @@ case 80: {
sym(1).Node = node;
} break;
-case 81: {
+case 89: {
AST::ArrayLiteral *node = new (pool) AST::ArrayLiteral((AST::Elision *) 0);
node->lbracketToken = loc(1);
node->rbracketToken = loc(2);
sym(1).Node = node;
} break;
-case 82: {
+case 90: {
AST::ArrayLiteral *node = new (pool) AST::ArrayLiteral(sym(2).Elision->finish());
node->lbracketToken = loc(1);
node->rbracketToken = loc(3);
sym(1).Node = node;
} break;
-case 83: {
+case 91: {
AST::ArrayLiteral *node = new (pool) AST::ArrayLiteral(sym(2).ElementList->finish ());
node->lbracketToken = loc(1);
node->rbracketToken = loc(3);
sym(1).Node = node;
} break;
-case 84: {
+case 92: {
AST::ArrayLiteral *node = new (pool) AST::ArrayLiteral(sym(2).ElementList->finish (),
(AST::Elision *) 0);
node->lbracketToken = loc(1);
@@ -642,7 +687,7 @@ case 84: {
sym(1).Node = node;
} break;
-case 85: {
+case 93: {
AST::ArrayLiteral *node = new (pool) AST::ArrayLiteral(sym(2).ElementList->finish (),
sym(4).Elision->finish());
node->lbracketToken = loc(1);
@@ -651,11 +696,11 @@ case 85: {
sym(1).Node = node;
} break;
-case 86: {
+case 94: {
AST::ObjectLiteral *node = 0;
if (sym(2).Node)
node = new (pool) AST::ObjectLiteral(
- sym(2).PropertyNameAndValueList->finish ());
+ sym(2).PropertyAssignmentList->finish ());
else
node = new (pool) AST::ObjectLiteral();
node->lbraceToken = loc(1);
@@ -663,22 +708,22 @@ case 86: {
sym(1).Node = node;
} break;
-case 87: {
+case 95: {
AST::ObjectLiteral *node = new (pool) AST::ObjectLiteral(
- sym(2).PropertyNameAndValueList->finish ());
+ sym(2).PropertyAssignmentList->finish ());
node->lbraceToken = loc(1);
node->rbraceToken = loc(4);
sym(1).Node = node;
} break;
-case 88: {
+case 96: {
AST::NestedExpression *node = new (pool) AST::NestedExpression(sym(2).Expression);
node->lparenToken = loc(1);
node->rparenToken = loc(3);
sym(1).Node = node;
} break;
-case 89: {
+case 97: {
if (AST::ArrayMemberExpression *mem = AST::cast<AST::ArrayMemberExpression *>(sym(1).Expression)) {
diagnostic_messages.append(DiagnosticMessage(Severity::Warning, mem->lbracketToken,
QLatin1String("Ignored annotation")));
@@ -698,100 +743,119 @@ case 89: {
}
} break;
-case 90: {
+case 98: {
sym(1).Node = new (pool) AST::ElementList((AST::Elision *) 0, sym(1).Expression);
} break;
-case 91: {
+case 99: {
sym(1).Node = new (pool) AST::ElementList(sym(1).Elision->finish(), sym(2).Expression);
} break;
-case 92: {
+case 100: {
AST::ElementList *node = new (pool) AST::ElementList(sym(1).ElementList,
(AST::Elision *) 0, sym(3).Expression);
node->commaToken = loc(2);
sym(1).Node = node;
} break;
-case 93: {
+case 101: {
AST::ElementList *node = new (pool) AST::ElementList(sym(1).ElementList, sym(3).Elision->finish(),
sym(4).Expression);
node->commaToken = loc(2);
sym(1).Node = node;
} break;
-case 94: {
+case 102: {
AST::Elision *node = new (pool) AST::Elision();
node->commaToken = loc(1);
sym(1).Node = node;
} break;
-case 95: {
+case 103: {
AST::Elision *node = new (pool) AST::Elision(sym(1).Elision);
node->commaToken = loc(2);
sym(1).Node = node;
} break;
-case 96: {
- AST::PropertyNameAndValueList *node = new (pool) AST::PropertyNameAndValueList(
+case 104: {
+ AST::PropertyNameAndValue *node = new (pool) AST::PropertyNameAndValue(
sym(1).PropertyName, sym(3).Expression);
node->colonToken = loc(2);
sym(1).Node = node;
} break;
-case 97: {
- AST::PropertyNameAndValueList *node = new (pool) AST::PropertyNameAndValueList(
- sym(1).PropertyNameAndValueList, sym(3).PropertyName, sym(5).Expression);
- node->commaToken = loc(2);
- node->colonToken = loc(4);
+case 105: {
+ AST::PropertyGetterSetter *node = new (pool) AST::PropertyGetterSetter(
+ sym(2).PropertyName, sym(6).FunctionBody);
+ node->getSetToken = loc(1);
+ node->lparenToken = loc(3);
+ node->rparenToken = loc(4);
+ node->lbraceToken = loc(5);
+ node->rbraceToken = loc(7);
sym(1).Node = node;
} break;
-case 98: {
- AST::IdentifierPropertyName *node = new (pool) AST::IdentifierPropertyName(stringRef(1));
- node->propertyNameToken = loc(1);
+case 106: {
+ AST::PropertyGetterSetter *node = new (pool) AST::PropertyGetterSetter(
+ sym(2).PropertyName, sym(4).FormalParameterList, sym(7).FunctionBody);
+ node->getSetToken = loc(1);
+ node->lparenToken = loc(3);
+ node->rparenToken = loc(5);
+ node->lbraceToken = loc(6);
+ node->rbraceToken = loc(8);
sym(1).Node = node;
} break;
-case 99:
-case 100: {
+
+case 107: {
+ sym(1).Node = new (pool) AST::PropertyAssignmentList(sym(1).PropertyAssignment);
+} break;
+
+case 108: {
+ AST::PropertyAssignmentList *node = new (pool) AST::PropertyAssignmentList(
+ sym(1).PropertyAssignmentList, sym(3).PropertyAssignment);
+ node->commaToken = loc(2);
+ sym(1).Node = node;
+} break;
+
+case 109: {
AST::IdentifierPropertyName *node = new (pool) AST::IdentifierPropertyName(stringRef(1));
node->propertyNameToken = loc(1);
sym(1).Node = node;
} break;
-case 101: {
+case 110: {
AST::StringLiteralPropertyName *node = new (pool) AST::StringLiteralPropertyName(stringRef(1));
node->propertyNameToken = loc(1);
sym(1).Node = node;
} break;
-case 102: {
+case 111: {
AST::NumericLiteralPropertyName *node = new (pool) AST::NumericLiteralPropertyName(sym(1).dval);
node->propertyNameToken = loc(1);
sym(1).Node = node;
} break;
-case 103: {
+case 112: {
AST::IdentifierPropertyName *node = new (pool) AST::IdentifierPropertyName(stringRef(1));
node->propertyNameToken = loc(1);
sym(1).Node = node;
} break;
-case 139: {
+case 148: {
AST::ArrayMemberExpression *node = new (pool) AST::ArrayMemberExpression(sym(1).Expression, sym(3).Expression);
node->lbracketToken = loc(2);
node->rbracketToken = loc(4);
sym(1).Node = node;
} break;
-case 140: {
+case 149: {
AST::FieldMemberExpression *node = new (pool) AST::FieldMemberExpression(sym(1).Expression, stringRef(3));
node->dotToken = loc(2);
node->identifierToken = loc(3);
sym(1).Node = node;
} break;
-case 141: {
+case 150: {
AST::NewMemberExpression *node = new (pool) AST::NewMemberExpression(sym(2).Expression, sym(4).ArgumentList);
node->newToken = loc(1);
node->lparenToken = loc(3);
@@ -799,384 +863,384 @@ case 141: {
sym(1).Node = node;
} break;
-case 143: {
+case 152: {
AST::NewExpression *node = new (pool) AST::NewExpression(sym(2).Expression);
node->newToken = loc(1);
sym(1).Node = node;
} break;
-case 144: {
+case 153: {
AST::CallExpression *node = new (pool) AST::CallExpression(sym(1).Expression, sym(3).ArgumentList);
node->lparenToken = loc(2);
node->rparenToken = loc(4);
sym(1).Node = node;
} break;
-case 145: {
+case 154: {
AST::CallExpression *node = new (pool) AST::CallExpression(sym(1).Expression, sym(3).ArgumentList);
node->lparenToken = loc(2);
node->rparenToken = loc(4);
sym(1).Node = node;
} break;
-case 146: {
+case 155: {
AST::ArrayMemberExpression *node = new (pool) AST::ArrayMemberExpression(sym(1).Expression, sym(3).Expression);
node->lbracketToken = loc(2);
node->rbracketToken = loc(4);
sym(1).Node = node;
} break;
-case 147: {
+case 156: {
AST::FieldMemberExpression *node = new (pool) AST::FieldMemberExpression(sym(1).Expression, stringRef(3));
node->dotToken = loc(2);
node->identifierToken = loc(3);
sym(1).Node = node;
} break;
-case 148: {
+case 157: {
sym(1).Node = 0;
} break;
-case 149: {
+case 158: {
sym(1).Node = sym(1).ArgumentList->finish();
} break;
-case 150: {
+case 159: {
sym(1).Node = new (pool) AST::ArgumentList(sym(1).Expression);
} break;
-case 151: {
+case 160: {
AST::ArgumentList *node = new (pool) AST::ArgumentList(sym(1).ArgumentList, sym(3).Expression);
node->commaToken = loc(2);
sym(1).Node = node;
} break;
-case 155: {
+case 164: {
AST::PostIncrementExpression *node = new (pool) AST::PostIncrementExpression(sym(1).Expression);
node->incrementToken = loc(2);
sym(1).Node = node;
} break;
-case 156: {
+case 165: {
AST::PostDecrementExpression *node = new (pool) AST::PostDecrementExpression(sym(1).Expression);
node->decrementToken = loc(2);
sym(1).Node = node;
} break;
-case 158: {
+case 167: {
AST::DeleteExpression *node = new (pool) AST::DeleteExpression(sym(2).Expression);
node->deleteToken = loc(1);
sym(1).Node = node;
} break;
-case 159: {
+case 168: {
AST::VoidExpression *node = new (pool) AST::VoidExpression(sym(2).Expression);
node->voidToken = loc(1);
sym(1).Node = node;
} break;
-case 160: {
+case 169: {
AST::TypeOfExpression *node = new (pool) AST::TypeOfExpression(sym(2).Expression);
node->typeofToken = loc(1);
sym(1).Node = node;
} break;
-case 161: {
+case 170: {
AST::PreIncrementExpression *node = new (pool) AST::PreIncrementExpression(sym(2).Expression);
node->incrementToken = loc(1);
sym(1).Node = node;
} break;
-case 162: {
+case 171: {
AST::PreDecrementExpression *node = new (pool) AST::PreDecrementExpression(sym(2).Expression);
node->decrementToken = loc(1);
sym(1).Node = node;
} break;
-case 163: {
+case 172: {
AST::UnaryPlusExpression *node = new (pool) AST::UnaryPlusExpression(sym(2).Expression);
node->plusToken = loc(1);
sym(1).Node = node;
} break;
-case 164: {
+case 173: {
AST::UnaryMinusExpression *node = new (pool) AST::UnaryMinusExpression(sym(2).Expression);
node->minusToken = loc(1);
sym(1).Node = node;
} break;
-case 165: {
+case 174: {
AST::TildeExpression *node = new (pool) AST::TildeExpression(sym(2).Expression);
node->tildeToken = loc(1);
sym(1).Node = node;
} break;
-case 166: {
+case 175: {
AST::NotExpression *node = new (pool) AST::NotExpression(sym(2).Expression);
node->notToken = loc(1);
sym(1).Node = node;
} break;
-case 168: {
+case 177: {
AST::BinaryExpression *node = new (pool) AST::BinaryExpression(sym(1).Expression,
QSOperator::Mul, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 169: {
+case 178: {
AST::BinaryExpression *node = new (pool) AST::BinaryExpression(sym(1).Expression,
QSOperator::Div, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 170: {
+case 179: {
AST::BinaryExpression *node = new (pool) AST::BinaryExpression(sym(1).Expression,
QSOperator::Mod, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 172: {
+case 181: {
AST::BinaryExpression *node = new (pool) AST::BinaryExpression(sym(1).Expression,
QSOperator::Add, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 173: {
+case 182: {
AST::BinaryExpression *node = new (pool) AST::BinaryExpression(sym(1).Expression,
QSOperator::Sub, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 175: {
+case 184: {
AST::BinaryExpression *node = new (pool) AST::BinaryExpression(sym(1).Expression,
QSOperator::LShift, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 176: {
+case 185: {
AST::BinaryExpression *node = new (pool) AST::BinaryExpression(sym(1).Expression,
QSOperator::RShift, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 177: {
+case 186: {
AST::BinaryExpression *node = new (pool) AST::BinaryExpression(sym(1).Expression,
QSOperator::URShift, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 179: {
+case 188: {
AST::BinaryExpression *node = new (pool) AST::BinaryExpression(sym(1).Expression,
QSOperator::Lt, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 180: {
+case 189: {
AST::BinaryExpression *node = new (pool) AST::BinaryExpression(sym(1).Expression,
QSOperator::Gt, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 181: {
+case 190: {
AST::BinaryExpression *node = new (pool) AST::BinaryExpression(sym(1).Expression,
QSOperator::Le, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 182: {
+case 191: {
AST::BinaryExpression *node = new (pool) AST::BinaryExpression(sym(1).Expression,
QSOperator::Ge, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 183: {
+case 192: {
AST::BinaryExpression *node = new (pool) AST::BinaryExpression(sym(1).Expression,
QSOperator::InstanceOf, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 184: {
+case 193: {
AST::BinaryExpression *node = new (pool) AST::BinaryExpression(sym(1).Expression,
QSOperator::In, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 186: {
+case 195: {
AST::BinaryExpression *node = new (pool) AST::BinaryExpression(sym(1).Expression,
QSOperator::Lt, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 187: {
+case 196: {
AST::BinaryExpression *node = new (pool) AST::BinaryExpression(sym(1).Expression,
QSOperator::Gt, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 188: {
+case 197: {
AST::BinaryExpression *node = new (pool) AST::BinaryExpression(sym(1).Expression,
QSOperator::Le, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 189: {
+case 198: {
AST::BinaryExpression *node = new (pool) AST::BinaryExpression(sym(1).Expression,
QSOperator::Ge, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 190: {
+case 199: {
AST::BinaryExpression *node = new (pool) AST::BinaryExpression(sym(1).Expression,
QSOperator::InstanceOf, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 192: {
+case 201: {
AST::BinaryExpression *node = new (pool) AST::BinaryExpression(sym(1).Expression,
QSOperator::Equal, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 193: {
+case 202: {
AST::BinaryExpression *node = new (pool) AST::BinaryExpression(sym(1).Expression,
QSOperator::NotEqual, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 194: {
+case 203: {
AST::BinaryExpression *node = new (pool) AST::BinaryExpression(sym(1).Expression,
QSOperator::StrictEqual, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 195: {
+case 204: {
AST::BinaryExpression *node = new (pool) AST::BinaryExpression(sym(1).Expression,
QSOperator::StrictNotEqual, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 197: {
+case 206: {
AST::BinaryExpression *node = new (pool) AST::BinaryExpression(sym(1).Expression,
QSOperator::Equal, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 198: {
+case 207: {
AST::BinaryExpression *node = new (pool) AST::BinaryExpression(sym(1).Expression,
QSOperator::NotEqual, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 199: {
+case 208: {
AST::BinaryExpression *node = new (pool) AST::BinaryExpression(sym(1).Expression,
QSOperator::StrictEqual, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 200: {
+case 209: {
AST::BinaryExpression *node = new (pool) AST::BinaryExpression(sym(1).Expression,
QSOperator::StrictNotEqual, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 202: {
+case 211: {
AST::BinaryExpression *node = new (pool) AST::BinaryExpression(sym(1).Expression,
QSOperator::BitAnd, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 204: {
+case 213: {
AST::BinaryExpression *node = new (pool) AST::BinaryExpression(sym(1).Expression,
QSOperator::BitAnd, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 206: {
+case 215: {
AST::BinaryExpression *node = new (pool) AST::BinaryExpression(sym(1).Expression,
QSOperator::BitXor, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 208: {
+case 217: {
AST::BinaryExpression *node = new (pool) AST::BinaryExpression(sym(1).Expression,
QSOperator::BitXor, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 210: {
+case 219: {
AST::BinaryExpression *node = new (pool) AST::BinaryExpression(sym(1).Expression,
QSOperator::BitOr, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 212: {
+case 221: {
AST::BinaryExpression *node = new (pool) AST::BinaryExpression(sym(1).Expression,
QSOperator::BitOr, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 214: {
+case 223: {
AST::BinaryExpression *node = new (pool) AST::BinaryExpression(sym(1).Expression,
QSOperator::And, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 216: {
+case 225: {
AST::BinaryExpression *node = new (pool) AST::BinaryExpression(sym(1).Expression,
QSOperator::And, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 218: {
+case 227: {
AST::BinaryExpression *node = new (pool) AST::BinaryExpression(sym(1).Expression,
QSOperator::Or, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 220: {
+case 229: {
AST::BinaryExpression *node = new (pool) AST::BinaryExpression(sym(1).Expression,
QSOperator::Or, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 222: {
+case 231: {
AST::ConditionalExpression *node = new (pool) AST::ConditionalExpression(sym(1).Expression,
sym(3).Expression, sym(5).Expression);
node->questionToken = loc(2);
@@ -1184,7 +1248,7 @@ case 222: {
sym(1).Node = node;
} break;
-case 224: {
+case 233: {
AST::ConditionalExpression *node = new (pool) AST::ConditionalExpression(sym(1).Expression,
sym(3).Expression, sym(5).Expression);
node->questionToken = loc(2);
@@ -1192,112 +1256,112 @@ case 224: {
sym(1).Node = node;
} break;
-case 226: {
+case 235: {
AST::BinaryExpression *node = new (pool) AST::BinaryExpression(sym(1).Expression,
sym(2).ival, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 228: {
+case 237: {
AST::BinaryExpression *node = new (pool) AST::BinaryExpression(sym(1).Expression,
sym(2).ival, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 229: {
+case 238: {
sym(1).ival = QSOperator::Assign;
} break;
-case 230: {
+case 239: {
sym(1).ival = QSOperator::InplaceMul;
} break;
-case 231: {
+case 240: {
sym(1).ival = QSOperator::InplaceDiv;
} break;
-case 232: {
+case 241: {
sym(1).ival = QSOperator::InplaceMod;
} break;
-case 233: {
+case 242: {
sym(1).ival = QSOperator::InplaceAdd;
} break;
-case 234: {
+case 243: {
sym(1).ival = QSOperator::InplaceSub;
} break;
-case 235: {
+case 244: {
sym(1).ival = QSOperator::InplaceLeftShift;
} break;
-case 236: {
+case 245: {
sym(1).ival = QSOperator::InplaceRightShift;
} break;
-case 237: {
+case 246: {
sym(1).ival = QSOperator::InplaceURightShift;
} break;
-case 238: {
+case 247: {
sym(1).ival = QSOperator::InplaceAnd;
} break;
-case 239: {
+case 248: {
sym(1).ival = QSOperator::InplaceXor;
} break;
-case 240: {
+case 249: {
sym(1).ival = QSOperator::InplaceOr;
} break;
-case 242: {
+case 251: {
AST::Expression *node = new (pool) AST::Expression(sym(1).Expression, sym(3).Expression);
node->commaToken = loc(2);
sym(1).Node = node;
} break;
-case 243: {
+case 252: {
sym(1).Node = 0;
} break;
-case 246: {
+case 255: {
AST::Expression *node = new (pool) AST::Expression(sym(1).Expression, sym(3).Expression);
node->commaToken = loc(2);
sym(1).Node = node;
} break;
-case 247: {
+case 256: {
sym(1).Node = 0;
} break;
-case 264: {
+case 273: {
AST::Block *node = new (pool) AST::Block(sym(2).StatementList);
node->lbraceToken = loc(1);
node->rbraceToken = loc(3);
sym(1).Node = node;
} break;
-case 265: {
+case 274: {
sym(1).Node = new (pool) AST::StatementList(sym(1).Statement);
} break;
-case 266: {
+case 275: {
sym(1).Node = new (pool) AST::StatementList(sym(1).StatementList, sym(2).Statement);
} break;
-case 267: {
+case 276: {
sym(1).Node = 0;
} break;
-case 268: {
+case 277: {
sym(1).Node = sym(1).StatementList->finish ();
} break;
-case 270: {
+case 279: {
AST::VariableStatement *node = new (pool) AST::VariableStatement(
sym(2).VariableDeclarationList->finish (/*readOnly=*/sym(1).ival == T_CONST));
node->declarationKindToken = loc(1);
@@ -1305,76 +1369,76 @@ case 270: {
sym(1).Node = node;
} break;
-case 271: {
+case 280: {
sym(1).ival = T_CONST;
} break;
-case 272: {
+case 281: {
sym(1).ival = T_VAR;
} break;
-case 273: {
+case 282: {
sym(1).Node = new (pool) AST::VariableDeclarationList(sym(1).VariableDeclaration);
} break;
-case 274: {
+case 283: {
AST::VariableDeclarationList *node = new (pool) AST::VariableDeclarationList(
sym(1).VariableDeclarationList, sym(3).VariableDeclaration);
node->commaToken = loc(2);
sym(1).Node = node;
} break;
-case 275: {
+case 284: {
sym(1).Node = new (pool) AST::VariableDeclarationList(sym(1).VariableDeclaration);
} break;
-case 276: {
+case 285: {
sym(1).Node = new (pool) AST::VariableDeclarationList(sym(1).VariableDeclarationList, sym(3).VariableDeclaration);
} break;
-case 277: {
+case 286: {
AST::VariableDeclaration *node = new (pool) AST::VariableDeclaration(stringRef(1), sym(2).Expression);
node->identifierToken = loc(1);
sym(1).Node = node;
} break;
-case 278: {
+case 287: {
AST::VariableDeclaration *node = new (pool) AST::VariableDeclaration(stringRef(1), sym(2).Expression);
node->identifierToken = loc(1);
sym(1).Node = node;
} break;
-case 279: {
+case 288: {
// ### TODO: AST for initializer
sym(1) = sym(2);
} break;
-case 280: {
+case 289: {
sym(1).Node = 0;
} break;
-case 282: {
+case 291: {
// ### TODO: AST for initializer
sym(1) = sym(2);
} break;
-case 283: {
+case 292: {
sym(1).Node = 0;
} break;
-case 285: {
+case 294: {
AST::EmptyStatement *node = new (pool) AST::EmptyStatement();
node->semicolonToken = loc(1);
sym(1).Node = node;
} break;
-case 287: {
+case 296: {
AST::ExpressionStatement *node = new (pool) AST::ExpressionStatement(sym(1).Expression);
node->semicolonToken = loc(2);
sym(1).Node = node;
} break;
-case 288: {
+case 297: {
AST::IfStatement *node = new (pool) AST::IfStatement(sym(3).Expression, sym(5).Statement, sym(7).Statement);
node->ifToken = loc(1);
node->lparenToken = loc(2);
@@ -1383,7 +1447,7 @@ case 288: {
sym(1).Node = node;
} break;
-case 289: {
+case 298: {
AST::IfStatement *node = new (pool) AST::IfStatement(sym(3).Expression, sym(5).Statement);
node->ifToken = loc(1);
node->lparenToken = loc(2);
@@ -1391,7 +1455,7 @@ case 289: {
sym(1).Node = node;
} break;
-case 292: {
+case 301: {
AST::DoWhileStatement *node = new (pool) AST::DoWhileStatement(sym(2).Statement, sym(5).Expression);
node->doToken = loc(1);
node->whileToken = loc(3);
@@ -1401,7 +1465,7 @@ case 292: {
sym(1).Node = node;
} break;
-case 293: {
+case 302: {
AST::WhileStatement *node = new (pool) AST::WhileStatement(sym(3).Expression, sym(5).Statement);
node->whileToken = loc(1);
node->lparenToken = loc(2);
@@ -1409,7 +1473,7 @@ case 293: {
sym(1).Node = node;
} break;
-case 294: {
+case 303: {
AST::ForStatement *node = new (pool) AST::ForStatement(sym(3).Expression,
sym(5).Expression, sym(7).Expression, sym(9).Statement);
node->forToken = loc(1);
@@ -1420,7 +1484,7 @@ case 294: {
sym(1).Node = node;
} break;
-case 295: {
+case 304: {
AST::LocalForStatement *node = new (pool) AST::LocalForStatement(
sym(4).VariableDeclarationList->finish (/*readOnly=*/false), sym(6).Expression,
sym(8).Expression, sym(10).Statement);
@@ -1433,7 +1497,7 @@ case 295: {
sym(1).Node = node;
} break;
-case 296: {
+case 305: {
AST:: ForEachStatement *node = new (pool) AST::ForEachStatement(sym(3).Expression,
sym(5).Expression, sym(7).Statement);
node->forToken = loc(1);
@@ -1443,7 +1507,7 @@ case 296: {
sym(1).Node = node;
} break;
-case 297: {
+case 306: {
AST::LocalForEachStatement *node = new (pool) AST::LocalForEachStatement(
sym(4).VariableDeclaration, sym(6).Expression, sym(8).Statement);
node->forToken = loc(1);
@@ -1454,14 +1518,14 @@ case 297: {
sym(1).Node = node;
} break;
-case 299: {
+case 308: {
AST::ContinueStatement *node = new (pool) AST::ContinueStatement();
node->continueToken = loc(1);
node->semicolonToken = loc(2);
sym(1).Node = node;
} break;
-case 301: {
+case 310: {
AST::ContinueStatement *node = new (pool) AST::ContinueStatement(stringRef(2));
node->continueToken = loc(1);
node->identifierToken = loc(2);
@@ -1469,14 +1533,14 @@ case 301: {
sym(1).Node = node;
} break;
-case 303: {
+case 312: {
AST::BreakStatement *node = new (pool) AST::BreakStatement(QStringRef());
node->breakToken = loc(1);
node->semicolonToken = loc(2);
sym(1).Node = node;
} break;
-case 305: {
+case 314: {
AST::BreakStatement *node = new (pool) AST::BreakStatement(stringRef(2));
node->breakToken = loc(1);
node->identifierToken = loc(2);
@@ -1484,14 +1548,14 @@ case 305: {
sym(1).Node = node;
} break;
-case 307: {
+case 316: {
AST::ReturnStatement *node = new (pool) AST::ReturnStatement(sym(2).Expression);
node->returnToken = loc(1);
node->semicolonToken = loc(3);
sym(1).Node = node;
} break;
-case 308: {
+case 317: {
AST::WithStatement *node = new (pool) AST::WithStatement(sym(3).Expression, sym(5).Statement);
node->withToken = loc(1);
node->lparenToken = loc(2);
@@ -1499,7 +1563,7 @@ case 308: {
sym(1).Node = node;
} break;
-case 309: {
+case 318: {
AST::SwitchStatement *node = new (pool) AST::SwitchStatement(sym(3).Expression, sym(5).CaseBlock);
node->switchToken = loc(1);
node->lparenToken = loc(2);
@@ -1507,90 +1571,83 @@ case 309: {
sym(1).Node = node;
} break;
-case 310: {
+case 319: {
AST::CaseBlock *node = new (pool) AST::CaseBlock(sym(2).CaseClauses);
node->lbraceToken = loc(1);
node->rbraceToken = loc(3);
sym(1).Node = node;
} break;
-case 311: {
+case 320: {
AST::CaseBlock *node = new (pool) AST::CaseBlock(sym(2).CaseClauses, sym(3).DefaultClause, sym(4).CaseClauses);
node->lbraceToken = loc(1);
node->rbraceToken = loc(5);
sym(1).Node = node;
} break;
-case 312: {
+case 321: {
sym(1).Node = new (pool) AST::CaseClauses(sym(1).CaseClause);
} break;
-case 313: {
+case 322: {
sym(1).Node = new (pool) AST::CaseClauses(sym(1).CaseClauses, sym(2).CaseClause);
} break;
-case 314: {
+case 323: {
sym(1).Node = 0;
} break;
-case 315: {
+case 324: {
sym(1).Node = sym(1).CaseClauses->finish ();
} break;
-case 316: {
+case 325: {
AST::CaseClause *node = new (pool) AST::CaseClause(sym(2).Expression, sym(4).StatementList);
node->caseToken = loc(1);
node->colonToken = loc(3);
sym(1).Node = node;
} break;
-case 317: {
+case 326: {
AST::DefaultClause *node = new (pool) AST::DefaultClause(sym(3).StatementList);
node->defaultToken = loc(1);
node->colonToken = loc(2);
sym(1).Node = node;
} break;
-case 318:
-case 319: {
- AST::LabelledStatement *node = new (pool) AST::LabelledStatement(stringRef(1), sym(3).Statement);
- node->identifierToken = loc(1);
- node->colonToken = loc(2);
- sym(1).Node = node;
-} break;
-case 320: {
+case 327: {
AST::LabelledStatement *node = new (pool) AST::LabelledStatement(stringRef(1), sym(3).Statement);
node->identifierToken = loc(1);
node->colonToken = loc(2);
sym(1).Node = node;
} break;
-case 322: {
+case 329: {
AST::ThrowStatement *node = new (pool) AST::ThrowStatement(sym(2).Expression);
node->throwToken = loc(1);
node->semicolonToken = loc(3);
sym(1).Node = node;
} break;
-case 323: {
+case 330: {
AST::TryStatement *node = new (pool) AST::TryStatement(sym(2).Statement, sym(3).Catch);
node->tryToken = loc(1);
sym(1).Node = node;
} break;
-case 324: {
+case 331: {
AST::TryStatement *node = new (pool) AST::TryStatement(sym(2).Statement, sym(3).Finally);
node->tryToken = loc(1);
sym(1).Node = node;
} break;
-case 325: {
+case 332: {
AST::TryStatement *node = new (pool) AST::TryStatement(sym(2).Statement, sym(3).Catch, sym(4).Finally);
node->tryToken = loc(1);
sym(1).Node = node;
} break;
-case 326: {
+case 333: {
AST::Catch *node = new (pool) AST::Catch(stringRef(3), sym(5).Block);
node->catchToken = loc(1);
node->lparenToken = loc(2);
@@ -1599,20 +1656,20 @@ case 326: {
sym(1).Node = node;
} break;
-case 327: {
+case 334: {
AST::Finally *node = new (pool) AST::Finally(sym(2).Block);
node->finallyToken = loc(1);
sym(1).Node = node;
} break;
-case 329: {
+case 336: {
AST::DebuggerStatement *node = new (pool) AST::DebuggerStatement();
node->debuggerToken = loc(1);
node->semicolonToken = loc(2);
sym(1).Node = node;
} break;
-case 330: {
+case 338: {
AST::FunctionDeclaration *node = new (pool) AST::FunctionDeclaration(stringRef(2), sym(4).FormalParameterList, sym(7).FunctionBody);
node->functionToken = loc(1);
node->identifierToken = loc(2);
@@ -1623,7 +1680,7 @@ case 330: {
sym(1).Node = node;
} break;
-case 331: {
+case 339: {
AST::FunctionExpression *node = new (pool) AST::FunctionExpression(stringRef(2), sym(4).FormalParameterList, sym(7).FunctionBody);
node->functionToken = loc(1);
if (! stringRef(2).isNull())
@@ -1635,60 +1692,66 @@ case 331: {
sym(1).Node = node;
} break;
-case 332: {
+case 340: {
+ AST::FunctionExpression *node = new (pool) AST::FunctionExpression(QStringRef(), sym(3).FormalParameterList, sym(6).FunctionBody);
+ node->functionToken = loc(1);
+ node->lparenToken = loc(2);
+ node->rparenToken = loc(4);
+ node->lbraceToken = loc(5);
+ node->rbraceToken = loc(7);
+ sym(1).Node = node;
+} break;
+
+case 341: {
AST::FormalParameterList *node = new (pool) AST::FormalParameterList(stringRef(1));
node->identifierToken = loc(1);
sym(1).Node = node;
} break;
-case 333: {
+case 342: {
AST::FormalParameterList *node = new (pool) AST::FormalParameterList(sym(1).FormalParameterList, stringRef(3));
node->commaToken = loc(2);
node->identifierToken = loc(3);
sym(1).Node = node;
} break;
-case 334: {
+case 343: {
sym(1).Node = 0;
} break;
-case 335: {
+case 344: {
sym(1).Node = sym(1).FormalParameterList->finish ();
} break;
-case 336: {
+case 345: {
sym(1).Node = 0;
} break;
-case 338: {
+case 347: {
sym(1).Node = new (pool) AST::FunctionBody(sym(1).SourceElements->finish ());
} break;
-case 340: {
+case 349: {
sym(1).Node = new (pool) AST::Program(sym(1).SourceElements->finish ());
} break;
-case 341: {
+case 350: {
sym(1).Node = new (pool) AST::SourceElements(sym(1).SourceElement);
} break;
-case 342: {
+case 351: {
sym(1).Node = new (pool) AST::SourceElements(sym(1).SourceElements, sym(2).SourceElement);
} break;
-case 343: {
+case 352: {
sym(1).Node = new (pool) AST::StatementSourceElement(sym(1).Statement);
} break;
-case 344: {
+case 353: {
sym(1).Node = new (pool) AST::FunctionSourceElement(sym(1).FunctionDeclaration);
} break;
-case 345: {
- stringRef(1) = QStringRef();
-} break;
-
-case 347: {
+case 354: {
sym(1).Node = 0;
} break;
@@ -1715,7 +1778,7 @@ case 347: {
yylloc.length = 0;
//const QString msg = qApp->translate("QmlParser", "Missing `;'");
- //diagnostic_messages.append(DiagnosticMessage(DiagnosticMessage::Warning, yylloc, msg));
+ //diagnostic_messages.append(DiagnosticMessage(Severity::Warning, yylloc, msg));
first_token = &token_buffer[0];
last_token = &token_buffer[1];
diff --git a/src/libs/qmljs/parser/qmljsparser_p.h b/src/libs/qmljs/parser/qmljsparser_p.h
index 9b41ce3412..d5204310b5 100644
--- a/src/libs/qmljs/parser/qmljsparser_p.h
+++ b/src/libs/qmljs/parser/qmljsparser_p.h
@@ -59,8 +59,8 @@
#include "qmljsast_p.h"
#include "qmljsengine_p.h"
-#include <QtCore/QList>
-#include <QtCore/QString>
+#include <QtCore/qlist.h>
+#include <QtCore/qstring.h>
QT_QML_BEGIN_NAMESPACE
@@ -89,7 +89,8 @@ public:
AST::FunctionDeclaration *FunctionDeclaration;
AST::Node *Node;
AST::PropertyName *PropertyName;
- AST::PropertyNameAndValueList *PropertyNameAndValueList;
+ AST::PropertyAssignment *PropertyAssignment;
+ AST::PropertyAssignmentList *PropertyAssignmentList;
AST::SourceElement *SourceElement;
AST::SourceElements *SourceElements;
AST::Statement *Statement;
@@ -99,7 +100,8 @@ public:
AST::VariableDeclarationList *VariableDeclarationList;
AST::UiProgram *UiProgram;
- AST::UiImportList *UiImportList;
+ AST::UiHeaderItemList *UiHeaderItemList;
+ AST::UiPragma *UiPragma;
AST::UiImport *UiImport;
AST::UiParameterList *UiParameterList;
AST::UiPublicMember *UiPublicMember;
@@ -112,6 +114,7 @@ public:
AST::UiObjectMemberList *UiObjectMemberList;
AST::UiArrayMemberList *UiArrayMemberList;
AST::UiQualifiedId *UiQualifiedId;
+ AST::UiQualifiedPragmaId *UiQualifiedPragmaId;
};
public:
@@ -193,6 +196,7 @@ protected:
{ return location_stack [tos + index - 1]; }
AST::UiQualifiedId *reparseAsQualifiedId(AST::ExpressionNode *expr);
+ AST::UiQualifiedPragmaId *reparseAsQualifiedPragmaId(AST::ExpressionNode *expr);
protected:
Engine *driver;
@@ -232,9 +236,9 @@ protected:
-#define J_SCRIPT_REGEXPLITERAL_RULE1 79
+#define J_SCRIPT_REGEXPLITERAL_RULE1 87
-#define J_SCRIPT_REGEXPLITERAL_RULE2 80
+#define J_SCRIPT_REGEXPLITERAL_RULE2 88
QT_QML_END_NAMESPACE
diff --git a/src/libs/qmljs/qmljsdelta.cpp b/src/libs/qmljs/qmljsdelta.cpp
index 6711852427..430da229df 100644
--- a/src/libs/qmljs/qmljsdelta.cpp
+++ b/src/libs/qmljs/qmljsdelta.cpp
@@ -363,11 +363,12 @@ void Delta::insert(UiObjectMember *member, UiObjectMember *parentMember, const Q
qmlText += doc->source().midRef(begin, end - begin);
QStringList importList;
- for (UiImportList *it = doc->qmlProgram()->imports; it; it = it->next) {
- if (!it->import)
+ for (UiHeaderItemList *it = doc->qmlProgram()->headers; it; it = it->next) {
+ UiImport *import = AST::cast<UiImport *>(it->headerItem);
+ if (!import)
continue;
- unsigned importBegin = it->import->firstSourceLocation().begin();
- unsigned importEnd = it->import->lastSourceLocation().end();
+ unsigned importBegin = import->firstSourceLocation().begin();
+ unsigned importEnd = import->lastSourceLocation().end();
importList << doc->source().mid(importBegin, importEnd - importBegin);
}
diff --git a/src/libs/qmljs/qmljsdocument.h b/src/libs/qmljs/qmljsdocument.h
index 3d9491e165..5d22890880 100644
--- a/src/libs/qmljs/qmljsdocument.h
+++ b/src/libs/qmljs/qmljsdocument.h
@@ -38,6 +38,7 @@
#include "parser/qmldirparser_p.h"
#include "parser/qmljsengine_p.h"
#include "qmljs_global.h"
+#include "qmljsconstants.h"
namespace QmlJS {
diff --git a/src/libs/qmljs/qmljsevaluate.cpp b/src/libs/qmljs/qmljsevaluate.cpp
index 443d0dd63b..0f0564f218 100644
--- a/src/libs/qmljs/qmljsevaluate.cpp
+++ b/src/libs/qmljs/qmljsevaluate.cpp
@@ -125,7 +125,17 @@ bool Evaluate::visit(AST::UiProgram *)
return false;
}
-bool Evaluate::visit(AST::UiImportList *)
+bool Evaluate::visit(AST::UiHeaderItemList *)
+{
+ return false;
+}
+
+bool Evaluate::visit(AST::UiQualifiedPragmaId *)
+{
+ return false;
+}
+
+bool Evaluate::visit(AST::UiPragma *)
{
return false;
}
@@ -281,7 +291,17 @@ bool Evaluate::visit(AST::Elision *)
return false;
}
-bool Evaluate::visit(AST::PropertyNameAndValueList *)
+bool Evaluate::visit(AST::PropertyAssignmentList *)
+{
+ return false;
+}
+
+bool Evaluate::visit(AST::PropertyGetterSetter *)
+{
+ return false;
+}
+
+bool Evaluate::visit(AST::PropertyNameAndValue *)
{
return false;
}
diff --git a/src/libs/qmljs/qmljsevaluate.h b/src/libs/qmljs/qmljsevaluate.h
index 18b43f3d8f..72e51fa8dd 100644
--- a/src/libs/qmljs/qmljsevaluate.h
+++ b/src/libs/qmljs/qmljsevaluate.h
@@ -64,7 +64,9 @@ protected:
// Ui
virtual bool visit(AST::UiProgram *ast);
- virtual bool visit(AST::UiImportList *ast);
+ virtual bool visit(AST::UiHeaderItemList *ast);
+ virtual bool visit(AST::UiQualifiedPragmaId *ast);
+ virtual bool visit(AST::UiPragma *ast);
virtual bool visit(AST::UiImport *ast);
virtual bool visit(AST::UiPublicMember *ast);
virtual bool visit(AST::UiSourceElement *ast);
@@ -90,7 +92,9 @@ protected:
virtual bool visit(AST::ObjectLiteral *ast);
virtual bool visit(AST::ElementList *ast);
virtual bool visit(AST::Elision *ast);
- virtual bool visit(AST::PropertyNameAndValueList *ast);
+ virtual bool visit(AST::PropertyAssignmentList *ast);
+ virtual bool visit(AST::PropertyGetterSetter *ast);
+ virtual bool visit(AST::PropertyNameAndValue *ast);
virtual bool visit(AST::NestedExpression *ast);
virtual bool visit(AST::IdentifierPropertyName *ast);
virtual bool visit(AST::StringLiteralPropertyName *ast);
diff --git a/src/libs/qmljs/qmljsreformatter.cpp b/src/libs/qmljs/qmljsreformatter.cpp
index b3d5d1e7d3..9295fcc319 100644
--- a/src/libs/qmljs/qmljsreformatter.cpp
+++ b/src/libs/qmljs/qmljsreformatter.cpp
@@ -662,15 +662,38 @@ protected:
return false;
}
- virtual bool visit(PropertyNameAndValueList *ast)
- {
- for (PropertyNameAndValueList *it = ast; it; it = it->next) {
- accept(it->name);
- out(": ", ast->colonToken);
- accept(it->value);
- if (it->next) {
- out(",", ast->commaToken); // always invalid?
- newLine();
+ virtual bool visit(PropertyAssignmentList *ast)
+ {
+ for (PropertyAssignmentList *it = ast; it; it = it->next) {
+ PropertyNameAndValue *assignment = AST::cast<PropertyNameAndValue *>(it->assignment);
+ if (assignment) {
+ accept(assignment->name);
+ out(": ", assignment->colonToken);
+ accept(assignment->value);
+ if (it->next) {
+ out(",", ast->commaToken); // always invalid?
+ newLine();
+ }
+ continue;
+ }
+ PropertyGetterSetter *getterSetter = AST::cast<PropertyGetterSetter *>(it->assignment);
+ if (getterSetter) {
+ switch (getterSetter->type) {
+ case PropertyGetterSetter::Getter:
+ out("get");
+ break;
+ case PropertyGetterSetter::Setter:
+ out("set");
+ break;
+ }
+
+ accept(getterSetter->name);
+ out("(", getterSetter->lparenToken);
+ accept(getterSetter->formals);
+ out("(", getterSetter->rparenToken);
+ out(" {", getterSetter->lbraceToken);
+ accept(getterSetter->functionBody);
+ out(" }", getterSetter->rbraceToken);
}
}
return false;
@@ -1136,10 +1159,10 @@ protected:
}
- virtual bool visit(UiImportList *ast)
+ virtual bool visit(UiHeaderItemList *ast)
{
- for (UiImportList *it = ast; it; it = it->next) {
- accept(it->import);
+ for (UiHeaderItemList *it = ast; it; it = it->next) {
+ accept(it->headerItem);
newLine();
}
requireEmptyLine();
diff --git a/src/libs/qmljs/qmljstypedescriptionreader.cpp b/src/libs/qmljs/qmljstypedescriptionreader.cpp
index 816228f268..8842511f75 100644
--- a/src/libs/qmljs/qmljstypedescriptionreader.cpp
+++ b/src/libs/qmljs/qmljstypedescriptionreader.cpp
@@ -93,12 +93,12 @@ void TypeDescriptionReader::readDocument(UiProgram *ast)
return;
}
- if (!ast->imports || ast->imports->next) {
+ if (!ast->headers || ast->headers->next || !AST::cast<AST::UiImport *>(ast->headers->headerItem)) {
addError(SourceLocation(), tr("Expected a single import."));
return;
}
- UiImport *import = ast->imports->import;
+ UiImport *import = AST::cast<AST::UiImport *>(ast->headers->headerItem);
if (toString(import->importUri) != QLatin1String("QtQuick.tooling")) {
addError(import->importToken, tr("Expected import of QtQuick.tooling."));
return;
@@ -612,20 +612,28 @@ void TypeDescriptionReader::readEnumValues(AST::UiScriptBinding *ast, LanguageUt
return;
}
- for (PropertyNameAndValueList *it = objectLit->properties; it; it = it->next) {
- StringLiteralPropertyName *propName = dynamic_cast<StringLiteralPropertyName *>(it->name);
- NumericLiteral *value = dynamic_cast<NumericLiteral *>(it->value);
- UnaryMinusExpression *minus = dynamic_cast<UnaryMinusExpression *>(it->value);
- if (minus)
- value = dynamic_cast<NumericLiteral *>(minus->expression);
- if (!propName || !value) {
- addError(objectLit->firstSourceLocation(), tr("Expected object literal to contain only 'string: number' elements."));
+ for (PropertyAssignmentList *it = objectLit->properties; it; it = it->next) {
+ PropertyNameAndValue *assignement = AST::cast<PropertyNameAndValue *>(it->assignment);
+ if (assignement) {
+ StringLiteralPropertyName *propName = dynamic_cast<StringLiteralPropertyName *>(assignement->name);
+ NumericLiteral *value = dynamic_cast<NumericLiteral *>(assignement->value);
+ UnaryMinusExpression *minus = dynamic_cast<UnaryMinusExpression *>(assignement->value);
+ if (minus)
+ value = dynamic_cast<NumericLiteral *>(minus->expression);
+ if (!propName || !value) {
+ addError(objectLit->firstSourceLocation(), tr("Expected object literal to contain only 'string: number' elements."));
+ continue;
+ }
+
+ double v = value->value;
+ if (minus)
+ v = -v;
+ fme->addKey(propName->id.toString(), v);
continue;
}
-
- double v = value->value;
- if (minus)
- v = -v;
- fme->addKey(propName->id.toString(), v);
+ PropertyGetterSetter *getterSetter = AST::cast<PropertyGetterSetter *>(it->assignment);
+ if (getterSetter) {
+ addError(objectLit->firstSourceLocation(), tr("Enum should not contain getter and setters, but only 'string: number' elements."));
+ }
}
}
diff --git a/src/libs/qmljs/qmljsutils.h b/src/libs/qmljs/qmljsutils.h
index 5ac47f7207..ab689ae9bd 100644
--- a/src/libs/qmljs/qmljsutils.h
+++ b/src/libs/qmljs/qmljsutils.h
@@ -31,6 +31,7 @@
#define QMLJS_QMLJSUTILS_H
#include "qmljs_global.h"
+#include "qmljsconstants.h"
#include "parser/qmljsastfwd_p.h"
#include "parser/qmljsengine_p.h"
@@ -67,7 +68,7 @@ AST::SourceLocation locationFromRange(const T *node)
template <class T>
DiagnosticMessage errorMessage(const T *node, const QString &message)
{
- return DiagnosticMessage(Severity::Error,
+ return DiagnosticMessage(QmlJS::Severity::Error,
locationFromRange(node),
message);
}
diff --git a/src/plugins/qmldesigner/designercore/filemanager/changeimportsvisitor.cpp b/src/plugins/qmldesigner/designercore/filemanager/changeimportsvisitor.cpp
index d80dd87fcd..1121f3495f 100644
--- a/src/plugins/qmldesigner/designercore/filemanager/changeimportsvisitor.cpp
+++ b/src/plugins/qmldesigner/designercore/filemanager/changeimportsvisitor.cpp
@@ -49,7 +49,7 @@ bool ChangeImportsVisitor::add(QmlJS::AST::UiProgram *ast, const Import &import)
if (!ast)
return false;
- if (ast->imports && ast->imports->import) {
+ if (ast->headers && ast->headers->headerItem) {
int insertionPoint = 0;
if (ast->members && ast->members->member)
insertionPoint = ast->members->member->firstSourceLocation().begin();
@@ -77,10 +77,11 @@ bool ChangeImportsVisitor::remove(QmlJS::AST::UiProgram *ast, const Import &impo
if (!ast)
return false;
- for (UiImportList *iter = ast->imports; iter; iter = iter->next) {
- if (equals(iter->import, import)) {
- int start = iter->import->firstSourceLocation().begin();
- int end = iter->import->lastSourceLocation().end();
+ for (UiHeaderItemList *iter = ast->headers; iter; iter = iter->next) {
+ UiImport *iterImport = AST::cast<UiImport *>(iter->headerItem);
+ if (equals(iterImport, import)) {
+ int start = iterImport->firstSourceLocation().begin();
+ int end = iterImport->lastSourceLocation().end();
includeSurroundingWhitespace(start, end);
replace(start, end - start, QString());
setDidRewriting(true);
diff --git a/src/plugins/qmldesigner/designercore/model/paster.cpp b/src/plugins/qmldesigner/designercore/model/paster.cpp
index d2a2ee0afe..1cf9f49617 100644
--- a/src/plugins/qmldesigner/designercore/model/paster.cpp
+++ b/src/plugins/qmldesigner/designercore/model/paster.cpp
@@ -89,12 +89,13 @@ protected:
return oldStateName;
}
- bool visit(UiImportList *ast) {
- for (UiImportList *it = ast; it; it = it->next) {
- if (it->import) {
- m_paster->addImports(createImport(it->import));
+ bool visit(UiHeaderItemList *ast) {
+ for (UiHeaderItemList *it = ast; it; it = it->next) {
+ AST::UiImport *import = AST::cast<AST::UiImport *>(it->headerItem)
+ if (import) {
+ m_paster->addImports(createImport(import));
- m_locations.remove(toLocation(it->import->firstSourceLocation(), it->import->lastSourceLocation()));
+ m_locations.remove(toLocation(import->firstSourceLocation(), import->lastSourceLocation()));
}
}
diff --git a/src/plugins/qmldesigner/designercore/model/texttomodelmerger.cpp b/src/plugins/qmldesigner/designercore/model/texttomodelmerger.cpp
index 106af60869..28ec296181 100644
--- a/src/plugins/qmldesigner/designercore/model/texttomodelmerger.cpp
+++ b/src/plugins/qmldesigner/designercore/model/texttomodelmerger.cpp
@@ -690,8 +690,8 @@ void TextToModelMerger::setupImports(const Document::Ptr &doc,
{
QList<Import> existingImports = m_rewriterView->model()->imports();
- for (UiImportList *iter = doc->qmlProgram()->imports; iter; iter = iter->next) {
- UiImport *import = iter->import;
+ for (UiHeaderItemList *iter = doc->qmlProgram()->headers; iter; iter = iter->next) {
+ UiImport *import = AST::cast<UiImport *>(iter->headerItem);
if (!import)
continue;
diff --git a/src/plugins/qmljseditor/qmljscomponentfromobjectdef.cpp b/src/plugins/qmljseditor/qmljscomponentfromobjectdef.cpp
index 266ba57241..fb47124071 100644
--- a/src/plugins/qmljseditor/qmljscomponentfromobjectdef.cpp
+++ b/src/plugins/qmljseditor/qmljscomponentfromobjectdef.cpp
@@ -93,8 +93,8 @@ public:
QString imports;
UiProgram *prog = currentFile->qmljsDocument()->qmlProgram();
- if (prog && prog->imports) {
- const int start = currentFile->startOf(prog->imports->firstSourceLocation());
+ if (prog && prog->headers) {
+ const int start = currentFile->startOf(prog->headers->firstSourceLocation());
const int end = currentFile->startOf(prog->members->member->firstSourceLocation());
imports = currentFile->textOf(start, end);
}
diff --git a/src/plugins/qmljseditor/qmloutlinemodel.cpp b/src/plugins/qmljseditor/qmloutlinemodel.cpp
index 9e55cbd5af..e559c20962 100644
--- a/src/plugins/qmljseditor/qmloutlinemodel.cpp
+++ b/src/plugins/qmljseditor/qmloutlinemodel.cpp
@@ -270,7 +270,7 @@ private:
QModelIndex index = m_model->enterTestCase(rhsObjLit);
m_nodeToIndex.insert(rhsObjLit, index);
- if (AST::PropertyNameAndValueList *properties = rhsObjLit->properties)
+ if (AST::PropertyAssignmentList *properties = rhsObjLit->properties)
visitProperties(properties);
m_model->leaveTestCase();
@@ -278,14 +278,14 @@ private:
return true;
}
- void visitProperties(AST::PropertyNameAndValueList *properties)
+ void visitProperties(AST::PropertyAssignmentList *properties)
{
while (properties) {
QModelIndex index = m_model->enterTestCaseProperties(properties);
m_nodeToIndex.insert(properties, index);
-
- if (AST::ObjectLiteral *objLiteral = AST::cast<AST::ObjectLiteral *>(properties->value))
- visitProperties(objLiteral->properties);
+ if (AST::PropertyNameAndValue *assignment = AST::cast<AST::PropertyNameAndValue *>(properties->assignment))
+ if (AST::ObjectLiteral *objLiteral = AST::cast<AST::ObjectLiteral *>(assignment->value))
+ visitProperties(objLiteral->properties);
m_model->leaveTestCaseProperties();
properties = properties->next;
@@ -595,24 +595,38 @@ void QmlOutlineModel::leaveTestCase()
leaveNode();
}
-QModelIndex QmlOutlineModel::enterTestCaseProperties(AST::PropertyNameAndValueList *propertyNameAndValueList)
+QModelIndex QmlOutlineModel::enterTestCaseProperties(AST::PropertyAssignmentList *propertyAssignmentList)
{
QMap<int, QVariant> objectData;
- if (AST::IdentifierPropertyName *propertyName = AST::cast<AST::IdentifierPropertyName *>(propertyNameAndValueList->name)) {
- objectData.insert(Qt::DisplayRole, propertyName->id.toString());
- objectData.insert(ItemTypeRole, ElementBindingType);
- QmlOutlineItem *item;
- if (propertyNameAndValueList->value->kind == AST::Node::Kind_FunctionExpression)
- item = enterNode(objectData, propertyNameAndValueList, 0, m_icons->functionDeclarationIcon());
- else if (propertyNameAndValueList->value->kind == AST::Node::Kind_ObjectLiteral)
- item = enterNode(objectData, propertyNameAndValueList, 0, m_icons->objectDefinitionIcon());
- else
- item = enterNode(objectData, propertyNameAndValueList, 0, m_icons->scriptBindingIcon());
+ if (AST::PropertyNameAndValue *assignment = AST::cast<AST::PropertyNameAndValue *>(
+ propertyAssignmentList->assignment)) {
+ if (AST::IdentifierPropertyName *propertyName = AST::cast<AST::IdentifierPropertyName *>(assignment->name)) {
+ objectData.insert(Qt::DisplayRole, propertyName->id.toString());
+ objectData.insert(ItemTypeRole, ElementBindingType);
+ QmlOutlineItem *item;
+ if (assignment->value->kind == AST::Node::Kind_FunctionExpression)
+ item = enterNode(objectData, assignment, 0, m_icons->functionDeclarationIcon());
+ else if (assignment->value->kind == AST::Node::Kind_ObjectLiteral)
+ item = enterNode(objectData, assignment, 0, m_icons->objectDefinitionIcon());
+ else
+ item = enterNode(objectData, assignment, 0, m_icons->scriptBindingIcon());
- return item->index();
- } else {
- return QModelIndex();
+ return item->index();
+ }
+ }
+ if (AST::PropertyGetterSetter *getterSetter = AST::cast<AST::PropertyGetterSetter *>(
+ propertyAssignmentList->assignment)) {
+ if (AST::IdentifierPropertyName *propertyName = AST::cast<AST::IdentifierPropertyName *>(getterSetter->name)) {
+ objectData.insert(Qt::DisplayRole, propertyName->id.toString());
+ objectData.insert(ItemTypeRole, ElementBindingType);
+ QmlOutlineItem *item;
+ item = enterNode(objectData, getterSetter, 0, m_icons->functionDeclarationIcon());
+
+ return item->index();
+
+ }
}
+ return QModelIndex();
}
void QmlOutlineModel::leaveTestCaseProperties()
@@ -642,8 +656,8 @@ AST::SourceLocation QmlOutlineModel::sourceLocation(const QModelIndex &index) co
location = getLocation(member);
else if (AST::ExpressionNode *expression = node->expressionCast())
location = getLocation(expression);
- else if (AST::PropertyNameAndValueList *propertyNameAndValueList = AST::cast<AST::PropertyNameAndValueList *>(node))
- location = getLocation(propertyNameAndValueList);
+ else if (AST::PropertyAssignmentList *propertyAssignmentList = AST::cast<AST::PropertyAssignmentList *>(node))
+ location = getLocation(propertyAssignmentList);
}
return location;
}
@@ -913,7 +927,15 @@ AST::SourceLocation QmlOutlineModel::getLocation(AST::ExpressionNode *exprNode)
return location;
}
-AST::SourceLocation QmlOutlineModel::getLocation(AST::PropertyNameAndValueList *propertyNode) {
+AST::SourceLocation QmlOutlineModel::getLocation(AST::PropertyAssignmentList *propertyNode) {
+ if (AST::PropertyNameAndValue *assignment = AST::cast<AST::PropertyNameAndValue *>(propertyNode->assignment))
+ return getLocation(assignment);
+ if (AST::PropertyGetterSetter *getterSetter = AST::cast<AST::PropertyGetterSetter *>(propertyNode->assignment))
+ return getLocation(getterSetter);
+ return propertyNode->commaToken; // should never happen
+}
+
+AST::SourceLocation QmlOutlineModel::getLocation(AST::PropertyNameAndValue *propertyNode) {
AST::SourceLocation location;
location.offset = propertyNode->name->propertyNameToken.offset;
location.length = propertyNode->value->lastSourceLocation().end() - location.offset;
@@ -921,6 +943,14 @@ AST::SourceLocation QmlOutlineModel::getLocation(AST::PropertyNameAndValueList *
return location;
}
+AST::SourceLocation QmlOutlineModel::getLocation(AST::PropertyGetterSetter *propertyNode) {
+ AST::SourceLocation location;
+ location.offset = propertyNode->name->propertyNameToken.offset;
+ location.length = propertyNode->rbraceToken.end() - location.offset;
+
+ return location;
+}
+
QIcon QmlOutlineModel::getIcon(AST::UiQualifiedId *qualifiedId) {
QIcon icon;
if (qualifiedId) {
diff --git a/src/plugins/qmljseditor/qmloutlinemodel.h b/src/plugins/qmljseditor/qmloutlinemodel.h
index 53e583e51d..c3971ecda8 100644
--- a/src/plugins/qmljseditor/qmloutlinemodel.h
+++ b/src/plugins/qmljseditor/qmloutlinemodel.h
@@ -122,7 +122,7 @@ private:
QModelIndex enterTestCase(QmlJS::AST::ObjectLiteral *objectLiteral);
void leaveTestCase();
- QModelIndex enterTestCaseProperties(QmlJS::AST::PropertyNameAndValueList *propertyNameAndValueList);
+ QModelIndex enterTestCaseProperties(QmlJS::AST::PropertyAssignmentList *propertyAssignmentList);
void leaveTestCaseProperties();
private:
@@ -139,7 +139,9 @@ private:
static QString asString(QmlJS::AST::UiQualifiedId *id);
static QmlJS::AST::SourceLocation getLocation(QmlJS::AST::UiObjectMember *objMember);
static QmlJS::AST::SourceLocation getLocation(QmlJS::AST::ExpressionNode *exprNode);
- static QmlJS::AST::SourceLocation getLocation(QmlJS::AST::PropertyNameAndValueList *propertyNode);
+ static QmlJS::AST::SourceLocation getLocation(QmlJS::AST::PropertyAssignmentList *propertyNode);
+ static QmlJS::AST::SourceLocation getLocation(QmlJS::AST::PropertyNameAndValue *propertyNode);
+ static QmlJS::AST::SourceLocation getLocation(QmlJS::AST::PropertyGetterSetter *propertyNode);
QIcon getIcon(QmlJS::AST::UiQualifiedId *objDef);
QString getAnnotation(QmlJS::AST::UiObjectInitializer *objInitializer);
diff --git a/src/plugins/qmljstools/qmljssemanticinfo.cpp b/src/plugins/qmljstools/qmljssemanticinfo.cpp
index af8891f57e..cc65dadb6f 100644
--- a/src/plugins/qmljstools/qmljssemanticinfo.cpp
+++ b/src/plugins/qmljstools/qmljssemanticinfo.cpp
@@ -40,7 +40,7 @@ namespace {
// ### does not necessarily give the full AST path!
// intentionally does not contain lists like
-// UiImportList, SourceElements, UiObjectMemberList
+// UiHeaderItemList, SourceElements, UiObjectMemberList
class AstPath: protected AST::Visitor
{
QList<AST::Node *> _path;