\begin{syntax}
term ::= integer ; integer constant
| real ; real constant
| qualid ; symbol
| prefix-op term ;
| term infix-op term ;
| lqualid term+ ; function application
| "if" formula "then" term "else" term ; conditional
| "let" pattern "=" term "in" term ; local binding
| "match" ("," term)+ "with" "|"? match-cases "end" ;
| "(" term ("," term)* ")" ; tuple
| term ":" type ; cast
| label term ; label
| "(" term ")" ; parentheses%
\end{syntax}