/*! `nim` grammar compiled for Highlight.js 11.10.0 */
  (function(){
    var hljsGrammar = (function () {
  'use strict';

  /*
  Language: Nim
  Description: Nim is a statically typed compiled systems programming language.
  Website: https://nim-lang.org
  Category: system
  */

  function nim(hljs) {
    const TYPES = [
      "int",
      "int8",
      "int16",
      "int32",
      "int64",
      "uint",
      "uint8",
      "uint16",
      "uint32",
      "uint64",
      "float",
      "float32",
      "float64",
      "bool",
      "char",
      "string",
      "cstring",
      "pointer",
      "expr",
      "stmt",
      "void",
      "auto",
      "any",
      "range",
      "array",
      "openarray",
      "varargs",
      "seq",
      "set",
      "clong",
      "culong",
      "cchar",
      "cschar",
      "cshort",
      "cint",
      "csize",
      "clonglong",
      "cfloat",
      "cdouble",
      "clongdouble",
      "cuchar",
      "cushort",
      "cuint",
      "culonglong",
      "cstringarray",
      "semistatic"
    ];
    const KEYWORDS = [
      "addr",
      "and",
      "as",
      "asm",
      "bind",
      "block",
      "break",
      "case",
      "cast",
      "const",
      "continue",
      "converter",
      "discard",
      "distinct",
      "div",
      "do",
      "elif",
      "else",
      "end",
      "enum",
      "except",
      "export",
      "finally",
      "for",
      "from",
      "func",
      "generic",
      "guarded",
      "if",
      "import",
      "in",
      "include",
      "interface",
      "is",
      "isnot",
      "iterator",
      "let",
      "macro",
      "method",
      "mixin",
      "mod",
      "nil",
      "not",
      "notin",
      "object",
      "of",
      "or",
      "out",
      "proc",
      "ptr",
      "raise",
      "ref",
      "return",
      "shared",
      "shl",
      "shr",
      "static",
      "template",
      "try",
      "tuple",
      "type",
      "using",
      "var",
      "when",
      "while",
      "with",
      "without",
      "xor",
      "yield"
    ];
    const BUILT_INS = [
      "stdin",
      "stdout",
      "stderr",
      "result"
    ];
    const LITERALS = [
      "true",
      "false"
    ];
    return {
      name: 'Nim',
      keywords: {
        keyword: KEYWORDS,
        literal: LITERALS,
        type: TYPES,
        built_in: BUILT_INS
      },
      contains: [
        {
          className: 'meta', // Actually pragma
          begin: /\{\./,
          end: /\.\}/,
          relevance: 10
        },
        {
          className: 'string',
          begin: /[a-zA-Z]\w*"/,
          end: /"/,
          contains: [ { begin: /""/ } ]
        },
        {
          className: 'string',
          begin: /([a-zA-Z]\w*)?"""/,
          end: /"""/
        },
        hljs.QUOTE_STRING_MODE,
        {
          className: 'type',
          begin: /\b[A-Z]\w+\b/,
          relevance: 0
        },
        {
          className: 'number',
          relevance: 0,
          variants: [
            { begin: /\b(0[xX][0-9a-fA-F][_0-9a-fA-F]*)('?[iIuU](8|16|32|64))?/ },
            { begin: /\b(0o[0-7][_0-7]*)('?[iIuUfF](8|16|32|64))?/ },
            { begin: /\b(0(b|B)[01][_01]*)('?[iIuUfF](8|16|32|64))?/ },
            { begin: /\b(\d[_\d]*)('?[iIuUfF](8|16|32|64))?/ }
          ]
        },
        hljs.HASH_COMMENT_MODE
      ]
    };
  }

  return nim;

})();

    hljs.registerLanguage('nim', hljsGrammar);
  })();