31 lines · javascript
1'use strict';2 3module.exports = {4 func_dialect : $ => prec.right(choice(5 // operation ::= `func.call_indirect` $callee `(`6 // $callee_operands `)` attr-dict7 // `:` type($callee)8 // operation ::= `func.call` $callee `(` $operands `)`9 // attr-dict10 // `:` functional-type($operands, results)11 seq(choice('func.call', 'call', 'func.call_indirect',12 'call_indirect'),13 field('callee', $.symbol_ref_id),14 field('operands', $._value_use_list_parens),15 field('attributes', optional($.attribute)),16 field('return', $._function_type_annotation)),17 18 // operation ::= `func.constant` attr-dict $value `:`19 // type(results)20 seq(choice('func.constant', 'constant'),21 field('attributes', optional($.attribute)),22 field('value', $.symbol_ref_id),23 field('return', $._function_type_annotation)),24 25 seq('func.func', $._op_func),26 27 seq(choice('func.return', 'return'),28 field('attributes', optional($.attribute)),29 field('results', optional($._value_use_type_list)))))30}31