From af919742a06905383fa0b1860185cbd41a1a3511 Mon Sep 17 00:00:00 2001 From: Gleb Koval Date: Fri, 31 Jan 2025 20:39:45 +0000 Subject: [PATCH] fix: fully fix binary operators associativity --- src/main/wacc/ast.scala | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/src/main/wacc/ast.scala b/src/main/wacc/ast.scala index 8538e81..6166d4b 100644 --- a/src/main/wacc/ast.scala +++ b/src/main/wacc/ast.scala @@ -44,16 +44,16 @@ object ast { object Chr extends ParserBridge1[Expr6, Chr] // Binary operators - case class Add(x: Expr5, y: Expr6) extends Expr4 - object Add extends ParserBridge2[Expr5, Expr6, Add] - case class Sub(x: Expr5, y: Expr6) extends Expr4 - object Sub extends ParserBridge2[Expr5, Expr6, Sub] - case class Mul(x: Expr6, y: Expr6) extends Expr5 - object Mul extends ParserBridge2[Expr6, Expr6, Mul] - case class Div(x: Expr6, y: Expr6) extends Expr5 - object Div extends ParserBridge2[Expr6, Expr6, Div] - case class Mod(x: Expr6, y: Expr6) extends Expr5 - object Mod extends ParserBridge2[Expr6, Expr6, Mod] + case class Add(x: Expr4, y: Expr5) extends Expr4 + object Add extends ParserBridge2[Expr4, Expr5, Add] + case class Sub(x: Expr4, y: Expr5) extends Expr4 + object Sub extends ParserBridge2[Expr4, Expr5, Sub] + case class Mul(x: Expr5, y: Expr6) extends Expr5 + object Mul extends ParserBridge2[Expr5, Expr6, Mul] + case class Div(x: Expr5, y: Expr6) extends Expr5 + object Div extends ParserBridge2[Expr5, Expr6, Div] + case class Mod(x: Expr5, y: Expr6) extends Expr5 + object Mod extends ParserBridge2[Expr5, Expr6, Mod] case class Greater(x: Expr4, y: Expr4) extends Expr3 object Greater extends ParserBridge2[Expr4, Expr4, Greater] case class GreaterEq(x: Expr4, y: Expr4) extends Expr3 @@ -66,10 +66,10 @@ object ast { object Eq extends ParserBridge2[Expr3, Expr3, Eq] case class Neq(x: Expr3, y: Expr3) extends Expr2 object Neq extends ParserBridge2[Expr3, Expr3, Neq] - case class And(x: Expr2, y: Expr2) extends Expr1 - object And extends ParserBridge2[Expr2, Expr2, And] - case class Or(x: Expr1, y: Expr1) extends Expr - object Or extends ParserBridge2[Expr1, Expr1, Or] + case class And(x: Expr2, y: Expr1) extends Expr1 + object And extends ParserBridge2[Expr2, Expr1, And] + case class Or(x: Expr1, y: Expr) extends Expr + object Or extends ParserBridge2[Expr1, Expr, Or] // Types sealed trait Type