diff options
2 files changed, 8 insertions, 2 deletions
| -rw-r--r-- | JSImpl/src/Expression.h | 2 | ||||
| -rw-r--r-- | JSImpl/src/Parser.cpp | 8 |
diff --git a/JSImpl/src/Expression.h b/JSImpl/src/Expression.h index 03a2c54..0c23c6a 100644 --- a/JSImpl/src/Expression.h +++ b/JSImpl/src/Expression.h @@ -203,3 +203,5 @@ public: virtual ~EmptyExpression() {} virtual void Print(std::ostream& os) const override; }; + +inline ExpressionPtr CreateEmptyExpression() { return IPLMakeSharePtr<EmptyExpression>(); } diff --git a/JSImpl/src/Parser.cpp b/JSImpl/src/Parser.cpp index df2006f..feb302c 100644 --- a/JSImpl/src/Parser.cpp +++ b/JSImpl/src/Parser.cpp @@ -592,7 +592,7 @@ ExpressionPtr Parser::ConditionalExpression() // TODO log parsing error assert(false); } - return LogicalExpression(); + return condition; } ExpressionPtr Parser::AssignmentExpression() @@ -688,7 +688,11 @@ ExpressionPtr Parser::VariableDefinition() if (Match(TokenType::Identifier)) { auto id = Prev().Lexeme; - auto ae = AssignmentExpression(); + auto ae = CreateEmptyExpression(); + if (Match(TokenType::Equal)) + { + auto ae = AssignmentExpression(); + } return IPLMakeSharePtr<VariableDefinitionExpression>(id, ae); } return nullptr; |
