fix: correct usage of RValue (add to Expr, VarDecl, Assign, PairElem)
This commit is contained in:
parent
f4d0ef8e70
commit
373683b592
@ -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
|
||||||
|
Loading…
x
Reference in New Issue
Block a user