summaryrefslogtreecommitdiffstats
path: root/src/declarative/qml/parser/javascriptparser_p.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/declarative/qml/parser/javascriptparser_p.h')
-rw-r--r--src/declarative/qml/parser/javascriptparser_p.h135
1 files changed, 63 insertions, 72 deletions
diff --git a/src/declarative/qml/parser/javascriptparser_p.h b/src/declarative/qml/parser/javascriptparser_p.h
index 5e68fe7..2ae4c34 100644
--- a/src/declarative/qml/parser/javascriptparser_p.h
+++ b/src/declarative/qml/parser/javascriptparser_p.h
@@ -62,86 +62,71 @@
#include "javascriptgrammar_p.h"
#include "javascriptast_p.h"
+#include "javascriptengine_p.h"
+
#include <QtCore/QList>
QT_BEGIN_NAMESPACE
class QString;
-class JavaScriptEnginePrivate;
-class JavaScriptNameIdImpl;
-class JavaScriptParser: protected JavaScriptGrammar
+namespace JavaScript {
+
+class Engine;
+class NameId;
+
+class Parser: 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) {}
-
- DiagnosticMessage(Kind kind, const JavaScript::AST::SourceLocation &loc, const QString &message)
- : kind(kind), loc(loc), message(message) {}
-
- bool isWarning() const
- { return kind == Warning; }
-
- bool isError() const
- { return kind == Error; }
-
- Kind kind;
- JavaScript::AST::SourceLocation loc;
- QString message;
+ NameId *sval;
+ AST::ArgumentList *ArgumentList;
+ AST::CaseBlock *CaseBlock;
+ AST::CaseClause *CaseClause;
+ AST::CaseClauses *CaseClauses;
+ AST::Catch *Catch;
+ AST::DefaultClause *DefaultClause;
+ AST::ElementList *ElementList;
+ AST::Elision *Elision;
+ AST::ExpressionNode *Expression;
+ AST::Finally *Finally;
+ AST::FormalParameterList *FormalParameterList;
+ AST::FunctionBody *FunctionBody;
+ AST::FunctionDeclaration *FunctionDeclaration;
+ AST::Node *Node;
+ AST::PropertyName *PropertyName;
+ AST::PropertyNameAndValueList *PropertyNameAndValueList;
+ AST::SourceElement *SourceElement;
+ AST::SourceElements *SourceElements;
+ AST::Statement *Statement;
+ AST::StatementList *StatementList;
+ AST::Block *Block;
+ AST::VariableDeclaration *VariableDeclaration;
+ AST::VariableDeclarationList *VariableDeclarationList;
+
+ AST::UiProgram *UiProgram;
+ AST::UiImportList *UiImportList;
+ AST::UiImport *UiImport;
+ AST::UiPublicMember *UiPublicMember;
+ AST::UiObjectDefinition *UiObjectDefinition;
+ AST::UiObjectInitializer *UiObjectInitializer;
+ AST::UiObjectBinding *UiObjectBinding;
+ AST::UiScriptBinding *UiScriptBinding;
+ AST::UiArrayBinding *UiArrayBinding;
+ AST::UiObjectMember *UiObjectMember;
+ AST::UiObjectMemberList *UiObjectMemberList;
+ AST::UiQualifiedId *UiQualifiedId;
};
public:
- JavaScriptParser();
- ~JavaScriptParser();
+ Parser(Engine *engine);
+ ~Parser();
- bool parse(JavaScriptEnginePrivate *driver);
+ bool parse();
- JavaScript::AST::UiProgram *ast()
+ AST::UiProgram *ast()
{ return program; }
QList<DiagnosticMessage> diagnosticMessages() const
@@ -172,17 +157,20 @@ protected:
inline Value &sym(int index)
{ return sym_stack [tos + index - 1]; }
- inline JavaScript::AST::SourceLocation &loc(int index)
+ inline AST::SourceLocation &loc(int index)
{ return location_stack [tos + index - 1]; }
+ AST::UiQualifiedId *reparseAsQualifiedId(AST::ExpressionNode *expr);
+
protected:
+ Engine *driver;
int tos;
int stack_size;
Value *sym_stack;
int *state_stack;
- JavaScript::AST::SourceLocation *location_stack;
+ AST::SourceLocation *location_stack;
- JavaScript::AST::UiProgram *program;
+ AST::UiProgram *program;
// error recovery
enum { TOKEN_BUFFER_SIZE = 3 };
@@ -190,12 +178,12 @@ protected:
struct SavedToken {
int token;
double dval;
- JavaScript::AST::SourceLocation loc;
+ AST::SourceLocation loc;
};
double yylval;
- JavaScript::AST::SourceLocation yylloc;
- JavaScript::AST::SourceLocation yyprevlloc;
+ AST::SourceLocation yylloc;
+ AST::SourceLocation yyprevlloc;
SavedToken token_buffer[TOKEN_BUFFER_SIZE];
SavedToken *first_token;
@@ -204,10 +192,13 @@ protected:
QList<DiagnosticMessage> diagnostic_messages;
};
+} // end of namespace JavaScript
+
+
-#define J_SCRIPT_REGEXPLITERAL_RULE1 52
+#define J_SCRIPT_REGEXPLITERAL_RULE1 54
-#define J_SCRIPT_REGEXPLITERAL_RULE2 53
+#define J_SCRIPT_REGEXPLITERAL_RULE2 55
QT_END_NAMESPACE