{
  "information_for_contributors": [
    "This file has been converted from https://github.com/jlelong/vscode-latex-basics/blob/master/syntaxes/Bibtex.tmLanguage.json",
    "If you want to provide a fix or improvement, please create a pull request against the original repository.",
    "Once accepted there, we are happy to receive an update request."
  ],
  "version": "https://github.com/jlelong/vscode-latex-basics/commit/7adad0868ecafbb1df978f1e052d6c3c85c38732",
  "name": "bibtex",
  "scopeName": "text.bibtex",
  "comment": "Grammar based on description from http://artis.imag.fr/~Xavier.Decoret/resources/xdkbibtex/bibtex_summary.html#comment\n\t\n\tTODO: Does not support @preamble\n\t",
  "patterns": [
    {
      "begin": "@Comment",
      "beginCaptures": {
        "0": {
          "name": "punctuation.definition.comment.bibtex"
        }
      },
      "end": "$\\n?",
      "name": "comment.line.at-sign.bibtex"
    },
    {
      "patterns": [
        {
          "include": "#percentage_comment"
        }
      ]
    },
    {
      "begin": "((@)(?i:string))\\s*(\\{)\\s*([a-zA-Z0-9\\!\\$\\&\\*\\+\\-\\.\\/\\:\\;\\<\\>\\?\\[\\]\\^\\_\\`\\|]+)",
      "beginCaptures": {
        "1": {
          "name": "keyword.other.string-constant.bibtex"
        },
        "2": {
          "name": "punctuation.definition.keyword.bibtex"
        },
        "3": {
          "name": "punctuation.section.string-constant.begin.bibtex"
        },
        "4": {
          "name": "variable.other.bibtex"
        }
      },
      "end": "\\}",
      "endCaptures": {
        "0": {
          "name": "punctuation.section.string-constant.end.bibtex"
        }
      },
      "name": "meta.string-constant.braces.bibtex",
      "patterns": [
        {
          "include": "#string_content"
        }
      ]
    },
    {
      "begin": "((@)(?i:string))\\s*(\\()\\s*([a-zA-Z0-9\\!\\$\\&\\*\\+\\-\\.\\/\\:\\;\\<\\>\\?\\[\\]\\^\\_\\`\\|]+)",
      "beginCaptures": {
        "1": {
          "name": "keyword.other.string-constant.bibtex"
        },
        "2": {
          "name": "punctuation.definition.keyword.bibtex"
        },
        "3": {
          "name": "punctuation.section.string-constant.begin.bibtex"
        },
        "4": {
          "name": "variable.other.bibtex"
        }
      },
      "end": "\\)",
      "endCaptures": {
        "0": {
          "name": "punctuation.section.string-constant.end.bibtex"
        }
      },
      "name": "meta.string-constant.parenthesis.bibtex",
      "patterns": [
        {
          "include": "#string_content"
        }
      ]
    },
    {
      "begin": "((@)[a-zA-Z]+)\\s*(\\{)\\s*([^\\s,]*)",
      "beginCaptures": {
        "1": {
          "name": "keyword.other.entry-type.bibtex"
        },
        "2": {
          "name": "punctuation.definition.keyword.bibtex"
        },
        "3": {
          "name": "punctuation.section.entry.begin.bibtex"
        },
        "4": {
          "name": "entity.name.type.entry-key.bibtex"
        }
      },
      "end": "\\}",
      "endCaptures": {
        "0": {
          "name": "punctuation.section.entry.end.bibtex"
        }
      },
      "name": "meta.entry.braces.bibtex",
      "patterns": [
        {
          "include": "#percentage_comment"
        },
        {
          "include": "#url_field"
        },
        {
          "begin": "([a-zA-Z0-9\\!\\$\\&\\*\\+\\-\\.\\/\\:\\;\\<\\>\\?\\[\\]\\^\\_\\`\\|]+)\\s*(\\=)",
          "beginCaptures": {
            "1": {
              "name": "support.function.key.bibtex"
            },
            "2": {
              "name": "punctuation.separator.key-value.bibtex"
            }
          },
          "end": "(?=[,}])",
          "name": "meta.key-assignment.bibtex",
          "patterns": [
            {
              "include": "#percentage_comment"
            },
            {
              "include": "#integer"
            },
            {
              "include": "#string_content"
            },
            {
              "include": "#string_var"
            }
          ]
        }
      ]
    },
    {
      "begin": "((@)[a-zA-Z]+)\\s*(\\()\\s*([^\\s,]*)",
      "beginCaptures": {
        "1": {
          "name": "keyword.other.entry-type.bibtex"
        },
        "2": {
          "name": "punctuation.definition.keyword.bibtex"
        },
        "3": {
          "name": "punctuation.section.entry.begin.bibtex"
        },
        "4": {
          "name": "entity.name.type.entry-key.bibtex"
        }
      },
      "end": "\\)",
      "endCaptures": {
        "0": {
          "name": "punctuation.section.entry.end.bibtex"
        }
      },
      "name": "meta.entry.parenthesis.bibtex",
      "patterns": [
        {
          "include": "#percentage_comment"
        },
        {
          "include": "#url_field"
        },
        {
          "begin": "([a-zA-Z0-9\\!\\$\\&\\*\\+\\-\\.\\/\\:\\;\\<\\>\\?\\[\\]\\^\\_\\`\\|]+)\\s*(\\=)",
          "beginCaptures": {
            "1": {
              "name": "support.function.key.bibtex"
            },
            "2": {
              "name": "punctuation.separator.key-value.bibtex"
            }
          },
          "end": "(?=[,)])",
          "name": "meta.key-assignment.bibtex",
          "patterns": [
            {
              "include": "#percentage_comment"
            },
            {
              "include": "#integer"
            },
            {
              "include": "#string_content"
            },
            {
              "include": "#string_var"
            }
          ]
        }
      ]
    },
    {
      "begin": "[^@\\n]",
      "end": "(?=@)",
      "name": "comment.block.bibtex"
    }
  ],
  "repository": {
    "integer": {
      "match": "\\s*(\\d+)\\s*",
      "captures": {
        "1": {
          "name": "constant.numeric.bibtex"
        }
      }
    },
    "nested_braces": {
      "begin": "(?<!\\\\)\\{",
      "beginCaptures": {
        "0": {
          "name": "punctuation.definition.group.begin.bibtex"
        }
      },
      "end": "(?<!\\\\)\\}",
      "endCaptures": {
        "0": {
          "name": "punctuation.definition.group.end.bibtex"
        }
      },
      "patterns": [
        {
          "include": "#nested_braces"
        }
      ]
    },
    "string_var": {
      "match": "(#)?\\s*([a-zA-Z0-9\\!\\$\\&\\*\\+\\-\\.\\/\\:\\;\\<\\>\\?\\[\\]\\^\\_\\`\\|]+)\\s*(#)?",
      "captures": {
        "1": {
          "name": "keyword.operator.bibtex"
        },
        "2": {
          "name": "support.variable.bibtex"
        },
        "3": {
          "name": "keyword.operator.bibtex"
        }
      }
    },
    "string_content": {
      "patterns": [
        {
          "begin": "\\{",
          "beginCaptures": {
            "0": {
              "name": "punctuation.definition.string.begin.bibtex"
            }
          },
          "end": "(\\})(?=(?:,?\\s*\\}?\\s*\\n)|(?:\\s*#))",
          "endCaptures": {
            "1": {
              "name": "punctuation.definition.string.end.bibtex"
            }
          },
          "patterns": [
            {
              "include": "#url_cmd"
            },
            {
              "include": "#percentage_comment"
            },
            {
              "match": "@",
              "name": "invalid.illegal.at-sign.bibtex"
            },
            {
              "include": "#nested_braces"
            }
          ]
        },
        {
          "begin": "\"",
          "beginCaptures": {
            "0": {
              "name": "punctuation.definition.string.begin.bibtex"
            }
          },
          "end": "\"(?=(?:,?\\s*\\}?\\s*\\n)|(?:\\s*#))",
          "endCaptures": {
            "0": {
              "name": "punctuation.definition.string.end.bibtex"
            }
          },
          "patterns": [
            {
              "include": "#url_cmd"
            },
            {
              "include": "#percentage_comment"
            },
            {
              "match": "@",
              "name": "invalid.illegal.at-sign.bibtex"
            }
          ]
        }
      ]
    },
    "string_url": {
      "patterns": [
        {
          "begin": "\\{|\"",
          "beginCaptures": {
            "0": {
              "name": "punctuation.definition.string.begin.bibtex"
            }
          },
          "end": "(\\}|\")(?=(?:,?\\s*\\}?\\s*\\n)|(?:\\s*#))",
          "endCaptures": {
            "1": {
              "name": "punctuation.definition.string.end.bibtex"
            }
          },
          "contentName": "meta.url.bibtex",
          "patterns": [
            {
              "include": "#url_cmd"
            }
          ]
        }
      ]
    },
    "percentage_comment": {
      "patterns": [
        {
          "begin": "(^[ \\t]+)?(?=%)",
          "beginCaptures": {
            "1": {
              "name": "punctuation.whitespace.comment.leading.bibtex"
            }
          },
          "end": "(?!\\G)",
          "patterns": [
            {
              "begin": "(?<!\\\\)%",
              "beginCaptures": {
                "0": {
                  "name": "punctuation.definition.comment.bibtex"
                }
              },
              "end": "$\\n?",
              "name": "comment.line.percentage.bibtex"
            }
          ]
        }
      ]
    },
    "url_cmd": {
      "captures": {
        "1": {
          "name": "support.function.url.bibtex"
        },
        "2": {
          "name": "punctuation.definition.function.bibtex"
        },
        "3": {
          "name": "punctuation.definition.arguments.begin.bibtex"
        },
        "4": {
          "name": "markup.underline.link.bibtex"
        },
        "5": {
          "name": "punctuation.definition.arguments.end.bibtex"
        }
      },
      "match": "(?:\\s*)((\\\\)(?:url|href))(\\{)([^}]*)(\\})",
      "name": "meta.function.link.url.bibtex"
    },
    "url_field": {
      "begin": "(url)\\s*(\\=)",
      "beginCaptures": {
        "1": {
          "name": "support.function.key.bibtex"
        },
        "2": {
          "name": "punctuation.separator.key-value.bibtex"
        }
      },
      "end": "(?=[,}])",
      "name": "meta.key-assignment.url.bibtex",
      "patterns": [
        {
          "include": "#string_url"
        }
      ]
    }
  }
}
