{
 "name" : "context.cld",
 "patterns" : [
  {
   "include" : "#texstring"
  },
  {
   "include" : "#texcommand"
  },
  {
   "include" : "#keyword"
  },
  {
   "include" : "#buildin"
  },
  {
   "include" : "#constant"
  },
  {
   "include" : "#csname"
  },
  {
   "include" : "#goto"
  },
  {
   "include" : "#number_hex"
  },
  {
   "include" : "#number"
  },
  {
   "include" : "#identifier_keyword"
  },
  {
   "include" : "#identifier_valid"
  },
  {
   "include" : "#longcomment"
  },
  {
   "include" : "#string_long"
  },
  {
   "include" : "#string_double"
  },
  {
   "include" : "#string_single"
  },
  {
   "include" : "#shortcomment"
  },
  {
   "include" : "#label"
  },
  {
   "include" : "#operator"
  }
 ],
 "repository" : {
  "builtin" : {
   "match" : "(xpcall|utf8|unpack|type|tostring|tonumber|table|string|setmetatable|select|require|rawset|rawget|rawequal|print|pcall|pairs|package|os|next|module|math|lpeg|loadfile|load|ipairs|io|getmetatable|file|error|dofile|debug|coroutine|collectgarbage|bit32|assert)(?=[^a-zA-Z])",
   "name" : "context.plain.reserved.builtin.lua"
  },
  "constant" : {
   "match" : "(__unm|__tostring|__sub|__pow|__pairs|__newindex|__mul|__mode|__metatable|__lt|__len|__le|__ipairs|__index|__idiv|__gc|__eq|__div|__concat|__close|__call|__add|_VERSION|_M|_G|_ENV|\u005C.\u005C.\u005C.|NaN|<toclose>|<const>)(?=[^a-zA-Z])",
   "name" : "context.data.reserved.constants.lua"
  },
  "csname" : {
   "begin" : "(metapost|metafun|ctx[A-Za-z_]*|context|commands)(?=[^a-zA-Z])",
   "end" : "(?!(\u005Cs*[\u005C.\u005C:]*\u005Cs*[_\u005Cw][_\u005Cw0-9]*))",
   "name" : "context.user.csname.lua",
   "patterns" : [
    {
     "match" : "[\u005C.\u005C:]",
     "name" : "context.operator.csname.qualifier.lua"
    }
   ]
  },
  "goto" : {
   "captures" : {
    "1" : {
     "name" : "context.keyword.goto.keyword.lua"
    },
    "2" : {
     "name" : "context.grouping.goto.target.lua"
    }
   },
   "match" : "(goto)\u005Cs*([_\u005Cw][_\u005Cw0-9]*)"
  },
  "identifier_keyword" : {
   "captures" : {
    "1" : {
     "name" : "context.operator.identifier.keyword.lua"
    },
    "2" : {
     "name" : "context.warning.identifier.keyword.lua"
    }
   },
   "match" : "\u005Cs*([\u005C.\u005C:])\u005Cs*(while|until|true|then|return|repeat|or|not|nil|local|in|if|function|for|false|end|elseif|else|do|break|and)(?=[^a-zA-Z])"
  },
  "identifier_valid" : {
   "match" : "[_\u005Cw][_\u005Cw0-9]*",
   "name" : "context.default.identifier.valid.lua"
  },
  "keyword" : {
   "match" : "(while|until|true|then|return|repeat|or|not|nil|local|in|if|function|for|false|end|elseif|else|do|break|and)(?=[^a-zA-Z])",
   "name" : "context.keyword.reserved.keyword.lua"
  },
  "label" : {
   "captures" : {
    "1" : {
     "name" : "context.keyword.label.open.lua"
    },
    "2" : {
     "name" : "context.grouping.label.target.lua"
    },
    "3" : {
     "name" : "context.keyword.label.close.lua"
    }
   },
   "match" : "(::)([_\u005Cw][_\u005Cw0-9]*)(::)"
  },
  "longcomment" : {
   "begin" : "--\u005C[\u005C[",
   "end" : "\u005C]\u005C]",
   "name" : "context.comment.comment.long.lua"
  },
  "number" : {
   "match" : "[\u005C-]?[0-9]+(\u005C.[0-9]+)?([eEpP]\u005C-?[0-9]+)?",
   "name" : "context.number.decnumber.lua"
  },
  "number_hex" : {
   "match" : "[\u005C-]?0[xX][A-Fa-f0-9]+(\u005C.[A-Fa-f0-9]+)?([eEpP]\u005C-?[A-Fa-f0-9]+)?",
   "name" : "context.number.hexnumber.lua"
  },
  "operator" : {
   "match" : "\u005C~|}|\u005C||{|\u005C^|\u005C]|\u005C[|>|=|<|;|:|/|\u005C.|\u005C-|,|\u005C+|\u005C*|\u005C)|\u005C(|\u005C'|\u005C%|#",
   "name" : "context.special.operator.lua"
  },
  "shortcomment" : {
   "match" : "--.*$\u005Cn?",
   "name" : "context.comment.comment.short.lua"
  },
  "string_double" : {
   "captures" : {
    "1" : {
     "name" : "context.special.doublequoted.open.lua"
    },
    "2" : {
     "name" : "context.string.doublequoted.text.lua"
    },
    "3" : {
     "name" : "context.special.doublequoted.close.lua"
    }
   },
   "match" : "(\u0022)((?:\u005C\u005C\u0022|[^\u0022])*)(\u0022)"
  },
  "string_long" : {
   "begin" : "\u005C[(=*)\u005C[",
   "beginCaptures" : {
    "0" : {
     "name" : "context.special.string.long.open.lua"
    }
   },
   "end" : "\u005C](\u005C2)\u005C]",
   "endCaptures" : {
    "0" : {
     "name" : "context.special.string.long.close.lua"
    }
   },
   "name" : "context.string.long.text.lua"
  },
  "string_single" : {
   "captures" : {
    "1" : {
     "name" : "context.special.singlequoted.open.lua"
    },
    "2" : {
     "name" : "context.string.singlequoted.text.lua"
    },
    "3" : {
     "name" : "context.special.singlequoted.close.lua"
    }
   },
   "match" : "(')((?:\u005C\u005C'|[^'])*)(')"
  },
  "texcommand" : {
   "match" : "\u005C\u005C[A-Za-z-ÿ@\u005C!\u005C?_]*",
   "name" : "context.warning.texcommand.lua"
  },
  "texstring" : {
   "begin" : "\u005C\u005C!!bs",
   "beginCaptures" : {
    "0" : {
     "name" : "context.special.texstring.open.lua"
    }
   },
   "end" : "\u005C\u005C!!es",
   "endCaptures" : {
    "0" : {
     "name" : "context.special.texstring.close.lua"
    }
   },
   "name" : "context.string.texstring.text.lua"
  }
 },
 "scopeName" : "source.context.cld",
 "version" : "1.0.0"
}