fix: do not allow negation of a positive int literal
This commit is contained in:
@@ -2,7 +2,7 @@ package wacc
|
||||
|
||||
import parsley.Result
|
||||
import parsley.Parsley
|
||||
import parsley.Parsley.{atomic, many, pure}
|
||||
import parsley.Parsley.{atomic, many, notFollowedBy, pure}
|
||||
import parsley.combinator.{countSome, sepBy}
|
||||
import parsley.expr.{precedence, SOps, InfixL, InfixN, InfixR, Prefix, Atoms}
|
||||
import parsley.errors.combinator._
|
||||
@@ -11,7 +11,7 @@ import cats.data.NonEmptyList
|
||||
|
||||
object parser {
|
||||
import lexer.implicits.implicitSymbol
|
||||
import lexer.{ident, integer, charLit, stringLit}
|
||||
import lexer.{ident, integer, charLit, stringLit, negateCheck}
|
||||
import ast._
|
||||
|
||||
def parse(input: String): Result[String, Program] = parser.parse(input)
|
||||
@@ -32,7 +32,7 @@ object parser {
|
||||
SOps(InfixL)(Mul from "*", Div from "/", Mod from "%") +:
|
||||
SOps(Prefix)(
|
||||
Not from "!",
|
||||
Negate from "-",
|
||||
Negate from (notFollowedBy(negateCheck) ~> "-"),
|
||||
Len from "len",
|
||||
Ord from "ord",
|
||||
Chr from "chr"
|
||||
|
||||
Reference in New Issue
Block a user