Refer to note book titled "Lettuce- The Let Language" for the context-free grammar (CFG) in BMF form (recalled below):
Program $\rightarrow$ TopLevel(Expr)
Expr $\rightarrow$ Const(Number)
| True
| False
| Ident(Identifier)
| Plus(Expr, Expr)
| Minus(Expr, Expr)
| Mult(Expr, Expr)
| Div(Expr, Expr)
| Log(Expr)
| Exp(Expr)
| Sine(Expr)
| Cosine(Expr)
| Geq(Expr, Expr)
| Eq(Expr, Expr)
| And(Expr, Expr)
| Or(Expr, Expr)
| Not(Expr)
| IfThenElse(Expr, Expr, Expr)
| Let(Identifier, Expr, Expr)
| FunDef(Identifier, Expr)
| FunCall(Expr, Expr)
Number $\rightarrow$ Scala Double Precision
Identifier $\rightarrow$ Scala String
Write down the AST corresponding to the following Lettuce Program.
let g = function(x)
function(y)
x * y
g(10)(20)
Let("g", "x", FunDef("y", (Ident("x"), Ident("y")))), FunCall(