43 lines
1.3 KiB
JavaScript
43 lines
1.3 KiB
JavaScript
"use strict";
|
|
function defineRules($, t) {
|
|
// https://docs.oracle.com/javase/specs/jls/se16/html/jls-3.html#jls-Literal
|
|
$.RULE("literal", () => {
|
|
$.OR([
|
|
{ ALT: () => $.SUBRULE($.integerLiteral) },
|
|
{ ALT: () => $.SUBRULE($.floatingPointLiteral) },
|
|
{ ALT: () => $.SUBRULE($.booleanLiteral) },
|
|
{ ALT: () => $.CONSUME(t.CharLiteral) },
|
|
{ ALT: () => $.CONSUME(t.TextBlock) },
|
|
{ ALT: () => $.CONSUME(t.StringLiteral) },
|
|
{ ALT: () => $.CONSUME(t.Null) }
|
|
]);
|
|
});
|
|
|
|
// https://docs.oracle.com/javase/specs/jls/se16/html/jls-3.html#jls-IntegerLiteral
|
|
$.RULE("integerLiteral", () => {
|
|
$.OR([
|
|
{ ALT: () => $.CONSUME(t.DecimalLiteral) },
|
|
{ ALT: () => $.CONSUME(t.HexLiteral) },
|
|
{ ALT: () => $.CONSUME(t.OctalLiteral) },
|
|
{ ALT: () => $.CONSUME(t.BinaryLiteral) }
|
|
]);
|
|
});
|
|
|
|
// https://docs.oracle.com/javase/specs/jls/se16/html/jls-3.html#jls-FloatingPointLiteral
|
|
$.RULE("floatingPointLiteral", () => {
|
|
$.OR([
|
|
{ ALT: () => $.CONSUME(t.FloatLiteral) },
|
|
{ ALT: () => $.CONSUME(t.HexFloatLiteral) }
|
|
]);
|
|
});
|
|
|
|
// https://docs.oracle.com/javase/specs/jls/se16/html/jls-3.html#jls-BooleanLiteral
|
|
$.RULE("booleanLiteral", () => {
|
|
$.OR([{ ALT: () => $.CONSUME(t.True) }, { ALT: () => $.CONSUME(t.False) }]);
|
|
});
|
|
}
|
|
|
|
module.exports = {
|
|
defineRules
|
|
};
|