feat: catch indirect function calls
This commit is contained in:
parent
b5e72660b7
commit
3d2725be8d
@ -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(ident) | some("*" | "&").verifiedExplain("pointer operators are not allowed")
|
||||
private lazy val `<ident-or-array-elem>` =
|
||||
`<ident>` <**> (`<array-indices>` </> identity)
|
||||
(`<ident>` <~ ("(".verifiedExplain(
|
||||
"functions can only be called using 'call' keyword"
|
||||
) | unit)) <**> (`<array-indices>` </> identity)
|
||||
private val `<array-indices>` = ArrayElem(some("[" ~> `<expr>` <~ "]"))
|
||||
|
||||
// Types
|
||||
|
Loading…
x
Reference in New Issue
Block a user