unify catch fallback value sources
This commit is contained in:
@@ -33,6 +33,8 @@ module.exports = grammar({
|
||||
[$.array_type, $.expression],
|
||||
[$.array_type, $.array_literal],
|
||||
[$.expression_statement, $.parenthesized_expression],
|
||||
[$.assignment_statement, $.expression_statement],
|
||||
[$.labeled_block, $.expression],
|
||||
[$.block, $.tuple_literal, $.anonymous_record_literal],
|
||||
[$.field_initializer, $.expression],
|
||||
[$.capture_list, $.expression],
|
||||
@@ -310,8 +312,8 @@ module.exports = grammar({
|
||||
field('value', $._value),
|
||||
),
|
||||
|
||||
break_statement: $ => seq('break', optional(seq(':', field('label', $.identifier)))),
|
||||
continue_statement: $ => seq('continue', optional(seq(':', field('label', $.identifier)))),
|
||||
break_statement: $ => prec.right(seq('break', optional(seq(':', field('label', $.identifier))))),
|
||||
continue_statement: $ => prec.right(seq('continue', optional(seq(':', field('label', $.identifier))))),
|
||||
|
||||
defer_statement: $ => choice(
|
||||
seq('defer', repeat($._newline), field('body', $.statement)),
|
||||
@@ -468,7 +470,7 @@ module.exports = grammar({
|
||||
|
||||
binary_expression: $ => choice(
|
||||
prec.left(PREC.RANGE, seq(field('left', $.expression), field('operator', choice('..', '..=')), repeat($._newline), field('right', $.expression))),
|
||||
prec.left(PREC.FALLBACK, seq(field('left', $.expression), field('operator', choice('orelse', 'catch')), repeat($._newline), field('right', $.expression))),
|
||||
prec.left(PREC.FALLBACK, seq(field('left', $.expression), field('operator', 'orelse'), repeat($._newline), field('right', $.expression))),
|
||||
prec.left(PREC.OR, seq(field('left', $.expression), 'or', repeat($._newline), field('right', $.expression))),
|
||||
prec.left(PREC.AND, seq(field('left', $.expression), 'and', repeat($._newline), field('right', $.expression))),
|
||||
prec.left(PREC.COMPARE, seq(field('left', $.expression), field('operator', choice('==', '!=', '<', '<=', '>', '>=')), repeat($._newline), field('right', $.expression))),
|
||||
@@ -481,11 +483,16 @@ module.exports = grammar({
|
||||
catch_expression: $ => prec.left(PREC.FALLBACK, seq(
|
||||
field('value', $.expression),
|
||||
'catch',
|
||||
'|',
|
||||
field('name', choice($.identifier, $.sink)),
|
||||
'|',
|
||||
optional(field('capture', $.error_capture)),
|
||||
repeat($._newline),
|
||||
field('body', $.block),
|
||||
field('fallback', choice(
|
||||
$.block,
|
||||
$.if_statement,
|
||||
$.while_statement,
|
||||
$.for_statement,
|
||||
$.match_statement,
|
||||
$.expression,
|
||||
)),
|
||||
)),
|
||||
|
||||
unary_expression: $ => prec(PREC.PREFIX, seq(
|
||||
|
||||
Reference in New Issue
Block a user