我正在尝试这样写:anExpr是由"和"分隔的orExpr。如果没有用"和"它应该被视为字面而不是orExpr。
所以,如果我这样做:
def andExpr: Parser[Expr] = rep1sep(orExpr, "and") ^^{
//omitting the transformation function
} | literal
让我们假设每个表达式都是一个andExpr。 我希望表达式只有在"和"分隔时才是orExpr。例如,如果输入是" hello和hi",在这种情况下"你好"是一个orExpr和" hi"是一个orExpr。 但是现在(我编写的现有代码)默认情况下每个andExpr都是一个orExpr。所以,现在如果输入是" bye",它也是一个orExpr。但是,我想要" bye"要符合文字而不是orExpr。
我该怎么做?
答案 0 :(得分:0)
我们可以通过使用复杂的案例陈述来做到这一点。
例如:
def andExpr: Parser[Expr] = rep1sep(orExpr, "and") ^^{
case terms: if(terms.length == 1) {
terms.head . //treating like literal
} else {
//required expression
}
}