refactor: implemented labelAndExplain(), combining label and explain, and... #9

Merged
gc1523 merged 18 commits from error-messages into master 2025-02-06 20:30:26 +00:00
2 changed files with 114 additions and 25 deletions
Showing only changes of commit bd779931b6 - Show all commits

View File

@@ -18,9 +18,9 @@ object parser {
import lexer.{ident, integer, charLit, stringLit, negateCheck, errTokens} import lexer.{ident, integer, charLit, stringLit, negateCheck, errTokens}
import ast._ import ast._
//error extensions // error extensions
extension [A](p: Parsley[A]) { extension [A](p: Parsley[A]) {
//combines label and explain together into one function call // combines label and explain together into one function call
def labelAndExplain(label: String, explanation: String): Parsley[A] = { def labelAndExplain(label: String, explanation: String): Parsley[A] = {
p.label(label).explain(explanation) p.label(label).explain(explanation)
} }
@@ -28,9 +28,10 @@ object parser {
t match { t match {
case LabelType.Expr => case LabelType.Expr =>
labelWithType(t).explain( labelWithType(t).explain(
"a valid expression can start with: null, literals, identifiers, unary operators, or parentheses. " + "a valid expression can start with: null, literals, identifiers, unary operators, or parentheses. " +
"Expressions can also contain array indexing and binary operators. " + "Expressions can also contain array indexing and binary operators. " +
"Pair extraction is not allowed in expressions, only in assignments.") "Pair extraction is not allowed in expressions, only in assignments."
)
case _ => labelWithType(t) case _ => labelWithType(t)
} }
} }