Skip to content

Commit

Permalink
feat!: attributes and folds.scm
Browse files Browse the repository at this point in the history
  • Loading branch information
blindFS committed Feb 12, 2025
1 parent d0b26e4 commit f720f62
Show file tree
Hide file tree
Showing 7 changed files with 303,994 additions and 300,074 deletions.
13 changes: 12 additions & 1 deletion grammar.js
Original file line number Diff line number Diff line change
Expand Up @@ -131,10 +131,21 @@ module.exports = grammar({
_pipe_separator: ($) =>
repeat1(seq(repeat($._newline), choice(PUNC().pipe, ...REDIR_PIPE()))),

/// Top Level Items
/// Attributes
attribute_list: ($) =>
repeat1(seq($.attribute, choice(PUNC().semicolon, $._newline))),
attribute_identifier: (_$) =>
token.immediate(/[0-9\p{XID_Start}][0-9\p{XID_Continue}_-]*/),
attribute: ($) =>
seq(
field("type", seq(PUNC().at, $.attribute_identifier)),
repeat(seq($._space, optional($._cmd_arg))),
),

/// Top Level Items
decl_def: ($) =>
seq(
optional($.attribute_list),
optional(MODIFIER().visibility),
KEYWORD().def,
repeat($.long_flag),
Expand Down
10 changes: 10 additions & 0 deletions queries/nu/folds.scm
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
[
(attribute_list)
(block)
(command_list)
(parameter_bracks)
(record_body)
(val_list)
(val_table)
(val_closure)
] @fold
1 change: 1 addition & 0 deletions queries/nu/highlights.scm
Original file line number Diff line number Diff line change
Expand Up @@ -180,6 +180,7 @@ key: (identifier) @property

(param_long_flag (long_flag_identifier) @attribute)
(param_short_flag (param_short_flag_identifier) @attribute)
(attribute (attribute_identifier) @attribute)

(short_flag (short_flag_identifier) @attribute)
(long_flag_identifier) @attribute
Expand Down
90 changes: 90 additions & 0 deletions src/grammar.json
Original file line number Diff line number Diff line change
Expand Up @@ -2050,9 +2050,99 @@
]
}
},
"attribute_list": {
"type": "REPEAT1",
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "attribute"
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ";"
},
{
"type": "SYMBOL",
"name": "_newline"
}
]
}
]
}
},
"attribute_identifier": {
"type": "IMMEDIATE_TOKEN",
"content": {
"type": "PATTERN",
"value": "[0-9\\p{XID_Start}][0-9\\p{XID_Continue}_-]*"
}
},
"attribute": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "type",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "@"
},
{
"type": "SYMBOL",
"name": "attribute_identifier"
}
]
}
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_space"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_cmd_arg"
},
{
"type": "BLANK"
}
]
}
]
}
}
]
},
"decl_def": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "attribute_list"
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
Expand Down
165 changes: 165 additions & 0 deletions src/node-types.json
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,163 @@
}
}
},
{
"type": "attribute",
"named": true,
"fields": {
"arg": {
"multiple": true,
"required": false,
"types": [
{
"type": "expr_parenthesized",
"named": true
},
{
"type": "val_binary",
"named": true
},
{
"type": "val_bool",
"named": true
},
{
"type": "val_closure",
"named": true
},
{
"type": "val_date",
"named": true
},
{
"type": "val_duration",
"named": true
},
{
"type": "val_filesize",
"named": true
},
{
"type": "val_interpolated",
"named": true
},
{
"type": "val_list",
"named": true
},
{
"type": "val_nothing",
"named": true
},
{
"type": "val_number",
"named": true
},
{
"type": "val_range",
"named": true
},
{
"type": "val_record",
"named": true
},
{
"type": "val_string",
"named": true
},
{
"type": "val_table",
"named": true
},
{
"type": "val_variable",
"named": true
}
]
},
"arg_spread": {
"multiple": true,
"required": false,
"types": [
{
"type": "expr_parenthesized",
"named": true
},
{
"type": "val_list",
"named": true
},
{
"type": "val_variable",
"named": true
}
]
},
"arg_str": {
"multiple": true,
"required": false,
"types": [
{
"type": "val_string",
"named": true
}
]
},
"flag": {
"multiple": true,
"required": false,
"types": [
{
"type": "long_flag",
"named": true
},
{
"type": "short_flag",
"named": true
}
]
},
"redir": {
"multiple": true,
"required": false,
"types": [
{
"type": "redirection",
"named": true
}
]
},
"type": {
"multiple": true,
"required": true,
"types": [
{
"type": "@",
"named": false
},
{
"type": "attribute_identifier",
"named": true
}
]
}
}
},
{
"type": "attribute_list",
"named": true,
"fields": {},
"children": {
"multiple": true,
"required": true,
"types": [
{
"type": "attribute",
"named": true
}
]
}
},
{
"type": "block",
"named": true,
Expand Down Expand Up @@ -1322,6 +1479,10 @@
"multiple": true,
"required": false,
"types": [
{
"type": "attribute_list",
"named": true
},
{
"type": "long_flag",
"named": true
Expand Down Expand Up @@ -5672,6 +5833,10 @@
"type": "as",
"named": false
},
{
"type": "attribute_identifier",
"named": true
},
{
"type": "binary",
"named": false
Expand Down
Loading

0 comments on commit f720f62

Please sign in to comment.