Continue syntax revision

This commit is contained in:
Jeff 2023-10-31 05:51:37 -04:00
parent 0c37e5e3a6
commit 47f50931d9
18 changed files with 14886 additions and 8819 deletions

View File

@ -1,240 +0,0 @@
==================
If
==================
if true { "True" }
---
(root
(item
(statement
(if_else
(if
(expression
(value
(boolean)))
(item
(statement
(expression
(value
(string))))))))))
==================
Complex If
==================
if (1 == 1) && (2 == 2) && (3 == 3) { "True" }
---
(root
(item
(statement
(if_else
(if
(expression
(logic
(expression
(logic
(expression
(value
(integer)))
(logic_operator)
(expression
(value
(integer)))))
(logic_operator)
(expression
(logic
(expression
(logic
(expression
(value
(integer)))
(logic_operator)
(expression
(value
(integer)))))
(logic_operator)
(expression
(logic
(expression
(value
(integer)))
(logic_operator)
(expression
(value
(integer)))))))))
(item
(statement
(expression
(value
(string))))))))))
==================
If Assignment
==================
x = if true { 1 }
---
(root
(item
(statement
(assignment
(identifier)
(assignment_operator)
(statement
(if_else
(if
(expression
(value
(boolean)))
(item
(statement
(expression
(value
(integer))))))))))))
==================
If Else
==================
if false { "True" } else { "False" }
---
(root
(item
(statement
(if_else
(if
(expression
(value
(boolean)))
(item
(statement
(expression
(value
(string))))))
(else
(item
(statement
(expression
(value
(string))))))))))
==================
If Else If
==================
if 1 == 1 {
"math is fun"
} else if 4 == 9 {
"math is broken"
}
---
(root
(item
(statement
(if_else
(if
(expression
(logic
(expression
(value
(integer)))
(logic_operator)
(expression
(value
(integer)))))
(item
(statement
(expression
(value
(string))))))
(else_if
(expression
(logic
(expression
(value
(integer)))
(logic_operator)
(expression
(value
(integer)))))
(item
(statement
(expression
(value
(string))))))))))
==================
If Else Else If Else
==================
if false {
"no"
} else if false {
"no"
} else if 1 + 1 == 9 {
"not the answer"
} else {
"42"
}
---
(root
(item
(statement
(if_else
(if
(expression
(value
(boolean)))
(item
(statement
(expression
(value
(string))))))
(else_if
(expression
(value
(boolean)))
(item
(statement
(expression
(value
(string))))))
(else_if
(expression
(logic
(expression
(math
(expression
(value
(integer)))
(math_operator)
(expression
(value
(integer)))))
(logic_operator)
(expression
(value
(integer)))))
(item
(statement
(expression
(value
(string))))))
(else
(item
(statement
(expression
(value
(string))))))))))

View File

@ -1,5 +1,5 @@
==================
Filter Loop
Simple Filter Loop
==================
filter i in [1, 2, 3] {
@ -9,23 +9,54 @@ filter i in [1, 2, 3] {
---
(root
(item
(statement
(filter
(identifier)
(statement
(filter
(identifier)
(expression
(value
(list
(expression
(value
(integer)))
(expression
(value
(integer)))
(expression
(value
(integer))))))
(statement
(expression
(value
(list
(expression
(value
(integer)))
(expression
(value
(integer)))
(expression
(value
(integer))))))
(item
(logic
(expression
(identifier))
(logic_operator)
(expression
(value
(integer)))))))))
==================
Nested Filter Loop
==================
filter i in big_list {
filter j in i {
i != 42
}
}
---
(root
(statement
(filter
(identifier)
(expression
(identifier))
(statement
(filter
(identifier)
(expression
(identifier))
(statement
(expression
(logic
@ -35,45 +66,3 @@ filter i in [1, 2, 3] {
(expression
(value
(integer)))))))))))
==================
Filter Loop Assignment
==================
list = filter i in ["one", "two", "three"] {
i == "one"
}
---
(root
(item
(statement
(assignment
(identifier)
(assignment_operator)
(statement
(filter
(identifier)
(expression
(value
(list
(expression
(value
(string)))
(expression
(value
(string)))
(expression
(value
(string))))))
(item
(statement
(expression
(logic
(expression
(identifier))
(logic_operator)
(expression
(value
(string)))))))))))))

View File

@ -1,73 +1,83 @@
==================
Find Loop
Simple Find Loop
==================
find i in [1, 2, 3] {
i <= 3
i <= 3
}
---
(root
(item
(statement
(find
(identifier)
(expression
(value
(list
(expression
(value
(integer)))
(expression
(value
(integer)))
(expression
(value
(integer))))))
(item
(statement
(expression
(logic
(expression
(identifier))
(logic_operator)
(expression
(value
(integer)))))))))))
==================
Find Loop Assignment
==================
found = find i in ["one", "two", "three"] {
i == "three"
}
---
(root
(item
(statement
(assignment
(identifier)
(assignment_operator)
(statement
(find
(identifier)
(statement
(find
(identifier)
(expression
(value
(list
(expression
(value
(list
(expression
(value
(string)))
(expression
(value
(string)))
(expression
(value
(string))))))
(item
(integer)))
(expression
(value
(integer)))
(expression
(value
(integer))))))
(statement
(expression
(logic
(expression
(identifier))
(logic_operator)
(expression
(value
(integer)))))))))
==================
Nested Find Loop
==================
find i in ["one", "two", "three"] {
found = find j in i {
i == "e"
}
if (type found) != 'empty' {
true
} else {
false
}
}
---
(root
(statement
(find
(identifier)
(expression
(value
(list
(expression
(value
(string)))
(expression
(value
(string)))
(expression
(value
(string))))))
(statement
(assignment
(identifier)
(assignment_operator)
(statement
(find
(identifier)
(expression
(identifier))
(statement
(expression
(logic
@ -76,4 +86,25 @@ found = find i in ["one", "two", "three"] {
(logic_operator)
(expression
(value
(string)))))))))))))
(string)))))))))
(if_else
(if
(expression
(logic
(expression
(tool
(expression
(identifier))))
(logic_operator)
(expression
(value
(string)))))
(statement
(expression
(value
(boolean)))))
(else
(statement
(expression
(value
(boolean))))))))))

View File

@ -9,28 +9,26 @@ for i in [1, 2, 3] {
---
(root
(item
(statement
(for
(identifier)
(expression
(value
(list
(expression
(value
(integer)))
(expression
(value
(integer)))
(expression
(value
(integer))))))
(item
(statement
(statement
(for
(identifier)
(expression
(value
(list
(expression
(tool
(expression
(identifier))))))))))
(value
(integer)))
(expression
(value
(integer)))
(expression
(value
(integer))))))
(statement
(expression
(tool
(expression
(identifier))))))))
==================
Nested For Loop
@ -45,21 +43,18 @@ for list in list_of_lists {
---
(root
(item
(statement
(for
(identifier)
(expression
(identifier))
(item
(statement
(for
(identifier)
(expression
(identifier))
(statement
(for
(identifier)
(expression
(identifier))
(statement
(for
(identifier)
(expression
(identifier))
(item
(statement
(expression
(tool
(expression
(identifier)))))))))))))
(expression
(tool
(expression
(identifier))))))))))

View File

@ -9,15 +9,12 @@ __xyz__
---
(root
(item
(statement
(expression
(identifier))))
(item
(statement
(expression
(identifier))))
(item
(statement
(expression
(identifier)))))
(statement
(expression
(identifier)))
(statement
(expression
(identifier)))
(statement
(expression
(identifier))))

View File

@ -0,0 +1,242 @@
==================
Simple If
==================
if true { "True" }
---
(root
(statement
(if_else
(if
(expression
(value
(boolean)))
(statement
(expression
(value
(string))))))))
==================
Complex If
==================
if 1 == 1 && 2 == 2 && 3 == 3 { "True" }
---
(root
(statement
(if_else
(if
(expression
(logic
(expression
(value
(integer)))
(logic_operator)
(expression
(logic
(expression
(value
(integer)))
(logic_operator)
(expression
(logic
(expression
(value
(integer)))
(logic_operator)
(expression
(logic
(expression
(value
(integer)))
(logic_operator)
(expression
(logic
(expression
(value
(integer)))
(logic_operator)
(expression
(value
(integer)))))))))))))
(statement
(expression
(value
(string))))))))
==================
Nested If
==================
if true {
if 42 == 12 {
'hiya'
} else {
'bye'
}
}
---
(root
(statement
(if_else
(if
(expression
(value
(boolean)))
(statement
(if_else
(if
(expression
(logic
(expression
(value
(integer)))
(logic_operator)
(expression
(value
(integer)))))
(statement
(expression
(value
(string)))))
(else
(statement
(expression
(value
(string)))))))))))
==================
If Else
==================
if false { "True" } else { "False" }
---
(root
(statement
(if_else
(if
(expression
(value
(boolean)))
(statement
(expression
(value
(string)))))
(else
(statement
(expression
(value
(string))))))))
==================
If Else If
==================
if 1 == 1 {
"math is fun"
} else if 4 == 9 {
"math is broken"
}
---
(root
(statement
(if_else
(if
(expression
(logic
(expression
(value
(integer)))
(logic_operator)
(expression
(value
(integer)))))
(statement
(expression
(value
(string)))))
(else_if
(expression
(logic
(expression
(value
(integer)))
(logic_operator)
(expression
(value
(integer)))))
(statement
(expression
(value
(string))))))))
==================
If Else Else If Else
==================
if false {
"no"
} else if false {
"no"
} else if 1 + 1 == 9 {
"not the answer"
} else {
"42"
}
---
(root
(statement
(if_else
(if
(expression
(value
(boolean)))
(statement
(expression
(value
(string)))))
(else_if
(expression
(value
(boolean)))
(statement
(expression
(value
(string)))))
(else_if
(expression
(logic
(expression
(math
(expression
(value
(integer)))
(math_operator)
(expression
(value
(integer)))))
(logic_operator)
(expression
(value
(integer)))))
(statement
(expression
(value
(string)))))
(else
(statement
(expression
(value
(string))))))))

View File

@ -1,5 +1,5 @@
==================
Indexing
Simple Indexes
==================
dust_data:1:name
@ -11,70 +11,82 @@ foobar:1:42
---
(root
(item
(statement
(expression
(index
(expression
(index
(expression
(identifier))
(expression
(value
(integer)))))
(expression
(identifier))))))
(item
(statement
(expression
(index
(expression
(identifier))
(expression
(identifier))))))
(item
(statement
(expression
(index
(expression
(index
(expression
(identifier))
(expression
(value
(integer)))))
(expression
(value
(integer))))))))
(statement
(expression
(index
(expression
(index
(expression
(identifier))
(expression
(value
(integer)))))
(expression
(identifier)))))
(statement
(expression
(index
(expression
(identifier))
(expression
(identifier)))))
(statement
(expression
(index
(expression
(index
(expression
(identifier))
(expression
(value
(integer)))))
(expression
(value
(integer)))))))
==================
Sublist
Nested Indexes
==================
['answers', 42, 666]:1..2
[['answers' 'foobar'], 42, 666]:0:1:0..2
---
(root
(item
(statement
(expression
(index
(expression
(value
(list
(statement
(expression
(index
(expression
(index
(expression
(index
(expression
(value
(string)))
(list
(expression
(value
(list
(expression
(value
(string)))
(expression
(value
(string))))))
(expression
(value
(integer)))
(expression
(value
(integer))))))
(expression
(value
(integer)))
(expression
(value
(integer))))))
(expression
(value
(integer)))
(expression
(value
(integer))))))))
(integer)))))
(expression
(value
(integer)))))
(expression
(value
(integer)))
(expression
(value
(integer)))))))

View File

@ -7,49 +7,16 @@ List Declaration
---
(root
(item
(statement
(expression
(value
(list
(expression
(value
(string)))
(expression
(value
(integer)))))))))
==================
List Assignment
==================
empty = []
foobar = ['foobar']
---
(root
(item
(statement
(assignment
(identifier)
(assignment_operator)
(statement
(statement
(expression
(value
(list
(expression
(value
(list)))))))
(item
(statement
(assignment
(identifier)
(assignment_operator)
(statement
(string)))
(expression
(value
(list
(expression
(value
(string)))))))))))
(integer))))))))
==================
List Nesting
@ -60,23 +27,22 @@ List Nesting
---
(root
(item
(statement
(expression
(value
(list
(expression
(value
(string)))
(expression
(value
(list
(expression
(value
(integer)))
(expression
(value
(list
(expression
(value
(integer)))))))))))))))
(statement
(expression
(value
(list
(expression
(value
(string)))
(expression
(value
(list
(expression
(value
(integer)))
(expression
(value
(list
(expression
(value
(integer))))))))))))))

View File

@ -2,44 +2,62 @@
Simple Map
==================
{
answer = 42
}
{ answer = 42 }
---
(root
(item
(statement
(expression
(value
(map
(identifier)
(expression
(value
(integer)))))))))
(statement
(expression
(value
(map
(identifier)
(expression
(value
(integer))))))))
==================
Map Assignment
Nested Maps
==================
x = {
answer = 42
y = {
foo = 'bar'
z = {
message = 'hiya'
}
}
f = 12
}
---
(root
(item
(statement
(assignment
(identifier)
(assignment_operator)
(statement
(expression
(value
(map
(identifier)
(expression
(value
(integer)))))))))))
(statement
(assignment
(identifier)
(assignment_operator)
(statement
(expression
(value
(map
(identifier)
(expression
(value
(map
(identifier)
(expression
(value
(string)))
(identifier)
(expression
(value
(map
(identifier)
(expression
(value
(string)))))))))
(identifier)
(expression
(value
(integer))))))))))

View File

@ -7,139 +7,89 @@ Equality
---
(root
(item
(statement
(expression
(logic
(expression
(value
(integer)))
(logic_operator)
(expression
(math
(expression
(math
(expression
(value
(integer)))
(math_operator)
(expression
(value
(integer)))))
(math_operator)
(expression
(value
(integer))))))))))
(statement
(expression
(logic
(expression
(value
(integer)))
(logic_operator)
(expression
(math
(expression
(math
(expression
(value
(integer)))
(math_operator)
(expression
(value
(integer)))))
(math_operator)
(expression
(value
(integer)))))))))
==================
&&
==================
4 + 2 == 42 && true
(((4 + 2) == 42) && true)
---
(root
(item
(statement
(expression
(logic
(expression
(math
(expression
(value
(integer)))
(math_operator)
(expression
(value
(integer)))))
(logic_operator)
(expression
(logic
(expression
(value
(integer)))
(logic_operator)
(expression
(value
(boolean)))))))))
(item
(statement
(expression
(logic
(expression
(logic
(expression
(math
(expression
(value
(integer)))
(math_operator)
(expression
(value
(integer)))))
(logic_operator)
(expression
(value
(integer)))))
(logic_operator)
(expression
(value
(boolean))))))))
(statement
(expression
(logic
(expression
(math
(expression
(value
(integer)))
(math_operator)
(expression
(value
(integer)))))
(logic_operator)
(expression
(logic
(expression
(value
(integer)))
(logic_operator)
(expression
(value
(boolean)))))))))
==================
\||
==================
4 + 2 == 42 || true
((4 + 2) == 42) || true
---
(root
(item
(statement
(expression
(logic
(expression
(math
(expression
(value
(integer)))
(math_operator)
(expression
(value
(integer)))))
(logic_operator)
(expression
(logic
(expression
(value
(integer)))
(logic_operator)
(expression
(value
(boolean)))))))))
(item
(statement
(expression
(logic
(expression
(logic
(expression
(math
(expression
(value
(integer)))
(math_operator)
(expression
(value
(integer)))))
(logic_operator)
(expression
(value
(integer)))))
(logic_operator)
(expression
(value
(boolean))))))))
(statement
(expression
(logic
(expression
(math
(expression
(value
(integer)))
(math_operator)
(expression
(value
(integer)))))
(logic_operator)
(expression
(logic
(expression
(value
(integer)))
(logic_operator)
(expression
(value
(boolean)))))))))

View File

@ -34,30 +34,32 @@ y = "one"
---
(root
(item
(statement
(assignment
(identifier)
(assignment_operator)
(statement
(expression
(value
(integer)))))))
(item
(statement
(assignment
(identifier)
(assignment_operator)
(statement
(expression
(value
(string))))))))
(statement
(assignment
(identifier)
(assignment_operator)
(statement
(expression
(value
(integer))))))
(statement
(assignment
(identifier)
(assignment_operator)
(statement
(expression
(value
(string)))))))
==================
Complex Assignment
==================
x = 1 + 1
x = if 1 + 1 == 2 {
'yo'
} else {
'no'
}
---
@ -82,35 +84,34 @@ x = 1 + 1
Expression Precedence
==================
x = (3 == (1 + (2 + 2)))
x = 3 == 1 + 2 + 2
---
(root
(item
(statement
(assignment
(identifier)
(assignment_operator)
(statement
(expression
(logic
(expression
(value
(integer)))
(logic_operator)
(expression
(math
(expression
(value
(integer)))
(math_operator)
(expression
(math
(expression
(value
(integer)))
(math_operator)
(expression
(value
(integer))))))))))))))
(statement
(assignment
(identifier)
(assignment_operator)
(statement
(expression
(logic
(expression
(value
(integer)))
(logic_operator)
(expression
(math
(expression
(math
(expression
(value
(integer)))
(math_operator)
(expression
(value
(integer)))))
(math_operator)
(expression
(value
(integer)))))))))))

View File

@ -11,79 +11,42 @@ table <messages, numbers> [
---
(root
(item
(statement
(expression
(value
(table
(identifier)
(identifier)
(expression
(value
(list
(expression
(value
(list
(expression
(value
(string)))
(expression
(value
(integer))))))
(expression
(value
(list
(expression
(value
(string)))
(expression
(value
(integer))))))
(expression
(value
(list
(expression
(value
(string)))
(expression
(value
(float)))))))))))))))
==================
Table Assignment
==================
foobar = table <text, number> [
['answer', 42]
]
---
(root
(item
(statement
(assignment
(identifier)
(assignment_operator)
(statement
(statement
(expression
(value
(table
(identifier)
(identifier)
(expression
(value
(table
(identifier)
(identifier)
(list
(expression
(value
(list
(expression
(value
(list
(expression
(value
(string)))
(expression
(value
(integer)))))))))))))))))
(string)))
(expression
(value
(integer))))))
(expression
(value
(list
(expression
(value
(string)))
(expression
(value
(integer))))))
(expression
(value
(list
(expression
(value
(string)))
(expression
(value
(float))))))))))))))
==================
Table Access
==================
@ -95,22 +58,20 @@ select <number> from foobar {
---
(root
(item
(statement
(select
(identifier)
(expression
(identifier))
(item
(statement
(statement
(select
(identifier)
(expression
(identifier))
(statement
(expression
(logic
(expression
(logic
(expression
(identifier))
(logic_operator)
(expression
(value
(string)))))))))))
(identifier))
(logic_operator)
(expression
(value
(string)))))))))
==================
Table Insert
@ -123,19 +84,18 @@ insert into foobar [
---
(root
(item
(statement
(insert
(identifier)
(expression
(value
(list
(expression
(value
(list
(expression
(value
(string)))
(expression
(value
(integer)))))))))))))
(statement
(insert
(identifier)
(expression
(value
(list
(expression
(value
(list
(expression
(value
(string)))
(expression
(value
(integer))))))))))))

View File

@ -9,63 +9,74 @@ transform i in [1, 2, 3] {
---
(root
(item
(statement
(transform
(identifier)
(expression
(value
(list
(expression
(value
(integer)))
(expression
(value
(integer)))
(expression
(value
(integer))))))
(item
(statement
(statement
(transform
(identifier)
(expression
(value
(list
(expression
(tool
(expression
(identifier))))))))))
(value
(integer)))
(expression
(value
(integer)))
(expression
(value
(integer))))))
(statement
(expression
(tool
(expression
(identifier))))))))
==================
Transform Loop Assignment
Nested Transform Loop
==================
list = transform i in ["one", "two", "three"] {
(output i)
transform i in [['one'] ['two'] ['three']] {
transform j in i {
j += 'foobar'
}
}
---
(root
(item
(statement
(assignment
(identifier)
(assignment_operator)
(statement
(transform
(identifier)
(statement
(transform
(identifier)
(expression
(value
(list
(expression
(value
(list
(expression
(value
(string)))
(expression
(value
(string)))
(string))))))
(expression
(value
(list
(expression
(value
(string))))))
(item
(expression
(value
(list
(expression
(value
(string)))))))))
(statement
(transform
(identifier)
(expression
(identifier))
(statement
(assignment
(identifier)
(assignment_operator)
(statement
(expression
(tool
(expression
(identifier))))))))))))
(value
(string)))))))))))

View File

@ -9,43 +9,59 @@ while true {
---
(root
(item
(statement
(while
(statement
(while
(expression
(value
(boolean)))
(statement
(expression
(value
(boolean)))
(item
(statement
(tool
(expression
(tool
(expression
(value
(string)))))))))))
(value
(string)))))))))
==================
While Loop Assignment
Nested While Loop
==================
answer = while false {
42
while true {
x = 4
while x > 0 {
x -= 1
}
}
---
(root
(item
(statement
(assignment
(identifier)
(assignment_operator)
(statement
(while
(statement
(while
(expression
(value
(boolean)))
(statement
(assignment
(identifier)
(assignment_operator)
(statement
(expression
(value
(boolean)))
(item
(integer)))
(while
(expression
(logic
(expression
(identifier))
(logic_operator)
(expression
(value
(integer)))))
(statement
(expression
(value
(integer)))))))))))
(assignment
(identifier)
(assignment_operator)
(statement
(expression
(value
(integer)))))))))))))

View File

@ -11,8 +11,8 @@ module.exports = grammar({
comment: $ => /[#][^#\n]*[#|\n]/,
statement: $ => prec.left(choice(
$._statement_kind,
seq('{', $._statement_kind, '}'),
repeat1($._statement_kind),
seq('{', repeat1($._statement_kind), '}'),
)),
_statement_kind: $ => prec.left(choice(
@ -37,7 +37,7 @@ module.exports = grammar({
seq('(', $._expression_kind, ')'),
),
_expression_kind: $ => prec.left(choice(
_expression_kind: $ => prec.right(choice(
$.function_call,
$.identifier,
$.index,
@ -60,9 +60,19 @@ module.exports = grammar({
$.map,
),
integer: $ => /0[bB][01](_?[01])*|0[oO]?[0-7](_?[0-7])*|(0[dD])?\d(_?\d)*|0[xX][0-9a-fA-F](_?[0-9a-fA-F])*/,
integer: $ => prec.left(token(seq(
optional('-'),
repeat1(
choice('1', '2', '3', '4', '5', '6', '7', '8', '9', '0')
),
))),
float: $ => /\d(_?\d)*(\.\d)?(_?\d)*([eE][\+-]?\d(_?\d)*)?/,
float: $ => prec.left(token(seq(
optional('-'),
repeat1(choice('1', '2', '3', '4', '5', '6', '7', '8', '9', '0')),
'.',
repeat1(choice('1', '2', '3', '4', '5', '6', '7', '8', '9', '0')),
))),
string: $ => /("[^"]*?")|('[^']*?')|(`[^`]*?`)/,
@ -73,13 +83,18 @@ module.exports = grammar({
list: $ => seq(
'[',
repeat(seq($.expression, optional(','))),
repeat(prec.left(seq($.expression, optional(',')))),
']',
),
map: $ => seq(
'{',
$.assignment,
repeat(seq(
$.identifier,
'=',
$.expression,
optional(',')
)),
'}',
),
@ -113,13 +128,13 @@ module.exports = grammar({
$.expression,
)),
math_operator: $ => choice(
math_operator: $ => token(choice(
'+',
'-',
'*',
'/',
'%',
),
)),
logic: $ => prec.right(seq(
$.expression,
@ -127,7 +142,7 @@ module.exports = grammar({
$.expression,
)),
logic_operator: $ => choice(
logic_operator: $ => token(choice(
'==',
'!=',
'&&',
@ -136,7 +151,7 @@ module.exports = grammar({
'<',
">=",
"<=",
),
)),
assignment: $ => prec.right(seq(
$.identifier,
@ -144,11 +159,11 @@ module.exports = grammar({
$.statement,
)),
assignment_operator: $ => choice(
assignment_operator: $ => token(choice(
"=",
"+=",
"-=",
),
)),
if_else: $ => prec.left(seq(
$.if,
@ -182,7 +197,7 @@ module.exports = grammar({
function_call: $ => seq(
'(',
$.identifier,
repeat(seq($.expression, optional(','))),
repeat(prec.left(seq($.expression, optional(',')))),
')',
),
@ -294,10 +309,8 @@ module.exports = grammar({
),
tool: $ => prec.right(seq(
'(',
$._tool_kind,
repeat(seq($.expression, optional(','))),
')',
repeat(prec.left(seq($.expression, optional(',')))),
)),
_tool_kind: $ => choice(
@ -317,7 +330,6 @@ module.exports = grammar({
'metadata',
'move',
'read',
'remove',
'write',
// Format conversion

View File

@ -20,8 +20,11 @@
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_statement_kind"
"type": "REPEAT1",
"content": {
"type": "SYMBOL",
"name": "_statement_kind"
}
},
{
"type": "SEQ",
@ -31,8 +34,11 @@
"value": "{"
},
{
"type": "SYMBOL",
"name": "_statement_kind"
"type": "REPEAT1",
"content": {
"type": "SYMBOL",
"name": "_statement_kind"
}
},
{
"type": "STRING",
@ -135,7 +141,7 @@
]
},
"_expression_kind": {
"type": "PREC_LEFT",
"type": "PREC_RIGHT",
"value": 0,
"content": {
"type": "CHOICE",
@ -213,12 +219,200 @@
]
},
"integer": {
"type": "PATTERN",
"value": "0[bB][01](_?[01])*|0[oO]?[0-7](_?[0-7])*|(0[dD])?\\d(_?\\d)*|0[xX][0-9a-fA-F](_?[0-9a-fA-F])*"
"type": "PREC_LEFT",
"value": 0,
"content": {
"type": "TOKEN",
"content": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "-"
},
{
"type": "BLANK"
}
]
},
{
"type": "REPEAT1",
"content": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "1"
},
{
"type": "STRING",
"value": "2"
},
{
"type": "STRING",
"value": "3"
},
{
"type": "STRING",
"value": "4"
},
{
"type": "STRING",
"value": "5"
},
{
"type": "STRING",
"value": "6"
},
{
"type": "STRING",
"value": "7"
},
{
"type": "STRING",
"value": "8"
},
{
"type": "STRING",
"value": "9"
},
{
"type": "STRING",
"value": "0"
}
]
}
}
]
}
}
},
"float": {
"type": "PATTERN",
"value": "\\d(_?\\d)*(\\.\\d)?(_?\\d)*([eE][\\+-]?\\d(_?\\d)*)?"
"type": "PREC_LEFT",
"value": 0,
"content": {
"type": "TOKEN",
"content": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "-"
},
{
"type": "BLANK"
}
]
},
{
"type": "REPEAT1",
"content": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "1"
},
{
"type": "STRING",
"value": "2"
},
{
"type": "STRING",
"value": "3"
},
{
"type": "STRING",
"value": "4"
},
{
"type": "STRING",
"value": "5"
},
{
"type": "STRING",
"value": "6"
},
{
"type": "STRING",
"value": "7"
},
{
"type": "STRING",
"value": "8"
},
{
"type": "STRING",
"value": "9"
},
{
"type": "STRING",
"value": "0"
}
]
}
},
{
"type": "STRING",
"value": "."
},
{
"type": "REPEAT1",
"content": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "1"
},
{
"type": "STRING",
"value": "2"
},
{
"type": "STRING",
"value": "3"
},
{
"type": "STRING",
"value": "4"
},
{
"type": "STRING",
"value": "5"
},
{
"type": "STRING",
"value": "6"
},
{
"type": "STRING",
"value": "7"
},
{
"type": "STRING",
"value": "8"
},
{
"type": "STRING",
"value": "9"
},
{
"type": "STRING",
"value": "0"
}
]
}
}
]
}
}
},
"string": {
"type": "PATTERN",
@ -244,11 +438,60 @@
"type": "STRING",
"value": "["
},
{
"type": "REPEAT",
"content": {
"type": "PREC_LEFT",
"value": 0,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "expression"
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "BLANK"
}
]
}
]
}
}
},
{
"type": "STRING",
"value": "]"
}
]
},
"map": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "{"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "STRING",
"value": "="
},
{
"type": "SYMBOL",
"name": "expression"
@ -268,23 +511,6 @@
]
}
},
{
"type": "STRING",
"value": "]"
}
]
},
"map": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "{"
},
{
"type": "SYMBOL",
"name": "assignment"
},
{
"type": "STRING",
"value": "}"
@ -475,29 +701,32 @@
}
},
"math_operator": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "+"
},
{
"type": "STRING",
"value": "-"
},
{
"type": "STRING",
"value": "*"
},
{
"type": "STRING",
"value": "/"
},
{
"type": "STRING",
"value": "%"
}
]
"type": "TOKEN",
"content": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "+"
},
{
"type": "STRING",
"value": "-"
},
{
"type": "STRING",
"value": "*"
},
{
"type": "STRING",
"value": "/"
},
{
"type": "STRING",
"value": "%"
}
]
}
},
"logic": {
"type": "PREC_RIGHT",
@ -521,41 +750,44 @@
}
},
"logic_operator": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "=="
},
{
"type": "STRING",
"value": "!="
},
{
"type": "STRING",
"value": "&&"
},
{
"type": "STRING",
"value": "||"
},
{
"type": "STRING",
"value": ">"
},
{
"type": "STRING",
"value": "<"
},
{
"type": "STRING",
"value": ">="
},
{
"type": "STRING",
"value": "<="
}
]
"type": "TOKEN",
"content": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "=="
},
{
"type": "STRING",
"value": "!="
},
{
"type": "STRING",
"value": "&&"
},
{
"type": "STRING",
"value": "||"
},
{
"type": "STRING",
"value": ">"
},
{
"type": "STRING",
"value": "<"
},
{
"type": "STRING",
"value": ">="
},
{
"type": "STRING",
"value": "<="
}
]
}
},
"assignment": {
"type": "PREC_RIGHT",
@ -579,21 +811,24 @@
}
},
"assignment_operator": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "="
},
{
"type": "STRING",
"value": "+="
},
{
"type": "STRING",
"value": "-="
}
]
"type": "TOKEN",
"content": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "="
},
{
"type": "STRING",
"value": "+="
},
{
"type": "STRING",
"value": "-="
}
]
}
},
"if_else": {
"type": "PREC_LEFT",
@ -717,25 +952,29 @@
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "expression"
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "BLANK"
}
]
}
]
"type": "PREC_LEFT",
"value": 0,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "expression"
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "BLANK"
}
]
}
]
}
}
},
{
@ -1177,10 +1416,6 @@
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "SYMBOL",
"name": "_tool_kind"
@ -1188,30 +1423,30 @@
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "expression"
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "BLANK"
}
]
}
]
"type": "PREC_LEFT",
"value": 0,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "expression"
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "BLANK"
}
]
}
]
}
}
},
{
"type": "STRING",
"value": ")"
}
]
}
@ -1271,10 +1506,6 @@
"type": "STRING",
"value": "read"
},
{
"type": "STRING",
"value": "remove"
},
{
"type": "STRING",
"value": "write"

View File

@ -22,11 +22,6 @@
]
}
},
{
"type": "assignment_operator",
"named": true,
"fields": {}
},
{
"type": "async",
"named": true,
@ -189,6 +184,11 @@
]
}
},
{
"type": "float",
"named": true,
"fields": {}
},
{
"type": "for",
"named": true,
@ -326,6 +326,11 @@
]
}
},
{
"type": "integer",
"named": true,
"fields": {}
},
{
"type": "list",
"named": true,
@ -360,21 +365,20 @@
]
}
},
{
"type": "logic_operator",
"named": true,
"fields": {}
},
{
"type": "map",
"named": true,
"fields": {},
"children": {
"multiple": false,
"required": true,
"multiple": true,
"required": false,
"types": [
{
"type": "assignment",
"type": "expression",
"named": true
},
{
"type": "identifier",
"named": true
}
]
@ -418,11 +422,6 @@
]
}
},
{
"type": "math_operator",
"named": true,
"fields": {}
},
{
"type": "reduce",
"named": true,
@ -512,7 +511,7 @@
"named": true,
"fields": {},
"children": {
"multiple": false,
"multiple": true,
"required": true,
"types": [
{
@ -693,18 +692,6 @@
]
}
},
{
"type": "!=",
"named": false
},
{
"type": "%",
"named": false
},
{
"type": "&&",
"named": false
},
{
"type": "(",
"named": false
@ -713,38 +700,14 @@
"type": ")",
"named": false
},
{
"type": "*",
"named": false
},
{
"type": "+",
"named": false
},
{
"type": "+=",
"named": false
},
{
"type": ",",
"named": false
},
{
"type": "-",
"named": false
},
{
"type": "-=",
"named": false
},
{
"type": "..",
"named": false
},
{
"type": "/",
"named": false
},
{
"type": ":",
"named": false
@ -753,18 +716,10 @@
"type": "<",
"named": false
},
{
"type": "<=",
"named": false
},
{
"type": "=",
"named": false
},
{
"type": "==",
"named": false
},
{
"type": "=>",
"named": false
@ -773,10 +728,6 @@
"type": ">",
"named": false
},
{
"type": ">=",
"named": false
},
{
"type": "[",
"named": false
@ -797,6 +748,10 @@
"type": "assert_equal",
"named": false
},
{
"type": "assignment_operator",
"named": true
},
{
"type": "async",
"named": false
@ -841,10 +796,6 @@
"type": "fish",
"named": false
},
{
"type": "float",
"named": true
},
{
"type": "for",
"named": false
@ -881,10 +832,6 @@
"type": "insert",
"named": false
},
{
"type": "integer",
"named": true
},
{
"type": "into",
"named": false
@ -893,10 +840,18 @@
"type": "length",
"named": false
},
{
"type": "logic_operator",
"named": true
},
{
"type": "match",
"named": false
},
{
"type": "math_operator",
"named": true
},
{
"type": "metadata",
"named": false
@ -1017,10 +972,6 @@
"type": "{",
"named": false
},
{
"type": "||",
"named": false
},
{
"type": "}",
"named": false

File diff suppressed because it is too large Load Diff