{
"$schema": "https://tree-sitter.github.io/tree-sitter/assets/schemas/grammar.schema.json",
"name": "adl",
"word": "identifier",
"rules": {
"source_file": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "module_definition"
},
{
"type": "BLANK"
}
]
},
"scoped_name": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "."
},
{
"type": "SYMBOL",
"name": "identifier"
}
]
}
}
]
},
"definition_preamble": {
"type": "REPEAT1",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "annotation_decorator"
},
{
"type": "SYMBOL",
"name": "docstring"
}
]
}
},
"module_definition": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "definition_preamble"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "module"
},
{
"type": "SYMBOL",
"name": "scoped_name"
},
{
"type": "SYMBOL",
"name": "module_body"
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ";"
},
{
"type": "BLANK"
}
]
}
]
},
"module_body": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "{"
},
{
"type": "REPEAT",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "import_declaration"
},
{
"type": "SYMBOL",
"name": "annotation_declaration"
},
{
"type": "SYMBOL",
"name": "type_definition"
},
{
"type": "SYMBOL",
"name": "newtype_definition"
},
{
"type": "SYMBOL",
"name": "struct_definition"
},
{
"type": "SYMBOL",
"name": "union_definition"
}
]
}
},
{
"type": "STRING",
"value": "}"
}
]
},
"import_declaration": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "import"
},
{
"type": "SYMBOL",
"name": "import_path"
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ";"
},
{
"type": "BLANK"
}
]
}
]
},
"import_path": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "scoped_name"
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ".*"
},
{
"type": "BLANK"
}
]
}
]
},
"type_name": {
"type": "SYMBOL",
"name": "identifier"
},
"type_parameters": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "<"
},
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "identifier"
}
]
}
},
{
"type": "STRING",
"value": ">"
}
]
},
"type_expression": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "primitive_type"
},
{
"type": "SYMBOL",
"name": "scoped_name"
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "scoped_name"
},
{
"type": "SYMBOL",
"name": "type_arguments"
}
]
}
]
},
"type_arguments": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "<"
},
{
"type": "SYMBOL",
"name": "type_expression"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "type_expression"
}
]
}
},
{
"type": "STRING",
"value": ">"
}
]
},
"primitive_type": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "Int8"
},
{
"type": "STRING",
"value": "Int16"
},
{
"type": "STRING",
"value": "Int32"
},
{
"type": "STRING",
"value": "Int64"
},
{
"type": "STRING",
"value": "Word8"
},
{
"type": "STRING",
"value": "Word16"
},
{
"type": "STRING",
"value": "Word32"
},
{
"type": "STRING",
"value": "Word64"
},
{
"type": "STRING",
"value": "Bool"
},
{
"type": "STRING",
"value": "Void"
},
{
"type": "STRING",
"value": "Float"
},
{
"type": "STRING",
"value": "Double"
},
{
"type": "STRING",
"value": "String"
},
{
"type": "STRING",
"value": "Bytes"
},
{
"type": "STRING",
"value": "Json"
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "Vector"
},
{
"type": "SYMBOL",
"name": "type_arguments"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "StringMap"
},
{
"type": "SYMBOL",
"name": "type_arguments"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "Nullable"
},
{
"type": "SYMBOL",
"name": "type_arguments"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "TypeToken"
},
{
"type": "SYMBOL",
"name": "type_arguments"
}
]
}
]
},
"newtype_definition": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "definition_preamble"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "newtype"
},
{
"type": "SYMBOL",
"name": "type_name"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "type_parameters"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "="
},
{
"type": "SYMBOL",
"name": "type_expression"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "="
},
{
"type": "SYMBOL",
"name": "json_value"
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ";"
},
{
"type": "BLANK"
}
]
}
]
},
"type_definition": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "definition_preamble"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "type"
},
{
"type": "SYMBOL",
"name": "type_name"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "type_parameters"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "="
},
{
"type": "SYMBOL",
"name": "type_expression"
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ";"
},
{
"type": "BLANK"
}
]
}
]
},
"struct_definition": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "definition_preamble"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "struct"
},
{
"type": "SYMBOL",
"name": "type_name"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "type_parameters"
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "field_block"
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ";"
},
{
"type": "BLANK"
}
]
}
]
},
"union_definition": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "definition_preamble"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "union"
},
{
"type": "SYMBOL",
"name": "type_name"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "type_parameters"
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "field_block"
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ";"
},
{
"type": "BLANK"
}
]
}
]
},
"field_block": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "{"
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "field"
}
},
{
"type": "STRING",
"value": "}"
}
]
},
"field": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "definition_preamble"
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "type_expression"
},
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "="
},
{
"type": "SYMBOL",
"name": "json_value"
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ";"
},
{
"type": "BLANK"
}
]
}
]
},
"annotation_decorator": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "@"
},
{
"type": "SYMBOL",
"name": "scoped_name"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "json_value"
},
{
"type": "BLANK"
}
]
}
]
},
"annotation_declaration": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "annotation"
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "scoped_name"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "::"
},
{
"type": "SYMBOL",
"name": "field_reference"
}
]
}
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "scoped_name"
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "json_value"
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ";"
},
{
"type": "BLANK"
}
]
}
]
},
"field_reference": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "identifier"
}
]
},
"comment": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "//"
},
{
"type": "PATTERN",
"value": "[^\\n]*"
}
]
},
"docstring": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "///"
},
{
"type": "PATTERN",
"value": "[^\\n]*"
}
]
},
"json_value": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "null"
},
{
"type": "STRING",
"value": "true"
},
{
"type": "STRING",
"value": "false"
},
{
"type": "SYMBOL",
"name": "json_number"
},
{
"type": "SYMBOL",
"name": "json_string"
},
{
"type": "SYMBOL",
"name": "json_array"
},
{
"type": "SYMBOL",
"name": "json_object"
}
]
},
"json_number": {
"type": "PATTERN",
"value": "-?(?:0|[1-9]\\d*)(?:\\.\\d+)?(?:[eE][+-]?\\d+)?"
},
"json_string": {
"type": "TOKEN",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "\""
},
{
"type": "REPEAT",
"content": {
"type": "CHOICE",
"members": [
{
"type": "PATTERN",
"value": "[^\"\\\\]"
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "\\"
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "\""
},
{
"type": "STRING",
"value": "\\"
},
{
"type": "STRING",
"value": "/"
},
{
"type": "STRING",
"value": "b"
},
{
"type": "STRING",
"value": "f"
},
{
"type": "STRING",
"value": "n"
},
{
"type": "STRING",
"value": "r"
},
{
"type": "STRING",
"value": "t"
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "u"
},
{
"type": "PATTERN",
"value": "[0-9a-fA-F]{4}"
}
]
}
]
}
]
}
]
}
},
{
"type": "STRING",
"value": "\""
}
]
}
},
"json_array": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "["
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "json_value"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "json_value"
}
]
}
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "]"
}
]
},
"json_object": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "{"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "json_object_pair"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "json_object_pair"
}
]
}
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "}"
}
]
},
"json_object_pair": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "json_string"
},
{
"type": "STRING",
"value": ":"
},
{
"type": "SYMBOL",
"name": "json_value"
}
]
},
"identifier": {
"type": "PATTERN",
"value": "[a-zA-Z][a-zA-Z0-9_]*"
}
},
"extras": [
{
"type": "SYMBOL",
"name": "comment"
},
{
"type": "PATTERN",
"value": "\\s"
}
],
"conflicts": [],
"precedences": [],
"externals": [],
"inline": [],
"supertypes": [],
"reserved": {}
}