Add support for path_lit

pull/70/head
Stephan Seitz 2021-04-18 22:32:44 +07:00
parent b666fb06e4
commit 2c9a20d4ee
5 changed files with 75835 additions and 71899 deletions

@ -38,6 +38,15 @@ const SYMBOL =
token(seq(SYMBOL_HEAD,
repeat(SYMBOL_BODY)));
const STRING =
token(seq('"',
repeat(/[^"\\]/),
repeat(seq("\\",
/./,
repeat(/[^"\\]/))),
'"'));
function clSymbol(symbol) {
return seq(optional(seq('cl', ':')), symbol)
}
@ -211,6 +220,10 @@ module.exports = grammar(clojure, {
prec(PREC.SPECIAL, choice(seq(field('open', choice('#0A', '#0a')), $.num_lit),
seq(field('open', '#'), optional(field('dimension_indicator', $.array_dimension)), $.list_lit))),
path_lit: $ =>
prec(PREC.SPECIAL,
seq(field('open', choice('#P','#p')), alias(STRING, $.str_lit))),
_bare_list_lit: $ =>
choice(prec(PREC.SPECIAL, $.defun),
prec(PREC.SPECIAL, $.loop_macro),
@ -253,6 +266,7 @@ module.exports = grammar(clojure, {
$.str_lit,
$.char_lit,
$.nil_lit,
$.path_lit,
//$.bool_lit,
$.package_lit,
$.sym_lit,

@ -121,6 +121,10 @@
"type": "SYMBOL",
"name": "nil_lit"
},
{
"type": "SYMBOL",
"name": "path_lit"
},
{
"type": "SYMBOL",
"name": "package_lit"
@ -3516,6 +3520,83 @@
}
]
},
"path_lit": {
"type": "PREC",
"value": 5,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "open",
"content": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "#P"
},
{
"type": "STRING",
"value": "#p"
}
]
}
},
{
"type": "ALIAS",
"content": {
"type": "TOKEN",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "\""
},
{
"type": "REPEAT",
"content": {
"type": "PATTERN",
"value": "[^\"\\\\]"
}
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "\\"
},
{
"type": "PATTERN",
"value": "."
},
{
"type": "REPEAT",
"content": {
"type": "PATTERN",
"value": "[^\"\\\\]"
}
}
]
}
},
{
"type": "STRING",
"value": "\""
}
]
}
},
"named": true,
"value": "str_lit"
}
]
}
},
"package_lit": {
"type": "PREC",
"value": 2,

@ -63,6 +63,10 @@
"type": "package_lit",
"named": true
},
{
"type": "path_lit",
"named": true
},
{
"type": "quoting_lit",
"named": true
@ -278,6 +282,10 @@
"type": "package_lit",
"named": true
},
{
"type": "path_lit",
"named": true
},
{
"type": "quoting_lit",
"named": true
@ -409,6 +417,10 @@
"type": "package_lit",
"named": true
},
{
"type": "path_lit",
"named": true
},
{
"type": "quoting_lit",
"named": true
@ -539,6 +551,10 @@
"type": "package_lit",
"named": true
},
{
"type": "path_lit",
"named": true
},
{
"type": "quoting_lit",
"named": true
@ -746,6 +762,10 @@
"type": "package_lit",
"named": true
},
{
"type": "path_lit",
"named": true
},
{
"type": "quoting_lit",
"named": true
@ -882,6 +902,10 @@
"type": "package_lit",
"named": true
},
{
"type": "path_lit",
"named": true
},
{
"type": "quoting_lit",
"named": true
@ -1008,6 +1032,10 @@
"type": "package_lit",
"named": true
},
{
"type": "path_lit",
"named": true
},
{
"type": "quoting_lit",
"named": true
@ -1195,6 +1223,10 @@
"type": "package_lit",
"named": true
},
{
"type": "path_lit",
"named": true
},
{
"type": "quoting_lit",
"named": true
@ -1301,6 +1333,10 @@
"type": "package_lit",
"named": true
},
{
"type": "path_lit",
"named": true
},
{
"type": "quoting_lit",
"named": true
@ -1412,6 +1448,10 @@
"type": "package_lit",
"named": true
},
{
"type": "path_lit",
"named": true
},
{
"type": "quoting_lit",
"named": true
@ -1639,6 +1679,10 @@
"type": "package_lit",
"named": true
},
{
"type": "path_lit",
"named": true
},
{
"type": "quoting_lit",
"named": true
@ -1779,6 +1823,10 @@
"type": "package_lit",
"named": true
},
{
"type": "path_lit",
"named": true
},
{
"type": "quoting_lit",
"named": true
@ -1965,6 +2013,10 @@
"type": "package_lit",
"named": true
},
{
"type": "path_lit",
"named": true
},
{
"type": "quoting_lit",
"named": true
@ -2230,6 +2282,10 @@
"type": "package_lit",
"named": true
},
{
"type": "path_lit",
"named": true
},
{
"type": "quoting_lit",
"named": true
@ -2439,6 +2495,36 @@
}
}
},
{
"type": "path_lit",
"named": true,
"fields": {
"open": {
"multiple": false,
"required": true,
"types": [
{
"type": "#P",
"named": false
},
{
"type": "#p",
"named": false
}
]
}
},
"children": {
"multiple": false,
"required": true,
"types": [
{
"type": "str_lit",
"named": true
}
]
}
},
{
"type": "quoting_lit",
"named": true,
@ -2529,6 +2615,10 @@
"type": "package_lit",
"named": true
},
{
"type": "path_lit",
"named": true
},
{
"type": "quoting_lit",
"named": true
@ -2705,6 +2795,10 @@
"type": "package_lit",
"named": true
},
{
"type": "path_lit",
"named": true
},
{
"type": "quoting_lit",
"named": true
@ -2839,6 +2933,10 @@
"type": "package_lit",
"named": true
},
{
"type": "path_lit",
"named": true
},
{
"type": "quoting_lit",
"named": true
@ -3000,6 +3098,10 @@
"type": "package_lit",
"named": true
},
{
"type": "path_lit",
"named": true
},
{
"type": "quoting_lit",
"named": true
@ -3126,6 +3228,10 @@
"type": "package_lit",
"named": true
},
{
"type": "path_lit",
"named": true
},
{
"type": "quoting_lit",
"named": true
@ -3287,6 +3393,10 @@
"type": "package_lit",
"named": true
},
{
"type": "path_lit",
"named": true
},
{
"type": "quoting_lit",
"named": true
@ -3491,6 +3601,10 @@
"type": "package_lit",
"named": true
},
{
"type": "path_lit",
"named": true
},
{
"type": "quoting_lit",
"named": true
@ -3617,6 +3731,10 @@
"type": "package_lit",
"named": true
},
{
"type": "path_lit",
"named": true
},
{
"type": "quoting_lit",
"named": true
@ -3758,6 +3876,10 @@
"type": "package_lit",
"named": true
},
{
"type": "path_lit",
"named": true
},
{
"type": "quoting_lit",
"named": true
@ -3894,6 +4016,10 @@
"type": "package_lit",
"named": true
},
{
"type": "path_lit",
"named": true
},
{
"type": "quoting_lit",
"named": true
@ -4050,6 +4176,10 @@
"type": "package_lit",
"named": true
},
{
"type": "path_lit",
"named": true
},
{
"type": "quoting_lit",
"named": true
@ -4252,6 +4382,10 @@
"type": "package_lit",
"named": true
},
{
"type": "path_lit",
"named": true
},
{
"type": "quoting_lit",
"named": true
@ -4363,6 +4497,10 @@
"type": "package_lit",
"named": true
},
{
"type": "path_lit",
"named": true
},
{
"type": "quoting_lit",
"named": true
@ -4470,6 +4608,10 @@
"type": "#C",
"named": false
},
{
"type": "#P",
"named": false
},
{
"type": "#^",
"named": false
@ -4482,6 +4624,10 @@
"type": "#c",
"named": false
},
{
"type": "#p",
"named": false
},
{
"type": "%",
"named": false

File diff suppressed because it is too large Load Diff

@ -903,3 +903,18 @@ Format
(package_lit
(sym_lit)
(sym_lit)))))))
================================================================================
Path Literals
================================================================================
#P"t/global_kernel.ptx"
#P"~/dev/foo"
--------------------------------------------------------------------------------
(source
(path_lit
(str_lit))
(path_lit
(str_lit)))