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