我对 Scala 完全陌生。现在我正在尝试将我在标准 ML 中编写的解析器移植到 Scala 并遇到以下代码问题:
abstract class Token
case class Zero extends Token
case class At extends Token
//...
object Tokenizer {
def tokenize(seq : List[Char]) : List[Token] = seq match {
case List() => error("Empty input")
case '0' :: rest => Zero :: tokenize(rest)
case '@' :: rest => At :: tokenize(rest)
//...
}
}
在 SML 中,我不必声明 tokenize() 方法的返回类型,但似乎 Scala 需要它,并且它对我提供的类型不满意(它抱怨零,At 是无效类型,它们应该是代币类型)。请注意,我还想在解析阶段的稍后时间点匹配令牌列表。
我在网上和 stackoverflow 本身上进行了一些搜索,以查看之前是否曾提出过类似的问题(看起来如此微不足道),但不知何故我找不到任何东西。我很确定我有一些基本错误,请随时启发我:)