1
我想在Scala中編寫一個解析器,逐漸建立一個具體的類型層次結構。我開始於:如何解析爲Scala中的某個類型
private def word = regex(new Regex("[a-zA-Z][a-zA-Z0-9-]*"))
private def quicktoken: Parser[Quicktoken] = "/" ~> word <~ "/" <~ (space?) ^^ { new Quicktoken(_) }
這很好。/hello /將被解析爲一個quicktoken
現在我想將quicktoken添加到複合表達式。我有一個類
class MatchTokenPart(word:String,quicktoken:RewriteWord){
}
我本來以爲我可以寫...
private def matchTokenPartContent: Parser[MatchTokenPart] = word<~equals~quicktoken ^^ { case word~quicktoken => new MatchTokenPart(word, quicktoken)}
,但它不工作。它表示這個單詞是類型爲Option [String]的類型,以及類型爲String的quicktoken。我錯過了什麼?