summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--doc/src/declarative/animation.qdoc4
-rw-r--r--doc/src/declarative/effects.qdoc10
-rw-r--r--doc/src/declarative/index.qdoc100
-rw-r--r--doc/src/declarative/qtdeclarative.qdoc93
-rw-r--r--doc/src/declarative/tutorial.qdoc2
-rw-r--r--doc/src/declarative/tutorial1.qdoc37
-rw-r--r--doc/src/declarative/tutorial2.qdoc106
-rw-r--r--doc/src/declarative/tutorial3.qdoc126
-rw-r--r--doc/src/modules.qdoc1
-rw-r--r--examples/declarative/slideswitch/Switch.qml1
-rw-r--r--examples/declarative/tutorials/helloworld/t1/tutorial1.qml (renamed from examples/declarative/tutorials/t1/tutorial1.qml)0
-rw-r--r--examples/declarative/tutorials/helloworld/t2/Cell.qml (renamed from examples/declarative/tutorials/t3/Cell.qml)0
-rw-r--r--examples/declarative/tutorials/helloworld/t2/tutorial2.qml27
-rw-r--r--examples/declarative/tutorials/helloworld/t3/Cell.qml (renamed from examples/declarative/tutorials/t2/Cell.qml)0
-rw-r--r--examples/declarative/tutorials/helloworld/t3/tutorial3.qml (renamed from examples/declarative/tutorials/t3/tutorial3.qml)39
-rw-r--r--examples/declarative/tutorials/t2/tutorial2.qml41
-rw-r--r--src/declarative/extra/qmlsqlconnection.cpp45
-rw-r--r--src/declarative/extra/qmlsqlquery.cpp34
-rw-r--r--src/declarative/fx/qfximageitem.cpp4
-rw-r--r--src/declarative/fx/qfxpainted.cpp5
-rw-r--r--src/declarative/fx/qfxpainted.h5
-rw-r--r--src/declarative/fx/qfxwebview.cpp2
-rw-r--r--src/declarative/opengl/gltexture.cpp1
-rw-r--r--src/declarative/qml/parser/javascript.g119
-rw-r--r--src/declarative/qml/parser/javascriptast_p.h12
-rw-r--r--src/declarative/qml/parser/javascriptgrammar.cpp1301
-rw-r--r--src/declarative/qml/parser/javascriptgrammar_p.h68
-rw-r--r--src/declarative/qml/parser/javascriptlexer.cpp9
-rw-r--r--src/declarative/qml/parser/javascriptparser.cpp450
-rw-r--r--src/declarative/qml/parser/javascriptparser_p.h4
-rw-r--r--src/declarative/qml/qmlscriptparser.cpp76
-rw-r--r--src/declarative/qml/script/qmlbasicscript.cpp1
-rw-r--r--src/declarative/timeline/qmltimeline.cpp7
-rw-r--r--src/declarative/util/qmlanimation.cpp2
34 files changed, 1529 insertions, 1203 deletions
diff --git a/doc/src/declarative/animation.qdoc b/doc/src/declarative/animation.qdoc
index a143d4c..cd7d1b9 100644
--- a/doc/src/declarative/animation.qdoc
+++ b/doc/src/declarative/animation.qdoc
@@ -1,6 +1,6 @@
/*!
-\page animation.html
-\target animation
+\page qmlanimation.html
+\target qmlanimation
\title QML Animation
QML supports three different forms of animation - basic property animation,
diff --git a/doc/src/declarative/effects.qdoc b/doc/src/declarative/effects.qdoc
index e3c68bd..6181e20 100644
--- a/doc/src/declarative/effects.qdoc
+++ b/doc/src/declarative/effects.qdoc
@@ -1,17 +1,15 @@
/*!
\page effects.html
-\target effects
+\target qmleffects
\title Visual Effects
-
\section1 Basic Effects
-These effects are currently supported by all canvas backends.
-
\list
\o Scaling (\l Item \bold scale property)
\o Opacity (\l Item \bold opacity property)
-\o Z-Axis Rotation (\l Item \bold rotation property)
+\o Rotation (\l Item \bold rotation property, and Rotation3D)
+\o Affine Transforms (\l Squish)
\endlist
\section1 Advanced Effects
@@ -20,7 +18,7 @@ These effects are currently only supported by the OpenGL canvas backend. Support
backends may be added if the performance can be made acceptable.
\list
-\o X/Y-Axis Rotation (see \l Transform)
+\o Perspective Transforms (\l Perspective, Translation3D)
\o \l Shadow
\o \l Blur
\o \l Reflection
diff --git a/doc/src/declarative/index.qdoc b/doc/src/declarative/index.qdoc
index b5e9001..fe1b46e 100644
--- a/doc/src/declarative/index.qdoc
+++ b/doc/src/declarative/index.qdoc
@@ -1,51 +1,51 @@
-/*!
-\page qml.html
-\title 'Qt Declarative' Documentation
-
-\target qtdeclarativemainpage
-
-The Qt Declarative module provides a user interface framework for building
-highly dynamic and fluid applications. It is targetted at the sorts of user
-interface and the sorts of hardware in embedded devices such as phones, media
-players, and set-top boxes. It is also appropriate for highly custom desktop
-user-interfaces, or special elements in more traditional desktop
-user-interfaces.
-
-Building fluid applications is done declaratively, rather than procedurally.
-That is, you specify \e what the UI should look like and how it should behave
-in an declarative format called QML instead of specifying step-by-step \e how to
-build it in a language like C++ or JavaScript. Specifying a UI declaratively
-does not just include the layout of the interface items, but also the way each
-individual item looks and behaves and the overall flow of the application.
-
-Getting Started:
-\list
-\o \l {qmlexamples}{Examples}
-\o \l {tutorial}{Tutorial}
-\o \l {qmlforcpp}{Qt Declarative Markup Language For C++ Programmers}
-\endlist
-
-Core Features:
-\list
-\o \l {binding}{Data Binding}
-\o \l {anchor-layout}{Layout Anchors}
-\o \l {animation}{Animation}
-\o \l {effects}{Visual Effects}
-\o \l {components}{Components}
-\o \l {qmlmodules}{Modules}
-\o \l {qmlfocus}{Keyboard Focus}
-\endlist
-
-QML Reference:
-\list
-\o \l {elements}{Qml Elements}
-\endlist
-
-C++ Reference:
-\list
-\o \l {qtprogrammers}{QML for Qt programmers}
-\o \l {qtbinding}{C++ Data Binding}
-\o \l {cppitem}{C++ Components}
-\endlist
-
+/*!
+ \page qml.html
+ \title 'Qt Declarative' Documentation
+
+ \target qtdeclarativemainpage
+
+ The Qt Declarative module provides a declarative framework for building
+ highly dynamic and fluid applications. It is targetted at the sorts of user
+ interface (and the sorts of hardware) in embedded devices such as phones, media
+ players, and set-top boxes. It is also appropriate for highly custom desktop
+ user-interfaces, or special elements in more traditional desktop
+ user-interfaces.
+
+ Building fluid applications is done declaratively, rather than procedurally.
+ That is, you specify \e what the UI should look like and how it should behave
+ in an declarative format called QML, rather than specifying step-by-step \e how to
+ build it in a language like C++ or JavaScript. Specifying a UI declaratively
+ does not just include the layout of the interface items, but also the way each
+ individual item looks and behaves and the overall flow of the application.
+
+ Getting Started:
+ \list
+ \o \l {qmlexamples}{Examples}
+ \o \l {tutorial}{Tutorial: 'Hello World'}
+ \o \l {tutorials-declarative-contacts.html}{Tutorial: 'Introduction to QML'}
+ \o \l {qmlforcpp}{Qt Declarative Markup Language For C++ Programmers}
+ \endlist
+
+ Core Features:
+ \list
+ \o \l {binding}{Data Binding}
+ \o \l {anchor-layout}{Layout Anchors}
+ \o \l {qmlanimation}{Animation}
+ \o \l {qmleffects}{Visual Effects}
+ \o \l {components}{Components}
+ \o \l {qmlmodules}{Modules}
+ \o \l {qmlfocus}{Keyboard Focus}
+ \endlist
+
+ QML Reference:
+ \list
+ \o \l {elements}{Qml Elements}
+ \endlist
+
+ C++ Reference:
+ \list
+ \o \l {qtprogrammers}{QML for Qt programmers}
+ \o \l {qtbinding}{C++ Data Binding}
+ \o \l {cppitem}{C++ Components}
+ \endlist
*/
diff --git a/doc/src/declarative/qtdeclarative.qdoc b/doc/src/declarative/qtdeclarative.qdoc
new file mode 100644
index 0000000..666c8ae
--- /dev/null
+++ b/doc/src/declarative/qtdeclarative.qdoc
@@ -0,0 +1,93 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Qt Software Information (qt-info@nokia.com)
+**
+** This file is part of the documentation of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the either Technology Preview License Agreement or the
+** Beta Release License Agreement.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain
+** additional rights. These rights are described in the Nokia Qt LGPL
+** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
+** package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at qt-sales@nokia.com.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+/*!
+ \module QtDeclarative
+ \title QtDeclarative Module
+ \ingroup modules
+
+ \brief The Qt Declarative module provides a declarative framework for building
+ highly dynamic and fluid applications.
+
+ Qt Declarative is targetted at the sorts of user
+ interface (and the sorts of hardware) in embedded devices such as phones, media
+ players, and set-top boxes. It is also appropriate for highly custom desktop
+ user-interfaces, or special elements in more traditional desktop
+ user-interfaces.
+
+ Building fluid applications is done declaratively, rather than procedurally.
+ That is, you specify \e what the UI should look like and how it should behave
+ in an declarative format called QML, rather than specifying step-by-step \e how to
+ build it in a language like C++ or JavaScript. Specifying a UI declaratively
+ does not just include the layout of the interface items, but also the way each
+ individual item looks and behaves and the overall flow of the application.
+
+ Getting Started:
+ \list
+ \o \l {qmlexamples}{Examples}
+ \o \l {tutorial}{Tutorial: 'Hello World'}
+ \o \l {tutorials-declarative-contacts.html}{Tutorial: 'Introduction to QML'}
+ \o \l {qmlforcpp}{Qt Declarative Markup Language For C++ Programmers}
+ \endlist
+
+ Core Features:
+ \list
+ \o \l {binding}{Data Binding}
+ \o \l {anchor-layout}{Layout Anchors}
+ \o \l {qmlanimation}{Animation}
+ \o \l {qmleffects}{Visual Effects}
+ \o \l {components}{Components}
+ \o \l {qmlmodules}{Modules}
+ \o \l {qmlfocus}{Keyboard Focus}
+ \endlist
+
+ QML Reference:
+ \list
+ \o \l {elements}{Qml Elements}
+ \endlist
+
+ C++ Reference:
+ \list
+ \o \l {qtprogrammers}{QML for Qt programmers}
+ \o \l {qtbinding}{C++ Data Binding}
+ \o \l {cppitem}{C++ Components}
+ \endlist
+*/
diff --git a/doc/src/declarative/tutorial.qdoc b/doc/src/declarative/tutorial.qdoc
index 6fe3929..5c855ec 100644
--- a/doc/src/declarative/tutorial.qdoc
+++ b/doc/src/declarative/tutorial.qdoc
@@ -6,7 +6,7 @@ This tutorial gives an introduction to QML and the Fluid UI atoms. It doesn't co
Chapter one starts with a minimal "Hello world" program and the following chapters introduce new concepts.
-The tutorial's source code is located in the $QTDIR/examples/declarative/tutorials directory.
+The tutorial's source code is located in the $QTDIR/examples/declarative/tutorials/helloworld directory.
Tutorial chapters:
diff --git a/doc/src/declarative/tutorial1.qdoc b/doc/src/declarative/tutorial1.qdoc
index aa94c06..c2e3e22 100644
--- a/doc/src/declarative/tutorial1.qdoc
+++ b/doc/src/declarative/tutorial1.qdoc
@@ -10,9 +10,20 @@ This first program is a simple "Hello world" example. The picture below is a scr
Here is the QML code for the application:
\code
-<Rect id="Page" width="480" height="200" color="white">
- <Text id="HelloText" text="Hello world!" font.size="24" font.bold="true" y="30" anchors.horizontalCenter="{Page.horizontalCenter}"/>
-</Rect>
+Rect {
+ id: Page
+ width: 480
+ height: 200
+ color: "white"
+ Text {
+ id: HelloText
+ text: "Hello world!"
+ font.size: 24
+ font.bold: true
+ y: 30
+ anchors.horizontalCenter: Page.horizontalCenter
+ }
+}
\endcode
\section1 Walkthrough
@@ -20,7 +31,12 @@ Here is the QML code for the application:
\section2 Rect element
\code
-<Rect id="Page" width="480" height="200" color="white">
+Rect {
+ id: Page
+ width: 480
+ height: 200
+ color: "white"
+}
\endcode
First, we declare a root element of type \l Rect. It is one of the basic building blocks you can use to create an application in QML.
@@ -30,7 +46,14 @@ The \l Rect element contains many other properties (such as \c x and \c y), but
\section2 Text element
\code
-<Text id="HelloText" text="Hello world!" y="30" font.size="24" font.bold="true" anchors.horizontalCenter="{Page.horizontalCenter}"/>
+Text {
+ id: HelloText
+ text: "Hello world!"
+ font.size: 24
+ font.bold: true
+ y: 30
+ anchors.horizontalCenter: Page.horizontalCenter
+}
\endcode
We add a text element as a child of our root element to display the text 'Hello world!'.
@@ -39,14 +62,14 @@ The \c y property is used to position the text vertically at 30 pixels from the
The \c font.size and \c font.bold properties are related to fonts and use the 'dot' notation (see \l {declarative}{Declarative UI} ).
-The \c anchors.horizontalCenter property refers to the horizontal center of an element. In this case, we bind the center of our text element to the center of the \e Page element. We use braces to indicate that \c Page.horizontalCenter is a bound ECMAScript expression that needs to be evaluated. It also means that if the center of \e Page changes (for example if it is resized) our text will be re-centered automatically (see \l binding).
+The \c anchors.horizontalCenter property refers to the horizontal center of an element. In this case, we specify that our text element should be horizontally centered in the \e Page element.
\section2 Viewing the example
To view what you have created, run the qmlviewer (located in the \c bin directory) with your filename as the first argument. For example, to run the provided completed Tutorial 1 example from the install location, you would type:
\code
-bin/qmlviewer examples/tutorials/t1/tutorial1.qml
+bin/qmlviewer $QTDIR/examples/declarative/tutorials/helloworld/t1/tutorial1.qml
\endcode
[\l tutorial] [Next: \l tutorial2]
diff --git a/doc/src/declarative/tutorial2.qdoc b/doc/src/declarative/tutorial2.qdoc
index db846b8..54f1828 100644
--- a/doc/src/declarative/tutorial2.qdoc
+++ b/doc/src/declarative/tutorial2.qdoc
@@ -12,29 +12,54 @@ Our color picker is made of many cells with different colors. To avoid writing t
Here is the QML code for \c Cell.qml:
\code
-<Item id="CellContainer" width="40" height="25">
- <properties>
- <Property name="color"/>
- </properties>
- <Rect anchors.fill="{parent}" color="{CellContainer.color}"/>
- <MouseRegion anchors.fill="{parent}" onClick="HelloText.color = CellContainer.color" />
-</Item>
+Item {
+ id: CellContainer
+ width: 40
+ height: 25
+ properties: Property {
+ name: "color"
+ }
+ Rect {
+ anchors.fill: parent
+ color: CellContainer.color
+ }
+ MouseRegion {
+ anchors.fill: parent
+ onClicked: { HelloText.color = CellContainer.color }
+ }
+}
\endcode
Then, we use our \c Cell component to create the color picker in the QML code for the application:
\code
-<Rect id="Page" width="480" height="200" color="white">
- <Text id="HelloText" text="Hello world!" font.size="24" font.bold="true" y="30" anchors.horizontalCenter="{Page.horizontalCenter}"/>
- <GridLayout id="ColorPicker" x="0" anchors.bottom="{Page.bottom}" width="120" height="50" columns="3" rows="2">
- <Cell color="#ff0000"/>
- <Cell color="#00ff00"/>
- <Cell color="#0000ff"/>
- <Cell color="#ffff00"/>
- <Cell color="#00ffff"/>
- <Cell color="#ff00ff"/>
- </GridLayout>
-</Rect>
+Rect {
+ id: Page
+ width: 480
+ height: 200
+ color: "white"
+ Text {
+ id: HelloText
+ text: "Hello world!"
+ font.size: 24
+ font.bold: true
+ y: 30
+ anchors.horizontalCenter: Page.horizontalCenter
+ }
+ GridLayout {
+ id: ColorPicker
+ x: 0
+ anchors.bottom: Page.bottom
+ width: 120; height: 50
+ rows: 2; columns: 3
+ Cell { color: "#ff0000" }
+ Cell { color: "#00ff00" }
+ Cell { color: "#0000ff" }
+ Cell { color: "#ffff00" }
+ Cell { color: "#00ffff" }
+ Cell { color: "#ff00ff" }
+ }
+}
\endcode
\section1 Walkthrough
@@ -42,21 +67,28 @@ Then, we use our \c Cell component to create the color picker in the QML code fo
\section2 The Cell Component
\code
-<Item id="CellContainer" width="40" height="25">
+Item {
+ id: CellContainer
+ width: 40
+ height: 25
+}
\endcode
The root element of our component is an \c Item. It is the most basic 'Fx' element in Qml and is often used as a container for other elements.
\code
-<properties>
- <Property name="color"/>
-</properties>
+properties: Property {
+ name: "color"
+}
\endcode
We declare a \c color property. This property is accessible from \e outside our component, this allows us to instantiate the cells with different colors.
\code
-<Rect anchors.fill="{parent}" color="{CellContainer.color}"/>
+Rect {
+ anchors.fill: parent
+ color: CellContainer.color
+}
\endcode
Our cell component is basically a colored rectangle.
@@ -66,24 +98,32 @@ The \c anchors.fill property is a convenient way to set the size of an element.
We bind the \c color property of this \c Rect to the color property of our component.
\code
-<MouseRegion anchors.fill="{parent}" onClick="HelloText.color = CellContainer.color" />
+MouseRegion {
+ anchors.fill: parent
+ onClicked: { HelloText.color = CellContainer.color }
+}
\endcode
In order to change the color of the text when clicking on a cell, we create a \c MouseRegion element with the same size as its parent.
-The \c onClick property sets the \c color property of the element named \e HelloText to our cell color.
+The \c onClicked property sets the \c color property of the element named \e HelloText to our cell color.
\section2 The main QML file
\code
-<GridLayout id="ColorPicker" x="0" anchors.bottom="{Page.bottom}" width="120" height="50" columns="3" rows="2">
- <Cell color="#ff0000"/>
- <Cell color="#00ff00"/>
- <Cell color="#0000ff"/>
- <Cell color="#ffff00"/>
- <Cell color="#00ffff"/>
- <Cell color="#ff00ff"/>
-</GridLayout>
+GridLayout {
+ id: ColorPicker
+ x: 0
+ anchors.bottom: Page.bottom
+ width: 120; height: 50
+ rows: 2; columns: 3
+ Cell { color: "#ff0000" }
+ Cell { color: "#00ff00" }
+ Cell { color: "#0000ff" }
+ Cell { color: "#ffff00" }
+ Cell { color: "#00ffff" }
+ Cell { color: "#ff00ff" }
+}
\endcode
In the main QML file, the only thing we have to do is to create a color picker by putting 6 cells with different colors in a grid layout.
diff --git a/doc/src/declarative/tutorial3.qdoc b/doc/src/declarative/tutorial3.qdoc
index 533e179..3ac22a1 100644
--- a/doc/src/declarative/tutorial3.qdoc
+++ b/doc/src/declarative/tutorial3.qdoc
@@ -12,44 +12,86 @@ We want our text to jump at the bottom of the screen and become red when clicked
Here is the QML code:
\code
-<Rect id="Page" width="480" height="200" color="white">
- <Text id="HelloText" text="Hello world!" font.size="24" font.bold="true" y="30" anchors.horizontalCenter="{Page.horizontalCenter}">
- <states>
- <State name="down" when="{MouseRegion.pressed == true}">
- <SetProperty target="{HelloText}" property="y" value="160"/>
- <SetProperty target="{HelloText}" property="color" value="red"/>
- </State>
- </states>
- <transitions>
- <Transition fromState="*" toState="down" reversible="true">
- <ParallelAnimation>
- <NumericAnimation properties="y" duration="500" easing="easeOutBounce"/>
- <ColorAnimation duration="500"/>
- </ParallelAnimation>
- </Transition>
- </transitions>
- </Text>
- <MouseRegion id="MouseRegion" anchors.fill="{HelloText}"/>
- <GridLayout id="ColorPicker" x="0" anchors.bottom="{Page.bottom}" width="120" height="50" columns="3" rows="2">
- <Cell color="#ff0000"/>
- <Cell color="#00ff00"/>
- <Cell color="#0000ff"/>
- <Cell color="#ffff00"/>
- <Cell color="#00ffff"/>
- <Cell color="#ff00ff"/>
- </GridLayout>
-</Rect>
+Rect {
+ id: Page
+ width: 480
+ height: 200
+ color: "white"
+ Text {
+ id: HelloText
+ text: "Hello world!"
+ font.size: 24
+ font.bold: true
+ y: 30
+ anchors.horizontalCenter: Page.horizontalCenter
+ states: [
+ State {
+ name: "down"
+ when: MouseRegion.pressed == true
+ SetProperty {
+ target: HelloText
+ property: "y"
+ value: 160
+ }
+ SetProperty {
+ target: HelloText
+ property: "color"
+ value: "red"
+ }
+ }
+ ]
+ transitions: [
+ Transition {
+ fromState: "*"
+ toState: "down"
+ reversible: true
+ ParallelAnimation {
+ NumericAnimation {
+ properties: "y"
+ duration: 500
+ easing: "easeOutBounce"
+ }
+ ColorAnimation { duration: 500 }
+ }
+ }
+ ]
+ }
+ MouseRegion { id: MouseRegion; anchors.fill: HelloText }
+ GridLayout {
+ id: ColorPicker
+ x: 0
+ anchors.bottom: Page.bottom
+ width: 120; height: 50
+ rows: 2; columns: 3
+ Cell { color: "#ff0000" }
+ Cell { color: "#00ff00" }
+ Cell { color: "#0000ff" }
+ Cell { color: "#ffff00" }
+ Cell { color: "#00ffff" }
+ Cell { color: "#ff00ff" }
+ }
+}
\endcode
\section1 Walkthrough
\code
-<states>
- <State name="down" when="{MouseRegion.pressed == true}">
- <SetProperty target="{HelloText}" property="y" value="160"/>
- <SetProperty target="{HelloText}" property="color" value="red"/>
- </State>
-</states>
+states: [
+ State {
+ name: "down"
+ when: MouseRegion.pressed == true
+ SetProperty {
+ target: HelloText
+ property: "y"
+ value: 160
+ }
+ SetProperty {
+ target: HelloText
+ property: "color"
+ value: "red"
+ }
+ }
+]
\endcode
First, we create a new state \e down for our text element. This state will be activated when MouseRegion is pressed, and deactivated when it is released.
@@ -57,7 +99,11 @@ First, we create a new state \e down for our text element. This state will be ac
The \e down state includes a set of property changes from our implicit \e {default state} (the items as they were initially defined in the QML). Specifically, we set the \c y property of the text to 160 and the \c color to red.
\code
-<Transition fromState="*" toState="down" reversible="true">
+Transition {
+ fromState: "*"
+ toState: "down"
+ reversible: true
+}
\endcode
Because we don't want the text to appear at the bottom instantly but rather move smoothly, we add a transition between our two states.
@@ -67,10 +113,14 @@ Because we don't want the text to appear at the bottom instantly but rather move
Because we want the same transition to be run in reverse when changing back from the \e down state to the default state, we set \c reversible to \c true. This is equivalent to writing the two transitions separately.
\code
-<ParallelAnimation>
- <NumericAnimation properties="y" duration="500" easing="easeOutBounce"/>
- <ColorAnimation duration="500"/>
-</ParallelAnimation>
+ParallelAnimation {
+ NumericAnimation {
+ properties: "y"
+ duration: 500
+ easing: "easeOutBounce"
+ }
+ ColorAnimation { duration: 500 }
+}
\endcode
The \c ParallelAnimation element makes sure that the two animations (color and position) will start at the same time. We could also run them one after the other by using \c SequentialAnimation instead.
diff --git a/doc/src/modules.qdoc b/doc/src/modules.qdoc
index 7372994..acfd604 100644
--- a/doc/src/modules.qdoc
+++ b/doc/src/modules.qdoc
@@ -62,6 +62,7 @@
\row \o \l{QtWebKit} \o Classes for displaying and editing Web content
\row \o \l{QtXml} \o Classes for handling XML
\row \o \l{QtXmlPatterns} \o An XQuery & XPath engine for XML and custom data models
+ \row \o \l{QtDeclarative} \o An engine for declaratively building fluid user interfaces.
\row \o \l{Phonon Module}{Phonon} \o Multimedia framework classes
\row \o \l{Qt3Support} \o Qt 3 compatibility classes
\endtable
diff --git a/examples/declarative/slideswitch/Switch.qml b/examples/declarative/slideswitch/Switch.qml
index 5862646..3ae7a0f 100644
--- a/examples/declarative/slideswitch/Switch.qml
+++ b/examples/declarative/slideswitch/Switch.qml
@@ -14,7 +14,6 @@ Item {
Switch.state = "On";
}
function dorelease() {
- print(Knob.x);
if(Knob.x == 1) {
if(Switch.state == "Off")
return;
diff --git a/examples/declarative/tutorials/t1/tutorial1.qml b/examples/declarative/tutorials/helloworld/t1/tutorial1.qml
index ec29f4f..ec29f4f 100644
--- a/examples/declarative/tutorials/t1/tutorial1.qml
+++ b/examples/declarative/tutorials/helloworld/t1/tutorial1.qml
diff --git a/examples/declarative/tutorials/t3/Cell.qml b/examples/declarative/tutorials/helloworld/t2/Cell.qml
index bd5bbe7..bd5bbe7 100644
--- a/examples/declarative/tutorials/t3/Cell.qml
+++ b/examples/declarative/tutorials/helloworld/t2/Cell.qml
diff --git a/examples/declarative/tutorials/helloworld/t2/tutorial2.qml b/examples/declarative/tutorials/helloworld/t2/tutorial2.qml
new file mode 100644
index 0000000..4630435
--- /dev/null
+++ b/examples/declarative/tutorials/helloworld/t2/tutorial2.qml
@@ -0,0 +1,27 @@
+Rect {
+ id: Page
+ width: 480
+ height: 200
+ color: "white"
+ Text {
+ id: HelloText
+ text: "Hello world!"
+ font.size: 24
+ font.bold: true
+ y: 30
+ anchors.horizontalCenter: Page.horizontalCenter
+ }
+ GridLayout {
+ id: ColorPicker
+ x: 0
+ anchors.bottom: Page.bottom
+ width: 120; height: 50
+ rows: 2; columns: 3
+ Cell { color: "#ff0000" }
+ Cell { color: "#00ff00" }
+ Cell { color: "#0000ff" }
+ Cell { color: "#ffff00" }
+ Cell { color: "#00ffff" }
+ Cell { color: "#ff00ff" }
+ }
+}
diff --git a/examples/declarative/tutorials/t2/Cell.qml b/examples/declarative/tutorials/helloworld/t3/Cell.qml
index bd5bbe7..bd5bbe7 100644
--- a/examples/declarative/tutorials/t2/Cell.qml
+++ b/examples/declarative/tutorials/helloworld/t3/Cell.qml
diff --git a/examples/declarative/tutorials/t3/tutorial3.qml b/examples/declarative/tutorials/helloworld/t3/tutorial3.qml
index 8e2b697..3ca7a2f 100644
--- a/examples/declarative/tutorials/t3/tutorial3.qml
+++ b/examples/declarative/tutorials/helloworld/t3/tutorial3.qml
@@ -37,42 +37,23 @@ Rect {
duration: 500
easing: "easeOutBounce"
}
- ColorAnimation {
- duration: 500
- }
+ ColorAnimation { duration: 500 }
}
}
]
}
- MouseRegion {
- id: MouseRegion
- anchors.fill: HelloText
- }
+ MouseRegion { id: MouseRegion; anchors.fill: HelloText }
GridLayout {
id: ColorPicker
x: 0
anchors.bottom: Page.bottom
- width: 120
- height: 50
- columns: 3
- rows: 2
- Cell {
- color: "#ff0000"
- }
- Cell {
- color: "#00ff00"
- }
- Cell {
- color: "#0000ff"
- }
- Cell {
- color: "#ffff00"
- }
- Cell {
- color: "#00ffff"
- }
- Cell {
- color: "#ff00ff"
- }
+ width: 120; height: 50
+ rows: 2; columns: 3
+ Cell { color: "#ff0000" }
+ Cell { color: "#00ff00" }
+ Cell { color: "#0000ff" }
+ Cell { color: "#ffff00" }
+ Cell { color: "#00ffff" }
+ Cell { color: "#ff00ff" }
}
}
diff --git a/examples/declarative/tutorials/t2/tutorial2.qml b/examples/declarative/tutorials/t2/tutorial2.qml
deleted file mode 100644
index 08ea9eb..0000000
--- a/examples/declarative/tutorials/t2/tutorial2.qml
+++ /dev/null
@@ -1,41 +0,0 @@
-Rect {
- id: Page
- width: 480
- height: 200
- color: "white"
- Text {
- id: HelloText
- text: "Hello world!"
- font.size: 24
- font.bold: true
- y: 30
- anchors.horizontalCenter: Page.horizontalCenter
- }
- GridLayout {
- id: ColorPicker
- x: 0
- anchors.bottom: Page.bottom
- width: 120
- height: 50
- columns: 3
- rows: 2
- Cell {
- color: "#ff0000"
- }
- Cell {
- color: "#00ff00"
- }
- Cell {
- color: "#0000ff"
- }
- Cell {
- color: "#ffff00"
- }
- Cell {
- color: "#00ffff"
- }
- Cell {
- color: "#ff00ff"
- }
- }
-}
diff --git a/src/declarative/extra/qmlsqlconnection.cpp b/src/declarative/extra/qmlsqlconnection.cpp
index 7f1fec2..a39aa6f 100644
--- a/src/declarative/extra/qmlsqlconnection.cpp
+++ b/src/declarative/extra/qmlsqlconnection.cpp
@@ -67,6 +67,26 @@ public:
/*!
\qmlclass SqlConnection QmlSqlConnection
\brief The SqlConnection element describes a connection to an SQL database.
+
+ The SqlConnection element works in a similar way to
+ QSqlDatabase::addDatabase(). It allows setting the database properties
+ such that the connection does not need to be set up in C++ code.
+ It differs from QSqlDatabase::addDatabase() in that it will automatically
+ open the database.
+
+ The database can then either be used from an SqlQuery element using its id
+ as a bind, or using its name. If the database is set up externally to
+ Qml the query should connect using its name.
+
+ \qml
+ <SqlConnection id="myConnection">
+ <name>qmlConnection</name>
+ <driver>QSQLITE</driver>
+ <databaseName>"mydb.sqlite"</databaseName>
+ </SqlConnection>
+ <SqlQuery id="listmodel" connection="{myConnection}">SELECT * FROM mytable</SqlQuery>
+ <SqlQuery id="othermodel" connection="qmlConnection">SELECT * FROM myothertable</SqlQuery>
+ \endqml
*/
/*!
@@ -142,32 +162,9 @@ public:
*/
/*!
+ \internal
\class QmlSqlConnection
\brief The QmlSqlConnection class manages a connection to an SQL database.
-
- \qmltext
-
- The SqlConnection element works in a similar way to
- QSqlDatabase::addDatabase(). It allows setting the database properties
- such that the connection does not need to be set up in C++ code.
- It differs from QSqlDatabase::addDatabase() in that it will automatically
- open the database.
-
- The database can then either be used from an SqlQuery element using its id
- as a bind, or using its name. If the database is set up externally to
- Qml the query should connect using its name.
-
- \qml
- <SqlConnection id="myConnection">
- <name>qmlConnection</name>
- <driver>QSQLITE</driver>
- <databaseName>"mydb.sqlite"</databaseName>
- </SqlConnection>
- <SqlQuery id="listmodel" connection="{myConnection}">SELECT * FROM mytable</SqlQuery>
- <SqlQuery id="othermodel" connection="qmlConnection">SELECT * FROM myothertable</SqlQuery>
- \endqml
-
- \endqmltext
*/
/*!
diff --git a/src/declarative/extra/qmlsqlquery.cpp b/src/declarative/extra/qmlsqlquery.cpp
index 39f4c1e..70b3bdd 100644
--- a/src/declarative/extra/qmlsqlquery.cpp
+++ b/src/declarative/extra/qmlsqlquery.cpp
@@ -67,16 +67,8 @@ public:
/*!
\qmlclass SqlBind QmlSqlBind
- \brief the SqlBind element specifies a value binding for an SqlQuery element.
-*/
+ \brief The SqlBind element specifies a value binding for an SqlQuery element.
-/*!
- \class QmlSqlBind
- \brief The QmlSqlBind class specifies a value binding for a QmlSqlQuery.
-
- \qmltext
-
- \qml
By using bindings its possible to cause a SqlQuery to update itself
when values bound through the SqlBind change. Hence in the example
below the results for the SqlQuery will change as searchText changes.
@@ -84,6 +76,7 @@ public:
If the query is not a SELECT statement, the effects of the bound
values will only apply when the SqlQuery exec() slot is called.
+ \qml
<SqlQuery>
SELECT * FROM mytable WHERE name LIKE :value
<bindings>
@@ -97,7 +90,12 @@ public:
</bindings>
<SqlQuery>
\endqml
- \endqmltext
+*/
+
+/*!
+ \internal
+ \class QmlSqlBind
+ \brief The QmlSqlBind class specifies a value binding for a QmlSqlQuery.
*/
/*!
@@ -235,13 +233,7 @@ public:
/*!
\qmlclass SqlQuery QmlSqlQuery
\brief The SqlQuery element describes a query into an SQL database.
-*/
-
-/*
- \class QmlSqlQuery
- \brief the QmlSqlQuery class manages a query into an SQL database.
- \qmltext
The SqlQuery element has three parts. The first is the query itself,
which can either be specified using the query property or by the
default text for the element. The second specifies the connection
@@ -256,11 +248,11 @@ public:
the query.
If the query is a select statement it can be used as a model for a ListView.
- The roles will be the columns of the result set. Use the SQL AS keyword
+ The roles will be the columns of the result set. Use the SQL AS keyword
in the query if you want to override the column names from that of the
table selected. You should also use the AS keyword if there is no
appropriate table column name for the result column.
-
+
\qml
<SqlQuery connection="{qmlConnectionId}" query="DELETE FROM mytable"/>
<SqlQuery connection="connectionName">
@@ -268,7 +260,11 @@ public:
</SqlQuery>
<SqlQuery>SELECT id AS recordId, (firstName || ' ' || lastName) AS fullName FROM mytable</SqlQuery>
\endqml
- \endqmltext
+*/
+
+/*
+ \class QmlSqlQuery
+ \brief the QmlSqlQuery class manages a query into an SQL database.
*/
/*!
diff --git a/src/declarative/fx/qfximageitem.cpp b/src/declarative/fx/qfximageitem.cpp
index 52ab009..d751845 100644
--- a/src/declarative/fx/qfximageitem.cpp
+++ b/src/declarative/fx/qfximageitem.cpp
@@ -58,10 +58,10 @@ QT_BEGIN_NAMESPACE
/*!
\class QFxImageItem
- \brief The QFxImageItem class is an abstract base class for QFxView items that render using QPainter.
+ \brief The QFxImageItem class is an abstract base class for QFxView items that want cached painting.
\ingroup group_coreitems
- This is a convenience class allowing easy use of a QPainter within a custom
+ This is a convenience class allowing easy use of cached painting within a custom
item. The contents of the item are are cached behind the scenes.
The dirtyCache() function should be called if the contents change to
ensure the cache is refreshed the next time painting occurs.
diff --git a/src/declarative/fx/qfxpainted.cpp b/src/declarative/fx/qfxpainted.cpp
index 7c88ce3..68918c3 100644
--- a/src/declarative/fx/qfxpainted.cpp
+++ b/src/declarative/fx/qfxpainted.cpp
@@ -45,12 +45,13 @@
QT_BEGIN_NAMESPACE
/*!
+ \internal
\class QFxPainted
- \brief The QFxPainted class is an abstract base class for QFxView items that paint using QPainter.
+ \brief The QFxPainted class is an abstract base class for QFxView items that want cached painting.
\ingroup group_coreitems
- This is a convenience class allowing easy use of QPainter within a custom item.
+ This is a convenience class allowing easy use of cached painting within a custom item.
The contents of the item are cached behind the scenes. Any time you change the contents
you should call markDirty to make sure the cache is refreshed the next time painting occurs.
diff --git a/src/declarative/fx/qfxpainted.h b/src/declarative/fx/qfxpainted.h
index 32f5dcb..1f22414 100644
--- a/src/declarative/fx/qfxpainted.h
+++ b/src/declarative/fx/qfxpainted.h
@@ -44,12 +44,15 @@
#include <qfxitem.h>
-
QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
QT_MODULE(Declarative)
+/*
+WARNING: INTENDED TO MERGE WITH QFxImageItem
+*/
+
class QFxPaintedPrivate;
class Q_DECLARATIVE_EXPORT QFxPainted : public QFxItem
{
diff --git a/src/declarative/fx/qfxwebview.cpp b/src/declarative/fx/qfxwebview.cpp
index 97cc6a3..84e3bc2 100644
--- a/src/declarative/fx/qfxwebview.cpp
+++ b/src/declarative/fx/qfxwebview.cpp
@@ -140,7 +140,7 @@ public:
bool localStorageDatabaseEnabled() const { return s->testAttribute(QWebSettings::LocalStorageDatabaseEnabled); }
void setLocalStorageDatabaseEnabled(bool on) { s->setAttribute(QWebSettings::LocalStorageDatabaseEnabled, on); }
- QString userStyleSheetUrl() const { return s->userStyleSheetUrl(); }
+ QString userStyleSheetUrl() const { return s->userStyleSheetUrl().toString(); }
void setUserStyleSheetUrl(const QString& url) { s->setUserStyleSheetUrl(url); }
QWebSettings *s;
diff --git a/src/declarative/opengl/gltexture.cpp b/src/declarative/opengl/gltexture.cpp
index 6d737ad..199b362 100644
--- a/src/declarative/opengl/gltexture.cpp
+++ b/src/declarative/opengl/gltexture.cpp
@@ -45,6 +45,7 @@
QT_BEGIN_NAMESPACE
/*!
+ \internal
\class GLTexture
\brief The GLTexture class simplifies the use of OpenGL textures.
*/
diff --git a/src/declarative/qml/parser/javascript.g b/src/declarative/qml/parser/javascript.g
index 59ab529..a318ccb 100644
--- a/src/declarative/qml/parser/javascript.g
+++ b/src/declarative/qml/parser/javascript.g
@@ -45,7 +45,7 @@
%parser JavaScriptGrammar
%decl javascriptparser_p.h
%impl javascriptparser.cpp
-%expect 2
+%expect 8
%expect-rr 1
%token T_AND "&" T_AND_AND "&&" T_AND_EQ "&="
@@ -70,6 +70,7 @@
%token T_REMAINDER_EQ "%=" T_RETURN "return" T_RPAREN ")"
%token T_SEMICOLON ";" T_AUTOMATIC_SEMICOLON T_STAR "*"
%token T_STAR_EQ "*=" T_STRING_LITERAL "string literal"
+%token T_PROPERTY "property" T_SIGNAL "signal"
%token T_SWITCH "switch" T_THIS "this" T_THROW "throw"
%token T_TILDE "~" T_TRY "try" T_TYPEOF "typeof"
%token T_VAR "var" T_VOID "void" T_WHILE "while"
@@ -645,50 +646,64 @@ case $rule_number: {
} break;
./
-UiObjectMember: T_PUBLIC T_IDENTIFIER T_IDENTIFIER ;
+UiPropertyType: T_VAR ;
+/.
+case $rule_number:
+./
+UiPropertyType: T_RESERVED_WORD ;
+/.
+case $rule_number: {
+ sym(1).sval = driver->intern(lexer->characterBuffer(), lexer->characterCount());
+ break;
+}
+./
+
+UiPropertyType: T_IDENTIFIER ;
+
+UiObjectMember: T_PROPERTY UiPropertyType T_IDENTIFIER ;
/.
case $rule_number: {
AST::UiPublicMember *node = makeAstNode<AST::UiPublicMember> (driver->nodePool(), sym(2).sval, sym(3).sval);
- node->publicToken = loc(1);
- node->attributeTypeToken = loc(2);
+ node->propertyToken = loc(1);
+ node->typeToken = loc(2);
node->identifierToken = loc(3);
sym(1).Node = node;
} break;
./
-UiObjectMember: T_PUBLIC T_DEFAULT T_IDENTIFIER T_IDENTIFIER ;
+UiObjectMember: T_DEFAULT T_PROPERTY UiPropertyType T_IDENTIFIER ;
/.
case $rule_number: {
AST::UiPublicMember *node = makeAstNode<AST::UiPublicMember> (driver->nodePool(), sym(3).sval, sym(4).sval);
node->isDefaultMember = true;
- node->publicToken = loc(1);
- node->attributeTypeToken = loc(3);
+ node->propertyToken = loc(1);
+ node->typeToken = loc(3);
node->identifierToken = loc(4);
sym(1).Node = node;
} break;
./
-UiObjectMember: T_PUBLIC T_IDENTIFIER T_IDENTIFIER T_COLON Expression ;
+UiObjectMember: T_PROPERTY UiPropertyType T_IDENTIFIER T_COLON Expression ;
/.
case $rule_number: {
AST::UiPublicMember *node = makeAstNode<AST::UiPublicMember> (driver->nodePool(), sym(2).sval, sym(3).sval,
sym(5).Expression);
- node->publicToken = loc(1);
- node->attributeTypeToken = loc(2);
+ node->propertyToken = loc(1);
+ node->typeToken = loc(2);
node->identifierToken = loc(3);
node->colonToken = loc(4);
sym(1).Node = node;
} break;
./
-UiObjectMember: T_PUBLIC T_DEFAULT T_IDENTIFIER T_IDENTIFIER T_COLON Expression ;
+UiObjectMember: T_DEFAULT T_PROPERTY UiPropertyType T_IDENTIFIER T_COLON Expression ;
/.
case $rule_number: {
AST::UiPublicMember *node = makeAstNode<AST::UiPublicMember> (driver->nodePool(), sym(3).sval, sym(4).sval,
sym(6).Expression);
node->isDefaultMember = true;
- node->publicToken = loc(1);
- node->attributeTypeToken = loc(3);
+ node->propertyToken = loc(1);
+ node->typeToken = loc(3);
node->identifierToken = loc(4);
node->colonToken = loc(5);
sym(1).Node = node;
@@ -723,7 +738,20 @@ case $rule_number:
} break;
./
-UiQualifiedId: T_IDENTIFIER ;
+JsIdentifier: T_IDENTIFIER;
+JsIdentifier: T_PROPERTY ;
+/.
+case $rule_number:
+./
+JsIdentifier: T_SIGNAL ;
+/.
+case $rule_number: {
+ sym(1).sval = driver->intern(lexer->characterBuffer(), lexer->characterCount());
+ break;
+}
+./
+
+UiQualifiedId: JsIdentifier ;
/.
case $rule_number: {
AST::UiQualifiedId *node = makeAstNode<AST::UiQualifiedId> (driver->nodePool(), sym(1).sval);
@@ -732,7 +760,7 @@ case $rule_number: {
} break;
./
-UiQualifiedId: UiQualifiedId T_DOT T_IDENTIFIER ;
+UiQualifiedId: UiQualifiedId T_DOT JsIdentifier ;
/.
case $rule_number: {
AST::UiQualifiedId *node = makeAstNode<AST::UiQualifiedId> (driver->nodePool(), sym(1).UiQualifiedId, sym(3).sval);
@@ -745,6 +773,7 @@ case $rule_number: {
--------------------------------------------------------------------------------------------------------
-- Expressions
--------------------------------------------------------------------------------------------------------
+
PrimaryExpression: T_THIS ;
/.
case $rule_number: {
@@ -754,7 +783,7 @@ case $rule_number: {
} break;
./
-PrimaryExpression: T_IDENTIFIER ;
+PrimaryExpression: JsIdentifier ;
/.
case $rule_number: {
AST::IdentifierExpression *node = makeAstNode<AST::IdentifierExpression> (driver->nodePool(), sym(1).sval);
@@ -996,6 +1025,16 @@ case $rule_number: {
} break;
./
+PropertyName: T_SIGNAL ;
+PropertyName: T_PROPERTY ;
+/.
+case $rule_number: {
+ AST::IdentifierPropertyName *node = makeAstNode<AST::IdentifierPropertyName> (driver->nodePool(), driver->intern(lexer->characterBuffer(), lexer->characterCount()));
+ node->propertyNameToken = loc(1);
+ sym(1).Node = node;
+} break;
+./
+
PropertyName: T_STRING_LITERAL ;
/.
case $rule_number: {
@@ -1151,7 +1190,7 @@ case $rule_number:
} break;
./
-PropertyIdentifier: T_IDENTIFIER ;
+PropertyIdentifier: JsIdentifier ;
PropertyIdentifier: ReservedIdentifier ;
MemberExpression: PrimaryExpression ;
@@ -2064,7 +2103,7 @@ case $rule_number: {
} break;
./
-VariableDeclaration: T_IDENTIFIER InitialiserOpt ;
+VariableDeclaration: JsIdentifier InitialiserOpt ;
/.
case $rule_number: {
AST::VariableDeclaration *node = makeAstNode<AST::VariableDeclaration> (driver->nodePool(), sym(1).sval, sym(2).Expression);
@@ -2073,7 +2112,7 @@ case $rule_number: {
} break;
./
-VariableDeclarationNotIn: T_IDENTIFIER InitialiserNotInOpt ;
+VariableDeclarationNotIn: JsIdentifier InitialiserNotInOpt ;
/.
case $rule_number: {
AST::VariableDeclaration *node = makeAstNode<AST::VariableDeclaration> (driver->nodePool(), sym(1).sval, sym(2).Expression);
@@ -2252,8 +2291,8 @@ case $rule_number: {
} break;
./
-ContinueStatement: T_CONTINUE T_IDENTIFIER T_AUTOMATIC_SEMICOLON ; -- automatic semicolon
-ContinueStatement: T_CONTINUE T_IDENTIFIER T_SEMICOLON ;
+ContinueStatement: T_CONTINUE JsIdentifier T_AUTOMATIC_SEMICOLON ; -- automatic semicolon
+ContinueStatement: T_CONTINUE JsIdentifier T_SEMICOLON ;
/.
case $rule_number: {
AST::ContinueStatement *node = makeAstNode<AST::ContinueStatement> (driver->nodePool(), sym(2).sval);
@@ -2275,8 +2314,8 @@ case $rule_number: {
} break;
./
-BreakStatement: T_BREAK T_IDENTIFIER T_AUTOMATIC_SEMICOLON ; -- automatic semicolon
-BreakStatement: T_BREAK T_IDENTIFIER T_SEMICOLON ;
+BreakStatement: T_BREAK JsIdentifier T_AUTOMATIC_SEMICOLON ; -- automatic semicolon
+BreakStatement: T_BREAK JsIdentifier T_SEMICOLON ;
/.
case $rule_number: {
AST::BreakStatement *node = makeAstNode<AST::BreakStatement> (driver->nodePool(), sym(2).sval);
@@ -2388,6 +2427,17 @@ case $rule_number: {
} break;
./
+LabelledStatement: T_SIGNAL T_COLON Statement ;
+LabelledStatement: T_PROPERTY T_COLON Statement ;
+/.
+case $rule_number: {
+ AST::LabelledStatement *node = makeAstNode<AST::LabelledStatement> (driver->nodePool(), driver->intern(lexer->characterBuffer(), lexer->characterCount()), sym(3).Statement);
+ node->identifierToken = loc(1);
+ node->colonToken = loc(2);
+ sym(1).Node = node;
+} break;
+./
+
LabelledStatement: T_IDENTIFIER T_COLON Statement ;
/.
case $rule_number: {
@@ -2436,7 +2486,7 @@ case $rule_number: {
} break;
./
-Catch: T_CATCH T_LPAREN T_IDENTIFIER T_RPAREN Block ;
+Catch: T_CATCH T_LPAREN JsIdentifier T_RPAREN Block ;
/.
case $rule_number: {
AST::Catch *node = makeAstNode<AST::Catch> (driver->nodePool(), sym(3).sval, sym(5).Block);
@@ -2468,6 +2518,21 @@ case $rule_number: {
} break;
./
+FunctionDeclaration: T_FUNCTION T_SIGNAL T_LPAREN FormalParameterListOpt T_RPAREN T_LBRACE FunctionBodyOpt T_RBRACE ;
+FunctionDeclaration: T_FUNCTION T_PROPERTY T_LPAREN FormalParameterListOpt T_RPAREN T_LBRACE FunctionBodyOpt T_RBRACE ;
+/.
+case $rule_number: {
+ AST::FunctionDeclaration *node = makeAstNode<AST::FunctionDeclaration> (driver->nodePool(), driver->intern(lexer->characterBuffer(), lexer->characterCount()), sym(4).FormalParameterList, sym(7).FunctionBody);
+ node->functionToken = loc(1);
+ node->identifierToken = loc(2);
+ node->lparenToken = loc(3);
+ node->rparenToken = loc(5);
+ node->lbraceToken = loc(6);
+ node->rbraceToken = loc(8);
+ sym(1).Node = node;
+} break;
+./
+
FunctionDeclaration: T_FUNCTION T_IDENTIFIER T_LPAREN FormalParameterListOpt T_RPAREN T_LBRACE FunctionBodyOpt T_RBRACE ;
/.
case $rule_number: {
@@ -2497,7 +2562,7 @@ case $rule_number: {
} break;
./
-FormalParameterList: T_IDENTIFIER ;
+FormalParameterList: JsIdentifier ;
/.
case $rule_number: {
AST::FormalParameterList *node = makeAstNode<AST::FormalParameterList> (driver->nodePool(), sym(1).sval);
@@ -2506,7 +2571,7 @@ case $rule_number: {
} break;
./
-FormalParameterList: FormalParameterList T_COMMA T_IDENTIFIER ;
+FormalParameterList: FormalParameterList T_COMMA JsIdentifier ;
/.
case $rule_number: {
AST::FormalParameterList *node = makeAstNode<AST::FormalParameterList> (driver->nodePool(), sym(1).FormalParameterList, sym(3).sval);
@@ -2589,7 +2654,7 @@ case $rule_number: {
} break;
./
-IdentifierOpt: T_IDENTIFIER ;
+IdentifierOpt: JsIdentifier ;
PropertyNameAndValueListOpt: ;
/.
diff --git a/src/declarative/qml/parser/javascriptast_p.h b/src/declarative/qml/parser/javascriptast_p.h
index 4aa89c9..f32a48c 100644
--- a/src/declarative/qml/parser/javascriptast_p.h
+++ b/src/declarative/qml/parser/javascriptast_p.h
@@ -2336,7 +2336,7 @@ public:
{ kind = K; }
virtual SourceLocation firstSourceLocation() const
- { return publicToken; }
+ { return propertyToken; }
virtual SourceLocation lastSourceLocation() const
{
@@ -2346,9 +2346,9 @@ public:
return colonToken;
else if (identifierToken.isValid())
return identifierToken;
- else if (attributeTypeToken.isValid())
- return attributeTypeToken;
- return publicToken;
+ else if (typeToken.isValid())
+ return typeToken;
+ return propertyToken;
}
virtual void accept0(Visitor *visitor);
@@ -2358,8 +2358,8 @@ public:
JavaScriptNameIdImpl *name;
ExpressionNode *expression;
bool isDefaultMember;
- SourceLocation publicToken;
- SourceLocation attributeTypeToken;
+ SourceLocation propertyToken;
+ SourceLocation typeToken;
SourceLocation identifierToken;
SourceLocation colonToken;
};
diff --git a/src/declarative/qml/parser/javascriptgrammar.cpp b/src/declarative/qml/parser/javascriptgrammar.cpp
index 9fceeb8..3fac1ed 100644
--- a/src/declarative/qml/parser/javascriptgrammar.cpp
+++ b/src/declarative/qml/parser/javascriptgrammar.cpp
@@ -49,627 +49,645 @@ const char *const JavaScriptGrammar::spell [] = {
"if", "in", "instanceof", "{", "[", "<=", "(", "<", "<<", "<<=",
"-", "-=", "--", "new", "!", "!=", "!==", "numeric literal", "|", "|=",
"||", "+", "+=", "++", "?", "}", "]", "%", "%=", "return",
- ")", ";", 0, "*", "*=", "string literal", "switch", "this", "throw", "~",
- "try", "typeof", "var", "void", "while", "with", "^", "^=", "null", "true",
- "false", "const", "debugger", "reserved word", "multiline string literal", "public", "import", 0, 0};
+ ")", ";", 0, "*", "*=", "string literal", "property", "signal", "switch", "this",
+ "throw", "~", "try", "typeof", "var", "void", "while", "with", "^", "^=",
+ "null", "true", "false", "const", "debugger", "reserved word", "multiline string literal", "public", "import", 0,
+ 0};
const int JavaScriptGrammar::lhs [] = {
- 89, 90, 90, 93, 93, 94, 94, 92, 91, 91,
- 96, 96, 98, 98, 97, 95, 97, 95, 97, 95,
- 100, 101, 101, 95, 97, 95, 95, 95, 95, 95,
- 95, 95, 99, 99, 99, 99, 106, 106, 106, 106,
- 106, 106, 106, 106, 106, 106, 106, 106, 106, 106,
- 106, 108, 108, 112, 112, 107, 107, 110, 110, 113,
- 113, 113, 113, 114, 114, 114, 114, 114, 114, 114,
- 114, 114, 114, 114, 114, 114, 114, 114, 114, 114,
- 114, 114, 114, 114, 114, 114, 114, 114, 114, 114,
- 114, 114, 114, 114, 115, 115, 116, 116, 116, 116,
- 116, 119, 119, 120, 120, 120, 120, 118, 118, 121,
- 121, 122, 122, 123, 123, 123, 124, 124, 124, 124,
- 124, 124, 124, 124, 124, 124, 125, 125, 125, 125,
- 126, 126, 126, 127, 127, 127, 127, 128, 128, 128,
- 128, 128, 128, 128, 129, 129, 129, 129, 129, 129,
- 130, 130, 130, 130, 130, 131, 131, 131, 131, 131,
- 132, 132, 133, 133, 134, 134, 135, 135, 136, 136,
+ 91, 92, 92, 95, 95, 96, 96, 94, 93, 93,
+ 98, 98, 100, 100, 99, 97, 99, 97, 99, 97,
+ 102, 103, 103, 97, 99, 97, 105, 105, 105, 97,
+ 97, 97, 97, 97, 97, 101, 101, 109, 109, 109,
+ 101, 101, 110, 110, 110, 110, 110, 110, 110, 110,
+ 110, 110, 110, 110, 110, 110, 110, 112, 112, 116,
+ 116, 111, 111, 114, 114, 117, 117, 117, 117, 117,
+ 117, 118, 118, 118, 118, 118, 118, 118, 118, 118,
+ 118, 118, 118, 118, 118, 118, 118, 118, 118, 118,
+ 118, 118, 118, 118, 118, 118, 118, 118, 118, 118,
+ 118, 118, 119, 119, 120, 120, 120, 120, 120, 123,
+ 123, 124, 124, 124, 124, 122, 122, 125, 125, 126,
+ 126, 127, 127, 127, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 129, 129, 129, 129, 130, 130,
+ 130, 131, 131, 131, 131, 132, 132, 132, 132, 132,
+ 132, 132, 133, 133, 133, 133, 133, 133, 134, 134,
+ 134, 134, 134, 135, 135, 135, 135, 135, 136, 136,
137, 137, 138, 138, 139, 139, 140, 140, 141, 141,
- 142, 142, 143, 143, 111, 111, 144, 144, 145, 145,
- 145, 145, 145, 145, 145, 145, 145, 145, 145, 145,
- 103, 103, 146, 146, 147, 147, 148, 148, 102, 102,
- 102, 102, 102, 102, 102, 102, 102, 102, 102, 102,
- 102, 102, 102, 149, 164, 164, 163, 163, 105, 105,
- 165, 165, 166, 166, 168, 168, 167, 169, 172, 170,
- 170, 173, 171, 171, 150, 151, 151, 152, 152, 153,
- 153, 153, 153, 153, 153, 153, 154, 154, 154, 154,
- 155, 155, 155, 155, 156, 156, 157, 159, 174, 174,
- 177, 177, 175, 175, 178, 176, 158, 160, 160, 161,
- 161, 161, 179, 180, 162, 162, 104, 117, 184, 184,
- 181, 181, 182, 182, 185, 186, 186, 187, 187, 183,
- 183, 109, 109, 188};
+ 142, 142, 143, 143, 144, 144, 145, 145, 146, 146,
+ 147, 147, 115, 115, 148, 148, 149, 149, 149, 149,
+ 149, 149, 149, 149, 149, 149, 149, 149, 106, 106,
+ 150, 150, 151, 151, 152, 152, 104, 104, 104, 104,
+ 104, 104, 104, 104, 104, 104, 104, 104, 104, 104,
+ 104, 153, 168, 168, 167, 167, 108, 108, 169, 169,
+ 170, 170, 172, 172, 171, 173, 176, 174, 174, 177,
+ 175, 175, 154, 155, 155, 156, 156, 157, 157, 157,
+ 157, 157, 157, 157, 158, 158, 158, 158, 159, 159,
+ 159, 159, 160, 160, 161, 163, 178, 178, 181, 181,
+ 179, 179, 182, 180, 162, 162, 162, 164, 164, 165,
+ 165, 165, 183, 184, 166, 166, 107, 107, 107, 121,
+ 188, 188, 185, 185, 186, 186, 189, 190, 190, 191,
+ 191, 187, 187, 113, 113, 192};
const int JavaScriptGrammar:: rhs[] = {
2, 1, 1, 1, 2, 3, 3, 0, 1, 2,
1, 3, 2, 3, 4, 4, 2, 2, 5, 5,
- 1, 2, 2, 3, 3, 3, 3, 4, 5, 6,
- 1, 1, 1, 1, 1, 3, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 3, 3, 5, 3, 4,
- 3, 2, 4, 1, 2, 0, 1, 3, 5, 1,
+ 1, 2, 2, 3, 3, 3, 1, 1, 1, 3,
+ 4, 5, 6, 1, 1, 1, 1, 1, 1, 1,
+ 1, 3, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 3, 3, 5, 3, 4, 3, 2, 4, 1,
+ 2, 0, 1, 3, 5, 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, 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, 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, 3,
- 1, 5, 1, 5, 1, 3, 1, 3, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 3, 0, 1, 1, 3, 0, 1, 1, 1,
+ 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, 3,
+ 0, 1, 1, 3, 0, 1, 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, 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, 8, 8, 1, 3,
- 0, 1, 0, 1, 1, 1, 2, 1, 1, 0,
- 1, 0, 1, 2};
+ 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, 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, 8, 8,
+ 1, 3, 0, 1, 0, 1, 1, 1, 2, 1,
+ 1, 0, 1, 0, 1, 2};
const int JavaScriptGrammar::action_default [] = {
8, 2, 0, 4, 3, 0, 0, 0, 6, 7,
- 5, 31, 231, 0, 35, 0, 33, 34, 232, 9,
- 1, 0, 0, 32, 0, 291, 292, 0, 289, 0,
- 290, 0, 293, 134, 201, 165, 173, 169, 209, 216,
- 113, 185, 215, 223, 211, 161, 0, 212, 294, 0,
- 299, 98, 213, 214, 219, 114, 177, 181, 102, 131,
- 112, 117, 97, 151, 217, 138, 296, 295, 298, 220,
- 0, 0, 0, 0, 44, 45, 0, 41, 0, 300,
- 38, 0, 302, 56, 0, 0, 0, 0, 0, 39,
- 42, 0, 0, 203, 245, 43, 0, 37, 0, 0,
- 40, 0, 0, 0, 0, 0, 221, 222, 127, 210,
- 218, 0, 0, 114, 133, 300, 38, 302, 116, 115,
- 0, 0, 0, 129, 130, 128, 0, 301, 291, 0,
- 0, 293, 0, 288, 0, 303, 0, 63, 64, 65,
- 66, 91, 67, 92, 68, 69, 70, 71, 72, 73,
- 74, 75, 60, 76, 77, 78, 79, 80, 62, 93,
- 81, 61, 82, 83, 84, 85, 86, 87, 88, 89,
- 90, 94, 0, 58, 0, 0, 50, 0, 59, 49,
- 132, 0, 162, 0, 0, 0, 0, 152, 0, 0,
- 0, 0, 0, 0, 142, 0, 0, 0, 136, 137,
- 135, 140, 144, 143, 141, 139, 154, 153, 155, 0,
- 170, 0, 166, 0, 0, 108, 107, 96, 95, 0,
- 0, 106, 202, 109, 0, 110, 0, 111, 105, 246,
- 247, 287, 0, 198, 191, 189, 196, 197, 195, 194,
- 200, 193, 192, 190, 199, 186, 0, 174, 0, 0,
- 178, 0, 0, 182, 0, 0, 108, 100, 0, 99,
- 0, 104, 297, 261, 0, 262, 263, 264, 257, 0,
- 258, 259, 260, 285, 286, 118, 0, 0, 0, 0,
- 0, 250, 251, 207, 205, 167, 175, 171, 187, 163,
- 208, 0, 114, 179, 183, 156, 145, 0, 0, 164,
- 0, 0, 0, 0, 157, 0, 0, 0, 0, 0,
- 149, 147, 150, 148, 146, 159, 158, 160, 0, 172,
- 0, 168, 0, 206, 114, 0, 188, 203, 204, 0,
- 203, 0, 0, 253, 0, 0, 0, 255, 0, 176,
- 0, 0, 180, 0, 0, 184, 243, 0, 235, 244,
- 238, 0, 242, 0, 203, 236, 0, 203, 0, 0,
- 254, 0, 0, 0, 256, 301, 0, 277, 0, 0,
- 0, 249, 0, 248, 225, 228, 0, 64, 91, 67,
- 92, 69, 70, 41, 74, 75, 38, 76, 79, 39,
- 42, 203, 43, 82, 37, 84, 40, 86, 87, 88,
- 89, 90, 94, 226, 224, 102, 103, 108, 0, 101,
- 0, 265, 266, 0, 0, 0, 268, 273, 271, 274,
- 0, 0, 272, 273, 0, 269, 0, 270, 227, 276,
- 0, 227, 275, 0, 278, 279, 0, 227, 280, 281,
- 0, 0, 282, 0, 0, 0, 283, 284, 120, 119,
- 0, 0, 0, 252, 0, 0, 0, 267, 0, 57,
- 0, 54, 56, 47, 0, 53, 48, 55, 52, 46,
- 0, 51, 124, 122, 126, 123, 121, 125, 0, 18,
- 13, 0, 14, 10, 0, 0, 0, 28, 0, 30,
- 27, 0, 29, 0, 0, 26, 38, 56, 21, 0,
- 24, 16, 35, 0, 11, 0, 17, 0, 20, 12,
- 0, 25, 38, 56, 15, 0, 19, 22, 23, 36,
- 240, 233, 0, 241, 237, 0, 239, 229, 0, 230,
- 234, 304};
+ 5, 34, 41, 239, 0, 0, 38, 39, 36, 37,
+ 40, 240, 9, 1, 0, 0, 35, 0, 29, 28,
+ 27, 0, 31, 0, 142, 209, 173, 181, 177, 121,
+ 193, 169, 33, 106, 44, 122, 185, 189, 110, 139,
+ 120, 125, 105, 159, 146, 0, 50, 51, 47, 312,
+ 38, 314, 62, 0, 0, 0, 0, 0, 45, 48,
+ 0, 0, 39, 49, 43, 0, 46, 0, 0, 135,
+ 0, 0, 122, 141, 124, 123, 0, 0, 0, 137,
+ 138, 136, 140, 0, 170, 0, 0, 0, 0, 160,
+ 0, 0, 0, 0, 0, 0, 150, 0, 0, 0,
+ 144, 145, 143, 148, 152, 151, 149, 147, 162, 161,
+ 163, 0, 178, 0, 174, 0, 0, 116, 103, 115,
+ 104, 72, 73, 74, 99, 75, 100, 76, 77, 78,
+ 79, 80, 81, 82, 83, 84, 85, 86, 87, 88,
+ 101, 89, 90, 91, 92, 93, 94, 95, 96, 97,
+ 98, 102, 0, 0, 114, 210, 117, 0, 118, 0,
+ 119, 113, 0, 206, 199, 197, 204, 205, 203, 202,
+ 208, 201, 200, 198, 207, 194, 0, 182, 0, 0,
+ 186, 0, 0, 190, 0, 0, 116, 108, 0, 107,
+ 0, 112, 126, 0, 313, 303, 304, 0, 301, 0,
+ 302, 0, 305, 217, 224, 223, 231, 219, 0, 220,
+ 306, 0, 311, 221, 222, 227, 225, 308, 307, 310,
+ 228, 0, 0, 0, 0, 0, 312, 38, 0, 314,
+ 39, 211, 253, 40, 0, 0, 0, 0, 0, 229,
+ 230, 218, 226, 254, 255, 300, 309, 0, 269, 270,
+ 271, 272, 0, 265, 266, 267, 268, 295, 296, 0,
+ 0, 0, 0, 0, 258, 259, 215, 213, 175, 183,
+ 179, 195, 171, 216, 0, 122, 187, 191, 164, 153,
+ 0, 0, 172, 0, 0, 0, 0, 165, 0, 0,
+ 0, 0, 0, 157, 155, 158, 156, 154, 167, 166,
+ 168, 0, 180, 0, 176, 0, 214, 122, 0, 196,
+ 211, 212, 0, 211, 0, 0, 261, 0, 0, 0,
+ 263, 0, 184, 0, 0, 188, 0, 0, 192, 251,
+ 0, 243, 252, 246, 0, 250, 0, 211, 244, 0,
+ 211, 0, 0, 262, 0, 0, 0, 264, 38, 39,
+ 40, 303, 0, 0, 305, 0, 299, 303, 0, 0,
+ 305, 0, 298, 303, 0, 0, 305, 0, 297, 0,
+ 287, 0, 0, 0, 257, 0, 256, 0, 315, 0,
+ 71, 233, 236, 0, 72, 239, 75, 100, 77, 78,
+ 47, 82, 83, 38, 84, 87, 45, 48, 39, 211,
+ 40, 49, 90, 43, 92, 46, 94, 95, 240, 97,
+ 98, 102, 0, 64, 0, 0, 66, 70, 68, 56,
+ 67, 69, 0, 65, 55, 234, 232, 110, 111, 116,
+ 0, 109, 0, 286, 0, 273, 274, 0, 285, 0,
+ 0, 0, 276, 281, 279, 282, 0, 0, 280, 281,
+ 0, 277, 0, 278, 235, 284, 0, 235, 283, 0,
+ 288, 289, 0, 235, 290, 291, 0, 0, 292, 0,
+ 0, 0, 293, 294, 128, 127, 0, 0, 0, 260,
+ 0, 0, 0, 275, 0, 63, 0, 60, 62, 53,
+ 0, 59, 54, 61, 58, 52, 0, 57, 132, 130,
+ 134, 131, 129, 133, 0, 0, 0, 0, 18, 13,
+ 0, 14, 10, 0, 30, 0, 32, 0, 0, 26,
+ 38, 62, 21, 0, 24, 16, 38, 0, 11, 0,
+ 17, 0, 20, 12, 0, 25, 38, 62, 15, 0,
+ 19, 22, 23, 42, 248, 241, 0, 249, 245, 0,
+ 247, 237, 0, 238, 242, 316};
const int JavaScriptGrammar::goto_default [] = {
- 6, 5, 20, 1, 4, 3, 19, 503, 504, 479,
- 21, 499, 500, 374, 46, 11, 109, 62, 460, 458,
- 136, 135, 34, 459, 134, 137, 216, 58, 51, 224,
- 60, 40, 223, 55, 61, 108, 59, 33, 65, 63,
- 295, 45, 289, 35, 285, 37, 287, 36, 286, 56,
- 293, 57, 294, 41, 288, 284, 325, 410, 290, 291,
- 38, 44, 47, 52, 53, 42, 39, 64, 110, 54,
- 69, 106, 107, 43, 376, 375, 22, 522, 521, 347,
- 348, 524, 350, 523, 349, 416, 420, 423, 419, 418,
- 438, 439, 27, 49, 126, 26, 48, 67, 66, 0};
+ 6, 5, 23, 1, 4, 3, 22, 537, 538, 518,
+ 24, 533, 534, 229, 523, 218, 222, 251, 44, 52,
+ 496, 494, 389, 388, 35, 495, 387, 390, 129, 48,
+ 43, 167, 50, 39, 166, 45, 51, 79, 49, 34,
+ 54, 53, 288, 41, 282, 36, 278, 38, 280, 37,
+ 279, 46, 286, 47, 287, 40, 281, 277, 318, 444,
+ 283, 284, 213, 217, 219, 223, 224, 215, 214, 226,
+ 252, 225, 230, 249, 250, 216, 393, 392, 25, 556,
+ 555, 340, 341, 558, 343, 557, 342, 452, 456, 459,
+ 455, 454, 474, 475, 207, 221, 203, 206, 220, 228,
+ 227, 0};
const int JavaScriptGrammar::action_index [] = {
- 67, -89, 30, -89, 67, 346, 173, 79, -89, -89,
- -89, -89, -89, 32, 33, 90, -89, -89, -89, -89,
- 336, 106, 45, -89, 55, 65, 85, 66, -89, 70,
- -89, 59, 1539, 111, -89, 11, -34, -17, -89, -89,
- 188, -89, -89, -89, -89, 269, 150, -89, -89, -51,
- -89, -89, -89, -89, -89, 549, 41, 146, 247, 158,
- -89, -89, -89, 329, -89, 311, -89, 1539, -89, -89,
- 196, 191, 118, 713, -89, -89, 1454, -89, -23, 16,
- 83, 61, 1709, 78, 713, 713, 713, 452, 713, -89,
- -89, 713, 713, 713, -89, -89, 47, -89, 713, 713,
- -89, 37, 713, 713, 73, 53, -89, -89, -89, -89,
- -89, 713, 713, 76, 193, 46, -89, 1199, -89, -89,
- 713, 713, 713, -89, -89, -89, -25, -89, -13, -52,
- -9, 1539, 60, -89, 77, 80, 17, -89, -89, -89,
- -89, -89, -89, -89, -89, -89, -89, -89, -89, -89,
- -89, -89, -89, -89, -89, -89, -89, -89, -89, -89,
- -89, -89, -89, -89, -89, -89, -89, -89, -89, -89,
- -89, -89, 713, -89, 1284, 21, -89, 713, -89, -89,
- 211, 713, 267, 713, 713, 713, 713, 319, 713, 713,
- 713, 713, 713, 713, 201, 713, 713, 713, 96, 91,
- 110, 189, 242, 246, 238, 234, 359, 339, 349, 713,
- 63, 713, 68, 1114, 713, 713, -89, -89, -89, 104,
- 713, -89, -89, 69, 18, -89, 713, -89, -89, -89,
- -89, -89, 713, -89, -89, -89, -89, -89, -89, -89,
- -89, -89, -89, -89, -89, -89, 713, 48, 713, 713,
- 74, 64, 713, -89, 1114, 713, 713, -89, 116, -89,
- 2, -89, -89, -89, 87, -89, -89, -89, -89, 113,
- -89, -89, -89, -89, -89, -89, 56, 62, 713, 103,
- 130, -89, -89, 791, -89, 84, -38, -67, -89, 260,
- 10, -41, 635, 20, 117, 302, 239, -10, 713, 271,
- 713, 713, 713, 713, 272, 713, 713, 713, 713, 713,
- 208, 222, 205, 213, 217, 287, 377, 377, 713, -73,
- 713, 84, 713, -89, 463, 713, -89, 713, 42, -15,
- 713, -16, 1454, -89, 713, 144, 1454, -89, 713, 6,
- 713, 713, 54, 51, 713, -89, 38, 95, 26, -89,
- -89, 713, -89, -2, 713, -89, -31, 713, -37, 1454,
- -89, 713, 99, 1454, -89, 4, 1454, -89, 713, 97,
- 1454, 22, 1454, -89, -89, 1454, 49, 140, 5, 147,
- 82, 713, 1454, 29, 1, 81, 34, 3, 538, 28,
- 25, 873, 19, -3, 24, 713, 35, 14, 713, 23,
- 713, 15, 27, -89, -89, 163, -89, 713, -7, -89,
- 128, -89, -89, 713, 138, -8, -89, 44, -89, 43,
- 127, 713, -89, 12, -1, -89, -50, -89, 1454, -89,
- 115, 1454, -89, 175, -89, -89, 108, 1454, -18, -89,
- -29, -4, -89, -28, -60, -4, -89, -89, -89, -89,
- 713, 124, 1454, -89, 713, 125, 1454, -89, 112, 13,
- 1029, -89, 7, -89, 951, -89, -89, -89, -89, -89,
- 126, -89, -89, -89, -89, -89, -89, -89, 356, -89,
- -89, 375, -89, -89, 39, 31, 36, 57, 713, 71,
- 75, 713, 72, 1624, 52, -89, 131, 274, -89, 133,
- -89, -89, 40, 137, -89, 101, -89, 148, -89, -89,
- 1369, -89, 94, 262, -89, 98, -89, -89, -89, -89,
- 50, -89, 157, -89, -89, 713, -89, -89, 58, -89,
- -89, -89,
+ -12, -91, 60, -91, 63, 378, 95, 113, -91, -91,
+ -91, -91, -91, -91, 73, 162, 72, 166, -91, -91,
+ -91, -91, -91, 420, 131, 160, -91, 161, -91, -91,
+ -91, 44, 75, 700, 129, -91, 87, 52, 49, 182,
+ -91, 300, 71, -91, -91, 541, 76, 91, 259, 227,
+ -91, -91, -91, 360, 317, 700, -91, -91, -91, 170,
+ -91, 1198, 66, 700, 700, 700, 620, 700, -91, -91,
+ 700, 700, -91, -91, -91, 700, -91, 700, 700, -91,
+ 700, 700, 106, 175, -91, -91, 700, 700, 700, -91,
+ -91, -91, 210, 700, 283, 700, 700, 700, 700, 453,
+ 700, 700, 700, 700, 700, 700, 222, 700, 700, 700,
+ 96, 83, 82, 244, 317, 176, 241, 238, 453, 453,
+ 379, 700, 74, 700, 93, 1111, 700, 700, -91, -91,
+ -91, -91, -91, -91, -91, -91, -91, -91, -91, -91,
+ -91, -91, -91, -91, -91, -91, -91, -91, -91, -91,
+ -91, -91, -91, -91, -91, -91, -91, -91, -91, -91,
+ -91, -91, 153, 700, -91, -91, 84, 69, -91, 700,
+ -91, -91, 700, -91, -91, -91, -91, -91, -91, -91,
+ -91, -91, -91, -91, -91, -91, 700, 67, 700, 700,
+ 64, 65, 700, -91, 1111, 700, 700, -91, 112, -91,
+ 42, -91, -91, 41, -91, 167, 62, 36, -91, 265,
+ -91, 57, 1546, -91, -91, -91, -91, -91, 216, -91,
+ -91, 43, -91, -91, -91, -91, -91, -91, 1546, -91,
+ -91, 286, 320, 92, 1459, 48, 256, 68, 33, 1720,
+ 80, 700, -91, 86, 77, 700, 50, 53, 61, -91,
+ -91, -91, -91, -91, -91, -91, -91, 105, -91, -91,
+ -91, -91, 121, -91, -91, -91, -91, -91, -91, 56,
+ 55, 700, 165, 124, -91, -91, 780, -91, 70, 32,
+ 3, -91, 292, 59, 45, 521, 168, 127, 385, 317,
+ 191, 700, 294, 700, 700, 700, 700, 385, 700, 700,
+ 700, 700, 700, 223, 183, 179, 237, 245, 385, 385,
+ 385, 700, -47, 700, 16, 700, -91, 541, 700, -91,
+ 700, 11, -43, 700, -44, 1459, -91, 700, 118, 1459,
+ -91, 700, -35, 700, 700, 19, 15, 700, -91, 10,
+ 123, -1, -91, -91, 700, -91, 225, 700, -91, -46,
+ 700, -59, 1459, -91, 700, 171, 1459, -91, -32, -26,
+ -27, 260, -37, 24, 1546, 30, -91, 267, 8, 31,
+ 1546, 0, -91, 214, -8, 18, 1546, -18, -91, 1459,
+ -91, 700, 103, 1459, 22, 1459, -91, 28, 25, -23,
+ -91, -91, 1459, -15, 312, 47, 301, 94, 700, 1459,
+ 38, 5, 269, 29, 27, 620, 51, 58, 54, 944,
+ 46, 1, -29, 4, 700, 79, -9, 700, 21, 700,
+ -10, -7, 700, -91, 1285, 7, -91, -91, -91, -91,
+ -91, -91, 700, -91, -91, -91, -91, 177, -91, 700,
+ -40, -91, 1459, -91, 88, -91, -91, 1459, -91, 700,
+ 102, -21, -91, 20, -91, -3, 89, 700, -91, -5,
+ -4, -91, -50, -91, 1459, -91, 109, 1459, -91, 194,
+ -91, -91, 101, 1459, 40, -91, 14, 23, -91, 186,
+ 2, 26, -91, -91, -91, -91, 700, 100, 1459, -91,
+ 700, 104, 1459, -91, 116, 35, 1024, -91, 34, -91,
+ 860, -91, -91, -91, -91, -91, 111, -91, -91, -91,
+ -91, -91, -91, -91, -2, 13, 12, 443, -91, -91,
+ 440, -91, -91, 17, 37, 700, 39, 1633, 258, -91,
+ 97, 369, -91, 81, -91, -91, 6, 251, -91, 150,
+ -91, 291, -91, -91, 1372, -91, 107, 346, -91, 120,
+ -91, -91, -91, -91, -11, -91, 180, -91, -91, 700,
+ -91, -91, 178, -91, -91, -91,
- -100, -100, -100, -100, 12, 4, -100, -100, -100, -100,
- -100, -100, -100, -100, -100, -100, -100, -100, -100, -100,
- 59, -100, -100, -100, -100, -100, -100, -100, -100, -100,
- -100, -100, 117, -100, -100, -100, -100, -100, -100, -100,
- -100, -100, -100, -100, -100, -100, -100, -100, -100, -100,
- -100, -100, -100, -100, -100, -54, -100, -100, -100, -100,
- -100, -100, -100, -100, -100, -100, -100, 184, -100, -100,
- -100, -100, -100, 116, -100, -100, 47, -100, -100, -100,
- -100, -100, -100, -100, 39, 141, 89, 65, 48, -100,
- -100, 51, 52, 38, -100, -100, -100, -100, 40, 83,
- -100, -16, 61, 66, -100, -100, -100, -100, -100, -100,
- -100, 44, 57, -100, -100, -100, -100, -100, -100, -100,
- 112, 109, 133, -100, -100, -100, -100, -100, -61, -100,
- -100, 193, -100, -100, -100, -100, -100, -100, -100, -100,
- -100, -100, -100, -100, -100, -100, -100, -100, -100, -100,
- -100, -100, -100, -100, -100, -100, -100, -100, -100, -100,
- -100, -100, -100, -100, -100, -100, -100, -100, -100, -100,
- -100, -100, -13, -100, -18, -100, -100, -7, -100, -100,
- -100, 121, -100, 113, 104, 90, 92, -100, 123, 103,
- 101, 102, 95, 137, -100, 145, 132, 126, -100, -100,
- -100, -100, -100, -100, -100, -100, -100, -100, -100, 58,
- -100, 84, -100, 11, 7, 3, -100, -100, -100, -100,
- 6, -100, -100, -100, -100, -100, 10, -100, -100, -100,
- -100, -100, 5, -100, -100, -100, -100, -100, -100, -100,
- -100, -100, -100, -100, -100, -100, 41, -100, 56, -3,
- -100, -100, 0, -100, 147, 64, 138, -100, -100, -100,
- -100, -100, -100, -100, -100, -100, -100, -100, -100, -100,
- -100, -100, -100, -100, -100, -100, -100, -100, 2, -100,
- -100, -100, -100, 115, -100, -100, -100, -100, -100, -100,
- -100, -100, -100, -100, -100, -100, -100, -100, 187, -100,
- 154, 195, 183, 198, -100, 33, 73, 82, 71, 75,
- -100, -100, -100, -100, -100, -100, -100, -100, 165, -100,
- 146, -100, 150, -100, -100, 177, -100, 50, -100, -100,
- 53, -100, 22, -100, 9, -100, 45, -100, 171, -100,
- 189, 169, -100, -100, 163, -100, -100, -100, -100, -100,
- -100, 162, -100, -68, 136, -100, -100, 124, -100, -2,
- -100, -4, -100, -5, -100, -100, 46, -100, 43, -100,
- 35, -100, 34, -100, -100, 42, -100, -100, -100, -100,
- -100, 122, 30, -100, -100, -100, -100, -100, 70, -100,
- -100, 49, -100, -100, -100, 36, -100, -15, 86, -100,
- 79, -100, -100, -100, -100, -100, -100, 142, -100, -100,
- -100, -100, -100, 37, -100, -100, -100, -100, -100, -40,
- -100, 32, -100, -44, -100, -100, -100, -100, -33, -100,
- -100, -12, -100, -100, -100, -100, -100, -100, -35, -100,
- -100, -36, -100, -100, -100, -53, -100, -100, -100, -100,
- -1, -100, 1, -100, -10, -100, -8, -100, -100, -100,
- -19, -100, -17, -100, -22, -100, -100, -100, -100, -100,
- -100, -100, -100, -100, -100, -100, -100, -100, 175, -100,
- -100, 236, -100, -100, -100, -100, -100, -100, 19, -100,
- -100, 15, -100, 21, -100, -100, 28, 29, -100, -100,
- -100, -100, 31, -100, -100, -100, -100, 60, -100, -100,
- 25, -100, 17, 62, -100, -100, -100, -100, -100, -100,
- -100, -100, -100, -100, -100, 8, -100, -100, -60, -100,
- -100, -100};
+ -102, -102, -102, -102, 93, 197, -102, -102, -102, -102,
+ -102, -102, -102, -102, -102, -102, -102, -102, -102, -102,
+ -102, -102, -102, 340, -102, -1, -102, 0, -102, -102,
+ -102, -102, -102, -2, -102, -102, -102, -102, -102, -102,
+ -102, -102, -102, -102, -102, -40, -102, -102, -102, -102,
+ -102, -102, -102, -102, -102, 163, -102, -102, -102, 2,
+ -102, -102, -102, 15, 146, 149, 170, 155, -102, -102,
+ 101, 138, -102, -102, -102, 79, -102, 160, 104, -102,
+ 123, 131, -102, -102, -102, -102, 108, 118, 114, -102,
+ -102, -102, -102, 105, -102, 115, 119, 130, 129, -102,
+ 122, 107, 91, 83, 94, 97, -102, 82, 154, 152,
+ -102, -102, -102, -102, -102, -102, -102, -102, -102, -102,
+ -102, 133, -102, 132, -102, 244, 44, 37, -102, -102,
+ -102, -102, -102, -102, -102, -102, -102, -102, -102, -102,
+ -102, -102, -102, -102, -102, -102, -102, -102, -102, -102,
+ -102, -102, -102, -102, -102, -102, -102, -102, -102, -102,
+ -102, -102, -102, 16, -102, -102, -102, -102, -102, 22,
+ -102, -102, 17, -102, -102, -102, -102, -102, -102, -102,
+ -102, -102, -102, -102, -102, -102, 73, -102, 74, 46,
+ -102, -102, 48, -102, 214, 49, 80, -102, -102, -102,
+ -102, -102, -102, -102, -102, 50, -102, -102, -102, 55,
+ -102, -102, -102, -102, -102, -102, -102, -102, -102, -102,
+ -102, -102, -102, -102, -102, -102, -102, -102, -43, -102,
+ -102, 58, 21, -102, 18, -102, 56, -102, -102, 54,
+ -102, 63, -102, -102, -102, 51, 7, -102, -102, -102,
+ -102, -102, -102, -102, -102, -102, -102, -102, -102, -102,
+ -102, -102, -102, -102, -102, -102, -102, -102, -102, -102,
+ -102, 60, -102, -102, -102, -102, 59, -102, -102, -102,
+ -102, -102, -102, -102, -102, -102, -102, -102, -102, -102,
+ 61, 220, -102, 185, 203, 184, 195, -102, 72, 52,
+ 70, 62, 66, -102, -102, -102, -102, -102, -102, -102,
+ -102, 217, -102, 182, -102, 196, -102, -102, 199, -102,
+ 69, -102, -102, 71, -102, 31, -102, 28, -102, 29,
+ -102, 168, -102, 169, 176, -102, -102, 166, -102, -102,
+ -102, -102, -102, -102, 172, -102, 77, 68, -102, -102,
+ 65, -102, 43, -102, 45, -102, 38, -102, -102, -102,
+ -102, 78, -102, -102, -48, -102, -102, 85, -102, -102,
+ -60, -102, -102, 102, -102, -102, -59, -102, -102, 36,
+ -102, 33, -102, 40, -102, 42, -102, -102, -102, -102,
+ -102, -102, 41, -102, 34, -102, 32, -102, 139, 20,
+ -102, -102, 19, -102, -102, 153, -102, -102, -102, 23,
+ -102, -102, -102, -102, 30, -102, -28, 160, -102, 98,
+ -102, -102, 53, -102, 39, -102, -102, -102, -102, -102,
+ -102, -102, 47, -102, -102, -102, -102, -102, -102, 57,
+ -102, -102, -6, -102, -102, -102, -102, -3, -102, -10,
+ -102, -102, -102, -102, -102, -91, -102, -4, -102, -87,
+ -102, -102, -102, -102, 76, -102, -102, 87, -102, -102,
+ -102, -102, -102, 13, -66, -102, -102, -33, -102, 14,
+ -102, -47, -102, -102, -102, -102, 6, -102, 11, -102,
+ 1, -102, 9, -102, -102, -102, -15, -102, -12, -102,
+ 4, -102, -102, -102, -102, -102, -102, -102, -102, -102,
+ -102, -102, -102, -102, -102, -102, -102, 257, -102, -102,
+ 340, -102, -102, -102, -102, -13, -102, 12, 5, -102,
+ 3, 75, -102, -102, -102, -102, 10, -102, -102, -102,
+ -102, 236, -102, -102, -7, -102, -5, 240, -102, -102,
+ -102, -102, -102, -102, -102, -102, -102, -102, -102, -21,
+ -102, -102, 64, -102, -102, -102};
const int JavaScriptGrammar::action_info [] = {
- 445, 444, 441, 320, 231, 427, 428, 443, 130, 320,
- 318, 128, 181, 283, 209, 461, 28, 421, 322, 346,
- 327, 467, 338, 359, 131, 417, -61, 346, 177, 437,
- 357, -83, -62, 413, -231, -80, -72, 283, 372, 368,
- 25, -60, -85, 246, 332, 365, 330, 437, 421, 421,
- 220, 450, -232, 409, 318, 351, 338, 361, 344, 211,
- 490, 24, 261, 454, 488, 487, 478, 525, 486, 181,
- 437, 252, 179, 478, 520, 127, 246, 226, 228, 220,
- 220, 519, 491, 413, 172, 298, 461, 520, 174, 454,
- 366, 25, 32, 29, 28, 7, 209, 368, 278, 30,
- 484, 366, 0, 353, 404, 220, 507, 220, 510, 450,
- 127, 220, 220, 493, 440, 133, 494, -300, 118, 485,
- 462, 494, 431, 220, 220, 0, 31, 478, 441, 119,
- 277, 111, 220, 220, 220, 0, 111, 424, 366, 211,
- 9, 8, 112, 274, 273, 507, 220, 112, 267, 266,
- 111, 111, 220, 2, 516, 0, 354, 370, 220, 363,
- 221, 112, 112, 280, 478, 528, 0, 340, 463, 264,
- 120, 341, 259, 531, 272, 271, 269, 502, 254, 274,
- 273, 0, 425, 220, 452, 456, 471, 0, 0, 412,
- 411, 282, 281, 508, 518, 517, 248, 255, 415, 407,
- 249, 265, 263, 213, 336, 120, 0, 17, 270, 268,
- 0, 230, 229, 0, 195, 121, 196, 0, 529, 527,
- 269, 122, 214, 120, 215, 264, 195, 197, 196, 0,
- 195, 16, 196, 195, 0, 196, 435, 434, 195, 197,
- 196, 0, 195, 197, 196, 0, 197, 195, 0, 196,
- 121, 197, 270, 268, 0, 197, 122, 265, 263, 195,
- 197, 196, 254, 195, 195, 196, 196, 195, 121, 196,
- 461, 195, 197, 196, 122, 0, 197, 197, 300, 301,
- 197, 255, 461, 256, 197, 183, 184, 183, 184, 300,
- 301, 502, 0, 0, 0, 305, 306, 0, 0, 0,
- 0, 0, 0, 502, 307, 302, 303, 308, 0, 309,
- 305, 306, 185, 186, 185, 186, 302, 303, 0, 307,
- 0, 17, 308, 0, 309, 305, 306, 0, 0, 0,
- 0, 0, 0, 17, 307, 0, 195, 308, 196, 309,
- 0, 0, 188, 189, 0, 16, 0, 0, 0, 197,
- 190, 191, 188, 189, 192, 0, 193, 16, 13, 0,
- 190, 191, 188, 189, 192, 14, 193, 0, 13, 0,
- 190, 191, 188, 189, 192, 14, 193, 0, 13, 0,
- 190, 191, 188, 189, 192, 14, 193, 0, 0, 0,
- 190, 191, 0, 0, 192, 17, 193, 13, 0, 0,
- 305, 306, 0, 0, 14, 17, 0, 0, 18, 307,
- 0, 480, 308, 0, 309, 17, 0, 12, 18, 16,
- 0, 15, 0, 0, 0, 0, 0, 12, 18, 16,
- 482, 15, 0, 0, 17, 0, 0, 12, 0, 16,
- 0, 15, 0, 0, 0, 0, 0, 18, 0, 0,
- 0, 0, 0, 0, 0, 0, 12, 0, 16, 0,
- 15, 0, 0, 0, 74, 75, 233, 0, 0, 0,
- 0, 0, 0, 0, 115, 0, 234, 0, 0, 0,
- 235, 116, 0, 0, 0, 117, 83, 0, 84, 236,
- 0, 237, 0, 0, 0, 87, 0, 0, 0, 90,
- 0, 0, 238, 0, 239, 118, 0, 0, 0, 0,
- 0, 0, 240, 0, 0, 241, 119, 95, 0, 97,
- 0, 242, 0, 0, 0, 0, 0, 243, 0, 0,
- 89, 100, 77, 0, 0, 0, 0, 0, 0, 0,
- 244, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 74, 75, 233, 0, 0, 0, 0, 0, 0, 0,
- 115, 0, 234, 0, 0, 0, 235, 116, 0, 0,
- 0, 117, 83, 0, 84, 236, 0, 237, 0, 0,
- 0, 87, 0, 0, 0, 90, 0, 0, 238, 0,
- 239, 118, 0, 0, 0, 0, 0, 0, 240, 0,
- 0, 241, 119, 95, 0, 97, 0, 242, 0, 0,
- 0, 0, 0, 243, 0, 0, 89, 100, 77, 0,
- 0, 0, 0, 0, 0, 0, 244, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 233, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 234, 0,
- 0, 0, 235, 0, 0, 0, 0, 0, 0, 0,
- 0, 236, 0, 237, 0, 0, 334, 0, 0, 0,
- 0, 0, 0, 0, 238, 0, 239, 118, 0, 0,
- 0, 0, 0, 0, 240, 0, 0, 241, 119, 0,
- 0, 0, 0, 242, 0, 0, 0, 0, 0, 243,
+ 457, 352, 457, 464, 361, 463, 559, 449, -69, 373,
+ 367, -91, 453, 311, 432, 350, 325, 291, 323, 163,
+ 441, 331, 337, 363, 473, 457, 486, 344, -96, 490,
+ 354, 313, 434, 424, 361, 422, -66, 378, 385, 517,
+ 436, 276, 497, 503, 525, -80, 524, 163, 373, 367,
+ 479, 376, 375, 447, -99, 372, 473, 364, -88, 473,
+ 477, 442, 481, 381, 370, -70, 186, 315, 369, 381,
+ 209, 291, 192, 32, 497, 379, 2, 205, 186, 163,
+ 311, 313, 33, 473, 276, 366, -93, 442, 93, 486,
+ 212, 271, 169, 447, 93, 565, 211, 490, 255, 460,
+ 121, 0, 201, 0, 379, 517, 320, 476, 163, 0,
+ 163, 163, 163, 449, 379, 121, 467, 163, 0, 163,
+ 163, 477, 80, 80, 498, 7, 163, 123, 541, 171,
+ 517, 346, 270, 81, 81, 0, 80, 0, 527, 27,
+ 517, 188, 552, 551, 461, 189, 528, 81, 84, 446,
+ 445, 2, 123, 268, 267, 268, 267, 544, 0, 85,
+ 488, 163, 451, 383, 492, 528, 261, 260, 199, 80,
+ 331, 507, 499, 163, 9, 8, 550, 333, 329, 163,
+ 81, 334, 266, 265, 347, 275, 274, 86, 562, 60,
+ 28, 514, 194, 0, 0, 28, 60, 125, 0, 60,
+ 0, 107, 163, 108, 107, 0, 108, 60, 107, 164,
+ 108, 195, 0, 439, 109, 60, 126, 109, 127, 0,
+ 60, 109, 86, 0, 163, 273, 72, 20, 515, 516,
+ 0, 356, 87, 72, 20, 30, 72, 20, 88, 86,
+ 30, 563, 561, 60, 72, 20, 29, 107, 107, 108,
+ 108, 29, 72, 20, 60, 471, 470, 72, 20, 541,
+ 109, 109, 107, 107, 108, 108, 107, 87, 108, 107,
+ 107, 108, 108, 88, 194, 109, 109, 254, 253, 109,
+ 72, 20, 109, 109, 87, 358, 0, 60, 0, 60,
+ 88, 72, 20, 195, 60, 196, 60, 0, 60, 0,
+ 0, 95, 96, 0, 0, -312, 0, 542, 0, 0,
+ 293, 294, 293, 294, 0, 60, 0, 0, 95, 96,
+ 536, 0, 359, 360, 72, 20, 72, 20, 97, 98,
+ 60, 72, 20, 72, 20, 72, 20, 295, 296, 295,
+ 296, 60, 107, 0, 108, 97, 98, 259, 258, 60,
+ 19, 0, 72, 20, 497, 109, 0, 72, 20, 0,
+ 0, 0, 264, 263, 0, 0, 0, 72, 20, 0,
+ 0, 0, 0, 259, 258, 536, 18, 497, 72, 20,
+ 0, 264, 263, 100, 101, 0, 72, 20, 14, 0,
+ 0, 102, 103, 0, 0, 104, 0, 105, 536, 0,
+ 15, 0, 100, 101, 0, 19, 0, 16, 298, 299,
+ 102, 103, 72, 20, 104, 0, 105, 300, 0, 0,
+ 301, 0, 302, 0, 0, 0, 0, 0, 19, 0,
+ 14, 18, 0, 0, 0, 72, 20, 19, 0, 0,
+ 0, 0, 15, 0, 17, 20, 0, 0, 0, 16,
+ 14, 0, 21, 14, 18, 0, 0, 0, 0, 0,
+ 0, 13, 15, 18, 0, 15, 0, 0, 0, 16,
+ 0, 0, 16, 0, 0, 0, 100, 101, 0, 19,
+ 0, 0, 0, 0, 102, 103, 17, 20, 104, 0,
+ 105, 0, 0, 0, 21, 521, 0, 0, 519, 19,
+ 0, 0, 19, 13, 0, 18, 17, 20, 0, 17,
+ 20, 0, 0, 0, 21, 0, 0, 21, 0, 0,
+ 0, 0, 0, 13, 173, 18, 13, 0, 18, 0,
+ 0, 0, 0, 0, 174, 0, 0, 0, 175, 0,
+ 0, 0, 0, 0, 173, 0, 0, 176, 0, 177,
+ 0, 0, 327, 0, 174, 0, 0, 0, 175, 0,
+ 178, 0, 179, 84, 0, 0, 0, 176, 0, 177,
+ 180, 0, 0, 181, 85, 0, 0, 0, 0, 182,
+ 178, 0, 179, 84, 0, 183, 0, 0, 0, 0,
+ 180, 0, 0, 181, 85, 0, 0, 0, 0, 182,
+ 184, 0, 0, 0, 0, 183, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 184, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 56, 57, 0, 0, 0, 0, 0, 0,
+ 0, 0, 59, 0, 0, 0, 0, 0, 0, 60,
+ 0, 0, 0, 61, 62, 0, 63, 0, 0, 0,
+ 0, 0, 0, 66, 0, 0, 0, 69, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 244, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 73, 74, 75, 0, 0, 0,
- 0, 0, 0, 0, 0, 115, 0, 0, 0, 0,
- 0, 0, 116, 0, 0, 0, 117, 83, 0, 84,
- 0, 0, 0, 85, 0, 86, 87, 88, 0, 0,
- 90, 0, 0, 0, 91, 0, 92, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 95, 0,
- 97, 0, 99, 0, 102, 0, 103, 0, 0, 0,
- 0, 89, 100, 77, 0, 0, 0, 0, 0, 0,
- 0, 0, 73, 74, 75, 0, 0, 0, 0, 0,
- 0, 0, 0, 115, 0, 0, 0, 0, 0, 0,
- 116, 0, 0, 0, 117, 83, 0, 84, 0, 0,
- 0, 85, 0, 86, 87, 88, 0, 0, 90, 0,
- 0, 0, 91, 0, 92, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 95, 0, 97, 0,
- 99, 0, 102, 297, 103, 0, 0, 0, 0, 89,
- 100, 77, 0, 0, 0, 0, 0, 0, 0, 0,
- -81, 0, 0, 0, 73, 74, 75, 0, 0, 0,
- 0, 0, 0, 0, 0, 115, 0, 0, 0, 0,
- 0, 0, 116, 0, 0, 0, 117, 83, 0, 84,
- 0, 0, 0, 85, 0, 86, 87, 88, 0, 0,
- 90, 0, 0, 0, 91, 0, 92, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 95, 0,
- 97, 0, 99, 0, 102, 0, 103, 0, 0, 0,
- 0, 89, 100, 77, 0, 0, 0, 0, 0, 0,
- 0, 0, 73, 74, 75, 0, 0, 0, 0, 0,
- 0, 0, 0, 115, 0, 0, 0, 0, 0, 0,
- 116, 0, 0, 0, 117, 83, 0, 84, 0, 0,
- 0, 85, 0, 86, 87, 88, 0, 0, 90, 0,
- 0, 0, 91, 0, 92, 0, 0, 466, 0, 0,
- 0, 0, 0, 0, 0, 0, 95, 0, 97, 0,
- 99, 0, 102, 0, 103, 0, 0, 0, 0, 89,
- 100, 77, 0, 0, 0, 0, 0, 0, 0, 0,
- 73, 74, 75, 0, 0, 0, 0, 0, 0, 0,
- 0, 115, 0, 0, 0, 0, 0, 0, 116, 0,
- 0, 0, 117, 83, 0, 84, 0, 0, 0, 85,
- 0, 86, 87, 88, 0, 0, 90, 0, 0, 0,
- 91, 0, 92, 0, 0, 469, 0, 0, 0, 0,
- 0, 0, 0, 0, 95, 0, 97, 0, 99, 0,
- 102, 0, 103, 0, 0, 0, 0, 89, 100, 77,
- 0, 0, 0, 0, 0, 0, 0, 0, 138, 139,
- 140, 0, 0, 142, 144, 145, 0, 0, 146, 0,
- 147, 0, 0, 0, 149, 150, 151, 0, 0, 0,
- 0, 0, 0, 218, 153, 154, 155, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 156, 0, 0,
+ 0, 0, 0, 0, 0, 73, 72, 20, 0, 74,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 160, 0, 0, 0, 0, 0, 0,
- 162, 163, 164, 0, 166, 167, 168, 169, 170, 171,
- 0, 0, 157, 165, 148, 141, 143, 159, 0, 0,
- 0, 0, 0, 138, 139, 140, 0, 0, 142, 144,
- 145, 0, 0, 146, 0, 147, 0, 0, 0, 149,
- 150, 151, 0, 0, 0, 0, 0, 0, 152, 153,
- 154, 155, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 156, 0, 0, 0, 158, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 160, 0,
- 0, 0, 0, 0, 161, 162, 163, 164, 0, 166,
- 167, 168, 169, 170, 171, 0, 0, 157, 165, 148,
- 141, 143, 159, 0, 0, 0, 0, 0, 138, 139,
- 140, 0, 0, 142, 144, 145, 0, 0, 146, 0,
- 147, 0, 0, 0, 149, 150, 151, 0, 0, 0,
- 0, 0, 0, 152, 153, 154, 155, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 156, 0, 0,
- 0, 158, 0, 0, 0, 0, 0, 0, 0, 176,
- 0, 0, 0, 160, 0, 0, 0, 0, 0, 161,
- 162, 163, 164, 0, 166, 167, 168, 169, 170, 171,
- 0, 0, 157, 165, 148, 141, 143, 159, 0, 0,
- 0, 0, 0, 70, 0, 0, 0, 0, 71, 0,
- 73, 74, 75, 76, 0, 0, 0, 0, 0, 0,
- 78, 115, 0, 0, 0, 0, 0, 0, 512, 81,
- 0, 0, 82, 513, 0, 84, 0, 0, 0, 85,
- 0, 86, 87, 88, 0, 0, 90, 0, 0, 0,
- 91, 0, 92, 0, 0, 0, 0, 0, 93, 0,
- 94, 0, 0, 0, 95, 96, 97, 98, 99, 101,
- 102, 18, 103, 104, 105, 0, 0, 89, 100, 77,
- 12, 72, 0, 0, 0, 0, 0, 0, 70, 0,
- 0, 0, 0, 71, 0, 73, 74, 75, 76, 0,
- 0, 0, 0, 0, 0, 78, 115, 0, 0, 0,
- 0, 0, 0, 80, 81, 0, 0, 82, 83, 0,
- 84, 0, 0, 0, 85, 0, 86, 87, 88, 0,
- 0, 90, 0, 0, 0, 91, 0, 92, 0, 0,
- 0, 0, 0, 93, 0, 94, 0, 0, 0, 95,
- 96, 97, 98, 99, 101, 102, 18, 103, 104, 105,
- 0, 0, 89, 100, 77, 12, 72, 0, 0, 0,
- 0, 0, 0, 70, 0, 0, 0, 0, 71, 0,
- 73, 74, 75, 76, 0, 0, 0, 0, 0, 0,
- 78, 79, 0, 0, 0, 0, 0, 0, 80, 81,
- 0, 0, 82, 83, 0, 84, 0, 0, 0, 85,
- 0, 86, 87, 88, 0, 0, 90, 0, 0, 0,
- 91, 0, 92, 0, 0, 0, 0, 0, 93, 0,
- 94, 0, 0, 0, 95, 96, 97, 98, 99, 101,
- 102, 18, 103, 104, 105, 0, 0, 89, 100, 77,
- 12, 72, 0, 0, 0, 0, 0, 0, 70, 0,
- 0, 0, 0, 71, 0, 73, 74, 75, 76, 0,
- 0, 0, 0, 0, 0, 78, 115, 0, 0, 0,
- 0, 0, 0, 496, 81, 0, 0, 82, 497, 0,
- 84, 0, 0, 0, 85, 0, 86, 87, 88, 0,
- 0, 90, 0, 0, 0, 91, 0, 92, 0, 0,
- 0, 0, 0, 93, 0, 94, 0, 0, 0, 95,
- 96, 97, 98, 99, 101, 102, 18, 103, 104, 105,
- 0, 0, 89, 100, 77, 12, 72, 0, 498, 0,
- 0, 0, 0, 377, 139, 140, 0, 0, 379, 144,
- 381, 74, 75, 382, 0, 147, 0, 0, 0, 149,
- 384, 385, 0, 0, 0, 0, 0, 0, 386, 387,
- 154, 155, 82, 83, 0, 84, 0, 0, 0, 85,
- 0, 86, 388, 88, 0, 0, 390, 0, 0, 0,
- 91, 0, 92, 0, -227, 0, 0, 0, 391, 0,
- 94, 0, 0, 0, 392, 393, 394, 395, 99, 397,
- 398, 399, 400, 401, 402, 0, 0, 389, 396, 383,
- 378, 380, 159, 0, 0, 0, 0, 0,
+ 68, 76, 58, 0, 0, 0, 0, 0, 0, 0,
+ 0, 55, 56, 57, 0, 0, 0, 0, 0, 0,
+ 0, 0, 59, 0, 0, 0, 0, 0, 0, 60,
+ 0, 0, 0, 61, 62, 0, 63, 0, 0, 0,
+ 64, 0, 65, 66, 67, 0, 0, 69, 0, 0,
+ 0, 70, 0, 71, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 73, 72, 20, 0, 74,
+ 0, 75, 0, 77, 0, 78, 0, 0, 0, 0,
+ 68, 76, 58, 0, 0, 0, 0, 0, 0, 0,
+ 0, 55, 56, 57, 0, 0, 0, 0, 0, 0,
+ 0, 0, 59, 0, 0, 0, 0, 0, 0, 60,
+ 0, 0, 0, 61, 62, 0, 63, 0, 0, 0,
+ 64, 0, 65, 66, 67, 0, 0, 69, 0, 0,
+ 0, 70, 0, 71, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 73, 72, 20, 0, 74,
+ 0, 75, 0, 77, 290, 78, 0, 0, 0, 0,
+ 68, 76, 58, 0, 0, 0, 0, 0, 0, 0,
+ 0, 55, 56, 57, 0, 0, 0, 0, 0, 0,
+ 0, 0, 59, 0, 0, 0, 0, 0, 0, 60,
+ 0, 0, 0, 61, 62, 0, 63, 0, 0, 0,
+ 64, 0, 65, 66, 67, 0, 0, 69, 0, 0,
+ 0, 70, 0, 71, 0, 0, 502, 0, 0, 0,
+ 0, 0, 0, 0, 0, 73, 72, 20, 0, 74,
+ 0, 75, 0, 77, 0, 78, 0, 0, 0, 0,
+ 68, 76, 58, 0, 0, 0, 0, 0, 0, 0,
+ 0, -89, 0, 0, 0, 55, 56, 57, 0, 0,
+ 0, 0, 0, 0, 0, 0, 59, 0, 0, 0,
+ 0, 0, 0, 60, 0, 0, 0, 61, 62, 0,
+ 63, 0, 0, 0, 64, 0, 65, 66, 67, 0,
+ 0, 69, 0, 0, 0, 70, 0, 71, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 73,
+ 72, 20, 0, 74, 0, 75, 0, 77, 0, 78,
+ 0, 0, 0, 0, 68, 76, 58, 0, 0, 0,
+ 0, 0, 0, 0, 0, 55, 56, 57, 0, 0,
+ 0, 0, 0, 0, 0, 0, 59, 0, 0, 0,
+ 0, 0, 0, 60, 0, 0, 0, 61, 62, 0,
+ 63, 0, 0, 0, 64, 0, 65, 66, 67, 0,
+ 0, 69, 0, 0, 0, 70, 0, 71, 0, 0,
+ 505, 0, 0, 0, 0, 0, 0, 0, 0, 73,
+ 72, 20, 0, 74, 0, 75, 0, 77, 0, 78,
+ 0, 0, 0, 0, 68, 76, 58, 0, 0, 0,
+ 0, 0, 0, 0, 0, 131, 132, 133, 0, 0,
+ 135, 137, 138, 0, 0, 139, 0, 140, 0, 0,
+ 0, 142, 143, 144, 0, 0, 0, 0, 0, 0,
+ 60, 145, 146, 147, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 148, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 151, 0, 0, 0, 0, 0, 0, 72, 20, 152,
+ 153, 154, 0, 156, 157, 158, 159, 160, 161, 0,
+ 0, 149, 155, 141, 134, 136, 150, 0, 0, 0,
+ 0, 0, 131, 132, 133, 0, 0, 135, 137, 138,
+ 0, 0, 139, 0, 140, 0, 0, 0, 142, 143,
+ 144, 0, 0, 0, 0, 0, 0, 426, 145, 146,
+ 147, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 148, 0, 0, 0, 427, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 151, 0, 0,
+ 0, 0, 0, 431, 428, 430, 152, 153, 154, 0,
+ 156, 157, 158, 159, 160, 161, 0, 0, 149, 155,
+ 141, 134, 136, 150, 0, 0, 0, 0, 0, 131,
+ 132, 133, 0, 0, 135, 137, 138, 0, 0, 139,
+ 0, 140, 0, 0, 0, 142, 143, 144, 0, 0,
+ 0, 0, 0, 0, 426, 145, 146, 147, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 148, 0,
+ 0, 0, 427, 0, 0, 0, 0, 0, 0, 0,
+ 429, 0, 0, 0, 151, 0, 0, 0, 0, 0,
+ 431, 428, 430, 152, 153, 154, 0, 156, 157, 158,
+ 159, 160, 161, 0, 0, 149, 155, 141, 134, 136,
+ 150, 0, 0, 0, 0, 0, 231, 0, 0, 0,
+ 0, 232, 0, 55, 56, 57, 234, 0, 0, 0,
+ 0, 0, 0, 235, 59, 0, 0, 0, 0, 0,
+ 0, 546, 238, 0, 0, 239, 547, 0, 63, 0,
+ 0, 0, 64, 0, 65, 66, 67, 0, 0, 69,
+ 0, 0, 0, 70, 0, 71, 0, 0, 0, 0,
+ 0, 241, 0, 242, 0, 0, 0, 73, 240, 243,
+ 244, 74, 245, 75, 246, 77, 21, 78, 247, 248,
+ 0, 0, 68, 76, 58, 13, 233, 0, 0, 0,
+ 0, 0, 0, 231, 0, 0, 0, 0, 232, 0,
+ 55, 56, 57, 234, 0, 0, 0, 0, 0, 0,
+ 235, 59, 0, 0, 0, 0, 0, 0, 237, 238,
+ 0, 0, 239, 62, 0, 63, 0, 0, 0, 64,
+ 0, 65, 66, 67, 0, 0, 69, 0, 0, 0,
+ 70, 0, 71, 0, 0, 0, 0, 0, 241, 0,
+ 242, 0, 0, 0, 73, 240, 243, 244, 74, 245,
+ 75, 246, 77, 21, 78, 247, 248, 0, 0, 68,
+ 76, 58, 13, 233, 0, 0, 0, 0, 0, 0,
+ 231, 0, 0, 0, 0, 232, 0, 55, 56, 57,
+ 234, 0, 0, 0, 0, 0, 0, 235, 236, 0,
+ 0, 0, 0, 0, 0, 237, 238, 0, 0, 239,
+ 62, 0, 63, 0, 0, 0, 64, 0, 65, 66,
+ 67, 0, 0, 69, 0, 0, 0, 70, 0, 71,
+ 0, 0, 0, 0, 0, 241, 0, 242, 0, 0,
+ 0, 73, 240, 243, 244, 74, 245, 75, 246, 77,
+ 21, 78, 247, 248, 0, 0, 68, 76, 58, 13,
+ 233, 0, 0, 0, 0, 0, 0, 231, 0, 0,
+ 0, 0, 232, 0, 55, 56, 57, 234, 0, 0,
+ 0, 0, 0, 0, 235, 59, 0, 0, 0, 0,
+ 0, 0, 530, 238, 0, 0, 239, 531, 0, 63,
+ 0, 0, 0, 64, 0, 65, 66, 67, 0, 0,
+ 69, 0, 0, 0, 70, 0, 71, 0, 0, 0,
+ 0, 0, 241, 0, 242, 0, 0, 0, 73, 240,
+ 243, 244, 74, 245, 75, 246, 77, 21, 78, 247,
+ 248, 0, 0, 68, 76, 58, 13, 233, 0, 532,
+ 0, 0, 0, 0, 394, 132, 133, 0, 0, 396,
+ 137, 398, 56, 57, 399, 0, 140, 0, 0, 0,
+ 142, 401, 402, 0, 0, 0, 0, 0, 0, 403,
+ 404, 146, 147, 239, 62, 0, 63, 0, 0, 0,
+ 64, 0, 65, 405, 67, 0, 0, 407, 0, 0,
+ 0, 70, 0, 71, 0, -235, 0, 0, 0, 409,
+ 0, 242, 0, 0, 0, 411, 408, 410, 412, 413,
+ 414, 75, 416, 417, 418, 419, 420, 421, 0, 0,
+ 406, 415, 400, 395, 397, 150, 0, 0, 0, 0,
+ 0,
- 465, 464, 232, 468, 455, 457, 175, 446, 364, 173,
- 362, 360, 355, 451, 453, 178, 279, 10, 530, 251,
- 23, 219, 253, 335, 447, 225, 514, 245, 222, 492,
- 526, 129, 227, 489, 495, 333, 217, 501, 511, 505,
- 506, 429, 426, 276, 436, 436, 430, 373, 371, 422,
- 433, 414, 328, 470, 433, 403, 442, 369, 337, 367,
- 276, 0, 432, 328, 328, 483, 113, 328, 509, 515,
- 505, 310, 505, 0, 113, 23, 0, 113, 258, 0,
- 114, 113, 0, 474, 113, 113, 475, 476, 247, 113,
- 113, 113, 405, 180, 113, 406, 448, 405, 0, 113,
- 406, 449, 0, 210, 113, 250, 113, 329, 113, 313,
- 331, 311, 113, 314, 449, 113, 113, 113, 477, 113,
- 312, 448, 113, 113, 473, 113, 0, 212, 113, 207,
- 68, 208, 50, 204, 113, 113, 113, 113, 328, 202,
- 203, 201, 113, 206, 124, 113, 113, 123, 292, 113,
- 328, 275, 187, 296, 113, 113, 113, 275, 0, 113,
- 225, 194, 182, 200, 225, 113, 113, 260, 125, 199,
- 113, 408, 217, 257, 113, 205, 472, 481, 113, 113,
- 0, 358, 198, 324, 296, 0, 0, 113, 296, 0,
- 321, 23, 296, 356, 304, 324, 324, 68, 113, 50,
- 296, 296, 324, 296, 113, 323, 68, 296, 50, 296,
- 324, 319, 0, 0, 0, 296, 113, 352, 345, 339,
- 113, 296, 113, 316, 343, 296, 0, 296, 113, 299,
- 0, 113, 326, 296, 0, 315, 296, 0, 317, 342,
- 0, 0, 483, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 23, 0, 0, 0, 0, 0, 0, 0,
+ 458, 462, 526, 560, 548, 450, 545, 443, 500, 504,
+ 448, 466, 535, 42, 31, 482, 491, 554, 172, 540,
+ 204, 487, 493, 553, 489, 529, 391, 478, 501, 483,
+ 506, 269, 480, 269, 472, 371, 377, 204, 321, 262,
+ 165, 185, 330, 328, 326, 469, 170, 365, 382, 380,
+ 262, 357, 257, 384, 435, 386, 353, 256, 0, 162,
+ 355, 168, 0, 0, 198, 425, 469, 391, 208, 472,
+ 191, 433, 193, 210, 204, 272, 257, 423, 321, 339,
+ 321, 168, 554, 321, 321, 539, 321, 82, 440, 391,
+ 0, 0, 304, 12, 285, 339, 208, 82, 10, 289,
+ 391, 82, 306, 208, 168, 82, 307, 82, 82, 82,
+ 305, 200, 303, 0, 82, 0, 513, 82, 82, 0,
+ 208, 110, 187, 115, 351, 190, 82, 349, 322, 82,
+ 324, 114, 82, 82, 116, 485, 82, 117, 511, 82,
+ 82, 485, 82, 82, 564, 89, 0, 113, 94, 82,
+ 82, 91, 465, 82, 82, 90, 99, 82, 82, 348,
+ 118, 83, 106, 468, 82, 82, 82, 82, 82, 92,
+ 120, 119, 362, 82, 82, 512, 202, 124, 0, 368,
+ 122, 82, 437, 508, 82, 438, 509, 82, 0, 82,
+ 82, 112, 510, 111, 0, 82, 374, 484, 82, 437,
+ 202, 317, 438, 82, 82, 0, 289, 317, 289, 289,
+ 0, 317, 289, 11, 26, 12, 289, 82, 332, 82,
+ 82, 335, 289, 338, 289, 289, 309, 297, 314, 345,
+ 82, 317, 128, 336, 317, 289, 289, 310, 82, 289,
+ 0, 130, 197, 289, 543, 308, 539, 549, 0, 0,
+ 539, 0, 82, 316, 12, 82, 319, 289, 12, 520,
+ 289, 0, 128, 0, 292, 312, 0, 0, 0, 0,
+ 0, 130, 0, 11, 26, 12, 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, 522, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 11, 26, 12, 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, 262, 0, 0, 0, 132, 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 int JavaScriptGrammar::action_check [] = {
- 60, 29, 20, 76, 55, 55, 7, 36, 60, 76,
- 48, 36, 1, 36, 48, 8, 29, 5, 8, 29,
- 61, 8, 2, 60, 33, 33, 7, 29, 7, 33,
- 61, 7, 7, 36, 29, 7, 7, 36, 16, 36,
- 36, 7, 7, 2, 60, 29, 61, 33, 5, 5,
- 8, 36, 29, 60, 48, 17, 2, 31, 7, 76,
- 29, 29, 60, 36, 7, 29, 33, 17, 29, 1,
- 33, 7, 55, 33, 29, 29, 2, 8, 60, 8,
- 8, 29, 7, 36, 7, 1, 8, 29, 8, 36,
- 7, 36, 33, 8, 29, 65, 48, 36, 36, 29,
- 10, 7, -1, 8, 55, 8, 8, 8, 7, 36,
- 29, 8, 8, 7, 6, 55, 15, 36, 42, 29,
- 8, 15, 7, 8, 8, -1, 60, 33, 20, 53,
- 74, 40, 8, 8, 8, -1, 40, 10, 7, 76,
- 61, 62, 51, 61, 62, 8, 8, 51, 61, 62,
- 40, 40, 8, 86, 56, -1, 61, 60, 8, 60,
- 56, 51, 51, 60, 33, 8, -1, 50, 56, 29,
- 12, 54, 56, 0, 61, 62, 29, 29, 15, 61,
- 62, -1, 55, 8, 60, 60, 60, -1, -1, 61,
- 62, 61, 62, 56, 61, 62, 50, 34, 60, 36,
- 54, 61, 62, 15, 60, 12, -1, 59, 61, 62,
- -1, 61, 62, -1, 25, 57, 27, -1, 61, 62,
- 29, 63, 34, 12, 36, 29, 25, 38, 27, -1,
- 25, 83, 27, 25, -1, 27, 61, 62, 25, 38,
- 27, -1, 25, 38, 27, -1, 38, 25, -1, 27,
- 57, 38, 61, 62, -1, 38, 63, 61, 62, 25,
- 38, 27, 15, 25, 25, 27, 27, 25, 57, 27,
- 8, 25, 38, 27, 63, -1, 38, 38, 18, 19,
- 38, 34, 8, 36, 38, 18, 19, 18, 19, 18,
- 19, 29, -1, -1, -1, 23, 24, -1, -1, -1,
- -1, -1, -1, 29, 32, 45, 46, 35, -1, 37,
- 23, 24, 45, 46, 45, 46, 45, 46, -1, 32,
- -1, 59, 35, -1, 37, 23, 24, -1, -1, -1,
- -1, -1, -1, 59, 32, -1, 25, 35, 27, 37,
- -1, -1, 23, 24, -1, 83, -1, -1, -1, 38,
- 31, 32, 23, 24, 35, -1, 37, 83, 22, -1,
- 31, 32, 23, 24, 35, 29, 37, -1, 22, -1,
- 31, 32, 23, 24, 35, 29, 37, -1, 22, -1,
- 31, 32, 23, 24, 35, 29, 37, -1, -1, -1,
- 31, 32, -1, -1, 35, 59, 37, 22, -1, -1,
- 23, 24, -1, -1, 29, 59, -1, -1, 72, 32,
- -1, 55, 35, -1, 37, 59, -1, 81, 72, 83,
- -1, 85, -1, -1, -1, -1, -1, 81, 72, 83,
- 55, 85, -1, -1, 59, -1, -1, 81, -1, 83,
- -1, 85, -1, -1, -1, -1, -1, 72, -1, -1,
- -1, -1, -1, -1, -1, -1, 81, -1, 83, -1,
- 85, -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, -1, 67,
- -1, 58, -1, -1, -1, -1, -1, 64, -1, -1,
- 78, 79, 80, -1, -1, -1, -1, -1, -1, -1,
- 77, -1, -1, -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, -1, 67, -1, 58, -1, -1,
- -1, -1, -1, 64, -1, -1, 78, 79, 80, -1,
- -1, -1, -1, -1, -1, -1, 77, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 3, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 13, -1,
- -1, -1, 17, -1, -1, -1, -1, -1, -1, -1,
- -1, 26, -1, 28, -1, -1, 31, -1, -1, -1,
- -1, -1, -1, -1, 39, -1, 41, 42, -1, -1,
- -1, -1, -1, -1, 49, -1, -1, 52, 53, -1,
- -1, -1, -1, 58, -1, -1, -1, -1, -1, 64,
+ 5, 60, 5, 7, 36, 55, 17, 36, 7, 36,
+ 36, 7, 33, 48, 7, 61, 60, 1, 61, 8,
+ 60, 2, 7, 60, 33, 5, 36, 17, 7, 36,
+ 31, 78, 55, 8, 36, 7, 7, 55, 16, 33,
+ 55, 36, 8, 8, 7, 7, 29, 8, 36, 36,
+ 36, 33, 60, 7, 7, 55, 33, 33, 7, 33,
+ 20, 7, 60, 36, 33, 7, 2, 8, 60, 36,
+ 8, 1, 7, 29, 8, 7, 88, 36, 2, 8,
+ 48, 78, 7, 33, 36, 55, 7, 7, 1, 36,
+ 33, 36, 8, 7, 1, 0, 60, 36, 55, 10,
+ 48, -1, 60, -1, 7, 33, 61, 6, 8, -1,
+ 8, 8, 8, 36, 7, 48, 7, 8, -1, 8,
+ 8, 20, 40, 40, 8, 65, 8, 78, 8, 60,
+ 33, 8, 76, 51, 51, -1, 40, -1, 7, 66,
+ 33, 50, 61, 62, 55, 54, 15, 51, 42, 61,
+ 62, 88, 78, 61, 62, 61, 62, 7, -1, 53,
+ 60, 8, 60, 60, 60, 15, 61, 62, 56, 40,
+ 2, 60, 56, 8, 61, 62, 56, 50, 60, 8,
+ 51, 54, 61, 62, 61, 61, 62, 12, 8, 29,
+ 29, 29, 15, -1, -1, 29, 29, 15, -1, 29,
+ -1, 25, 8, 27, 25, -1, 27, 29, 25, 56,
+ 27, 34, -1, 36, 38, 29, 34, 38, 36, -1,
+ 29, 38, 12, -1, 8, 60, 66, 67, 66, 67,
+ -1, 60, 57, 66, 67, 74, 66, 67, 63, 12,
+ 74, 61, 62, 29, 66, 67, 85, 25, 25, 27,
+ 27, 85, 66, 67, 29, 61, 62, 66, 67, 8,
+ 38, 38, 25, 25, 27, 27, 25, 57, 27, 25,
+ 25, 27, 27, 63, 15, 38, 38, 61, 62, 38,
+ 66, 67, 38, 38, 57, 29, -1, 29, -1, 29,
+ 63, 66, 67, 34, 29, 36, 29, -1, 29, -1,
+ -1, 18, 19, -1, -1, 36, -1, 56, -1, -1,
+ 18, 19, 18, 19, -1, 29, -1, -1, 18, 19,
+ 29, -1, 66, 67, 66, 67, 66, 67, 45, 46,
+ 29, 66, 67, 66, 67, 66, 67, 45, 46, 45,
+ 46, 29, 25, -1, 27, 45, 46, 61, 62, 29,
+ 59, -1, 66, 67, 8, 38, -1, 66, 67, -1,
+ -1, -1, 61, 62, -1, -1, -1, 66, 67, -1,
+ -1, -1, -1, 61, 62, 29, 85, 8, 66, 67,
+ -1, 61, 62, 23, 24, -1, 66, 67, 10, -1,
+ -1, 31, 32, -1, -1, 35, -1, 37, 29, -1,
+ 22, -1, 23, 24, -1, 59, -1, 29, 23, 24,
+ 31, 32, 66, 67, 35, -1, 37, 32, -1, -1,
+ 35, -1, 37, -1, -1, -1, -1, -1, 59, -1,
+ 10, 85, -1, -1, -1, 66, 67, 59, -1, -1,
+ -1, -1, 22, -1, 66, 67, -1, -1, -1, 29,
+ 10, -1, 74, 10, 85, -1, -1, -1, -1, -1,
+ -1, 83, 22, 85, -1, 22, -1, -1, -1, 29,
+ -1, -1, 29, -1, -1, -1, 23, 24, -1, 59,
+ -1, -1, -1, -1, 31, 32, 66, 67, 35, -1,
+ 37, -1, -1, -1, 74, 55, -1, -1, 55, 59,
+ -1, -1, 59, 83, -1, 85, 66, 67, -1, 66,
+ 67, -1, -1, -1, 74, -1, -1, 74, -1, -1,
+ -1, -1, -1, 83, 3, 85, 83, -1, 85, -1,
+ -1, -1, -1, -1, 13, -1, -1, -1, 17, -1,
+ -1, -1, -1, -1, 3, -1, -1, 26, -1, 28,
+ -1, -1, 31, -1, 13, -1, -1, -1, 17, -1,
+ 39, -1, 41, 42, -1, -1, -1, 26, -1, 28,
+ 49, -1, -1, 52, 53, -1, -1, -1, -1, 58,
+ 39, -1, 41, 42, -1, 64, -1, -1, -1, -1,
+ 49, -1, -1, 52, 53, -1, -1, -1, -1, 58,
+ 79, -1, -1, -1, -1, 64, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 77, -1, -1, -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, -1,
- 67, -1, 69, -1, 71, -1, 73, -1, -1, -1,
- -1, 78, 79, 80, -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, -1, 67, -1,
- 69, -1, 71, 72, 73, -1, -1, -1, -1, 78,
- 79, 80, -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, -1,
- 67, -1, 69, -1, 71, -1, 73, -1, -1, -1,
- -1, 78, 79, 80, -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, 56, -1, -1,
- -1, -1, -1, -1, -1, -1, 65, -1, 67, -1,
- 69, -1, 71, -1, 73, -1, -1, -1, -1, 78,
- 79, 80, -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, 56, -1, -1, -1, -1,
- -1, -1, -1, -1, 65, -1, 67, -1, 69, -1,
- 71, -1, 73, -1, -1, -1, -1, 78, 79, 80,
- -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,
+ 79, -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, 59, -1, -1, -1, -1, -1, -1,
- 66, 67, 68, -1, 70, 71, 72, 73, 74, 75,
- -1, -1, 78, 79, 80, 81, 82, 83, -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, -1, 70,
- 71, 72, 73, 74, 75, -1, -1, 78, 79, 80,
- 81, 82, 83, -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, 68, -1, 70, 71, 72, 73, 74, 75,
- -1, -1, 78, 79, 80, 81, 82, 83, -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, -1, -1, 78, 79, 80,
- 81, 82, -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,
+ -1, -1, -1, -1, -1, 65, 66, 67, -1, 69,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 80, 81, 82, -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, -1, 69,
+ -1, 71, -1, 73, -1, 75, -1, -1, -1, -1,
+ 80, 81, 82, -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, -1, 69,
+ -1, 71, -1, 73, 74, 75, -1, -1, -1, -1,
+ 80, 81, 82, -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, 56, -1, -1, -1,
+ -1, -1, -1, -1, -1, 65, 66, 67, -1, 69,
+ -1, 71, -1, 73, -1, 75, -1, -1, -1, -1,
+ 80, 81, 82, -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, -1, 69, -1, 71, -1, 73, -1, 75,
+ -1, -1, -1, -1, 80, 81, 82, -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, 59, -1, 61, -1, -1, -1, 65,
- 66, 67, 68, 69, 70, 71, 72, 73, 74, 75,
- -1, -1, 78, 79, 80, 81, 82, -1, -1, -1,
+ 56, -1, -1, -1, -1, -1, -1, -1, -1, 65,
+ 66, 67, -1, 69, -1, 71, -1, 73, -1, 75,
+ -1, -1, -1, -1, 80, 81, 82, -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, -1, 72, 73, 74, 75, 76, 77, -1,
+ -1, 80, 81, 82, 83, 84, 85, -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, -1,
+ 72, 73, 74, 75, 76, 77, -1, -1, 80, 81,
+ 82, 83, 84, 85, -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, 68, 69, 70, -1, 72, 73, 74,
+ 75, 76, 77, -1, -1, 80, 81, 82, 83, 84,
+ 85, -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,
+ -1, -1, 80, 81, 82, 83, 84, -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,
@@ -677,58 +695,79 @@ const int JavaScriptGrammar::action_check [] = {
-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, -1, -1, 78, 79, 80,
- 81, 82, -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,
- -1, -1, 78, 79, 80, 81, 82, -1, 84, -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, -1, -1, 78, 79, 80,
- 81, 82, 83, -1, -1, -1, -1, -1,
+ 71, 72, 73, 74, 75, 76, 77, -1, -1, 80,
+ 81, 82, 83, 84, -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, -1, -1, 80, 81, 82, 83,
+ 84, -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, -1, -1, 80, 81, 82, 83, 84, -1, 86,
+ -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, -1, -1,
+ 80, 81, 82, 83, 84, 85, -1, -1, -1, -1,
+ -1,
- 22, 18, 56, 22, 14, 13, 24, 60, 13, 22,
- 14, 13, 80, 14, 13, 22, 14, 5, 78, 22,
- 16, 14, 22, 14, 60, 22, 9, 22, 22, 14,
- 22, 92, 22, 14, 13, 13, 25, 9, 13, 10,
- 9, 74, 86, 13, 60, 60, 14, 13, 13, 89,
- 14, 14, 14, 14, 14, 13, 91, 14, 13, 13,
- 13, -1, 74, 14, 14, 6, 33, 14, 8, 7,
- 10, 38, 10, -1, 33, 16, -1, 33, 14, -1,
- 36, 33, -1, 35, 33, 33, 35, 35, 47, 33,
- 33, 33, 27, 36, 33, 30, 35, 27, -1, 33,
- 30, 35, -1, 45, 33, 49, 33, 57, 33, 38,
- 57, 38, 33, 38, 35, 33, 33, 33, 35, 33,
- 38, 35, 33, 33, 35, 33, -1, 43, 33, 39,
- 13, 39, 15, 38, 33, 33, 33, 33, 14, 38,
- 38, 38, 33, 39, 35, 33, 33, 35, 33, 33,
- 14, 35, 39, 38, 33, 33, 33, 35, -1, 33,
- 22, 38, 41, 37, 22, 33, 33, 29, 35, 37,
- 33, 29, 25, 26, 33, 38, 35, 2, 33, 33,
- -1, 57, 37, 33, 38, -1, -1, 33, 38, -1,
- 44, 16, 38, 57, 40, 33, 33, 13, 33, 15,
- 38, 38, 33, 38, 33, 55, 13, 38, 15, 38,
- 33, 46, -1, -1, -1, 38, 33, 55, 55, 48,
- 33, 38, 33, 40, 55, 38, -1, 38, 33, 42,
- -1, 33, 55, 38, -1, 40, 38, -1, 40, 50,
- -1, -1, 6, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 16, -1, -1, -1, -1, -1, -1, -1,
+ 91, 88, 15, 24, 9, 15, 13, 13, 20, 24,
+ 13, 15, 9, 15, 14, 62, 15, 18, 58, 9,
+ 18, 15, 13, 18, 13, 13, 13, 93, 24, 62,
+ 15, 13, 18, 13, 62, 95, 95, 18, 15, 18,
+ 24, 24, 13, 15, 13, 15, 24, 95, 15, 13,
+ 18, 13, 18, 13, 13, 13, 13, 100, -1, 15,
+ 15, 24, -1, -1, 15, 26, 15, 13, 18, 62,
+ 24, 24, 24, 18, 18, 15, 18, 24, 15, 18,
+ 15, 24, 18, 15, 15, 10, 15, 35, 31, 13,
+ -1, -1, 40, 18, 35, 18, 18, 35, 5, 40,
+ 13, 35, 40, 18, 24, 35, 40, 35, 35, 35,
+ 40, 31, 40, -1, 35, -1, 37, 35, 35, -1,
+ 18, 39, 49, 40, 59, 51, 35, 59, 59, 35,
+ 59, 40, 35, 35, 40, 37, 35, 40, 37, 35,
+ 35, 37, 35, 35, 80, 37, -1, 40, 43, 35,
+ 35, 37, 76, 35, 35, 37, 41, 35, 35, 82,
+ 41, 38, 40, 76, 35, 35, 35, 35, 35, 38,
+ 41, 41, 94, 35, 35, 37, 37, 45, -1, 94,
+ 47, 35, 29, 37, 35, 32, 37, 35, -1, 35,
+ 35, 39, 37, 39, -1, 35, 94, 37, 35, 29,
+ 37, 35, 32, 35, 35, -1, 40, 35, 40, 40,
+ -1, 35, 40, 16, 17, 18, 40, 35, 50, 35,
+ 35, 52, 40, 57, 40, 40, 42, 42, 46, 57,
+ 35, 35, 18, 57, 35, 40, 40, 42, 35, 40,
+ -1, 27, 28, 40, 8, 42, 10, 7, -1, -1,
+ 10, -1, 35, 57, 18, 35, 57, 40, 18, 2,
+ 40, -1, 18, -1, 44, 48, -1, -1, -1, -1,
+ -1, 27, -1, 16, 17, 18, -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, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 6, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 16, 17, 18, -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, 98, -1, -1, -1, 93, -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};
diff --git a/src/declarative/qml/parser/javascriptgrammar_p.h b/src/declarative/qml/parser/javascriptgrammar_p.h
index 61a2eb0..5a882e8 100644
--- a/src/declarative/qml/parser/javascriptgrammar_p.h
+++ b/src/declarative/qml/parser/javascriptgrammar_p.h
@@ -59,8 +59,8 @@ class JavaScriptGrammar
public:
enum {
EOF_SYMBOL = 0,
- REDUCE_HERE = 88,
- SHIFT_THERE = 87,
+ REDUCE_HERE = 90,
+ SHIFT_THERE = 89,
T_AND = 1,
T_AND_AND = 2,
T_AND_EQ = 3,
@@ -70,9 +70,9 @@ public:
T_CATCH = 6,
T_COLON = 7,
T_COMMA = 8,
- T_CONST = 81,
+ T_CONST = 83,
T_CONTINUE = 9,
- T_DEBUGGER = 82,
+ T_DEBUGGER = 84,
T_DEFAULT = 10,
T_DELETE = 11,
T_DIVIDE_ = 12,
@@ -83,7 +83,7 @@ public:
T_EQ = 17,
T_EQ_EQ = 18,
T_EQ_EQ_EQ = 19,
- T_FALSE = 80,
+ T_FALSE = 82,
T_FINALLY = 20,
T_FOR = 21,
T_FUNCTION = 22,
@@ -95,7 +95,7 @@ public:
T_GT_GT_GT_EQ = 28,
T_IDENTIFIER = 29,
T_IF = 30,
- T_IMPORT = 86,
+ T_IMPORT = 88,
T_IN = 31,
T_INSTANCEOF = 32,
T_LBRACE = 33,
@@ -108,12 +108,12 @@ public:
T_MINUS = 40,
T_MINUS_EQ = 41,
T_MINUS_MINUS = 42,
- T_MULTILINE_STRING_LITERAL = 84,
+ T_MULTILINE_STRING_LITERAL = 86,
T_NEW = 43,
T_NOT = 44,
T_NOT_EQ = 45,
T_NOT_EQ_EQ = 46,
- T_NULL = 78,
+ T_NULL = 80,
T_NUMERIC_LITERAL = 47,
T_OR = 48,
T_OR_EQ = 49,
@@ -121,42 +121,44 @@ public:
T_PLUS = 51,
T_PLUS_EQ = 52,
T_PLUS_PLUS = 53,
- T_PUBLIC = 85,
+ T_PROPERTY = 66,
+ T_PUBLIC = 87,
T_QUESTION = 54,
T_RBRACE = 55,
T_RBRACKET = 56,
T_REMAINDER = 57,
T_REMAINDER_EQ = 58,
- T_RESERVED_WORD = 83,
+ T_RESERVED_WORD = 85,
T_RETURN = 59,
T_RPAREN = 60,
T_SEMICOLON = 61,
+ T_SIGNAL = 67,
T_STAR = 63,
T_STAR_EQ = 64,
T_STRING_LITERAL = 65,
- T_SWITCH = 66,
- T_THIS = 67,
- T_THROW = 68,
- T_TILDE = 69,
- T_TRUE = 79,
- T_TRY = 70,
- T_TYPEOF = 71,
- T_VAR = 72,
- T_VOID = 73,
- T_WHILE = 74,
- T_WITH = 75,
- T_XOR = 76,
- T_XOR_EQ = 77,
-
- ACCEPT_STATE = 531,
- RULE_COUNT = 304,
- STATE_COUNT = 532,
- TERMINAL_COUNT = 89,
- NON_TERMINAL_COUNT = 100,
-
- GOTO_INDEX_OFFSET = 532,
- GOTO_INFO_OFFSET = 1798,
- GOTO_CHECK_OFFSET = 1798
+ T_SWITCH = 68,
+ T_THIS = 69,
+ T_THROW = 70,
+ T_TILDE = 71,
+ T_TRUE = 81,
+ T_TRY = 72,
+ T_TYPEOF = 73,
+ T_VAR = 74,
+ T_VOID = 75,
+ T_WHILE = 76,
+ T_WITH = 77,
+ T_XOR = 78,
+ T_XOR_EQ = 79,
+
+ ACCEPT_STATE = 565,
+ RULE_COUNT = 316,
+ STATE_COUNT = 566,
+ TERMINAL_COUNT = 91,
+ NON_TERMINAL_COUNT = 102,
+
+ GOTO_INDEX_OFFSET = 566,
+ GOTO_INFO_OFFSET = 1811,
+ GOTO_CHECK_OFFSET = 1811
};
static const char *const spell [];
diff --git a/src/declarative/qml/parser/javascriptlexer.cpp b/src/declarative/qml/parser/javascriptlexer.cpp
index 90f8e44..7bbb4bf 100644
--- a/src/declarative/qml/parser/javascriptlexer.cpp
+++ b/src/declarative/qml/parser/javascriptlexer.cpp
@@ -291,6 +291,10 @@ int JavaScript::Lexer::findReservedWord(const QChar *c, int size) const
&& c[2] == QLatin1Char('p') && c[3] == QLatin1Char('o')
&& c[4] == QLatin1Char('r') && c[5] == QLatin1Char('t'))
return JavaScriptGrammar::T_IMPORT;
+ else if (c[0] == QLatin1Char('s') && c[1] == QLatin1Char('i')
+ && c[2] == QLatin1Char('g') && c[3] == QLatin1Char('n')
+ && c[4] == QLatin1Char('a') && c[5] == QLatin1Char('l'))
+ return JavaScriptGrammar::T_IMPORT;
else if (check_reserved) {
if (c[0] == QLatin1Char('e') && c[1] == QLatin1Char('x')
&& c[2] == QLatin1Char('p') && c[3] == QLatin1Char('o')
@@ -374,6 +378,11 @@ int JavaScript::Lexer::findReservedWord(const QChar *c, int size) const
&& c[4] == QLatin1Char('g') && c[5] == QLatin1Char('g')
&& c[6] == QLatin1Char('e') && c[7] == QLatin1Char('r'))
return JavaScriptGrammar::T_DEBUGGER;
+ else if (c[0] == QLatin1Char('p') && c[1] == QLatin1Char('r')
+ && c[2] == QLatin1Char('o') && c[3] == QLatin1Char('p')
+ && c[4] == QLatin1Char('e') && c[5] == QLatin1Char('r')
+ && c[6] == QLatin1Char('t') && c[7] == QLatin1Char('y'))
+ return JavaScriptGrammar::T_PROPERTY;
else if (check_reserved) {
if (c[0] == QLatin1Char('a') && c[1] == QLatin1Char('b')
&& c[2] == QLatin1Char('s') && c[3] == QLatin1Char('t')
diff --git a/src/declarative/qml/parser/javascriptparser.cpp b/src/declarative/qml/parser/javascriptparser.cpp
index 58b7a5b..21dcb0f 100644
--- a/src/declarative/qml/parser/javascriptparser.cpp
+++ b/src/declarative/qml/parser/javascriptparser.cpp
@@ -271,116 +271,130 @@ case 25: {
sym(1).Node = node;
} break;
-case 26: {
+case 26:
+
+case 27: {
+ sym(1).sval = driver->intern(lexer->characterBuffer(), lexer->characterCount());
+ break;
+}
+
+case 29: {
AST::UiPublicMember *node = makeAstNode<AST::UiPublicMember> (driver->nodePool(), sym(2).sval, sym(3).sval);
- node->publicToken = loc(1);
- node->attributeTypeToken = loc(2);
+ node->propertyToken = loc(1);
+ node->typeToken = loc(2);
node->identifierToken = loc(3);
sym(1).Node = node;
} break;
-case 27: {
+case 30: {
AST::UiPublicMember *node = makeAstNode<AST::UiPublicMember> (driver->nodePool(), sym(3).sval, sym(4).sval);
node->isDefaultMember = true;
- node->publicToken = loc(1);
- node->attributeTypeToken = loc(3);
+ node->propertyToken = loc(1);
+ node->typeToken = loc(3);
node->identifierToken = loc(4);
sym(1).Node = node;
} break;
-case 28: {
+case 31: {
AST::UiPublicMember *node = makeAstNode<AST::UiPublicMember> (driver->nodePool(), sym(2).sval, sym(3).sval,
sym(5).Expression);
- node->publicToken = loc(1);
- node->attributeTypeToken = loc(2);
+ node->propertyToken = loc(1);
+ node->typeToken = loc(2);
node->identifierToken = loc(3);
node->colonToken = loc(4);
sym(1).Node = node;
} break;
-case 29: {
+case 32: {
AST::UiPublicMember *node = makeAstNode<AST::UiPublicMember> (driver->nodePool(), sym(3).sval, sym(4).sval,
sym(6).Expression);
node->isDefaultMember = true;
- node->publicToken = loc(1);
- node->attributeTypeToken = loc(3);
+ node->propertyToken = loc(1);
+ node->typeToken = loc(3);
node->identifierToken = loc(4);
node->colonToken = loc(5);
sym(1).Node = node;
} break;
-case 30: {
+case 33: {
sym(1).Node = makeAstNode<AST::UiSourceElement>(driver->nodePool(), sym(1).Node);
} break;
-case 31: {
+case 34: {
sym(1).Node = makeAstNode<AST::UiSourceElement>(driver->nodePool(), sym(1).Node);
} break;
-case 32:
+case 35:
-case 33:
+case 36:
{
AST::UiQualifiedId *node = makeAstNode<AST::UiQualifiedId> (driver->nodePool(), driver->intern(lexer->characterBuffer(), lexer->characterCount()));
node->identifierToken = loc(1);
sym(1).Node = node;
} break;
-case 34: {
+case 38:
+
+case 39: {
+ sym(1).sval = driver->intern(lexer->characterBuffer(), lexer->characterCount());
+ break;
+}
+
+case 40: {
AST::UiQualifiedId *node = makeAstNode<AST::UiQualifiedId> (driver->nodePool(), sym(1).sval);
node->identifierToken = loc(1);
sym(1).Node = node;
} break;
-case 35: {
+case 41: {
AST::UiQualifiedId *node = makeAstNode<AST::UiQualifiedId> (driver->nodePool(), sym(1).UiQualifiedId, sym(3).sval);
node->identifierToken = loc(3);
sym(1).Node = node;
} break;
-case 36: {
+case 42: {
AST::ThisExpression *node = makeAstNode<AST::ThisExpression> (driver->nodePool());
node->thisToken = loc(1);
sym(1).Node = node;
} break;
-case 37: {
+case 43: {
AST::IdentifierExpression *node = makeAstNode<AST::IdentifierExpression> (driver->nodePool(), sym(1).sval);
node->identifierToken = loc(1);
sym(1).Node = node;
} break;
-case 38: {
+case 44: {
AST::NullExpression *node = makeAstNode<AST::NullExpression> (driver->nodePool());
node->nullToken = loc(1);
sym(1).Node = node;
} break;
-case 39: {
+case 45: {
AST::TrueLiteral *node = makeAstNode<AST::TrueLiteral> (driver->nodePool());
node->trueToken = loc(1);
sym(1).Node = node;
} break;
-case 40: {
+case 46: {
AST::FalseLiteral *node = makeAstNode<AST::FalseLiteral> (driver->nodePool());
node->falseToken = loc(1);
sym(1).Node = node;
} break;
-case 41: {
+case 47: {
AST::NumericLiteral *node = makeAstNode<AST::NumericLiteral> (driver->nodePool(), sym(1).dval);
node->literalToken = loc(1);
sym(1).Node = node;
} break;
-case 42: {
+case 48: {
AST::StringLiteral *node = makeAstNode<AST::StringLiteral> (driver->nodePool(), sym(1).sval);
node->literalToken = loc(1);
sym(1).Node = node;
} break;
-case 43: {
+case 49: {
bool rx = lexer->scanRegExp(Lexer::NoPrefix);
if (!rx) {
diagnostic_messages.append(DiagnosticMessage(DiagnosticMessage::Error, lexer->startLineNo(),
@@ -392,7 +406,7 @@ case 43: {
sym(1).Node = node;
} break;
-case 44: {
+case 50: {
bool rx = lexer->scanRegExp(Lexer::EqualPrefix);
if (!rx) {
diagnostic_messages.append(DiagnosticMessage(DiagnosticMessage::Error, lexer->startLineNo(),
@@ -404,21 +418,21 @@ case 44: {
sym(1).Node = node;
} break;
-case 45: {
+case 51: {
AST::ArrayLiteral *node = makeAstNode<AST::ArrayLiteral> (driver->nodePool(), sym(2).Elision);
node->lbracketToken = loc(1);
node->rbracketToken = loc(3);
sym(1).Node = node;
} break;
-case 46: {
+case 52: {
AST::ArrayLiteral *node = makeAstNode<AST::ArrayLiteral> (driver->nodePool(), sym(2).ElementList->finish ());
node->lbracketToken = loc(1);
node->rbracketToken = loc(3);
sym(1).Node = node;
} break;
-case 47: {
+case 53: {
AST::ArrayLiteral *node = makeAstNode<AST::ArrayLiteral> (driver->nodePool(), sym(2).ElementList->finish (), sym(4).Elision);
node->lbracketToken = loc(1);
node->commaToken = loc(3);
@@ -426,7 +440,7 @@ case 47: {
sym(1).Node = node;
} break;
-case 48: {
+case 54: {
AST::ObjectLiteral *node = 0;
if (sym(2).Node)
node = makeAstNode<AST::ObjectLiteral> (driver->nodePool(),
@@ -438,7 +452,7 @@ case 48: {
sym(1).Node = node;
} break;
-case 49: {
+case 55: {
AST::ObjectLiteral *node = makeAstNode<AST::ObjectLiteral> (driver->nodePool(),
sym(2).PropertyNameAndValueList->finish ());
node->lbraceToken = loc(1);
@@ -446,51 +460,51 @@ case 49: {
sym(1).Node = node;
} break;
-case 50: {
+case 56: {
AST::NestedExpression *node = makeAstNode<AST::NestedExpression>(driver->nodePool(), sym(2).Expression);
node->lparenToken = loc(1);
node->rparenToken = loc(3);
sym(1).Node = node;
} break;
-case 51: {
+case 57: {
sym(1).Node = makeAstNode<AST::ElementList> (driver->nodePool(), sym(1).Elision, sym(2).Expression);
} break;
-case 52: {
+case 58: {
AST::ElementList *node = makeAstNode<AST::ElementList> (driver->nodePool(), sym(1).ElementList, sym(3).Elision, sym(4).Expression);
node->commaToken = loc(2);
sym(1).Node = node;
} break;
-case 53: {
+case 59: {
AST::Elision *node = makeAstNode<AST::Elision> (driver->nodePool());
node->commaToken = loc(1);
sym(1).Node = node;
} break;
-case 54: {
+case 60: {
AST::Elision *node = makeAstNode<AST::Elision> (driver->nodePool(), sym(1).Elision);
node->commaToken = loc(2);
sym(1).Node = node;
} break;
-case 55: {
+case 61: {
sym(1).Node = 0;
} break;
-case 56: {
+case 62: {
sym(1).Elision = sym(1).Elision->finish ();
} break;
-case 57: {
+case 63: {
AST::PropertyNameAndValueList *node = makeAstNode<AST::PropertyNameAndValueList> (driver->nodePool(),
sym(1).PropertyName, sym(3).Expression);
node->colonToken = loc(2);
sym(1).Node = node;
} break;
-case 58: {
+case 64: {
AST::PropertyNameAndValueList *node = makeAstNode<AST::PropertyNameAndValueList> (driver->nodePool(),
sym(1).PropertyNameAndValueList, sym(3).PropertyName, sym(5).Expression);
node->commaToken = loc(2);
@@ -498,46 +512,36 @@ case 58: {
sym(1).Node = node;
} break;
-case 59: {
+case 65: {
AST::IdentifierPropertyName *node = makeAstNode<AST::IdentifierPropertyName> (driver->nodePool(), sym(1).sval);
node->propertyNameToken = loc(1);
sym(1).Node = node;
} break;
-case 60: {
+case 67: {
+ AST::IdentifierPropertyName *node = makeAstNode<AST::IdentifierPropertyName> (driver->nodePool(), driver->intern(lexer->characterBuffer(), lexer->characterCount()));
+ node->propertyNameToken = loc(1);
+ sym(1).Node = node;
+} break;
+
+case 68: {
AST::StringLiteralPropertyName *node = makeAstNode<AST::StringLiteralPropertyName> (driver->nodePool(), sym(1).sval);
node->propertyNameToken = loc(1);
sym(1).Node = node;
} break;
-case 61: {
+case 69: {
AST::NumericLiteralPropertyName *node = makeAstNode<AST::NumericLiteralPropertyName> (driver->nodePool(), sym(1).dval);
node->propertyNameToken = loc(1);
sym(1).Node = node;
} break;
-case 62: {
+case 70: {
AST::IdentifierPropertyName *node = makeAstNode<AST::IdentifierPropertyName> (driver->nodePool(), sym(1).sval);
node->propertyNameToken = loc(1);
sym(1).Node = node;
} break;
-case 63:
-
-case 64:
-
-case 65:
-
-case 66:
-
-case 67:
-
-case 68:
-
-case 69:
-
-case 70:
-
case 71:
case 72:
@@ -583,25 +587,41 @@ case 91:
case 92:
case 93:
+
+case 94:
+
+case 95:
+
+case 96:
+
+case 97:
+
+case 98:
+
+case 99:
+
+case 100:
+
+case 101:
{
sym(1).sval = driver->intern(lexer->characterBuffer(), lexer->characterCount());
} break;
-case 98: {
+case 106: {
AST::ArrayMemberExpression *node = makeAstNode<AST::ArrayMemberExpression> (driver->nodePool(), sym(1).Expression, sym(3).Expression);
node->lbracketToken = loc(2);
node->rbracketToken = loc(4);
sym(1).Node = node;
} break;
-case 99: {
+case 107: {
AST::FieldMemberExpression *node = makeAstNode<AST::FieldMemberExpression> (driver->nodePool(), sym(1).Expression, sym(3).sval);
node->dotToken = loc(2);
node->identifierToken = loc(3);
sym(1).Node = node;
} break;
-case 100: {
+case 108: {
AST::NewMemberExpression *node = makeAstNode<AST::NewMemberExpression> (driver->nodePool(), sym(2).Expression, sym(4).ArgumentList);
node->newToken = loc(1);
node->lparenToken = loc(3);
@@ -609,384 +629,384 @@ case 100: {
sym(1).Node = node;
} break;
-case 102: {
+case 110: {
AST::NewExpression *node = makeAstNode<AST::NewExpression> (driver->nodePool(), sym(2).Expression);
node->newToken = loc(1);
sym(1).Node = node;
} break;
-case 103: {
+case 111: {
AST::CallExpression *node = makeAstNode<AST::CallExpression> (driver->nodePool(), sym(1).Expression, sym(3).ArgumentList);
node->lparenToken = loc(2);
node->rparenToken = loc(4);
sym(1).Node = node;
} break;
-case 104: {
+case 112: {
AST::CallExpression *node = makeAstNode<AST::CallExpression> (driver->nodePool(), sym(1).Expression, sym(3).ArgumentList);
node->lparenToken = loc(2);
node->rparenToken = loc(4);
sym(1).Node = node;
} break;
-case 105: {
+case 113: {
AST::ArrayMemberExpression *node = makeAstNode<AST::ArrayMemberExpression> (driver->nodePool(), sym(1).Expression, sym(3).Expression);
node->lbracketToken = loc(2);
node->rbracketToken = loc(4);
sym(1).Node = node;
} break;
-case 106: {
+case 114: {
AST::FieldMemberExpression *node = makeAstNode<AST::FieldMemberExpression> (driver->nodePool(), sym(1).Expression, sym(3).sval);
node->dotToken = loc(2);
node->identifierToken = loc(3);
sym(1).Node = node;
} break;
-case 107: {
+case 115: {
sym(1).Node = 0;
} break;
-case 108: {
+case 116: {
sym(1).Node = sym(1).ArgumentList->finish();
} break;
-case 109: {
+case 117: {
sym(1).Node = makeAstNode<AST::ArgumentList> (driver->nodePool(), sym(1).Expression);
} break;
-case 110: {
+case 118: {
AST::ArgumentList *node = makeAstNode<AST::ArgumentList> (driver->nodePool(), sym(1).ArgumentList, sym(3).Expression);
node->commaToken = loc(2);
sym(1).Node = node;
} break;
-case 114: {
+case 122: {
AST::PostIncrementExpression *node = makeAstNode<AST::PostIncrementExpression> (driver->nodePool(), sym(1).Expression);
node->incrementToken = loc(2);
sym(1).Node = node;
} break;
-case 115: {
+case 123: {
AST::PostDecrementExpression *node = makeAstNode<AST::PostDecrementExpression> (driver->nodePool(), sym(1).Expression);
node->decrementToken = loc(2);
sym(1).Node = node;
} break;
-case 117: {
+case 125: {
AST::DeleteExpression *node = makeAstNode<AST::DeleteExpression> (driver->nodePool(), sym(2).Expression);
node->deleteToken = loc(1);
sym(1).Node = node;
} break;
-case 118: {
+case 126: {
AST::VoidExpression *node = makeAstNode<AST::VoidExpression> (driver->nodePool(), sym(2).Expression);
node->voidToken = loc(1);
sym(1).Node = node;
} break;
-case 119: {
+case 127: {
AST::TypeOfExpression *node = makeAstNode<AST::TypeOfExpression> (driver->nodePool(), sym(2).Expression);
node->typeofToken = loc(1);
sym(1).Node = node;
} break;
-case 120: {
+case 128: {
AST::PreIncrementExpression *node = makeAstNode<AST::PreIncrementExpression> (driver->nodePool(), sym(2).Expression);
node->incrementToken = loc(1);
sym(1).Node = node;
} break;
-case 121: {
+case 129: {
AST::PreDecrementExpression *node = makeAstNode<AST::PreDecrementExpression> (driver->nodePool(), sym(2).Expression);
node->decrementToken = loc(1);
sym(1).Node = node;
} break;
-case 122: {
+case 130: {
AST::UnaryPlusExpression *node = makeAstNode<AST::UnaryPlusExpression> (driver->nodePool(), sym(2).Expression);
node->plusToken = loc(1);
sym(1).Node = node;
} break;
-case 123: {
+case 131: {
AST::UnaryMinusExpression *node = makeAstNode<AST::UnaryMinusExpression> (driver->nodePool(), sym(2).Expression);
node->minusToken = loc(1);
sym(1).Node = node;
} break;
-case 124: {
+case 132: {
AST::TildeExpression *node = makeAstNode<AST::TildeExpression> (driver->nodePool(), sym(2).Expression);
node->tildeToken = loc(1);
sym(1).Node = node;
} break;
-case 125: {
+case 133: {
AST::NotExpression *node = makeAstNode<AST::NotExpression> (driver->nodePool(), sym(2).Expression);
node->notToken = loc(1);
sym(1).Node = node;
} break;
-case 127: {
+case 135: {
AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
QSOperator::Mul, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 128: {
+case 136: {
AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
QSOperator::Div, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 129: {
+case 137: {
AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
QSOperator::Mod, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 131: {
+case 139: {
AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
QSOperator::Add, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 132: {
+case 140: {
AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
QSOperator::Sub, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 134: {
+case 142: {
AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
QSOperator::LShift, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 135: {
+case 143: {
AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
QSOperator::RShift, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 136: {
+case 144: {
AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
QSOperator::URShift, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 138: {
+case 146: {
AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
QSOperator::Lt, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 139: {
+case 147: {
AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
QSOperator::Gt, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 140: {
+case 148: {
AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
QSOperator::Le, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 141: {
+case 149: {
AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
QSOperator::Ge, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 142: {
+case 150: {
AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
QSOperator::InstanceOf, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 143: {
+case 151: {
AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
QSOperator::In, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 145: {
+case 153: {
AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
QSOperator::Lt, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 146: {
+case 154: {
AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
QSOperator::Gt, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 147: {
+case 155: {
AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
QSOperator::Le, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 148: {
+case 156: {
AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
QSOperator::Ge, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 149: {
+case 157: {
AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
QSOperator::InstanceOf, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 151: {
+case 159: {
AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
QSOperator::Equal, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 152: {
+case 160: {
AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
QSOperator::NotEqual, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 153: {
+case 161: {
AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
QSOperator::StrictEqual, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 154: {
+case 162: {
AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
QSOperator::StrictNotEqual, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 156: {
+case 164: {
AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
QSOperator::Equal, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 157: {
+case 165: {
AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
QSOperator::NotEqual, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 158: {
+case 166: {
AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
QSOperator::StrictEqual, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 159: {
+case 167: {
AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
QSOperator::StrictNotEqual, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 161: {
+case 169: {
AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
QSOperator::BitAnd, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 163: {
+case 171: {
AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
QSOperator::BitAnd, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 165: {
+case 173: {
AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
QSOperator::BitXor, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 167: {
+case 175: {
AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
QSOperator::BitXor, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 169: {
+case 177: {
AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
QSOperator::BitOr, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 171: {
+case 179: {
AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
QSOperator::BitOr, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 173: {
+case 181: {
AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
QSOperator::And, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 175: {
+case 183: {
AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
QSOperator::And, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 177: {
+case 185: {
AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
QSOperator::Or, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 179: {
+case 187: {
AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
QSOperator::Or, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 181: {
+case 189: {
AST::ConditionalExpression *node = makeAstNode<AST::ConditionalExpression> (driver->nodePool(), sym(1).Expression,
sym(3).Expression, sym(5).Expression);
node->questionToken = loc(2);
@@ -994,7 +1014,7 @@ case 181: {
sym(1).Node = node;
} break;
-case 183: {
+case 191: {
AST::ConditionalExpression *node = makeAstNode<AST::ConditionalExpression> (driver->nodePool(), sym(1).Expression,
sym(3).Expression, sym(5).Expression);
node->questionToken = loc(2);
@@ -1002,112 +1022,112 @@ case 183: {
sym(1).Node = node;
} break;
-case 185: {
+case 193: {
AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
sym(2).ival, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 187: {
+case 195: {
AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
sym(2).ival, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 188: {
+case 196: {
sym(1).ival = QSOperator::Assign;
} break;
-case 189: {
+case 197: {
sym(1).ival = QSOperator::InplaceMul;
} break;
-case 190: {
+case 198: {
sym(1).ival = QSOperator::InplaceDiv;
} break;
-case 191: {
+case 199: {
sym(1).ival = QSOperator::InplaceMod;
} break;
-case 192: {
+case 200: {
sym(1).ival = QSOperator::InplaceAdd;
} break;
-case 193: {
+case 201: {
sym(1).ival = QSOperator::InplaceSub;
} break;
-case 194: {
+case 202: {
sym(1).ival = QSOperator::InplaceLeftShift;
} break;
-case 195: {
+case 203: {
sym(1).ival = QSOperator::InplaceRightShift;
} break;
-case 196: {
+case 204: {
sym(1).ival = QSOperator::InplaceURightShift;
} break;
-case 197: {
+case 205: {
sym(1).ival = QSOperator::InplaceAnd;
} break;
-case 198: {
+case 206: {
sym(1).ival = QSOperator::InplaceXor;
} break;
-case 199: {
+case 207: {
sym(1).ival = QSOperator::InplaceOr;
} break;
-case 201: {
+case 209: {
AST::Expression *node = makeAstNode<AST::Expression> (driver->nodePool(), sym(1).Expression, sym(3).Expression);
node->commaToken = loc(2);
sym(1).Node = node;
} break;
-case 202: {
+case 210: {
sym(1).Node = 0;
} break;
-case 205: {
+case 213: {
AST::Expression *node = makeAstNode<AST::Expression> (driver->nodePool(), sym(1).Expression, sym(3).Expression);
node->commaToken = loc(2);
sym(1).Node = node;
} break;
-case 206: {
+case 214: {
sym(1).Node = 0;
} break;
-case 223: {
+case 231: {
AST::Block *node = makeAstNode<AST::Block> (driver->nodePool(), sym(2).StatementList);
node->lbraceToken = loc(1);
node->rbraceToken = loc(3);
sym(1).Node = node;
} break;
-case 224: {
+case 232: {
sym(1).Node = makeAstNode<AST::StatementList> (driver->nodePool(), sym(1).Statement);
} break;
-case 225: {
+case 233: {
sym(1).Node = makeAstNode<AST::StatementList> (driver->nodePool(), sym(1).StatementList, sym(2).Statement);
} break;
-case 226: {
+case 234: {
sym(1).Node = 0;
} break;
-case 227: {
+case 235: {
sym(1).Node = sym(1).StatementList->finish ();
} break;
-case 229: {
+case 237: {
AST::VariableStatement *node = makeAstNode<AST::VariableStatement> (driver->nodePool(),
sym(2).VariableDeclarationList->finish (/*readOnly=*/sym(1).ival == T_CONST));
node->declarationKindToken = loc(1);
@@ -1115,76 +1135,76 @@ case 229: {
sym(1).Node = node;
} break;
-case 230: {
+case 238: {
sym(1).ival = T_CONST;
} break;
-case 231: {
+case 239: {
sym(1).ival = T_VAR;
} break;
-case 232: {
+case 240: {
sym(1).Node = makeAstNode<AST::VariableDeclarationList> (driver->nodePool(), sym(1).VariableDeclaration);
} break;
-case 233: {
+case 241: {
AST::VariableDeclarationList *node = makeAstNode<AST::VariableDeclarationList> (driver->nodePool(),
sym(1).VariableDeclarationList, sym(3).VariableDeclaration);
node->commaToken = loc(2);
sym(1).Node = node;
} break;
-case 234: {
+case 242: {
sym(1).Node = makeAstNode<AST::VariableDeclarationList> (driver->nodePool(), sym(1).VariableDeclaration);
} break;
-case 235: {
+case 243: {
sym(1).Node = makeAstNode<AST::VariableDeclarationList> (driver->nodePool(), sym(1).VariableDeclarationList, sym(3).VariableDeclaration);
} break;
-case 236: {
+case 244: {
AST::VariableDeclaration *node = makeAstNode<AST::VariableDeclaration> (driver->nodePool(), sym(1).sval, sym(2).Expression);
node->identifierToken = loc(1);
sym(1).Node = node;
} break;
-case 237: {
+case 245: {
AST::VariableDeclaration *node = makeAstNode<AST::VariableDeclaration> (driver->nodePool(), sym(1).sval, sym(2).Expression);
node->identifierToken = loc(1);
sym(1).Node = node;
} break;
-case 238: {
+case 246: {
// ### TODO: AST for initializer
sym(1) = sym(2);
} break;
-case 239: {
+case 247: {
sym(1).Node = 0;
} break;
-case 241: {
+case 249: {
// ### TODO: AST for initializer
sym(1) = sym(2);
} break;
-case 242: {
+case 250: {
sym(1).Node = 0;
} break;
-case 244: {
+case 252: {
AST::EmptyStatement *node = makeAstNode<AST::EmptyStatement> (driver->nodePool());
node->semicolonToken = loc(1);
sym(1).Node = node;
} break;
-case 246: {
+case 254: {
AST::ExpressionStatement *node = makeAstNode<AST::ExpressionStatement> (driver->nodePool(), sym(1).Expression);
node->semicolonToken = loc(2);
sym(1).Node = node;
} break;
-case 247: {
+case 255: {
AST::IfStatement *node = makeAstNode<AST::IfStatement> (driver->nodePool(), sym(3).Expression, sym(5).Statement, sym(7).Statement);
node->ifToken = loc(1);
node->lparenToken = loc(2);
@@ -1193,7 +1213,7 @@ case 247: {
sym(1).Node = node;
} break;
-case 248: {
+case 256: {
AST::IfStatement *node = makeAstNode<AST::IfStatement> (driver->nodePool(), sym(3).Expression, sym(5).Statement);
node->ifToken = loc(1);
node->lparenToken = loc(2);
@@ -1201,7 +1221,7 @@ case 248: {
sym(1).Node = node;
} break;
-case 250: {
+case 258: {
AST::DoWhileStatement *node = makeAstNode<AST::DoWhileStatement> (driver->nodePool(), sym(2).Statement, sym(5).Expression);
node->doToken = loc(1);
node->whileToken = loc(3);
@@ -1211,7 +1231,7 @@ case 250: {
sym(1).Node = node;
} break;
-case 251: {
+case 259: {
AST::WhileStatement *node = makeAstNode<AST::WhileStatement> (driver->nodePool(), sym(3).Expression, sym(5).Statement);
node->whileToken = loc(1);
node->lparenToken = loc(2);
@@ -1219,7 +1239,7 @@ case 251: {
sym(1).Node = node;
} break;
-case 252: {
+case 260: {
AST::ForStatement *node = makeAstNode<AST::ForStatement> (driver->nodePool(), sym(3).Expression,
sym(5).Expression, sym(7).Expression, sym(9).Statement);
node->forToken = loc(1);
@@ -1230,7 +1250,7 @@ case 252: {
sym(1).Node = node;
} break;
-case 253: {
+case 261: {
AST::LocalForStatement *node = makeAstNode<AST::LocalForStatement> (driver->nodePool(),
sym(4).VariableDeclarationList->finish (/*readOnly=*/false), sym(6).Expression,
sym(8).Expression, sym(10).Statement);
@@ -1243,7 +1263,7 @@ case 253: {
sym(1).Node = node;
} break;
-case 254: {
+case 262: {
AST:: ForEachStatement *node = makeAstNode<AST::ForEachStatement> (driver->nodePool(), sym(3).Expression,
sym(5).Expression, sym(7).Statement);
node->forToken = loc(1);
@@ -1253,7 +1273,7 @@ case 254: {
sym(1).Node = node;
} break;
-case 255: {
+case 263: {
AST::LocalForEachStatement *node = makeAstNode<AST::LocalForEachStatement> (driver->nodePool(),
sym(4).VariableDeclaration, sym(6).Expression, sym(8).Statement);
node->forToken = loc(1);
@@ -1264,14 +1284,14 @@ case 255: {
sym(1).Node = node;
} break;
-case 257: {
+case 265: {
AST::ContinueStatement *node = makeAstNode<AST::ContinueStatement> (driver->nodePool());
node->continueToken = loc(1);
node->semicolonToken = loc(2);
sym(1).Node = node;
} break;
-case 259: {
+case 267: {
AST::ContinueStatement *node = makeAstNode<AST::ContinueStatement> (driver->nodePool(), sym(2).sval);
node->continueToken = loc(1);
node->identifierToken = loc(2);
@@ -1279,14 +1299,14 @@ case 259: {
sym(1).Node = node;
} break;
-case 261: {
+case 269: {
AST::BreakStatement *node = makeAstNode<AST::BreakStatement> (driver->nodePool());
node->breakToken = loc(1);
node->semicolonToken = loc(2);
sym(1).Node = node;
} break;
-case 263: {
+case 271: {
AST::BreakStatement *node = makeAstNode<AST::BreakStatement> (driver->nodePool(), sym(2).sval);
node->breakToken = loc(1);
node->identifierToken = loc(2);
@@ -1294,14 +1314,14 @@ case 263: {
sym(1).Node = node;
} break;
-case 265: {
+case 273: {
AST::ReturnStatement *node = makeAstNode<AST::ReturnStatement> (driver->nodePool(), sym(2).Expression);
node->returnToken = loc(1);
node->semicolonToken = loc(3);
sym(1).Node = node;
} break;
-case 266: {
+case 274: {
AST::WithStatement *node = makeAstNode<AST::WithStatement> (driver->nodePool(), sym(3).Expression, sym(5).Statement);
node->withToken = loc(1);
node->lparenToken = loc(2);
@@ -1309,7 +1329,7 @@ case 266: {
sym(1).Node = node;
} break;
-case 267: {
+case 275: {
AST::SwitchStatement *node = makeAstNode<AST::SwitchStatement> (driver->nodePool(), sym(3).Expression, sym(5).CaseBlock);
node->switchToken = loc(1);
node->lparenToken = loc(2);
@@ -1317,83 +1337,90 @@ case 267: {
sym(1).Node = node;
} break;
-case 268: {
+case 276: {
AST::CaseBlock *node = makeAstNode<AST::CaseBlock> (driver->nodePool(), sym(2).CaseClauses);
node->lbraceToken = loc(1);
node->rbraceToken = loc(3);
sym(1).Node = node;
} break;
-case 269: {
+case 277: {
AST::CaseBlock *node = makeAstNode<AST::CaseBlock> (driver->nodePool(), sym(2).CaseClauses, sym(3).DefaultClause, sym(4).CaseClauses);
node->lbraceToken = loc(1);
node->rbraceToken = loc(5);
sym(1).Node = node;
} break;
-case 270: {
+case 278: {
sym(1).Node = makeAstNode<AST::CaseClauses> (driver->nodePool(), sym(1).CaseClause);
} break;
-case 271: {
+case 279: {
sym(1).Node = makeAstNode<AST::CaseClauses> (driver->nodePool(), sym(1).CaseClauses, sym(2).CaseClause);
} break;
-case 272: {
+case 280: {
sym(1).Node = 0;
} break;
-case 273: {
+case 281: {
sym(1).Node = sym(1).CaseClauses->finish ();
} break;
-case 274: {
+case 282: {
AST::CaseClause *node = makeAstNode<AST::CaseClause> (driver->nodePool(), sym(2).Expression, sym(4).StatementList);
node->caseToken = loc(1);
node->colonToken = loc(3);
sym(1).Node = node;
} break;
-case 275: {
+case 283: {
AST::DefaultClause *node = makeAstNode<AST::DefaultClause> (driver->nodePool(), sym(3).StatementList);
node->defaultToken = loc(1);
node->colonToken = loc(2);
sym(1).Node = node;
} break;
-case 276: {
+case 285: {
+ AST::LabelledStatement *node = makeAstNode<AST::LabelledStatement> (driver->nodePool(), driver->intern(lexer->characterBuffer(), lexer->characterCount()), sym(3).Statement);
+ node->identifierToken = loc(1);
+ node->colonToken = loc(2);
+ sym(1).Node = node;
+} break;
+
+case 286: {
AST::LabelledStatement *node = makeAstNode<AST::LabelledStatement> (driver->nodePool(), sym(1).sval, sym(3).Statement);
node->identifierToken = loc(1);
node->colonToken = loc(2);
sym(1).Node = node;
} break;
-case 278: {
+case 288: {
AST::ThrowStatement *node = makeAstNode<AST::ThrowStatement> (driver->nodePool(), sym(2).Expression);
node->throwToken = loc(1);
node->semicolonToken = loc(3);
sym(1).Node = node;
} break;
-case 279: {
+case 289: {
AST::TryStatement *node = makeAstNode<AST::TryStatement> (driver->nodePool(), sym(2).Statement, sym(3).Catch);
node->tryToken = loc(1);
sym(1).Node = node;
} break;
-case 280: {
+case 290: {
AST::TryStatement *node = makeAstNode<AST::TryStatement> (driver->nodePool(), sym(2).Statement, sym(3).Finally);
node->tryToken = loc(1);
sym(1).Node = node;
} break;
-case 281: {
+case 291: {
AST::TryStatement *node = makeAstNode<AST::TryStatement> (driver->nodePool(), sym(2).Statement, sym(3).Catch, sym(4).Finally);
node->tryToken = loc(1);
sym(1).Node = node;
} break;
-case 282: {
+case 292: {
AST::Catch *node = makeAstNode<AST::Catch> (driver->nodePool(), sym(3).sval, sym(5).Block);
node->catchToken = loc(1);
node->lparenToken = loc(2);
@@ -1402,20 +1429,31 @@ case 282: {
sym(1).Node = node;
} break;
-case 283: {
+case 293: {
AST::Finally *node = makeAstNode<AST::Finally> (driver->nodePool(), sym(2).Block);
node->finallyToken = loc(1);
sym(1).Node = node;
} break;
-case 285: {
+case 295: {
AST::DebuggerStatement *node = makeAstNode<AST::DebuggerStatement> (driver->nodePool());
node->debuggerToken = loc(1);
node->semicolonToken = loc(2);
sym(1).Node = node;
} break;
-case 286: {
+case 297: {
+ AST::FunctionDeclaration *node = makeAstNode<AST::FunctionDeclaration> (driver->nodePool(), driver->intern(lexer->characterBuffer(), lexer->characterCount()), sym(4).FormalParameterList, sym(7).FunctionBody);
+ node->functionToken = loc(1);
+ node->identifierToken = loc(2);
+ node->lparenToken = loc(3);
+ node->rparenToken = loc(5);
+ node->lbraceToken = loc(6);
+ node->rbraceToken = loc(8);
+ sym(1).Node = node;
+} break;
+
+case 298: {
AST::FunctionDeclaration *node = makeAstNode<AST::FunctionDeclaration> (driver->nodePool(), sym(2).sval, sym(4).FormalParameterList, sym(7).FunctionBody);
node->functionToken = loc(1);
node->identifierToken = loc(2);
@@ -1426,7 +1464,7 @@ case 286: {
sym(1).Node = node;
} break;
-case 287: {
+case 299: {
AST::FunctionExpression *node = makeAstNode<AST::FunctionExpression> (driver->nodePool(), sym(2).sval, sym(4).FormalParameterList, sym(7).FunctionBody);
node->functionToken = loc(1);
if (sym(2).sval)
@@ -1438,56 +1476,56 @@ case 287: {
sym(1).Node = node;
} break;
-case 288: {
+case 300: {
AST::FormalParameterList *node = makeAstNode<AST::FormalParameterList> (driver->nodePool(), sym(1).sval);
node->identifierToken = loc(1);
sym(1).Node = node;
} break;
-case 289: {
+case 301: {
AST::FormalParameterList *node = makeAstNode<AST::FormalParameterList> (driver->nodePool(), sym(1).FormalParameterList, sym(3).sval);
node->commaToken = loc(2);
node->identifierToken = loc(3);
sym(1).Node = node;
} break;
-case 290: {
+case 302: {
sym(1).Node = 0;
} break;
-case 291: {
+case 303: {
sym(1).Node = sym(1).FormalParameterList->finish ();
} break;
-case 292: {
+case 304: {
sym(1).Node = 0;
} break;
-case 294: {
+case 306: {
sym(1).Node = makeAstNode<AST::FunctionBody> (driver->nodePool(), sym(1).SourceElements->finish ());
} break;
-case 295: {
+case 307: {
sym(1).Node = makeAstNode<AST::SourceElements> (driver->nodePool(), sym(1).SourceElement);
} break;
-case 296: {
+case 308: {
sym(1).Node = makeAstNode<AST::SourceElements> (driver->nodePool(), sym(1).SourceElements, sym(2).SourceElement);
} break;
-case 297: {
+case 309: {
sym(1).Node = makeAstNode<AST::StatementSourceElement> (driver->nodePool(), sym(1).Statement);
} break;
-case 298: {
+case 310: {
sym(1).Node = makeAstNode<AST::FunctionSourceElement> (driver->nodePool(), sym(1).FunctionDeclaration);
} break;
-case 299: {
+case 311: {
sym(1).sval = 0;
} break;
-case 301: {
+case 313: {
sym(1).Node = 0;
} break;
diff --git a/src/declarative/qml/parser/javascriptparser_p.h b/src/declarative/qml/parser/javascriptparser_p.h
index 34f41a8..e1aff9c 100644
--- a/src/declarative/qml/parser/javascriptparser_p.h
+++ b/src/declarative/qml/parser/javascriptparser_p.h
@@ -206,9 +206,9 @@ protected:
};
-#define J_SCRIPT_REGEXPLITERAL_RULE1 43
+#define J_SCRIPT_REGEXPLITERAL_RULE1 49
-#define J_SCRIPT_REGEXPLITERAL_RULE2 44
+#define J_SCRIPT_REGEXPLITERAL_RULE2 50
QT_END_NAMESPACE
diff --git a/src/declarative/qml/qmlscriptparser.cpp b/src/declarative/qml/qmlscriptparser.cpp
index 61cb2ee..89cde7b 100644
--- a/src/declarative/qml/qmlscriptparser.cpp
+++ b/src/declarative/qml/qmlscriptparser.cpp
@@ -337,46 +337,52 @@ bool ProcessAST::visit(AST::UiPublicMember *node)
const QString memberType = node->memberType->asString();
const QString name = node->name->asString();
- if (node->isDefaultMember)
- qWarning() << "default-ness not implemented";
-
- if (memberType == QLatin1String("property")) {
- _stateStack.pushProperty(QLatin1String("properties"), node->publicToken.startLine);
-
- Object *obj = defineObjectBinding(node->identifierToken.startLine,
- 0,
- QLatin1String("Property"));
-
- _stateStack.pushObject(obj);
-
- defineProperty(QLatin1String("name"), node->identifierToken.startLine, name);
- if (node->expression) // default value
- defineProperty(QLatin1String("value"), node->identifierToken.startLine, getPrimitive("value", node->expression));
-
- _stateStack.pop(); // object
- _stateStack.pop(); // properties
-
- } else if (memberType == QLatin1String("signal")) {
- _stateStack.pushProperty(QLatin1String("signals"), node->publicToken.startLine);
-
- Object *obj = defineObjectBinding(node->identifierToken.startLine,
- 0,
- QLatin1String("Signal"));
-
- _stateStack.pushObject(obj);
+ const struct TypeNameToType {
+ const char *name;
+ Object::DynamicProperty::Type type;
+ } propTypeNameToTypes[] = {
+ { "int", Object::DynamicProperty::Int },
+ { "bool", Object::DynamicProperty::Bool },
+ { "double", Object::DynamicProperty::Real },
+ { "real", Object::DynamicProperty::Real },
+ { "string", Object::DynamicProperty::String },
+ { "color", Object::DynamicProperty::Color },
+ { "date", Object::DynamicProperty::Date },
+ { "var", Object::DynamicProperty::Variant },
+ { "variant", Object::DynamicProperty::Variant }
+ };
+ const int propTypeNameToTypesCount = sizeof(propTypeNameToTypes) /
+ sizeof(propTypeNameToTypes[0]);
+
+ bool typeFound = false;
+ Object::DynamicProperty::Type type;
+ for(int ii = 0; !typeFound && ii < propTypeNameToTypesCount; ++ii) {
+ if(QLatin1String(propTypeNameToTypes[ii].name) == memberType) {
+ type = propTypeNameToTypes[ii].type;
+ typeFound = true;
+ }
+ }
+
+ if(!typeFound) {
+ qWarning() << "Unknown property type" << memberType; // ### FIXME
+ return false;
+ }
- defineProperty(QLatin1String("name"), node->identifierToken.startLine, name);
+ Object::DynamicProperty property;
+ property.isDefaultProperty = node->isDefaultMember;
+ property.type = type;
+ property.name = name.toUtf8();
- _stateStack.pop(); // object
- _stateStack.pop(); // signals
- } else {
- qWarning() << "bad public identifier" << memberType; // ### FIXME
+ if (node->expression) { // default value
+ property.defaultValue = new Property;
+ Value *value = new Value;
+ value->primitive = getPrimitive("value", node->expression);
+ property.defaultValue->values << value;
}
+ _stateStack.top().object->dynamicProperties << property;
- // ### TODO drop initializer (unless some example needs differnet properties than name and type and value.
-
- return false;
+ return true;
}
diff --git a/src/declarative/qml/script/qmlbasicscript.cpp b/src/declarative/qml/script/qmlbasicscript.cpp
index 8b38e08..603e6ba 100644
--- a/src/declarative/qml/script/qmlbasicscript.cpp
+++ b/src/declarative/qml/script/qmlbasicscript.cpp
@@ -252,6 +252,7 @@ struct QmlBasicScriptCompiler
};
/*!
+ \internal
\class QmlBasicScript
\brief The QmlBasicScript class provides a fast implementation of a limited subset of JavaScript bindings.
diff --git a/src/declarative/timeline/qmltimeline.cpp b/src/declarative/timeline/qmltimeline.cpp
index 3fa0161..dcc8745 100644
--- a/src/declarative/timeline/qmltimeline.cpp
+++ b/src/declarative/timeline/qmltimeline.cpp
@@ -51,10 +51,6 @@
QT_BEGIN_NAMESPACE
-//
-// Timeline stuff
-//
-
struct Update {
Update(QmlTimeLineValue *_g, qreal _v)
: g(_g), v(_v) {}
@@ -868,9 +864,10 @@ void QmlTimeLine::remove(QmlTimeLineObject *v)
}
/*!
+ \internal
\class QmlTimeLineValue
\ingroup group_animation
- \brief The QmlTimeLineValue class is modified by QmlTimeLine.
+ \brief The QmlTimeLineValue class provides a value that can be modified by QmlTimeLine.
*/
/*!
diff --git a/src/declarative/util/qmlanimation.cpp b/src/declarative/util/qmlanimation.cpp
index d5765c1..4b8ce4e 100644
--- a/src/declarative/util/qmlanimation.cpp
+++ b/src/declarative/util/qmlanimation.cpp
@@ -617,7 +617,7 @@ QAbstractAnimation *QmlPauseAnimation::qtAnimation()
\brief The ColorAnimation allows you to animate color changes.
\code
- ColorAnimation { from: "white" to: "#c0c0c0"; duration: 100 }
+ ColorAnimation { from: "white"; to: "#c0c0c0"; duration: 100 }
\endcode
The default property animated is \c color, but like other animations,