30 lines
1.4 KiB
JavaScript
30 lines
1.4 KiB
JavaScript
'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)))))
|
|
}
|