fix: fully fix binary operators associativity

This commit is contained in:
Gleb Koval 2025-01-31 20:39:45 +00:00
parent 292551aca0
commit af919742a0
Signed by: cyclane
GPG Key ID: 15E168A8B332382C

View File

@ -44,16 +44,16 @@ object ast {
object Chr extends ParserBridge1[Expr6, Chr] object Chr extends ParserBridge1[Expr6, Chr]
// Binary operators // Binary operators
case class Add(x: Expr5, y: Expr6) extends Expr4 case class Add(x: Expr4, y: Expr5) extends Expr4
object Add extends ParserBridge2[Expr5, Expr6, Add] object Add extends ParserBridge2[Expr4, Expr5, Add]
case class Sub(x: Expr5, y: Expr6) extends Expr4 case class Sub(x: Expr4, y: Expr5) extends Expr4
object Sub extends ParserBridge2[Expr5, Expr6, Sub] object Sub extends ParserBridge2[Expr4, Expr5, Sub]
case class Mul(x: Expr6, y: Expr6) extends Expr5 case class Mul(x: Expr5, y: Expr6) extends Expr5
object Mul extends ParserBridge2[Expr6, Expr6, Mul] object Mul extends ParserBridge2[Expr5, Expr6, Mul]
case class Div(x: Expr6, y: Expr6) extends Expr5 case class Div(x: Expr5, y: Expr6) extends Expr5
object Div extends ParserBridge2[Expr6, Expr6, Div] object Div extends ParserBridge2[Expr5, Expr6, Div]
case class Mod(x: Expr6, y: Expr6) extends Expr5 case class Mod(x: Expr5, y: Expr6) extends Expr5
object Mod extends ParserBridge2[Expr6, Expr6, Mod] object Mod extends ParserBridge2[Expr5, Expr6, Mod]
case class Greater(x: Expr4, y: Expr4) extends Expr3 case class Greater(x: Expr4, y: Expr4) extends Expr3
object Greater extends ParserBridge2[Expr4, Expr4, Greater] object Greater extends ParserBridge2[Expr4, Expr4, Greater]
case class GreaterEq(x: Expr4, y: Expr4) extends Expr3 case class GreaterEq(x: Expr4, y: Expr4) extends Expr3
@ -66,10 +66,10 @@ object ast {
object Eq extends ParserBridge2[Expr3, Expr3, Eq] object Eq extends ParserBridge2[Expr3, Expr3, Eq]
case class Neq(x: Expr3, y: Expr3) extends Expr2 case class Neq(x: Expr3, y: Expr3) extends Expr2
object Neq extends ParserBridge2[Expr3, Expr3, Neq] object Neq extends ParserBridge2[Expr3, Expr3, Neq]
case class And(x: Expr2, y: Expr2) extends Expr1 case class And(x: Expr2, y: Expr1) extends Expr1
object And extends ParserBridge2[Expr2, Expr2, And] object And extends ParserBridge2[Expr2, Expr1, And]
case class Or(x: Expr1, y: Expr1) extends Expr case class Or(x: Expr1, y: Expr) extends Expr
object Or extends ParserBridge2[Expr1, Expr1, Or] object Or extends ParserBridge2[Expr1, Expr, Or]
// Types // Types
sealed trait Type sealed trait Type