/usr/lib/ruby/vendor_ruby/rugments/lexers/racket.rb is in ruby-rugments 1.0.0~beta8-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 | module Rugments
module Lexers
class Racket < RegexLexer
title 'Racket'
desc 'Racket is a Lisp descended from Scheme (racket-lang.org)'
tag 'racket'
filenames '*.rkt', '*.rktd', '*.rktl'
mimetypes 'text/x-racket', 'application/x-racket'
def self.analyze_text(text)
text = text.strip
return 1 if text.start_with? '#lang racket'
return 0.6 if text =~ %r{\A#lang [a-z/-]+$}i
end
def self.keywords
@keywords ||= Set.new %w(
... and begin begin-for-syntax begin0 case case-lambda cond
datum->syntax-object define define-for-syntax define-logger
define-struct define-syntax define-syntax-rule
define-syntaxes define-values define-values-for-syntax delay
do expand-path fluid-let force hash-table-copy
hash-table-count hash-table-for-each hash-table-get
hash-table-iterate-first hash-table-iterate-key
hash-table-iterate-next hash-table-iterate-value
hash-table-map hash-table-put! hash-table-remove!
hash-table? if lambda let let* let*-values let-struct
let-syntax let-syntaxes let-values let/cc let/ec letrec
letrec-syntax letrec-syntaxes letrec-syntaxes+values
letrec-values list-immutable make-hash-table
make-immutable-hash-table make-namespace module module*
module-identifier=? module-label-identifier=?
module-template-identifier=? module-transformer-identifier=?
namespace-transformer-require or parameterize parameterize*
parameterize-break promise? prop:method-arity-error provide
provide-for-label provide-for-syntax quasiquote quasisyntax
quasisyntax/loc quote quote-syntax quote-syntax/prune
require require-for-label require-for-syntax
require-for-template set! set!-values syntax syntax-case
syntax-case* syntax-id-rules syntax-object->datum
syntax-rules syntax/loc tcp-abandon-port tcp-accept
tcp-accept-evt tcp-accept-ready? tcp-accept/enable-break
tcp-addresses tcp-close tcp-connect tcp-connect/enable-break
tcp-listen tcp-listener? tcp-port? time transcript-off
transcript-on udp-addresses udp-bind! udp-bound? udp-close
udp-connect! udp-connected? udp-multicast-interface
udp-multicast-join-group! udp-multicast-leave-group!
udp-multicast-loopback? udp-multicast-set-interface!
udp-multicast-set-loopback! udp-multicast-set-ttl!
udp-multicast-ttl udp-open-socket udp-receive! udp-receive!*
udp-receive!-evt udp-receive!/enable-break
udp-receive-ready-evt udp-send udp-send* udp-send-evt
udp-send-ready-evt udp-send-to udp-send-to* udp-send-to-evt
udp-send-to/enable-break udp-send/enable-break udp? unless
unquote unquote-splicing unsyntax unsyntax-splicing when
with-continuation-mark with-handlers with-handlers*
with-syntax λ)
end
def self.builtins
@builtins ||= Set.new %w(
* + - / < <= = > >=
abort-current-continuation abs absolute-path? acos add1
alarm-evt always-evt andmap angle append apply
arithmetic-shift arity-at-least arity-at-least-value
arity-at-least? asin assoc assq assv atan banner bitwise-and
bitwise-bit-field bitwise-bit-set? bitwise-ior bitwise-not
bitwise-xor boolean? bound-identifier=? box box-cas!
box-immutable box? break-enabled break-thread build-path
build-path/convention-type byte-pregexp byte-pregexp?
byte-ready? byte-regexp byte-regexp? byte? bytes
bytes->immutable-bytes bytes->list bytes->path
bytes->path-element bytes->string/latin-1
bytes->string/locale bytes->string/utf-8 bytes-append
bytes-close-converter bytes-convert bytes-convert-end
bytes-converter? bytes-copy bytes-copy!
bytes-environment-variable-name? bytes-fill! bytes-length
bytes-open-converter bytes-ref bytes-set! bytes-utf-8-index
bytes-utf-8-length bytes-utf-8-ref bytes<? bytes=? bytes>?
bytes? caaaar caaadr caaar caadar caaddr caadr caar cadaar
cadadr cadar caddar cadddr caddr cadr call-in-nested-thread
call-with-break-parameterization
call-with-composable-continuation
call-with-continuation-barrier call-with-continuation-prompt
call-with-current-continuation
call-with-default-reading-parameterization
call-with-escape-continuation call-with-exception-handler
call-with-immediate-continuation-mark call-with-input-file
call-with-output-file call-with-parameterization
call-with-semaphore call-with-semaphore/enable-break
call-with-values call/cc call/ec car cdaaar cdaadr cdaar
cdadar cdaddr cdadr cdar cddaar cddadr cddar cdddar cddddr
cdddr cddr cdr ceiling channel-get channel-put
channel-put-evt channel-put-evt? channel-try-get channel?
chaperone-box chaperone-continuation-mark-key chaperone-evt
chaperone-hash chaperone-of? chaperone-procedure
chaperone-prompt-tag chaperone-struct chaperone-struct-type
chaperone-vector chaperone? char->integer char-alphabetic?
char-blank? char-ci<=? char-ci<? char-ci=? char-ci>=?
char-ci>? char-downcase char-foldcase char-general-category
char-graphic? char-iso-control? char-lower-case?
char-numeric? char-punctuation? char-ready? char-symbolic?
char-title-case? char-titlecase char-upcase char-upper-case?
char-utf-8-length char-whitespace? char<=? char<? char=?
char>=? char>? char? check-duplicate-identifier
checked-procedure-check-and-extract choice-evt cleanse-path
close-input-port close-output-port collect-garbage
collection-file-path collection-path compile
compile-allow-set!-undefined
compile-context-preservation-enabled
compile-enforce-module-constants compile-syntax
compiled-expression? compiled-module-expression?
complete-path? complex? cons continuation-mark-key?
continuation-mark-set->context continuation-mark-set->list
continuation-mark-set->list* continuation-mark-set-first
continuation-mark-set? continuation-marks
continuation-prompt-available? continuation-prompt-tag?
continuation? copy-file cos current-break-parameterization
current-code-inspector current-command-line-arguments
current-compile current-compiled-file-roots
current-continuation-marks current-custodian
current-directory current-directory-for-user current-drive
current-environment-variables current-error-port
current-eval current-evt-pseudo-random-generator
current-gc-milliseconds current-get-interaction-input-port
current-inexact-milliseconds current-input-port
current-inspector current-library-collection-paths
current-load current-load-extension
current-load-relative-directory current-load/use-compiled
current-locale current-memory-use current-milliseconds
current-module-declare-name current-module-declare-source
current-module-name-resolver current-module-path-for-load
current-namespace current-output-port
current-parameterization
current-preserved-thread-cell-values current-print
current-process-milliseconds current-prompt-read
current-pseudo-random-generator current-read-interaction
current-reader-guard current-readtable current-seconds
current-security-guard current-subprocess-custodian-mode
current-thread current-thread-group
current-thread-initial-stack-size
current-write-relative-directory custodian-box-value
custodian-box? custodian-limit-memory custodian-managed-list
custodian-memory-accounting-available?
custodian-require-memory custodian-shutdown-all custodian?
custom-print-quotable-accessor custom-print-quotable?
custom-write-accessor custom-write? date date*
date*-nanosecond date*-time-zone-name date*? date-day
date-dst? date-hour date-minute date-month date-second
date-time-zone-offset date-week-day date-year date-year-day
date? datum-intern-literal default-continuation-prompt-tag
delete-directory delete-file denominator directory-exists?
directory-list display displayln dump-memory-stats
dynamic-require dynamic-require-for-syntax dynamic-wind
environment-variables-copy environment-variables-names
environment-variables-ref environment-variables-set!
environment-variables? eof eof-object? ephemeron-value
ephemeron? eprintf eq-hash-code eq? equal-hash-code
equal-secondary-hash-code equal? equal?/recur eqv-hash-code
eqv? error error-display-handler error-escape-handler
error-print-context-length error-print-source-location
error-print-width error-value->string-handler eval
eval-jit-enabled eval-syntax even? evt? exact->inexact
exact-integer? exact-nonnegative-integer?
exact-positive-integer? exact? executable-yield-handler exit
exit-handler exn exn-continuation-marks exn-message
exn:break exn:break-continuation exn:break:hang-up
exn:break:hang-up? exn:break:terminate exn:break:terminate?
exn:break? exn:fail exn:fail:contract
exn:fail:contract:arity exn:fail:contract:arity?
exn:fail:contract:continuation
exn:fail:contract:continuation?
exn:fail:contract:divide-by-zero
exn:fail:contract:divide-by-zero?
exn:fail:contract:non-fixnum-result
exn:fail:contract:non-fixnum-result?
exn:fail:contract:variable exn:fail:contract:variable-id
exn:fail:contract:variable? exn:fail:contract?
exn:fail:filesystem exn:fail:filesystem:errno
exn:fail:filesystem:errno-errno exn:fail:filesystem:errno?
exn:fail:filesystem:exists exn:fail:filesystem:exists?
exn:fail:filesystem:missing-module
exn:fail:filesystem:missing-module-path
exn:fail:filesystem:missing-module?
exn:fail:filesystem:version exn:fail:filesystem:version?
exn:fail:filesystem? exn:fail:network exn:fail:network:errno
exn:fail:network:errno-errno exn:fail:network:errno?
exn:fail:network? exn:fail:out-of-memory
exn:fail:out-of-memory? exn:fail:read exn:fail:read-srclocs
exn:fail:read:eof exn:fail:read:eof? exn:fail:read:non-char
exn:fail:read:non-char? exn:fail:read? exn:fail:syntax
exn:fail:syntax-exprs exn:fail:syntax:missing-module
exn:fail:syntax:missing-module-path
exn:fail:syntax:missing-module? exn:fail:syntax:unbound
exn:fail:syntax:unbound? exn:fail:syntax?
exn:fail:unsupported exn:fail:unsupported? exn:fail:user
exn:fail:user? exn:fail? exn:missing-module-accessor
exn:missing-module? exn:srclocs-accessor exn:srclocs? exn?
exp expand expand-once expand-syntax expand-syntax-once
expand-syntax-to-top-form expand-to-top-form
expand-user-path explode-path expt file-exists?
file-or-directory-identity file-or-directory-modify-seconds
file-or-directory-permissions file-position file-position*
file-size file-stream-buffer-mode file-stream-port?
file-truncate filesystem-change-evt
filesystem-change-evt-cancel filesystem-change-evt?
filesystem-root-list find-executable-path
find-library-collection-paths find-system-path fixnum?
floating-point-bytes->real flonum? floor flush-output
for-each format fprintf free-identifier=? gcd
generate-temporaries gensym get-output-bytes
get-output-string getenv global-port-print-handler guard-evt
handle-evt handle-evt? hash hash-equal? hash-eqv?
hash-has-key? hash-placeholder? hash-ref! hasheq hasheqv
identifier-binding identifier-binding-symbol
identifier-label-binding identifier-prune-lexical-context
identifier-prune-to-source-module
identifier-remove-from-definition-context
identifier-template-binding identifier-transformer-binding
identifier? imag-part immutable? impersonate-box
impersonate-continuation-mark-key impersonate-hash
impersonate-procedure impersonate-prompt-tag
impersonate-struct impersonate-vector impersonator-ephemeron
impersonator-of? impersonator-prop:application-mark
impersonator-property-accessor-procedure?
impersonator-property? impersonator? inexact->exact
inexact-real? inexact? input-port? inspector? integer->char
integer->integer-bytes integer-bytes->integer integer-length
integer-sqrt integer-sqrt/remainder integer?
internal-definition-context-seal
internal-definition-context? keyword->string keyword<?
keyword? kill-thread lcm length liberal-define-context?
link-exists? list list* list->bytes list->string
list->vector list-ref list-tail list? load load-extension
load-on-demand-enabled load-relative load-relative-extension
load/cd load/use-compiled local-expand
local-expand/capture-lifts local-transformer-expand
local-transformer-expand/capture-lifts
locale-string-encoding log log-max-level magnitude
make-arity-at-least make-bytes make-channel
make-continuation-mark-key make-continuation-prompt-tag
make-custodian make-custodian-box make-date make-date*
make-derived-parameter make-directory
make-environment-variables make-ephemeron make-exn
make-exn:break make-exn:break:hang-up
make-exn:break:terminate make-exn:fail
make-exn:fail:contract make-exn:fail:contract:arity
make-exn:fail:contract:continuation
make-exn:fail:contract:divide-by-zero
make-exn:fail:contract:non-fixnum-result
make-exn:fail:contract:variable make-exn:fail:filesystem
make-exn:fail:filesystem:errno
make-exn:fail:filesystem:exists
make-exn:fail:filesystem:missing-module
make-exn:fail:filesystem:version make-exn:fail:network
make-exn:fail:network:errno make-exn:fail:out-of-memory
make-exn:fail:read make-exn:fail:read:eof
make-exn:fail:read:non-char make-exn:fail:syntax
make-exn:fail:syntax:missing-module
make-exn:fail:syntax:unbound make-exn:fail:unsupported
make-exn:fail:user make-file-or-directory-link
make-hash-placeholder make-hasheq-placeholder make-hasheqv
make-hasheqv-placeholder make-immutable-hasheqv
make-impersonator-property make-input-port make-inspector
make-known-char-range-list make-output-port make-parameter
make-phantom-bytes make-pipe make-placeholder make-polar
make-prefab-struct make-pseudo-random-generator
make-reader-graph make-readtable make-rectangular
make-rename-transformer make-resolved-module-path
make-security-guard make-semaphore make-set!-transformer
make-shared-bytes make-sibling-inspector
make-special-comment make-srcloc make-string
make-struct-field-accessor make-struct-field-mutator
make-struct-type make-struct-type-property
make-syntax-delta-introducer make-syntax-introducer
make-thread-cell make-thread-group make-vector make-weak-box
make-weak-hasheqv make-will-executor map max mcar mcdr mcons
member memq memv min module->exports module->imports
module->language-info module->namespace
module-compiled-cross-phase-persistent?
module-compiled-exports module-compiled-imports
module-compiled-language-info module-compiled-name
module-compiled-submodules module-declared?
module-path-index-join module-path-index-resolve
module-path-index-split module-path-index-submodule
module-path-index? module-path? module-predefined?
module-provide-protected? modulo mpair? nack-guard-evt
namespace-attach-module namespace-attach-module-declaration
namespace-base-phase namespace-mapped-symbols
namespace-module-identifier namespace-module-registry
namespace-require namespace-require/constant
namespace-require/copy namespace-require/expansion-time
namespace-set-variable-value! namespace-symbol->identifier
namespace-syntax-introduce namespace-undefine-variable!
namespace-unprotect-module namespace-variable-value
namespace? negative? never-evt newline normal-case-path not
null null? number->string number? numerator object-name odd?
open-input-bytes open-input-file open-input-output-file
open-input-string open-output-bytes open-output-file
open-output-string ormap output-port? pair?
parameter-procedure=? parameter? parameterization?
path->bytes path->complete-path path->directory-path
path->string path-add-suffix path-convention-type
path-element->bytes path-element->string
path-for-some-system? path-list-string->path-list
path-replace-suffix path-string? path? peek-byte
peek-byte-or-special peek-bytes peek-bytes!
peek-bytes-avail! peek-bytes-avail!*
peek-bytes-avail!/enable-break peek-char
peek-char-or-special peek-string peek-string! phantom-bytes?
pipe-content-length placeholder-get placeholder-set!
placeholder? poll-guard-evt port-closed-evt port-closed?
port-commit-peeked port-count-lines!
port-count-lines-enabled port-counts-lines?
port-display-handler port-file-identity port-file-unlock
port-next-location port-print-handler port-progress-evt
port-provides-progress-evts? port-read-handler
port-try-file-lock? port-write-handler port-writes-atomic?
port-writes-special? port? positive? prefab-key->struct-type
prefab-key? prefab-struct-key pregexp pregexp?
primitive-closure? primitive-result-arity primitive? print
print-as-expression print-boolean-long-form print-box
print-graph print-hash-table print-mpair-curly-braces
print-pair-curly-braces print-reader-abbreviations
print-struct print-syntax-width print-unreadable
print-vector-length printf procedure->method procedure-arity
procedure-arity-includes? procedure-arity?
procedure-closure-contents-eq? procedure-extract-target
procedure-reduce-arity procedure-rename
procedure-struct-type? procedure? progress-evt?
prop:arity-string prop:checked-procedure
prop:custom-print-quotable prop:custom-write prop:equal+hash
prop:evt prop:exn:missing-module prop:exn:srclocs
prop:impersonator-of prop:input-port
prop:liberal-define-context prop:output-port prop:procedure
prop:rename-transformer prop:set!-transformer
pseudo-random-generator->vector
pseudo-random-generator-vector? pseudo-random-generator?
putenv quotient quotient/remainder raise
raise-argument-error raise-arguments-error raise-arity-error
raise-mismatch-error raise-range-error raise-result-error
raise-syntax-error raise-type-error raise-user-error random
random-seed rational? rationalize read read-accept-bar-quote
read-accept-box read-accept-compiled read-accept-dot
read-accept-graph read-accept-infix-dot read-accept-lang
read-accept-quasiquote read-accept-reader read-byte
read-byte-or-special read-bytes read-bytes!
read-bytes-avail! read-bytes-avail!*
read-bytes-avail!/enable-break read-bytes-line
read-case-sensitive read-char read-char-or-special
read-curly-brace-as-paren read-decimal-as-inexact
read-eval-print-loop read-language read-line
read-on-demand-source read-square-bracket-as-paren
read-string read-string! read-syntax read-syntax/recursive
read/recursive readtable-mapping readtable?
real->double-flonum real->floating-point-bytes
real->single-flonum real-part real? regexp regexp-match
regexp-match-peek regexp-match-peek-immediate
regexp-match-peek-positions
regexp-match-peek-positions-immediate
regexp-match-peek-positions-immediate/end
regexp-match-peek-positions/end regexp-match-positions
regexp-match-positions/end regexp-match/end regexp-match?
regexp-max-lookbehind regexp-replace regexp-replace* regexp?
relative-path? remainder rename-file-or-directory
rename-transformer-target rename-transformer? reroot-path
resolve-path resolved-module-path-name resolved-module-path?
reverse round seconds->date security-guard?
semaphore-peek-evt semaphore-peek-evt? semaphore-post
semaphore-try-wait? semaphore-wait
semaphore-wait/enable-break semaphore?
set!-transformer-procedure set!-transformer? set-box!
set-mcar! set-mcdr! set-phantom-bytes!
set-port-next-location! shared-bytes shell-execute
simplify-path sin single-flonum? sleep special-comment-value
special-comment? split-path sqrt srcloc srcloc->string
srcloc-column srcloc-line srcloc-position srcloc-source
srcloc-span srcloc? string string->bytes/latin-1
string->bytes/locale string->bytes/utf-8
string->immutable-string string->keyword string->list
string->number string->path string->path-element
string->symbol string->uninterned-symbol
string->unreadable-symbol string-append string-ci<=?
string-ci<? string-ci=? string-ci>=? string-ci>? string-copy
string-copy! string-downcase
string-environment-variable-name? string-fill!
string-foldcase string-length string-locale-ci<?
string-locale-ci=? string-locale-ci>? string-locale-downcase
string-locale-upcase string-locale<? string-locale=?
string-locale>? string-normalize-nfc string-normalize-nfd
string-normalize-nfkc string-normalize-nfkd string-ref
string-set! string-titlecase string-upcase
string-utf-8-length string<=? string<? string=? string>=?
string>? string? struct->vector struct-accessor-procedure?
struct-constructor-procedure? struct-info
struct-mutator-procedure? struct-predicate-procedure?
struct-type-info struct-type-make-constructor
struct-type-make-predicate
struct-type-property-accessor-procedure?
struct-type-property? struct-type? struct:arity-at-least
struct:date struct:date* struct:exn struct:exn:break
struct:exn:break:hang-up struct:exn:break:terminate
struct:exn:fail struct:exn:fail:contract
struct:exn:fail:contract:arity
struct:exn:fail:contract:continuation
struct:exn:fail:contract:divide-by-zero
struct:exn:fail:contract:non-fixnum-result
struct:exn:fail:contract:variable struct:exn:fail:filesystem
struct:exn:fail:filesystem:errno
struct:exn:fail:filesystem:exists
struct:exn:fail:filesystem:missing-module
struct:exn:fail:filesystem:version struct:exn:fail:network
struct:exn:fail:network:errno struct:exn:fail:out-of-memory
struct:exn:fail:read struct:exn:fail:read:eof
struct:exn:fail:read:non-char struct:exn:fail:syntax
struct:exn:fail:syntax:missing-module
struct:exn:fail:syntax:unbound struct:exn:fail:unsupported
struct:exn:fail:user struct:srcloc struct? sub1 subbytes
subprocess subprocess-group-enabled subprocess-kill
subprocess-pid subprocess-status subprocess-wait subprocess?
substring symbol->string symbol-interned? symbol-unreadable?
symbol? sync sync/enable-break sync/timeout
sync/timeout/enable-break syntax->list syntax-arm
syntax-column syntax-disarm syntax-e syntax-line
syntax-local-bind-syntaxes syntax-local-certifier
syntax-local-context syntax-local-expand-expression
syntax-local-get-shadower syntax-local-introduce
syntax-local-lift-context syntax-local-lift-expression
syntax-local-lift-module-end-declaration
syntax-local-lift-provide syntax-local-lift-require
syntax-local-lift-values-expression
syntax-local-make-definition-context
syntax-local-make-delta-introducer
syntax-local-module-defined-identifiers
syntax-local-module-exports
syntax-local-module-required-identifiers syntax-local-name
syntax-local-phase-level syntax-local-submodules
syntax-local-transforming-module-provides?
syntax-local-value syntax-local-value/immediate
syntax-original? syntax-position syntax-property
syntax-property-symbol-keys syntax-protect syntax-rearm
syntax-recertify syntax-shift-phase-level syntax-source
syntax-source-module syntax-span syntax-taint
syntax-tainted? syntax-track-origin
syntax-transforming-module-expression? syntax-transforming?
syntax? system-big-endian? system-idle-evt
system-language+country system-library-subpath
system-path-convention-type system-type tan terminal-port?
thread thread-cell-ref thread-cell-set! thread-cell-values?
thread-cell? thread-dead-evt thread-dead? thread-group?
thread-resume thread-resume-evt thread-rewind-receive
thread-running? thread-suspend thread-suspend-evt
thread-wait thread/suspend-to-kill thread? time-apply
truncate unbox uncaught-exception-handler
use-collection-link-paths use-compiled-file-paths
use-user-specific-search-paths values
variable-reference->empty-namespace
variable-reference->module-base-phase
variable-reference->module-declaration-inspector
variable-reference->module-path-index
variable-reference->module-source
variable-reference->namespace variable-reference->phase
variable-reference->resolved-module-path
variable-reference-constant? variable-reference? vector
vector->immutable-vector vector->list
vector->pseudo-random-generator
vector->pseudo-random-generator! vector->values vector-fill!
vector-immutable vector-length vector-ref vector-set!
vector-set-performance-stats! vector? version void void?
weak-box-value weak-box? will-execute will-executor?
will-register will-try-execute with-input-from-file
with-output-to-file wrap-evt write write-byte write-bytes
write-bytes-avail write-bytes-avail* write-bytes-avail-evt
write-bytes-avail/enable-break write-char write-special
write-special-avail* write-special-evt write-string zero?
)
end
# Since Racket allows identifiers to consist of nearly anything,
# it's simpler to describe what an ID is _not_.
id = /[^\s\(\)\[\]\{\}'`,.]+/i
state :root do
# comments
rule /;.*$/, Comment::Single
rule /\s+/m, Text
rule /[+-]inf[.][f0]/, Num::Float
rule /[+-]nan[.]0/, Num::Float
rule /[-]min[.]0/, Num::Float
rule /[+]max[.]0/, Num::Float
rule /-?\d+\.\d+/, Num::Float
rule /-?\d+/, Num::Integer
rule /#:#{id}+/, Name::Tag # keyword
rule /#b[01]+/, Num::Bin
rule /#o[0-7]+/, Num::Oct
rule /#d[0-9]+/, Num::Integer
rule /#x[0-9a-f]+/i, Num::Hex
rule /#[ei][\d.]+/, Num::Other
rule /"(\\\\|\\"|[^"])*"/, Str
rule /['`]#{id}/i, Str::Symbol
rule /#\\([()\/'"._!\$%& ?=+-]{1}|[a-z0-9]+)/i,
Str::Char
rule /#t|#f/, Name::Constant
rule /(?:'|#|`|,@|,|\.)/, Operator
rule /(['#])(\s*)(\()/m do
groups Str::Symbol, Text, Punctuation
end
# () [] {} are all permitted as like pairs
rule /\(|\[|\{/, Punctuation, :command
rule /\)|\]|\}/, Punctuation
rule id, Name::Variable
end
state :command do
rule id, Name::Function do |m|
if self.class.keywords.include? m[0]
token Keyword
elsif self.class.builtins.include? m[0]
token Name::Builtin
else
token Name::Function
end
pop!
end
rule(//) { pop! }
end
end
end
end
|