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
|
||||
|
||||
object ast {
|
||||
// Expressions
|
||||
/* ============================ EXPRESSIONS ============================ */
|
||||
|
||||
sealed trait Expr extends RValue {
|
||||
val pos: Position
|
||||
}
|
||||
@ -19,7 +20,8 @@ object ast {
|
||||
sealed trait Expr5 extends Expr4
|
||||
sealed trait Expr6 extends Expr5
|
||||
|
||||
// Atoms
|
||||
/* ============================ ATOMIC EXPRESSIONS ============================ */
|
||||
|
||||
case class IntLiter(v: Int)(val pos: Position) extends Expr6
|
||||
object IntLiter extends ParserBridgePos1[Int, IntLiter]
|
||||
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
|
||||
object Parens extends ParserBridgePos1[Expr, Parens]
|
||||
|
||||
// Unary operators
|
||||
/* ============================ UNARY OPERATORS ============================ */
|
||||
|
||||
sealed trait UnaryOp extends Expr {
|
||||
val x: Expr
|
||||
}
|
||||
@ -59,7 +62,8 @@ object ast {
|
||||
case class Chr(x: Expr6)(val pos: Position) extends Expr6 with UnaryOp
|
||||
object Chr extends ParserBridgePos1[Expr6, Chr]
|
||||
|
||||
// Binary operators
|
||||
/* ============================ BINARY OPERATORS ============================ */
|
||||
|
||||
sealed trait BinaryOp(val name: String) extends Expr {
|
||||
val x: 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")
|
||||
object Or extends ParserBridgePos2[Expr1, Expr, Or]
|
||||
|
||||
// Types
|
||||
/* ============================ TYPES ============================ */
|
||||
|
||||
sealed trait Type
|
||||
sealed trait BaseType extends Type with PairElemType
|
||||
case class IntType()(val pos: Position) extends BaseType
|
||||
@ -125,11 +130,13 @@ object ast {
|
||||
case class UntypedPairType()(val pos: Position) extends PairElemType
|
||||
object UntypedPairType extends ParserBridgePos0[UntypedPairType]
|
||||
|
||||
// waccadoodledo
|
||||
/* ============================ PROGRAM STRUCTURE ============================ */
|
||||
|
||||
case class Program(funcs: List[FuncDecl], main: NonEmptyList[Stmt])(val pos: Position)
|
||||
object Program extends ParserBridgePos2[List[FuncDecl], NonEmptyList[Stmt], Program]
|
||||
|
||||
// Function Definitions
|
||||
/* ============================ FUNCTION STRUCTURE ============================ */
|
||||
|
||||
case class FuncDecl(
|
||||
returnType: Type,
|
||||
name: Ident,
|
||||
@ -151,7 +158,8 @@ object ast {
|
||||
case class Param(paramType: Type, name: Ident)(val pos: Position)
|
||||
object Param extends ParserBridgePos2[Type, Ident, Param]
|
||||
|
||||
// Statements
|
||||
/* ============================ STATEMENTS ============================ */
|
||||
|
||||
sealed trait Stmt
|
||||
case class Skip()(val pos: Position) extends Stmt
|
||||
object Skip extends ParserBridgePos0[Skip]
|
||||
@ -178,6 +186,8 @@ object ast {
|
||||
case class Block(stmt: NonEmptyList[Stmt])(val pos: Position) extends Stmt
|
||||
object Block extends ParserBridgePos1[NonEmptyList[Stmt], Block]
|
||||
|
||||
/* ============================ LVALUES & RVALUES ============================ */
|
||||
|
||||
sealed trait LValue {
|
||||
val pos: Position
|
||||
}
|
||||
@ -196,7 +206,8 @@ object ast {
|
||||
case class Snd(elem: LValue)(val pos: Position) extends PairElem
|
||||
object Snd extends ParserBridgePos1[LValue, Snd]
|
||||
|
||||
// Parser bridges
|
||||
/* ============================ PARSER BRIDGES ============================ */
|
||||
|
||||
case class Position(line: Int, column: Int)
|
||||
|
||||
trait ParserSingletonBridgePos[+A] extends ErrorBridge {
|
||||
|
Loading…
x
Reference in New Issue
Block a user