Define names in tree-sitter
This commit is contained in:
@@ -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)),
|
||||
|
||||
|
||||
45
tree-sitter-kerolox/src/grammar.json
generated
45
tree-sitter-kerolox/src/grammar.json
generated
@@ -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"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
||||
24
tree-sitter-kerolox/src/node-types.json
generated
24
tree-sitter-kerolox/src/node-types.json
generated
@@ -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
|
||||
}
|
||||
]
|
||||
|
||||
9454
tree-sitter-kerolox/src/parser.c
generated
9454
tree-sitter-kerolox/src/parser.c
generated
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user