mirror of
https://codeberg.org/ProgramSnail/tree-sitter-lang.git
synced 2025-12-06 14:48:48 +00:00
result / optional return type modifiers for functions (one for all returns)
This commit is contained in:
parent
9c44228eec
commit
24015fd8df
2 changed files with 43 additions and 7 deletions
|
|
@ -219,8 +219,12 @@ parse_number : Unit! = {
|
||||||
bring ();
|
bring ();
|
||||||
}
|
}
|
||||||
|
|
||||||
: example of or_in and or_out usage for template operators
|
: example of or_in and or_out usage for template operators (tuple input and tuple output)
|
||||||
( & ) |-> 'a |-> 'b <-| 'x <-| 'y = (|-> 'a := <-| 'x) && (|-> 'b := <-| 'y);
|
( & ) |-> 'a |-> 'b <-| 'x <-| 'y = ('a := 'x) && ('b := 'y);
|
||||||
|
|
||||||
|
: function, that return result ('!' not used on calls)
|
||||||
|
: useful when tuples returned
|
||||||
|
result_func! 'a 'b -> 'c -> 'd = ?? 'a == 0 => error "some error" !!=> 'c := 'a, 'd := 'b, ()
|
||||||
|
|
||||||
--------------------------------------------------------------------------------
|
--------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
@ -1194,15 +1198,46 @@ parse_number : Unit! = {
|
||||||
(argument_name_identifier)
|
(argument_name_identifier)
|
||||||
(operator_expression
|
(operator_expression
|
||||||
(match
|
(match
|
||||||
(reference_expression
|
(name_expression
|
||||||
(argument_name_identifier))
|
(argument_name_identifier))
|
||||||
(case
|
(case
|
||||||
(reference_expression
|
(name_expression
|
||||||
(argument_name_identifier))))
|
(argument_name_identifier))))
|
||||||
(operator)
|
(operator)
|
||||||
(match
|
(match
|
||||||
(reference_expression
|
(name_expression
|
||||||
(argument_name_identifier))
|
(argument_name_identifier))
|
||||||
(case
|
(case
|
||||||
(reference_expression
|
(name_expression
|
||||||
(argument_name_identifier)))))))
|
(argument_name_identifier))))))
|
||||||
|
(empty_lines)
|
||||||
|
(ERROR
|
||||||
|
(definition_info
|
||||||
|
(info)
|
||||||
|
(info))
|
||||||
|
(simple_name_identifier)
|
||||||
|
(argument_name_identifier)
|
||||||
|
(argument_name_identifier)
|
||||||
|
(argument_name_identifier)
|
||||||
|
(argument_name_identifier)
|
||||||
|
(comma_expression
|
||||||
|
(condition
|
||||||
|
(operator_expression
|
||||||
|
(name_expression
|
||||||
|
(argument_name_identifier))
|
||||||
|
(operator)
|
||||||
|
(number_literal))
|
||||||
|
(name_expression
|
||||||
|
(simple_name_identifier)
|
||||||
|
(string_literal))
|
||||||
|
(name_expression
|
||||||
|
(argument_name_identifier)))
|
||||||
|
(ERROR
|
||||||
|
(argument_name_identifier))
|
||||||
|
(match
|
||||||
|
(name_expression
|
||||||
|
(argument_name_identifier))
|
||||||
|
(case
|
||||||
|
(name_expression
|
||||||
|
(argument_name_identifier)))))
|
||||||
|
(unit_literal)))
|
||||||
|
|
|
||||||
|
|
@ -56,6 +56,7 @@ module.exports = grammar({
|
||||||
repeat(seq($.constraint, ';')),
|
repeat(seq($.constraint, ';')),
|
||||||
optional($._var_let),
|
optional($._var_let),
|
||||||
choice(field('name', $.simple_name_identifier), seq('(', field('name', $.operator), ')')),
|
choice(field('name', $.simple_name_identifier), seq('(', field('name', $.operator), ')')),
|
||||||
|
optional($._optional_result),
|
||||||
repeat(seq(
|
repeat(seq(
|
||||||
optional($.annotation_identifier),
|
optional($.annotation_identifier),
|
||||||
optional($._reference),
|
optional($._reference),
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue