scala - parboiled2 Illegal rule composition -


i writing cron parser, compiler complains illegal rule composition,

what's wrong parser?

import org.parboiled2._  sealed trait part case class fixed(points: seq[int]) extends part case class range(start: int, end: int) extends part case class every(start: int, interval: int) extends part case object full extends part case object ignore extends part  class cronparser(val input: parserinput) extends parser {    def number = rule { capture(digits) ~> (_.toint) }    def digits = rule { oneormore(charpredicate.digit) }    def fixed = rule { oneormore(number).separatedby(",") ~> fixed }    def range = rule { digits ~ '-' ~ digits ~> range }    def every= rule { digits ~ '/' ~ digits ~> every }    def full= rule { '*' ~ push(full) }    def ignore = rule { '?' ~ push(ignore) }    def part = rule { fixed | range | every | full | ignore }    def expr = rule { part ~ part ~ part ~ part ~ part} } 

you're using digits think want using number. following should work fine:

class cronparser(val input: parserinput) extends parser {   def number = rule { capture(digits) ~> (_.toint) }   def digits = rule { oneormore(charpredicate.digit) }   def fixed = rule { oneormore(number).separatedby(",") ~> fixed }   def range = rule { number ~ '-' ~ number ~> range }   def every = rule { number ~ '/' ~ number ~> every }   def full = rule { '*' ~ push(full) }   def ignore = rule { '?' ~ push(ignore) }   def part = rule { fixed | range | every | full | ignore }   def expr = rule { part ~ part ~ part ~ part ~ part } } 

the problem digits doesn't push value, meant range, etc. rules wanted pop values off stack, , these weren't able composed ~.


Comments

Popular posts from this blog

Email notification in google apps script -

c++ - Difference between pre and post decrement in recursive function argument -

javascript - IE11 incompatibility with jQuery's 'readonly'? -