{
"$schema": "https://tree-sitter.github.io/tree-sitter/assets/schemas/grammar.schema.json",
"name": "sln",
"rules": {
"document": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "header"
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "project_block"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "global_block"
},
{
"type": "BLANK"
}
]
}
]
},
"header": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "Microsoft Visual Studio Solution File, Format Version"
},
{
"type": "FIELD",
"name": "version",
"content": {
"type": "SYMBOL",
"name": "version"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "# Visual Studio"
},
{
"type": "STRING",
"value": "# Visual Studio Version"
}
]
},
{
"type": "FIELD",
"name": "version",
"content": {
"type": "SYMBOL",
"name": "version"
}
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "property"
}
}
]
},
"property": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "STRING",
"value": "="
},
{
"type": "FIELD",
"name": "version",
"content": {
"type": "SYMBOL",
"name": "version"
}
}
]
},
"project_block": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "Project"
},
{
"type": "STRING",
"value": "("
},
{
"type": "FIELD",
"name": "guid",
"content": {
"type": "SYMBOL",
"name": "guid"
}
},
{
"type": "STRING",
"value": ")"
},
{
"type": "STRING",
"value": "="
},
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "string"
}
},
{
"type": "STRING",
"value": ","
},
{
"type": "FIELD",
"name": "path",
"content": {
"type": "SYMBOL",
"name": "string"
}
},
{
"type": "STRING",
"value": ","
},
{
"type": "FIELD",
"name": "guid",
"content": {
"type": "SYMBOL",
"name": "guid"
}
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "project_section"
}
},
{
"type": "STRING",
"value": "EndProject"
}
]
},
"project_section": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "ProjectSection"
},
{
"type": "STRING",
"value": "("
},
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "STRING",
"value": ")"
},
{
"type": "STRING",
"value": "="
},
{
"type": "FIELD",
"name": "type",
"content": {
"type": "SYMBOL",
"name": "section_type"
}
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "key_value_pair"
}
},
{
"type": "STRING",
"value": "EndProjectSection"
}
]
},
"global_block": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "Global"
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "global_section"
}
},
{
"type": "STRING",
"value": "EndGlobal"
}
]
},
"global_section": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "GlobalSection"
},
{
"type": "STRING",
"value": "("
},
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "STRING",
"value": ")"
},
{
"type": "STRING",
"value": "="
},
{
"type": "FIELD",
"name": "type",
"content": {
"type": "SYMBOL",
"name": "section_type"
}
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "key_value_pair"
}
},
{
"type": "STRING",
"value": "EndGlobalSection"
}
]
},
"key_value_pair": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "key",
"content": {
"type": "SYMBOL",
"name": "key"
}
},
{
"type": "STRING",
"value": "="
},
{
"type": "FIELD",
"name": "value",
"content": {
"type": "SYMBOL",
"name": "value"
}
}
]
},
"key": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "guid_key"
},
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "PREC",
"value": -1,
"content": {
"type": "SYMBOL",
"name": "config_key"
}
},
{
"type": "PREC",
"value": -2,
"content": {
"type": "SYMBOL",
"name": "guid"
}
},
{
"type": "PREC",
"value": -3,
"content": {
"type": "SYMBOL",
"name": "string"
}
}
]
},
"value": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "config_value"
},
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "PREC",
"value": -1,
"content": {
"type": "SYMBOL",
"name": "guid"
}
},
{
"type": "PREC",
"value": -2,
"content": {
"type": "SYMBOL",
"name": "string"
}
}
]
},
"guid_key": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "key",
"content": {
"type": "SYMBOL",
"name": "guid"
}
},
{
"type": "STRING",
"value": "."
},
{
"type": "FIELD",
"name": "mode",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "STRING",
"value": "|"
},
{
"type": "FIELD",
"name": "arch",
"content": {
"type": "SYMBOL",
"name": "arch_identifier"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "."
},
{
"type": "FIELD",
"name": "prop",
"content": {
"type": "SYMBOL",
"name": "string"
}
}
]
},
{
"type": "BLANK"
}
]
}
]
},
"config_key": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "mode",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "STRING",
"value": "|"
},
{
"type": "FIELD",
"name": "arch",
"content": {
"type": "SYMBOL",
"name": "arch_identifier"
}
}
]
},
"config_value": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "mode",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "STRING",
"value": "|"
},
{
"type": "FIELD",
"name": "arch",
"content": {
"type": "SYMBOL",
"name": "arch_identifier"
}
}
]
},
"section_type": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "preSolution"
},
{
"type": "STRING",
"value": "postSolution"
},
{
"type": "STRING",
"value": "preProject"
},
{
"type": "STRING",
"value": "postProject"
}
]
},
"version": {
"type": "PATTERN",
"value": "\\d+(?:\\.\\d+)*(?: +[a-zA-Z0-9.\\-]+)?"
},
"identifier": {
"type": "PATTERN",
"value": "[A-Z][a-zA-Z]*"
},
"string": {
"type": "CHOICE",
"members": [
{
"type": "PATTERN",
"value": "\"[^\"]*\""
},
{
"type": "PATTERN",
"value": "[a-zA-Z0-9._/\\\\$-]+"
}
]
},
"guid": {
"type": "PATTERN",
"value": "\"?\\{?[0-9A-Fa-f]{8}-(?:[0-9A-Fa-f]{4}-){3}[0-9A-Fa-f]{12}\\}?\"?"
},
"arch_identifier": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "Any CPU"
},
{
"type": "PATTERN",
"value": "[a-zA-Z0-9_\\\\-]+"
}
]
}
},
"extras": [
{
"type": "PATTERN",
"value": "\\s"
}
],
"conflicts": [],
"precedences": [],
"externals": [],
"inline": [],
"supertypes": [],
"reserved": {}
}