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
^
答案 0 :(得分:1)
看起来是以下行中的问题:
case class CsvParser(input: ParserInput, delimiter: String = ",")
可以通过明确声明parserInput
为val
case class CsvParser(val input: ParserInput, delimiter: String = ",")