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 { object ast {
// Expressions // Expressions
sealed trait Expr sealed trait Expr extends RValue
sealed trait Expr1 extends Expr sealed trait Expr1 extends Expr
sealed trait Expr2 extends Expr1 sealed trait Expr2 extends Expr1
sealed trait Expr3 extends Expr2 sealed trait Expr3 extends Expr2
@ -48,13 +48,13 @@ object ast {
// R values // R values
sealed trait RValue 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] 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] 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] object Call extends ParserBridge2[Ident, List[Expr], Call]
// Unary operators // Unary operators
@ -100,10 +100,10 @@ object ast {
// Statements // Statements
sealed trait Stmt sealed trait Stmt
case object Skip extends Stmt with ParserBridge0[Skip.type] case object Skip extends Stmt with ParserBridge0[Skip.type]
case class VarDecl(varType: Type, name: Ident, expr: Expr) extends Stmt case class VarDecl(varType: Type, name: Ident, value: RValue) extends Stmt
object VarDecl extends ParserBridge3[Type, Ident, Expr, VarDecl] object VarDecl extends ParserBridge3[Type, Ident, RValue, VarDecl]
case class Assign(lhs: LValue, expr: Expr) extends Stmt case class Assign(lhs: LValue, value: RValue) extends Stmt
object Assign extends ParserBridge2[LValue, Expr, Assign] object Assign extends ParserBridge2[LValue, RValue, Assign]
case class Read(lhs: LValue) extends Stmt case class Read(lhs: LValue) extends Stmt
object Read extends ParserBridge1[LValue, Read] object Read extends ParserBridge1[LValue, Read]
case class Free(expr: Expr) extends Stmt case class Free(expr: Expr) extends Stmt
@ -125,7 +125,7 @@ object ast {
sealed trait LValue sealed trait LValue
// Pair Elements // Pair Elements
sealed trait PairElem extends LValue sealed trait PairElem extends LValue with RValue
case class Fst(elem: LValue) extends PairElem case class Fst(elem: LValue) extends PairElem
object Fst extends ParserBridge1[LValue, Fst] object Fst extends ParserBridge1[LValue, Fst]
case class Snd(elem: LValue) extends PairElem case class Snd(elem: LValue) extends PairElem