aboutsummaryrefslogtreecommitdiffstats
path: root/src/qml/parser/qqmljs.g
diff options
context:
space:
mode:
Diffstat (limited to 'src/qml/parser/qqmljs.g')
-rw-r--r--src/qml/parser/qqmljs.g51
1 files changed, 51 insertions, 0 deletions
diff --git a/src/qml/parser/qqmljs.g b/src/qml/parser/qqmljs.g
index 60a10bee6b..5313d4d066 100644
--- a/src/qml/parser/qqmljs.g
+++ b/src/qml/parser/qqmljs.g
@@ -79,6 +79,12 @@
%token T_COMPATIBILITY_SEMICOLON
%token T_ENUM "enum"
+--- template strings
+%token T_NO_SUBSTITUTION_TEMPLATE
+%token T_TEMPLATE_HEAD
+%token T_TEMPLATE_MIDDLE
+%token T_TEMPLATE_TAIL
+
--- context keywords.
%token T_PUBLIC "public"
%token T_IMPORT "import"
@@ -250,6 +256,7 @@ public:
AST::ElementList *ElementList;
AST::Elision *Elision;
AST::ExpressionNode *Expression;
+ AST::TemplateLiteral *Template;
AST::Finally *Finally;
AST::FormalParameterList *FormalParameterList;
AST::FunctionBody *FunctionBody;
@@ -1342,6 +1349,37 @@ case $rule_number: {
} break;
./
+PrimaryExpression: TemplateLiteral ;
+/.
+case $rule_number:
+ // nothing that needs to be done here
+ break;
+./
+
+TemplateLiteral: T_NO_SUBSTITUTION_TEMPLATE ;
+/. case $rule_number: ./
+
+TemplateSpans: T_TEMPLATE_TAIL ;
+/.
+case $rule_number: {
+ AST::TemplateLiteral *node = new (pool) AST::TemplateLiteral(stringRef(1), nullptr);
+ node->literalToken = loc(1);
+ sym(1).Node = node;
+} break;
+./
+
+TemplateSpans: T_TEMPLATE_MIDDLE Expression TemplateSpans;
+/. case $rule_number: ./
+
+TemplateLiteral: T_TEMPLATE_HEAD Expression TemplateSpans ;
+/. case $rule_number: {
+ AST::TemplateLiteral *node = new (pool) AST::TemplateLiteral(stringRef(1), sym(2).Expression);
+ node->next = sym(3).Template;
+ node->literalToken = loc(1);
+ sym(1).Node = node;
+} break;
+./
+
PrimaryExpression: T_DIVIDE_ ;
/:
#define J_SCRIPT_REGEXPLITERAL_RULE1 $rule_number
@@ -1721,6 +1759,13 @@ case $rule_number: {
} break;
./
+MemberExpression: MemberExpression TemplateLiteral ;
+/.
+case $rule_number: {
+ qWarning() << "Template member expression implemented";
+} break;
+./
+
NewExpression: MemberExpression ;
NewExpression: T_NEW NewExpression ;
@@ -1772,6 +1817,12 @@ case $rule_number: {
} break;
./
+CallExpression: CallExpression TemplateLiteral;
+/. case $rule_number: {
+ qWarning() << "Template calling not implemented";
+} break;
+./
+
ArgumentListOpt: ;
/.
case $rule_number: {