From cf0ceba925d873ec031d291dd59a4137bb7da2c1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bart=C5=82omiej=20Przemys=C5=82aw=20Pluta?= Date: Thu, 5 Mar 2020 21:00:40 +0100 Subject: [PATCH] Restore recursive reference to expr parser in atom parser --- src/main/kotlin/SMNP.kt | 2 +- src/main/kotlin/dsl/ast/parser/AtomParser.kt | 11 +++++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/src/main/kotlin/SMNP.kt b/src/main/kotlin/SMNP.kt index 277615d..1af53e0 100644 --- a/src/main/kotlin/SMNP.kt +++ b/src/main/kotlin/SMNP.kt @@ -2,5 +2,5 @@ import interpreter.Interpreter fun main(args: Array) { val interpreter = Interpreter() - interpreter.run("2 + 2 * 2 / 2 ** 2") + interpreter.run("2 * (2 + 2)") } \ No newline at end of file diff --git a/src/main/kotlin/dsl/ast/parser/AtomParser.kt b/src/main/kotlin/dsl/ast/parser/AtomParser.kt index b231c50..1f07101 100644 --- a/src/main/kotlin/dsl/ast/parser/AtomParser.kt +++ b/src/main/kotlin/dsl/ast/parser/AtomParser.kt @@ -2,11 +2,22 @@ package dsl.ast.parser import dsl.ast.model.entity.ParserOutput import dsl.token.model.entity.TokenList +import dsl.token.model.enumeration.TokenType class AtomParser : Parser() { override fun tryToParse(input: TokenList): ParserOutput { + val parenthesesParser = allOf( + listOf( + terminal(TokenType.OPEN_PAREN), + ExpressionParser(), + terminal(TokenType.CLOSE_PAREN) + ) + ) { + it[1] + } val literalParser = oneOf( listOf( + parenthesesParser, BoolLiteralParser(), FloatLiteralParser(), IntegerLiteralParser(),