mirror of
https://github.com/JellyApple102/tree-sitter-dfraw.git
synced 2024-11-22 14:09:20 +02:00
46 lines
645 B
JavaScript
46 lines
645 B
JavaScript
|
module.exports = grammar({
|
||
|
name: 'dfraw',
|
||
|
|
||
|
rules: {
|
||
|
source_file: $ => repeat($._statement),
|
||
|
|
||
|
_statement: $ => choice(
|
||
|
$.bracket_statement,
|
||
|
$.comment
|
||
|
),
|
||
|
|
||
|
bracket_statement: $ => seq(
|
||
|
'[',
|
||
|
$.parameter_list,
|
||
|
']'
|
||
|
),
|
||
|
|
||
|
parameter_list: $ => seq(
|
||
|
$.declaration,
|
||
|
optional($.separator),
|
||
|
repeat(seq(
|
||
|
$._parameter,
|
||
|
optional($.separator)
|
||
|
))
|
||
|
),
|
||
|
|
||
|
_parameter: $ => choice(
|
||
|
$.number,
|
||
|
$.large,
|
||
|
$.string,
|
||
|
),
|
||
|
|
||
|
declaration: $ => /[A-Z_\d]+/,
|
||
|
|
||
|
number: $ => token(prec(1, /\d+/)),
|
||
|
|
||
|
large: $ => /[A-Z_\d]+/,
|
||
|
|
||
|
string: $ => /[A-Za-z ]+/,
|
||
|
|
||
|
separator: $ => /:/,
|
||
|
|
||
|
comment: $ => /[^\[\]\s]+/
|
||
|
}
|
||
|
});
|