object mixed
This module contains specialist combinators for mixing unary and binary operators on the same level. This is only sensible when mixing infix-left and postfix or infix-right and prefix.
- Source
- mixed.scala
- Since
4.0.0
- Note
the behaviour of the enclosed combinators may be counter intuitive: they should not be used unless you know what you are doing.
- Alphabetic
- By Inheritance
- mixed
- AnyRef
- Any
- Hide All
- Show All
- Public
- All
Value Members
-
final
def
!=(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
-
final
def
##(): Int
- Definition Classes
- AnyRef → Any
-
final
def
==(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
-
final
def
asInstanceOf[T0]: T0
- Definition Classes
- Any
-
def
clone(): AnyRef
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws( ... ) @native()
-
final
def
eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
-
def
equals(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
-
def
finalize(): Unit
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws( classOf[java.lang.Throwable] )
-
final
def
getClass(): Class[_]
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
-
def
hashCode(): Int
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
-
final
def
isInstanceOf[T0]: Boolean
- Definition Classes
- Any
-
def
left1[A, B, C >: B](p: Parsley[A], uop: ⇒ Parsley[(C) ⇒ C], bop: ⇒ Parsley[(C, A) ⇒ B])(implicit wrap: (A) ⇒ C): Parsley[C]
This combinator handles left-associative parsing, and application of, zero or more binary operators and postfix unary operators between/before one or more values.
This combinator handles left-associative parsing, and application of, zero or more binary operators and postfix unary operators between/before one or more values.
First parse
p, then parse either auopor anopfollowed by ap, repeatedly. The results of theps,x1throughxn, are combined with the results of thebops,f1throughfn-1, and theuops,g1,1throughgm,i, with left-associative application:gm,i(gm,i-1(..gm,1(fn-1(..f1(g1,j(..g1,1(x1)..)), ... This application is then returned as the result of the combinator. Ifp,uop, orbopfails having consumed input at any point, the whole combinator fails.- A
the type of the values.
- B
the type returned by the operator, which must be a subtype of the result type
C.- C
the result type of the chain, which also fits into the recursive application site of the operators.
- p
the value to be parsed.
- uop
the operator before each binary application.
- bop
the operator between each value.
- wrap
a function that can convert the value type into the result type, this is provided automatically when
A <:< C.- returns
a parser that parses alternating
p,uop, andbop, ending in apand applies their results left-associatively.
scala> import parsley.expr.mixed, parsley.character.{digit, char} scala> sealed trait Expr scala> case class B(l: Expr, r: C) extends Expr scala> case class U(c: Expr) extends Expr scala> case class C(x: Char) extends Expr scala> val p = mixed.left1(digit.map(Constant), char('?') #> U, char('+') #> B) scala> p.parse("1?+2+3??") val res0 = Success(U(U(B(B(U(C('1')), C('2')), C('3')))))
- Since
4.0.0
- Note
if you know this is what you are looking for, you have found it: otherwise, this is not what you are looking for.
Example: -
final
def
ne(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
-
final
def
notify(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
-
final
def
notifyAll(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
-
def
right1[A, B, C >: B](p: Parsley[A], uop: Parsley[(C) ⇒ C], bop: ⇒ Parsley[(A, C) ⇒ B])(implicit wrap: (A) ⇒ C): Parsley[C]
This combinator handles right-associative parsing, and application of, zero or more binary operators and prefix unary operators between/before one or more values.
This combinator handles right-associative parsing, and application of, zero or more binary operators and prefix unary operators between/before one or more values.
First parse
p, then parse either auopor anopfollowed by ap, repeatedly. The results of theps,x1throughxn, are combined with the results of thebops,f1throughfn-1, and theuops,g1,1throughgm,i, with right-associative application:g1,1(g1,2(..g1,i(f1(x1, g2,1(..g2,j(f2(x2,... This application is then returned as the result of the combinator. Ifp,uop, orbopfails having consumed input at any point, the whole combinator fails.- A
the type of the values.
- B
the type returned by the operator, which must be a subtype of the result type
C.- C
the result type of the chain, which also fits into the recursive application site of the operators.
- p
the value to be parsed.
- uop
the operator before each binary application.
- bop
the operator between each value.
- wrap
a function that can convert the value type into the result type, this is provided automatically when
A <:< C.- returns
a parser that parses alternating
p,uop, andbop, ending in apand applies their results right-associatively.
scala> import parsley.expr.mixed, parsley.character.{digit, char} scala> sealed trait Expr scala> case class B(l: C, r: Expr) extends Expr scala> case class U(c: Expr) extends Expr scala> case class C(x: Char) extends Expr scala> val p = mixed.right1(digit.map(C), char('-') #> U, char('+') #> B) scala> p.parse("-1+--2+3") val res0 = Success(U(B(C('1'), U(U(B(C('2'), C('3')))))))
- Since
4.0.0
- Note
if you know this is what you are looking for, you have found it: otherwise, this is not what you are looking for.
Example: -
final
def
synchronized[T0](arg0: ⇒ T0): T0
- Definition Classes
- AnyRef
-
def
toString(): String
- Definition Classes
- AnyRef → Any
-
final
def
wait(): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )
-
final
def
wait(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )
-
final
def
wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... ) @native()