diff options
| Commit | 6c2f7812f65b4a5c60f85297d1bc4f918e32936e (patch) | |
|---|---|---|
| Author | 2018-11-03 14:47:20 +0200 | |
| Committer | 2018-11-03 14:47:20 +0200 | |
| Files | 58a4ea3aba9ed7664908eff465aafd647c274124 /JSImpl/src/Parser.cpp | |
| IPL-6c2f7812f65b4a5c60f85297d1bc4f918e32936e.tar IPL-6c2f7812f65b4a5c60f85297d1bc4f918e32936e.tar.gz IPL-6c2f7812f65b4a5c60f85297d1bc4f918e32936e.zip | ||
| Parent | 4e7231b52c36fdff699f8d3afd973c184854fdea (diff) | |
Introduce interactive interpreter.
1 files changed, 6 insertions, 3 deletions
| -rw-r--r-- | JSImpl/src/Parser.cpp | 9 |
diff --git a/JSImpl/src/Parser.cpp b/JSImpl/src/Parser.cpp index b0d394b..8c387c8 100644 --- a/JSImpl/src/Parser.cpp +++ b/JSImpl/src/Parser.cpp @@ -470,9 +470,10 @@ ExpressionPtr Parser::Unary() TokenType::Bang, })) { + auto type = Prev().Type; auto ls = Unary(); auto suffix = false; - return IPLMakeSharePtr<UnaryExpression>(ls, Prev().Type, suffix); + return IPLMakeSharePtr<UnaryExpression>(ls, type, suffix); } else { @@ -662,8 +663,9 @@ ExpressionPtr Parser::AssignmentExpression() TokenType::BitwiseXorEqual, TokenType::BitwiseOrEqual })) { + auto type = Prev().Type; auto right = AssignmentExpression(); - return IPLMakeSharePtr<BinaryExpression>(left, right, Prev().Type); + return IPLMakeSharePtr<BinaryExpression>(left, right, type); } // revert state; m_Current = snapShot; @@ -675,10 +677,11 @@ ExpressionPtr Parser::Expression() auto ae = AssignmentExpression(); while (Match(TokenType::Comma)) { + auto type = Prev().Type; auto next = AssignmentExpression(); if (next) { - ae = IPLMakeSharePtr<BinaryExpression>(ae, next, Prev().Type); + ae = IPLMakeSharePtr<BinaryExpression>(ae, next, type); } else { |
