As noted in the comments we don't need to explicitly state precedence or associativity with a grammar like this. We can add these by construction of the grammar.
I have stolen the \, used to denote the λ symbol, from Haskell. The two look somewhat a like. So \ in this language is λ. The dot . has the exact same meaning as in TaPL.
Terms can be parenthesized - this is not explicitly stated in TaPL, but it is needed in order to apply within the body of an abstraction. Application binds tighter than abstraction. Application is left associative, abstraction right.
Variable names can be some combination of lower case letters, upper case, integers, - or _. Id-tokens could be as liberal as with the BoxProver project, but I have made this restriction for what ever reason.
The let @ = term ; has to end with a semicolon.
And that is it.