运行 parboiled2 中的解析器

Running a parser within parboiled2

parboiled2 的文档提到以下内容以获得结果:

https://github.com/sirthias/parboiled2#access-to-parser-results

val parser = new MyParser(input) 
val result = parser.rootRule.run()

但是,在尝试这种方法时出现编译错误:

解析器的概要如下:

case class CsvParser(input: ParserInput, delimiter: String = ",") extends Parser {
    ..
   def file = zeroOrMore(line) ~ EOI
}

尝试 运行 的代码

val in = new StringBasedParserInput(readFile(fname))
val p = new CsvParser(in)
println(p.toString)
p.file.run

但是"run"不被接受:

 Error:(81, 12) too few argument lists for macro invocation
  p.file.run
       ^

看起来问题在下面一行:

case class CsvParser(input: ParserInput, delimiter: String = ",") 

并且可以通过将 parserInput 显式声明为 val

来修复
case class CsvParser(val input: ParserInput, delimiter: String = ",")