{ "name": "GEDCOM", "scopeName": "source.gedcom", "patterns": [ { "include": "#line" } ], "repository": { "delim": { "patterns": [ { "name": "text.gedcom", "match": "(\\s)" } ] }, "level": { "patterns": [ { "name": "constant.numeric.gedcom", "match": "(^\\d*)" }, { "include": "#delim" } ] }, "line": { "patterns": [ { "include": "#level" }, { "include": "#xref" }, { "include": "#statement" } ] }, "line_name": { "patterns": [ { "name": "text.gedcom", "match": "([^/]*$)" }, { "include": "#line_name_composite" } ] }, "line_name_composite": { "patterns": [ { "contentName": "string.regexp.gedcom", "begin": "(/)", "end": "(/)", "beginCaptures": { "1": { "name": "string.regexp.gedcom" } }, "endCaptures": { "1": { "name": "string.regexp.gedcom" } } }, { "name": "string.unquoted.gedcom", "match": "(.)" } ] }, "noop": { "patterns": [ { "name": "text.gedcom", "match": "(.)" } ] }, "pointer": { "patterns": [ { "contentName": "storage.type.gedcom", "begin": "(@)", "end": "(@)", "beginCaptures": { "1": { "name": "storage.type.gedcom" } }, "endCaptures": { "1": { "name": "storage.type.gedcom" } } } ] }, "statement": { "patterns": [ { "include": "#tag_name" }, { "include": "#tag_pointers" }, { "include": "#tag_line" }, { "include": "#pointer" } ] }, "tag_line": { "patterns": [ { "begin": "([A-Z]*)", "end": "(^(?=.{0,1})(?:|))", "patterns": [ { "include": "#noop" } ], "beginCaptures": { "1": { "name": "keyword.control.gedcom" } }, "endCaptures": { "1": { "name": "text.gedcom" } } } ] }, "tag_name": { "patterns": [ { "begin": "(NAME)", "end": "(^(?=.{0,1})(?:|))", "patterns": [ { "include": "#line_name" } ], "beginCaptures": { "1": { "name": "keyword.control.gedcom" } }, "endCaptures": { "1": { "name": "text.gedcom" } } } ] }, "tag_pointers": { "patterns": [ { "begin": "(FAMS|FAMC|HUSB|WIFE|CHIL|SUBM|SUMN|REPO|ALIA|ANCI|DESI|ASSO|OBJE|NOTE|SOUR)", "end": "(^(?=.{0,1})(?:|))", "patterns": [ { "include": "#pointer" } ], "beginCaptures": { "1": { "name": "keyword.control.gedcom" } }, "endCaptures": { "1": { "name": "text.gedcom" } } } ] }, "xref": { "patterns": [ { "include": "#pointer" } ] } } }