Add yield to grammar
This commit is contained in:
parent
020ebd8833
commit
71c169a1cf
@ -6,7 +6,6 @@ module.exports = grammar({
|
|||||||
extras: $ => [ /\s/, $._comment ],
|
extras: $ => [ /\s/, $._comment ],
|
||||||
|
|
||||||
conflicts: $ => [
|
conflicts: $ => [
|
||||||
[$.block],
|
|
||||||
[$.map, $.assignment_operator],
|
[$.map, $.assignment_operator],
|
||||||
],
|
],
|
||||||
|
|
||||||
@ -15,10 +14,10 @@ module.exports = grammar({
|
|||||||
|
|
||||||
_comment: $ => /[#][^#\n]*[#|\n]/,
|
_comment: $ => /[#][^#\n]*[#|\n]/,
|
||||||
|
|
||||||
block: $ => choice(
|
block: $ => prec.right(choice(
|
||||||
repeat1($.statement),
|
repeat1($.statement),
|
||||||
seq('{', repeat1($.statement), '}'),
|
seq('{', repeat1($.statement), '}'),
|
||||||
),
|
)),
|
||||||
|
|
||||||
statement: $ => prec.right(seq(
|
statement: $ => prec.right(seq(
|
||||||
choice(
|
choice(
|
||||||
@ -52,6 +51,7 @@ module.exports = grammar({
|
|||||||
$.logic,
|
$.logic,
|
||||||
$.math,
|
$.math,
|
||||||
$.value,
|
$.value,
|
||||||
|
$.yield,
|
||||||
)),
|
)),
|
||||||
|
|
||||||
_expression_list: $ => repeat1(prec.right(seq($.expression, optional(',')))),
|
_expression_list: $ => repeat1(prec.right(seq($.expression, optional(',')))),
|
||||||
@ -287,6 +287,12 @@ module.exports = grammar({
|
|||||||
$.expression,
|
$.expression,
|
||||||
)),
|
)),
|
||||||
|
|
||||||
|
yield: $ => prec.left(seq(
|
||||||
|
$.expression,
|
||||||
|
'->',
|
||||||
|
$.function_call,
|
||||||
|
)),
|
||||||
|
|
||||||
function: $ => seq(
|
function: $ => seq(
|
||||||
field('parameters', optional($.identifier_list)),
|
field('parameters', optional($.identifier_list)),
|
||||||
'=>',
|
'=>',
|
||||||
|
@ -14,36 +14,40 @@
|
|||||||
"value": "[#][^#\\n]*[#|\\n]"
|
"value": "[#][^#\\n]*[#|\\n]"
|
||||||
},
|
},
|
||||||
"block": {
|
"block": {
|
||||||
"type": "CHOICE",
|
"type": "PREC_RIGHT",
|
||||||
"members": [
|
"value": 0,
|
||||||
{
|
"content": {
|
||||||
"type": "REPEAT1",
|
"type": "CHOICE",
|
||||||
"content": {
|
"members": [
|
||||||
"type": "SYMBOL",
|
{
|
||||||
"name": "statement"
|
"type": "REPEAT1",
|
||||||
}
|
"content": {
|
||||||
},
|
"type": "SYMBOL",
|
||||||
{
|
"name": "statement"
|
||||||
"type": "SEQ",
|
|
||||||
"members": [
|
|
||||||
{
|
|
||||||
"type": "STRING",
|
|
||||||
"value": "{"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "REPEAT1",
|
|
||||||
"content": {
|
|
||||||
"type": "SYMBOL",
|
|
||||||
"name": "statement"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "STRING",
|
|
||||||
"value": "}"
|
|
||||||
}
|
}
|
||||||
]
|
},
|
||||||
}
|
{
|
||||||
]
|
"type": "SEQ",
|
||||||
|
"members": [
|
||||||
|
{
|
||||||
|
"type": "STRING",
|
||||||
|
"value": "{"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "REPEAT1",
|
||||||
|
"content": {
|
||||||
|
"type": "SYMBOL",
|
||||||
|
"name": "statement"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "STRING",
|
||||||
|
"value": "}"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"statement": {
|
"statement": {
|
||||||
"type": "PREC_RIGHT",
|
"type": "PREC_RIGHT",
|
||||||
@ -186,6 +190,10 @@
|
|||||||
{
|
{
|
||||||
"type": "SYMBOL",
|
"type": "SYMBOL",
|
||||||
"name": "value"
|
"name": "value"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "SYMBOL",
|
||||||
|
"name": "yield"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@ -1208,6 +1216,27 @@
|
|||||||
]
|
]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"yield": {
|
||||||
|
"type": "PREC_LEFT",
|
||||||
|
"value": 0,
|
||||||
|
"content": {
|
||||||
|
"type": "SEQ",
|
||||||
|
"members": [
|
||||||
|
{
|
||||||
|
"type": "SYMBOL",
|
||||||
|
"name": "expression"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "STRING",
|
||||||
|
"value": "->"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "SYMBOL",
|
||||||
|
"name": "function_call"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
"function": {
|
"function": {
|
||||||
"type": "SEQ",
|
"type": "SEQ",
|
||||||
"members": [
|
"members": [
|
||||||
@ -1445,9 +1474,6 @@
|
|||||||
}
|
}
|
||||||
],
|
],
|
||||||
"conflicts": [
|
"conflicts": [
|
||||||
[
|
|
||||||
"block"
|
|
||||||
],
|
|
||||||
[
|
[
|
||||||
"map",
|
"map",
|
||||||
"assignment_operator"
|
"assignment_operator"
|
||||||
|
@ -142,6 +142,10 @@
|
|||||||
{
|
{
|
||||||
"type": "value",
|
"type": "value",
|
||||||
"named": true
|
"named": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "yield",
|
||||||
|
"named": true
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@ -734,6 +738,25 @@
|
|||||||
]
|
]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"type": "yield",
|
||||||
|
"named": true,
|
||||||
|
"fields": {},
|
||||||
|
"children": {
|
||||||
|
"multiple": true,
|
||||||
|
"required": true,
|
||||||
|
"types": [
|
||||||
|
{
|
||||||
|
"type": "expression",
|
||||||
|
"named": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "function_call",
|
||||||
|
"named": true
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"type": "!=",
|
"type": "!=",
|
||||||
"named": false
|
"named": false
|
||||||
@ -778,6 +801,10 @@
|
|||||||
"type": "-=",
|
"type": "-=",
|
||||||
"named": false
|
"named": false
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"type": "->",
|
||||||
|
"named": false
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"type": "..",
|
"type": "..",
|
||||||
"named": false
|
"named": false
|
||||||
|
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user