final class Parser[Expr[_], Type[_], A] extends VersionSpecificParser[Expr, Type, A]
Parses an interpolated string expression into some value
- Expr
the macro-level expression type
- Type
the macro-level type type
- A
the type of the parsed result
- Grouped
- Alphabetic
- By Inheritance
- Parser
- VersionSpecificParser
- AnyRef
- Any
- by any2stringadd
- by StringFormat
- by Ensuring
- by ArrowAssoc
- Hide All
- Show All
- Public
- Protected
Value Members
- final def !=(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- final def ##: Int
- Definition Classes
- AnyRef → Any
- def +(other: String): String
- def ->[B](y: B): (Parser[Expr, Type, A], B)
- final def ==(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- def andThen[B, Z](rhs: Parser[Expr, Type, B])(implicit ev: BiSequenced[A, B, Z]): Parser[Expr, Type, Z]
Returns a parser which invokes this parser, and upon success invokes the other parser.
Returns a parser which invokes this parser, and upon success invokes the other parser.
- Z
the result parser's parsed value type
- rhs
the parser to call after this one
- ev
A descriptor of how to combine two values into one value
- final def asInstanceOf[T0]: T0
- Definition Classes
- Any
- def attempt: Parser[Expr, Type, A]
Returns a parser which invokes this parser, but treats the result of a failed parse as if it does not consume input
- def clone(): AnyRef
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.CloneNotSupportedException]) @native()
- def contramap[Z](contrafn: (Z) => A): Extractor[Expr, Type, Z]
Returns an extractor which invokes this extractor after mapping the input value using
contrafn
- def ensuring(cond: (Parser[Expr, Type, A]) => Boolean, msg: => Any): Parser[Expr, Type, A]
- def ensuring(cond: (Parser[Expr, Type, A]) => Boolean): Parser[Expr, Type, A]
- def ensuring(cond: Boolean, msg: => Any): Parser[Expr, Type, A]
- def ensuring(cond: Boolean): Parser[Expr, Type, A]
- final def eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- def equals(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef → Any
- def extract(sc: StringContext, value: A)(implicit ev: =:=[Id[Any], Expr[Any]], ev2: =:=[ClassTag[Any], Type[Any]]): Option[Seq[Any]]
Extract subexpressions from the given value according to the given StringContext
- final def extractor[UnexprA](c: Context)(extensionClassName: String)(value: scala.reflect.macros.blackbox.Context.Expr[UnexprA])(implicit ev: <:<[scala.reflect.macros.blackbox.Context.Expr[UnexprA], A], ev2: =:=[scala.reflect.macros.blackbox.Context.Expr[_], Expr[_]], ev3: =:=[scala.reflect.macros.blackbox.Context.TypeTag[_], Type[_]], ttUnexprA: scala.reflect.macros.blackbox.Context.TypeTag[UnexprA]): scala.reflect.macros.blackbox.Context.Expr[Any]
Build an extractor that will extract values from a value of type A based on the provided StringContext
Build an extractor that will extract values from a value of type A based on the provided StringContext
- Definition Classes
- VersionSpecificParser
- def finalize(): Unit
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.Throwable])
- def flatMap[ExprZ <: Expr[Any], Z](cofn: (A) => Interpolator[ExprZ, Z]): Interpolator[ExprZ, Z]
- final def getClass(): Class[_ <: AnyRef]
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
- def hashCode(): Int
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
- def hide: Parser[Expr, Type, A]
Returns a parser which invokes this parser, but does not show the expected value in failure messages
- def imap[Z](cofn: (A) => Z, contrafn: (Z) => A): Parser[Expr, Type, Z]
- val impl: internal.Parser[Expr, Type, A]
- Attributes
- protected[stringContextParserCombinator]
- Definition Classes
- Parser → VersionSpecificParser
- def interpolate(sc: StringContext, args: List[Any])(implicit ev: <:<[Any, Expr[Any]]): A
Processes an immediate string context and its arguments into a value
- final def interpolate(c: Context)(extensionClassName: String)(args: Seq[scala.reflect.macros.blackbox.Context.Expr[Any]])(implicit ev: <:<[scala.reflect.macros.blackbox.Context.Expr[Any], Expr[Any]]): A
Parses a StringContext and its arguments into a value
Parses a StringContext and its arguments into a value
- Definition Classes
- VersionSpecificParser
def valueImpl(c:Context)(args:c.Expr[Any]*):c.Expr[Result] = { val myParser:Interpolator[Expr[Result]] = ??? myParser.interpolate(c)("package.ValueStringContext")(args) } implicit final class ValueStringContext(val sc:scala.StringContext) extends AnyVal { def value(args:Any*):Result = macro valueImpl } // alternatively implicit final class ValueStringContext(val sc:scala.StringContext) { object value { def apply(args:Any*):Result = macro valueImpl } }
Example: - final def isInstanceOf[T0]: Boolean
- Definition Classes
- Any
- def map[Z](cofn: (A) => Z): Interpolator[Expr[Any], Z]
Returns an interpolator which invokes this parser, then modifies a successful result according to fn
- 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 opaque(description: String): Parser[Expr, Type, A]
Returns a parser which invokes this parser, but has the given description upon failure
- def optionally[Z](strategy: RepeatStrategy = RepeatStrategy.Possessive)(implicit ev: BiOptionally[Expr, A, Z]): Parser[Expr, Type, Z]
Returns a parser which invokes this parser and provides a value whether this parser succeeded or failed
Returns a parser which invokes this parser and provides a value whether this parser succeeded or failed
- Z
the result parser's parsed value type
- strategy
whether the optionally will attempt to match as much or as little as possible, and whether it will backtrack. Default is RepeatStrategy.Possessive
- ev
A descriptor of how to mark present or absent values
- def orElse[B, Z](rhs: Parser[Expr, Type, B])(implicit ev: BiEithered[Expr, A, B, Z]): Parser[Expr, Type, Z]
Returns a parser which invokes this parser, and then: * If this parser run succeeded, return this internal's success * If this parser failed and consumed input, return this parser's failure * If this parser failed but did not consume input, run the other parser and return the other parser's result
Returns a parser which invokes this parser, and then: * If this parser run succeeded, return this internal's success * If this parser failed and consumed input, return this parser's failure * If this parser failed but did not consume input, run the other parser and return the other parser's result
- Z
the result parser's parsed value type
- rhs
the parser to call after this one
- ev
A descriptor of how to treat either value as one value
- def repeat[Z](min: Int = 0, max: Int = Integer.MAX_VALUE, delimiter: Parser[Expr, Type, Unit] = new Parser[Expr, Type, Unit](new internal.Pass), strategy: RepeatStrategy = RepeatStrategy.Possessive)(implicit ev: BiRepeated[Expr, A, Z]): Parser[Expr, Type, Z]
Returns a parser which invokes this parser repeatedly and returns the aggregated result
Returns a parser which invokes this parser repeatedly and returns the aggregated result
- Z
the result parser's parsed value type
- min
the minimum number of repeats to be considered successful
- max
the maximum number of repeats to consume
- delimiter
a parser describing separators between each repeat. Defaults to a parser that always succeeds and consumes no input.
- strategy
whether the repeat will attempt to match as much or as little as possible, and whether it will backtrack. Default is RepeatStrategy.Possessive
- ev
A descriptor of how to combine the repeated values into one value
- final def synchronized[T0](arg0: => T0): T0
- Definition Classes
- AnyRef
- def toExtractor: Extractor[Expr, Type, A]
Returns an Extractor that builds an extractor like this parser would
- def toInterpolator: Interpolator[Expr[Any], A]
Returns an Interpolator that interpolates like this parser would
- def toString(): String
- Definition Classes
- AnyRef → Any
- def void: Parser[Expr, Type, Unit]
Returns a parser which discards its result while interpolating and ignores its input value while extracting
- final def wait(): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- final def wait(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- final def wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException]) @native()
- def widenWith[Z](cofn: (A) => Z, contrafn: PartialExprFunction[Expr, Z, A]): Parser[Expr, Type, Z]
Returns an parser which is the pair of an Interpolator#map and an Extractor#widenWith
Deprecated Value Members
- def formatted(fmtstr: String): String
- Implicit
- This member is added by an implicit conversion from Parser[Expr, Type, A] toStringFormat[Parser[Expr, Type, A]] performed by method StringFormat in scala.Predef.
- Definition Classes
- StringFormat
- Annotations
- @deprecated @inline()
- Deprecated
(Since version 2.12.16) Use
formatString.format(value)
instead ofvalue.formatted(formatString)
, or use thef""
string interpolator. In Java 15 and later,formatted
resolves to the new method in String which has reversed parameters.
- def →[B](y: B): (Parser[Expr, Type, A], B)
- Implicit
- This member is added by an implicit conversion from Parser[Expr, Type, A] toArrowAssoc[Parser[Expr, Type, A]] performed by method ArrowAssoc in scala.Predef.
- Definition Classes
- ArrowAssoc
- Annotations
- @deprecated
- Deprecated
(Since version 2.13.0) Use
->
instead. If you still wish to display it as one character, consider using a font with programming ligatures such as Fira Code.
A library for writing custom string interpolation implementations via parser combinators
## Entry Points
If the string context should create an object: Create leaf parsers using the methods in the Interpolator companion object, combine and manipulate them with the methods in Interpolator, then interpolate using the final
Interpolator
'sinterpolate
method.If the string context should create an extractor: Create leaf parsers using the methods in the Extractor companion object, combine and manipulate them with the methods in Extractor, then interpolate using the final
Extractor
'sextractor
method.If the string context should do both: Create leaf parsers using the methods in the Parser companion object, combine and manipulate them with the methods in Parser, then interpolate using the final
Parser
'sinterpolate
andextractor
methods.