如何使用〜>和<〜在Scala中的语法规则定义?

时间:2013-09-04 13:18:16

标签: scala dsl

如何使用〜>的正确位置忽略这些语法规则中的所有字符串?或者<〜运营商?

def typeDefBody = ident ~ ":" ~ ident ~ "{" ~ fieldBody ~ "}"

def fieldBody = "validation" ~ "{" ~ validationBody ~ "}"

def validationBody = length ~ pattern

def length = "length" ~ "=" ~ wholeNumber ~ "to" ~ wholeNumber

def pattern = "pattern" ~ "=" ~ stringLiteral

1 个答案:

答案 0 :(得分:0)

我找到了解决方案,我应该将typeDefBody分解为3无终端规则,如下所示

def typeDefBody =  ident ~ typeDefBodySequence1

def typeDefBodySequence1 = ":" ~> ident ~ typeDefBodySequence2

def typeDefBodySequence2 = "{" ~> fieldBody <~ "}"

def fieldBody = "validation" ~ "{" ~> validationBody <~ "}"

def validationBody = length ~ pattern

def length = "length" ~ "=" ~> wholeNumber ~ "to" ~ wholeNumber

def pattern = "pattern" ~ "=" ~> stringLiteral