fix: correct usage of RValue (add to Expr, VarDecl, Assign, PairElem)

This commit is contained in:
Gleb Koval 2025-01-31 19:42:10 +00:00
parent f4d0ef8e70
commit 373683b592
Signed by: cyclane
GPG Key ID: 15E168A8B332382C

View File

@ -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