input

_ templates _

templates

template template _ templates

template

key _ "{" _ statements _ "}"

statements

statement statement _ statements

statement

key _ basic_data_type _ ";" key _ "{" _ statements _ "}" _ ";" key _ "[" _ number _ "]" _ "{" _ statements _ "}" _ ";"

basic_data_type

basic_type basic_type _ "(" _ number _ ")" fixed_type_prefix _ "[" _ number _ "]"

fixed_type_prefix

"STR"

basic_type

"I8" "U8" "I16" "U16" "I32" "U32"

key

key_character_first key_character

key_character_first

/[_\-a-zA-Z]/

key_character

/[_\-a-zA-Z0-9/]/

number

digits digits "." digits "0" /[xX]/ hexs

hexs

hex hex hexs

hex

/[0-9a-fA-F]/

digits

digit digit digits

digit

/[0-9]/

_

/[ \t\r\n]/ _ "#" /[^\r\n]/ "\n" _ _ "#" /[^\r\n]/ "\r" _