fastparse.P[Any] => fastparse.P[Unit] 没有可用的隐式视图
No implicit view available from fastparse.P[Any] => fastparse.P[Unit]
我正在处理 tutorial/explanation of fastparse 并收到错误消息
error: No implicit view available from fastparse.P[Any] => fastparse.P[Unit]
对于 sequence 示例。
我正在使用 sbt 1.3.8 和 scala 2.13.1。 fastparse 的定义版本是 2.2.2.
scala> import fastparse._
import fastparse._
scala> def ab[_:P] = P("a" ~ "b")
^
error: No implicit view available from fastparse.P[Any] => fastparse.P[Unit].
scala> def a[_:P] = P("a")
a: [_](implicit evidence: fastparse.P[Any])fastparse.package.P[Unit]
scala> def b[_:P] = P("b")
b: [_](implicit evidence: fastparse.P[Any])fastparse.package.P[Unit]
scala> def ab[_:P] = P(a ~ b)
^
error: No implicit view available from fastparse.package.P[Any] => fastparse.package.P[Unit].
scala> def ab[_:P] = P("a" | "b")
ab: [_](implicit evidence: fastparse.P[Any])fastparse.package.P[Unit]
scala> fastparse.parse("a", ab(_))
res2: fastparse.Parsed[Unit] = Parsed.Success((), 1)
这个错误是什么意思,我做了什么wrong/how我可以在没有错误的情况下结束这个教程步骤吗?
您又错过了一次导入
import NoWhitespace._
您需要指定如何处理whitespace,例如以下失败
import fastparse._
import fastparse.NoWhitespace._
def ab[_:P] = P("a" ~ "b")
assert(parse("a b", ab(_)).isSuccess)
因为"a b"
包含空格,而下面的通过
import fastparse._
import fastparse.SingleLineWhitespace._
def ab[_:P] = P("a" ~ "b")
assert(parse("a b", ab(_)).isSuccess)
因为 import fastparse.SingleLineWhitespace._
提供空白消费者。如果我们看一下 ~
的定义
def ~[V, R](other: P[V])
(implicit s: Implicits.Sequencer[T, V, R],
whitespace: P[Any] => P[Unit],
ctx: P[_]): P[R] = macro MacroImpls.parsedSequence[T, V, R]
我们看到 implicit whitespace: P[Any] => P[Unit]
要求解释了 No implicit view available
错误。空白导入提供了这种能力,例如
object NoWhitespace {
implicit object noWhitespaceImplicit extends (ParsingRun[_] => ParsingRun[Unit]){
def apply(ctx: ParsingRun[_]) = ctx.freshSuccessUnit()
}
}
我们在哪里看到 ParsingRun[_] => ParsingRun[Unit]
隐式函数。
我正在处理 tutorial/explanation of fastparse 并收到错误消息
error: No implicit view available from fastparse.P[Any] => fastparse.P[Unit]
对于 sequence 示例。
我正在使用 sbt 1.3.8 和 scala 2.13.1。 fastparse 的定义版本是 2.2.2.
scala> import fastparse._
import fastparse._
scala> def ab[_:P] = P("a" ~ "b")
^
error: No implicit view available from fastparse.P[Any] => fastparse.P[Unit].
scala> def a[_:P] = P("a")
a: [_](implicit evidence: fastparse.P[Any])fastparse.package.P[Unit]
scala> def b[_:P] = P("b")
b: [_](implicit evidence: fastparse.P[Any])fastparse.package.P[Unit]
scala> def ab[_:P] = P(a ~ b)
^
error: No implicit view available from fastparse.package.P[Any] => fastparse.package.P[Unit].
scala> def ab[_:P] = P("a" | "b")
ab: [_](implicit evidence: fastparse.P[Any])fastparse.package.P[Unit]
scala> fastparse.parse("a", ab(_))
res2: fastparse.Parsed[Unit] = Parsed.Success((), 1)
这个错误是什么意思,我做了什么wrong/how我可以在没有错误的情况下结束这个教程步骤吗?
您又错过了一次导入
import NoWhitespace._
您需要指定如何处理whitespace,例如以下失败
import fastparse._
import fastparse.NoWhitespace._
def ab[_:P] = P("a" ~ "b")
assert(parse("a b", ab(_)).isSuccess)
因为"a b"
包含空格,而下面的通过
import fastparse._
import fastparse.SingleLineWhitespace._
def ab[_:P] = P("a" ~ "b")
assert(parse("a b", ab(_)).isSuccess)
因为 import fastparse.SingleLineWhitespace._
提供空白消费者。如果我们看一下 ~
def ~[V, R](other: P[V])
(implicit s: Implicits.Sequencer[T, V, R],
whitespace: P[Any] => P[Unit],
ctx: P[_]): P[R] = macro MacroImpls.parsedSequence[T, V, R]
我们看到 implicit whitespace: P[Any] => P[Unit]
要求解释了 No implicit view available
错误。空白导入提供了这种能力,例如
object NoWhitespace {
implicit object noWhitespaceImplicit extends (ParsingRun[_] => ParsingRun[Unit]){
def apply(ctx: ParsingRun[_]) = ctx.freshSuccessUnit()
}
}
我们在哪里看到 ParsingRun[_] => ParsingRun[Unit]
隐式函数。