如何使用〜>的正确位置忽略这些语法规则中的所有字符串?或者<〜运营商?
def typeDefBody = ident ~ ":" ~ ident ~ "{" ~ fieldBody ~ "}"
def fieldBody = "validation" ~ "{" ~ validationBody ~ "}"
def validationBody = length ~ pattern
def length = "length" ~ "=" ~ wholeNumber ~ "to" ~ wholeNumber
def pattern = "pattern" ~ "=" ~ stringLiteral
答案 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