Cay Horstmann のコンビネーター パーサーの演習を行っています。match ステートメントで、数値を表す文字列と変数を表す文字列を区別する最善の方法を考えています。
def factor: Parser[ExprTree] = (wholeNumber | "(" ~ expr ~ ")" | ident) ^^ {
case a: wholeNumber => Number(a.toInt)
case a: String => Variable(a)
}
そこの 2 行目の「case a: wholeNumber」は正しくありません。正規表現について考えましたが、「ケース」で動作させる方法が見つかりませんでした。