1

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
       ^
4

1 に答える 1

1

次の行内の問題のようです:

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

parserInputvalとして明示的に宣言することで修正できます

case class CsvParser(val input: ParserInput, delimiter: String = ",") 
于 2016-08-19T01:57:39.343 に答える