feat: implemented lexer-backed error builder, error messages are now based on predefined tokens
Co-authored-by: gc1523
This commit is contained in:
@@ -80,5 +80,15 @@ object lexer {
|
||||
val stringLit = lexer.lexeme.string.ascii
|
||||
val implicits = lexer.lexeme.symbol.implicits
|
||||
|
||||
val errTokens = Seq(
|
||||
lexer.nonlexeme.names.identifier.map(v => s"identifier $v"),
|
||||
lexer.nonlexeme.integer.decimal32[Int].map(n => s"integer $n"),
|
||||
lexer.nonlexeme.character.ascii.map(c => s"character literal $c"),
|
||||
lexer.nonlexeme.string.ascii.map(s => s"string literal $s"),
|
||||
character.whitespace.map(_ => "")
|
||||
) ++ desc.symbolDesc.hardKeywords.map { k =>
|
||||
lexer.nonlexeme.symbol(k).as(s"keyword $k")
|
||||
}
|
||||
|
||||
def fully[A](p: Parsley[A]): Parsley[A] = lexer.fully(p)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user