%%%
%% Section 15.8: Primary Expressions
%%
%% @author Martin Bravenboer <martin.bravenboer@gmail.com>
%%%
module languages/java-15/expressions/Primary
imports
languages/java-15/lexical/literals/Main
languages/java-15/names/Main
languages/java-15/expressions/Main
exports
%%%
%% Section 15.8.1: Lexical Literals
%%%
sorts Literal
context-free syntax
Literal -> Expr {cons("Lit")}
IntLiteral -> Literal
FloatLiteral -> Literal
BoolLiteral -> Literal
CharLiteral -> Literal
StringLiteral -> Literal
NullLiteral -> Literal
%%%
%% Section 15.8.2: Class Literals
%%%
sorts ClassLiteral
context-free syntax
ClassLiteral -> Literal
Type "." "class" -> ClassLiteral {cons("Class")}
"void" "." "class" -> ClassLiteral {cons("VoidClass")}
%%%
%% Section 15.8.3/4: (Qualified this)
%%%
context-free syntax
"this" -> Expr {cons("This")}
TypeName "." "this" -> Expr {cons("QThis")}
%%%
%% Section 15.8.5: Parenthesized Expression
%%%
context-free syntax
"(" Expr ")" -> Expr {bracket}