'use strict'; module.exports = { func_dialect : $ => prec.right(choice( // operation ::= `func.call_indirect` $callee `(` // $callee_operands `)` attr-dict // `:` type($callee) // operation ::= `func.call` $callee `(` $operands `)` // attr-dict // `:` functional-type($operands, results) seq(choice('func.call', 'call', 'func.call_indirect', 'call_indirect'), field('callee', $.symbol_ref_id), field('operands', $._value_use_list_parens), field('attributes', optional($.attribute)), field('return', $._function_type_annotation)), // operation ::= `func.constant` attr-dict $value `:` // type(results) seq(choice('func.constant', 'constant'), field('attributes', optional($.attribute)), field('value', $.symbol_ref_id), field('return', $._function_type_annotation)), seq('func.func', $._op_func), seq(choice('func.return', 'return'), field('attributes', optional($.attribute)), field('results', optional($._value_use_type_list))))) }