From eef6d3fdd53b850ca00868b39c343e0417ae554b Mon Sep 17 00:00:00 2001 From: Alireza6677 Date: Sun, 10 May 2020 15:36:44 +0430 Subject: [PATCH] Now it should be really fixed --- source/calcool/parser.d | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/source/calcool/parser.d b/source/calcool/parser.d index 76348cd..7bb9a5d 100644 --- a/source/calcool/parser.d +++ b/source/calcool/parser.d @@ -67,7 +67,11 @@ public: return inside; } - Expression parseExpression(Precedence precedence = Precedence.START) { + Expression parseExpression() { + return parseExpression(Precedence.START, true); + } + + Expression parseExpression(Precedence precedence = Precedence.START, bool start = false) { auto token = consume(); if (auto parselet = token.type in prefixParselets) { auto left = parselet.parse(this, token); @@ -77,6 +81,11 @@ public: InfixParselet infix = infixParselets[token.type]; left = infix.parse(this, left, token); } + + if (start && input.length > 0 && input.front().type != TokenType.EOL) { + input.length = 0; + throw new ParseException("Syntax error"); + } return left; } else { @@ -119,7 +128,7 @@ public: import std.conv : to; input = lexer.nextLine(exp); - return parseExpression().evaluate().to!string; + return parseExpression(Precedence.START, true).evaluate().to!string; } }