diff options
Diffstat (limited to 'src/declarative/qml/parser/javascriptparser_p.h')
-rw-r--r-- | src/declarative/qml/parser/javascriptparser_p.h | 215 |
1 files changed, 215 insertions, 0 deletions
diff --git a/src/declarative/qml/parser/javascriptparser_p.h b/src/declarative/qml/parser/javascriptparser_p.h new file mode 100644 index 0000000..c08a14a --- /dev/null +++ b/src/declarative/qml/parser/javascriptparser_p.h @@ -0,0 +1,215 @@ +// This file was generated by qlalr - DO NOT EDIT! + +/**************************************************************************** +** +** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). +** Contact: Qt Software Information (qt-info@nokia.com) +** +** This file is part of the QtScript module 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$ +** +****************************************************************************/ + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +// +// This file is automatically generated from javascript.g. +// Changes will be lost. +// + +#ifndef JAVASCRIPTPARSER_P_H +#define JAVASCRIPTPARSER_P_H + +#include "javascriptgrammar_p.h" +#include "javascriptast_p.h" +#include <QtCore/QList> + +QT_BEGIN_NAMESPACE + +class QString; +class JavaScriptEnginePrivate; +class JavaScriptNameIdImpl; + +class JavaScriptParser: protected JavaScriptGrammar +{ +public: + union Value { + int ival; + double dval; + JavaScriptNameIdImpl *sval; + JavaScript::AST::ArgumentList *ArgumentList; + JavaScript::AST::CaseBlock *CaseBlock; + JavaScript::AST::CaseClause *CaseClause; + JavaScript::AST::CaseClauses *CaseClauses; + JavaScript::AST::Catch *Catch; + JavaScript::AST::DefaultClause *DefaultClause; + JavaScript::AST::ElementList *ElementList; + JavaScript::AST::Elision *Elision; + JavaScript::AST::ExpressionNode *Expression; + JavaScript::AST::Finally *Finally; + JavaScript::AST::FormalParameterList *FormalParameterList; + JavaScript::AST::FunctionBody *FunctionBody; + JavaScript::AST::FunctionDeclaration *FunctionDeclaration; + JavaScript::AST::Node *Node; + JavaScript::AST::PropertyName *PropertyName; + JavaScript::AST::PropertyNameAndValueList *PropertyNameAndValueList; + JavaScript::AST::SourceElement *SourceElement; + JavaScript::AST::SourceElements *SourceElements; + JavaScript::AST::Statement *Statement; + JavaScript::AST::StatementList *StatementList; + JavaScript::AST::Block *Block; + JavaScript::AST::VariableDeclaration *VariableDeclaration; + JavaScript::AST::VariableDeclarationList *VariableDeclarationList; + + JavaScript::AST::UiProgram *UiProgram; + JavaScript::AST::UiImportList *UiImportList; + JavaScript::AST::UiImport *UiImport; + JavaScript::AST::UiPublicMember *UiPublicMember; + JavaScript::AST::UiObjectDefinition *UiObjectDefinition; + JavaScript::AST::UiObjectInitializer *UiObjectInitializer; + JavaScript::AST::UiObjectBinding *UiObjectBinding; + JavaScript::AST::UiScriptBinding *UiScriptBinding; + JavaScript::AST::UiArrayBinding *UiArrayBinding; + JavaScript::AST::UiObjectMember *UiObjectMember; + JavaScript::AST::UiObjectMemberList *UiObjectMemberList; + JavaScript::AST::UiQualifiedId *UiQualifiedId; + }; + + struct DiagnosticMessage { + enum Kind { Warning, Error }; + + DiagnosticMessage() + : kind(Error), line(0), column(0) {} + + DiagnosticMessage(Kind kind, int line, int column, const QString &message) + : kind(kind), line(line), column(column), message(message) {} + + bool isWarning() const + { return kind == Warning; } + + bool isError() const + { return kind == Error; } + + Kind kind; + int line; + int column; + QString message; + }; + +public: + JavaScriptParser(); + ~JavaScriptParser(); + + bool parse(JavaScriptEnginePrivate *driver); + + JavaScript::AST::UiProgram *ast() + { return sym(1).UiProgram; } + + QList<DiagnosticMessage> diagnosticMessages() const + { return diagnostic_messages; } + + inline DiagnosticMessage diagnosticMessage() const + { + foreach (const DiagnosticMessage &d, diagnostic_messages) { + if (! d.kind == DiagnosticMessage::Warning) + return d; + } + + return DiagnosticMessage(); + } + + inline QString errorMessage() const + { return diagnosticMessage().message; } + + inline int errorLineNumber() const + { return diagnosticMessage().line; } + + inline int errorColumnNumber() const + { return diagnosticMessage().column; } + +protected: + void reallocateStack(); + + inline Value &sym(int index) + { return sym_stack [tos + index - 1]; } + + inline JavaScript::AST::SourceLocation &loc(int index) + { return location_stack [tos + index - 1]; } + +protected: + int tos; + int stack_size; + Value *sym_stack; + int *state_stack; + JavaScript::AST::SourceLocation *location_stack; + + // error recovery + enum { TOKEN_BUFFER_SIZE = 3 }; + + struct SavedToken { + int token; + double dval; + JavaScript::AST::SourceLocation loc; + }; + + double yylval; + JavaScript::AST::SourceLocation yylloc; + JavaScript::AST::SourceLocation yyprevlloc; + + SavedToken token_buffer[TOKEN_BUFFER_SIZE]; + SavedToken *first_token; + SavedToken *last_token; + + QList<DiagnosticMessage> diagnostic_messages; +}; + + +#define J_SCRIPT_REGEXPLITERAL_RULE1 35 + +#define J_SCRIPT_REGEXPLITERAL_RULE2 36 + +QT_END_NAMESPACE + + + +#endif // JAVASCRIPTPARSER_P_H |