aboutsummaryrefslogtreecommitdiff
path: root/node_modules/highlight.js/lib/languages/scheme.js
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/highlight.js/lib/languages/scheme.js')
-rw-r--r--node_modules/highlight.js/lib/languages/scheme.js143
1 files changed, 143 insertions, 0 deletions
diff --git a/node_modules/highlight.js/lib/languages/scheme.js b/node_modules/highlight.js/lib/languages/scheme.js
new file mode 100644
index 000000000..f4cd10cf8
--- /dev/null
+++ b/node_modules/highlight.js/lib/languages/scheme.js
@@ -0,0 +1,143 @@
+module.exports = function(hljs) {
+ var SCHEME_IDENT_RE = '[^\\(\\)\\[\\]\\{\\}",\'`;#|\\\\\\s]+';
+ var SCHEME_SIMPLE_NUMBER_RE = '(\\-|\\+)?\\d+([./]\\d+)?';
+ var SCHEME_COMPLEX_NUMBER_RE = SCHEME_SIMPLE_NUMBER_RE + '[+\\-]' + SCHEME_SIMPLE_NUMBER_RE + 'i';
+ var BUILTINS = {
+ 'builtin-name':
+ 'case-lambda call/cc class define-class exit-handler field import ' +
+ 'inherit init-field interface let*-values let-values let/ec mixin ' +
+ 'opt-lambda override protect provide public rename require ' +
+ 'require-for-syntax syntax syntax-case syntax-error unit/sig unless ' +
+ 'when with-syntax and begin call-with-current-continuation ' +
+ 'call-with-input-file call-with-output-file case cond define ' +
+ 'define-syntax delay do dynamic-wind else for-each if lambda let let* ' +
+ 'let-syntax letrec letrec-syntax map or syntax-rules \' * + , ,@ - ... / ' +
+ '; < <= = => > >= ` abs acos angle append apply asin assoc assq assv atan ' +
+ 'boolean? caar cadr call-with-input-file call-with-output-file ' +
+ 'call-with-values car cdddar cddddr cdr ceiling char->integer ' +
+ 'char-alphabetic? char-ci<=? char-ci<? char-ci=? char-ci>=? char-ci>? ' +
+ 'char-downcase char-lower-case? char-numeric? char-ready? char-upcase ' +
+ 'char-upper-case? char-whitespace? char<=? char<? char=? char>=? char>? ' +
+ 'char? close-input-port close-output-port complex? cons cos ' +
+ 'current-input-port current-output-port denominator display eof-object? ' +
+ 'eq? equal? eqv? eval even? exact->inexact exact? exp expt floor ' +
+ 'force gcd imag-part inexact->exact inexact? input-port? integer->char ' +
+ 'integer? interaction-environment lcm length list list->string ' +
+ 'list->vector list-ref list-tail list? load log magnitude make-polar ' +
+ 'make-rectangular make-string make-vector max member memq memv min ' +
+ 'modulo negative? newline not null-environment null? number->string ' +
+ 'number? numerator odd? open-input-file open-output-file output-port? ' +
+ 'pair? peek-char port? positive? procedure? quasiquote quote quotient ' +
+ 'rational? rationalize read read-char real-part real? remainder reverse ' +
+ 'round scheme-report-environment set! set-car! set-cdr! sin sqrt string ' +
+ 'string->list string->number string->symbol string-append string-ci<=? ' +
+ 'string-ci<? string-ci=? string-ci>=? string-ci>? string-copy ' +
+ 'string-fill! string-length string-ref string-set! string<=? string<? ' +
+ 'string=? string>=? string>? string? substring symbol->string symbol? ' +
+ 'tan transcript-off transcript-on truncate values vector ' +
+ 'vector->list vector-fill! vector-length vector-ref vector-set! ' +
+ 'with-input-from-file with-output-to-file write write-char zero?'
+ };
+
+ var SHEBANG = {
+ className: 'meta',
+ begin: '^#!',
+ end: '$'
+ };
+
+ var LITERAL = {
+ className: 'literal',
+ begin: '(#t|#f|#\\\\' + SCHEME_IDENT_RE + '|#\\\\.)'
+ };
+
+ var NUMBER = {
+ className: 'number',
+ variants: [
+ { begin: SCHEME_SIMPLE_NUMBER_RE, relevance: 0 },
+ { begin: SCHEME_COMPLEX_NUMBER_RE, relevance: 0 },
+ { begin: '#b[0-1]+(/[0-1]+)?' },
+ { begin: '#o[0-7]+(/[0-7]+)?' },
+ { begin: '#x[0-9a-f]+(/[0-9a-f]+)?' }
+ ]
+ };
+
+ var STRING = hljs.QUOTE_STRING_MODE;
+
+ var REGULAR_EXPRESSION = {
+ className: 'regexp',
+ begin: '#[pr]x"',
+ end: '[^\\\\]"'
+ };
+
+ var COMMENT_MODES = [
+ hljs.COMMENT(
+ ';',
+ '$',
+ {
+ relevance: 0
+ }
+ ),
+ hljs.COMMENT('#\\|', '\\|#')
+ ];
+
+ var IDENT = {
+ begin: SCHEME_IDENT_RE,
+ relevance: 0
+ };
+
+ var QUOTED_IDENT = {
+ className: 'symbol',
+ begin: '\'' + SCHEME_IDENT_RE
+ };
+
+ var BODY = {
+ endsWithParent: true,
+ relevance: 0
+ };
+
+ var QUOTED_LIST = {
+ variants: [
+ { begin: /'/ },
+ { begin: '`' }
+ ],
+ contains: [
+ {
+ begin: '\\(', end: '\\)',
+ contains: ['self', LITERAL, STRING, NUMBER, IDENT, QUOTED_IDENT]
+ }
+ ]
+ };
+
+ var NAME = {
+ className: 'name',
+ begin: SCHEME_IDENT_RE,
+ lexemes: SCHEME_IDENT_RE,
+ keywords: BUILTINS
+ };
+
+ var LAMBDA = {
+ begin: /lambda/, endsWithParent: true, returnBegin: true,
+ contains: [
+ NAME,
+ {
+ begin: /\(/, end: /\)/, endsParent: true,
+ contains: [IDENT],
+ }
+ ]
+ };
+
+ var LIST = {
+ variants: [
+ { begin: '\\(', end: '\\)' },
+ { begin: '\\[', end: '\\]' }
+ ],
+ contains: [LAMBDA, NAME, BODY]
+ };
+
+ BODY.contains = [LITERAL, NUMBER, STRING, IDENT, QUOTED_IDENT, QUOTED_LIST, LIST].concat(COMMENT_MODES);
+
+ return {
+ illegal: /\S/,
+ contains: [SHEBANG, NUMBER, STRING, QUOTED_IDENT, QUOTED_LIST, LIST].concat(COMMENT_MODES)
+ };
+}; \ No newline at end of file