Updated the QML/JS front-end.

This commit is contained in:
Roberto Raggi
2010-03-31 15:40:28 +02:00
parent 20c0817a3f
commit fe46a750ed
7 changed files with 1215 additions and 1119 deletions

View File

@@ -971,6 +971,56 @@ case $rule_number: {
} break; } break;
./ ./
UiObjectMember: T_PROPERTY T_IDENTIFIER T_LT UiPropertyType T_GT JsIdentifier T_COLON T_LBRACKET UiArrayMemberList T_RBRACKET ;
/.
case $rule_number: {
AST::UiPublicMember *node = makeAstNode<AST::UiPublicMember> (driver->nodePool(), sym(4).sval, sym(6).sval);
node->typeModifier = sym(2).sval;
node->propertyToken = loc(1);
node->typeModifierToken = loc(2);
node->typeToken = loc(4);
node->identifierToken = loc(6);
node->semicolonToken = loc(7); // insert a fake ';' before ':'
AST::UiQualifiedId *propertyName = makeAstNode<AST::UiQualifiedId>(driver->nodePool(), sym(6).sval);
propertyName->identifierToken = loc(6);
propertyName->next = 0;
AST::UiArrayBinding *binding = makeAstNode<AST::UiArrayBinding> (driver->nodePool(),
propertyName, sym(9).UiArrayMemberList->finish());
binding->colonToken = loc(7);
binding->lbracketToken = loc(8);
binding->rbracketToken = loc(10);
node->binding = binding;
sym(1).Node = node;
} break;
./
UiObjectMember: T_PROPERTY UiPropertyType JsIdentifier T_COLON UiQualifiedId UiObjectInitializer ;
/.
case $rule_number: {
AST::UiPublicMember *node = makeAstNode<AST::UiPublicMember> (driver->nodePool(), sym(2).sval, sym(3).sval);
node->propertyToken = loc(1);
node->typeToken = loc(2);
node->identifierToken = loc(3);
node->semicolonToken = loc(4); // insert a fake ';' before ':'
AST::UiQualifiedId *propertyName = makeAstNode<AST::UiQualifiedId>(driver->nodePool(), sym(3).sval);
propertyName->identifierToken = loc(3);
propertyName->next = 0;
AST::UiObjectBinding *binding = makeAstNode<AST::UiObjectBinding> (driver->nodePool(),
propertyName, sym(5).UiQualifiedId, sym(6).UiObjectInitializer);
binding->colonToken = loc(4);
node->binding = binding;
sym(1).Node = node;
} break;
./
UiObjectMember: FunctionDeclaration ; UiObjectMember: FunctionDeclaration ;
/. /.
case $rule_number: { case $rule_number: {

View File

@@ -837,6 +837,7 @@ void UiPublicMember::accept0(Visitor *visitor)
{ {
if (visitor->visit(this)) { if (visitor->visit(this)) {
accept(expression, visitor); accept(expression, visitor);
accept(binding, visitor);
} }
visitor->endVisit(this); visitor->endVisit(this);

View File

@@ -2485,13 +2485,13 @@ public:
UiPublicMember(NameId *memberType, UiPublicMember(NameId *memberType,
NameId *name) NameId *name)
: type(Property), typeModifier(0), memberType(memberType), name(name), expression(0), isDefaultMember(false), isReadonlyMember(false), parameters(0) : type(Property), typeModifier(0), memberType(memberType), name(name), expression(0), binding(0), isDefaultMember(false), isReadonlyMember(false), parameters(0)
{ kind = K; } { kind = K; }
UiPublicMember(NameId *memberType, UiPublicMember(NameId *memberType,
NameId *name, NameId *name,
ExpressionNode *expression) ExpressionNode *expression)
: type(Property), typeModifier(0), memberType(memberType), name(name), expression(expression), isDefaultMember(false), isReadonlyMember(false), parameters(0) : type(Property), typeModifier(0), memberType(memberType), name(name), expression(expression), binding(0), isDefaultMember(false), isReadonlyMember(false), parameters(0)
{ kind = K; } { kind = K; }
virtual SourceLocation firstSourceLocation() const virtual SourceLocation firstSourceLocation() const
@@ -2506,6 +2506,9 @@ public:
virtual SourceLocation lastSourceLocation() const virtual SourceLocation lastSourceLocation() const
{ {
if (binding)
return binding->lastSourceLocation();
return semicolonToken; return semicolonToken;
} }
@@ -2516,7 +2519,8 @@ public:
NameId *typeModifier; NameId *typeModifier;
NameId *memberType; NameId *memberType;
NameId *name; NameId *name;
ExpressionNode *expression; ExpressionNode *expression; // initialized with a JS expression
UiObjectMember *binding; // initialized with a QML object or array.
bool isDefaultMember; bool isDefaultMember;
bool isReadonlyMember; bool isReadonlyMember;
UiParameterList *parameters; UiParameterList *parameters;

File diff suppressed because it is too large Load Diff

View File

@@ -164,15 +164,15 @@ public:
T_XOR = 79, T_XOR = 79,
T_XOR_EQ = 80, T_XOR_EQ = 80,
ACCEPT_STATE = 639, ACCEPT_STATE = 645,
RULE_COUNT = 345, RULE_COUNT = 347,
STATE_COUNT = 640, STATE_COUNT = 646,
TERMINAL_COUNT = 101, TERMINAL_COUNT = 101,
NON_TERMINAL_COUNT = 106, NON_TERMINAL_COUNT = 106,
GOTO_INDEX_OFFSET = 640, GOTO_INDEX_OFFSET = 646,
GOTO_INFO_OFFSET = 2699, GOTO_INFO_OFFSET = 2714,
GOTO_CHECK_OFFSET = 2699 GOTO_CHECK_OFFSET = 2714
}; };
static const char *const spell []; static const char *const spell [];

File diff suppressed because it is too large Load Diff

View File

@@ -235,9 +235,9 @@ protected:
#define J_SCRIPT_REGEXPLITERAL_RULE1 76 #define J_SCRIPT_REGEXPLITERAL_RULE1 78
#define J_SCRIPT_REGEXPLITERAL_RULE2 77 #define J_SCRIPT_REGEXPLITERAL_RULE2 79
QT_QML_END_NAMESPACE QT_QML_END_NAMESPACE