From 3d2725be8d9955a42dd3b57e4b5f45ce22b49aec Mon Sep 17 00:00:00 2001 From: Barf-Vader <47476490+Barf-Vader@users.noreply.github.com> Date: Fri, 7 Feb 2025 17:22:54 +0000 Subject: [PATCH] feat: catch indirect function calls --- src/main/wacc/parser.scala | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/main/wacc/parser.scala b/src/main/wacc/parser.scala index d8b52b4..ddb5987 100644 --- a/src/main/wacc/parser.scala +++ b/src/main/wacc/parser.scala @@ -2,7 +2,7 @@ package wacc import parsley.Result import parsley.Parsley -import parsley.Parsley.{atomic, many, notFollowedBy, pure} +import parsley.Parsley.{atomic, many, notFollowedBy, pure, unit} import parsley.combinator.{countSome, sepBy} import parsley.expr.{precedence, SOps, InfixL, InfixN, InfixR, Prefix, Atoms} import parsley.errors.combinator._ @@ -95,7 +95,9 @@ object parser { private val `` = Ident(ident) | some("*" | "&").verifiedExplain("pointer operators are not allowed") private lazy val `` = - `` <**> (`` identity) + (`` <~ ("(".verifiedExplain( + "functions can only be called using 'call' keyword" + ) | unit)) <**> (`` identity) private val `` = ArrayElem(some("[" ~> `` <~ "]")) // Types