【发布时间】:2020-04-29 00:32:08
【问题描述】:
我正在尝试在 Scala 中构建一个基本的组合器解析器,并且在尝试用它编译最基本的解析器(字母“A”的解析器)时,我从 scalac 中得到三个我不明白的语法错误。我正在查看我的代码,但无法确定语法的哪些部分不正确,即使与在线示例进行比较也是如此。有人可以在这里解释一下我的 Scala 代码的哪些部分有问题吗?
代码:
import lexer
import scala.Option
object Main {
def main(args: Array[String]) {
val Lexer = new lexer.Lexer
val tokens = Lexer.lex(args(0))
val parseA = satsify(t => t.key == "A")
println(parseA(tokens))
}
def satsify(predicate: Token => Bool): List(Token) => Option[(Token, List(Token))] = {
tl: List(Token) => match tl {
case tl.isEmpty => None
case predicate(tl(0)) => Some(tl(0), tl.tail)
case _ => None
}
}
}
错误:
combParser.scala:2: error: '.' expected but ';' found.
import scala.Option
^
combParser.scala:12: error: '=' expected but '(' found.
def satsify(predicate: Token => Bool): List(Token) => Option[(Token, List(Token))] = {
^
combParser.scala:19: error: illegal start of simple expression
}
^
three errors found
【问题讨论】: