From 4bf63454f4f8daa2f438898b6396fec6e4ad1a36 Mon Sep 17 00:00:00 2001 From: Barf-Vader <47476490+Barf-Vader@users.noreply.github.com> Date: Fri, 7 Feb 2025 16:27:32 +0000 Subject: [PATCH] fix: catch function call without keyword with parenscheck --- src/main/wacc/parser.scala | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/main/wacc/parser.scala b/src/main/wacc/parser.scala index 8141a4c..71198b2 100644 --- a/src/main/wacc/parser.scala +++ b/src/main/wacc/parser.scala @@ -13,6 +13,7 @@ import cats.data.NonEmptyList import parsley.errors.DefaultErrorBuilder import parsley.errors.ErrorBuilder import parsley.errors.tokenextractors.LexToken +import parsley.character.char object parser { import lexer.implicits.implicitSymbol @@ -49,6 +50,9 @@ object parser { case Expr case Pair + val _parensCheck = + char('(').verifiedExplain("functions can only be called using 'call' keyword") + implicit val builder: ErrorBuilder[String] = new DefaultErrorBuilder with LexToken { def tokens = errTokens } @@ -67,8 +71,8 @@ object parser { GreaterEq from ">=" ) +: SOps(InfixL)( - (Add from "+").label("binary operator"), - (Sub from "-").label("binary operator") + ((Add from "+").label("binary operator") | _parensCheck), + ((Sub from "-").label("binary operator") | _parensCheck) ) +: SOps(InfixL)(Mul from "*", Div from "/", Mod from "%") +: SOps(Prefix)(