tree-sitter/test/fixtures/test_grammars/dynamic_precedence/grammar.js
2025-09-16 02:24:11 -04:00

32 lines
No EOL
663 B
JavaScript

export default grammar({
name: 'dynamic_precedence',
extras: $ => [/\s/],
conflicts: $ => [[$.expression, $.type]],
rules: {
program: $ => choice(
$.declaration,
$.expression,
),
expression: $ => choice(
prec.left(seq($.expression, '*', $.expression)),
$.identifier
),
declaration: $ => seq(
$.type,
$.declarator,
),
declarator: $ => choice(
prec.dynamic(1, seq('*', $.identifier)),
$.identifier,
),
type: $ => $.identifier,
identifier: $ => /[a-z-A-Z]+/
}
});