763 lines
17 KiB
JavaScript
763 lines
17 KiB
JavaScript
|
/*---------------------------------------------------------------------------------------------
|
||
|
* Copyright (c) Microsoft Corporation. All rights reserved.
|
||
|
* Licensed under the MIT License. See License.txt in the project root for license information.
|
||
|
*--------------------------------------------------------------------------------------------*/
|
||
|
'use strict';
|
||
|
export var conf = {
|
||
|
comments: {
|
||
|
lineComment: ';;',
|
||
|
},
|
||
|
brackets: [
|
||
|
['[', ']'],
|
||
|
['(', ')'],
|
||
|
['{', '}']
|
||
|
],
|
||
|
autoClosingPairs: [
|
||
|
{ open: '[', close: ']' },
|
||
|
{ open: '"', close: '"' },
|
||
|
{ open: '(', close: ')' },
|
||
|
{ open: '{', close: '}' },
|
||
|
],
|
||
|
surroundingPairs: [
|
||
|
{ open: '[', close: ']' },
|
||
|
{ open: '"', close: '"' },
|
||
|
{ open: '(', close: ')' },
|
||
|
{ open: '{', close: '}' },
|
||
|
],
|
||
|
};
|
||
|
export var language = {
|
||
|
defaultToken: '',
|
||
|
ignoreCase: true,
|
||
|
tokenPostfix: '.clj',
|
||
|
brackets: [
|
||
|
{ open: '[', close: ']', token: 'delimiter.square' },
|
||
|
{ open: '(', close: ')', token: 'delimiter.parenthesis' },
|
||
|
{ open: '{', close: '}', token: 'delimiter.curly' },
|
||
|
],
|
||
|
constants: ['true', 'false', 'nil'],
|
||
|
// delimiters: /[\\\[\]\s"#'(),;@^`{}~]|$/,
|
||
|
numbers: /^(?:[+\-]?\d+(?:(?:N|(?:[eE][+\-]?\d+))|(?:\.?\d*(?:M|(?:[eE][+\-]?\d+))?)|\/\d+|[xX][0-9a-fA-F]+|r[0-9a-zA-Z]+)?(?=[\\\[\]\s"#'(),;@^`{}~]|$))/,
|
||
|
characters: /^(?:\\(?:backspace|formfeed|newline|return|space|tab|o[0-7]{3}|u[0-9A-Fa-f]{4}|x[0-9A-Fa-f]{4}|.)?(?=[\\\[\]\s"(),;@^`{}~]|$))/,
|
||
|
escapes: /^\\(?:["'\\bfnrt]|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,
|
||
|
// simple-namespace := /^[^\\\/\[\]\d\s"#'(),;@^`{}~][^\\\[\]\s"(),;@^`{}~]*/
|
||
|
// simple-symbol := /^(?:\/|[^\\\/\[\]\d\s"#'(),;@^`{}~][^\\\[\]\s"(),;@^`{}~]*)/
|
||
|
// qualified-symbol := (<simple-namespace>(<.><simple-namespace>)*</>)?<simple-symbol>
|
||
|
qualifiedSymbols: /^(?:(?:[^\\\/\[\]\d\s"#'(),;@^`{}~][^\\\[\]\s"(),;@^`{}~]*(?:\.[^\\\/\[\]\d\s"#'(),;@^`{}~][^\\\[\]\s"(),;@^`{}~]*)*\/)?(?:\/|[^\\\/\[\]\d\s"#'(),;@^`{}~][^\\\[\]\s"(),;@^`{}~]*)*(?=[\\\[\]\s"(),;@^`{}~]|$))/,
|
||
|
specialForms: [
|
||
|
'.',
|
||
|
'catch',
|
||
|
'def',
|
||
|
'do',
|
||
|
'if',
|
||
|
'monitor-enter',
|
||
|
'monitor-exit',
|
||
|
'new',
|
||
|
'quote',
|
||
|
'recur',
|
||
|
'set!',
|
||
|
'throw',
|
||
|
'try',
|
||
|
'var',
|
||
|
],
|
||
|
coreSymbols: [
|
||
|
'*',
|
||
|
'*\'',
|
||
|
'*1',
|
||
|
'*2',
|
||
|
'*3',
|
||
|
'*agent*',
|
||
|
'*allow-unresolved-vars*',
|
||
|
'*assert*',
|
||
|
'*clojure-version*',
|
||
|
'*command-line-args*',
|
||
|
'*compile-files*',
|
||
|
'*compile-path*',
|
||
|
'*compiler-options*',
|
||
|
'*data-readers*',
|
||
|
'*default-data-reader-fn*',
|
||
|
'*e',
|
||
|
'*err*',
|
||
|
'*file*',
|
||
|
'*flush-on-newline*',
|
||
|
'*fn-loader*',
|
||
|
'*in*',
|
||
|
'*math-context*',
|
||
|
'*ns*',
|
||
|
'*out*',
|
||
|
'*print-dup*',
|
||
|
'*print-length*',
|
||
|
'*print-level*',
|
||
|
'*print-meta*',
|
||
|
'*print-namespace-maps*',
|
||
|
'*print-readably*',
|
||
|
'*read-eval*',
|
||
|
'*reader-resolver*',
|
||
|
'*source-path*',
|
||
|
'*suppress-read*',
|
||
|
'*unchecked-math*',
|
||
|
'*use-context-classloader*',
|
||
|
'*verbose-defrecords*',
|
||
|
'*warn-on-reflection*',
|
||
|
'+',
|
||
|
'+\'',
|
||
|
'-',
|
||
|
'-\'',
|
||
|
'->',
|
||
|
'->>',
|
||
|
'->ArrayChunk',
|
||
|
'->Eduction',
|
||
|
'->Vec',
|
||
|
'->VecNode',
|
||
|
'->VecSeq',
|
||
|
'-cache-protocol-fn',
|
||
|
'-reset-methods',
|
||
|
'..',
|
||
|
'/',
|
||
|
'<',
|
||
|
'<=',
|
||
|
'=',
|
||
|
'==',
|
||
|
'>',
|
||
|
'>=',
|
||
|
'EMPTY-NODE',
|
||
|
'Inst',
|
||
|
'StackTraceElement->vec',
|
||
|
'Throwable->map',
|
||
|
'accessor',
|
||
|
'aclone',
|
||
|
'add-classpath',
|
||
|
'add-watch',
|
||
|
'agent',
|
||
|
'agent-error',
|
||
|
'agent-errors',
|
||
|
'aget',
|
||
|
'alength',
|
||
|
'alias',
|
||
|
'all-ns',
|
||
|
'alter',
|
||
|
'alter-meta!',
|
||
|
'alter-var-root',
|
||
|
'amap',
|
||
|
'ancestors',
|
||
|
'and',
|
||
|
'any?',
|
||
|
'apply',
|
||
|
'areduce',
|
||
|
'array-map',
|
||
|
'as->',
|
||
|
'aset',
|
||
|
'aset-boolean',
|
||
|
'aset-byte',
|
||
|
'aset-char',
|
||
|
'aset-double',
|
||
|
'aset-float',
|
||
|
'aset-int',
|
||
|
'aset-long',
|
||
|
'aset-short',
|
||
|
'assert',
|
||
|
'assoc',
|
||
|
'assoc!',
|
||
|
'assoc-in',
|
||
|
'associative?',
|
||
|
'atom',
|
||
|
'await',
|
||
|
'await-for',
|
||
|
'await1',
|
||
|
'bases',
|
||
|
'bean',
|
||
|
'bigdec',
|
||
|
'bigint',
|
||
|
'biginteger',
|
||
|
'binding',
|
||
|
'bit-and',
|
||
|
'bit-and-not',
|
||
|
'bit-clear',
|
||
|
'bit-flip',
|
||
|
'bit-not',
|
||
|
'bit-or',
|
||
|
'bit-set',
|
||
|
'bit-shift-left',
|
||
|
'bit-shift-right',
|
||
|
'bit-test',
|
||
|
'bit-xor',
|
||
|
'boolean',
|
||
|
'boolean-array',
|
||
|
'boolean?',
|
||
|
'booleans',
|
||
|
'bound-fn',
|
||
|
'bound-fn*',
|
||
|
'bound?',
|
||
|
'bounded-count',
|
||
|
'butlast',
|
||
|
'byte',
|
||
|
'byte-array',
|
||
|
'bytes',
|
||
|
'bytes?',
|
||
|
'case',
|
||
|
'cast',
|
||
|
'cat',
|
||
|
'char',
|
||
|
'char-array',
|
||
|
'char-escape-string',
|
||
|
'char-name-string',
|
||
|
'char?',
|
||
|
'chars',
|
||
|
'chunk',
|
||
|
'chunk-append',
|
||
|
'chunk-buffer',
|
||
|
'chunk-cons',
|
||
|
'chunk-first',
|
||
|
'chunk-next',
|
||
|
'chunk-rest',
|
||
|
'chunked-seq?',
|
||
|
'class',
|
||
|
'class?',
|
||
|
'clear-agent-errors',
|
||
|
'clojure-version',
|
||
|
'coll?',
|
||
|
'comment',
|
||
|
'commute',
|
||
|
'comp',
|
||
|
'comparator',
|
||
|
'compare',
|
||
|
'compare-and-set!',
|
||
|
'compile',
|
||
|
'complement',
|
||
|
'completing',
|
||
|
'concat',
|
||
|
'cond',
|
||
|
'cond->',
|
||
|
'cond->>',
|
||
|
'condp',
|
||
|
'conj',
|
||
|
'conj!',
|
||
|
'cons',
|
||
|
'constantly',
|
||
|
'construct-proxy',
|
||
|
'contains?',
|
||
|
'count',
|
||
|
'counted?',
|
||
|
'create-ns',
|
||
|
'create-struct',
|
||
|
'cycle',
|
||
|
'dec',
|
||
|
'dec\'',
|
||
|
'decimal?',
|
||
|
'declare',
|
||
|
'dedupe',
|
||
|
'default-data-readers',
|
||
|
'definline',
|
||
|
'definterface',
|
||
|
'defmacro',
|
||
|
'defmethod',
|
||
|
'defmulti',
|
||
|
'defn',
|
||
|
'defn-',
|
||
|
'defonce',
|
||
|
'defprotocol',
|
||
|
'defrecord',
|
||
|
'defstruct',
|
||
|
'deftype',
|
||
|
'delay',
|
||
|
'delay?',
|
||
|
'deliver',
|
||
|
'denominator',
|
||
|
'deref',
|
||
|
'derive',
|
||
|
'descendants',
|
||
|
'destructure',
|
||
|
'disj',
|
||
|
'disj!',
|
||
|
'dissoc',
|
||
|
'dissoc!',
|
||
|
'distinct',
|
||
|
'distinct?',
|
||
|
'doall',
|
||
|
'dorun',
|
||
|
'doseq',
|
||
|
'dosync',
|
||
|
'dotimes',
|
||
|
'doto',
|
||
|
'double',
|
||
|
'double-array',
|
||
|
'double?',
|
||
|
'doubles',
|
||
|
'drop',
|
||
|
'drop-last',
|
||
|
'drop-while',
|
||
|
'eduction',
|
||
|
'empty',
|
||
|
'empty?',
|
||
|
'ensure',
|
||
|
'ensure-reduced',
|
||
|
'enumeration-seq',
|
||
|
'error-handler',
|
||
|
'error-mode',
|
||
|
'eval',
|
||
|
'even?',
|
||
|
'every-pred',
|
||
|
'every?',
|
||
|
'ex-data',
|
||
|
'ex-info',
|
||
|
'extend',
|
||
|
'extend-protocol',
|
||
|
'extend-type',
|
||
|
'extenders',
|
||
|
'extends?',
|
||
|
'false?',
|
||
|
'ffirst',
|
||
|
'file-seq',
|
||
|
'filter',
|
||
|
'filterv',
|
||
|
'find',
|
||
|
'find-keyword',
|
||
|
'find-ns',
|
||
|
'find-protocol-impl',
|
||
|
'find-protocol-method',
|
||
|
'find-var',
|
||
|
'first',
|
||
|
'flatten',
|
||
|
'float',
|
||
|
'float-array',
|
||
|
'float?',
|
||
|
'floats',
|
||
|
'flush',
|
||
|
'fn',
|
||
|
'fn?',
|
||
|
'fnext',
|
||
|
'fnil',
|
||
|
'for',
|
||
|
'force',
|
||
|
'format',
|
||
|
'frequencies',
|
||
|
'future',
|
||
|
'future-call',
|
||
|
'future-cancel',
|
||
|
'future-cancelled?',
|
||
|
'future-done?',
|
||
|
'future?',
|
||
|
'gen-class',
|
||
|
'gen-interface',
|
||
|
'gensym',
|
||
|
'get',
|
||
|
'get-in',
|
||
|
'get-method',
|
||
|
'get-proxy-class',
|
||
|
'get-thread-bindings',
|
||
|
'get-validator',
|
||
|
'group-by',
|
||
|
'halt-when',
|
||
|
'hash',
|
||
|
'hash-combine',
|
||
|
'hash-map',
|
||
|
'hash-ordered-coll',
|
||
|
'hash-set',
|
||
|
'hash-unordered-coll',
|
||
|
'ident?',
|
||
|
'identical?',
|
||
|
'identity',
|
||
|
'if-let',
|
||
|
'if-not',
|
||
|
'if-some',
|
||
|
'ifn?',
|
||
|
'import',
|
||
|
'in-ns',
|
||
|
'inc',
|
||
|
'inc\'',
|
||
|
'indexed?',
|
||
|
'init-proxy',
|
||
|
'inst-ms',
|
||
|
'inst-ms*',
|
||
|
'inst?',
|
||
|
'instance?',
|
||
|
'int',
|
||
|
'int-array',
|
||
|
'int?',
|
||
|
'integer?',
|
||
|
'interleave',
|
||
|
'intern',
|
||
|
'interpose',
|
||
|
'into',
|
||
|
'into-array',
|
||
|
'ints',
|
||
|
'io!',
|
||
|
'isa?',
|
||
|
'iterate',
|
||
|
'iterator-seq',
|
||
|
'juxt',
|
||
|
'keep',
|
||
|
'keep-indexed',
|
||
|
'key',
|
||
|
'keys',
|
||
|
'keyword',
|
||
|
'keyword?',
|
||
|
'last',
|
||
|
'lazy-cat',
|
||
|
'lazy-seq',
|
||
|
'let',
|
||
|
'letfn',
|
||
|
'line-seq',
|
||
|
'list',
|
||
|
'list*',
|
||
|
'list?',
|
||
|
'load',
|
||
|
'load-file',
|
||
|
'load-reader',
|
||
|
'load-string',
|
||
|
'loaded-libs',
|
||
|
'locking',
|
||
|
'long',
|
||
|
'long-array',
|
||
|
'longs',
|
||
|
'loop',
|
||
|
'macroexpand',
|
||
|
'macroexpand-1',
|
||
|
'make-array',
|
||
|
'make-hierarchy',
|
||
|
'map',
|
||
|
'map-entry?',
|
||
|
'map-indexed',
|
||
|
'map?',
|
||
|
'mapcat',
|
||
|
'mapv',
|
||
|
'max',
|
||
|
'max-key',
|
||
|
'memfn',
|
||
|
'memoize',
|
||
|
'merge',
|
||
|
'merge-with',
|
||
|
'meta',
|
||
|
'method-sig',
|
||
|
'methods',
|
||
|
'min',
|
||
|
'min-key',
|
||
|
'mix-collection-hash',
|
||
|
'mod',
|
||
|
'munge',
|
||
|
'name',
|
||
|
'namespace',
|
||
|
'namespace-munge',
|
||
|
'nat-int?',
|
||
|
'neg-int?',
|
||
|
'neg?',
|
||
|
'newline',
|
||
|
'next',
|
||
|
'nfirst',
|
||
|
'nil?',
|
||
|
'nnext',
|
||
|
'not',
|
||
|
'not-any?',
|
||
|
'not-empty',
|
||
|
'not-every?',
|
||
|
'not=',
|
||
|
'ns',
|
||
|
'ns-aliases',
|
||
|
'ns-imports',
|
||
|
'ns-interns',
|
||
|
'ns-map',
|
||
|
'ns-name',
|
||
|
'ns-publics',
|
||
|
'ns-refers',
|
||
|
'ns-resolve',
|
||
|
'ns-unalias',
|
||
|
'ns-unmap',
|
||
|
'nth',
|
||
|
'nthnext',
|
||
|
'nthrest',
|
||
|
'num',
|
||
|
'number?',
|
||
|
'numerator',
|
||
|
'object-array',
|
||
|
'odd?',
|
||
|
'or',
|
||
|
'parents',
|
||
|
'partial',
|
||
|
'partition',
|
||
|
'partition-all',
|
||
|
'partition-by',
|
||
|
'pcalls',
|
||
|
'peek',
|
||
|
'persistent!',
|
||
|
'pmap',
|
||
|
'pop',
|
||
|
'pop!',
|
||
|
'pop-thread-bindings',
|
||
|
'pos-int?',
|
||
|
'pos?',
|
||
|
'pr',
|
||
|
'pr-str',
|
||
|
'prefer-method',
|
||
|
'prefers',
|
||
|
'primitives-classnames',
|
||
|
'print',
|
||
|
'print-ctor',
|
||
|
'print-dup',
|
||
|
'print-method',
|
||
|
'print-simple',
|
||
|
'print-str',
|
||
|
'printf',
|
||
|
'println',
|
||
|
'println-str',
|
||
|
'prn',
|
||
|
'prn-str',
|
||
|
'promise',
|
||
|
'proxy',
|
||
|
'proxy-call-with-super',
|
||
|
'proxy-mappings',
|
||
|
'proxy-name',
|
||
|
'proxy-super',
|
||
|
'push-thread-bindings',
|
||
|
'pvalues',
|
||
|
'qualified-ident?',
|
||
|
'qualified-keyword?',
|
||
|
'qualified-symbol?',
|
||
|
'quot',
|
||
|
'rand',
|
||
|
'rand-int',
|
||
|
'rand-nth',
|
||
|
'random-sample',
|
||
|
'range',
|
||
|
'ratio?',
|
||
|
'rational?',
|
||
|
'rationalize',
|
||
|
're-find',
|
||
|
're-groups',
|
||
|
're-matcher',
|
||
|
're-matches',
|
||
|
're-pattern',
|
||
|
're-seq',
|
||
|
'read',
|
||
|
'read-line',
|
||
|
'read-string',
|
||
|
'reader-conditional',
|
||
|
'reader-conditional?',
|
||
|
'realized?',
|
||
|
'record?',
|
||
|
'reduce',
|
||
|
'reduce-kv',
|
||
|
'reduced',
|
||
|
'reduced?',
|
||
|
'reductions',
|
||
|
'ref',
|
||
|
'ref-history-count',
|
||
|
'ref-max-history',
|
||
|
'ref-min-history',
|
||
|
'ref-set',
|
||
|
'refer',
|
||
|
'refer-clojure',
|
||
|
'reify',
|
||
|
'release-pending-sends',
|
||
|
'rem',
|
||
|
'remove',
|
||
|
'remove-all-methods',
|
||
|
'remove-method',
|
||
|
'remove-ns',
|
||
|
'remove-watch',
|
||
|
'repeat',
|
||
|
'repeatedly',
|
||
|
'replace',
|
||
|
'replicate',
|
||
|
'require',
|
||
|
'reset!',
|
||
|
'reset-meta!',
|
||
|
'reset-vals!',
|
||
|
'resolve',
|
||
|
'rest',
|
||
|
'restart-agent',
|
||
|
'resultset-seq',
|
||
|
'reverse',
|
||
|
'reversible?',
|
||
|
'rseq',
|
||
|
'rsubseq',
|
||
|
'run!',
|
||
|
'satisfies?',
|
||
|
'second',
|
||
|
'select-keys',
|
||
|
'send',
|
||
|
'send-off',
|
||
|
'send-via',
|
||
|
'seq',
|
||
|
'seq?',
|
||
|
'seqable?',
|
||
|
'seque',
|
||
|
'sequence',
|
||
|
'sequential?',
|
||
|
'set',
|
||
|
'set-agent-send-executor!',
|
||
|
'set-agent-send-off-executor!',
|
||
|
'set-error-handler!',
|
||
|
'set-error-mode!',
|
||
|
'set-validator!',
|
||
|
'set?',
|
||
|
'short',
|
||
|
'short-array',
|
||
|
'shorts',
|
||
|
'shuffle',
|
||
|
'shutdown-agents',
|
||
|
'simple-ident?',
|
||
|
'simple-keyword?',
|
||
|
'simple-symbol?',
|
||
|
'slurp',
|
||
|
'some',
|
||
|
'some->',
|
||
|
'some->>',
|
||
|
'some-fn',
|
||
|
'some?',
|
||
|
'sort',
|
||
|
'sort-by',
|
||
|
'sorted-map',
|
||
|
'sorted-map-by',
|
||
|
'sorted-set',
|
||
|
'sorted-set-by',
|
||
|
'sorted?',
|
||
|
'special-symbol?',
|
||
|
'spit',
|
||
|
'split-at',
|
||
|
'split-with',
|
||
|
'str',
|
||
|
'string?',
|
||
|
'struct',
|
||
|
'struct-map',
|
||
|
'subs',
|
||
|
'subseq',
|
||
|
'subvec',
|
||
|
'supers',
|
||
|
'swap!',
|
||
|
'swap-vals!',
|
||
|
'symbol',
|
||
|
'symbol?',
|
||
|
'sync',
|
||
|
'tagged-literal',
|
||
|
'tagged-literal?',
|
||
|
'take',
|
||
|
'take-last',
|
||
|
'take-nth',
|
||
|
'take-while',
|
||
|
'test',
|
||
|
'the-ns',
|
||
|
'thread-bound?',
|
||
|
'time',
|
||
|
'to-array',
|
||
|
'to-array-2d',
|
||
|
'trampoline',
|
||
|
'transduce',
|
||
|
'transient',
|
||
|
'tree-seq',
|
||
|
'true?',
|
||
|
'type',
|
||
|
'unchecked-add',
|
||
|
'unchecked-add-int',
|
||
|
'unchecked-byte',
|
||
|
'unchecked-char',
|
||
|
'unchecked-dec',
|
||
|
'unchecked-dec-int',
|
||
|
'unchecked-divide-int',
|
||
|
'unchecked-double',
|
||
|
'unchecked-float',
|
||
|
'unchecked-inc',
|
||
|
'unchecked-inc-int',
|
||
|
'unchecked-int',
|
||
|
'unchecked-long',
|
||
|
'unchecked-multiply',
|
||
|
'unchecked-multiply-int',
|
||
|
'unchecked-negate',
|
||
|
'unchecked-negate-int',
|
||
|
'unchecked-remainder-int',
|
||
|
'unchecked-short',
|
||
|
'unchecked-subtract',
|
||
|
'unchecked-subtract-int',
|
||
|
'underive',
|
||
|
'unquote',
|
||
|
'unquote-splicing',
|
||
|
'unreduced',
|
||
|
'unsigned-bit-shift-right',
|
||
|
'update',
|
||
|
'update-in',
|
||
|
'update-proxy',
|
||
|
'uri?',
|
||
|
'use',
|
||
|
'uuid?',
|
||
|
'val',
|
||
|
'vals',
|
||
|
'var-get',
|
||
|
'var-set',
|
||
|
'var?',
|
||
|
'vary-meta',
|
||
|
'vec',
|
||
|
'vector',
|
||
|
'vector-of',
|
||
|
'vector?',
|
||
|
'volatile!',
|
||
|
'volatile?',
|
||
|
'vreset!',
|
||
|
'vswap!',
|
||
|
'when',
|
||
|
'when-first',
|
||
|
'when-let',
|
||
|
'when-not',
|
||
|
'when-some',
|
||
|
'while',
|
||
|
'with-bindings',
|
||
|
'with-bindings*',
|
||
|
'with-in-str',
|
||
|
'with-loading-context',
|
||
|
'with-local-vars',
|
||
|
'with-meta',
|
||
|
'with-open',
|
||
|
'with-out-str',
|
||
|
'with-precision',
|
||
|
'with-redefs',
|
||
|
'with-redefs-fn',
|
||
|
'xml-seq',
|
||
|
'zero?',
|
||
|
'zipmap',
|
||
|
],
|
||
|
tokenizer: {
|
||
|
root: [
|
||
|
// whitespaces and comments
|
||
|
{ include: '@whitespace' },
|
||
|
// numbers
|
||
|
[/@numbers/, 'number'],
|
||
|
// characters
|
||
|
[/@characters/, 'string'],
|
||
|
// strings
|
||
|
{ include: '@string' },
|
||
|
// brackets
|
||
|
[/[()\[\]{}]/, '@brackets'],
|
||
|
// regular expressions
|
||
|
[/\/#"(?:\.|(?:")|[^"\n])*"\/g/, 'regexp'],
|
||
|
// reader macro characters
|
||
|
[/[#'@^`~]/, 'meta'],
|
||
|
// symbols
|
||
|
[/@qualifiedSymbols/, {
|
||
|
cases: {
|
||
|
'^:.+$': 'constant',
|
||
|
'@specialForms': 'keyword',
|
||
|
'@coreSymbols': 'keyword',
|
||
|
'@constants': 'constant',
|
||
|
'@default': 'identifier',
|
||
|
},
|
||
|
},
|
||
|
],
|
||
|
],
|
||
|
whitespace: [
|
||
|
[/\s+/, 'white'],
|
||
|
[/;.*$/, 'comment'],
|
||
|
[/\(comment\b/, 'comment', '@comment'],
|
||
|
],
|
||
|
comment: [
|
||
|
[/\(/, 'comment', '@push'],
|
||
|
[/\)/, 'comment', '@pop'],
|
||
|
[/[^()]/, 'comment'],
|
||
|
],
|
||
|
string: [
|
||
|
[/"/, 'string', '@multiLineString'],
|
||
|
],
|
||
|
multiLineString: [
|
||
|
[/"/, 'string', '@popall'],
|
||
|
[/@escapes/, 'string.escape'],
|
||
|
[/./, 'string']
|
||
|
],
|
||
|
},
|
||
|
};
|