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(),