在parboiled2中运行解析器



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

https://github.com/sirthias/parboiled2#access-到分析器结果

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

但不接受"运行":

 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 = ",") 

最新更新