У меня есть тип токенов, которые я хочу проанализировать с помощью Scala util.parsing.combinator.Parsers
. Мой класс токенов выглядит примерно так:
abstract class Token ()
case class T_Semicolon () extends Token {} // represents ;
case class T_LeftBracket () extends Token {} // represents (
....
case class T_Identifier ( s : String ) extends Token {}
case class T_Integer ( n : Int ) extends Token {}
Я хотел бы построить парсер Scala с обычными комбинаторами ~ ~> <~ | ...
следующим образом.
object StandAloneParser extends Parsers {
import Token._
override type Elem = Token
val prog = rep1 ( dec )
val dec = T_Def () ~> T_Identifier ( id ) ~ ...
Однако сопоставление с образцом не позволяет мне сопоставить T_Identifier ( id )
, потому что переменная id
не объявлена. Кого я могу решить с этой проблемой?