219k views
3 votes
Consider EBNF form of grammar to parse Lettuce expressions. We want to give higher order of precedence to Division, Div(e1,e2), than Minus, Minus(e1, e2). The only case that Minus has higher precedence order is to have paranthesis around a minus operator. Fill up the blanks:

Expr => Minus
Minus => Blank 1 | Blank 2(Division, Minus)
Division => Blank 3(Term, Term) | Term
Term => Const(Double) | Blank 4 ~ Minus ~ Blank 5
Hint: Possible values are Division, Div, Minus, "(", and ")".

User Smileyborg
by
8.1k points

1 Answer

5 votes

Answer:

Expr => Minus

Minus => Blank 1(Division, Minus) | Division

Division => Div(Blank 2(Term, Term)) | Term

Term => Const(Double) | Blank 3 ~ Minus ~ Blank 4

Filling the blanks with the possible values as per precedence rules:

Expr => Minus

Minus => Div(Division, Minus) | Division

Division => Div(("(", Term, ")")) | Term

Term => Const(Double) | "(" ~ Minus ~ ")"

User ADM
by
7.8k points