Something went wrong on our end
-
Andrei Paskevich authoredAndrei Paskevich authored
expr1.bnf 1.58 KiB
\begin{syntax}
expr ::= integer ; integer constant
| real ; real constant
| "true" | "false" ; Boolean constant
| "()" ; empty tuple
| qualid ; identifier in a scope
| qualifier? "(" expr ")" ; expression in a scope
| qualifier? "begin" expr "end" ; \textit{idem}
| tight-op expr ; tight operator
| "{" (lqualid "=" expr ";")+ "}" ; record
| "{" expr "with" (lqualid "=" expr ";")+ "}"
; record update
| expr "." lqualid ; record field access
| expr "[" expr "]" "'"* ; collection access
| expr "[" expr "<-" expr "]" "'"* ; collection update
| expr "[" expr ".." expr "]" "'"* ; collection slice
| expr "[" expr ".." "]" "'"* ; right-open slice
| expr "[" ".." expr "]" "'"* ; left-open slice
| expr expr+ ; application
| prefix-op expr ; prefix operator
| expr infix-op-4 expr ; infix operator 4
| expr infix-op-3 expr ; infix operator 3
| expr infix-op-2 expr ; infix operator 2
| expr infix-op-1 expr ; infix operator 1
| "not" expr ; negation
| expr "&&" expr ; lazy conjunction
| expr "||" expr ; lazy disjunction
| expr ":" type ; type cast
| attribute+ expr ; attributes
| "ghost" expr ; ghost expression
| expr ("," expr)+ ; tuple
| expr "<-" expr ; assignment
| ... ; continued in Fig.~\ref{fig:bnf:expr2} %
\end{syntax}