Define names in tree-sitter

This commit is contained in:
2026-04-30 21:03:58 -06:00
parent c874672515
commit 955c27d4d9
4 changed files with 5502 additions and 4031 deletions

View File

@@ -74,7 +74,7 @@ export default grammar({
),
type: $ => choice(
field("named", $.symbol),
field("named", $.name),
parenListComma(field("tuple", $.type)),
),
@@ -100,7 +100,7 @@ export default grammar({
rule: $ => seq(
optional(field("negate", "-")),
field("relation", $.symbol),
field("relation", $.name),
field("head", $.expr),
choice(".", seq(":-", field("body", $.rule_body))),
),
@@ -111,6 +111,8 @@ export default grammar({
field("body", $.rule_body),
),
name: $ => prec.left(seq(repeat(seq(field("path", $.symbol), ".")), field("path", $.symbol))),
rule_body: $ => seq(list(field("clause", $.expr)), "."),
expr: $ => choice(
@@ -126,7 +128,7 @@ export default grammar({
// value literals
field("true", "True"),
field("false", "False"),
field("symbol", $.symbol),
field("symbol", $.name),
field("integer", $.integer),
// operations
@@ -137,7 +139,7 @@ export default grammar({
seq('(', field("parens", $.expr), ')'),
),
apply: $ => prec.right(2, seq(field("head", $.symbol), field("body", $.expr))),
apply: $ => prec.right(2, seq(field("head", $.name), field("body", $.expr))),
tuple: $ => parenListComma(field("el", $.expr)),

View File

@@ -138,7 +138,7 @@
"name": "named",
"content": {
"type": "SYMBOL",
"name": "symbol"
"name": "name"
}
},
{
@@ -448,7 +448,7 @@
"name": "relation",
"content": {
"type": "SYMBOL",
"name": "symbol"
"name": "name"
}
},
{
@@ -537,6 +537,43 @@
}
]
},
"name": {
"type": "PREC_LEFT",
"value": 0,
"content": {
"type": "SEQ",
"members": [
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "path",
"content": {
"type": "SYMBOL",
"name": "symbol"
}
},
{
"type": "STRING",
"value": "."
}
]
}
},
{
"type": "FIELD",
"name": "path",
"content": {
"type": "SYMBOL",
"name": "symbol"
}
}
]
}
},
"rule_body": {
"type": "SEQ",
"members": [
@@ -663,7 +700,7 @@
"name": "symbol",
"content": {
"type": "SYMBOL",
"name": "symbol"
"name": "name"
}
},
{
@@ -724,7 +761,7 @@
"name": "head",
"content": {
"type": "SYMBOL",
"name": "symbol"
"name": "name"
}
},
{

View File

@@ -64,7 +64,7 @@
"required": true,
"types": [
{
"type": "symbol",
"type": "name",
"named": true
}
]
@@ -280,7 +280,7 @@
"required": false,
"types": [
{
"type": "symbol",
"type": "name",
"named": true
}
]
@@ -398,6 +398,22 @@
"named": true,
"fields": {}
},
{
"type": "name",
"named": true,
"fields": {
"path": {
"multiple": true,
"required": true,
"types": [
{
"type": "symbol",
"named": true
}
]
}
}
},
{
"type": "relation",
"named": true,
@@ -493,7 +509,7 @@
"required": true,
"types": [
{
"type": "symbol",
"type": "name",
"named": true
}
]
@@ -541,7 +557,7 @@
"required": false,
"types": [
{
"type": "symbol",
"type": "name",
"named": true
}
]

File diff suppressed because it is too large Load Diff