{
 "name" : "context.cpp",
 "patterns" : [
  {
   "include" : "#keyword"
  },
  {
   "include" : "#datatype"
  },
  {
   "include" : "#luatex"
  },
  {
   "include" : "#identifier"
  },
  {
   "include" : "#macro"
  },
  {
   "include" : "#string_double"
  },
  {
   "include" : "#string_single"
  },
  {
   "include" : "#texcomment"
  },
  {
   "include" : "#longcomment"
  },
  {
   "include" : "#shortcomment"
  },
  {
   "include" : "#hexnumber"
  },
  {
   "include" : "#decnumber"
  },
  {
   "include" : "#operator"
  }
 ],
 "repository" : {
  "datatype" : {
   "match" : "\u005Cb(void|unsigned|union|struct|signed|short|long|int|float|enum|double|char|bool)\u005Cb",
   "name" : "context.keyword.datatype.c"
  },
  "decnumber" : {
   "match" : "[\u005C-]?[0-9]+(\u005C.[0-9]+)?([eEpP]\u005C-?[0-9]+)?",
   "name" : "context.number.dec.c"
  },
  "hexnumber" : {
   "match" : "[\u005C-]?0[xX][A-Fa-f0-9]+(\u005C.[A-Fa-f0-9]+)?([eEpP]\u005C-?[A-Fa-f0-9]+)?",
   "name" : "context.number.hex.c"
  },
  "identifier" : {
   "match" : "[A-Za-z_][A-Za-z_0-9]*",
   "name" : "context.default.identifier.c"
  },
  "keyword" : {
   "match" : "\u005Cb(while|volatile|virtual|using|typename|typeid|typedef|try|true|throw|this|template|switch|static_cast|static_assert|static|slots|sizeof|signals|return|restrict|reinterpret_cast|register|public|protected|private|operator|new|namespace|mutable|inline|if|goto|friend|for|false|extern|export|explicit|else|dynamic_cast|do|delete|default|continue|const_cast|const|class|catch|case|break|auto|asm|_Pragma|_Imaginary|_Complex|_Bool)\u005Cb",
   "name" : "context.keyword.c.c"
  },
  "longcomment" : {
   "begin" : "/\u005C*",
   "end" : "\u005C*/",
   "name" : "context.comment.long.c"
  },
  "luatex" : {
   "match" : "\u005Cb(word|scaled|quarterword|pointer|halfword|glueratio)\u005Cb",
   "name" : "context.command.luatex.c"
  },
  "macro" : {
   "captures" : {
    "1" : {
     "name" : "context.data.macro.tag.c"
    },
    "2" : {
     "name" : "context.data.macro.name.c"
    }
   },
   "match" : "\u005Cs*(#)\u005Cs*\u005Cb(warning|using|undef|pragma|line|include|import|ifndef|ifdef|if|error|endif|else|elif|define)\u005Cb"
  },
  "operator" : {
   "match" : "\u005C~|}|\u005C||{|\u005C^|\u005C]|\u005C[|\u005C?|>|=|<|;|:|/|\u005C.|\u005C-|\u005C+|\u005C*|\u005C)|\u005C(|\u005C&|\u005C%|\u005C!",
   "name" : "context.operator.any.c"
  },
  "shortcomment" : {
   "match" : "//.*$\u005Cn?",
   "name" : "context.comment.short.c"
  },
  "string_double" : {
   "captures" : {
    "1" : {
     "name" : "context.special.doublequoted.open.c"
    },
    "2" : {
     "name" : "context.string.doublequoted.text.c"
    },
    "3" : {
     "name" : "context.special.doublequoted.close.c"
    }
   },
   "match" : "(\u0022)((?:\u005C\u005C\u0022|[^\u0022])*)(\u0022)"
  },
  "string_single" : {
   "captures" : {
    "1" : {
     "name" : "context.special.singlequoted.open.c"
    },
    "2" : {
     "name" : "context.string.singlequoted.text.c"
    },
    "3" : {
     "name" : "context.special.singlequoted.close.c"
    }
   },
   "match" : "(')((?:\u005C\u005C'|[^'])*)(')"
  },
  "texcomment" : {
   "begin" : "/\u005C*tex",
   "beginCaptures" : {
    "0" : {
     "name" : "context.comment.tex.open.c"
    }
   },
   "end" : "\u005C*/",
   "endCaptures" : {
    "0" : {
     "name" : "context.comment.tex.close.c"
    }
   },
   "patterns" : [
    {
     "include" : "source.context.tex"
    }
   ]
  }
 },
 "scopeName" : "source.context.cpp",
 "version" : "1.0.0"
}