Restructure numbers and self_referentials

pull/70/head
Stephan Seitz 2021-04-19 16:55:59 +07:00
parent 71d15ad86e
commit 3cffe6d000
5 changed files with 83324 additions and 84254 deletions

@ -58,21 +58,24 @@ const HEX_DIGIT =
const OCTAL_DIGIT = const OCTAL_DIGIT =
/[0-7]/; /[0-7]/;
const BINARY_DIGIT =
/[0-1]/;
const HEX_NUMBER = const HEX_NUMBER =
seq("0", seq(choice('#x', '#X'), optional(/[+-]/),
/[xX]/, repeat1(HEX_DIGIT));
repeat1(HEX_DIGIT),
optional("N"));
const OCTAL_NUMBER = const OCTAL_NUMBER =
seq("0", seq(choice('#o', '#O'), optional(/[+-]/),
repeat1(OCTAL_DIGIT), repeat1(OCTAL_DIGIT));
optional("N"));
const BINARY_NUMBER =
seq(choice('#b', '#B'), optional(/[+-]/),
repeat1(BINARY_DIGIT));
// XXX: not constraining number before r/R
// XXX: not constraining portion after r/R
const RADIX_NUMBER = const RADIX_NUMBER =
seq(repeat1(DIGIT), seq('#',
repeat1(DIGIT),
/[rR]/, /[rR]/,
repeat1(ALPHANUMERIC)); repeat1(ALPHANUMERIC));
@ -96,13 +99,15 @@ const INTEGER =
optional(/[MN]/)); optional(/[MN]/));
const NUMBER = const NUMBER =
token(prec(0, seq(optional(/[+-]/), token(seq(optional(/[+-]/),
choice(HEX_NUMBER, choice(
//OCTAL_NUMBER, HEX_NUMBER,
OCTAL_NUMBER,
RADIX_NUMBER, RADIX_NUMBER,
BINARY_NUMBER,
RATIO, RATIO,
DOUBLE, DOUBLE,
INTEGER)))); INTEGER)));
function clSymbol(symbol) { function clSymbol(symbol) {
@ -273,8 +278,8 @@ module.exports = grammar(clojure, {
seq('#', choice(original, /\\[nN]ewline/, /\\[lL]inefeed/, /\\[Ss]pace/, /\\[nN]ull/, /\\[rR]ull/)), seq('#', choice(original, /\\[nN]ewline/, /\\[lL]inefeed/, /\\[Ss]pace/, /\\[nN]ull/, /\\[rR]ull/)),
vec_lit: $ => vec_lit: $ =>
prec(PREC.SPECIAL, prec(PREC.SPECIAL,
choice( choice(
seq(field('open', choice('#0A', '#0a')), $.num_lit), seq(field('open', choice('#0A', '#0a')), $.num_lit),
seq(field('open', '#'), optional($.array_dimension), $.list_lit))), seq(field('open', '#'), optional($.array_dimension), $.list_lit))),
@ -315,6 +320,8 @@ module.exports = grammar(clojure, {
kwd_symbol: _ => kwd_symbol: _ =>
seq(SYMBOL), seq(SYMBOL),
self_referential_reader_macro: _ => /#\d+[=#]/,
_form: $ => _form: $ =>
seq(optional('#'), seq(optional('#'),
choice( choice(
@ -322,9 +329,10 @@ module.exports = grammar(clojure, {
$.fancy_literal, $.fancy_literal,
$.vec_lit, $.vec_lit,
$.kwd_lit, $.kwd_lit,
// No idea why this is necessary... // No idea why this is necessary...It is never used but triggers some background magic
alias(seq(field('open', '#'), optional(/\d+[aA]/), $.list_lit), $.vec_lit), alias(seq(field('open', '#'), optional(/\d+[aA]/), $.list_lit), $.vec_lit),
$.str_lit, $.str_lit,
$.self_referential_reader_macro,
$.char_lit, $.char_lit,
$.nil_lit, $.nil_lit,
$.path_lit, $.path_lit,

@ -151,6 +151,10 @@
"type": "SYMBOL", "type": "SYMBOL",
"name": "str_lit" "name": "str_lit"
}, },
{
"type": "SYMBOL",
"name": "self_referential_reader_macro"
},
{ {
"type": "SYMBOL", "type": "SYMBOL",
"name": "char_lit" "name": "char_lit"
@ -229,204 +233,283 @@
{ {
"type": "TOKEN", "type": "TOKEN",
"content": { "content": {
"type": "PREC", "type": "SEQ",
"value": 0, "members": [
"content": { {
"type": "SEQ", "type": "CHOICE",
"members": [ "members": [
{ {
"type": "CHOICE", "type": "PATTERN",
"members": [ "value": "[+-]"
{ },
"type": "PATTERN", {
"value": "[+-]" "type": "BLANK"
}, }
{ ]
"type": "BLANK" },
} {
] "type": "CHOICE",
}, "members": [
{ {
"type": "CHOICE", "type": "SEQ",
"members": [ "members": [
{ {
"type": "SEQ", "type": "CHOICE",
"members": [ "members": [
{ {
"type": "STRING", "type": "STRING",
"value": "0" "value": "#x"
}, },
{ {
"type": "PATTERN", "type": "STRING",
"value": "[xX]" "value": "#X"
},
{
"type": "REPEAT1",
"content": {
"type": "PATTERN",
"value": "[0-9a-fA-F]"
} }
}, ]
{ },
"type": "CHOICE", {
"members": [ "type": "CHOICE",
{ "members": [
"type": "STRING", {
"value": "N"
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "REPEAT1",
"content": {
"type": "PATTERN", "type": "PATTERN",
"value": "[0-9]" "value": "[+-]"
},
{
"type": "BLANK"
} }
}, ]
{ },
{
"type": "REPEAT1",
"content": {
"type": "PATTERN", "type": "PATTERN",
"value": "[rR]" "value": "[0-9a-fA-F]"
}, }
{ }
"type": "REPEAT1", ]
"content": { },
{
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "#o"
},
{
"type": "STRING",
"value": "#O"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "PATTERN", "type": "PATTERN",
"value": "[0-9a-zA-Z]" "value": "[+-]"
},
{
"type": "BLANK"
} }
]
},
{
"type": "REPEAT1",
"content": {
"type": "PATTERN",
"value": "[0-7]"
} }
] }
}, ]
{ },
"type": "SEQ", {
"members": [ "type": "SEQ",
{ "members": [
"type": "REPEAT1", {
"content": { "type": "STRING",
"type": "PATTERN", "value": "#"
"value": "[0-9]" },
{
"type": "REPEAT1",
"content": {
"type": "PATTERN",
"value": "[0-9]"
}
},
{
"type": "PATTERN",
"value": "[rR]"
},
{
"type": "REPEAT1",
"content": {
"type": "PATTERN",
"value": "[0-9a-zA-Z]"
}
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "#b"
},
{
"type": "STRING",
"value": "#B"
} }
}, ]
{ },
"type": "STRING", {
"value": "/" "type": "CHOICE",
}, "members": [
{ {
"type": "REPEAT1",
"content": {
"type": "PATTERN", "type": "PATTERN",
"value": "[0-9]" "value": "[+-]"
},
{
"type": "BLANK"
} }
]
},
{
"type": "REPEAT1",
"content": {
"type": "PATTERN",
"value": "[0-1]"
} }
] }
}, ]
{ },
"type": "SEQ", {
"members": [ "type": "SEQ",
{ "members": [
"type": "REPEAT1", {
"content": { "type": "REPEAT1",
"type": "PATTERN", "content": {
"value": "[0-9]" "type": "PATTERN",
"value": "[0-9]"
}
},
{
"type": "STRING",
"value": "/"
},
{
"type": "REPEAT1",
"content": {
"type": "PATTERN",
"value": "[0-9]"
}
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "REPEAT1",
"content": {
"type": "PATTERN",
"value": "[0-9]"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "."
},
{
"type": "REPEAT",
"content": {
"type": "PATTERN",
"value": "[0-9]"
}
}
]
},
{
"type": "BLANK"
} }
}, ]
{ },
"type": "CHOICE", {
"members": [ "type": "CHOICE",
{ "members": [
"type": "SEQ", {
"members": [ "type": "SEQ",
{ "members": [
"type": "STRING", {
"value": "." "type": "PATTERN",
}, "value": "[eEsSfFdDlL]"
{ },
"type": "REPEAT", {
"content": { "type": "CHOICE",
"members": [
{
"type": "PATTERN", "type": "PATTERN",
"value": "[0-9]" "value": "[+-]"
},
{
"type": "BLANK"
} }
} ]
] },
}, {
{ "type": "REPEAT1",
"type": "BLANK" "content": {
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "PATTERN", "type": "PATTERN",
"value": "[eEsSfFdDlL]" "value": "[0-9]"
},
{
"type": "CHOICE",
"members": [
{
"type": "PATTERN",
"value": "[+-]"
},
{
"type": "BLANK"
}
]
},
{
"type": "REPEAT1",
"content": {
"type": "PATTERN",
"value": "[0-9]"
}
} }
] }
}, ]
{ },
"type": "BLANK" {
} "type": "BLANK"
] }
]
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "REPEAT1",
"content": {
"type": "PATTERN",
"value": "[0-9]"
} }
] },
}, {
{ "type": "CHOICE",
"type": "SEQ", "members": [
"members": [ {
{
"type": "REPEAT1",
"content": {
"type": "PATTERN", "type": "PATTERN",
"value": "[0-9]" "value": "[MN]"
},
{
"type": "BLANK"
} }
}, ]
{ }
"type": "CHOICE", ]
"members": [ }
{ ]
"type": "PATTERN", }
"value": "[MN]" ]
},
{
"type": "BLANK"
}
]
}
]
}
]
}
]
}
} }
}, },
{ {
@ -1849,204 +1932,283 @@
"content": { "content": {
"type": "TOKEN", "type": "TOKEN",
"content": { "content": {
"type": "PREC", "type": "SEQ",
"value": 0, "members": [
"content": { {
"type": "SEQ", "type": "CHOICE",
"members": [ "members": [
{ {
"type": "CHOICE", "type": "PATTERN",
"members": [ "value": "[+-]"
{ },
"type": "PATTERN", {
"value": "[+-]" "type": "BLANK"
}, }
{ ]
"type": "BLANK" },
} {
] "type": "CHOICE",
}, "members": [
{ {
"type": "CHOICE", "type": "SEQ",
"members": [ "members": [
{ {
"type": "SEQ", "type": "CHOICE",
"members": [ "members": [
{ {
"type": "STRING", "type": "STRING",
"value": "0" "value": "#x"
}, },
{ {
"type": "STRING",
"value": "#X"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "PATTERN",
"value": "[+-]"
},
{
"type": "BLANK"
}
]
},
{
"type": "REPEAT1",
"content": {
"type": "PATTERN", "type": "PATTERN",
"value": "[xX]" "value": "[0-9a-fA-F]"
}, }
{ }
"type": "REPEAT1", ]
"content": { },
{
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "#o"
},
{
"type": "STRING",
"value": "#O"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "PATTERN", "type": "PATTERN",
"value": "[0-9a-fA-F]" "value": "[+-]"
},
{
"type": "BLANK"
} }
}, ]
{ },
"type": "CHOICE", {
"members": [ "type": "REPEAT1",
{ "content": {
"type": "STRING", "type": "PATTERN",
"value": "N" "value": "[0-7]"
}, }
{ }
"type": "BLANK" ]
} },
] {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "#"
},
{
"type": "REPEAT1",
"content": {
"type": "PATTERN",
"value": "[0-9]"
} }
] },
}, {
{ "type": "PATTERN",
"type": "SEQ", "value": "[rR]"
"members": [ },
{ {
"type": "REPEAT1", "type": "REPEAT1",
"content": { "content": {
"type": "PATTERN",
"value": "[0-9]"
}
},
{
"type": "PATTERN", "type": "PATTERN",
"value": "[rR]" "value": "[0-9a-zA-Z]"
},
{
"type": "REPEAT1",
"content": {
"type": "PATTERN",
"value": "[0-9a-zA-Z]"
}
} }
] }
}, ]
{ },
"type": "SEQ", {
"members": [ "type": "SEQ",
{ "members": [
"type": "REPEAT1", {
"content": { "type": "CHOICE",
"type": "PATTERN", "members": [
"value": "[0-9]" {
"type": "STRING",
"value": "#b"
},
{
"type": "STRING",
"value": "#B"
} }
}, ]
{ },
"type": "STRING", {
"value": "/" "type": "CHOICE",
}, "members": [
{ {
"type": "REPEAT1",
"content": {
"type": "PATTERN", "type": "PATTERN",
"value": "[0-9]" "value": "[+-]"
},
{
"type": "BLANK"
} }
]
},
{
"type": "REPEAT1",
"content": {
"type": "PATTERN",
"value": "[0-1]"
} }
] }
}, ]
{ },
"type": "SEQ", {
"members": [ "type": "SEQ",
{ "members": [
"type": "REPEAT1", {
"content": { "type": "REPEAT1",
"type": "PATTERN", "content": {
"value": "[0-9]" "type": "PATTERN",
"value": "[0-9]"
}
},
{
"type": "STRING",
"value": "/"
},
{
"type": "REPEAT1",
"content": {
"type": "PATTERN",
"value": "[0-9]"
}
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "REPEAT1",
"content": {
"type": "PATTERN",
"value": "[0-9]"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "."
},
{
"type": "REPEAT",
"content": {
"type": "PATTERN",
"value": "[0-9]"
}
}
]
},
{
"type": "BLANK"
} }
}, ]
{ },
"type": "CHOICE", {
"members": [ "type": "CHOICE",
{ "members": [
"type": "SEQ", {
"members": [ "type": "SEQ",
{ "members": [
"type": "STRING", {
"value": "." "type": "PATTERN",
}, "value": "[eEsSfFdDlL]"
{ },
"type": "REPEAT", {
"content": { "type": "CHOICE",
"members": [
{
"type": "PATTERN", "type": "PATTERN",
"value": "[0-9]" "value": "[+-]"
},
{
"type": "BLANK"
} }
} ]
] },
}, {
{ "type": "REPEAT1",
"type": "BLANK" "content": {
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "PATTERN", "type": "PATTERN",
"value": "[eEsSfFdDlL]" "value": "[0-9]"
},
{
"type": "CHOICE",
"members": [
{
"type": "PATTERN",
"value": "[+-]"
},
{
"type": "BLANK"
}
]
},
{
"type": "REPEAT1",
"content": {
"type": "PATTERN",
"value": "[0-9]"
}
} }
] }
}, ]
{ },
"type": "BLANK" {
} "type": "BLANK"
] }
]
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "REPEAT1",
"content": {
"type": "PATTERN",
"value": "[0-9]"
} }
] },
}, {
{ "type": "CHOICE",
"type": "SEQ", "members": [
"members": [ {
{
"type": "REPEAT1",
"content": {
"type": "PATTERN", "type": "PATTERN",
"value": "[0-9]" "value": "[MN]"
},
{
"type": "BLANK"
} }
}, ]
{ }
"type": "CHOICE", ]
"members": [ }
{ ]
"type": "PATTERN", }
"value": "[MN]" ]
},
{
"type": "BLANK"
}
]
}
]
}
]
}
]
}
} }
}, },
"named": true, "named": true,
@ -3999,6 +4161,10 @@
} }
] ]
}, },
"self_referential_reader_macro": {
"type": "PATTERN",
"value": "#\\d+[=#]"
},
"include_reader_macro": { "include_reader_macro": {
"type": "SEQ", "type": "SEQ",
"members": [ "members": [

@ -78,6 +78,10 @@
"type": "read_cond_lit", "type": "read_cond_lit",
"named": true "named": true
}, },
{
"type": "self_referential_reader_macro",
"named": true
},
{ {
"type": "set_lit", "type": "set_lit",
"named": true "named": true
@ -286,6 +290,10 @@
"type": "read_cond_lit", "type": "read_cond_lit",
"named": true "named": true
}, },
{
"type": "self_referential_reader_macro",
"named": true
},
{ {
"type": "set_lit", "type": "set_lit",
"named": true "named": true
@ -413,6 +421,10 @@
"type": "read_cond_lit", "type": "read_cond_lit",
"named": true "named": true
}, },
{
"type": "self_referential_reader_macro",
"named": true
},
{ {
"type": "set_lit", "type": "set_lit",
"named": true "named": true
@ -535,6 +547,10 @@
"type": "read_cond_lit", "type": "read_cond_lit",
"named": true "named": true
}, },
{
"type": "self_referential_reader_macro",
"named": true
},
{ {
"type": "set_lit", "type": "set_lit",
"named": true "named": true
@ -734,6 +750,10 @@
"type": "read_cond_lit", "type": "read_cond_lit",
"named": true "named": true
}, },
{
"type": "self_referential_reader_macro",
"named": true
},
{ {
"type": "set_lit", "type": "set_lit",
"named": true "named": true
@ -863,6 +883,10 @@
"type": "read_cond_lit", "type": "read_cond_lit",
"named": true "named": true
}, },
{
"type": "self_referential_reader_macro",
"named": true
},
{ {
"type": "set_lit", "type": "set_lit",
"named": true "named": true
@ -984,6 +1008,10 @@
"type": "read_cond_lit", "type": "read_cond_lit",
"named": true "named": true
}, },
{
"type": "self_referential_reader_macro",
"named": true
},
{ {
"type": "set_lit", "type": "set_lit",
"named": true "named": true
@ -1082,6 +1110,10 @@
"type": "read_cond_lit", "type": "read_cond_lit",
"named": true "named": true
}, },
{
"type": "self_referential_reader_macro",
"named": true
},
{ {
"type": "set_lit", "type": "set_lit",
"named": true "named": true
@ -1185,6 +1217,10 @@
"type": "read_cond_lit", "type": "read_cond_lit",
"named": true "named": true
}, },
{
"type": "self_referential_reader_macro",
"named": true
},
{ {
"type": "set_lit", "type": "set_lit",
"named": true "named": true
@ -1404,6 +1440,10 @@
"type": "read_cond_lit", "type": "read_cond_lit",
"named": true "named": true
}, },
{
"type": "self_referential_reader_macro",
"named": true
},
{ {
"type": "set_lit", "type": "set_lit",
"named": true "named": true
@ -1546,6 +1586,10 @@
"type": "read_cond_lit", "type": "read_cond_lit",
"named": true "named": true
}, },
{
"type": "self_referential_reader_macro",
"named": true
},
{ {
"type": "set_lit", "type": "set_lit",
"named": true "named": true
@ -1728,6 +1772,10 @@
"type": "read_cond_lit", "type": "read_cond_lit",
"named": true "named": true
}, },
{
"type": "self_referential_reader_macro",
"named": true
},
{ {
"type": "set_lit", "type": "set_lit",
"named": true "named": true
@ -1989,6 +2037,10 @@
"type": "read_cond_lit", "type": "read_cond_lit",
"named": true "named": true
}, },
{
"type": "self_referential_reader_macro",
"named": true
},
{ {
"type": "set_lit", "type": "set_lit",
"named": true "named": true
@ -2324,6 +2376,10 @@
"type": "read_cond_lit", "type": "read_cond_lit",
"named": true "named": true
}, },
{
"type": "self_referential_reader_macro",
"named": true
},
{ {
"type": "set_lit", "type": "set_lit",
"named": true "named": true
@ -2496,6 +2552,10 @@
"type": "read_cond_lit", "type": "read_cond_lit",
"named": true "named": true
}, },
{
"type": "self_referential_reader_macro",
"named": true
},
{ {
"type": "set_lit", "type": "set_lit",
"named": true "named": true
@ -2633,6 +2693,10 @@
"type": "read_cond_lit", "type": "read_cond_lit",
"named": true "named": true
}, },
{
"type": "self_referential_reader_macro",
"named": true
},
{ {
"type": "set_lit", "type": "set_lit",
"named": true "named": true
@ -2790,6 +2854,10 @@
"type": "read_cond_lit", "type": "read_cond_lit",
"named": true "named": true
}, },
{
"type": "self_referential_reader_macro",
"named": true
},
{ {
"type": "set_lit", "type": "set_lit",
"named": true "named": true
@ -2919,6 +2987,10 @@
"type": "read_cond_lit", "type": "read_cond_lit",
"named": true "named": true
}, },
{
"type": "self_referential_reader_macro",
"named": true
},
{ {
"type": "set_lit", "type": "set_lit",
"named": true "named": true
@ -3076,6 +3148,10 @@
"type": "read_cond_lit", "type": "read_cond_lit",
"named": true "named": true
}, },
{
"type": "self_referential_reader_macro",
"named": true
},
{ {
"type": "set_lit", "type": "set_lit",
"named": true "named": true
@ -3242,6 +3318,10 @@
"type": "read_cond_lit", "type": "read_cond_lit",
"named": true "named": true
}, },
{
"type": "self_referential_reader_macro",
"named": true
},
{ {
"type": "set_lit", "type": "set_lit",
"named": true "named": true
@ -3371,6 +3451,10 @@
"type": "read_cond_lit", "type": "read_cond_lit",
"named": true "named": true
}, },
{
"type": "self_referential_reader_macro",
"named": true
},
{ {
"type": "set_lit", "type": "set_lit",
"named": true "named": true
@ -3514,6 +3598,10 @@
"type": "read_cond_lit", "type": "read_cond_lit",
"named": true "named": true
}, },
{
"type": "self_referential_reader_macro",
"named": true
},
{ {
"type": "set_lit", "type": "set_lit",
"named": true "named": true
@ -3652,6 +3740,10 @@
"type": "read_cond_lit", "type": "read_cond_lit",
"named": true "named": true
}, },
{
"type": "self_referential_reader_macro",
"named": true
},
{ {
"type": "set_lit", "type": "set_lit",
"named": true "named": true
@ -3810,6 +3902,10 @@
"type": "read_cond_lit", "type": "read_cond_lit",
"named": true "named": true
}, },
{
"type": "self_referential_reader_macro",
"named": true
},
{ {
"type": "set_lit", "type": "set_lit",
"named": true "named": true
@ -3984,6 +4080,10 @@
"type": "read_cond_lit", "type": "read_cond_lit",
"named": true "named": true
}, },
{
"type": "self_referential_reader_macro",
"named": true
},
{ {
"type": "set_lit", "type": "set_lit",
"named": true "named": true
@ -4133,6 +4233,10 @@
"type": "read_cond_lit", "type": "read_cond_lit",
"named": true "named": true
}, },
{
"type": "self_referential_reader_macro",
"named": true
},
{ {
"type": "set_lit", "type": "set_lit",
"named": true "named": true
@ -4254,6 +4358,10 @@
"type": "read_cond_lit", "type": "read_cond_lit",
"named": true "named": true
}, },
{
"type": "self_referential_reader_macro",
"named": true
},
{ {
"type": "set_lit", "type": "set_lit",
"named": true "named": true
@ -4353,6 +4461,10 @@
"type": "read_cond_lit", "type": "read_cond_lit",
"named": true "named": true
}, },
{
"type": "self_referential_reader_macro",
"named": true
},
{ {
"type": "set_lit", "type": "set_lit",
"named": true "named": true
@ -4700,6 +4812,10 @@
"type": "return", "type": "return",
"named": false "named": false
}, },
{
"type": "self_referential_reader_macro",
"named": true
},
{ {
"type": "then", "type": "then",
"named": false "named": false

File diff suppressed because it is too large Load Diff

@ -811,7 +811,7 @@ Num Literals
-------------------------------------------------------------------------------- --------------------------------------------------------------------------------
(source (source
(num_lit) (sym_lit)
(list_lit (list_lit
(sym_lit) (sym_lit)
(sym_lit) (sym_lit)
@ -994,4 +994,79 @@ Trailing sharps
(sym_lit)) (sym_lit))
(list_lit (list_lit
(sym_lit) (sym_lit)
(sym_lit))) (self_referential_reader_macro)))
================================================================================
https://lisptips.com/post/44370032877/literal-syntax-for-integers
================================================================================
#2r11010101 ;Another way of writing 213 decimal
#b11010101 ;Ditto
#b+11010101 ;Ditto
#o325 ;Ditto, in octal radix
#xD5 ;Ditto, in hexadecimal radix
#16r+D5 ;Ditto
#o-300 ;Decimal -192, written in base 8
#3r-21010 ;Same thing in base 3
#25R-7H ;Same thing in base 25
#xACCEDED ;181202413, in hexadecimal radix
--------------------------------------------------------------------------------
(source
(num_lit)
(comment)
(num_lit)
(comment)
(num_lit)
(comment)
(num_lit)
(comment)
(num_lit)
(comment)
(sym_lit)
(comment)
(num_lit)
(comment)
(sym_lit)
(comment)
(sym_lit)
(comment)
(num_lit)
(comment))
================================================================================
Self-references
================================================================================
(let ((position (mismatch #1="MemTotal:" line)))
(when (= position (length #1#))
(return
(parse-size line :start position))))
--------------------------------------------------------------------------------
(source
(list_lit
(sym_lit)
(list_lit
(list_lit
(sym_lit)
(list_lit
(sym_lit)
(self_referential_reader_macro)
(str_lit)
(sym_lit))))
(list_lit
(sym_lit)
(list_lit
(sym_lit)
(sym_lit)
(list_lit
(sym_lit)
(self_referential_reader_macro)))
(list_lit
(sym_lit)
(list_lit
(sym_lit)
(sym_lit)
(kwd_lit
(kwd_symbol))
(sym_lit))))))