%%% %% Section 9.7: Annotations %% %% @author Martin Bravenboer <martin.bravenboer@gmail.com> %%% module languages/java-15/interfaces/Annotations imports languages/java-15/lexical/Identifiers languages/java-15/names/Main languages/java-15/expressions/Main exports sorts Anno ElemVal ElemValPair context-free syntax "@" TypeName "(" {ElemValPair ","}* ")" -> Anno {cons("Anno")} "@" TypeName "(" ElemVal ")" -> Anno {cons("SingleElemAnno")} "@" TypeName -> Anno {cons("MarkerAnno")} context-free syntax Id "=" ElemVal -> ElemValPair {cons("ElemValPair")} Expr -> ElemVal Anno -> ElemVal "{" {ElemVal ","}* "}" -> ElemVal {cons("ElemValArrayInit")} "{" {ElemVal ","}* "," "}" -> ElemVal {cons("ElemValArrayInit")} %% Assignments are not allowed as element values. LHS "=" Expr -> ElemVal {reject}