refactor: add comments in ast.scala
This commit is contained in:
parent
09036040d6
commit
764e335364
@ -8,7 +8,8 @@ import parsley.syntax.zipped._
|
|||||||
import cats.data.NonEmptyList
|
import cats.data.NonEmptyList
|
||||||
|
|
||||||
object ast {
|
object ast {
|
||||||
// Expressions
|
/* ============================ EXPRESSIONS ============================ */
|
||||||
|
|
||||||
sealed trait Expr extends RValue {
|
sealed trait Expr extends RValue {
|
||||||
val pos: Position
|
val pos: Position
|
||||||
}
|
}
|
||||||
@ -19,7 +20,8 @@ object ast {
|
|||||||
sealed trait Expr5 extends Expr4
|
sealed trait Expr5 extends Expr4
|
||||||
sealed trait Expr6 extends Expr5
|
sealed trait Expr6 extends Expr5
|
||||||
|
|
||||||
// Atoms
|
/* ============================ ATOMIC EXPRESSIONS ============================ */
|
||||||
|
|
||||||
case class IntLiter(v: Int)(val pos: Position) extends Expr6
|
case class IntLiter(v: Int)(val pos: Position) extends Expr6
|
||||||
object IntLiter extends ParserBridgePos1[Int, IntLiter]
|
object IntLiter extends ParserBridgePos1[Int, IntLiter]
|
||||||
case class BoolLiter(v: Boolean)(val pos: Position) extends Expr6
|
case class BoolLiter(v: Boolean)(val pos: Position) extends Expr6
|
||||||
@ -44,7 +46,8 @@ object ast {
|
|||||||
case class Parens(expr: Expr)(val pos: Position) extends Expr6
|
case class Parens(expr: Expr)(val pos: Position) extends Expr6
|
||||||
object Parens extends ParserBridgePos1[Expr, Parens]
|
object Parens extends ParserBridgePos1[Expr, Parens]
|
||||||
|
|
||||||
// Unary operators
|
/* ============================ UNARY OPERATORS ============================ */
|
||||||
|
|
||||||
sealed trait UnaryOp extends Expr {
|
sealed trait UnaryOp extends Expr {
|
||||||
val x: Expr
|
val x: Expr
|
||||||
}
|
}
|
||||||
@ -59,7 +62,8 @@ object ast {
|
|||||||
case class Chr(x: Expr6)(val pos: Position) extends Expr6 with UnaryOp
|
case class Chr(x: Expr6)(val pos: Position) extends Expr6 with UnaryOp
|
||||||
object Chr extends ParserBridgePos1[Expr6, Chr]
|
object Chr extends ParserBridgePos1[Expr6, Chr]
|
||||||
|
|
||||||
// Binary operators
|
/* ============================ BINARY OPERATORS ============================ */
|
||||||
|
|
||||||
sealed trait BinaryOp(val name: String) extends Expr {
|
sealed trait BinaryOp(val name: String) extends Expr {
|
||||||
val x: Expr
|
val x: Expr
|
||||||
val y: Expr
|
val y: Expr
|
||||||
@ -101,7 +105,8 @@ object ast {
|
|||||||
case class Or(x: Expr1, y: Expr)(val pos: Position) extends Expr with BinaryOp("logical or")
|
case class Or(x: Expr1, y: Expr)(val pos: Position) extends Expr with BinaryOp("logical or")
|
||||||
object Or extends ParserBridgePos2[Expr1, Expr, Or]
|
object Or extends ParserBridgePos2[Expr1, Expr, Or]
|
||||||
|
|
||||||
// Types
|
/* ============================ TYPES ============================ */
|
||||||
|
|
||||||
sealed trait Type
|
sealed trait Type
|
||||||
sealed trait BaseType extends Type with PairElemType
|
sealed trait BaseType extends Type with PairElemType
|
||||||
case class IntType()(val pos: Position) extends BaseType
|
case class IntType()(val pos: Position) extends BaseType
|
||||||
@ -125,11 +130,13 @@ object ast {
|
|||||||
case class UntypedPairType()(val pos: Position) extends PairElemType
|
case class UntypedPairType()(val pos: Position) extends PairElemType
|
||||||
object UntypedPairType extends ParserBridgePos0[UntypedPairType]
|
object UntypedPairType extends ParserBridgePos0[UntypedPairType]
|
||||||
|
|
||||||
// waccadoodledo
|
/* ============================ PROGRAM STRUCTURE ============================ */
|
||||||
|
|
||||||
case class Program(funcs: List[FuncDecl], main: NonEmptyList[Stmt])(val pos: Position)
|
case class Program(funcs: List[FuncDecl], main: NonEmptyList[Stmt])(val pos: Position)
|
||||||
object Program extends ParserBridgePos2[List[FuncDecl], NonEmptyList[Stmt], Program]
|
object Program extends ParserBridgePos2[List[FuncDecl], NonEmptyList[Stmt], Program]
|
||||||
|
|
||||||
// Function Definitions
|
/* ============================ FUNCTION STRUCTURE ============================ */
|
||||||
|
|
||||||
case class FuncDecl(
|
case class FuncDecl(
|
||||||
returnType: Type,
|
returnType: Type,
|
||||||
name: Ident,
|
name: Ident,
|
||||||
@ -151,7 +158,8 @@ object ast {
|
|||||||
case class Param(paramType: Type, name: Ident)(val pos: Position)
|
case class Param(paramType: Type, name: Ident)(val pos: Position)
|
||||||
object Param extends ParserBridgePos2[Type, Ident, Param]
|
object Param extends ParserBridgePos2[Type, Ident, Param]
|
||||||
|
|
||||||
// Statements
|
/* ============================ STATEMENTS ============================ */
|
||||||
|
|
||||||
sealed trait Stmt
|
sealed trait Stmt
|
||||||
case class Skip()(val pos: Position) extends Stmt
|
case class Skip()(val pos: Position) extends Stmt
|
||||||
object Skip extends ParserBridgePos0[Skip]
|
object Skip extends ParserBridgePos0[Skip]
|
||||||
@ -178,6 +186,8 @@ object ast {
|
|||||||
case class Block(stmt: NonEmptyList[Stmt])(val pos: Position) extends Stmt
|
case class Block(stmt: NonEmptyList[Stmt])(val pos: Position) extends Stmt
|
||||||
object Block extends ParserBridgePos1[NonEmptyList[Stmt], Block]
|
object Block extends ParserBridgePos1[NonEmptyList[Stmt], Block]
|
||||||
|
|
||||||
|
/* ============================ LVALUES & RVALUES ============================ */
|
||||||
|
|
||||||
sealed trait LValue {
|
sealed trait LValue {
|
||||||
val pos: Position
|
val pos: Position
|
||||||
}
|
}
|
||||||
@ -196,7 +206,8 @@ object ast {
|
|||||||
case class Snd(elem: LValue)(val pos: Position) extends PairElem
|
case class Snd(elem: LValue)(val pos: Position) extends PairElem
|
||||||
object Snd extends ParserBridgePos1[LValue, Snd]
|
object Snd extends ParserBridgePos1[LValue, Snd]
|
||||||
|
|
||||||
// Parser bridges
|
/* ============================ PARSER BRIDGES ============================ */
|
||||||
|
|
||||||
case class Position(line: Int, column: Int)
|
case class Position(line: Int, column: Int)
|
||||||
|
|
||||||
trait ParserSingletonBridgePos[+A] extends ErrorBridge {
|
trait ParserSingletonBridgePos[+A] extends ErrorBridge {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user