From 373683b592ce4946193ccdeac4f85446029b6ea0 Mon Sep 17 00:00:00 2001 From: Gleb Koval Date: Fri, 31 Jan 2025 19:42:10 +0000 Subject: [PATCH] fix: correct usage of RValue (add to Expr, VarDecl, Assign, PairElem) --- src/main/wacc/ast.scala | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/src/main/wacc/ast.scala b/src/main/wacc/ast.scala index 04d888b..6a86abf 100644 --- a/src/main/wacc/ast.scala +++ b/src/main/wacc/ast.scala @@ -12,7 +12,7 @@ import parsley.generic._ object ast { // Expressions - sealed trait Expr + sealed trait Expr extends RValue sealed trait Expr1 extends Expr sealed trait Expr2 extends Expr1 sealed trait Expr3 extends Expr2 @@ -48,13 +48,13 @@ object ast { // R values sealed trait RValue - case class ArrayLiter(elems: List[Expr]) extends Expr6 with RValue + case class ArrayLiter(elems: List[Expr]) extends RValue object ArrayLiter extends ParserBridge1[List[Expr], ArrayLiter] - case class NewPair(fst: Expr, snd: Expr) extends Expr6 with RValue + case class NewPair(fst: Expr, snd: Expr) extends RValue object NewPair extends ParserBridge2[Expr, Expr, NewPair] - case class Call(name: Ident, args: List[Expr]) extends Expr6 with RValue + case class Call(name: Ident, args: List[Expr]) extends RValue object Call extends ParserBridge2[Ident, List[Expr], Call] // Unary operators @@ -100,10 +100,10 @@ object ast { // Statements sealed trait Stmt case object Skip extends Stmt with ParserBridge0[Skip.type] - case class VarDecl(varType: Type, name: Ident, expr: Expr) extends Stmt - object VarDecl extends ParserBridge3[Type, Ident, Expr, VarDecl] - case class Assign(lhs: LValue, expr: Expr) extends Stmt - object Assign extends ParserBridge2[LValue, Expr, Assign] + case class VarDecl(varType: Type, name: Ident, value: RValue) extends Stmt + object VarDecl extends ParserBridge3[Type, Ident, RValue, VarDecl] + case class Assign(lhs: LValue, value: RValue) extends Stmt + object Assign extends ParserBridge2[LValue, RValue, Assign] case class Read(lhs: LValue) extends Stmt object Read extends ParserBridge1[LValue, Read] case class Free(expr: Expr) extends Stmt @@ -125,7 +125,7 @@ object ast { sealed trait LValue // Pair Elements - sealed trait PairElem extends LValue + sealed trait PairElem extends LValue with RValue case class Fst(elem: LValue) extends PairElem object Fst extends ParserBridge1[LValue, Fst] case class Snd(elem: LValue) extends PairElem