小编Ral*_*all的帖子

如何在基于Scala解析器组合器的解析器中进一步改进错误消息?

我编写了一个基于Scala解析器组合器的解析器:

class SxmlParser extends RegexParsers with ImplicitConversions with PackratParsers {
    [...]
    lazy val document: PackratParser[AstNodeDocument] =
        ((procinst | element | comment | cdata | whitespace | text)*) ^^ {
            AstNodeDocument(_)
        }
    [...]
}
object SxmlParser {
    def parse(text: String): AstNodeDocument = {
        var ast = AstNodeDocument()
        val parser = new SxmlParser()
        val result = parser.parseAll(parser.document, new CharArrayReader(text.toArray))
        result match {
            case parser.Success(x, _) => ast = x
            case parser.NoSuccess(err, next) => {
                tool.die("failed to parse SXML input " +
                    "(line …
Run Code Online (Sandbox Code Playgroud)

error-handling scala parser-combinators

7
推荐指数
1
解决办法
2169
查看次数

标签 统计

error-handling ×1

parser-combinators ×1

scala ×1