123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185 |
- /*
- 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
- ]
- };
- }
- export { nim as default };
|