Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- def mobile: Parser[Any] = ("[" ~> leftElements ~ "|" ~ rightElements <~ "]") ^^ { case left ~ "|" ~ right => Mobile(left ::: right, 0)}
- def leftElements: Parser[List[Node]] = repsep(element, ",") ^^ {
- case nodes: List[Node] =>
- var pos = 1D
- nodes.reverse foreach {
- case s: Spacer =>
- pos += s.distance
- case n =>
- n.distance = pos
- pos += 1D
- }
- nodes
- }
- def rightElements: Parser[List[Node]] = repsep(element, ",") ^^ {
- case nodes: List[Node] =>
- var pos = 1D
- nodes foreach {
- case s: Spacer =>
- pos += s.distance
- s.distance = -s.distance
- case n =>
- n.distance = -pos
- pos += 1D
- }
- nodes
- }
- def element: Parser[Any] = number | spacer | mobile
- def number: Parser[Leaf] = floatingPointNumber ^^ { case n => Leaf(n.toDouble, 0)}
- def spacer: Parser[Spacer] = ("s" ~ floatingPointNumber) ^^ { case "s" ~ n => Spacer(n.toDouble)}
Advertisement
Add Comment
Please, Sign In to add comment