%%%
%% Section 3.10.1: Literals
%%
%% @author Martin Bravenboer <martin.bravenboer@gmail.com>
%%%
module languages/java-15/lexical/literals/IntegerLiterals
exports
sorts
IntLiteral
DeciLiteral
HexaLiteral
OctaLiteral
DeciNumeral
HexaNumeral
OctaNumeral
context-free syntax
DeciLiteral -> IntLiteral {cons("Deci")}
HexaLiteral -> IntLiteral {cons("Hexa")}
OctaLiteral -> IntLiteral {cons("Octa")}
lexical syntax
DeciNumeral [lL]? -> DeciLiteral
HexaNumeral [lL]? -> HexaLiteral
OctaNumeral [lL]? -> OctaLiteral
"0" -> DeciNumeral
[1-9][0-9]* -> DeciNumeral
[0][xX] [0-9a-fA-F]+ -> HexaNumeral
[0] [0-7]+ -> OctaNumeral
lexical restrictions
DeciNumeral -/- [0-9\.fFdD]
HexaNumeral -/- [0-9a-fA-F]
OctaNumeral -/- [0-7]
DeciLiteral -/- [lL]
HexaLiteral -/- [lL]
OctaLiteral -/- [lL]