%%%
%% Section 3.10.6: Escape Sequences for Character and String Literals
%%
%% @author Martin Bravenboer <martin.bravenboer@gmail.com>
%%%
module languages/java-15/lexical/literals/EscapeSequences
imports
exports
sorts
EscapeSeq
NamedEscape
OctaEscape
LastOcta
syntax
OctaEscape -> EscapeSeq
NamedEscape -> EscapeSeq
"\\" [btnfr\"\'\\] -> NamedEscape {cons("NamedEscape")}
"\\" LastOcta -> OctaEscape {cons("OctaEscape1")}
"\\" [0-3] LastOcta -> OctaEscape {cons("OctaEscape2")}
"\\" [4-7] [0-7] -> OctaEscape {cons("OctaEscape2")}
"\\" [0-3] [0-7] [0-7] -> OctaEscape {cons("OctaEscape3")}
[0-7] -> LastOcta
restrictions
LastOcta -/- [0-7]