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