diff options
author | Michael Brasser <mbrasser@ford.com> | 2017-04-20 15:59:31 +0200 |
---|---|---|
committer | Michael Brasser <michael.brasser@live.com> | 2017-07-13 21:00:55 +0000 |
commit | 22a2cc43387ec3b9f74a6c01f8665378a4541147 (patch) | |
tree | 33acf5a5367302eb3f488b688aba7c85959035ae /src/qml/parser/qqmljs.g | |
parent | 286f14f1e29e7f4e2db4517d087dd5c92606f971 (diff) |
Add support for enum declarations in QML
Enums can be declared with the following syntax:
enum MyEnum {
Value1,
Value2
}
Grammar changes done by Simon Hausmann.
[ChangeLog][QtQml] Enums can now be declared directly in QML.
Task-number: QTBUG-14861
Change-Id: Ic6b6e032651d01ee2ecf9d5ce5734976cb3ad7ab
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
Diffstat (limited to 'src/qml/parser/qqmljs.g')
-rw-r--r-- | src/qml/parser/qqmljs.g | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/src/qml/parser/qqmljs.g b/src/qml/parser/qqmljs.g index ca84e0c157..395e62e657 100644 --- a/src/qml/parser/qqmljs.g +++ b/src/qml/parser/qqmljs.g @@ -77,6 +77,7 @@ %token T_MULTILINE_STRING_LITERAL "multiline string literal" %token T_COMMENT "comment" %token T_COMPATIBILITY_SEMICOLON +%token T_ENUM "enum" --- context keywords. %token T_PUBLIC "public" @@ -281,6 +282,7 @@ public: AST::UiArrayMemberList *UiArrayMemberList; AST::UiQualifiedId *UiQualifiedId; AST::UiQualifiedPragmaId *UiQualifiedPragmaId; + AST::UiEnumMemberList *UiEnumMemberList; }; public: @@ -1207,6 +1209,37 @@ case $rule_number: { } break; ./ +UiObjectMember: T_ENUM T_IDENTIFIER T_LBRACE EnumMemberList T_RBRACE; +/. +case $rule_number: { + AST::UiEnumDeclaration *enumDeclaration = new (pool) AST::UiEnumDeclaration(stringRef(2), sym(4).UiEnumMemberList->finish()); + enumDeclaration->enumToken = loc(1); + enumDeclaration->rbraceToken = loc(5); + sym(1).Node = enumDeclaration; + break; +} +./ + +EnumMemberList: T_IDENTIFIER; +/. +case $rule_number: { + AST::UiEnumMemberList *node = new (pool) AST::UiEnumMemberList(stringRef(1)); + node->memberToken = loc(1); + sym(1).Node = node; + break; +} +./ + +EnumMemberList: EnumMemberList T_COMMA T_IDENTIFIER; +/. +case $rule_number: { + AST::UiEnumMemberList *node = new (pool) AST::UiEnumMemberList(sym(1).UiEnumMemberList, stringRef(3)); + node->memberToken = loc(3); + sym(1).Node = node; + break; +} +./ + JsIdentifier: T_IDENTIFIER; JsIdentifier: T_PROPERTY ; @@ -1602,6 +1635,7 @@ ReservedIdentifier: T_DEFAULT ; ReservedIdentifier: T_DELETE ; ReservedIdentifier: T_DO ; ReservedIdentifier: T_ELSE ; +ReservedIdentifier: T_ENUM ; ReservedIdentifier: T_FALSE ; ReservedIdentifier: T_FINALLY ; ReservedIdentifier: T_FOR ; |