Flatten values into expression grammar
This commit is contained in:
@@ -107,14 +107,26 @@ export default grammar({
|
||||
rule_body: $ => list(field("clause", $.expr)),
|
||||
|
||||
expr: $ => choice(
|
||||
// variables
|
||||
field("hole", "_"),
|
||||
field("variable", $.variable),
|
||||
|
||||
// composites
|
||||
field("atom", $.atom),
|
||||
field("tuple", $.tuple),
|
||||
field("value", $.value),
|
||||
field("variable", $.variable),
|
||||
field("aggregate", $.aggregate),
|
||||
|
||||
// value literals
|
||||
field("true", "True"),
|
||||
field("false", "False"),
|
||||
field("symbol", $.symbol),
|
||||
field("integer", $.integer),
|
||||
|
||||
// operations
|
||||
field("unary", $.unary_expr),
|
||||
field("binary", $.binary_expr),
|
||||
|
||||
// nested
|
||||
seq('(', field("parens", $.expr), ')'),
|
||||
),
|
||||
|
||||
@@ -123,13 +135,6 @@ export default grammar({
|
||||
|
||||
tuple: $ => parenListComma(field("el", $.expr)),
|
||||
|
||||
value: $ => choice(
|
||||
field("true", "True"),
|
||||
field("false", "False"),
|
||||
field("symbol", $.symbol),
|
||||
field("integer", $.integer),
|
||||
),
|
||||
|
||||
aggregate: $ => seq(
|
||||
field("op", $.aggregate_op),
|
||||
optional(seq(list(field("witness", $.variable)), ":")),
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
(comment) @comment.line
|
||||
(integer) @constant.numeric
|
||||
(variable) @variable
|
||||
(value (symbol) @constant)
|
||||
(expr (symbol) @constant)
|
||||
(import (symbol) @module)
|
||||
(type (symbol)) @type
|
||||
(type_alias name: _ @type)
|
||||
|
||||
93
tree-sitter-kerolox/src/grammar.json
generated
93
tree-sitter-kerolox/src/grammar.json
generated
@@ -535,6 +535,14 @@
|
||||
"value": "_"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "FIELD",
|
||||
"name": "variable",
|
||||
"content": {
|
||||
"type": "SYMBOL",
|
||||
"name": "variable"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "FIELD",
|
||||
"name": "atom",
|
||||
@@ -551,22 +559,6 @@
|
||||
"name": "tuple"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "FIELD",
|
||||
"name": "value",
|
||||
"content": {
|
||||
"type": "SYMBOL",
|
||||
"name": "value"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "FIELD",
|
||||
"name": "variable",
|
||||
"content": {
|
||||
"type": "SYMBOL",
|
||||
"name": "variable"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "FIELD",
|
||||
"name": "aggregate",
|
||||
@@ -575,6 +567,38 @@
|
||||
"name": "aggregate"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "FIELD",
|
||||
"name": "true",
|
||||
"content": {
|
||||
"type": "STRING",
|
||||
"value": "True"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "FIELD",
|
||||
"name": "false",
|
||||
"content": {
|
||||
"type": "STRING",
|
||||
"value": "False"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "FIELD",
|
||||
"name": "symbol",
|
||||
"content": {
|
||||
"type": "SYMBOL",
|
||||
"name": "symbol"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "FIELD",
|
||||
"name": "integer",
|
||||
"content": {
|
||||
"type": "SYMBOL",
|
||||
"name": "integer"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "FIELD",
|
||||
"name": "unary",
|
||||
@@ -694,43 +718,6 @@
|
||||
}
|
||||
]
|
||||
},
|
||||
"value": {
|
||||
"type": "CHOICE",
|
||||
"members": [
|
||||
{
|
||||
"type": "FIELD",
|
||||
"name": "true",
|
||||
"content": {
|
||||
"type": "STRING",
|
||||
"value": "True"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "FIELD",
|
||||
"name": "false",
|
||||
"content": {
|
||||
"type": "STRING",
|
||||
"value": "False"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "FIELD",
|
||||
"name": "symbol",
|
||||
"content": {
|
||||
"type": "SYMBOL",
|
||||
"name": "symbol"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "FIELD",
|
||||
"name": "integer",
|
||||
"content": {
|
||||
"type": "SYMBOL",
|
||||
"name": "integer"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"aggregate": {
|
||||
"type": "SEQ",
|
||||
"members": [
|
||||
|
||||
96
tree-sitter-kerolox/src/node-types.json
generated
96
tree-sitter-kerolox/src/node-types.json
generated
@@ -287,6 +287,16 @@
|
||||
}
|
||||
]
|
||||
},
|
||||
"false": {
|
||||
"multiple": false,
|
||||
"required": false,
|
||||
"types": [
|
||||
{
|
||||
"type": "False",
|
||||
"named": false
|
||||
}
|
||||
]
|
||||
},
|
||||
"hole": {
|
||||
"multiple": false,
|
||||
"required": false,
|
||||
@@ -297,6 +307,16 @@
|
||||
}
|
||||
]
|
||||
},
|
||||
"integer": {
|
||||
"multiple": false,
|
||||
"required": false,
|
||||
"types": [
|
||||
{
|
||||
"type": "integer",
|
||||
"named": true
|
||||
}
|
||||
]
|
||||
},
|
||||
"parens": {
|
||||
"multiple": false,
|
||||
"required": false,
|
||||
@@ -307,6 +327,26 @@
|
||||
}
|
||||
]
|
||||
},
|
||||
"symbol": {
|
||||
"multiple": false,
|
||||
"required": false,
|
||||
"types": [
|
||||
{
|
||||
"type": "symbol",
|
||||
"named": true
|
||||
}
|
||||
]
|
||||
},
|
||||
"true": {
|
||||
"multiple": false,
|
||||
"required": false,
|
||||
"types": [
|
||||
{
|
||||
"type": "True",
|
||||
"named": false
|
||||
}
|
||||
]
|
||||
},
|
||||
"tuple": {
|
||||
"multiple": false,
|
||||
"required": false,
|
||||
@@ -327,16 +367,6 @@
|
||||
}
|
||||
]
|
||||
},
|
||||
"value": {
|
||||
"multiple": false,
|
||||
"required": false,
|
||||
"types": [
|
||||
{
|
||||
"type": "value",
|
||||
"named": true
|
||||
}
|
||||
]
|
||||
},
|
||||
"variable": {
|
||||
"multiple": false,
|
||||
"required": false,
|
||||
@@ -581,52 +611,6 @@
|
||||
"named": true,
|
||||
"fields": {}
|
||||
},
|
||||
{
|
||||
"type": "value",
|
||||
"named": true,
|
||||
"fields": {
|
||||
"false": {
|
||||
"multiple": false,
|
||||
"required": false,
|
||||
"types": [
|
||||
{
|
||||
"type": "False",
|
||||
"named": false
|
||||
}
|
||||
]
|
||||
},
|
||||
"integer": {
|
||||
"multiple": false,
|
||||
"required": false,
|
||||
"types": [
|
||||
{
|
||||
"type": "integer",
|
||||
"named": true
|
||||
}
|
||||
]
|
||||
},
|
||||
"symbol": {
|
||||
"multiple": false,
|
||||
"required": false,
|
||||
"types": [
|
||||
{
|
||||
"type": "symbol",
|
||||
"named": true
|
||||
}
|
||||
]
|
||||
},
|
||||
"true": {
|
||||
"multiple": false,
|
||||
"required": false,
|
||||
"types": [
|
||||
{
|
||||
"type": "True",
|
||||
"named": false
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "!",
|
||||
"named": false
|
||||
|
||||
3844
tree-sitter-kerolox/src/parser.c
generated
3844
tree-sitter-kerolox/src/parser.c
generated
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user