在parboiled2中运行解析器

时间:2015-11-03 22:37:19

标签: scala parsing parboiled 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

但"运行"不接受:

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

1 个答案:

答案 0 :(得分:1)

看起来是以下行中的问题:

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

可以通过明确声明parserInput为val

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