Add break expressions
This commit is contained in:
parent
bb6875a11d
commit
d32fd4fd6c
|
@ -51,6 +51,7 @@ module.exports = grammar({
|
||||||
$.if_expression,
|
$.if_expression,
|
||||||
$.while_expression,
|
$.while_expression,
|
||||||
$.for_expression,
|
$.for_expression,
|
||||||
|
$.break_expression,
|
||||||
),
|
),
|
||||||
|
|
||||||
nil_literal: (_) => "nil",
|
nil_literal: (_) => "nil",
|
||||||
|
@ -204,6 +205,8 @@ module.exports = grammar({
|
||||||
"do",
|
"do",
|
||||||
field("body", $._expr),
|
field("body", $._expr),
|
||||||
),
|
),
|
||||||
|
|
||||||
|
break_expression: (_) => "break",
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
@ -69,6 +69,10 @@
|
||||||
{
|
{
|
||||||
"type": "SYMBOL",
|
"type": "SYMBOL",
|
||||||
"name": "for_expression"
|
"name": "for_expression"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "SYMBOL",
|
||||||
|
"name": "break_expression"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
@ -937,6 +941,10 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
},
|
||||||
|
"break_expression": {
|
||||||
|
"type": "STRING",
|
||||||
|
"value": "break"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"extras": [
|
"extras": [
|
||||||
|
|
|
@ -23,6 +23,10 @@
|
||||||
"type": "binary_expression",
|
"type": "binary_expression",
|
||||||
"named": true
|
"named": true
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"type": "break_expression",
|
||||||
|
"named": true
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"type": "for_expression",
|
"type": "for_expression",
|
||||||
"named": true
|
"named": true
|
||||||
|
@ -93,6 +97,10 @@
|
||||||
"type": "binary_expression",
|
"type": "binary_expression",
|
||||||
"named": true
|
"named": true
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"type": "break_expression",
|
||||||
|
"named": true
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"type": "for_expression",
|
"type": "for_expression",
|
||||||
"named": true
|
"named": true
|
||||||
|
@ -197,6 +205,10 @@
|
||||||
"type": "binary_expression",
|
"type": "binary_expression",
|
||||||
"named": true
|
"named": true
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"type": "break_expression",
|
||||||
|
"named": true
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"type": "for_expression",
|
"type": "for_expression",
|
||||||
"named": true
|
"named": true
|
||||||
|
@ -291,6 +303,10 @@
|
||||||
"type": "binary_expression",
|
"type": "binary_expression",
|
||||||
"named": true
|
"named": true
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"type": "break_expression",
|
||||||
|
"named": true
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"type": "for_expression",
|
"type": "for_expression",
|
||||||
"named": true
|
"named": true
|
||||||
|
@ -367,6 +383,10 @@
|
||||||
"type": "binary_expression",
|
"type": "binary_expression",
|
||||||
"named": true
|
"named": true
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"type": "break_expression",
|
||||||
|
"named": true
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"type": "for_expression",
|
"type": "for_expression",
|
||||||
"named": true
|
"named": true
|
||||||
|
@ -447,6 +467,10 @@
|
||||||
"type": "binary_expression",
|
"type": "binary_expression",
|
||||||
"named": true
|
"named": true
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"type": "break_expression",
|
||||||
|
"named": true
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"type": "for_expression",
|
"type": "for_expression",
|
||||||
"named": true
|
"named": true
|
||||||
|
@ -523,6 +547,10 @@
|
||||||
"type": "binary_expression",
|
"type": "binary_expression",
|
||||||
"named": true
|
"named": true
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"type": "break_expression",
|
||||||
|
"named": true
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"type": "for_expression",
|
"type": "for_expression",
|
||||||
"named": true
|
"named": true
|
||||||
|
@ -593,6 +621,10 @@
|
||||||
"type": "binary_expression",
|
"type": "binary_expression",
|
||||||
"named": true
|
"named": true
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"type": "break_expression",
|
||||||
|
"named": true
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"type": "for_expression",
|
"type": "for_expression",
|
||||||
"named": true
|
"named": true
|
||||||
|
@ -673,6 +705,10 @@
|
||||||
"type": "binary_expression",
|
"type": "binary_expression",
|
||||||
"named": true
|
"named": true
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"type": "break_expression",
|
||||||
|
"named": true
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"type": "for_expression",
|
"type": "for_expression",
|
||||||
"named": true
|
"named": true
|
||||||
|
@ -753,6 +789,10 @@
|
||||||
"type": "binary_expression",
|
"type": "binary_expression",
|
||||||
"named": true
|
"named": true
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"type": "break_expression",
|
||||||
|
"named": true
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"type": "for_expression",
|
"type": "for_expression",
|
||||||
"named": true
|
"named": true
|
||||||
|
@ -839,6 +879,10 @@
|
||||||
"type": "binary_expression",
|
"type": "binary_expression",
|
||||||
"named": true
|
"named": true
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"type": "break_expression",
|
||||||
|
"named": true
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"type": "for_expression",
|
"type": "for_expression",
|
||||||
"named": true
|
"named": true
|
||||||
|
@ -909,6 +953,10 @@
|
||||||
"type": "binary_expression",
|
"type": "binary_expression",
|
||||||
"named": true
|
"named": true
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"type": "break_expression",
|
||||||
|
"named": true
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"type": "for_expression",
|
"type": "for_expression",
|
||||||
"named": true
|
"named": true
|
||||||
|
@ -979,6 +1027,10 @@
|
||||||
"type": "binary_expression",
|
"type": "binary_expression",
|
||||||
"named": true
|
"named": true
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"type": "break_expression",
|
||||||
|
"named": true
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"type": "for_expression",
|
"type": "for_expression",
|
||||||
"named": true
|
"named": true
|
||||||
|
@ -1065,6 +1117,10 @@
|
||||||
"type": "binary_expression",
|
"type": "binary_expression",
|
||||||
"named": true
|
"named": true
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"type": "break_expression",
|
||||||
|
"named": true
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"type": "for_expression",
|
"type": "for_expression",
|
||||||
"named": true
|
"named": true
|
||||||
|
@ -1185,6 +1241,10 @@
|
||||||
"type": "binary_expression",
|
"type": "binary_expression",
|
||||||
"named": true
|
"named": true
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"type": "break_expression",
|
||||||
|
"named": true
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"type": "for_expression",
|
"type": "for_expression",
|
||||||
"named": true
|
"named": true
|
||||||
|
@ -1260,6 +1320,10 @@
|
||||||
"type": "binary_expression",
|
"type": "binary_expression",
|
||||||
"named": true
|
"named": true
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"type": "break_expression",
|
||||||
|
"named": true
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"type": "for_expression",
|
"type": "for_expression",
|
||||||
"named": true
|
"named": true
|
||||||
|
@ -1350,6 +1414,10 @@
|
||||||
"type": "binary_expression",
|
"type": "binary_expression",
|
||||||
"named": true
|
"named": true
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"type": "break_expression",
|
||||||
|
"named": true
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"type": "for_expression",
|
"type": "for_expression",
|
||||||
"named": true
|
"named": true
|
||||||
|
@ -1436,6 +1504,10 @@
|
||||||
"type": "binary_expression",
|
"type": "binary_expression",
|
||||||
"named": true
|
"named": true
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"type": "break_expression",
|
||||||
|
"named": true
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"type": "for_expression",
|
"type": "for_expression",
|
||||||
"named": true
|
"named": true
|
||||||
|
@ -1506,6 +1578,10 @@
|
||||||
"type": "binary_expression",
|
"type": "binary_expression",
|
||||||
"named": true
|
"named": true
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"type": "break_expression",
|
||||||
|
"named": true
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"type": "for_expression",
|
"type": "for_expression",
|
||||||
"named": true
|
"named": true
|
||||||
|
@ -1598,6 +1674,10 @@
|
||||||
"type": "]",
|
"type": "]",
|
||||||
"named": false
|
"named": false
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"type": "break_expression",
|
||||||
|
"named": true
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"type": "do",
|
"type": "do",
|
||||||
"named": false
|
"named": false
|
||||||
|
|
2831
src/parser.c
2831
src/parser.c
File diff suppressed because it is too large
Load diff
|
@ -111,3 +111,31 @@ for 12 to nil
|
||||||
(identifier)
|
(identifier)
|
||||||
(identifier))
|
(identifier))
|
||||||
(nil_literal))
|
(nil_literal))
|
||||||
|
|
||||||
|
================================================================================
|
||||||
|
Break
|
||||||
|
================================================================================
|
||||||
|
|
||||||
|
break
|
||||||
|
|
||||||
|
--------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
(source_file
|
||||||
|
(break_expression))
|
||||||
|
|
||||||
|
================================================================================
|
||||||
|
Break in loops
|
||||||
|
================================================================================
|
||||||
|
|
||||||
|
for i := break to break do while break do break
|
||||||
|
|
||||||
|
--------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
(source_file
|
||||||
|
(for_expression
|
||||||
|
(identifier)
|
||||||
|
(break_expression)
|
||||||
|
(break_expression)
|
||||||
|
(while_expression
|
||||||
|
(break_expression)
|
||||||
|
(break_expression))))
|
||||||
|
|
Loading…
Reference in a new issue