2015-11-03 5 views
1

Документов для parboiled2 отметить следующее, чтобы получить результаты:Запуск парсер внутри parboiled2

https://github.com/sirthias/parboiled2#access-to-parser-results

val parser = new MyParser(input) 
val result = parser.rootRule.run() 

Однако я получаю ошибку компиляции, когда attemping что, кажется, такой подход:

Здесь является схемой анализатора:

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

'вал в = новый StringBasedParserInput (ReadFile (Fname))' -> нет необходимости использовать этот конструктор. Таким образом, вы можете передать строку внутри вашего парсера csv. И он будет автоматически преобразован – ppopoff

ответ

1

Похоже, что проблема в следующей строке:

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

и его можно установить с помощью явного у объявляя parserInput как вал

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