From 764e335364a17870b664f7828ec98af0c01dc050 Mon Sep 17 00:00:00 2001 From: Jonny Date: Fri, 7 Feb 2025 16:28:58 +0000 Subject: [PATCH] refactor: add comments in ast.scala --- src/main/wacc/ast.scala | 29 ++++++++++++++++++++--------- 1 file changed, 20 insertions(+), 9 deletions(-) diff --git a/src/main/wacc/ast.scala b/src/main/wacc/ast.scala index 62b134c..ac0e585 100644 --- a/src/main/wacc/ast.scala +++ b/src/main/wacc/ast.scala @@ -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 {