From 4233fbfb9229c2c1d334075b7eb32410450f7a3d Mon Sep 17 00:00:00 2001 From: martin dobrev Date: Fri, 5 Oct 2018 09:35:33 +0300 Subject: Now all expressions will be auto generated. --- JSImpl/src/Parser.cpp | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) (limited to 'JSImpl/src/Parser.cpp') diff --git a/JSImpl/src/Parser.cpp b/JSImpl/src/Parser.cpp index bbde7f1..0d4ec3c 100644 --- a/JSImpl/src/Parser.cpp +++ b/JSImpl/src/Parser.cpp @@ -204,7 +204,7 @@ ExpressionPtr Parser::ArrayLiteral() auto result = IPLMakeSharePtr(); while (auto lf = LiteralElement()) { - result->Push(lf); + result->GetValuesByRef().push_back(lf); if (!Match(TokenType::Comma)) { break; @@ -703,10 +703,10 @@ ExpressionPtr Parser::VariableDefinition() // VariableDeclaration // | VariableDeclarationList, VariableDeclaration auto vdList = IPLMakeSharePtr(); - vdList->Push(VariableDeclaration()); + vdList->GetValuesByRef().push_back(VariableDeclaration()); while (Match(TokenType::Comma)) { - vdList->Push(VariableDeclaration()); + vdList->GetValuesByRef().push_back(VariableDeclaration()); } return vdList; }; @@ -731,7 +731,7 @@ ExpressionPtr Parser::Block() auto StatementsList = IPLMakeSharePtr(); while (auto s = Statement()) { - StatementsList->Push(s); + StatementsList->GetValuesByRef().push_back(s); } return StatementsList; }; @@ -784,7 +784,7 @@ ExpressionPtr Parser::SwitchStatement() if (Match(TokenType::Switch)) { auto cond = ParenthesizedExpression(); - IPLVector cases; + IPLVector cases; ExpressionPtr defaultCase = nullptr; if (Match(TokenType::LeftBrace)) { @@ -796,7 +796,8 @@ ExpressionPtr Parser::SwitchStatement() auto expr = Expression(); if (Match(TokenType::Colon)) { - cases.push_back({ expr, Statement() }); + auto statement = Statement(); + cases.push_back(IPLMakeSharePtr(expr, statement)); } } else if (Match(TokenType::Default)) @@ -996,7 +997,7 @@ ExpressionPtr Parser::TopStatements() auto statements = IPLMakeSharePtr<::TopStatements>(); while (auto ts = TopStatement()) { - statements->Push(ts); + statements->GetValuesByRef().push_back(ts); } return statements; } -- cgit v1.3.1-23-gd82d From 47a7a68e2b7ce0b0c1e2bd1097927a91623fbcc5 Mon Sep 17 00:00:00 2001 From: martin dobrev Date: Sun, 14 Oct 2018 15:10:48 +0300 Subject: Fix variable redefinition issue in parser. --- JSImpl/src/Parser.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'JSImpl/src/Parser.cpp') diff --git a/JSImpl/src/Parser.cpp b/JSImpl/src/Parser.cpp index 0d4ec3c..28fee72 100644 --- a/JSImpl/src/Parser.cpp +++ b/JSImpl/src/Parser.cpp @@ -691,7 +691,7 @@ ExpressionPtr Parser::VariableDefinition() auto ae = CreateEmptyExpression(); if (Match(TokenType::Equal)) { - auto ae = AssignmentExpression(); + ae = AssignmentExpression(); } return IPLMakeSharePtr(id, ae); } -- cgit v1.3.1-23-gd82d