%%%
%% 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}