Page Menu
Home
Software Heritage
Search
Configure Global Search
Log In
Files
F9344899
scheme.js
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
5 KB
Subscribers
None
scheme.js
View Options
/*
Language: Scheme
Description: Scheme is a programming language in the Lisp family.
(keywords based on http://community.schemewiki.org/?scheme-keywords)
Author: JP Verkamp <me@jverkamp.com>
Contributors: Ivan Sagalaev <maniac@softwaremaniacs.org>
Origin: clojure.js
Website: http://community.schemewiki.org/?what-is-scheme
Category: lisp
*/
function
scheme
(
hljs
)
{
const
SCHEME_IDENT_RE
=
'[^\\(\\)\\[\\]\\{\\}",\'`;#|\\\\\\s]+'
;
const
SCHEME_SIMPLE_NUMBER_RE
=
'(-|\\+)?\\d+([./]\\d+)?'
;
const
SCHEME_COMPLEX_NUMBER_RE
=
SCHEME_SIMPLE_NUMBER_RE
+
'[+\\-]'
+
SCHEME_SIMPLE_NUMBER_RE
+
'i'
;
const
KEYWORDS
=
{
$pattern
:
SCHEME_IDENT_RE
,
built_in
:
'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?'
};
const
LITERAL
=
{
className
:
'literal'
,
begin
:
'(#t|#f|#\\\\'
+
SCHEME_IDENT_RE
+
'|#\\\\.)'
};
const
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]+)?'
}
]
};
const
STRING
=
hljs
.
QUOTE_STRING_MODE
;
const
COMMENT_MODES
=
[
hljs
.
COMMENT
(
';'
,
'$'
,
{
relevance
:
0
}
),
hljs
.
COMMENT
(
'#\\|'
,
'\\|#'
)
];
const
IDENT
=
{
begin
:
SCHEME_IDENT_RE
,
relevance
:
0
};
const
QUOTED_IDENT
=
{
className
:
'symbol'
,
begin
:
'\''
+
SCHEME_IDENT_RE
};
const
BODY
=
{
endsWithParent
:
true
,
relevance
:
0
};
const
QUOTED_LIST
=
{
variants
:
[
{
begin
:
/'/
},
{
begin
:
'`'
}
],
contains
:
[
{
begin
:
'\\('
,
end
:
'\\)'
,
contains
:
[
'self'
,
LITERAL
,
STRING
,
NUMBER
,
IDENT
,
QUOTED_IDENT
]
}
]
};
const
NAME
=
{
className
:
'name'
,
relevance
:
0
,
begin
:
SCHEME_IDENT_RE
,
keywords
:
KEYWORDS
};
const
LAMBDA
=
{
begin
:
/lambda/
,
endsWithParent
:
true
,
returnBegin
:
true
,
contains
:
[
NAME
,
{
endsParent
:
true
,
variants
:
[
{
begin
:
/\(/
,
end
:
/\)/
},
{
begin
:
/\[/
,
end
:
/\]/
}
],
contains
:
[
IDENT
]
}
]
};
const
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
{
name
:
'Scheme'
,
illegal
:
/\S/
,
contains
:
[
hljs
.
SHEBANG
(),
NUMBER
,
STRING
,
QUOTED_IDENT
,
QUOTED_LIST
,
LIST
].
concat
(
COMMENT_MODES
)
};
}
module
.
exports
=
scheme
;
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Fri, Jul 4, 2:53 PM (4 d, 13 h ago)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
3353117
Attached To
rDWAPPS Web applications
Event Timeline
Log In to Comment