From 638954b81711bce0421b8d8f3a0b233e5d92b530 Mon Sep 17 00:00:00 2001 From: ufo5260987423 Date: Sat, 12 Oct 2024 22:35:36 +0800 Subject: [PATCH 01/44] fix --- .../identifier/rules/fluid-let-syntax.sls | 19 ++++--- analysis/identifier/rules/fluid-let.sls | 19 ++++--- analysis/identifier/rules/let*-values.sls | 19 ++++--- analysis/identifier/rules/let*.sls | 21 +++----- analysis/identifier/rules/let-syntax.sls | 19 ++++--- analysis/identifier/rules/let-values.sls | 23 ++++----- analysis/identifier/rules/let.sls | 49 +++++++++---------- analysis/identifier/rules/letrec*.sls | 16 +++--- analysis/identifier/rules/letrec-syntax.sls | 15 +++--- analysis/identifier/rules/letrec.sls | 14 +++--- 10 files changed, 105 insertions(+), 109 deletions(-) diff --git a/analysis/identifier/rules/fluid-let-syntax.sls b/analysis/identifier/rules/fluid-let-syntax.sls index 98fda37..f28e969 100644 --- a/analysis/identifier/rules/fluid-let-syntax.sls +++ b/analysis/identifier/rules/fluid-let-syntax.sls @@ -22,16 +22,15 @@ (try (match expression [(_ (((? symbol? identifier) no-use ... ) **1 ) fuzzy ... ) - (let loop ([rest (index-node-children (cadr (index-node-children index-node)))]) - (if (not (null? rest)) - (let* ([identifier-parent-index-node (car rest)] - [identifier-index-node (car (index-node-children identifier-parent-index-node))]) - (index-node-excluded-references-set! - identifier-parent-index-node - (append - (index-node-excluded-references identifier-parent-index-node) - (let-parameter-process index-node identifier-index-node index-node '() document 'syntax-variable))) - (loop (cdr rest)))))] + (fold-left + (lambda (exclude-list identifier-parent-index-node) + (let* ([identifier-index-node (car (index-node-children identifier-parent-index-node))] + [extended-exclude-list + (append exclude-list (let-parameter-process index-node identifier-index-node index-node exclude-list document 'syntax-variable))]) + (index-node-excluded-references-set! (index-node-parent identifier-parent-index-node) extended-exclude-list) + extended-exclude-list)) + '() + (index-node-children (cadr (index-node-children index-node))))] [else '()]) (except c [else '()])))) diff --git a/analysis/identifier/rules/fluid-let.sls b/analysis/identifier/rules/fluid-let.sls index 04b28f4..582869b 100644 --- a/analysis/identifier/rules/fluid-let.sls +++ b/analysis/identifier/rules/fluid-let.sls @@ -22,16 +22,15 @@ (try (match expression [(_ (((? symbol? identifier) no-use ... ) **1 ) fuzzy ... ) - (let loop ([rest (index-node-children (cadr (index-node-children index-node)))]) - (if (not (null? rest)) - (let* ([identifier-parent-index-node (car rest)] - [identifier-index-node (car (index-node-children identifier-parent-index-node))]) - (index-node-excluded-references-set! - identifier-parent-index-node - (append - (index-node-excluded-references identifier-parent-index-node) - (let-parameter-process index-node identifier-index-node index-node '() document 'variable))) - (loop (cdr rest)))))] + (fold-left + (lambda (exclude-list identifier-parent-index-node) + (let* ([identifier-index-node (car (index-node-children identifier-parent-index-node))] + [extended-exclude-list + (append exclude-list (let-parameter-process index-node identifier-index-node index-node exclude-list document 'variable))]) + (index-node-excluded-references-set! (index-node-parent identifier-parent-index-node) extended-exclude-list) + extended-exclude-list)) + '() + (index-node-children (cadr (index-node-children index-node))))] [else '()]) (except c [else '()])))) diff --git a/analysis/identifier/rules/let*-values.sls b/analysis/identifier/rules/let*-values.sls index 06657a1..1e508bb 100644 --- a/analysis/identifier/rules/let*-values.sls +++ b/analysis/identifier/rules/let*-values.sls @@ -22,14 +22,17 @@ (try (match expression [(_ (((? symbol? identifier) no-use ... ) **1 ) fuzzy ... ) - (let loop ([include '()] - [rest (index-node-children (cadr (index-node-children index-node)))]) - (if (not (null? rest)) - (let* ([identifier-parent-index-node (car rest)] - [identifier-index-node (car (index-node-children identifier-parent-index-node))] - [reference-list (let-parameter-process index-node identifier-index-node index-node '() document 'continuation)]) - (append-references-into-ordered-references-for document identifier-parent-index-node include) - (loop (append include reference-list) (cdr rest)))))] + (fold-left + (lambda (exclude-list identifier-parent-index-node) + (fold-left + (lambda (exclude-list identifier-index-node) + (let ([extended-exclude-list (append exclude-list (let-parameter-process index-node identifier-index-node index-node exclude-list document 'continuation))]) + (index-node-excluded-references-set! (index-node-parent identifier-parent-index-node) extended-exclude-list) + extended-exclude-list)) + exclude-list + (index-node-children (car (index-node-children identifier-parent-index-node))))) + '() + (reverse (index-node-children (cadr (index-node-children index-node)))))] [else '()]) (except c [else '()])))) diff --git a/analysis/identifier/rules/let*.sls b/analysis/identifier/rules/let*.sls index 8b616da..a3abe52 100644 --- a/analysis/identifier/rules/let*.sls +++ b/analysis/identifier/rules/let*.sls @@ -22,19 +22,14 @@ (try (match expression [(_ (((? symbol? identifier) no-use ... ) **1 ) fuzzy ... ) - (let loop ([include '()] - [rest (index-node-children (cadr (index-node-children index-node)))]) - (if (not (null? rest)) - (let* ([identifier-parent-index-node (car rest)] - [identifier-index-node (car (index-node-children identifier-parent-index-node))] - [reference-list (let-parameter-process index-node identifier-index-node index-node '() document 'variable)]) - (index-node-excluded-references-set! - identifier-parent-index-node - (append - (index-node-excluded-references identifier-parent-index-node) - reference-list)) - (append-references-into-ordered-references-for document identifier-parent-index-node include) - (loop (append include reference-list) (cdr rest)))))] + (fold-left + (lambda (exclude-list identifier-parent-index-node) + (let* ([identifier-index-node (car (index-node-children identifier-parent-index-node))] + [extended-exclude-list (append exclude-list (let-parameter-process index-node identifier-index-node index-node exclude-list document 'variable))]) + (index-node-excluded-references-set! identifier-parent-index-node extended-exclude-list) + extended-exclude-list)) + '() + (reverse (index-node-children (cadr (index-node-children index-node)))))] [else '()]) (except c [else '()])))) diff --git a/analysis/identifier/rules/let-syntax.sls b/analysis/identifier/rules/let-syntax.sls index 17e74a2..2a23ec6 100644 --- a/analysis/identifier/rules/let-syntax.sls +++ b/analysis/identifier/rules/let-syntax.sls @@ -22,16 +22,15 @@ (try (match expression [(_ (((? symbol? identifier) no-use ... ) **1 ) fuzzy ... ) - (let loop ([rest (index-node-children (cadr (index-node-children index-node)))]) - (if (not (null? rest)) - (let* ([identifier-parent-index-node (car rest)] - [identifier-index-node (car (index-node-children identifier-parent-index-node))]) - (index-node-excluded-references-set! - identifier-parent-index-node - (append - (index-node-excluded-references identifier-parent-index-node) - (let-parameter-process index-node identifier-index-node index-node '() document 'syntax-variable))) - (loop (cdr rest)))))] + (fold-left + (lambda (exclude-list identifier-parent-index-node) + (let* ([identifier-index-node (car (index-node-children identifier-parent-index-node))] + [extended-exclude-list + (append exclude-list (let-parameter-process index-node identifier-index-node index-node exclude-list document 'syntax-variable))]) + (index-node-excluded-references-set! (index-node-parent identifier-parent-index-node) extended-exclude-list) + extended-exclude-list)) + '() + (index-node-children (cadr (index-node-children index-node))))] [else '()]) (except c [else '()])))) diff --git a/analysis/identifier/rules/let-values.sls b/analysis/identifier/rules/let-values.sls index 317afb0..6cd9c36 100644 --- a/analysis/identifier/rules/let-values.sls +++ b/analysis/identifier/rules/let-values.sls @@ -21,17 +21,18 @@ [expression (annotation-stripped ann)]) (try (match expression - [(_ (((? symbol? identifier) no-use ... ) **1 ) fuzzy ... ) - (let loop ([rest (index-node-children (cadr (index-node-children index-node)))]) - (if (not (null? rest)) - (let* ([identifier-parent-index-node (car rest)] - [identifier-index-node (car (index-node-children identifier-parent-index-node))]) - (index-node-excluded-references-set! - identifier-parent-index-node - (append - (index-node-excluded-references identifier-parent-index-node) - (let-parameter-process index-node identifier-index-node index-node '() document 'continuation))) - (loop (cdr rest)))))] + [(_ ((((? symbol? identifier) **1) no-use ... ) **1 ) fuzzy ... ) + (fold-left + (lambda (exclude-list identifier-parent-index-node) + (fold-left + (lambda (exclude-list identifier-index-node) + (let ([extended-exclude-list (append exclude-list (let-parameter-process index-node identifier-index-node index-node exclude-list document 'continuation))]) + (index-node-excluded-references-set! (index-node-parent identifier-parent-index-node) extended-exclude-list) + extended-exclude-list)) + exclude-list + (index-node-children (car (index-node-children identifier-parent-index-node))))) + '() + (index-node-children (cadr (index-node-children index-node))))] [else '()]) (except c [else '()])))) diff --git a/analysis/identifier/rules/let.sls b/analysis/identifier/rules/let.sls index ea3d831..3ffbc70 100644 --- a/analysis/identifier/rules/let.sls +++ b/analysis/identifier/rules/let.sls @@ -23,28 +23,25 @@ (try (match expression [(_ (? symbol? loop-identifier) (((? symbol? identifier) no-use ... ) **1 ) fuzzy ... ) - (let ([loop-reference-list (let-parameter-process index-node (cadr (index-node-children index-node)) index-node '() document 'procedure)]) - (let loop ([rest (index-node-children (caddr (index-node-children index-node)))]) - (if (not (null? rest)) - (let* ([identifier-parent-index-node (car rest)] - [identifier-index-node (car (index-node-children identifier-parent-index-node))]) - (index-node-excluded-references-set! - identifier-parent-index-node - (append - (index-node-excluded-references identifier-parent-index-node) - (let-parameter-process index-node identifier-index-node index-node loop-reference-list document 'variable))) - (loop (cdr rest))))))] + (fold-left + (lambda (exclude-list identifier-parent-index-node) + (let* ([identifier-index-node (car (index-node-children identifier-parent-index-node))] + [extended-exclude-list + (append exclude-list (let-parameter-process index-node identifier-index-node index-node exclude-list document 'variable))]) + (index-node-excluded-references-set! (index-node-parent identifier-parent-index-node) extended-exclude-list) + extended-exclude-list)) + (let-parameter-process index-node (cadr (index-node-children index-node)) index-node '() document 'procedure) + (index-node-children (caddr (index-node-children index-node))))] [(_ (((? symbol? identifier) no-use ... ) **1 ) fuzzy ... ) - (let loop ([rest (index-node-children (cadr (index-node-children index-node)))]) - (if (not (null? rest)) - (let* ([identifier-parent-index-node (car rest)] - [identifier-index-node (car (index-node-children identifier-parent-index-node))]) - (index-node-excluded-references-set! - identifier-parent-index-node - (append - (index-node-excluded-references identifier-parent-index-node) - (let-parameter-process index-node identifier-index-node index-node '() document 'variable))) - (loop (cdr rest)))))] + (fold-left + (lambda (exclude-list identifier-parent-index-node) + (let* ([identifier-index-node (car (index-node-children identifier-parent-index-node))] + [extended-exclude-list + (append exclude-list (let-parameter-process index-node identifier-index-node index-node exclude-list document 'variable))]) + (index-node-excluded-references-set! (index-node-parent identifier-parent-index-node) extended-exclude-list) + extended-exclude-list)) + '() + (index-node-children (cadr (index-node-children index-node))))] [else '()]) (except c [else '()])))) @@ -70,11 +67,11 @@ (append-references-into-ordered-references-for document let-node `(,reference)) - (index-node-excluded-references-set! - (index-node-parent index-node) - (append - (index-node-excluded-references index-node) - exclude)) + ; (index-node-excluded-references-set! + ; (index-node-parent index-node) + ; (append + ; (index-node-excluded-references (index-node-parent index-node)) + ; exclude)) `(,reference))) ) diff --git a/analysis/identifier/rules/letrec*.sls b/analysis/identifier/rules/letrec*.sls index 63c5e80..f291388 100644 --- a/analysis/identifier/rules/letrec*.sls +++ b/analysis/identifier/rules/letrec*.sls @@ -22,14 +22,14 @@ (try (match expression [(_ (((? symbol? identifier) no-use ... ) **1 ) fuzzy ... ) - (let loop ([include '()] - [rest (index-node-children (cadr (index-node-children index-node)))]) - (if (not (null? rest)) - (let* ([identifier-parent-index-node (car rest)] - [identifier-index-node (car (index-node-children identifier-parent-index-node))] - [reference-list (let-parameter-process index-node identifier-index-node index-node '() document 'variable)]) - (append-references-into-ordered-references-for document identifier-parent-index-node include) - (loop (append include reference-list) (cdr rest)))))] + (fold-left + (lambda (exclude-list identifier-parent-index-node) + (let* ([identifier-index-node (car (index-node-children identifier-parent-index-node))] + [extended-exclude-list (append exclude-list (let-parameter-process index-node identifier-index-node index-node exclude-list document 'variable))]) + (index-node-excluded-references-set! identifier-parent-index-node exclude-list) + extended-exclude-list)) + '() + (reverse (index-node-children (cadr (index-node-children index-node)))))] [else '()]) (except c [else '()])))) diff --git a/analysis/identifier/rules/letrec-syntax.sls b/analysis/identifier/rules/letrec-syntax.sls index 17f0cbf..f2baff7 100644 --- a/analysis/identifier/rules/letrec-syntax.sls +++ b/analysis/identifier/rules/letrec-syntax.sls @@ -22,13 +22,14 @@ (try (match expression [(_ (((? symbol? identifier) no-use ... ) **1 ) fuzzy ... ) - (guard-for document index-node 'letrec-syntax '(chezscheme) '(rnrs) '(rnrs base) '(scheme)) - (let loop ([exclude '()] - [rest (index-node-children (cadr (index-node-children index-node)))]) - (if (not (null? rest)) - (let* ([identifier-parent-index-node (car rest)] - [identifier-index-node (car (index-node-children identifier-parent-index-node))]) - (loop (append exclude (let-parameter-process index-node identifier-index-node index-node exclude document 'syntax-variable)) (cdr rest)))))] + (fold-left + (lambda (exclude-list identifier-parent-index-node) + (let* ([identifier-index-node (car (index-node-children identifier-parent-index-node))] + [extended-exclude-list (append exclude-list (let-parameter-process index-node identifier-index-node index-node exclude-list document 'syntax-variable))]) + (index-node-excluded-references-set! (index-node-parent identifier-parent-index-node) exclude-list) + extended-exclude-list)) + '() + (index-node-children (cadr (index-node-children index-node))))] [else '()]) (except c [else '()])))) diff --git a/analysis/identifier/rules/letrec.sls b/analysis/identifier/rules/letrec.sls index 793c2c4..c8dc580 100644 --- a/analysis/identifier/rules/letrec.sls +++ b/analysis/identifier/rules/letrec.sls @@ -22,12 +22,14 @@ (try (match expression [(_ (((? symbol? identifier) no-use ... ) **1 ) fuzzy ... ) - (let loop ([exclude '()] - [rest (index-node-children (cadr (index-node-children index-node)))]) - (if (not (null? rest)) - (let* ([identifier-parent-index-node (car rest)] - [identifier-index-node (car (index-node-children identifier-parent-index-node))]) - (loop (append exclude (let-parameter-process index-node identifier-index-node index-node exclude document 'variable)) (cdr rest)))))] + (fold-left + (lambda (exclude-list identifier-parent-index-node) + (let* ([identifier-index-node (car (index-node-children identifier-parent-index-node))] + [extended-exclude-list (append exclude-list (let-parameter-process index-node identifier-index-node index-node exclude-list document 'variable))]) + (index-node-excluded-references-set! (index-node-parent identifier-parent-index-node) exclude-list) + extended-exclude-list)) + '() + (index-node-children (cadr (index-node-children index-node))))] [else '()]) (except c [else '()])))) From f783015a555290034371de8956bf08503ea0145b Mon Sep 17 00:00:00 2001 From: ufo5260987423 Date: Sat, 12 Oct 2024 23:24:21 +0800 Subject: [PATCH 02/44] fix --- analysis/identifier/reference.sls | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/analysis/identifier/reference.sls b/analysis/identifier/reference.sls index 1d70542..942335f 100644 --- a/analysis/identifier/reference.sls +++ b/analysis/identifier/reference.sls @@ -242,7 +242,13 @@ (document-ordered-reference-list document) (find-available-references-for document (index-node-parent current-index-node)))))] [(document current-index-node identifier) - (find-available-references-for document current-index-node identifier '())] + (let ([expression (annotation-stripped (index-node-datum/annotations current-index-node))] + [export-list (index-node-references-export-to-other-node current-index-node)]) + (if (and + (find (lambda (i) (equal? identifier (identifier-reference-identifier i))) export-list) + (equal? expression identifier)) + '() + (find-available-references-for document current-index-node identifier '())))] [(document current-index-node identifier exclude) (let* ([current-exclude (append exclude (index-node-excluded-references current-index-node))] [tmp-result From dcd1954cdd6d1223769119240fe0c683134d8fbd Mon Sep 17 00:00:00 2001 From: ufo5260987423 Date: Sun, 13 Oct 2024 11:22:29 +0800 Subject: [PATCH 03/44] fix --- analysis/tokenizer.sls | 4 ++-- analysis/workspace.sls | 24 ++++++++++++++++-------- 2 files changed, 18 insertions(+), 10 deletions(-) diff --git a/analysis/tokenizer.sls b/analysis/tokenizer.sls index a9fa2fa..b7f5518 100644 --- a/analysis/tokenizer.sls +++ b/analysis/tokenizer.sls @@ -51,7 +51,7 @@ [what (vector-ref (list->vector (string->list source)) position)] [rest (string-take-right source (- (string-length source) position 1))]) (private:tolerant-parse->patch (string-append head " " rest)))] - [else (pretty-print e)])))) + [else (raise 'can-not-tolerant)])))) (define source-file->annotations (case-lambda @@ -70,7 +70,7 @@ `(,ann . ,(loop (port-position port))))) (except e [(and tolerant? (condition? e)) - (let ([after (private:tolerant-parse->patch source) ]) + (let ([after (private:tolerant-parse->patch source)]) (if (= (string-length after) (string-length source)) (source-file->annotations after path start-position #f) (raise 'can-not-tolerant)))] diff --git a/analysis/workspace.sls b/analysis/workspace.sls index 11a051e..2fdb494 100644 --- a/analysis/workspace.sls +++ b/analysis/workspace.sls @@ -85,6 +85,7 @@ [(path threaded?) (init-workspace path 'akku threaded? #f)] [(path threaded? type-inference?) (init-workspace path 'akku threaded? type-inference?)] [(path identifier threaded? type-inference?) + ; (pretty-print 'init) (let* ([root-file-node (init-virtual-file-system path '() (cond @@ -95,9 +96,9 @@ [file-linkage (init-file-linkage root-file-node root-library-node)] [paths (get-init-reference-path file-linkage)] [batches (shrink-paths file-linkage paths)]) - ;; (pretty-print 'aaa) + ; (pretty-print 'aaa) (init-references root-file-node root-library-node file-linkage threaded? batches type-inference?) - ;; (pretty-print 'eee) + ; (pretty-print 'eee) (make-workspace root-file-node root-library-node file-linkage identifier threaded? type-inference?))])) ;; head -[linkage]->files @@ -242,12 +243,19 @@ '())) (define (init-document path) - (let ([uri (path->uri path)]) - (make-document - uri - (read-string path) - (map (lambda (item) (init-index-node '() item)) (source-file->annotations path)) - (find-meta '(chezscheme))))) + (let ([uri (path->uri path)] + [s (read-string path)]) + (if (string? s) + (try + (make-document + uri + s + (map (lambda (item) (init-index-node '() item)) (source-file->annotations path)) + (find-meta '(chezscheme))) + (except c + [(equal? c 'can-not-tolerant) '()] + [else '()])) + '()))) (define init-library-node (case-lambda From 3064013ab479293de9d0a73dd635969c8ce0de77 Mon Sep 17 00:00:00 2001 From: ufo5260987423 Date: Mon, 14 Oct 2024 22:23:50 +0800 Subject: [PATCH 04/44] implement json with srfi-180 --- Akku.lock | 5 + Akku.manifest | 3 +- util/json.sls | 767 +------------------------------------------------- 3 files changed, 12 insertions(+), 763 deletions(-) diff --git a/Akku.lock b/Akku.lock index e5fbee6..781af31 100644 --- a/Akku.lock +++ b/Akku.lock @@ -67,6 +67,11 @@ (url "https://archive.akkuscm.org/archive/pkg/s/struct-pack_1.1.1_repack.tar.xz")) (content (sha256 "42d34a4d7052bdda1bddec0dfddd8f1e576bd0a51b483215a4ca3a8ed7b56d09"))) + ((name "srfi-180") + (location + (url "https://archive.akkuscm.org/archive/pkg/s/srfi-180_1.0.0-alpha.0_repack.tar.xz")) + (content + (sha256 "7a4682649ad97ffdca566b9e0736c67c7fcb7b3347887fbcf07ec19c7ff2c233"))) ((name "ufo-thread-pool") (location (url "https://archive.akkuscm.org/archive/pkg/u/ufo-thread-pool_1.0.3_repack.tar.xz")) diff --git a/Akku.manifest b/Akku.manifest index 01e4643..f04bf7d 100644 --- a/Akku.manifest +++ b/Akku.manifest @@ -6,7 +6,8 @@ "This package is a language server protocol implementation helping scheme programming.") (authors "WANG Zheng") (license "MIT") - (depends ("ufo-thread-pool" "^1.0.3") + (depends ("srfi-180" "^1.0.0-alpha.0") + ("ufo-thread-pool" "^1.0.3") ("ufo-threaded-function" "^1.0.4") ("uuid" "^1.0.0-beta.0") ((chibi pathname) "^0.9.0") diff --git a/util/json.sls b/util/json.sls index b0f6320..df575b1 100644 --- a/util/json.sls +++ b/util/json.sls @@ -2,770 +2,13 @@ (export read-json generate-json) (import (chezscheme) - (srfi :145) - (only (srfi :60) arithmetic-shift bitwise-ior)) + (srfi-180)) (define (read-json string) - (json-read (open-input-string string))) + (json-read (open-input-string string))) (define (generate-json alist) - (let ([port (open-output-string)]) - (json-write alist port) - (get-output-string port))) - -(define (%read-error? x) - (error? x)) - -(define (valid-number? string) - (number? (string->number string))) - -(define (pk . args) - (write args) - (newline) - (car (reverse args))) - -(define json-number-of-character-limit (make-parameter +inf.0)) - -(define json-nesting-depth-limit (make-parameter +inf.0)) - -(define (json-null? obj) - (eq? obj 'null)) - -(define-record-type json-error - (fields - (mutable reason))) - -(define (json-whitespace? char) - (case char - ((#\x20 ; Space - #\x09 ; Horizontal tab - #\x0A ; Line feed or New line - #\x0D - #\x1E ;; Record Separator - ) - #t) - (else #f))) - -(define (expect value other) - (when (eof-object? value) - (raise (make-json-error "Unexpected end-of-file."))) - (assume (and (char? value) (char? other)) "invalid argument" '%json-tokens expect value other) - (unless (char=? value other) - (raise (make-json-error "Unexpected character.")))) - -(define (port->generator port) - (let ((count 0) - (limit (json-number-of-character-limit))) - (lambda () - (let ((out (guard (ex ((%read-error? ex) (raise (make-json-error "Read error!")))) - (read-char port)))) - (if (= count limit) - (raise (make-json-error "Maximum number of character reached.")) - (begin - (set! count (+ count 1)) - out)))))) - -(define (gcons head generator) - ;; returns a generator that will yield, HEAD the first time, and - ;; after than, it will yield items from GENERATOR. - (let ((head? #t)) - (lambda () - (if head? - (begin (set! head? #f) head) - (generator))))) - -(define (%json-tokens generator) - - (define (maybe-ignore-whitespace generator) - (let loop ((char (generator))) - (if (json-whitespace? char) - (loop (generator)) - char))) - - (define (expect-null generator) - (expect (generator) #\u) - (expect (generator) #\l) - (expect (generator) #\l)) - - (define (expect-true generator) - (expect (generator) #\r) - (expect (generator) #\u) - (expect (generator) #\e)) - - (define (expect-false generator) - (expect (generator) #\a) - (expect (generator) #\l) - (expect (generator) #\s) - (expect (generator) #\e)) - - (define (maybe-char generator) - (let ((char (generator))) - (when (eof-object? char) - (raise (make-json-error "Unexpected end-of-file."))) - (when (char=? char #\") - (raise (make-json-error "Unexpected end of string."))) - char)) - - (define (read-unicode-escape generator) - (let* ((one (maybe-char generator)) - (two (maybe-char generator)) - (three (maybe-char generator)) - (four (maybe-char generator))) - (let ((out (string->number (list->string (list one two three four)) 16))) - (if out - out - (raise (make-json-error "Invalid code point.")))))) - - (define ash arithmetic-shift) - - (define (read-json-string generator) - (let loop ((char (generator)) - (out '())) - - (when (eof-object? char) - (raise (make-json-error "Unexpected end of file."))) - - (when (or (char=? char #\x00) - (char=? char #\newline) - (char=? char #\tab)) - (raise (make-json-error "Unescaped control char."))) - - ;; XXX: Here be dragons. - (if (char=? char #\\) - (begin - (let loop-unescape ((char (generator)) - (chars-unescaped '())) - (case char - ((#\" #\\ #\/) (loop (generator) - (cons char (append chars-unescaped - out)))) - ((#\b) (loop (generator) (cons #\backspace - (append chars-unescaped - out)))) - ((#\f) (loop (generator) (cons #\x0C - (append chars-unescaped - out)))) - ((#\n) (loop (generator) (cons #\newline - (append chars-unescaped - out)))) - ((#\r) (loop (generator) (cons #\x0D - (append chars-unescaped - out)))) - ((#\t) (loop (generator) (cons #\tab - (append chars-unescaped - out)))) - ((#\u) (let loop-unicode ((code1 (read-unicode-escape generator)) - (chars chars-unescaped)) - (let ((next-char (generator))) - (if (and (<= #xd800 code1 #xdbff) - (char=? next-char #\\)) - (if (char=? (generator) #\u) - (let ((code2 (read-unicode-escape generator))) - (if (<= #xdc00 code2 #xdfff) - (let ((integer - (+ #x10000 (bitwise-ior - (ash (- code1 #xd800) 10) - (- code2 #xdc00))))) - ;; full escape of unicode is parsed... - (loop (generator) - (cons (integer->char integer) - (append chars - out)))) - ;; This is another unicode char - (loop-unicode (read-unicode-escape generator) - (cons (integer->char code1) chars)))) - ;; The escaped unicode char is - ;; parsed, need to parse another - ;; escape that is not a unicode - ;; escape sequence - (loop-unescape char (cons (integer->char code1) - chars))) - ;; This is not a big-ish unicode char and - ;; the next thing is some other char. - (loop next-char - (cons (integer->char code1) (append chars out))))))) - (else (raise (make-json-error "Unexpected escaped sequence.")))))) - (cond - ((char=? char #\") - (list->string (reverse out))) - (else - (loop (generator) (cons char out))))))) - - (define (maybe-read-number generator) - ;; accumulate chars until a control char or whitespace is reached, - ;; validate that it is JSON number, then intrepret it as Scheme - ;; number using string->number - (let loop ((char (generator)) - (out '())) - (if (or (eof-object? char) - (json-whitespace? char) - (char=? char #\,) - (char=? char #\]) - (char=? char #\})) - (let ((string (list->string (reverse out)))) - (if (valid-number? string) - (let ((number (string->number string))) - (if number - (values number char) - (raise (make-json-error "Invalid number.")))) - (raise (make-json-error "Invalid number.")))) - (loop (generator) (cons char out))))) - - ;; gist - (assume (procedure? generator) "invalid argument" generator) - - (let ((char (generator))) - (if (eof-object? char) - eof-object ;; return an empty generator - (begin - - (unless (char=? char #\xFEFF) - ;; if it is not a UTF-8 BOM, put back the char in front of - ;; the generator - (set! generator (gcons char generator))) - - (lambda () - - (define char (maybe-ignore-whitespace generator)) - - (if (eof-object? char) - char ;; return that eof-object - (case char - ((#\n) (expect-null generator) 'null) - ((#\t) (expect-true generator) #t) - ((#\f) (expect-false generator) #f) - ((#\:) 'colon) - ((#\,) 'comma) - ((#\[) 'array-start) - ((#\]) 'array-end) - ((#\{) 'object-start) - ((#\}) 'object-end) - ((#\") (read-json-string generator)) - (else - (call-with-values (lambda () (maybe-read-number (gcons char generator))) - (lambda (number next) - (set! generator (gcons next generator)) - number)))))))))) - -(define json-tokens - (case-lambda - (() (json-tokens (current-input-port))) - ((port-or-generator) - (cond - ((procedure? port-or-generator) - (%json-tokens port-or-generator)) - ((and (textual-port? port-or-generator) (input-port? port-or-generator)) - (%json-generator (port->generator port-or-generator))) - (else (error 'json "json-tokens error, argument is not valid" port-or-generator)))))) - -(define (%json-generator tokens) - - (define limit (json-nesting-depth-limit)) - (define count 0) - - (define (handle-limit!) - (if (= count limit) - (raise (make-json-error "Maximum JSON nesting depth reached")) - (set! count (+ count 1)))) - - (define (array-maybe-continue tokens k) - (lambda () - (let ((token (tokens))) - (case token - ((comma) (start tokens (array-maybe-continue tokens k))) - ((array-end) (values 'array-end k)) - (else (raise (make-json-error "Invalid array, expected comma or array close."))))))) - - (define (array-start tokens k) - (lambda () - (handle-limit!) - (let ((token (tokens))) - (if (eq? token 'array-end) - (values 'array-end k) - (start (gcons token tokens) (array-maybe-continue tokens k)))))) - - (define (object-maybe-continue tokens k) - (lambda () - (let ((token (tokens))) - (case token - ((object-end) (values 'object-end k)) - ((comma) (let ((token (tokens))) - (unless (string? token) - (raise (make-json-error "Invalid object, expected an object key"))) - (values token - (object-colon tokens k)))) - (else (raise (make-json-error "Invalid object, expected comma or object close."))))))) - - (define (object-colon tokens k) - (lambda () - (let ((token (tokens))) - (if (eq? token 'colon) - (let ((token (tokens))) - (if (eof-object? token) - (raise (make-json-error "Invalid object, expected object value.")) - (start (gcons token tokens) (object-maybe-continue tokens k)))) - (raise (make-json-error "Invalid object, expected colon.")))))) - - (define (object-start tokens k) - (lambda () - (handle-limit!) - (let ((token (tokens))) - (cond - ((eq? token 'object-end) (values 'object-end k)) - ((string? token) - (values token - (object-colon tokens k))) - (else (raise (make-json-error "Invalid object, expected object key or object close."))))))) - - (define (start tokens k) - (let ((token (tokens))) - (if (eof-object? token) - (values token k) - (cond - ((or (json-null? token) - (number? token) - (string? token) - (boolean? token)) - (values token k)) - ((eq? token 'array-start) - (values 'array-start (array-start tokens k))) - ((eq? token 'object-start) - (values 'object-start (object-start tokens k))) - (else (raise (make-json-error "Is it JSON text?!"))))))) - - (define (end-of-top-level-value) - ;; json-generator returns a generator that reads one top-level - ;; json. If there is more than one top-level json value in the - ;; generator separated with space as it is the case of json-lines, - ;; you need to call json-generator with the same port or - ;; generator. - (values (eof-object) #f)) - - (define (make-trampoline-generator tokens) - (let ((continuation (lambda () (start tokens end-of-top-level-value)))) - (lambda () - (when continuation - (call-with-values continuation - (lambda (event new-continuation) - (set! continuation new-continuation) - event)))))) - - ;; gist - - (assume (procedure? tokens) "invalid argument" %json-generator tokens) - - (make-trampoline-generator tokens)) - -(define json-generator-error - "Argument does not look like a generator and is not a textual input port.") - -(define json-generator - (case-lambda - (() (json-generator (current-input-port))) - ((port) - (%json-generator (json-tokens (port->generator port)))))) - -;; XXX: procedure foldts is not used as-is. It was copied here for -;; documentation purpose (public domain, by Oleg Kiselyov). -(define (foldts fdown fup fhere seed tree) - ;; - fhere is applied to the leafs of the tree - ;; - ;; - fdown is invoked when a non-leaf node is entered before any of - ;; the node's children are visited. fdown action has to generate a - ;; seed to be passed to the first visited child of the node. - ;; - ;; - fup is invoked after all the children of a node have been - ;; seen. The first argument is the local state at the moment the - ;; traversal process enters the branch rooted at the current node. The - ;; second argument is the result of visiting all child branches. The - ;; action of fup isto produce a seed that is taken to be the state of - ;; the traversal after the process leave the currents the current - ;; branch. - (cond - ((null? tree) seed) - ((not (pair? tree)) ; An atom - (fhere seed tree)) - (else - (let loop ((kid-seed (fdown seed tree)) - (kids (cdr tree))) - (if (null? kids) - (fup seed kid-seed tree) - (loop (foldts fdown fup fhere kid-seed (car kids)) - (cdr kids))))))) - -(define (%json-fold proc array-start array-end object-start object-end seed port-or-generator) - - ;; json-fold is inspired from the above foldts definition, unlike - ;; the above definition, it is continuation-passing-style. fhere is - ;; renamed PROC. Unlike foldts, json-fold will call (proc obj seed) - ;; everytime a JSON value or complete structure is read from the - ;; EVENTS generator, where OBJ will be: a) In the case of - ;; structures, the the result of the recursive call or b) a JSON - ;; value. - - ;; json-fold will terminates in three cases: - ;; - ;; - eof-object was generated, return the seed. - ;; - ;; - event-type 'array-end is generated, if EVENTS is returned by - ;; json-generator, it means a complete array was read. - ;; - ;; - event-type 'object-end is generated, similarly, if EVENTS is - ;; returned by json-generator, it means complete array was - ;; read. - ;; - ;; IF EVENTS does not follow the json-generator protocol, the - ;; behavior is unspecified. - - (define events (json-generator port-or-generator)) - - (define (ruse seed k) - (lambda () - (let loop ((seed seed)) - (let ((event (events))) - (if (eof-object? event) - (begin (k seed) #f) - (case event - ;; termination cases - ((array-end) (k seed)) - ((object-end) (k seed)) - ;; recursion - ((array-start) (ruse (array-start seed) - (lambda (out) (loop (proc (array-end out) seed))))) - ((object-start) (ruse (object-start seed) - (lambda (out) (loop (proc (object-end out) seed))))) - (else (loop (proc event seed))))))))) - - (define (make-trampoline-fold k) - (let ((thunk (ruse seed k))) - (let loop ((thunk thunk)) - (when thunk - (loop (thunk)))))) - - (define %unset '(unset)) - - (let ((out %unset)) - (define (escape out*) - (set! out out*) - #f) - (make-trampoline-fold escape) - (if (eq? out %unset) - (error 'json "Is this JSON text") - out))) - -(define json-fold - (case-lambda - ((proc array-start array-end object-start object-end seed) - (json-fold proc array-start array-end object-start object-end seed (current-input-port))) - ((proc array-start array-end object-start object-end seed port-or-generator) - (%json-fold proc array-start array-end object-start object-end seed port-or-generator)))) - -(define (%json-read port-or-generator) - - (define %root '(root)) - - (define (array-start seed) - ;; array will be read as a list, then converted into a vector in - ;; array-end. - '()) - - (define (array-end items) - (list->vector (reverse items))) - - (define (object-start seed) - ;; object will be read as a property list, then converted into an - ;; alist in object-end. - '()) - - (define (plist->alist plist) - ;; PLIST is a list of even items, otherwise json-generator - ;; would have raised a json-error. - (let loop ((plist plist) - (out '())) - (if (null? plist) - out - (loop (cddr plist) (cons (cons (string->symbol (cadr plist)) (car plist)) out))))) - - (define object-end plist->alist) - - (define (proc obj seed) - ;; proc is called when a JSON value or structure was completly - ;; read. The parse result is passed as OBJ. In the case where - ;; what is parsed is a JSON simple json value then OBJ is simply - ;; the token that is read that can be 'null, a number or a string. - ;; In the case where what is parsed is a JSON structure, OBJ is - ;; what is returned by OBJECT-END or ARRAY-END. - (if (eq? seed %root) - ;; It is toplevel, a complete JSON value or structure was read, - ;; return it. - obj - ;; This is not toplevel, hence json-fold is called recursivly, - ;; to parse an array or object. Both ARRAY-START and - ;; OBJECT-START return an empty list as a seed to serve as an - ;; accumulator. Both OBJECT-END and ARRAY-END expect a list - ;; as argument. - (cons obj seed))) - - (let ((out (json-fold proc - array-start - array-end - object-start - object-end - %root - port-or-generator))) - ;; if out is the root object, then the port or generator is empty. - (if (eq? out %root) - (eof-object) - out))) - -(define json-read - (case-lambda - (() (json-read (current-input-port))) - ((port-or-generator) (%json-read port-or-generator)))) - -;; json-lines-read - -(define json-lines-read - (case-lambda - (() (json-lines-read (current-input-port))) - ((port-or-generator) - (lambda () - (json-read port-or-generator))))) - -;; json-sequence-read - -(define json-sequence-read - (case-lambda - (() (json-sequence-read (current-input-port))) - ((port-or-generator) - (lambda () - (let loop () - (guard (ex ((json-error? ex) (loop))) - (json-read port-or-generator))))))) - -;; write procedures - -(define (json-accumulator accumulator) - - (define (write-json-char char accumulator) - (case char - ((#\x00) (accumulator "\\u0000")) - ((#\") (accumulator "\\\"")) - ((#\\) (accumulator "\\\\")) - ((#\/) (accumulator "\\/")) - ((#\return) (accumulator "\\r")) - ((#\newline) (accumulator "\\n")) - ((#\tab) (accumulator "\\t")) - ((#\backspace) (accumulator "\\b")) - ((#\x0c) (accumulator "\\f")) - (else (accumulator char)))) - - (define (write-json-string string accumulator) - (accumulator #\") - (string-for-each - (lambda (char) (write-json-char char accumulator)) - string) - (accumulator #\")) - - (define (write-json-value obj accumulator) - (cond - ((eq? obj 'null) (accumulator "null")) - ((boolean? obj) (if obj - (accumulator "true") - (accumulator "false"))) - ((string? obj) (write-json-string obj accumulator)) - ((number? obj) (accumulator (number->string obj))) - (else (raise (make-json-error "Invalid json value."))))) - - (define (raise-invalid-event event) - (raise event)) - ;;(raise (make-json-error "json-accumulator: invalid event."))) - - (define (object-start k) - (lambda (accumulator event) - (accumulator #\{) - (case (car event) - ((json-value) - (let ((key (cdr event))) - (unless (symbol? key) (raise-invalid-event event)) - (write-json-string (symbol->string key) accumulator) - (object-value k))) - ((json-structure) - (case (cdr event) - ((object-end) - (accumulator #\}) - k) - (else (raise-invalid-event event)))) - (else (raise-invalid-event event))))) - - (define (object-value k) - (lambda (accumulator event) - (accumulator #\:) - (case (car event) - ((json-value) - (write-json-value (cdr event) accumulator) - (object-maybe-continue k)) - ((json-structure) - (case (cdr event) - ((array-start) - (array-start (object-maybe-continue k))) - ((object-start) - (object-start (object-maybe-continue k))) - (else (raise-invalid-event event)))) - (else (raise-invalid-event event))))) - - (define (object-maybe-continue k) - (lambda (accumulator event) - (case (car event) - ((json-value) - (accumulator #\,) - (let ((key (cdr event))) - (unless (symbol? key) (raise-invalid-event event)) - (write-json-value (symbol->string key) accumulator) - (object-value k))) - ((json-structure) - (case (cdr event) - ((object-end) - (accumulator #\}) - k) - (else (raise-invalid-event event)))) - (else (raise-invalid-event event))))) - - (define (array-start k) - (lambda (accumulator event) - (accumulator #\[) - (case (car event) - ((json-value) - (write-json-value (cdr event) accumulator) - (array-maybe-continue k)) - ((json-structure) - (case (cdr event) - ((array-end) - (accumulator #\]) - k) - ((array-start) (array-start (array-maybe-continue k))) - ((object-start) (object-start (array-maybe-continue k))) - (else (raise-invalid-event event)))) - (else (raise-invalid-event event))))) - - (define (array-maybe-continue k) - (lambda (accumulator event) - (case (car event) - ((json-value) - (accumulator #\,) - (write-json-value (cdr event) accumulator) - (array-maybe-continue k)) - ((json-structure) - (case (cdr event) - ((array-end) - (accumulator #\]) - k) - ((array-start) - (accumulator #\,) - (array-start (array-maybe-continue k))) - ((object-start) - (accumulator #\,) - (object-start (array-maybe-continue k))) - (else (raise-invalid-event event)))) - (else (raise-invalid-event event))))) - - (define (start accumulator event) - (case (car event) - ((json-value) - (write-json-value (cdr event) accumulator) - raise-invalid-event) - ((json-structure) - (case (cdr event) - ((array-start) - (array-start raise-invalid-event)) - ((object-start) - (object-start raise-invalid-event)) - (else (raise-invalid-event event)))) - (else (raise-invalid-event event)))) - - (assume (procedure? accumulator) - "ACCUMULATOR does look like a valid accumulator.") - - (let ((k start)) - (lambda (event) - (set! k (k accumulator event))))) - -(define (%json-write obj accumulator) - - (define (void) - (if #f #f)) - - (define (raise-unless-valid? obj) - (cond - ((null? obj) (void)) - ((eq? obj 'null) (void)) - ((boolean? obj) (void)) - ((string? obj) (void)) - ((and (number? obj) - (not (infinite? obj)) - (not (nan? obj)) - (real? obj) - (or (and (exact? obj) (= (denominator obj) 1)) - (inexact? obj))) - (void)) - ((vector? obj) - (vector-for-each (lambda (obj) (raise-unless-valid? obj)) obj)) - ;; XXX: use pair? then recursively check the tail. - ((pair? obj) - (for-each (lambda (obj) - (unless (pair? obj) - (raise (make-json-error "Unexpected object, not a pair."))) - (unless (symbol? (car obj)) - (raise (make-json-error "Unexpected object, not a symbol key."))) - (raise-unless-valid? (cdr obj))) - obj)) - (else (raise (make-json-error "Unexpected object"))))) - - (define (write obj accumulator) - (cond - ((or (eq? obj 'null) - (boolean? obj) - (string? obj) - (symbol? obj) - (number? obj)) - (accumulator (cons 'json-value obj))) - ((vector? obj) - (accumulator '(json-structure . array-start)) - (vector-for-each (lambda (obj) (write obj accumulator)) obj) - (accumulator '(json-structure . array-end))) - ((null? obj) - (accumulator '(json-structure . object-start)) - (accumulator '(json-structure . object-end))) - ((pair? obj) - (accumulator '(json-structure . object-start)) - (for-each (lambda (pair) - (write (car pair) accumulator) - (write (cdr pair) accumulator)) - obj) - (accumulator '(json-structure . object-end))) - (else (error 'write "Unexpected error!" `(,obj ,accumulator))))) - - (assume (procedure? accumulator) - "ACCUMULATOR does look like a valid accumulator.") - (raise-unless-valid? obj) - (write obj (json-accumulator accumulator))) - -(define (port->accumulator port) - (lambda (char-or-string) - (cond - ((char? char-or-string) (write-char char-or-string port)) - ((string? char-or-string) (put-string port char-or-string)) - (else (raise (make-json-error "Not a char or string")))))) - -(define json-write - (case-lambda - ((obj) (json-write obj (current-output-port))) - ((obj port-or-accumulator) - (assume (or (procedure? port-or-accumulator) - (and (textual-port? port-or-accumulator) - (output-port? port-or-accumulator))) - "ACCUMULATOR does look like a valid accumulator.") - (if (procedure? port-or-accumulator) - (%json-write obj port-or-accumulator) - (%json-write obj (port->accumulator port-or-accumulator)))))) + (let ([port (open-output-string)]) + (json-write alist port) + (get-output-string port))) ) \ No newline at end of file From 27c456e5fe6b1b79f5c4555e79dd4079f1e4f3a0 Mon Sep 17 00:00:00 2001 From: ufo5260987423 Date: Wed, 30 Oct 2024 12:08:24 +0800 Subject: [PATCH 05/44] fix --- analysis/identifier/rules/syntax-case.sls | 1 + 1 file changed, 1 insertion(+) diff --git a/analysis/identifier/rules/syntax-case.sls b/analysis/identifier/rules/syntax-case.sls index 4a71c45..9ca02b9 100644 --- a/analysis/identifier/rules/syntax-case.sls +++ b/analysis/identifier/rules/syntax-case.sls @@ -69,6 +69,7 @@ `(,s-expression) (cond [(list? s-expression) (apply append (map get-all-symbols s-expression))] + [(pair? s-expression) (get-all-symbols `(,(car s-expression) ,(cdr s-expression)))] [(vector? s-expression) (apply append (vector->list (vector-map get-all-symbols s-expression)))] [else '()]))) ) From 34f591c3b0bb8fb90979ae367efa7408e2df81a4 Mon Sep 17 00:00:00 2001 From: ufo5260987423 Date: Wed, 30 Oct 2024 13:59:48 +0800 Subject: [PATCH 06/44] fix:generate-pair:template+callee --- analysis/identifier/macro-expander.sls | 21 ++++++++++++------- .../identifier/test-macro-expander.sps | 4 ++-- 2 files changed, 16 insertions(+), 9 deletions(-) diff --git a/analysis/identifier/macro-expander.sls b/analysis/identifier/macro-expander.sls index 48d459d..41c9c91 100644 --- a/analysis/identifier/macro-expander.sls +++ b/analysis/identifier/macro-expander.sls @@ -88,13 +88,20 @@ (lambda (left maybe-pair) (let* ([head (car maybe-pair)] [tail (cdr maybe-pair)] - [prev-pair (assq head left)]) - (if prev-pair - (append (filter (lambda (p) (not (eq? head (car p)))) left) - (if (index-node? (cdr prev-pair)) - `((,head . (,(cdr prev-pair) ,tail))) - `((,head . (,@(cdr prev-pair) ,tail))))) - (append left (list maybe-pair))))) + [prev-pair (find (lambda (l) (equal? head (car l))) left)] + [head... `(,head ...)] + [prev-pair... (find (lambda (l) (equal? head... (car l))) left)]) + (cond + [prev-pair... + (append + (filter (lambda (p) (not (equal? head... (car p)))) left) + `((,head... . (,@(cdr prev-pair...) ,tail))))] + [prev-pair + (append + (filter (lambda (p) (not (equal? head (car p)))) left) + `((,head... . (,(cdr prev-pair) ,tail))))] + [else (append left (list maybe-pair))] + ))) '() (apply append (map diff --git a/tests/analysis/identifier/test-macro-expander.sps b/tests/analysis/identifier/test-macro-expander.sps index e25c212..433a569 100755 --- a/tests/analysis/identifier/test-macro-expander.sps +++ b/tests/analysis/identifier/test-macro-expander.sps @@ -40,13 +40,13 @@ (test-equal '((match . match) (atom . expression) - (pat ('only (identifier **1) _ ...) + ((pat ...) ('only (identifier **1) _ ...) ('except (identifier **1) _ ...) ('prefix (identifier **1) _ ...) ('rename (identifier **1) _ ...) ('for (identifier **1) 'run ...) ('for (identifier **1) '(meta 0) ...) (identifier **1) else) - (body identifier identifier identifier identifier identifier identifier identifier '())) + ((body ...) identifier identifier identifier identifier identifier identifier identifier '())) (map (lambda (p) `(,(car p) . From a2fa8c56a713eb3f41fd0a2b1a948f3a9d581bc5 Mon Sep 17 00:00:00 2001 From: ufo5260987423 Date: Sat, 9 Nov 2024 16:41:44 +0800 Subject: [PATCH 07/44] fix:generate-pair:template+expanded --- analysis/identifier/macro-expander.sls | 149 +++++++++++++++++-------- 1 file changed, 101 insertions(+), 48 deletions(-) diff --git a/analysis/identifier/macro-expander.sls b/analysis/identifier/macro-expander.sls index 41c9c91..368bf7f 100644 --- a/analysis/identifier/macro-expander.sls +++ b/analysis/identifier/macro-expander.sls @@ -2,7 +2,8 @@ (export expand:step-by-step expand:step-by-step-identifier-reference - generate-pair:template+callee) + generate-pair:template+callee + generate-pair:template+expanded) (import (chezscheme) (ufo-match) @@ -36,52 +37,24 @@ (define (expand:step-by-step identifier-reference callee-index-node callee-document) (map cdr (expand:step-by-step-identifier-reference identifier-reference callee-index-node callee-document))) -;; (define (generate-pair:template+expanded expanded-index-node identifier-reference callee-index-node callee-document) -;; (fold-left -;; (lambda (left maybe-pair) -;; (let* ([head (car maybe-pair)] -;; [tail (cdr maybe-pair)] -;; [prev-pair (assq head left)]) -;; (if prev-pair -;; (append (filter (lambda (p) (not (eq? head (car p)))) left) -;; (if (index-node? (cdr prev-pair)) -;; `((,head . (,(cdr prev-pair) ,tail))) -;; `((,head . (,@(cdr prev-pair) ,tail))))) -;; (append left (list maybe-pair))))) -;; '() -;; (apply append -;; (map -;; (lambda (p) -;; (private:dispatch-for-callee-pair (cdr p) callee-index-node callee-document expanded-index-node)) -;; (private:unwrap identifier-reference))))) - -;; (define (private:dispatch-for-expanded-pair index-node callee-index-node callee-document expanded-index-node) -;; (let* ([expression (annotation-stripped (index-node-datum/annotations index-node))] -;; [children (index-node-children index-node)] -;; [first-child (car children)] -;; [callee-expression (annotation-stripped (index-node-datum/annotations callee-index-node))] -;; [callee-index-nodes (index-node-children callee-index-node)]) -;; (match expression -;; [(syntax-rules-head (keywords ...) clauses **1) -;; (if (root-meta-check callee-document first-child 'syntax-rules) -;; (let* ([clause-index-nodes (cddr children)] -;; [template (eval `(syntax-case ',callee-expression ,keywords ,@(map private:get-specific-template clauses)))] -;; [body-index-node (private:get-specific-body-index-node clause-index-nodes target-template)] -;; [template-index-node (car (index-node-children (index-node-parent body-index-node)))]) -;; (private:template-variable+expanded template template-index-node body-index-node expanded-index-node keywords)) -;; '())] -;; [(lambda-head ((? symbol? parameter)) _ ... (syntax-case-head like-parameter (keywords ...) clauses)) -;; (if (and -;; (equal? parameter like-parameter) -;; (root-meta-check callee-document first-child 'lambda) -;; (root-meta-check callee-document (car (index-node-children (car (reverse children)))) 'syntax-case)) -;; (let* ([clause-index-nodes (cdddr (index-node-children (car (reverse children))))] -;; [template (eval `(syntax-case ',callee-expression ,keywords ,@(map private:get-specific-template clauses)))] -;; [body-index-node (private:get-specific-body-index-node clause-index-nodes target-template)] -;; [template-index-node (car (index-node-children (index-node-parent body-index-node)))]) -;; (private:template-variable+callee template callee-index-nodes callee-expression keywords)) -;; '())] -;; [else '()]))) +(define (generate-pair:template+expanded identifier-reference expanded-index-node callee-document template+callees) + (fold-left + (lambda (left maybe-pair) + (let* ([head (car maybe-pair)] + [tail (cdr maybe-pair)] + [prev-pair (assq head left)]) + (if prev-pair + (append (filter (lambda (p) (not (eq? head (car p)))) left) + (if (index-node? (cdr prev-pair)) + `((,head . (,(cdr prev-pair) ,tail))) + `((,head . (,@(cdr prev-pair) ,tail))))) + (append left (list maybe-pair))))) + '() + (apply append + (map + (lambda (p) + (private:dispatch-for-expanded-pair (cdr p) callee-index-node callee-document expanded-index-node template+callees)) + (private:unwrap identifier-reference))))) (define (generate-pair:template+callee identifier-reference callee-index-node callee-document) (fold-left @@ -109,6 +82,35 @@ (private:dispatch-for-callee-pair (cdr p) callee-index-node callee-document)) (private:unwrap identifier-reference))))) +(define (private:dispatch-for-expanded-pair index-node callee-index-node callee-document expanded-index-node template+callees) + (let* ([expression (annotation-stripped (index-node-datum/annotations index-node))] + [children (index-node-children index-node)] + [first-child (car children)] + [callee-expression (annotation-stripped (index-node-datum/annotations callee-index-node))] + [expanded-expression (annotation-stripped (index-node-datum/annotations expanded-index-node))] + [callee-index-nodes (index-node-children callee-index-node)]) + (match expression + [(syntax-rules-head (keywords ...) clauses **1) + (if (root-meta-check callee-document first-child 'syntax-rules) + (let* ([clause-index-nodes (cddr children)] + [template (eval `(syntax-case ',callee-expression ,keywords ,@(map private:get-specific-template clauses)))] + [body-index-node (private:get-specific-body-index-node clause-index-nodes template)] + [body-expression (annotation-stripped (index-node-datum/annotations body-index-node))]) + (private:template-variable+expanded body-index-node body-expression expanded-index-node template+callees callee-document #f)) + '())] + [(lambda-head ((? symbol? parameter)) _ ... (syntax-case-head like-parameter (keywords ...) clauses)) + ;I can't guarentee + ; (if (and + ; (equal? parameter like-parameter) + ; (root-meta-check callee-document first-child 'lambda) + ; (root-meta-check callee-document (car (index-node-children (car (reverse children)))) 'syntax-case)) + ; (let* ([template (eval `(syntax-case ',callee-expression ,keywords ,@(map private:get-specific-body clauses)))]) + ; (private:template-variable+expanded template expanded-index-nodes expanded-expression)) + ; '()) + '() + ] + [else '()]))) + (define (private:dispatch-for-callee-pair index-node callee-index-node callee-document) (let* ([expression (annotation-stripped (index-node-datum/annotations index-node))] [children (index-node-children index-node)] @@ -136,6 +138,11 @@ [(template body ...) `(,template ',template)] [else '()])) +(define (private:get-specific-body clause) + (match clause + [(template body ...) `(,template ',body)] + [else '()])) + (define (private:get-specific-body-index-node clause-index-nodes target-template) (fold-left (lambda (stop? clause-index-node) @@ -150,6 +157,51 @@ #f clause-index-nodes)) +(define (private:template-variable+expanded body-index-node body-expression expanded-index-node template+callees document is-...?) + (cond + [(and (private:syntax-parameter-index-node? body-index-node document body-expression) is-...? (assoc body-expression template+callees)) + `((,body-expression . ,expandex-index-node))] + [(and (private:syntax-parameter-index-node? body-index-node document body-expression) is-...? (assoc `(body-expression ...) template+callees)) + (let ([v (list->vector (cdr (assoc `(body-expression ...) template+callees)))]) + (if (> (vector-length v) is-...?) + `((,body-expression . ,expandex-index-node)) + '()))] + ; [(and (private:syntax-parameter-index-node? body-index-node document body-expression) is-...?) (raise 'IdontKnowWhy)] + [(and (private:syntax-parameter-index-node? body-index-node document body-expression) (assoc body-expression template+callees)) + `((,body-expression . ,expandex-index-node))] + [(private:syntax-parameter-index-node? body-index-node document body-expression) (raise 'IdontKnowWhy)] + [(symbol? body-expression) '()] + + [(and (not (symbol? body-expression)) (index-node? body-index-node)) + (private:template-variable+expanded (index-node-children body-index-node) body-expression (index-node-children expanded-index-node) template+callees document is-...?) ] + [(vector? body-expression) + (private:template-variable+expanded body-index-node (vector->list body-expression) expanded-index-node template+callees document is-...?)] + [(null? body-expression) '()] + [(not (list? body-expression)) (private:template-variable+expanded body-index-node `(,(car body-expression) ,(cdr body-expression)) expanded-index-node template+callees document is-...?)] + + [(>= (length body-index-node) 2) + (if (equal? (cadr body-expression) '...) + (if is-...? + (raise 'IdontKnowWhy) + (let loop ([auto-increase 0]) + (let ([what-i-got + (private:template-variable+expanded (car body-index-node) (car body-expression) (car expanded-index-node) template+callees document auto-increase)]) + (if (null? what-i-got) + what-i-got + (append what-i-got (loop (+ 1 auto-increase))))))) + (append + (private:template-variable+expanded (car body-index-node) (car body-expression) (car expanded-index-node) template+callees document is-...?) + (private:template-variable+expanded (cdr body-index-node) (cdr body-expression) (cdr expanded-index-node) template+callees document is-...?)))] + [(list? body-expression) (private:template-variable+expanded body-index-node (car body-expression) expanded-index-node template+callees document is-...?)])) + +(define (private:syntax-parameter-index-node? index-node document expression) + (if (symbol? expression) + (not + (find + (lambda (x) (not (equal? 'syntax-parameter))) + (map identifier-reference-type (find-available-references-for index-node document expression))))) + #f) + (define (private:template-variable+callee template callee-index-node callee-expression keywords) (cond [(contain? keywords callee-expression) '()] @@ -181,7 +233,8 @@ (append (private:template-variable+callee (car template) (car callee-index-node) (car callee-expression) keywords) (private:template-variable+callee (cdr template) (cdr callee-index-node) (cdr callee-expression) keywords)))] - [(list? template) (private:template-variable+callee (car template) (car callee-index-node) (car callee-expression) keywords)])) + [(list? template) (private:template-variable+callee (car template) (car callee-index-node) (car callee-expression) keywords)] + )) (define (private:dispatch index-node callee-index-node callee-document) (let* ([expression (annotation-stripped (index-node-datum/annotations index-node))] From 0595afff8e8f7d053e48c1659b2f9d611660e45a Mon Sep 17 00:00:00 2001 From: ufo5260987423 Date: Sat, 9 Nov 2024 17:00:03 +0800 Subject: [PATCH 08/44] fix --- analysis/identifier/macro-expander.sls | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/analysis/identifier/macro-expander.sls b/analysis/identifier/macro-expander.sls index 368bf7f..e6c2694 100644 --- a/analysis/identifier/macro-expander.sls +++ b/analysis/identifier/macro-expander.sls @@ -37,7 +37,7 @@ (define (expand:step-by-step identifier-reference callee-index-node callee-document) (map cdr (expand:step-by-step-identifier-reference identifier-reference callee-index-node callee-document))) -(define (generate-pair:template+expanded identifier-reference expanded-index-node callee-document template+callees) +(define (generate-pair:template+expanded identifier-reference expanded-index-node callee-index-node callee-document template+callees) (fold-left (lambda (left maybe-pair) (let* ([head (car maybe-pair)] @@ -160,15 +160,15 @@ (define (private:template-variable+expanded body-index-node body-expression expanded-index-node template+callees document is-...?) (cond [(and (private:syntax-parameter-index-node? body-index-node document body-expression) is-...? (assoc body-expression template+callees)) - `((,body-expression . ,expandex-index-node))] + `((,body-expression . ,expanded-index-node))] [(and (private:syntax-parameter-index-node? body-index-node document body-expression) is-...? (assoc `(body-expression ...) template+callees)) (let ([v (list->vector (cdr (assoc `(body-expression ...) template+callees)))]) (if (> (vector-length v) is-...?) - `((,body-expression . ,expandex-index-node)) + `((,body-expression . ,expanded-index-node)) '()))] ; [(and (private:syntax-parameter-index-node? body-index-node document body-expression) is-...?) (raise 'IdontKnowWhy)] [(and (private:syntax-parameter-index-node? body-index-node document body-expression) (assoc body-expression template+callees)) - `((,body-expression . ,expandex-index-node))] + `((,body-expression . ,expanded-index-node))] [(private:syntax-parameter-index-node? body-index-node document body-expression) (raise 'IdontKnowWhy)] [(symbol? body-expression) '()] @@ -198,7 +198,7 @@ (if (symbol? expression) (not (find - (lambda (x) (not (equal? 'syntax-parameter))) + (lambda (x) (not (equal? 'syntax-parameter x))) (map identifier-reference-type (find-available-references-for index-node document expression))))) #f) From 50a0f7cb6c557c5c912636964ad64d6bd344e323 Mon Sep 17 00:00:00 2001 From: ufo5260987423 Date: Sun, 10 Nov 2024 19:09:42 +0800 Subject: [PATCH 09/44] fix:add test for generate-pair:template+expanded --- analysis/identifier/macro-expander.sls | 31 ++--- analysis/workspace.sls | 1 - .../identifier/test-macro-expander.sps | 106 ++++++++++-------- 3 files changed, 77 insertions(+), 61 deletions(-) diff --git a/analysis/identifier/macro-expander.sls b/analysis/identifier/macro-expander.sls index e6c2694..0c1d464 100644 --- a/analysis/identifier/macro-expander.sls +++ b/analysis/identifier/macro-expander.sls @@ -150,19 +150,20 @@ (let* ([clause (annotation-stripped (index-node-datum/annotations clause-index-node))] [template (car clause)] [children (index-node-children clause-index-node)]) - (case template - [target-template (car (reverse children))] - [else stop?])) + (if (equal? template target-template) + (car (reverse children)) + stop?)) stop?)) #f clause-index-nodes)) (define (private:template-variable+expanded body-index-node body-expression expanded-index-node template+callees document is-...?) (cond + [(equal? body-expression '...) '()] [(and (private:syntax-parameter-index-node? body-index-node document body-expression) is-...? (assoc body-expression template+callees)) `((,body-expression . ,expanded-index-node))] - [(and (private:syntax-parameter-index-node? body-index-node document body-expression) is-...? (assoc `(body-expression ...) template+callees)) - (let ([v (list->vector (cdr (assoc `(body-expression ...) template+callees)))]) + [(and (private:syntax-parameter-index-node? body-index-node document body-expression) is-...? (assoc `(,body-expression ...) template+callees)) + (let ([v (list->vector (cdr (assoc `(,body-expression ...) template+callees)))]) (if (> (vector-length v) is-...?) `((,body-expression . ,expanded-index-node)) '()))] @@ -177,7 +178,8 @@ [(vector? body-expression) (private:template-variable+expanded body-index-node (vector->list body-expression) expanded-index-node template+callees document is-...?)] [(null? body-expression) '()] - [(not (list? body-expression)) (private:template-variable+expanded body-index-node `(,(car body-expression) ,(cdr body-expression)) expanded-index-node template+callees document is-...?)] + [(not (list? body-expression)) + (private:template-variable+expanded body-index-node `(,(car body-expression) ,(cdr body-expression)) expanded-index-node template+callees document is-...?)] [(>= (length body-index-node) 2) (if (equal? (cadr body-expression) '...) @@ -192,15 +194,15 @@ (append (private:template-variable+expanded (car body-index-node) (car body-expression) (car expanded-index-node) template+callees document is-...?) (private:template-variable+expanded (cdr body-index-node) (cdr body-expression) (cdr expanded-index-node) template+callees document is-...?)))] - [(list? body-expression) (private:template-variable+expanded body-index-node (car body-expression) expanded-index-node template+callees document is-...?)])) + [(list? body-expression) + (private:template-variable+expanded (car body-index-node ) (car body-expression) (car expanded-index-node) template+callees document is-...?)])) (define (private:syntax-parameter-index-node? index-node document expression) - (if (symbol? expression) - (not - (find - (lambda (x) (not (equal? 'syntax-parameter x))) - (map identifier-reference-type (find-available-references-for index-node document expression))))) - #f) + (if (and (symbol? expression) (index-node? index-node)) + (find + (lambda (x) (equal? 'syntax-parameter x)) + (map identifier-reference-type (find-available-references-for document index-node expression))) + #f)) (define (private:template-variable+callee template callee-index-node callee-expression keywords) (cond @@ -233,8 +235,7 @@ (append (private:template-variable+callee (car template) (car callee-index-node) (car callee-expression) keywords) (private:template-variable+callee (cdr template) (cdr callee-index-node) (cdr callee-expression) keywords)))] - [(list? template) (private:template-variable+callee (car template) (car callee-index-node) (car callee-expression) keywords)] - )) + [(list? template) (private:template-variable+callee (car template) (car callee-index-node) (car callee-expression) keywords)])) (define (private:dispatch index-node callee-index-node callee-document) (let* ([expression (annotation-stripped (index-node-datum/annotations index-node))] diff --git a/analysis/workspace.sls b/analysis/workspace.sls index 2fdb494..4c798bf 100644 --- a/analysis/workspace.sls +++ b/analysis/workspace.sls @@ -3,7 +3,6 @@ init-workspace init-virtual-file-system init-library-node - init-index-node init-document init-references diff --git a/tests/analysis/identifier/test-macro-expander.sps b/tests/analysis/identifier/test-macro-expander.sps index 433a569..be95cd2 100755 --- a/tests/analysis/identifier/test-macro-expander.sps +++ b/tests/analysis/identifier/test-macro-expander.sps @@ -5,54 +5,70 @@ #!r6rs (import - (chezscheme) - (srfi :64 testing) - (scheme-langserver util text) + (chezscheme) + (srfi :64 testing) + (scheme-langserver util text) + (scheme-langserver util path) - (scheme-langserver virtual-file-system file-node) - (scheme-langserver virtual-file-system index-node) - (scheme-langserver virtual-file-system document) - (scheme-langserver virtual-file-system library-node) + (scheme-langserver virtual-file-system file-node) + (scheme-langserver virtual-file-system index-node) + (scheme-langserver virtual-file-system document) + (scheme-langserver virtual-file-system library-node) - (scheme-langserver protocol alist-access-object) + (scheme-langserver protocol alist-access-object) - (scheme-langserver analysis identifier reference) - (scheme-langserver analysis identifier macro-expander) - (scheme-langserver analysis workspace)) + (scheme-langserver analysis identifier reference) + (scheme-langserver analysis identifier macro-expander) + (scheme-langserver analysis tokenizer) + (scheme-langserver analysis workspace)) -(test-begin "expand:step-by-step & generate-pair:template+callee") - (let* ([workspace-instance (init-workspace (current-directory))] - [root-file-node (workspace-file-node workspace-instance)] - [target-file-node (walk-file root-file-node (string-append (current-directory) "/analysis/dependency/rules/library-import.sls"))] - [document (file-node-document target-file-node)] - [target-index-node (pick-index-node-from (document-index-node-list document) (text+position->int (document-text document) 37 6))]) - (test-equal - '((let ([v expression]) - (match-next v (expression (set! expression)) - (('only (identifier **1) _ ...) identifier) - (('except (identifier **1) _ ...) identifier) - (('prefix (identifier **1) _ ...) identifier) - (('rename (identifier **1) _ ...) identifier) - (('for (identifier **1) 'run ...) identifier) - (('for (identifier **1) '(meta 0) ...) identifier) - ((identifier **1) identifier) (else '())))) - (expand:step-by-step (car (find-available-references-for document target-index-node 'match)) target-index-node document)) - (test-equal - '((match . match) - (atom . expression) - ((pat ...) ('only (identifier **1) _ ...) - ('except (identifier **1) _ ...) - ('prefix (identifier **1) _ ...) - ('rename (identifier **1) _ ...) - ('for (identifier **1) 'run ...) - ('for (identifier **1) '(meta 0) ...) (identifier **1) else) - ((body ...) identifier identifier identifier identifier identifier identifier identifier '())) - (map - (lambda (p) - `(,(car p) . - ,(if (index-node? (cdr p)) - (annotation-stripped (index-node-datum/annotations (cdr p))) - (map (lambda (px) (annotation-stripped (index-node-datum/annotations px))) (cdr p))))) - (generate-pair:template+callee (car (find-available-references-for document target-index-node 'match)) target-index-node document)))) +(test-begin "expand:step-by-step & generate-pair:template+callee & generate-pair:template+expanded") + (let* ([workspace-instance (init-workspace (current-directory))] + [root-file-node (workspace-file-node workspace-instance)] + [target-file-node (walk-file root-file-node (string-append (current-directory) "/analysis/dependency/rules/library-import.sls"))] + [document (file-node-document target-file-node)] + [target-index-node (pick-index-node-from (document-index-node-list document) (text+position->int (document-text document) 37 6))] + [identifier-reference (car (find-available-references-for document target-index-node 'match))] + [template+callees (generate-pair:template+callee identifier-reference target-index-node document)] + [expanded-expression (car (expand:step-by-step identifier-reference target-index-node document))] + [expanded-index-node + (init-index-node + (identifier-reference-initialization-index-node identifier-reference) + (car + (source-file->annotations + (with-output-to-string (lambda () (pretty-print expanded-expression))) + (uri->path (document-uri (identifier-reference-document identifier-reference))))))] + [template+expanded (generate-pair:template+expanded identifier-reference expanded-index-node target-index-node document template+callees)]) + (test-equal + '(let ([v expression]) + (match-next v (expression (set! expression)) + (('only (identifier **1) _ ...) identifier) + (('except (identifier **1) _ ...) identifier) + (('prefix (identifier **1) _ ...) identifier) + (('rename (identifier **1) _ ...) identifier) + (('for (identifier **1) 'run ...) identifier) + (('for (identifier **1) '(meta 0) ...) identifier) + ((identifier **1) identifier) (else '()))) + expanded-expression) + (test-equal + '((match . match) + (atom . expression) + ((pat ...) ('only (identifier **1) _ ...) + ('except (identifier **1) _ ...) + ('prefix (identifier **1) _ ...) + ('rename (identifier **1) _ ...) + ('for (identifier **1) 'run ...) + ('for (identifier **1) '(meta 0) ...) (identifier **1) else) + ((body ...) identifier identifier identifier identifier identifier identifier identifier '())) + (map + (lambda (p) + `(,(car p) . + ,(if (index-node? (cdr p)) + (annotation-stripped (index-node-datum/annotations (cdr p))) + (map (lambda (px) (annotation-stripped (index-node-datum/annotations px))) (cdr p))))) + template+callees)) + + (test-equal '(atom pat body) (map car template+expanded)) + ) (test-end) (exit (if (zero? (test-runner-fail-count (test-runner-get))) 0 1)) \ No newline at end of file From c831c42827bffba73c60e1b504d48c9c5f63de84 Mon Sep 17 00:00:00 2001 From: ufo5260987423 Date: Sun, 10 Nov 2024 19:51:21 +0800 Subject: [PATCH 10/44] fix --- analysis/identifier/macro-expander.sls | 25 ++++++++++++------- .../identifier/test-macro-expander.sps | 2 +- 2 files changed, 17 insertions(+), 10 deletions(-) diff --git a/analysis/identifier/macro-expander.sls b/analysis/identifier/macro-expander.sls index 0c1d464..32dc2c4 100644 --- a/analysis/identifier/macro-expander.sls +++ b/analysis/identifier/macro-expander.sls @@ -42,13 +42,20 @@ (lambda (left maybe-pair) (let* ([head (car maybe-pair)] [tail (cdr maybe-pair)] - [prev-pair (assq head left)]) - (if prev-pair - (append (filter (lambda (p) (not (eq? head (car p)))) left) - (if (index-node? (cdr prev-pair)) - `((,head . (,(cdr prev-pair) ,tail))) - `((,head . (,@(cdr prev-pair) ,tail))))) - (append left (list maybe-pair))))) + [prev-pair (find (lambda (l) (equal? head (car l))) left)] + [head... `(,head ...)] + [prev-pair... (find (lambda (l) (equal? head... (car l))) left)]) + (cond + [prev-pair... + (append + (filter (lambda (p) (not (equal? head... (car p)))) left) + `((,head... . (,@(cdr prev-pair...) ,tail))))] + [prev-pair + (append + (filter (lambda (p) (not (equal? head (car p)))) left) + `((,head... . (,(cdr prev-pair) ,tail))))] + [else (append left (list maybe-pair))]) + )) '() (apply append (map @@ -73,8 +80,8 @@ (append (filter (lambda (p) (not (equal? head (car p)))) left) `((,head... . (,(cdr prev-pair) ,tail))))] - [else (append left (list maybe-pair))] - ))) + [else (append left (list maybe-pair))]) + )) '() (apply append (map diff --git a/tests/analysis/identifier/test-macro-expander.sps b/tests/analysis/identifier/test-macro-expander.sps index be95cd2..7c31c89 100755 --- a/tests/analysis/identifier/test-macro-expander.sps +++ b/tests/analysis/identifier/test-macro-expander.sps @@ -68,7 +68,7 @@ (map (lambda (px) (annotation-stripped (index-node-datum/annotations px))) (cdr p))))) template+callees)) - (test-equal '(atom pat body) (map car template+expanded)) + (test-equal '((atom ...) (pat ...) (body ...)) (map car template+expanded)) ) (test-end) (exit (if (zero? (test-runner-fail-count (test-runner-get))) 0 1)) \ No newline at end of file From f321651fc99eed3f28a3593d62935f3df06aa7ad Mon Sep 17 00:00:00 2001 From: ufo5260987423 Date: Sun, 10 Nov 2024 20:02:37 +0800 Subject: [PATCH 11/44] fix:add new guarentee --- analysis/identifier/macro-expander.sls | 36 ++++++++++++++------------ 1 file changed, 20 insertions(+), 16 deletions(-) diff --git a/analysis/identifier/macro-expander.sls b/analysis/identifier/macro-expander.sls index 32dc2c4..c238162 100644 --- a/analysis/identifier/macro-expander.sls +++ b/analysis/identifier/macro-expander.sls @@ -102,8 +102,9 @@ (let* ([clause-index-nodes (cddr children)] [template (eval `(syntax-case ',callee-expression ,keywords ,@(map private:get-specific-template clauses)))] [body-index-node (private:get-specific-body-index-node clause-index-nodes template)] + [template-index-node (car (index-node-children (index-node-parent body-index-node)))] [body-expression (annotation-stripped (index-node-datum/annotations body-index-node))]) - (private:template-variable+expanded body-index-node body-expression expanded-index-node template+callees callee-document #f)) + (private:template-variable+expanded template-index-node body-index-node body-expression expanded-index-node template+callees callee-document #f)) '())] [(lambda-head ((? symbol? parameter)) _ ... (syntax-case-head like-parameter (keywords ...) clauses)) ;I can't guarentee @@ -164,29 +165,29 @@ #f clause-index-nodes)) -(define (private:template-variable+expanded body-index-node body-expression expanded-index-node template+callees document is-...?) +(define (private:template-variable+expanded template-index-node body-index-node body-expression expanded-index-node template+callees document is-...?) (cond [(equal? body-expression '...) '()] - [(and (private:syntax-parameter-index-node? body-index-node document body-expression) is-...? (assoc body-expression template+callees)) + [(and (private:syntax-parameter-index-node? template-index-node body-index-node document body-expression) is-...? (assoc body-expression template+callees)) `((,body-expression . ,expanded-index-node))] - [(and (private:syntax-parameter-index-node? body-index-node document body-expression) is-...? (assoc `(,body-expression ...) template+callees)) + [(and (private:syntax-parameter-index-node? template-index-node body-index-node document body-expression) is-...? (assoc `(,body-expression ...) template+callees)) (let ([v (list->vector (cdr (assoc `(,body-expression ...) template+callees)))]) (if (> (vector-length v) is-...?) `((,body-expression . ,expanded-index-node)) '()))] ; [(and (private:syntax-parameter-index-node? body-index-node document body-expression) is-...?) (raise 'IdontKnowWhy)] - [(and (private:syntax-parameter-index-node? body-index-node document body-expression) (assoc body-expression template+callees)) + [(and (private:syntax-parameter-index-node? template-index-node body-index-node document body-expression) (assoc body-expression template+callees)) `((,body-expression . ,expanded-index-node))] - [(private:syntax-parameter-index-node? body-index-node document body-expression) (raise 'IdontKnowWhy)] + [(private:syntax-parameter-index-node? template-index-node body-index-node document body-expression) (raise 'IdontKnowWhy)] [(symbol? body-expression) '()] [(and (not (symbol? body-expression)) (index-node? body-index-node)) - (private:template-variable+expanded (index-node-children body-index-node) body-expression (index-node-children expanded-index-node) template+callees document is-...?) ] + (private:template-variable+expanded template-index-node (index-node-children body-index-node) body-expression (index-node-children expanded-index-node) template+callees document is-...?) ] [(vector? body-expression) - (private:template-variable+expanded body-index-node (vector->list body-expression) expanded-index-node template+callees document is-...?)] + (private:template-variable+expanded template-index-node body-index-node (vector->list body-expression) expanded-index-node template+callees document is-...?)] [(null? body-expression) '()] [(not (list? body-expression)) - (private:template-variable+expanded body-index-node `(,(car body-expression) ,(cdr body-expression)) expanded-index-node template+callees document is-...?)] + (private:template-variable+expanded template-index-node body-index-node `(,(car body-expression) ,(cdr body-expression)) expanded-index-node template+callees document is-...?)] [(>= (length body-index-node) 2) (if (equal? (cadr body-expression) '...) @@ -194,21 +195,24 @@ (raise 'IdontKnowWhy) (let loop ([auto-increase 0]) (let ([what-i-got - (private:template-variable+expanded (car body-index-node) (car body-expression) (car expanded-index-node) template+callees document auto-increase)]) + (private:template-variable+expanded template-index-node (car body-index-node) (car body-expression) (car expanded-index-node) template+callees document auto-increase)]) (if (null? what-i-got) what-i-got (append what-i-got (loop (+ 1 auto-increase))))))) (append - (private:template-variable+expanded (car body-index-node) (car body-expression) (car expanded-index-node) template+callees document is-...?) - (private:template-variable+expanded (cdr body-index-node) (cdr body-expression) (cdr expanded-index-node) template+callees document is-...?)))] + (private:template-variable+expanded template-index-node (car body-index-node) (car body-expression) (car expanded-index-node) template+callees document is-...?) + (private:template-variable+expanded template-index-node (cdr body-index-node) (cdr body-expression) (cdr expanded-index-node) template+callees document is-...?)))] [(list? body-expression) - (private:template-variable+expanded (car body-index-node ) (car body-expression) (car expanded-index-node) template+callees document is-...?)])) + (private:template-variable+expanded template-index-node (car body-index-node ) (car body-expression) (car expanded-index-node) template+callees document is-...?)])) -(define (private:syntax-parameter-index-node? index-node document expression) +(define (private:syntax-parameter-index-node? template-index-node index-node document expression) (if (and (symbol? expression) (index-node? index-node)) (find - (lambda (x) (equal? 'syntax-parameter x)) - (map identifier-reference-type (find-available-references-for document index-node expression))) + (lambda (x) + (and + (equal? 'syntax-parameter (identifier-reference-type x)) + (equal? template-index-node (identifier-reference-index-node x)))) + (find-available-references-for document index-node expression)) #f)) (define (private:template-variable+callee template callee-index-node callee-expression keywords) From 28a9c4acfd718a56eb92cba37991737e5a24d6cb Mon Sep 17 00:00:00 2001 From: ufo5260987423 Date: Mon, 11 Nov 2024 13:32:33 +0800 Subject: [PATCH 12/44] fix:ok --- analysis/identifier/macro-expander.sls | 15 +++++---- .../identifier/test-macro-expander.sps | 31 ++++++++++++++++++- 2 files changed, 39 insertions(+), 7 deletions(-) diff --git a/analysis/identifier/macro-expander.sls b/analysis/identifier/macro-expander.sls index c238162..00cbc53 100644 --- a/analysis/identifier/macro-expander.sls +++ b/analysis/identifier/macro-expander.sls @@ -193,12 +193,15 @@ (if (equal? (cadr body-expression) '...) (if is-...? (raise 'IdontKnowWhy) - (let loop ([auto-increase 0]) - (let ([what-i-got - (private:template-variable+expanded template-index-node (car body-index-node) (car body-expression) (car expanded-index-node) template+callees document auto-increase)]) - (if (null? what-i-got) - what-i-got - (append what-i-got (loop (+ 1 auto-increase))))))) + (let loop ([auto-increase 0] + [rest-expanded-index-node expanded-index-node]) + (if (null? rest-expanded-index-node) + '() + (let ([what-i-got + (private:template-variable+expanded template-index-node (car body-index-node) (car body-expression) (car rest-expanded-index-node) template+callees document auto-increase)]) + (if (null? what-i-got) + (private:template-variable+expanded template-index-node (cddr body-index-node) (cddr body-expression) rest-expanded-index-node template+callees document #f) + (append what-i-got (loop (+ 1 auto-increase) (cdr rest-expanded-index-node)))))))) (append (private:template-variable+expanded template-index-node (car body-index-node) (car body-expression) (car expanded-index-node) template+callees document is-...?) (private:template-variable+expanded template-index-node (cdr body-index-node) (cdr body-expression) (cdr expanded-index-node) template+callees document is-...?)))] diff --git a/tests/analysis/identifier/test-macro-expander.sps b/tests/analysis/identifier/test-macro-expander.sps index 7c31c89..8c5825b 100755 --- a/tests/analysis/identifier/test-macro-expander.sps +++ b/tests/analysis/identifier/test-macro-expander.sps @@ -68,7 +68,36 @@ (map (lambda (px) (annotation-stripped (index-node-datum/annotations px))) (cdr p))))) template+callees)) - (test-equal '((atom ...) (pat ...) (body ...)) (map car template+expanded)) + (test-equal + ; pretty-print + '( + ((atom ...) expression expression) + ((pat ...) ('only (identifier **1) _ ...) + ('except (identifier **1) _ ...) + ('prefix (identifier **1) _ ...) + ('rename (identifier **1) _ ...) + ('for (identifier **1) 'run ...) + ('for (identifier **1) '(meta 0) ...) + (identifier **1) + else) + ((body ...) identifier identifier identifier identifier + identifier identifier identifier '())) + (map + (lambda (p) + `(,(car p) . + ,(if (find index-node? (cdr p)) + (map + (lambda (a) (annotation-stripped (index-node-datum/annotations a))) + (cdr p)) + (map + (lambda (a) + (map + (lambda (a) (annotation-stripped (index-node-datum/annotations a))) + a)) + (cdr p)) + ))) + template+expanded) + ) ) (test-end) (exit (if (zero? (test-runner-fail-count (test-runner-get))) 0 1)) \ No newline at end of file From 3a212c954b79849ac1c4c8e096149ff1400f1c88 Mon Sep 17 00:00:00 2001 From: ufo5260987423 Date: Mon, 11 Nov 2024 13:33:33 +0800 Subject: [PATCH 13/44] fix:ok --- tests/analysis/identifier/test-macro-expander.sps | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/tests/analysis/identifier/test-macro-expander.sps b/tests/analysis/identifier/test-macro-expander.sps index 8c5825b..d9c94cd 100755 --- a/tests/analysis/identifier/test-macro-expander.sps +++ b/tests/analysis/identifier/test-macro-expander.sps @@ -94,8 +94,7 @@ (map (lambda (a) (annotation-stripped (index-node-datum/annotations a))) a)) - (cdr p)) - ))) + (cdr p))))) template+expanded) ) ) From cea337d2ae26a11e8f829ca47a37604d98806483 Mon Sep 17 00:00:00 2001 From: ufo5260987423 Date: Mon, 11 Nov 2024 16:14:26 +0800 Subject: [PATCH 14/44] fix:ok --- analysis/identifier/macro-expander.sls | 30 ++++++++++++++++++- .../identifier/test-macro-expander.sps | 5 ++-- 2 files changed, 32 insertions(+), 3 deletions(-) diff --git a/analysis/identifier/macro-expander.sls b/analysis/identifier/macro-expander.sls index 00cbc53..5a92ab4 100644 --- a/analysis/identifier/macro-expander.sls +++ b/analysis/identifier/macro-expander.sls @@ -37,6 +37,34 @@ (define (expand:step-by-step identifier-reference callee-index-node callee-document) (map cdr (expand:step-by-step-identifier-reference identifier-reference callee-index-node callee-document))) +; (define (generate-pair:callee+expand identifier-reference callee-index-node callee-document) +; (let ([template+callees (generate-pair:template+callee identifier-reference callee-index-node callee-document)]) +; (map +; (lambda (expanded-expression) +; (let* ([expanded-index-node +; (init-index-node +; (identifier-reference-initialization-index-node identifier-reference) +; (car +; (source-file->annotations +; (with-output-to-string (lambda () (pretty-print expanded-expression))) +; (uri->path (document-uri (identifier-reference-document identifier-reference))))))] +; [template+expanded (generate-pair:template+expanded identifier-reference expanded-index-node callee-index-node callee-document template+callees)]) +; (map +; (lambda (template+callee) +; (let ([template (car template+callee)] +; [callee (cdr template+callee)] +; [(assoc template )] +; ) + + +; ) +; ) +; template+callees) +; )) +; (expand:step-by-step identifier-reference target-index-node document)) +; ) +; ) + (define (generate-pair:template+expanded identifier-reference expanded-index-node callee-index-node callee-document template+callees) (fold-left (lambda (left maybe-pair) @@ -173,7 +201,7 @@ [(and (private:syntax-parameter-index-node? template-index-node body-index-node document body-expression) is-...? (assoc `(,body-expression ...) template+callees)) (let ([v (list->vector (cdr (assoc `(,body-expression ...) template+callees)))]) (if (> (vector-length v) is-...?) - `((,body-expression . ,expanded-index-node)) + `(((,body-expression ...) . ,expanded-index-node)) '()))] ; [(and (private:syntax-parameter-index-node? body-index-node document body-expression) is-...?) (raise 'IdontKnowWhy)] [(and (private:syntax-parameter-index-node? template-index-node body-index-node document body-expression) (assoc body-expression template+callees)) diff --git a/tests/analysis/identifier/test-macro-expander.sps b/tests/analysis/identifier/test-macro-expander.sps index d9c94cd..b69e65e 100755 --- a/tests/analysis/identifier/test-macro-expander.sps +++ b/tests/analysis/identifier/test-macro-expander.sps @@ -72,7 +72,8 @@ ; pretty-print '( ((atom ...) expression expression) - ((pat ...) ('only (identifier **1) _ ...) + (((pat ...) ...) + ('only (identifier **1) _ ...) ('except (identifier **1) _ ...) ('prefix (identifier **1) _ ...) ('rename (identifier **1) _ ...) @@ -80,7 +81,7 @@ ('for (identifier **1) '(meta 0) ...) (identifier **1) else) - ((body ...) identifier identifier identifier identifier + (((body ...) ...) identifier identifier identifier identifier identifier identifier identifier '())) (map (lambda (p) From ce4655087a163064b8186c9187ddbb16b8a8888e Mon Sep 17 00:00:00 2001 From: ufo5260987423 Date: Mon, 11 Nov 2024 20:32:47 +0800 Subject: [PATCH 15/44] add: generate-pair:callee+expanded --- analysis/identifier/macro-expander.sls | 76 ++++++++++++++++---------- 1 file changed, 48 insertions(+), 28 deletions(-) diff --git a/analysis/identifier/macro-expander.sls b/analysis/identifier/macro-expander.sls index 5a92ab4..a0ef343 100644 --- a/analysis/identifier/macro-expander.sls +++ b/analysis/identifier/macro-expander.sls @@ -3,7 +3,8 @@ expand:step-by-step expand:step-by-step-identifier-reference generate-pair:template+callee - generate-pair:template+expanded) + generate-pair:template+expanded + generate-pair:callee+expanded) (import (chezscheme) (ufo-match) @@ -37,33 +38,52 @@ (define (expand:step-by-step identifier-reference callee-index-node callee-document) (map cdr (expand:step-by-step-identifier-reference identifier-reference callee-index-node callee-document))) -; (define (generate-pair:callee+expand identifier-reference callee-index-node callee-document) -; (let ([template+callees (generate-pair:template+callee identifier-reference callee-index-node callee-document)]) -; (map -; (lambda (expanded-expression) -; (let* ([expanded-index-node -; (init-index-node -; (identifier-reference-initialization-index-node identifier-reference) -; (car -; (source-file->annotations -; (with-output-to-string (lambda () (pretty-print expanded-expression))) -; (uri->path (document-uri (identifier-reference-document identifier-reference))))))] -; [template+expanded (generate-pair:template+expanded identifier-reference expanded-index-node callee-index-node callee-document template+callees)]) -; (map -; (lambda (template+callee) -; (let ([template (car template+callee)] -; [callee (cdr template+callee)] -; [(assoc template )] -; ) - - -; ) -; ) -; template+callees) -; )) -; (expand:step-by-step identifier-reference target-index-node document)) -; ) -; ) +(define (generate-pair:callee+expanded identifier-reference callee-index-node callee-document) + (let ([template+callees (generate-pair:template+callee identifier-reference callee-index-node callee-document)]) + (map + (lambda (expanded-expression) + (let* ([expanded-index-node + (init-index-node + (identifier-reference-initialization-index-node identifier-reference) + (car + (source-file->annotations + (with-output-to-string (lambda () (pretty-print expanded-expression))) + (uri->path (document-uri (identifier-reference-document identifier-reference))))))] + [template+expandeds (generate-pair:template+expanded identifier-reference expanded-index-node callee-index-node callee-document template+callees)]) + (apply append + (map + (lambda (template+callee) + (let* ([template (car template+callee)] + [callee (cdr template+callee)] + [pre (assoc template template+expandeds)] + [after (if pre pre (assoc `(,template ...) template+expandeds))] + [target-expandeds (if after (cdr after) '())]) + (cond + [(and (index-node? callee) (index-node? target-expandeds)) `((,callee . ,target-expandeds))] + [(and (index-node? callee) (find list? target-expandeds)) `((,callee . ,(apply append target-expandeds)))] + [(index-node? callee) `(,callee . ,target-expandeds)] + [(find list? target-expandeds) + (fold-left + (lambda (left right) + (fold-left + (lambda (current-left . rights) + (if (list? (car rights)) + `(,@current-left ,(append (car rights) (cdr rights))) + `(,@current-left ,rights))) + '() + left + right)) + callee + target-expandeds)] + [else + (fold-left + (lambda (left . rights) `(,@left ,rights)) + '() + callee + target-expandeds)]) + target-expandeds)) + template+callees)))) + (expand:step-by-step identifier-reference callee-index-node callee-document)))) (define (generate-pair:template+expanded identifier-reference expanded-index-node callee-index-node callee-document template+callees) (fold-left From 286745e2dae36fe5d7783cb6cd04eb309fae12a7 Mon Sep 17 00:00:00 2001 From: ufo5260987423 Date: Mon, 11 Nov 2024 21:56:06 +0800 Subject: [PATCH 16/44] fix:generate-pair:template+expanded ok --- analysis/identifier/macro-expander.sls | 7 +++-- .../identifier/test-macro-expander.sps | 26 ++++++++++++++++--- 2 files changed, 26 insertions(+), 7 deletions(-) diff --git a/analysis/identifier/macro-expander.sls b/analysis/identifier/macro-expander.sls index a0ef343..5c82f23 100644 --- a/analysis/identifier/macro-expander.sls +++ b/analysis/identifier/macro-expander.sls @@ -59,9 +59,9 @@ [after (if pre pre (assoc `(,template ...) template+expandeds))] [target-expandeds (if after (cdr after) '())]) (cond - [(and (index-node? callee) (index-node? target-expandeds)) `((,callee . ,target-expandeds))] + [(and (index-node? callee) (index-node? target-expandeds)) `((,callee ,target-expandeds))] [(and (index-node? callee) (find list? target-expandeds)) `((,callee . ,(apply append target-expandeds)))] - [(index-node? callee) `(,callee . ,target-expandeds)] + [(index-node? callee) `((,callee . ,target-expandeds))] [(find list? target-expandeds) (fold-left (lambda (left right) @@ -80,8 +80,7 @@ (lambda (left . rights) `(,@left ,rights)) '() callee - target-expandeds)]) - target-expandeds)) + target-expandeds)]))) template+callees)))) (expand:step-by-step identifier-reference callee-index-node callee-document)))) diff --git a/tests/analysis/identifier/test-macro-expander.sps b/tests/analysis/identifier/test-macro-expander.sps index b69e65e..3687bfd 100755 --- a/tests/analysis/identifier/test-macro-expander.sps +++ b/tests/analysis/identifier/test-macro-expander.sps @@ -69,7 +69,6 @@ template+callees)) (test-equal - ; pretty-print '( ((atom ...) expression expression) (((pat ...) ...) @@ -96,8 +95,29 @@ (lambda (a) (annotation-stripped (index-node-datum/annotations a))) a)) (cdr p))))) - template+expanded) - ) + template+expanded)) + + (test-equal + '((match) (expression expression expression) + (('only (identifier **1) _ ...) + ('only (identifier **1) _ ...)) + (('except (identifier **1) _ ...) + ('except (identifier **1) _ ...)) + (('prefix (identifier **1) _ ...) + ('prefix (identifier **1) _ ...)) + (('rename (identifier **1) _ ...) + ('rename (identifier **1) _ ...)) + (('for (identifier **1) 'run ...) + ('for (identifier **1) 'run ...)) + (('for (identifier **1) '(meta 0) ...) + ('for (identifier **1) '(meta 0) ...)) + ((identifier **1) (identifier **1)) (else else) + (identifier identifier) (identifier identifier) + (identifier identifier) (identifier identifier) + (identifier identifier) (identifier identifier) + (identifier identifier) ('() '())) + (map (lambda (l) (map (lambda (p) (annotation-stripped (index-node-datum/annotations p))) l)) + (car (generate-pair:callee+expanded identifier-reference target-index-node document)))) ) (test-end) (exit (if (zero? (test-runner-fail-count (test-runner-get))) 0 1)) \ No newline at end of file From 1d34bf42b68d609b7c7fee76fb356809c9b716f6 Mon Sep 17 00:00:00 2001 From: ufo5260987423 Date: Mon, 11 Nov 2024 21:57:01 +0800 Subject: [PATCH 17/44] fix --- tests/analysis/identifier/test-macro-expander.sps | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/tests/analysis/identifier/test-macro-expander.sps b/tests/analysis/identifier/test-macro-expander.sps index 3687bfd..78fce8d 100755 --- a/tests/analysis/identifier/test-macro-expander.sps +++ b/tests/analysis/identifier/test-macro-expander.sps @@ -69,8 +69,7 @@ template+callees)) (test-equal - '( - ((atom ...) expression expression) + '(((atom ...) expression expression) (((pat ...) ...) ('only (identifier **1) _ ...) ('except (identifier **1) _ ...) From edb86f0b19d0e0a89cee8cb1c30fa4a7c6900ccc Mon Sep 17 00:00:00 2001 From: ufo5260987423 Date: Tue, 12 Nov 2024 16:26:48 +0800 Subject: [PATCH 18/44] fix --- analysis/identifier/macro-expander.sls | 60 +++++---- .../identifier/test-macro-expander.sps | 127 +++++++++++++++++- 2 files changed, 157 insertions(+), 30 deletions(-) diff --git a/analysis/identifier/macro-expander.sls b/analysis/identifier/macro-expander.sls index 5c82f23..6bdc197 100644 --- a/analysis/identifier/macro-expander.sls +++ b/analysis/identifier/macro-expander.sls @@ -144,26 +144,27 @@ [expanded-expression (annotation-stripped (index-node-datum/annotations expanded-index-node))] [callee-index-nodes (index-node-children callee-index-node)]) (match expression - [(syntax-rules-head (keywords ...) clauses **1) + [('syntax-rules (keywords ...) clauses **1) (if (root-meta-check callee-document first-child 'syntax-rules) (let* ([clause-index-nodes (cddr children)] - [template (eval `(syntax-case ',callee-expression ,keywords ,@(map private:get-specific-template clauses)))] - [body-index-node (private:get-specific-body-index-node clause-index-nodes template)] - [template-index-node (car (index-node-children (index-node-parent body-index-node)))] - [body-expression (annotation-stripped (index-node-datum/annotations body-index-node))]) + [template (eval `(syntax-case ',callee-expression ,keywords ,@(map private:get-specific-template clauses)))] + [body-index-node (private:get-specific-body-index-node clause-index-nodes template)] + [template-index-node (car (index-node-children (index-node-parent body-index-node)))] + [body-expression (annotation-stripped (index-node-datum/annotations body-index-node))]) + (private:template-variable+expanded template-index-node body-index-node body-expression expanded-index-node template+callees callee-document #f)) + '())] + [('lambda ((? symbol? parameter)) _ ... ('syntax-case like-parameter (keywords ...) clauses **1)) + (if (and + (equal? parameter like-parameter) + (root-meta-check callee-document first-child 'lambda) + (root-meta-check callee-document (car (index-node-children (car (reverse children)))) 'syntax-case)) + (let* ([clause-index-nodes (cdddr (index-node-children (car (reverse children))))] + [template (eval `(syntax-case ',callee-expression ,keywords ,@(map private:get-specific-template clauses)))] + [body-index-node (private:get-specific-body-index-node clause-index-nodes template)] + [template-index-node (car (index-node-children (index-node-parent body-index-node)))] + [body-expression (annotation-stripped (index-node-datum/annotations body-index-node))]) (private:template-variable+expanded template-index-node body-index-node body-expression expanded-index-node template+callees callee-document #f)) '())] - [(lambda-head ((? symbol? parameter)) _ ... (syntax-case-head like-parameter (keywords ...) clauses)) - ;I can't guarentee - ; (if (and - ; (equal? parameter like-parameter) - ; (root-meta-check callee-document first-child 'lambda) - ; (root-meta-check callee-document (car (index-node-children (car (reverse children)))) 'syntax-case)) - ; (let* ([template (eval `(syntax-case ',callee-expression ,keywords ,@(map private:get-specific-body clauses)))]) - ; (private:template-variable+expanded template expanded-index-nodes expanded-expression)) - ; '()) - '() - ] [else '()]))) (define (private:dispatch-for-callee-pair index-node callee-index-node callee-document) @@ -173,12 +174,12 @@ [callee-expression (annotation-stripped (index-node-datum/annotations callee-index-node))] [callee-index-nodes (index-node-children callee-index-node)]) (match expression - [(syntax-rules-head (keywords ...) clauses **1) + [('syntax-rules (keywords ...) clauses **1) (if (root-meta-check callee-document first-child 'syntax-rules) (let* ([template (eval `(syntax-case ',callee-expression ,keywords ,@(map private:get-specific-template clauses)))]) (private:template-variable+callee template callee-index-nodes callee-expression keywords)) '())] - [(lambda-head ((? symbol? parameter)) _ ... (syntax-case-head like-parameter (keywords ...) clauses)) + [('lambda ((? symbol? parameter)) _ ... ('syntax-case like-parameter (keywords ...) clauses **1)) (if (and (equal? parameter like-parameter) (root-meta-check callee-document first-child 'lambda) @@ -267,14 +268,16 @@ (define (private:template-variable+callee template callee-index-node callee-expression keywords) (cond - [(contain? keywords callee-expression) '()] [(symbol? template) `((,template . ,callee-index-node))] - [(and (not (symbol? template)) (index-node? callee-index-node)) (private:template-variable+callee template (index-node-children callee-index-node) callee-expression keywords)] - [(vector? template) (private:template-variable+callee (vector->list template) (index-node-children callee-index-node) (vector->list callee-expression) keywords)] + [(and (not (symbol? template)) (index-node? callee-index-node)) + (private:template-variable+callee template (index-node-children callee-index-node) callee-expression keywords)] + [(vector? template) + (private:template-variable+callee (vector->list template) (index-node-children callee-index-node) (vector->list callee-expression) keywords)] [(null? template) '()] ;pair - [(not (list? template)) (private:template-variable+callee `(,(car template) ,(cdr template)) callee-index-node `(,(car callee-expression) ,(cdr callee-expression)) keywords)] - [(and (>= (length callee-index-node) 2)) + [(not (list? template)) + (private:template-variable+callee `(,(car template) ,(cdr template)) callee-index-node `(,(car callee-expression) ,(cdr callee-expression)) keywords)] + [(>= (length template) 2) (if (equal? (cadr template) '...) (let* ([new-callee-expression (syntax->datum (eval `(syntax-case ',callee-expression ,keywords (,template #'(,(car template) ,(cadr template))))))] [size (length new-callee-expression)]) @@ -289,14 +292,15 @@ keywords)) (list-head callee-index-node size))) (private:template-variable+callee - (list-tail template 2) + (cddr template) (list-tail callee-index-node size) (list-tail callee-expression size) keywords))) (append (private:template-variable+callee (car template) (car callee-index-node) (car callee-expression) keywords) (private:template-variable+callee (cdr template) (cdr callee-index-node) (cdr callee-expression) keywords)))] - [(list? template) (private:template-variable+callee (car template) (car callee-index-node) (car callee-expression) keywords)])) + [(list? template) + (private:template-variable+callee (car template) (car callee-index-node) (car callee-expression) keywords)])) (define (private:dispatch index-node callee-index-node callee-document) (let* ([expression (annotation-stripped (index-node-datum/annotations index-node))] @@ -304,16 +308,16 @@ [first-child (car children)] [callee-expression (annotation-stripped (index-node-datum/annotations callee-index-node))]) (match expression - [(syntax-rules-head (keywords ...) clauses **1) + [('syntax-rules (keywords ...) clauses **1) (if (root-meta-check callee-document first-child 'syntax-rules) (syntax->datum (eval `(syntax-case ',callee-expression ,keywords ,@(map private:rule-clause->case-clause clauses)))) '())] - [(lambda-head ((? symbol? parameter)) _ ... (syntax-case-head like-parameter (keywords ...) clauses)) + [('lambda ((? symbol? parameter)) _ ... ('syntax-case like-parameter (keywords ...) clauses **1)) (if (and (equal? parameter like-parameter) (root-meta-check callee-document first-child 'lambda) (root-meta-check callee-document (car (index-node-children (car (reverse children)))) 'syntax-case)) - (syntax->datum (eval `(_ ... (syntax-case ,like-parameter ,keywords ,@clauses)))) + (syntax->datum (eval `(syntax-case ',callee-expression ,keywords ,@clauses))) '())] [else '()]))) diff --git a/tests/analysis/identifier/test-macro-expander.sps b/tests/analysis/identifier/test-macro-expander.sps index 78fce8d..a7142c6 100755 --- a/tests/analysis/identifier/test-macro-expander.sps +++ b/tests/analysis/identifier/test-macro-expander.sps @@ -22,7 +22,7 @@ (scheme-langserver analysis tokenizer) (scheme-langserver analysis workspace)) -(test-begin "expand:step-by-step & generate-pair:template+callee & generate-pair:template+expanded") +(test-begin "expand:step-by-step & generate-pair:template+callee & generate-pair:template+expanded for syntax-rules") (let* ([workspace-instance (init-workspace (current-directory))] [root-file-node (workspace-file-node workspace-instance)] [target-file-node (walk-file root-file-node (string-append (current-directory) "/analysis/dependency/rules/library-import.sls"))] @@ -116,7 +116,130 @@ (identifier identifier) (identifier identifier) (identifier identifier) ('() '())) (map (lambda (l) (map (lambda (p) (annotation-stripped (index-node-datum/annotations p))) l)) - (car (generate-pair:callee+expanded identifier-reference target-index-node document)))) + (car (generate-pair:callee+expanded identifier-reference target-index-node document))))) +(test-end) + +(test-begin "expand:step-by-step & generate-pair:template+callee & generate-pair:template+expanded for syntax-case") + (let* ([workspace-instance (init-workspace (current-directory))] + [root-file-node (workspace-file-node workspace-instance)] + [target-file-node (walk-file root-file-node (string-append (current-directory) "/analysis/identifier/rules/body.sls"))] + [document (file-node-document target-file-node)] + [target-index-node (pick-index-node-from (document-index-node-list document) (text+position->int (document-text document) 19 4))] + [identifier-reference (car (find-available-references-for document target-index-node 'try))] + [expanded-expression (car (expand:step-by-step identifier-reference target-index-node document))] + [template+callees (generate-pair:template+callee identifier-reference target-index-node document)] + [expanded-index-node + (init-index-node + (identifier-reference-initialization-index-node identifier-reference) + (car + (source-file->annotations + (with-output-to-string (lambda () (pretty-print expanded-expression))) + (uri->path (document-uri (identifier-reference-document identifier-reference))))))] + [template+expanded (generate-pair:template+expanded identifier-reference expanded-index-node target-index-node document template+callees)]) + (test-equal + '((call/1cc + (lambda (escape) + (with-exception-handler + (lambda (c) (let ([c c]) (escape (lambda () '())))) + (lambda () + (call-with-values + (lambda () + (match expression + [(_ fuzzy ...) + (let* ([parent (index-node-parent index-node)] + [children (index-node-children index-node)] + [pre-target (map index-node-references-import-in-this-node + children)] + [target `(,@pre-target + ,(index-node-references-import-in-this-node + index-node))]) + (append-references-into-ordered-references-for + document + parent + (apply append target)))] + [else '()])) + (lambda args (escape (lambda () (apply values args)))))))))) + expanded-expression) + + (test-equal + '((try . try) + (body0 + match + expression + ((_ fuzzy ...) + (let* ([parent (index-node-parent index-node)] + [children (index-node-children index-node)] + [pre-target (map index-node-references-import-in-this-node + children)] + [target `(,@pre-target + ,(index-node-references-import-in-this-node + index-node))]) + (append-references-into-ordered-references-for + document + parent + (apply append target)))) + (else '())) + (except . except) + (condition . c) + (clause0 else '())) + (map + (lambda (p) + `(,(car p) . + ,(if (index-node? (cdr p)) + (annotation-stripped (index-node-datum/annotations (cdr p))) + (map (lambda (px) (annotation-stripped (index-node-datum/annotations px))) (cdr p))))) + template+callees)) + + ; (pretty-print + ; ; test-equal + ; ; '(((atom ...) expression expression) + ; ; (((pat ...) ...) + ; ; ('only (identifier **1) _ ...) + ; ; ('except (identifier **1) _ ...) + ; ; ('prefix (identifier **1) _ ...) + ; ; ('rename (identifier **1) _ ...) + ; ; ('for (identifier **1) 'run ...) + ; ; ('for (identifier **1) '(meta 0) ...) + ; ; (identifier **1) + ; ; else) + ; ; (((body ...) ...) identifier identifier identifier identifier + ; ; identifier identifier identifier '())) + ; (map + ; (lambda (p) + ; `(,(car p) . + ; ,(if (find index-node? (cdr p)) + ; (map + ; (lambda (a) (annotation-stripped (index-node-datum/annotations a))) + ; (cdr p)) + ; (map + ; (lambda (a) + ; (map + ; (lambda (a) (annotation-stripped (index-node-datum/annotations a))) + ; a)) + ; (cdr p))))) + ; template+expanded)) + + ; (test-equal + ; '((match) (expression expression expression) + ; (('only (identifier **1) _ ...) + ; ('only (identifier **1) _ ...)) + ; (('except (identifier **1) _ ...) + ; ('except (identifier **1) _ ...)) + ; (('prefix (identifier **1) _ ...) + ; ('prefix (identifier **1) _ ...)) + ; (('rename (identifier **1) _ ...) + ; ('rename (identifier **1) _ ...)) + ; (('for (identifier **1) 'run ...) + ; ('for (identifier **1) 'run ...)) + ; (('for (identifier **1) '(meta 0) ...) + ; ('for (identifier **1) '(meta 0) ...)) + ; ((identifier **1) (identifier **1)) (else else) + ; (identifier identifier) (identifier identifier) + ; (identifier identifier) (identifier identifier) + ; (identifier identifier) (identifier identifier) + ; (identifier identifier) ('() '())) + ; (map (lambda (l) (map (lambda (p) (annotation-stripped (index-node-datum/annotations p))) l)) + ; (car (generate-pair:callee+expanded identifier-reference target-index-node document)))) ) (test-end) (exit (if (zero? (test-runner-fail-count (test-runner-get))) 0 1)) \ No newline at end of file From 910bd033d720c9767fd2a0f823fe4ce33cf6ea3a Mon Sep 17 00:00:00 2001 From: ufo5260987423 Date: Wed, 13 Nov 2024 21:40:22 +0800 Subject: [PATCH 19/44] fix --- analysis/identifier/macro-expander.sls | 31 ++++++--- .../identifier/test-macro-expander.sps | 63 ++++++++++--------- 2 files changed, 57 insertions(+), 37 deletions(-) diff --git a/analysis/identifier/macro-expander.sls b/analysis/identifier/macro-expander.sls index 6bdc197..1517522 100644 --- a/analysis/identifier/macro-expander.sls +++ b/analysis/identifier/macro-expander.sls @@ -101,8 +101,7 @@ (append (filter (lambda (p) (not (equal? head (car p)))) left) `((,head... . (,(cdr prev-pair) ,tail))))] - [else (append left (list maybe-pair))]) - )) + [else (append left (list maybe-pair))]))) '() (apply append (map @@ -162,8 +161,13 @@ [template (eval `(syntax-case ',callee-expression ,keywords ,@(map private:get-specific-template clauses)))] [body-index-node (private:get-specific-body-index-node clause-index-nodes template)] [template-index-node (car (index-node-children (index-node-parent body-index-node)))] - [body-expression (annotation-stripped (index-node-datum/annotations body-index-node))]) - (private:template-variable+expanded template-index-node body-index-node body-expression expanded-index-node template+callees callee-document #f)) + [body-expression (annotation-stripped (index-node-datum/annotations body-index-node))] + [body-index-node-children (index-node-children body-index-node)]) + (if (or + (equal? (car body-expression) 'quasisyntax) + (equal? (car body-expression) 'syntax)) + (private:template-variable+expanded template-index-node (car body-index-node-children) (cadr body-expression) expanded-index-node template+callees callee-document #f) + (private:template-variable+expanded template-index-node body-index-node body-expression expanded-index-node template+callees callee-document #f))) '())] [else '()]))) @@ -226,18 +230,27 @@ ; [(and (private:syntax-parameter-index-node? body-index-node document body-expression) is-...?) (raise 'IdontKnowWhy)] [(and (private:syntax-parameter-index-node? template-index-node body-index-node document body-expression) (assoc body-expression template+callees)) `((,body-expression . ,expanded-index-node))] - [(private:syntax-parameter-index-node? template-index-node body-index-node document body-expression) (raise 'IdontKnowWhy)] + [(private:syntax-parameter-index-node? template-index-node body-index-node document body-expression) '()] [(symbol? body-expression) '()] + [(null? body-expression) '()] [(and (not (symbol? body-expression)) (index-node? body-index-node)) - (private:template-variable+expanded template-index-node (index-node-children body-index-node) body-expression (index-node-children expanded-index-node) template+callees document is-...?) ] + (if (or + (equal? (car body-expression) 'quasisyntax) + (equal? (car body-expression) 'syntax) + (equal? (car body-expression) 'quasiquote) + (equal? (car body-expression) 'unquote) + (equal? (car body-expression) 'unquote-splicing) + (equal? (car body-expression) 'unsyntax) + (equal? (car body-expression) 'unsyntax-splicing)) + '() + (private:template-variable+expanded template-index-node (index-node-children body-index-node) body-expression (index-node-children expanded-index-node) template+callees document is-...?))] [(vector? body-expression) (private:template-variable+expanded template-index-node body-index-node (vector->list body-expression) expanded-index-node template+callees document is-...?)] - [(null? body-expression) '()] [(not (list? body-expression)) (private:template-variable+expanded template-index-node body-index-node `(,(car body-expression) ,(cdr body-expression)) expanded-index-node template+callees document is-...?)] - [(>= (length body-index-node) 2) + [(>= (length body-expression) 2) (if (equal? (cadr body-expression) '...) (if is-...? (raise 'IdontKnowWhy) @@ -254,7 +267,7 @@ (private:template-variable+expanded template-index-node (car body-index-node) (car body-expression) (car expanded-index-node) template+callees document is-...?) (private:template-variable+expanded template-index-node (cdr body-index-node) (cdr body-expression) (cdr expanded-index-node) template+callees document is-...?)))] [(list? body-expression) - (private:template-variable+expanded template-index-node (car body-index-node ) (car body-expression) (car expanded-index-node) template+callees document is-...?)])) + (private:template-variable+expanded template-index-node (car body-index-node) (car body-expression) (car expanded-index-node) template+callees document is-...?)])) (define (private:syntax-parameter-index-node? template-index-node index-node document expression) (if (and (symbol? expression) (index-node? index-node)) diff --git a/tests/analysis/identifier/test-macro-expander.sps b/tests/analysis/identifier/test-macro-expander.sps index a7142c6..eadf78f 100755 --- a/tests/analysis/identifier/test-macro-expander.sps +++ b/tests/analysis/identifier/test-macro-expander.sps @@ -190,34 +190,41 @@ (map (lambda (px) (annotation-stripped (index-node-datum/annotations px))) (cdr p))))) template+callees)) - ; (pretty-print - ; ; test-equal - ; ; '(((atom ...) expression expression) - ; ; (((pat ...) ...) - ; ; ('only (identifier **1) _ ...) - ; ; ('except (identifier **1) _ ...) - ; ; ('prefix (identifier **1) _ ...) - ; ; ('rename (identifier **1) _ ...) - ; ; ('for (identifier **1) 'run ...) - ; ; ('for (identifier **1) '(meta 0) ...) - ; ; (identifier **1) - ; ; else) - ; ; (((body ...) ...) identifier identifier identifier identifier - ; ; identifier identifier identifier '())) - ; (map - ; (lambda (p) - ; `(,(car p) . - ; ,(if (find index-node? (cdr p)) - ; (map - ; (lambda (a) (annotation-stripped (index-node-datum/annotations a))) - ; (cdr p)) - ; (map - ; (lambda (a) - ; (map - ; (lambda (a) (annotation-stripped (index-node-datum/annotations a))) - ; a)) - ; (cdr p))))) - ; template+expanded)) + (test-equal + '((condition . c) + (body0 + match + expression + ((_ fuzzy ...) + (let* ([parent (index-node-parent index-node)] + [children (index-node-children index-node)] + [pre-target (map index-node-references-import-in-this-node + children)] + [target `(,@pre-target + ,(index-node-references-import-in-this-node + index-node))]) + (append-references-into-ordered-references-for + document + parent + (apply append target)))) + (else '()))) + (map + (lambda (p) + `(,(car p) . + ,(cond + [(index-node? (cdr p)) (annotation-stripped (index-node-datum/annotations (cdr p)))] + [(find index-node? (cdr p)) + (map + (lambda (a) (annotation-stripped (index-node-datum/annotations a))) + (cdr p))] + [else + (map + (lambda (a) + (map + (lambda (a) (annotation-stripped (index-node-datum/annotations a))) + a)) + (cdr p))]))) + template+expanded)) ; (test-equal ; '((match) (expression expression expression) From e5acd7606ed6cf14806fd3035176be1dd13ffcf5 Mon Sep 17 00:00:00 2001 From: ufo5260987423 Date: Thu, 14 Nov 2024 21:34:19 +0800 Subject: [PATCH 20/44] fix --- .../identifier/test-macro-expander.sps | 244 +++++++++--------- 1 file changed, 129 insertions(+), 115 deletions(-) diff --git a/tests/analysis/identifier/test-macro-expander.sps b/tests/analysis/identifier/test-macro-expander.sps index eadf78f..f10b93b 100755 --- a/tests/analysis/identifier/test-macro-expander.sps +++ b/tests/analysis/identifier/test-macro-expander.sps @@ -22,102 +22,102 @@ (scheme-langserver analysis tokenizer) (scheme-langserver analysis workspace)) -(test-begin "expand:step-by-step & generate-pair:template+callee & generate-pair:template+expanded for syntax-rules") - (let* ([workspace-instance (init-workspace (current-directory))] - [root-file-node (workspace-file-node workspace-instance)] - [target-file-node (walk-file root-file-node (string-append (current-directory) "/analysis/dependency/rules/library-import.sls"))] - [document (file-node-document target-file-node)] - [target-index-node (pick-index-node-from (document-index-node-list document) (text+position->int (document-text document) 37 6))] - [identifier-reference (car (find-available-references-for document target-index-node 'match))] - [template+callees (generate-pair:template+callee identifier-reference target-index-node document)] - [expanded-expression (car (expand:step-by-step identifier-reference target-index-node document))] - [expanded-index-node - (init-index-node - (identifier-reference-initialization-index-node identifier-reference) - (car - (source-file->annotations - (with-output-to-string (lambda () (pretty-print expanded-expression))) - (uri->path (document-uri (identifier-reference-document identifier-reference))))))] - [template+expanded (generate-pair:template+expanded identifier-reference expanded-index-node target-index-node document template+callees)]) - (test-equal - '(let ([v expression]) - (match-next v (expression (set! expression)) - (('only (identifier **1) _ ...) identifier) - (('except (identifier **1) _ ...) identifier) - (('prefix (identifier **1) _ ...) identifier) - (('rename (identifier **1) _ ...) identifier) - (('for (identifier **1) 'run ...) identifier) - (('for (identifier **1) '(meta 0) ...) identifier) - ((identifier **1) identifier) (else '()))) - expanded-expression) - (test-equal - '((match . match) - (atom . expression) - ((pat ...) ('only (identifier **1) _ ...) - ('except (identifier **1) _ ...) - ('prefix (identifier **1) _ ...) - ('rename (identifier **1) _ ...) - ('for (identifier **1) 'run ...) - ('for (identifier **1) '(meta 0) ...) (identifier **1) else) - ((body ...) identifier identifier identifier identifier identifier identifier identifier '())) - (map - (lambda (p) - `(,(car p) . - ,(if (index-node? (cdr p)) - (annotation-stripped (index-node-datum/annotations (cdr p))) - (map (lambda (px) (annotation-stripped (index-node-datum/annotations px))) (cdr p))))) - template+callees)) +; (test-begin "expand:step-by-step & generate-pair:template+callee & generate-pair:template+expanded for syntax-rules") +; (let* ([workspace-instance (init-workspace (current-directory))] +; [root-file-node (workspace-file-node workspace-instance)] +; [target-file-node (walk-file root-file-node (string-append (current-directory) "/analysis/dependency/rules/library-import.sls"))] +; [document (file-node-document target-file-node)] +; [target-index-node (pick-index-node-from (document-index-node-list document) (text+position->int (document-text document) 37 6))] +; [identifier-reference (car (find-available-references-for document target-index-node 'match))] +; [template+callees (generate-pair:template+callee identifier-reference target-index-node document)] +; [expanded-expression (car (expand:step-by-step identifier-reference target-index-node document))] +; [expanded-index-node +; (init-index-node +; (identifier-reference-initialization-index-node identifier-reference) +; (car +; (source-file->annotations +; (with-output-to-string (lambda () (pretty-print expanded-expression))) +; (uri->path (document-uri (identifier-reference-document identifier-reference))))))] +; [template+expanded (generate-pair:template+expanded identifier-reference expanded-index-node target-index-node document template+callees)]) +; (test-equal +; '(let ([v expression]) +; (match-next v (expression (set! expression)) +; (('only (identifier **1) _ ...) identifier) +; (('except (identifier **1) _ ...) identifier) +; (('prefix (identifier **1) _ ...) identifier) +; (('rename (identifier **1) _ ...) identifier) +; (('for (identifier **1) 'run ...) identifier) +; (('for (identifier **1) '(meta 0) ...) identifier) +; ((identifier **1) identifier) (else '()))) +; expanded-expression) +; (test-equal +; '((match . match) +; (atom . expression) +; ((pat ...) ('only (identifier **1) _ ...) +; ('except (identifier **1) _ ...) +; ('prefix (identifier **1) _ ...) +; ('rename (identifier **1) _ ...) +; ('for (identifier **1) 'run ...) +; ('for (identifier **1) '(meta 0) ...) (identifier **1) else) +; ((body ...) identifier identifier identifier identifier identifier identifier identifier '())) +; (map +; (lambda (p) +; `(,(car p) . +; ,(if (index-node? (cdr p)) +; (annotation-stripped (index-node-datum/annotations (cdr p))) +; (map (lambda (px) (annotation-stripped (index-node-datum/annotations px))) (cdr p))))) +; template+callees)) - (test-equal - '(((atom ...) expression expression) - (((pat ...) ...) - ('only (identifier **1) _ ...) - ('except (identifier **1) _ ...) - ('prefix (identifier **1) _ ...) - ('rename (identifier **1) _ ...) - ('for (identifier **1) 'run ...) - ('for (identifier **1) '(meta 0) ...) - (identifier **1) - else) - (((body ...) ...) identifier identifier identifier identifier - identifier identifier identifier '())) - (map - (lambda (p) - `(,(car p) . - ,(if (find index-node? (cdr p)) - (map - (lambda (a) (annotation-stripped (index-node-datum/annotations a))) - (cdr p)) - (map - (lambda (a) - (map - (lambda (a) (annotation-stripped (index-node-datum/annotations a))) - a)) - (cdr p))))) - template+expanded)) +; (test-equal +; '(((atom ...) expression expression) +; (((pat ...) ...) +; ('only (identifier **1) _ ...) +; ('except (identifier **1) _ ...) +; ('prefix (identifier **1) _ ...) +; ('rename (identifier **1) _ ...) +; ('for (identifier **1) 'run ...) +; ('for (identifier **1) '(meta 0) ...) +; (identifier **1) +; else) +; (((body ...) ...) identifier identifier identifier identifier +; identifier identifier identifier '())) +; (map +; (lambda (p) +; `(,(car p) . +; ,(if (find index-node? (cdr p)) +; (map +; (lambda (a) (annotation-stripped (index-node-datum/annotations a))) +; (cdr p)) +; (map +; (lambda (a) +; (map +; (lambda (a) (annotation-stripped (index-node-datum/annotations a))) +; a)) +; (cdr p))))) +; template+expanded)) - (test-equal - '((match) (expression expression expression) - (('only (identifier **1) _ ...) - ('only (identifier **1) _ ...)) - (('except (identifier **1) _ ...) - ('except (identifier **1) _ ...)) - (('prefix (identifier **1) _ ...) - ('prefix (identifier **1) _ ...)) - (('rename (identifier **1) _ ...) - ('rename (identifier **1) _ ...)) - (('for (identifier **1) 'run ...) - ('for (identifier **1) 'run ...)) - (('for (identifier **1) '(meta 0) ...) - ('for (identifier **1) '(meta 0) ...)) - ((identifier **1) (identifier **1)) (else else) - (identifier identifier) (identifier identifier) - (identifier identifier) (identifier identifier) - (identifier identifier) (identifier identifier) - (identifier identifier) ('() '())) - (map (lambda (l) (map (lambda (p) (annotation-stripped (index-node-datum/annotations p))) l)) - (car (generate-pair:callee+expanded identifier-reference target-index-node document))))) -(test-end) +; (test-equal +; '((match) (expression expression expression) +; (('only (identifier **1) _ ...) +; ('only (identifier **1) _ ...)) +; (('except (identifier **1) _ ...) +; ('except (identifier **1) _ ...)) +; (('prefix (identifier **1) _ ...) +; ('prefix (identifier **1) _ ...)) +; (('rename (identifier **1) _ ...) +; ('rename (identifier **1) _ ...)) +; (('for (identifier **1) 'run ...) +; ('for (identifier **1) 'run ...)) +; (('for (identifier **1) '(meta 0) ...) +; ('for (identifier **1) '(meta 0) ...)) +; ((identifier **1) (identifier **1)) (else else) +; (identifier identifier) (identifier identifier) +; (identifier identifier) (identifier identifier) +; (identifier identifier) (identifier identifier) +; (identifier identifier) ('() '())) +; (map (lambda (l) (map (lambda (p) (annotation-stripped (index-node-datum/annotations p))) l)) +; (car (generate-pair:callee+expanded identifier-reference target-index-node document))))) +; (test-end) (test-begin "expand:step-by-step & generate-pair:template+callee & generate-pair:template+expanded for syntax-case") (let* ([workspace-instance (init-workspace (current-directory))] @@ -226,27 +226,41 @@ (cdr p))]))) template+expanded)) - ; (test-equal - ; '((match) (expression expression expression) - ; (('only (identifier **1) _ ...) - ; ('only (identifier **1) _ ...)) - ; (('except (identifier **1) _ ...) - ; ('except (identifier **1) _ ...)) - ; (('prefix (identifier **1) _ ...) - ; ('prefix (identifier **1) _ ...)) - ; (('rename (identifier **1) _ ...) - ; ('rename (identifier **1) _ ...)) - ; (('for (identifier **1) 'run ...) - ; ('for (identifier **1) 'run ...)) - ; (('for (identifier **1) '(meta 0) ...) - ; ('for (identifier **1) '(meta 0) ...)) - ; ((identifier **1) (identifier **1)) (else else) - ; (identifier identifier) (identifier identifier) - ; (identifier identifier) (identifier identifier) - ; (identifier identifier) (identifier identifier) - ; (identifier identifier) ('() '())) - ; (map (lambda (l) (map (lambda (p) (annotation-stripped (index-node-datum/annotations p))) l)) - ; (car (generate-pair:callee+expanded identifier-reference target-index-node document)))) + (test-equal + '((try) + ((match expression + [(_ fuzzy ...) + (let* ([parent (index-node-parent index-node)] + [children (index-node-children index-node)] + [pre-target (map index-node-references-import-in-this-node + children)] + [target `(,@pre-target + ,(index-node-references-import-in-this-node + index-node))]) + (append-references-into-ordered-references-for + document + parent + (apply append target)))] + [else '()]) + (match expression + [(_ fuzzy ...) + (let* ([parent (index-node-parent index-node)] + [children (index-node-children index-node)] + [pre-target (map index-node-references-import-in-this-node + children)] + [target `(,@pre-target + ,(index-node-references-import-in-this-node + index-node))]) + (append-references-into-ordered-references-for + document + parent + (apply append target)))] + [else '()])) + (except) + (c c) + ((else '()))) + (map (lambda (l) (map (lambda (p) (annotation-stripped (index-node-datum/annotations p))) l)) + (car (generate-pair:callee+expanded identifier-reference target-index-node document)))) ) (test-end) (exit (if (zero? (test-runner-fail-count (test-runner-get))) 0 1)) \ No newline at end of file From 8c33cbf0b2fb89c43701b4c860c5185073f50dcb Mon Sep 17 00:00:00 2001 From: ufo5260987423 Date: Thu, 14 Nov 2024 22:32:44 +0800 Subject: [PATCH 21/44] fix --- analysis/identifier/macro-expander.sls | 90 +++++---- .../identifier/rules/self-defined-syntax.sls | 48 ++--- .../identifier/test-macro-expander.sps | 188 +++++++++--------- 3 files changed, 157 insertions(+), 169 deletions(-) diff --git a/analysis/identifier/macro-expander.sls b/analysis/identifier/macro-expander.sls index 1517522..02ba3f0 100644 --- a/analysis/identifier/macro-expander.sls +++ b/analysis/identifier/macro-expander.sls @@ -38,51 +38,55 @@ (define (expand:step-by-step identifier-reference callee-index-node callee-document) (map cdr (expand:step-by-step-identifier-reference identifier-reference callee-index-node callee-document))) -(define (generate-pair:callee+expanded identifier-reference callee-index-node callee-document) - (let ([template+callees (generate-pair:template+callee identifier-reference callee-index-node callee-document)]) - (map - (lambda (expanded-expression) - (let* ([expanded-index-node - (init-index-node - (identifier-reference-initialization-index-node identifier-reference) - (car - (source-file->annotations - (with-output-to-string (lambda () (pretty-print expanded-expression))) - (uri->path (document-uri (identifier-reference-document identifier-reference))))))] - [template+expandeds (generate-pair:template+expanded identifier-reference expanded-index-node callee-index-node callee-document template+callees)]) - (apply append - (map - (lambda (template+callee) - (let* ([template (car template+callee)] - [callee (cdr template+callee)] - [pre (assoc template template+expandeds)] - [after (if pre pre (assoc `(,template ...) template+expandeds))] - [target-expandeds (if after (cdr after) '())]) - (cond - [(and (index-node? callee) (index-node? target-expandeds)) `((,callee ,target-expandeds))] - [(and (index-node? callee) (find list? target-expandeds)) `((,callee . ,(apply append target-expandeds)))] - [(index-node? callee) `((,callee . ,target-expandeds))] - [(find list? target-expandeds) - (fold-left - (lambda (left right) +(define generate-pair:callee+expanded + (case-lambda + [(identifier-reference callee-index-node callee-document) + (generate-pair:callee+expanded (expand:step-by-step identifier-reference callee-index-node callee-document) identifier-reference callee-index-node callee-document)] + [(expanded-index-node-list identifier-reference callee-index-node callee-document) + (let ([template+callees (generate-pair:template+callee identifier-reference callee-index-node callee-document)]) + (map + (lambda (expanded-expression) + (let* ([expanded-index-node + (init-index-node + (identifier-reference-initialization-index-node identifier-reference) + (car + (source-file->annotations + (with-output-to-string (lambda () (pretty-print expanded-expression))) + (uri->path (document-uri (identifier-reference-document identifier-reference))))))] + [template+expandeds (generate-pair:template+expanded identifier-reference expanded-index-node callee-index-node callee-document template+callees)]) + (apply append + (map + (lambda (template+callee) + (let* ([template (car template+callee)] + [callee (cdr template+callee)] + [pre (assoc template template+expandeds)] + [after (if pre pre (assoc `(,template ...) template+expandeds))] + [target-expandeds (if after (cdr after) '())]) + (cond + [(and (index-node? callee) (index-node? target-expandeds)) `((,callee ,target-expandeds))] + [(and (index-node? callee) (find list? target-expandeds)) `((,callee . ,(apply append target-expandeds)))] + [(index-node? callee) `((,callee . ,target-expandeds))] + [(find list? target-expandeds) + (fold-left + (lambda (left right) + (fold-left + (lambda (current-left . rights) + (if (list? (car rights)) + `(,@current-left ,(append (car rights) (cdr rights))) + `(,@current-left ,rights))) + '() + left + right)) + callee + target-expandeds)] + [else (fold-left - (lambda (current-left . rights) - (if (list? (car rights)) - `(,@current-left ,(append (car rights) (cdr rights))) - `(,@current-left ,rights))) + (lambda (left . rights) `(,@left ,rights)) '() - left - right)) - callee - target-expandeds)] - [else - (fold-left - (lambda (left . rights) `(,@left ,rights)) - '() - callee - target-expandeds)]))) - template+callees)))) - (expand:step-by-step identifier-reference callee-index-node callee-document)))) + callee + target-expandeds)]))) + template+callees)))) + expanded-index-node-list))])) (define (generate-pair:template+expanded identifier-reference expanded-index-node callee-index-node callee-document template+callees) (fold-left diff --git a/analysis/identifier/rules/self-defined-syntax.sls b/analysis/identifier/rules/self-defined-syntax.sls index cb5c93c..473a0f6 100644 --- a/analysis/identifier/rules/self-defined-syntax.sls +++ b/analysis/identifier/rules/self-defined-syntax.sls @@ -25,44 +25,28 @@ (scheme-langserver virtual-file-system file-node)) (define (self-defined-syntax-process identifier-reference callee-index-node callee-document stepper) - (let* ([identifier+expanded-expression (expand:step-by-step-identifier-reference identifier-reference callee-index-node callee-document)] - [expanded-expression (cdr identifier+expanded-expression)] - [top-identifier-reference (car identifier+expanded-expression)] - [top-index-node (index-node-parent (identifier-reference-initialization-index-node top-identifier-reference))] - [top-document (identifier-reference-document top-identifier-reference)] - [virtual-index-node-list (private:init-virtual-index-node-list expanded-expression top-index-node top-document)] - ;; [stepped-virtual-index-node-list (map (lambda (i) (stepper top-document generated-index-node specific-allow-extend-macro?)) virtual-index-node-list)] - ;; [callee-expression (annotation-stripped (index-node-datum/annotations callee-index-node))] - ;; [callee-symbol-index-node-list (private:get-symbol-index-node-children callee-index-node)] - ;; [virtual-symbol-index-node-list (apply append (map private:get-symbol-index-node-children stepped-virtual-index-node-list))] - ) - ;; (map - ;; (lambda (callee-symbol-index-node) - ;; (map - ;; (lambda (virtual-symbol-index-node) - ;; (map - ;; (lambda (identifier-reference) - ;; ) - ;; (index-node-references-export-to-other-node virtual-symbol-index-node))) - ;; (filter - ;; (lambda (virtual-symbol-index-node) - ;; (equal? - ;; (annotation-stripped (index-node-datum/annotations callee-symbol-index-node)) - ;; (annotation-stripped (index-node-datum/annotations virtual-symbol-index-node)))) - ;; virtual-symbol-index-node-list))) - ;; callee-symbol-index-node-list) - '() + (map + (lambda (expanded-expression) + (let* ([identifier-reference (root-ancestor identifier-reference)] + [expanded-index-node + (init-index-node + (identifier-reference-initialization-index-node identifier-reference) + (car + (source-file->annotations + (with-output-to-string (lambda () (pretty-print expanded-expression))) + (uri->path (document-uri (identifier-reference-document identifier-reference))))))] + [callee+expanded-pairs (generate-pair:callee+expanded `(,expanded-index-node) identifier-reference callee-index-node callee-document)] + ; [] + ) + ;todo:hygenient + '() )) + (expand:step-by-step identifier-reference callee-index-node callee-document))) (define (private:process-identifier-claiment callee-index-node identifier-reference virtual-symbol-index-node-list) '() ) -(define (private:init-virtual-index-node-list expanded-expression parent-index-node document) - (map - (lambda (item) (init-index-node parent-index-node item)) - (source-file->annotations (with-output-to-string (lambda () (pretty-print expanded-expression))) (uri->path (document-uri document))))) - (define (private:get-symbol-index-node-children target-index-node) (let ([expression (annotation-stripped (index-node-datum/annotations target-index-node))] [children (index-node-children target-index-node)]) diff --git a/tests/analysis/identifier/test-macro-expander.sps b/tests/analysis/identifier/test-macro-expander.sps index f10b93b..00578f6 100755 --- a/tests/analysis/identifier/test-macro-expander.sps +++ b/tests/analysis/identifier/test-macro-expander.sps @@ -22,102 +22,102 @@ (scheme-langserver analysis tokenizer) (scheme-langserver analysis workspace)) -; (test-begin "expand:step-by-step & generate-pair:template+callee & generate-pair:template+expanded for syntax-rules") -; (let* ([workspace-instance (init-workspace (current-directory))] -; [root-file-node (workspace-file-node workspace-instance)] -; [target-file-node (walk-file root-file-node (string-append (current-directory) "/analysis/dependency/rules/library-import.sls"))] -; [document (file-node-document target-file-node)] -; [target-index-node (pick-index-node-from (document-index-node-list document) (text+position->int (document-text document) 37 6))] -; [identifier-reference (car (find-available-references-for document target-index-node 'match))] -; [template+callees (generate-pair:template+callee identifier-reference target-index-node document)] -; [expanded-expression (car (expand:step-by-step identifier-reference target-index-node document))] -; [expanded-index-node -; (init-index-node -; (identifier-reference-initialization-index-node identifier-reference) -; (car -; (source-file->annotations -; (with-output-to-string (lambda () (pretty-print expanded-expression))) -; (uri->path (document-uri (identifier-reference-document identifier-reference))))))] -; [template+expanded (generate-pair:template+expanded identifier-reference expanded-index-node target-index-node document template+callees)]) -; (test-equal -; '(let ([v expression]) -; (match-next v (expression (set! expression)) -; (('only (identifier **1) _ ...) identifier) -; (('except (identifier **1) _ ...) identifier) -; (('prefix (identifier **1) _ ...) identifier) -; (('rename (identifier **1) _ ...) identifier) -; (('for (identifier **1) 'run ...) identifier) -; (('for (identifier **1) '(meta 0) ...) identifier) -; ((identifier **1) identifier) (else '()))) -; expanded-expression) -; (test-equal -; '((match . match) -; (atom . expression) -; ((pat ...) ('only (identifier **1) _ ...) -; ('except (identifier **1) _ ...) -; ('prefix (identifier **1) _ ...) -; ('rename (identifier **1) _ ...) -; ('for (identifier **1) 'run ...) -; ('for (identifier **1) '(meta 0) ...) (identifier **1) else) -; ((body ...) identifier identifier identifier identifier identifier identifier identifier '())) -; (map -; (lambda (p) -; `(,(car p) . -; ,(if (index-node? (cdr p)) -; (annotation-stripped (index-node-datum/annotations (cdr p))) -; (map (lambda (px) (annotation-stripped (index-node-datum/annotations px))) (cdr p))))) -; template+callees)) +(test-begin "expand:step-by-step & generate-pair:template+callee & generate-pair:template+expanded for syntax-rules") + (let* ([workspace-instance (init-workspace (current-directory))] + [root-file-node (workspace-file-node workspace-instance)] + [target-file-node (walk-file root-file-node (string-append (current-directory) "/analysis/dependency/rules/library-import.sls"))] + [document (file-node-document target-file-node)] + [target-index-node (pick-index-node-from (document-index-node-list document) (text+position->int (document-text document) 37 6))] + [identifier-reference (car (find-available-references-for document target-index-node 'match))] + [template+callees (generate-pair:template+callee identifier-reference target-index-node document)] + [expanded-expression (car (expand:step-by-step identifier-reference target-index-node document))] + [expanded-index-node + (init-index-node + (identifier-reference-initialization-index-node identifier-reference) + (car + (source-file->annotations + (with-output-to-string (lambda () (pretty-print expanded-expression))) + (uri->path (document-uri (identifier-reference-document identifier-reference))))))] + [template+expanded (generate-pair:template+expanded identifier-reference expanded-index-node target-index-node document template+callees)]) + (test-equal + '(let ([v expression]) + (match-next v (expression (set! expression)) + (('only (identifier **1) _ ...) identifier) + (('except (identifier **1) _ ...) identifier) + (('prefix (identifier **1) _ ...) identifier) + (('rename (identifier **1) _ ...) identifier) + (('for (identifier **1) 'run ...) identifier) + (('for (identifier **1) '(meta 0) ...) identifier) + ((identifier **1) identifier) (else '()))) + expanded-expression) + (test-equal + '((match . match) + (atom . expression) + ((pat ...) ('only (identifier **1) _ ...) + ('except (identifier **1) _ ...) + ('prefix (identifier **1) _ ...) + ('rename (identifier **1) _ ...) + ('for (identifier **1) 'run ...) + ('for (identifier **1) '(meta 0) ...) (identifier **1) else) + ((body ...) identifier identifier identifier identifier identifier identifier identifier '())) + (map + (lambda (p) + `(,(car p) . + ,(if (index-node? (cdr p)) + (annotation-stripped (index-node-datum/annotations (cdr p))) + (map (lambda (px) (annotation-stripped (index-node-datum/annotations px))) (cdr p))))) + template+callees)) -; (test-equal -; '(((atom ...) expression expression) -; (((pat ...) ...) -; ('only (identifier **1) _ ...) -; ('except (identifier **1) _ ...) -; ('prefix (identifier **1) _ ...) -; ('rename (identifier **1) _ ...) -; ('for (identifier **1) 'run ...) -; ('for (identifier **1) '(meta 0) ...) -; (identifier **1) -; else) -; (((body ...) ...) identifier identifier identifier identifier -; identifier identifier identifier '())) -; (map -; (lambda (p) -; `(,(car p) . -; ,(if (find index-node? (cdr p)) -; (map -; (lambda (a) (annotation-stripped (index-node-datum/annotations a))) -; (cdr p)) -; (map -; (lambda (a) -; (map -; (lambda (a) (annotation-stripped (index-node-datum/annotations a))) -; a)) -; (cdr p))))) -; template+expanded)) + (test-equal + '(((atom ...) expression expression) + (((pat ...) ...) + ('only (identifier **1) _ ...) + ('except (identifier **1) _ ...) + ('prefix (identifier **1) _ ...) + ('rename (identifier **1) _ ...) + ('for (identifier **1) 'run ...) + ('for (identifier **1) '(meta 0) ...) + (identifier **1) + else) + (((body ...) ...) identifier identifier identifier identifier + identifier identifier identifier '())) + (map + (lambda (p) + `(,(car p) . + ,(if (find index-node? (cdr p)) + (map + (lambda (a) (annotation-stripped (index-node-datum/annotations a))) + (cdr p)) + (map + (lambda (a) + (map + (lambda (a) (annotation-stripped (index-node-datum/annotations a))) + a)) + (cdr p))))) + template+expanded)) -; (test-equal -; '((match) (expression expression expression) -; (('only (identifier **1) _ ...) -; ('only (identifier **1) _ ...)) -; (('except (identifier **1) _ ...) -; ('except (identifier **1) _ ...)) -; (('prefix (identifier **1) _ ...) -; ('prefix (identifier **1) _ ...)) -; (('rename (identifier **1) _ ...) -; ('rename (identifier **1) _ ...)) -; (('for (identifier **1) 'run ...) -; ('for (identifier **1) 'run ...)) -; (('for (identifier **1) '(meta 0) ...) -; ('for (identifier **1) '(meta 0) ...)) -; ((identifier **1) (identifier **1)) (else else) -; (identifier identifier) (identifier identifier) -; (identifier identifier) (identifier identifier) -; (identifier identifier) (identifier identifier) -; (identifier identifier) ('() '())) -; (map (lambda (l) (map (lambda (p) (annotation-stripped (index-node-datum/annotations p))) l)) -; (car (generate-pair:callee+expanded identifier-reference target-index-node document))))) -; (test-end) + (test-equal + '((match) (expression expression expression) + (('only (identifier **1) _ ...) + ('only (identifier **1) _ ...)) + (('except (identifier **1) _ ...) + ('except (identifier **1) _ ...)) + (('prefix (identifier **1) _ ...) + ('prefix (identifier **1) _ ...)) + (('rename (identifier **1) _ ...) + ('rename (identifier **1) _ ...)) + (('for (identifier **1) 'run ...) + ('for (identifier **1) 'run ...)) + (('for (identifier **1) '(meta 0) ...) + ('for (identifier **1) '(meta 0) ...)) + ((identifier **1) (identifier **1)) (else else) + (identifier identifier) (identifier identifier) + (identifier identifier) (identifier identifier) + (identifier identifier) (identifier identifier) + (identifier identifier) ('() '())) + (map (lambda (l) (map (lambda (p) (annotation-stripped (index-node-datum/annotations p))) l)) + (car (generate-pair:callee+expanded identifier-reference target-index-node document))))) +(test-end) (test-begin "expand:step-by-step & generate-pair:template+callee & generate-pair:template+expanded for syntax-case") (let* ([workspace-instance (init-workspace (current-directory))] From 5aa69dfec11f2f2233e59fb699356d053143bef9 Mon Sep 17 00:00:00 2001 From: ufo5260987423 Date: Mon, 18 Nov 2024 16:07:49 +0800 Subject: [PATCH 22/44] fix:ok, it can run --- analysis/abstract-interpreter.sls | 64 +++++++++++-------- .../identifier/rules/self-defined-syntax.sls | 16 +++-- analysis/workspace.sls | 4 +- tests/virtual-file-system/test-index-node.sps | 1 - 4 files changed, 53 insertions(+), 32 deletions(-) diff --git a/analysis/abstract-interpreter.sls b/analysis/abstract-interpreter.sls index 29a6113..3fd1031 100644 --- a/analysis/abstract-interpreter.sls +++ b/analysis/abstract-interpreter.sls @@ -66,31 +66,33 @@ (define step (case-lambda [(root-file-node root-library-node file-linkage current-document) + (step root-file-node root-library-node file-linkage current-document '())] + [(root-file-node root-library-node file-linkage current-document expanded+callee-list) (fold-left (lambda (l current-index-node) - (step root-file-node root-library-node file-linkage current-document current-index-node #t)) + (step root-file-node root-library-node file-linkage current-document current-index-node '())) '() (document-index-node-list current-document)) (document-ordered-reference-list current-document)] - [(root-file-node root-library-node file-linkage current-document current-index-node allow-extend-macro?) + [(root-file-node root-library-node file-linkage current-document current-index-node expanded+callee-list) (cond [(quote? current-index-node current-document) - (index-node-excluded-references-set! current-index-node (find-available-references-for current-document current-index-node))] + (index-node-excluded-references-set! current-index-node (private:find-available-references-for expanded+callee-list current-document current-index-node))] [(quasiquote? current-index-node current-document) - (index-node-excluded-references-set! current-index-node (find-available-references-for current-document current-index-node)) + (index-node-excluded-references-set! current-index-node (private:find-available-references-for expanded+callee-list current-document current-index-node)) (map (lambda (i) - (step root-file-node root-library-node file-linkage current-document i (index-node-excluded-references current-index-node) allow-extend-macro? 'quasiquoted)) + (step root-file-node root-library-node file-linkage current-document i (index-node-excluded-references current-index-node) 'quasiquoted expanded+callee-list)) (index-node-children current-index-node))] [(syntax? current-index-node current-document) (index-node-excluded-references-set! current-index-node - (filter (lambda (i) (not (equal? (identifier-reference-type i) 'syntax-parameter))) (find-available-references-for current-document current-index-node)))] + (filter (lambda (i) (not (equal? (identifier-reference-type i) 'syntax-parameter))) (private:find-available-references-for expanded+callee-list current-document current-index-node)))] [(quasisyntax? current-index-node current-document) - (let ([available-identifiers (find-available-references-for current-document current-index-node)]) + (let ([available-identifiers (private:find-available-references-for expanded+callee-list current-document current-index-node)]) (index-node-excluded-references-set! current-index-node (filter (lambda (i) (not (equal? (identifier-reference-type i) 'syntax-parameter))) available-identifiers)) (map (lambda (i) - (step root-file-node root-library-node file-linkage current-document i available-identifiers allow-extend-macro? 'quasisyntaxed)) + (step root-file-node root-library-node file-linkage current-document i available-identifiers 'quasisyntaxed expanded+callee-list)) (index-node-children current-index-node)))] [(not (null? (index-node-children current-index-node))) (let* ([children (index-node-children current-index-node)] @@ -101,14 +103,14 @@ [(symbol? head-expression) (establish-available-rules-from file-linkage - (find-available-references-for current-document current-index-node head-expression) + (private:find-available-references-for expanded+callee-list current-document current-index-node head-expression) current-document - #t)] + expanded+callee-list)] [else '()])]) (map (lambda (f) ((car (cdr f)) root-file-node root-library-node current-document current-index-node)) target-rules) (fold-left (lambda (l child-index-node) - (step root-file-node root-library-node file-linkage current-document child-index-node allow-extend-macro?)) + (step root-file-node root-library-node file-linkage current-document child-index-node expanded+callee-list)) '() children) (map @@ -117,7 +119,7 @@ ((cdr (cdr f)) root-file-node root-library-node current-document current-index-node))) target-rules))] [else '()])] - [(root-file-node root-library-node file-linkage current-document current-index-node available-identifiers allow-extend-macro? quasi-quoted-syntaxed) + [(root-file-node root-library-node file-linkage current-document current-index-node available-identifiers quasi-quoted-syntaxed expanded+callee-list) (if (case quasi-quoted-syntaxed ['quasiquoted (or (unquote? current-index-node current-document) (unquote-splicing? current-index-node current-document))] ['quasisyntaxed (or (unsyntax? current-index-node current-document) (unsyntax-splicing? current-index-node current-document))]) @@ -128,11 +130,11 @@ (index-node-references-import-in-this-node-set! current-index-node (sort-identifier-references available-identifiers)) (map (lambda (i) - (step root-file-node root-library-node file-linkage current-document i allow-extend-macro?)) + (step root-file-node root-library-node file-linkage current-document i expanded+callee-list)) (index-node-children current-index-node))) (map (lambda (i) - (step root-file-node root-library-node file-linkage current-document i available-identifiers allow-extend-macro? quasi-quoted-syntaxed)) + (step root-file-node root-library-node file-linkage current-document i available-identifiers quasi-quoted-syntaxed expanded+callee-list)) (index-node-children current-index-node)))])) (define (private-rule-compare? item0 item1) @@ -147,7 +149,7 @@ [(equal? (primitive-content primitive-expression) '$invoke-library) `(,primitive-expression . (,invoke-library-process))] [else '()])) -(define (establish-available-rules-from file-linkage identifier-list current-document allow-extend-macro?) +(define (establish-available-rules-from file-linkage identifier-list current-document expanded+callee-list) (fold-left (lambda (rules identifier) (let* ([top (root-ancestor identifier)] @@ -219,7 +221,6 @@ [else rules]) (cond - [(not allow-extend-macro?) rules] [(and (equal? is '((srfi :23 error tricks))) (equal? r '(SRFI-23-error->R6RS))) (private-add-rule rules `((,do-nothing . ,body-process) . ,identifier))] [(and (equal? is '((srfi private include))) (equal? r '(include/resolve))) @@ -228,17 +229,18 @@ (include-resolve-process root-file-node root-library-node document index-node (lambda (current-document) (file-linkage-set! file-linkage (uri->path (document-uri document)) (uri->path (document-uri current-document))) - (step root-file-node root-library-node file-linkage current-document))))]) + (step root-file-node root-library-node file-linkage current-document expanded+callee-list))))]) (private-add-rule rules `((,target-lambda) . ,identifier)))] [(contain? (map identifier-reference-type top) 'syntax-variable) - ;; (private-add-rule - ;; rules - ;; `((,(lambda (root-file-node root-library-node document index-node) - ;; (self-defined-syntax-process - ;; root-file-node root-library-node document index-node file-linkage - ;; (lambda (specific-document generated-index-node specific-allow-extend-macro?) - ;; (step root-file-node root-library-node file-linkage specific-document generated-index-node specific-allow-extend-macro?))) - ;; )) . ,identifier)) + ; (private-add-rule + ; rules + ; `((,(lambda (root-file-node root-library-node document index-node) + ; (self-defined-syntax-process + ; root-file-node root-library-node document index-node file-linkage expanded+callee-list + ; (lambda (specific-document generated-index-node new-expanded+callee-list) + ; (step root-file-node root-library-node file-linkage specific-document generated-index-node new-expanded+callee-list))) + ; )) . ,identifier)) + ;not now to delete rules ] [else rules]) @@ -252,4 +254,16 @@ (equal? 'syntax-parameter (identifier-reference-type identifier)) (equal? 'procedure (identifier-reference-type identifier))))) identifier-list))) +(define private:find-available-references-for + (case-lambda + [(expanded+callee-list current-document current-index-node) + (let ([result (assoc current-index-node expanded+callee-list)]) + (if result + (private:find-available-references-for expanded+callee-list current-document (cdr result)) + (find-available-references-for current-document current-index-node)))] + [(expanded+callee-list current-document current-index-node expression) + (let ([result (assoc current-index-node expanded+callee-list)]) + (if result + (private:find-available-references-for expanded+callee-list current-document (cdr result) expression) + (find-available-references-for current-document current-index-node expression)))])) ) \ No newline at end of file diff --git a/analysis/identifier/rules/self-defined-syntax.sls b/analysis/identifier/rules/self-defined-syntax.sls index 473a0f6..af686e1 100644 --- a/analysis/identifier/rules/self-defined-syntax.sls +++ b/analysis/identifier/rules/self-defined-syntax.sls @@ -24,7 +24,7 @@ (scheme-langserver virtual-file-system document) (scheme-langserver virtual-file-system file-node)) -(define (self-defined-syntax-process identifier-reference callee-index-node callee-document stepper) +(define (self-defined-syntax-process identifier-reference callee-index-node callee-document old-expanded-index-node stepper) (map (lambda (expanded-expression) (let* ([identifier-reference (root-ancestor identifier-reference)] @@ -36,13 +36,21 @@ (with-output-to-string (lambda () (pretty-print expanded-expression))) (uri->path (document-uri (identifier-reference-document identifier-reference))))))] [callee+expanded-pairs (generate-pair:callee+expanded `(,expanded-index-node) identifier-reference callee-index-node callee-document)] - ; [] - ) - ;todo:hygenient + [expanded+callee-list (private:reverse-pair callee+expanded-pairs)]) + (stepper (identifier-reference-document identifier-reference) expanded-index-node (append expanded+callee-list old-expanded-index-node)) '() )) (expand:step-by-step identifier-reference callee-index-node callee-document))) +(define (private:reverse-pair callee+expanded-pairs) + (apply append + (map + (lambda (pair) + (map + (lambda (i) `(,i . ,(car i))) + (cdr pair))) + callee+expanded-pairs))) + (define (private:process-identifier-claiment callee-index-node identifier-reference virtual-symbol-index-node-list) '() ) diff --git a/analysis/workspace.sls b/analysis/workspace.sls index 4c798bf..94521e5 100644 --- a/analysis/workspace.sls +++ b/analysis/workspace.sls @@ -130,8 +130,8 @@ (let* ([current-file-node (walk-file root-file-node target-path)] [document (file-node-document current-file-node)] [index-node-list (document-index-node-list document)]) - ;; (pretty-print 'test0) - ;; (pretty-print target-path) + ; (pretty-print 'test0) + ; (pretty-print target-path) (step root-file-node root-library-node file-linkage document) (process-library-identifier-excluded-references document) ;; (pretty-print 'test1) diff --git a/tests/virtual-file-system/test-index-node.sps b/tests/virtual-file-system/test-index-node.sps index 75b93f8..026ba60 100755 --- a/tests/virtual-file-system/test-index-node.sps +++ b/tests/virtual-file-system/test-index-node.sps @@ -5,7 +5,6 @@ #!r6rs (import - ; (rnrs (6)) (chezscheme) (srfi :64 testing) (scheme-langserver util text) From dcd117d8f45623e10b98f28f0c449ad149591c5d Mon Sep 17 00:00:00 2001 From: ufo5260987423 Date: Sat, 23 Nov 2024 18:57:54 +0800 Subject: [PATCH 23/44] fix:ok, it can run --- analysis/identifier/macro-expander.sls | 86 +++++++++++++------------- 1 file changed, 44 insertions(+), 42 deletions(-) diff --git a/analysis/identifier/macro-expander.sls b/analysis/identifier/macro-expander.sls index 02ba3f0..0664f0b 100644 --- a/analysis/identifier/macro-expander.sls +++ b/analysis/identifier/macro-expander.sls @@ -42,51 +42,53 @@ (case-lambda [(identifier-reference callee-index-node callee-document) (generate-pair:callee+expanded (expand:step-by-step identifier-reference callee-index-node callee-document) identifier-reference callee-index-node callee-document)] - [(expanded-index-node-list identifier-reference callee-index-node callee-document) + [(expanded-expression-list identifier-reference callee-index-node callee-document) (let ([template+callees (generate-pair:template+callee identifier-reference callee-index-node callee-document)]) (map (lambda (expanded-expression) - (let* ([expanded-index-node - (init-index-node - (identifier-reference-initialization-index-node identifier-reference) - (car - (source-file->annotations - (with-output-to-string (lambda () (pretty-print expanded-expression))) - (uri->path (document-uri (identifier-reference-document identifier-reference))))))] - [template+expandeds (generate-pair:template+expanded identifier-reference expanded-index-node callee-index-node callee-document template+callees)]) - (apply append - (map - (lambda (template+callee) - (let* ([template (car template+callee)] - [callee (cdr template+callee)] - [pre (assoc template template+expandeds)] - [after (if pre pre (assoc `(,template ...) template+expandeds))] - [target-expandeds (if after (cdr after) '())]) - (cond - [(and (index-node? callee) (index-node? target-expandeds)) `((,callee ,target-expandeds))] - [(and (index-node? callee) (find list? target-expandeds)) `((,callee . ,(apply append target-expandeds)))] - [(index-node? callee) `((,callee . ,target-expandeds))] - [(find list? target-expandeds) - (fold-left - (lambda (left right) - (fold-left - (lambda (current-left . rights) - (if (list? (car rights)) - `(,@current-left ,(append (car rights) (cdr rights))) - `(,@current-left ,rights))) - '() - left - right)) - callee - target-expandeds)] - [else - (fold-left - (lambda (left . rights) `(,@left ,rights)) - '() - callee - target-expandeds)]))) - template+callees)))) - expanded-index-node-list))])) + (generate-pair:callee+expanded template+callees + (init-index-node + (identifier-reference-initialization-index-node identifier-reference) + (car + (source-file->annotations + (with-output-to-string (lambda () (pretty-print expanded-expression))) + (uri->path (document-uri (identifier-reference-document identifier-reference)))))) + identifier-reference callee-index-node callee-document)) + expanded-expression-list))] + [(template+callees expanded-index-node identifier-reference callee-index-node callee-document) + (let ([template+expandeds (generate-pair:template+expanded identifier-reference expanded-index-node callee-index-node callee-document template+callees)]) + (apply append + (map + (lambda (template+callee) + (let* ([template (car template+callee)] + [callee (cdr template+callee)] + [pre (assoc template template+expandeds)] + [after (if pre pre (assoc `(,template ...) template+expandeds))] + [target-expandeds (if after (cdr after) '())]) + (cond + [(and (index-node? callee) (index-node? target-expandeds)) `((,callee ,target-expandeds))] + [(and (index-node? callee) (find list? target-expandeds)) `((,callee . ,(apply append target-expandeds)))] + [(index-node? callee) `((,callee . ,target-expandeds))] + [(find list? target-expandeds) + (fold-left + (lambda (left right) + (fold-left + (lambda (current-left . rights) + (if (list? (car rights)) + `(,@current-left ,(append (car rights) (cdr rights))) + `(,@current-left ,rights))) + '() + left + right)) + callee + target-expandeds)] + [else + (fold-left + (lambda (left . rights) `(,@left ,rights)) + '() + callee + target-expandeds)]))) + template+callees)))])) (define (generate-pair:template+expanded identifier-reference expanded-index-node callee-index-node callee-document template+callees) (fold-left From 5ed805c993bf196f85f159792876fd8e8e662017 Mon Sep 17 00:00:00 2001 From: ufo5260987423 Date: Thu, 2 Jan 2025 10:50:34 +0800 Subject: [PATCH 24/44] temp:a stepping stone --- analysis/abstract-interpreter.sls | 21 ++++---- analysis/identifier/macro-expander.sls | 52 +++++++++++++------ .../identifier/rules/self-defined-syntax.sls | 47 +++++++---------- scheme-langserver.sls | 3 +- 4 files changed, 66 insertions(+), 57 deletions(-) diff --git a/analysis/abstract-interpreter.sls b/analysis/abstract-interpreter.sls index 3fd1031..33ab324 100644 --- a/analysis/abstract-interpreter.sls +++ b/analysis/abstract-interpreter.sls @@ -63,6 +63,7 @@ (scheme-langserver virtual-file-system file-node) (scheme-langserver virtual-file-system library-node)) +;TODO: in case of self-defined macro's partially evaluation leading endless recursions, add a recursion avoid mechanism. (define step (case-lambda [(root-file-node root-library-node file-linkage current-document) @@ -232,19 +233,19 @@ (step root-file-node root-library-node file-linkage current-document expanded+callee-list))))]) (private-add-rule rules `((,target-lambda) . ,identifier)))] [(contain? (map identifier-reference-type top) 'syntax-variable) - ; (private-add-rule - ; rules - ; `((,(lambda (root-file-node root-library-node document index-node) - ; (self-defined-syntax-process - ; root-file-node root-library-node document index-node file-linkage expanded+callee-list - ; (lambda (specific-document generated-index-node new-expanded+callee-list) - ; (step root-file-node root-library-node file-linkage specific-document generated-index-node new-expanded+callee-list))) - ; )) . ,identifier)) + ; (fold-left private-add-rule rules + ; (map + ; (lambda (t) + ; `((,(lambda (root-file-node root-library-node document index-node) + ; (self-defined-syntax-process t index-node document expanded+callee-list + ; (lambda (specific-document generated-index-node new-expanded+callee-list) + ; (step root-file-node root-library-node file-linkage specific-document generated-index-node new-expanded+callee-list))))) + ; . ,t)) + ; top)) ;not now to delete rules ] - [else rules]) - ))) + [else rules])))) '() (filter (lambda (identifier) diff --git a/analysis/identifier/macro-expander.sls b/analysis/identifier/macro-expander.sls index 0664f0b..818291a 100644 --- a/analysis/identifier/macro-expander.sls +++ b/analysis/identifier/macro-expander.sls @@ -36,7 +36,13 @@ (private:unwrap identifier-reference))) (define (expand:step-by-step identifier-reference callee-index-node callee-document) - (map cdr (expand:step-by-step-identifier-reference identifier-reference callee-index-node callee-document))) + (try + (map cdr (expand:step-by-step-identifier-reference identifier-reference callee-index-node callee-document)) + (except c + [(condition? c) + (if (not (equal? "invalid syntax" (condition-message c))) (display-condition c)) + '()] + [else '()]))) (define generate-pair:callee+expanded (case-lambda @@ -66,9 +72,12 @@ [after (if pre pre (assoc `(,template ...) template+expandeds))] [target-expandeds (if after (cdr after) '())]) (cond - [(and (index-node? callee) (index-node? target-expandeds)) `((,callee ,target-expandeds))] - [(and (index-node? callee) (find list? target-expandeds)) `((,callee . ,(apply append target-expandeds)))] - [(index-node? callee) `((,callee . ,target-expandeds))] + [(and (index-node? callee) (index-node? target-expandeds)) + `((,callee ,target-expandeds))] + [(and (index-node? callee) (find list? target-expandeds)) + `((,callee . ,(apply append target-expandeds)))] + [(index-node? callee) + `((,callee . ,target-expandeds))] [(find list? target-expandeds) (fold-left (lambda (left right) @@ -83,11 +92,12 @@ callee target-expandeds)] [else - (fold-left - (lambda (left . rights) `(,@left ,rights)) - '() - callee - target-expandeds)]))) + (let ([m (min (length callee) (length target-expandeds))]) + (fold-left + (lambda (left . rights) `(,@left ,rights)) + '() + (list-head callee m) + (list-head target-expandeds m)))]))) template+callees)))])) (define (generate-pair:template+expanded identifier-reference expanded-index-node callee-index-node callee-document template+callees) @@ -107,7 +117,8 @@ (append (filter (lambda (p) (not (equal? head (car p)))) left) `((,head... . (,(cdr prev-pair) ,tail))))] - [else (append left (list maybe-pair))]))) + [else + (append left (list maybe-pair))]))) '() (apply append (map @@ -138,7 +149,13 @@ (apply append (map (lambda (p) - (private:dispatch-for-callee-pair (cdr p) callee-index-node callee-document)) + (try + (private:dispatch-for-callee-pair (cdr p) callee-index-node callee-document) + (except c + [(condition? c) + (if (not (equal? "invalid syntax" (condition-message c))) (display-condition c)) + '()] + [else '()]))) (private:unwrap identifier-reference))))) (define (private:dispatch-for-expanded-pair index-node callee-index-node callee-document expanded-index-node template+callees) @@ -157,7 +174,7 @@ [template-index-node (car (index-node-children (index-node-parent body-index-node)))] [body-expression (annotation-stripped (index-node-datum/annotations body-index-node))]) (private:template-variable+expanded template-index-node body-index-node body-expression expanded-index-node template+callees callee-document #f)) - '())] + '())] [('lambda ((? symbol? parameter)) _ ... ('syntax-case like-parameter (keywords ...) clauses **1)) (if (and (equal? parameter like-parameter) @@ -237,10 +254,10 @@ [(and (private:syntax-parameter-index-node? template-index-node body-index-node document body-expression) (assoc body-expression template+callees)) `((,body-expression . ,expanded-index-node))] [(private:syntax-parameter-index-node? template-index-node body-index-node document body-expression) '()] - [(symbol? body-expression) '()] + [(not (pair? body-expression)) '()] - [(null? body-expression) '()] - [(and (not (symbol? body-expression)) (index-node? body-index-node)) + [(or (null? body-expression) (null? body-index-node) (null? expanded-index-node)) '()] + [(and (pair? body-expression) (index-node? body-index-node)) (if (or (equal? (car body-expression) 'quasisyntax) (equal? (car body-expression) 'syntax) @@ -292,7 +309,8 @@ (private:template-variable+callee template (index-node-children callee-index-node) callee-expression keywords)] [(vector? template) (private:template-variable+callee (vector->list template) (index-node-children callee-index-node) (vector->list callee-expression) keywords)] - [(null? template) '()] + ; [(or (null? template) (null? callee-index-node) (null? callee-expression)) '()] + [(or (null? template) (null? callee-index-node)) '()] ;pair [(not (list? template)) (private:template-variable+callee `(,(car template) ,(cdr template)) callee-index-node `(,(car callee-expression) ,(cdr callee-expression)) keywords)] @@ -358,6 +376,6 @@ (lambda (first-child-identifier) (case (identifier-reference-identifier first-child-identifier) ['define-syntax `(,first-child-identifier . ,(caddr initial-children))] - ['let-syntax `(,first-child-identifier . ,(cadr (index-node-parent (identifier-reference-index-node identifier-reference))))])) + ['let-syntax `(,first-child-identifier . ,(index-node-parent (identifier-reference-index-node identifier-reference)))])) (filter (lambda (identifier) (meta-library? (identifier-reference-library-identifier identifier))) first-child-top-identifiers)))) ) diff --git a/analysis/identifier/rules/self-defined-syntax.sls b/analysis/identifier/rules/self-defined-syntax.sls index af686e1..61209a2 100644 --- a/analysis/identifier/rules/self-defined-syntax.sls +++ b/analysis/identifier/rules/self-defined-syntax.sls @@ -24,42 +24,33 @@ (scheme-langserver virtual-file-system document) (scheme-langserver virtual-file-system file-node)) -(define (self-defined-syntax-process identifier-reference callee-index-node callee-document old-expanded-index-node stepper) - (map - (lambda (expanded-expression) - (let* ([identifier-reference (root-ancestor identifier-reference)] - [expanded-index-node - (init-index-node - (identifier-reference-initialization-index-node identifier-reference) - (car +(define (self-defined-syntax-process top-identifier-reference callee-index-node callee-document old-expanded+callee-list stepper) + (let ([template+callees (generate-pair:template+callee top-identifier-reference callee-index-node callee-document)] + [expanded-expression-list (expand:step-by-step top-identifier-reference callee-index-node callee-document)]) + (map + (lambda (expanded-expression) + (pretty-print 'aa2) + (pretty-print expanded-expression) + (let ([pre (source-file->annotations (with-output-to-string (lambda () (pretty-print expanded-expression))) - (uri->path (document-uri (identifier-reference-document identifier-reference))))))] - [callee+expanded-pairs (generate-pair:callee+expanded `(,expanded-index-node) identifier-reference callee-index-node callee-document)] - [expanded+callee-list (private:reverse-pair callee+expanded-pairs)]) - (stepper (identifier-reference-document identifier-reference) expanded-index-node (append expanded+callee-list old-expanded-index-node)) - '() - )) - (expand:step-by-step identifier-reference callee-index-node callee-document))) + (uri->path (document-uri (identifier-reference-document top-identifier-reference))))]) + (if (pair? pre) + (let* ([expanded-index-node + (init-index-node + (identifier-reference-initialization-index-node top-identifier-reference) + (car pre))] + [callee+expanded-pairs (generate-pair:callee+expanded template+callees expanded-index-node top-identifier-reference callee-index-node callee-document)] + [expanded+callee-list (private:reverse-pair callee+expanded-pairs)]) + (stepper (identifier-reference-document top-identifier-reference) expanded-index-node (append expanded+callee-list old-expanded+callee-list)))))) + expanded-expression-list))) (define (private:reverse-pair callee+expanded-pairs) (apply append (map (lambda (pair) (map - (lambda (i) `(,i . ,(car i))) + (lambda (i) `(,i . ,(car pair))) (cdr pair))) callee+expanded-pairs))) - -(define (private:process-identifier-claiment callee-index-node identifier-reference virtual-symbol-index-node-list) - '() -) - -(define (private:get-symbol-index-node-children target-index-node) - (let ([expression (annotation-stripped (index-node-datum/annotations target-index-node))] - [children (index-node-children target-index-node)]) - (cond - [(not (null? children)) (apply append (map private:get-symbol-index-node-children children))] - [(symbol? expression) target-index-node] - [else '()]))) ) \ No newline at end of file diff --git a/scheme-langserver.sls b/scheme-langserver.sls index 2703aef..e125ad2 100644 --- a/scheme-langserver.sls +++ b/scheme-langserver.sls @@ -229,7 +229,6 @@ (loop (read-message server-instance)))))) (except c [else - (pretty-print `(format ,(condition-message c) ,@(condition-irritants c))) - (do-log (string-append "error: " (eval `(format ,(condition-message c) ,@(condition-irritants c)))) server-instance) + (display-condition c log-port) (do-log-timestamp server-instance)])))])) ) From b7481eed38706965181ac1cf72a33ab64eaaa204 Mon Sep 17 00:00:00 2001 From: ufo5260987423 Date: Thu, 2 Jan 2025 20:02:15 +0800 Subject: [PATCH 25/44] temp:added recursion avoid parameters and I just find top-level-syntax... --- analysis/abstract-interpreter.sls | 40 ++++++++++++------- .../identifier/rules/self-defined-syntax.sls | 5 ++- 2 files changed, 29 insertions(+), 16 deletions(-) diff --git a/analysis/abstract-interpreter.sls b/analysis/abstract-interpreter.sls index 33ab324..89a2569 100644 --- a/analysis/abstract-interpreter.sls +++ b/analysis/abstract-interpreter.sls @@ -71,11 +71,18 @@ [(root-file-node root-library-node file-linkage current-document expanded+callee-list) (fold-left (lambda (l current-index-node) - (step root-file-node root-library-node file-linkage current-document current-index-node '())) + (step root-file-node root-library-node file-linkage current-document current-index-node '() '())) '() (document-index-node-list current-document)) (document-ordered-reference-list current-document)] - [(root-file-node root-library-node file-linkage current-document current-index-node expanded+callee-list) + [(root-file-node root-library-node file-linkage current-document expanded+callee-list memory) + (fold-left + (lambda (l current-index-node) + (step root-file-node root-library-node file-linkage current-document current-index-node '() memory)) + '() + (document-index-node-list current-document)) + (document-ordered-reference-list current-document)] + [(root-file-node root-library-node file-linkage current-document current-index-node expanded+callee-list memory) (cond [(quote? current-index-node current-document) (index-node-excluded-references-set! current-index-node (private:find-available-references-for expanded+callee-list current-document current-index-node))] @@ -83,7 +90,7 @@ (index-node-excluded-references-set! current-index-node (private:find-available-references-for expanded+callee-list current-document current-index-node)) (map (lambda (i) - (step root-file-node root-library-node file-linkage current-document i (index-node-excluded-references current-index-node) 'quasiquoted expanded+callee-list)) + (step root-file-node root-library-node file-linkage current-document i (index-node-excluded-references current-index-node) 'quasiquoted expanded+callee-list memory)) (index-node-children current-index-node))] [(syntax? current-index-node current-document) (index-node-excluded-references-set! current-index-node @@ -93,7 +100,7 @@ (index-node-excluded-references-set! current-index-node (filter (lambda (i) (not (equal? (identifier-reference-type i) 'syntax-parameter))) available-identifiers)) (map (lambda (i) - (step root-file-node root-library-node file-linkage current-document i available-identifiers 'quasisyntaxed expanded+callee-list)) + (step root-file-node root-library-node file-linkage current-document i available-identifiers 'quasisyntaxed expanded+callee-list memory)) (index-node-children current-index-node)))] [(not (null? (index-node-children current-index-node))) (let* ([children (index-node-children current-index-node)] @@ -106,12 +113,13 @@ file-linkage (private:find-available-references-for expanded+callee-list current-document current-index-node head-expression) current-document - expanded+callee-list)] + expanded+callee-list + `(,memory (,(annotation-stripped (index-node-datum/annotations current-index-node)))))] [else '()])]) (map (lambda (f) ((car (cdr f)) root-file-node root-library-node current-document current-index-node)) target-rules) (fold-left (lambda (l child-index-node) - (step root-file-node root-library-node file-linkage current-document child-index-node expanded+callee-list)) + (step root-file-node root-library-node file-linkage current-document child-index-node expanded+callee-list memory)) '() children) (map @@ -120,7 +128,7 @@ ((cdr (cdr f)) root-file-node root-library-node current-document current-index-node))) target-rules))] [else '()])] - [(root-file-node root-library-node file-linkage current-document current-index-node available-identifiers quasi-quoted-syntaxed expanded+callee-list) + [(root-file-node root-library-node file-linkage current-document current-index-node available-identifiers quasi-quoted-syntaxed expanded+callee-list memory) (if (case quasi-quoted-syntaxed ['quasiquoted (or (unquote? current-index-node current-document) (unquote-splicing? current-index-node current-document))] ['quasisyntaxed (or (unsyntax? current-index-node current-document) (unsyntax-splicing? current-index-node current-document))]) @@ -131,11 +139,11 @@ (index-node-references-import-in-this-node-set! current-index-node (sort-identifier-references available-identifiers)) (map (lambda (i) - (step root-file-node root-library-node file-linkage current-document i expanded+callee-list)) + (step root-file-node root-library-node file-linkage current-document i expanded+callee-list memory)) (index-node-children current-index-node))) (map (lambda (i) - (step root-file-node root-library-node file-linkage current-document i available-identifiers quasi-quoted-syntaxed expanded+callee-list)) + (step root-file-node root-library-node file-linkage current-document i available-identifiers quasi-quoted-syntaxed expanded+callee-list memory)) (index-node-children current-index-node)))])) (define (private-rule-compare? item0 item1) @@ -150,13 +158,14 @@ [(equal? (primitive-content primitive-expression) '$invoke-library) `(,primitive-expression . (,invoke-library-process))] [else '()])) -(define (establish-available-rules-from file-linkage identifier-list current-document expanded+callee-list) +(define (establish-available-rules-from file-linkage identifier-list current-document expanded+callee-list memory) (fold-left (lambda (rules identifier) (let* ([top (root-ancestor identifier)] [r (map identifier-reference-identifier top)] [i (identifier-reference-identifier identifier)] - [is (map identifier-reference-library-identifier top)]) + [is (map identifier-reference-library-identifier top)] + [possible-new-memory `(,@(reverse (cdr (reverse memory))) (,(car (reverse memory)) . ,identifier-list))]) (if (find meta-library? is) (cond [(equal? r '(define)) (private-add-rule rules `((,define-process) . ,identifier))] @@ -230,16 +239,19 @@ (include-resolve-process root-file-node root-library-node document index-node (lambda (current-document) (file-linkage-set! file-linkage (uri->path (document-uri document)) (uri->path (document-uri current-document))) - (step root-file-node root-library-node file-linkage current-document expanded+callee-list))))]) + (step root-file-node root-library-node file-linkage current-document expanded+callee-list (reverse (cdr (reverse memory)))))))]) (private-add-rule rules `((,target-lambda) . ,identifier)))] - [(contain? (map identifier-reference-type top) 'syntax-variable) + [(and (contain? (map identifier-reference-type top) 'syntax-variable) (not (contain? memory (car (reverse possible-new-memory))))) ; (fold-left private-add-rule rules ; (map ; (lambda (t) ; `((,(lambda (root-file-node root-library-node document index-node) ; (self-defined-syntax-process t index-node document expanded+callee-list ; (lambda (specific-document generated-index-node new-expanded+callee-list) - ; (step root-file-node root-library-node file-linkage specific-document generated-index-node new-expanded+callee-list))))) + ; (step root-file-node root-library-node file-linkage specific-document generated-index-node new-expanded+callee-list + ; ;看起来在处理identifier-list的时候,因为一开始没加,导致了一些问题。可能出在source->annotaiton的过程中,也可能出在step过程中 + ; ; `(,@(reverse (cdr (reverse memory))) (,(car (reverse memory)) . ,identifier-list)) + ; possible-new-memory))))) ; . ,t)) ; top)) ;not now to delete diff --git a/analysis/identifier/rules/self-defined-syntax.sls b/analysis/identifier/rules/self-defined-syntax.sls index 61209a2..22a129e 100644 --- a/analysis/identifier/rules/self-defined-syntax.sls +++ b/analysis/identifier/rules/self-defined-syntax.sls @@ -29,8 +29,9 @@ [expanded-expression-list (expand:step-by-step top-identifier-reference callee-index-node callee-document)]) (map (lambda (expanded-expression) - (pretty-print 'aa2) - (pretty-print expanded-expression) + ; (pretty-print 'aa2) + ; (pretty-print (document-uri callee-document)) + ; (pretty-print expanded-expression) (let ([pre (source-file->annotations (with-output-to-string (lambda () (pretty-print expanded-expression))) From d1e15a7dc00b8dd573da1b04d49b7b0663a68c31 Mon Sep 17 00:00:00 2001 From: ufo5260987423 Date: Thu, 2 Jan 2025 20:36:20 +0800 Subject: [PATCH 26/44] fix:fault toerante add a new rule --- analysis/tokenizer.sls | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/analysis/tokenizer.sls b/analysis/tokenizer.sls index b7f5518..f4114ad 100644 --- a/analysis/tokenizer.sls +++ b/analysis/tokenizer.sls @@ -21,6 +21,13 @@ source (loop port)) (except e + [(and (condition? e) (equal? (car (condition-irritants e)) "unexpected dot (.)")) + (let* ([position (caddr (condition-irritants e))] + [head (if (zero? position) "" (string-take source position))] + [what (vector-ref (list->vector (string->list source)) position)] + [rest (string-take-right source (- (string-length source) position 1))]) + (pretty-print (string-append head " " rest)) + (private:tolerant-parse->patch (string-append head " " rest)))] [(and (condition? e) (equal? (caar (condition-irritants e)) "unexpected close parenthesis")) (let* ([position (caddar (condition-irritants e))] [head (if (zero? position) "" (string-take source position))] From f2db03151779efc0314e1f80d1225aeb8709d7d3 Mon Sep 17 00:00:00 2001 From: ufo5260987423 Date: Thu, 2 Jan 2025 20:48:41 +0800 Subject: [PATCH 27/44] fix --- analysis/tokenizer.sls | 1 + 1 file changed, 1 insertion(+) diff --git a/analysis/tokenizer.sls b/analysis/tokenizer.sls index f4114ad..f0f91a9 100644 --- a/analysis/tokenizer.sls +++ b/analysis/tokenizer.sls @@ -14,6 +14,7 @@ ;3rd, attach a (, ), [ or ]) or ] at the end of source (abandon, though it won't greatly change other tokens' bias, this may cause more faults) ;4th, replace current ) or ] with ] or ). ;I mainly choose 2nd and 4th solution, because it won't change other tokens' bias +;No caso do "unexpected dot", tenho de remover o note para nao alter posicao. (define (private:tolerant-parse->patch source) (let loop ([port (open-input-string source)]) (try From 8f5fa748e1f4526fce55680f04e3ba49166e7d91 Mon Sep 17 00:00:00 2001 From: ufo5260987423 Date: Thu, 2 Jan 2025 22:12:50 +0800 Subject: [PATCH 28/44] fix --- analysis/tokenizer.sls | 81 ++++++++++++++++--------------- tests/analysis/test-tokenizer.sps | 2 +- 2 files changed, 44 insertions(+), 39 deletions(-) diff --git a/analysis/tokenizer.sls b/analysis/tokenizer.sls index f0f91a9..367a197 100644 --- a/analysis/tokenizer.sls +++ b/analysis/tokenizer.sls @@ -22,44 +22,49 @@ source (loop port)) (except e - [(and (condition? e) (equal? (car (condition-irritants e)) "unexpected dot (.)")) - (let* ([position (caddr (condition-irritants e))] - [head (if (zero? position) "" (string-take source position))] - [what (vector-ref (list->vector (string->list source)) position)] - [rest (string-take-right source (- (string-length source) position 1))]) - (pretty-print (string-append head " " rest)) - (private:tolerant-parse->patch (string-append head " " rest)))] - [(and (condition? e) (equal? (caar (condition-irritants e)) "unexpected close parenthesis")) - (let* ([position (caddar (condition-irritants e))] - [head (if (zero? position) "" (string-take source position))] - [what (vector-ref (list->vector (string->list source)) position)] - [rest (string-take-right source (- (string-length source) position 1))]) - (private:tolerant-parse->patch (string-append head " " rest)))] - [(and (condition? e) (equal? (caar (condition-irritants e)) "unexpected close bracket")) - (let* ([position (caddar (condition-irritants e))] - [head (if (zero? position) "" (string-take source position))] - [what (vector-ref (list->vector (string->list source)) position)] - [rest (string-take-right source (- (string-length source) position 1))]) - (private:tolerant-parse->patch (string-append head " " rest)))] - [(and (condition? e) (equal? (caar (condition-irritants e)) "parenthesized list terminated by bracket")) - (let* ([position (- (caddar (condition-irritants e)) 1)] - [head (if (zero? position) "" (string-take source position))] - [what (vector-ref (list->vector (string->list source)) position)] - [rest (string-take-right source (- (string-length source) position 1))]) - (private:tolerant-parse->patch (string-append head ")" rest)))] - [(and (condition? e) (equal? (caar (condition-irritants e)) "bracketed list terminated by parenthesis")) - (let* ([position (- (caddar (condition-irritants e)) 1)] - [head (if (zero? position) "" (string-take source position))] - [what (vector-ref (list->vector (string->list source)) position)] - [rest (string-take-right source (- (string-length source) position 1))]) - (private:tolerant-parse->patch (string-append head "]" rest)))] - [(and (condition? e) (equal? (caar (condition-irritants e)) "unexpected end-of-file reading ~a")) - (let* ([position (caddar (condition-irritants e))] - [head (if (zero? position) "" (string-take source position))] - [what (vector-ref (list->vector (string->list source)) position)] - [rest (string-take-right source (- (string-length source) position 1))]) - (private:tolerant-parse->patch (string-append head " " rest)))] - [else (raise 'can-not-tolerant)])))) + [(and (condition? e) (string? (car (condition-irritants e))) + (case (car (condition-irritants e)) + [("unexpected dot (.)" "invalid sharp-sign prefix #~c" ) + (let* ([position (caddr (condition-irritants e))] + [head (if (zero? position) "" (string-take source position))] + [what (vector-ref (list->vector (string->list source)) position)] + [rest (string-take-right source (- (string-length source) position 1))]) + (private:tolerant-parse->patch (string-append head " " rest)))] + [("unexpected close parenthesis" "unexpected close bracket" "unexpected end-of-file reading ~a") + (let* ([position (caddr (condition-irritants e))] + [head (if (zero? position) "" (string-take source position))] + [what (vector-ref (list->vector (string->list source)) position)] + [rest (string-take-right source (- (string-length source) position 1))]) + (private:tolerant-parse->patch (string-append head " " rest)))] + [("parenthesized list terminated by bracket" "bracketed list terminated by parenthesis") + (let* ([position (- (caddr (condition-irritants e)) 1)] + [head (if (zero? position) "" (string-take source position))] + [what (vector-ref (list->vector (string->list source)) position)] + [rest (string-take-right source (- (string-length source) position 1))]) + (private:tolerant-parse->patch (string-append head " " rest)))] + [else (raise 'can-not-tolerant0)]))] + [(and (condition? e) (string? (caar (condition-irritants e)))) + (case (caar (condition-irritants e)) + [("unexpected dot (.)" "invalid sharp-sign prefix #~c" ) + (let* ([position (caddar (condition-irritants e))] + [head (if (zero? position) "" (string-take source position))] + [what (vector-ref (list->vector (string->list source)) position)] + [rest (string-take-right source (- (string-length source) position 1))]) + (private:tolerant-parse->patch (string-append head " " rest)))] + [("unexpected close parenthesis" "unexpected close bracket" "unexpected end-of-file reading ~a") + (let* ([position (caddar (condition-irritants e))] + [head (if (zero? position) "" (string-take source position))] + [what (vector-ref (list->vector (string->list source)) position)] + [rest (string-take-right source (- (string-length source) position 1))]) + (private:tolerant-parse->patch (string-append head " " rest)))] + [("parenthesized list terminated by bracket" "bracketed list terminated by parenthesis") + (let* ([position (- (caddar (condition-irritants e)) 1)] + [head (if (zero? position) "" (string-take source position))] + [what (vector-ref (list->vector (string->list source)) position)] + [rest (string-take-right source (- (string-length source) position 1))]) + (private:tolerant-parse->patch (string-append head ")" rest)))] + [else (raise 'can-not-tolerant1)])] + [else (raise 'can-not-tolerant0)])))) (define source-file->annotations (case-lambda diff --git a/tests/analysis/test-tokenizer.sps b/tests/analysis/test-tokenizer.sps index dfa4bbc..c5632b8 100755 --- a/tests/analysis/test-tokenizer.sps +++ b/tests/analysis/test-tokenizer.sps @@ -25,7 +25,7 @@ (test-end) (test-begin "tolerant parse") - (test-equal 5 (length (source-file->annotations "tests/resources/incomplete.ss.test"))) + (test-equal 8 (length (source-file->annotations "tests/resources/incomplete.ss.test"))) (test-end) (exit (if (zero? (test-runner-fail-count (test-runner-get))) 0 1)) From 7c6b805b0216fe61234d219bdea239610123556f Mon Sep 17 00:00:00 2001 From: ufo5260987423 Date: Fri, 3 Jan 2025 13:57:42 +0800 Subject: [PATCH 29/44] fix --- analysis/identifier/meta.sls | 6118 +++++++++-------- .../identifier/rules/fluid-let-syntax.sls | 4 +- analysis/identifier/rules/fluid-let.sls | 36 +- 3 files changed, 3189 insertions(+), 2969 deletions(-) diff --git a/analysis/identifier/meta.sls b/analysis/identifier/meta.sls index b661a0c..c13f8d5 100644 --- a/analysis/identifier/meta.sls +++ b/analysis/identifier/meta.sls @@ -847,2970 +847,3160 @@ rnrs-records-inspection chezscheme-csv7 scheme-csv7)) (zero? procedure)))) (define scheme (private-process '(scheme) '( -(+ procedure) -; (1+ procedure) -(fxlogand procedure) -(symbol-hashtable-update! procedure) -(r6rs:dynamic-wind #f) -(trace-define syntax) -(mutable-string? procedure) -(assert syntax) -(textual-port-input-count procedure) -(property-list procedure) -(make-parameter procedure) -(compile-library procedure) -(logbit0 procedure) -(logbit1 procedure) -(make-i/o-file-does-not-exist-error procedure) -(pretty-line-length thread-param) -(bytevector-s56-ref procedure) -(make-custom-binary-output-port procedure) -(logbit? procedure) -(virtual-register procedure) -(ftype-set! syntax) -(fields syntax) -(make-ftype-pointer syntax) -(make-source-object procedure) -(port-output-full? procedure) -(abs procedure) -(break-handler thread-param) -(fl* procedure) -(library-directories thread-param) -(fl+ procedure) -(set-binary-port-output-buffer! procedure) -(fl- procedure) -(fl/ procedure) -(port-output-index procedure) -(car procedure) -(fl< procedure) -(fl= procedure) -(and syntax) -(fl> procedure) -(cdr procedure) -(profile-line-number-color thread-param) -(eq? procedure) -(bytevector-s64-ref procedure) -(fx* procedure) -(fx+ procedure) -(ash procedure) -(make-assertion-violation procedure) -(fx- procedure) -(gcd procedure) -(fx/ procedure) -(div procedure) -(box procedure) -(record-type-field-names procedure) -(flacos procedure) -(fx< procedure) -(fx= procedure) -(cos procedure) -(fx> procedure) -(string->symbol procedure) -(compile-whole-program procedure) -(bytevector-u16-set! procedure) -(for-each procedure) -(lcm procedure) -(exp procedure) -(map procedure) -(let syntax) -(max procedure) -(disable-interrupts procedure) -(min procedure) -(make-i/o-port-error procedure) -(log procedure) -(bytevector-compress procedure) -(string<=? procedure) -(mod procedure) -(fldiv0 procedure) -(expt-mod procedure) -(string>=? procedure) -(rec syntax) -(not procedure) -(flatan procedure) -(tan procedure) -(critical-section syntax) -(vector-length procedure) -(close-port procedure) -(set-textual-port-output-size! procedure) -(flasin procedure) -(binary-port-output-size procedure) -(sin procedure) -(make-object-finder procedure) -(engine-return procedure) -(current-expand thread-param) -(console-input-port global-param) -(textual-port-input-index procedure) -(port-bol? procedure) -(&i/o-write syntax) -(filter procedure) -(datum->syntax procedure) -(no-infinities-violation? procedure) -(vector-for-each procedure) -(gensym procedure) -(fxvector-ref procedure) -(flpositive? procedure) -(bytevector-ieee-double-ref procedure) -(getenv procedure) -(eq-hashtable-delete! procedure) -(set-port-input-buffer! procedure) -(standard-error-port procedure) -(port-eof? procedure) -(make-input/output-port procedure) -(r6rs:char-ci? #f) -(who-condition? procedure) -(i/o-decoding-error? procedure) -(make-i/o-invalid-position-error procedure) -(bytevector-u24-set! procedure) -(flnan? procedure) -(add1 procedure) -(mutable-fxvector? procedure) -(flexpt procedure) -(flodd? procedure) -(imag-part procedure) -(reverse! procedure) -(top-level-program syntax) -(&source syntax) -(flmod0 procedure) -(source-table-delete! procedure) -(&i/o-file-does-not-exist syntax) -(date-zone-offset procedure) -(caar procedure) -(foreign-callable-entry-point procedure) -(cfl* procedure) -(print-record thread-param) -(cfl+ procedure) -(acos procedure) -(bytevector-u16-ref procedure) -(cadr procedure) -(cfl- procedure) -(cfl/ procedure) -(fold-left procedure) -(compile-program-handler thread-param) -(unsyntax-splicing syntax) -(fl<= procedure) -(open-process-ports procedure) -(fl= procedure) -(fl>? procedure) -(cfl= procedure) -(port-name procedure) -(cdar procedure) -(output-port-buffer-mode procedure) -(logtest procedure) -(condition-irritants procedure) -(cddr procedure) -(case syntax) -(display-condition procedure) -(r5rs module) -(foreign-entry? procedure) -(fx1+ procedure) -(fx1- procedure) -(csv7:record-field-accessor #f) -(cfl-real-part procedure) -(bytevector-u24-ref procedure) -(&lexical syntax) -(set-port-nonblocking! procedure) -(div0 procedure) -(transcoder-eol-style procedure) -(bitwise-first-bit-set procedure) -(pretty-one-line-limit thread-param) -(foreign-alloc procedure) -(make-condition procedure) -(atan procedure) -(remove-hash-table! procedure) -(inexact? procedure) -(box? procedure) -(fx<= procedure) -(fx= procedure) -(fx>? procedure) -(bytevector-u32-set! procedure) -(clear-output-port procedure) -(newline procedure) -(cond syntax) -(assp procedure) -(assq procedure) -(cons procedure) -(assv procedure) -(bytevector-u32-ref procedure) -(cosh procedure) -(hashtable-clear! procedure) -(keyboard-interrupt-handler thread-param) -(find procedure) -(enum-set? procedure) -(string->utf16 procedure) -(string->utf32 procedure) -(string-append procedure) -(else syntax) -(fxvector-length procedure) -(put-hash-table! procedure) -(ieee module) -(inexact->exact procedure) -(define-syntax syntax) -(i/o-file-does-not-exist-error? procedure) -(eqv? procedure) -(fllp procedure) -(r6rs:syntax-rules #f) -(get-datum/annotations procedure) -(u8-list->bytevector procedure) -(eval procedure) -(flsqrt procedure) -(equal? procedure) -(flceiling procedure) -(bytevector-u40-ref procedure) -(print-vector-length thread-param) -(let* syntax) -(bytevector-s64-native-set! procedure) -(cp0-outer-unroll-limit thread-param) -(expression-editor module) -(implicit-exports syntax) -(nan? procedure) -(error-handling-mode syntax) -(exit procedure) -(fxif procedure) -(record-type-equal-procedure procedure) -(r6rs:char-ci<=? #f) -(expt procedure) -(odd? procedure) -(fxcopy-bit procedure) -(port-has-port-nonblocking?? procedure) -(exact? procedure) -(r6rs:char-ci>=? #f) -(transcoder-codec procedure) -(timer-interrupt-handler thread-param) -(real-valued? procedure) -(iota procedure) -(top-level-value procedure) -(mod0 procedure) -(memp procedure) -(memq procedure) -(memv procedure) -(meta syntax) -(hashtable-hash-function procedure) -(syntax-violation-subform procedure) -(get-thread-id procedure) -(load procedure) -(datum->syntax-object procedure) -(list procedure) -(format procedure) -(bytevector-u40-set! procedure) -(internal-defines-as-letrec* thread-param) -(error? procedure) -(bytevector-u64-native-ref procedure) -(default-exception-handler procedure) -(endianness syntax) -(port-file-descriptor procedure) -(utf-16-codec procedure) -(read procedure) -(except syntax) -(errorf procedure) -(set! syntax) -(bitwise-arithmetic-shift-right procedure) -(case-sensitive thread-param) -(lambda syntax) -(substring-fill! procedure) -(quotient procedure) -(enum-set-complement procedure) -(violation? procedure) -(annotation? procedure) -(remp procedure) -(remq procedure) -(remv procedure) -(only syntax) -(make-guardian procedure) -(tanh procedure) -(undefined-variable-warnings thread-param) -(box-cas! procedure) -(&error syntax) -(pretty-print procedure) -(path-extension procedure) -(buffer-mode? syntax) -(procedure? procedure) -(sinh procedure) -(i/o-error? procedure) -(bytevector procedure) -(sub1 procedure) -(binary-port? procedure) -(time syntax) -(unregister-guardian procedure) -(nonnegative? procedure) -(flinteger? procedure) -(set-top-level-value! procedure) -(date-zone-name procedure) -(foreign-entry procedure) -(syntax->list procedure) -(load-program procedure) -(&syntax syntax) -(let-values syntax) -(fxnonpositive? procedure) -(sort procedure) -(when syntax) -(port-position procedure) -(bytevector-uint-ref procedure) -(sqrt procedure) -(pretty-standard-indent thread-param) -(void procedure) -(bytevector-s16-native-ref procedure) -(scheme-environment procedure) -(r6rs:char? #f) -(&message syntax) -(fxdiv0 procedure) -(source-object-column procedure) -(file-position procedure) -(open-output-string procedure) -(bytevector-ieee-double-set! procedure) -(unget-u8 procedure) -(with-source-path procedure) -(expand procedure) -(exists procedure) -(define-top-level-value procedure) -(append! procedure) -(collect-rendezvous procedure) -(path-last procedure) -(current-date procedure) -(make-irritants-condition procedure) -(define-record-type syntax) -(char-numeric? procedure) -(display-statistics procedure) -(library-list procedure) -(open-bytevector-output-port procedure) -(string-normalize-nfc procedure) -(string-normalize-nfd procedure) -(export syntax) -(file-symbolic-link? procedure) -(fxodd? procedure) -(bytevector-u48-ref procedure) -(length procedure) -(make-custom-textual-input-port procedure) -(raise-continuable procedure) -(fxmod0 procedure) -(annotation-stripped procedure) -(current-eval thread-param) -(fasl-file procedure) -(set-sstats-gc-count! procedure) -(import syntax) -(path-rest procedure) -(set-virtual-register! procedure) -(put-string-some procedure) -(parameterize syntax) -(bytevector-u56-ref procedure) -(ftype-init-lock! syntax) -(cost-center-time procedure) -(immutable syntax) -(r6rs:char<=? #f) -(r6rs:char>=? #f) -(port-output-size procedure) -(expand-output thread-param) -(collect-trip-bytes global-param) -(fxbit-field procedure) -(member procedure) -(path-root procedure) -(call/1cc procedure) -(unread-char procedure) -(bytevector-u64-ref procedure) -(char-ci? procedure) -(collect-request-handler global-param) -(locked-object? procedure) -(null-environment procedure) -(cost-center-allocation-count procedure) -(i/o-encoding-error-char procedure) -(rationalize procedure) -(create-exception-state procedure) -(scheme-program global-param) -(letrec syntax) -(make-boot-file procedure) -(sstats-bytes procedure) -(fxbit-count procedure) -(open-file-input/output-port procedure) -(time-difference! procedure) -(merge! procedure) -(weak-cons procedure) -(string-ci<=? procedure) -(record-writer procedure) -(binary-port-input-size procedure) -(string-ci>=? procedure) -(hashtable-contains? procedure) -(trace-case-lambda syntax) -(vector-fill! procedure) -(trace-lambda syntax) -(fasl-read procedure) -(open-fd-input-port procedure) -(r6rs:call-with-output-file #f) -(strip-fasl-file procedure) -(hashtable? procedure) -(write-char procedure) -(current-time procedure) -(record-case syntax) -(generate-inspector-information thread-param) -(bytevector-s8-set! procedure) -(fluid-let-syntax syntax) -(apropos procedure) -(petite? procedure) -(interactive? procedure) -(source-file-descriptor? procedure) -(hashtable-equivalence-function procedure) -(r6rs:current-input-port #f) -(ftype-spin-lock! syntax) -(let*-values syntax) -(open-input-output-file procedure) -(oblist procedure) -(bytevector-uint-set! procedure) -(open-fd-input/output-port procedure) -(subtract-duration procedure) -(hash-table-for-each procedure) -(char-title-case? procedure) -(set-sstats-gc-bytes! procedure) -(last-pair procedure) -(caaar procedure) -(caadr procedure) -(fxlength procedure) -(&i/o-read syntax) -(cadar procedure) -(logand procedure) -(caddr procedure) -(collections procedure) -(abort procedure) -(r6rs:call-with-input-file #f) -(condition-predicate procedure) -(string-ci-hash procedure) -(fl<=? procedure) -(char-name procedure) -(enum-set-universe procedure) -(acosh procedure) -(fl>=? procedure) -(string->bytevector procedure) -(cdaar procedure) -(time-nanosecond procedure) -(cdadr procedure) -(symbol-hashtable-cell procedure) -(&non-continuable syntax) -(make-i/o-error procedure) -(compress-format thread-param) -(begin syntax) -(cddar procedure) -(fxnegative? procedure) -(compile-file-message thread-param) -(record? procedure) -(cdddr procedure) -(bytevector-ieee-double-native-set! procedure) -(logior procedure) -(&i/o-port syntax) -(symbol-hashtable-delete! procedure) -(foreign-address-name procedure) -(current-input-port thread-param) -(condition-message procedure) -(lognot procedure) -(char- procedure) -(csv7:record-field-mutable? #f) -(textual-port-input-buffer procedure) -(char? procedure) -(custom-port-buffer-size thread-param) -(fxfirst-bit-set procedure) -(pariah syntax) -(make-variable-transformer procedure) -(alias syntax) -(date? procedure) -(set-binary-port-input-index! procedure) -(parent syntax) -(delete-file procedure) -(ftype-ref syntax) -(real-part procedure) -(hashtable-entries procedure) -(put-datum procedure) -(path-absolute? procedure) -(debug procedure) -(logxor procedure) -(bytevector-u32-native-set! procedure) -(angle procedure) -(open-source-file procedure) -(r6rs:file-exists? #f) -(vector->immutable-vector procedure) -(define-structure syntax) -(delay syntax) -(flnonpositive? procedure) -(fxarithmetic-shift procedure) -(bytevector->uint-list procedure) -(datum syntax) -(fxvector->list procedure) -(enable-interrupts procedure) -(chmod procedure) -(console-output-port global-param) -(library-extensions thread-param) -(call-with-current-continuation procedure) -(mutex-acquire procedure) -(bytevector->s8-list procedure) -(put-char procedure) -(real->flonum procedure) -(module syntax) -(source-condition? procedure) -(fx<=? procedure) -(modulo procedure) -(atanh procedure) -(immutable-bytevector? procedure) -(source-directories global-param) -(real-time procedure) -(profile-dump-data procedure) -(fx>=? procedure) -(collect procedure) -(ephemeron-cons procedure) -(call-with-port procedure) -(break procedure) -(display procedure) -(port-has-port-length? procedure) -(make-no-nans-violation procedure) -(apply procedure) -(asinh procedure) -(let-syntax syntax) -(csv7:record-type-symbol #f) -(time-utc->date procedure) -(directory-separator procedure) -(atom? procedure) -(make-record-type procedure) -(symbol-hashtable-set! procedure) -(compile-whole-library procedure) -(cons* procedure) -(get-bytevector-some! procedure) -(date-nanosecond procedure) -(bitwise-bit-set? procedure) -(rational-valued? procedure) -(string-copy! procedure) -(r5rs-syntax module) -(string-fill! procedure) -(assoc procedure) -(with-implicit syntax) -(top-level-mutable? procedure) -(source-object-bfp procedure) -(quasisyntax syntax) -(flabs procedure) -(string-length procedure) -(bytevector-s32-native-ref procedure) -(sstats-gc-real procedure) -(ratnum? procedure) -(char-downcase procedure) -(iconv-codec procedure) -(char-upper-case? procedure) -(input-port-ready? procedure) -(source-object-efp procedure) -(- procedure) -(interaction-environment thread-param) -(sstats-print procedure) -(random procedure) -(gensym->unique-string procedure) -(fldiv procedure) -(flcos procedure) -(bytevector-length procedure) -(input-port? procedure) -(<= procedure) -(=> syntax) -(>= procedure) -(r6rs:standard-input-port #f) -(subtract-duration! procedure) -(object-counts procedure) -(compile procedure) -(flexp procedure) -(current-memory-bytes procedure) -(fxlogior procedure) -(mark-port-closed! procedure) -(flmax procedure) -(string-ref procedure) -(profile-dump-html procedure) -(pretty-format procedure) -(&continuation syntax) -(flmin procedure) -(fllog procedure) -(source-object-sfd procedure) -(flmod procedure) -(identifier? procedure) -(current-directory global-param) -(pretty-maximum-lines thread-param) -(profile-dump-list procedure) -(gensym-count thread-param) -(fxlognot procedure) -(make-serious-condition procedure) -(binary-port-output-buffer procedure) -(fltan procedure) -(floor procedure) -(enable-cross-library-optimization thread-param) -(make-custom-binary-input/output-port procedure) -(syntax-object->datum procedure) -(flsin procedure) -(irritants-condition? procedure) -(optimize-level thread-param) -(library-search-handler thread-param) -(i/o-file-already-exists-error? procedure) -(even? procedure) -(call-with-input-file procedure) -(fxlogbit0 procedure) -(make-lexical-violation procedure) -(fxlogbit1 procedure) -(fxvector-copy procedure) -(annotation-options procedure) -(force procedure) -(cd global-param) -(fxlogbit? procedure) -(port-input-size procedure) -(do syntax) -(bitwise-bit-field procedure) -(fxlogxor procedure) -(if syntax) -(exact procedure) -(top-level-syntax procedure) -(compile-to-file procedure) -(bytevector-copy procedure) -(error procedure) -(substring procedure) -(or syntax) -(scheme module) -(generate-procedure-source-information thread-param) -(sealed syntax) -(source-table-ref procedure) -(record-accessor procedure) -(copy-environment procedure) -(opaque syntax) -(list-head procedure) -(default-record-equal-procedure thread-param) -(fxabs procedure) -(rename syntax) -(bitwise-bit-count procedure) -(open-file-input-port procedure) -(make-i/o-file-is-read-only-error procedure) -(list-copy procedure) -(fxand procedure) -(library-version procedure) -(guard syntax) -(bytevector-u48-set! procedure) -(fxmodulo procedure) -(cost-center? procedure) -(fxdiv procedure) -(remove! procedure) -(open-string-output-port procedure) -(implementation-restriction-violation? procedure) -(port-has-set-port-position!? procedure) -(debug-level thread-param) -(flnumerator procedure) -(register-signal-handler procedure) -(fxior procedure) -(fxmax procedure) -(integer? procedure) -(fxmin procedure) -(initial-bytes-allocated procedure) -(remove procedure) -(fxmod procedure) -(compile-library-handler thread-param) -(define-property syntax) -(make-i/o-filename-error procedure) -(record-type-name procedure) -(trace-output-port thread-param) -(fxnot procedure) -(fxvector-set! procedure) -(remprop procedure) -(record-hash-procedure procedure) -(call-with-values procedure) -(fxsll procedure) -(fxsra procedure) -(vector-sort! procedure) -(fxsrl procedure) -(merge procedure) -(utf-8-codec procedure) -(command-line-arguments global-param) -(make-vector procedure) -(list* procedure) -(read-token procedure) -(bwp-object? procedure) -(fxxor procedure) -(list? procedure) -(visit-compiled-from-port procedure) -(div0-and-mod0 procedure) -(pair? procedure) -(mkdir procedure) -(set-time-second! procedure) -(collect-notify global-param) -(self-evaluating-vectors thread-param) -(mutex? procedure) -(bytevector-u56-set! procedure) -(remove-foreign-entry procedure) -(library-exports procedure) -(ieee-environment procedure) -(eol-style syntax) -(compile-to-port procedure) -(block-read procedure) -(isqrt procedure) -(syntax-violation procedure) -(list-tail procedure) -(set-sstats-bytes! procedure) -(environment? procedure) -(transcoded-port procedure) -(logor procedure) -(undefined-violation? procedure) -(ftype-guardian syntax) -(prefix syntax) -(bitwise-rotate-bit-field procedure) -(binary-port-input-buffer procedure) -(make-thread-parameter procedure) -(mutable syntax) -(fxlogtest procedure) -(r6rs:with-output-to-file #f) -(source-table? procedure) -(mutable-bytevector? procedure) -(eof-object procedure) -(finite? procedure) -(bytevector-u64-native-set! procedure) -(real? procedure) -(list-sort procedure) -(bytevector-u8-set! procedure) -(profile-query-weight procedure) -(foreign-callable syntax) -(bytevector-ieee-single-set! procedure) -(raise procedure) -(eq-hashtable-ref procedure) -(trace-let syntax) -(put-u8 procedure) -(subset-mode thread-param) -(for-all procedure) -(date-year-day procedure) -(time-second procedure) -(bytevector-u64-set! procedure) -(gensym? procedure) -(make-custom-textual-input/output-port procedure) -(remq! procedure) -(new-cafe procedure) -(make-ephemeron-eq-hashtable procedure) -(enum-set-indexer procedure) -(remv! procedure) -(scheme-version procedure) -(printf procedure) -(char-foldcase procedure) -(load-library procedure) -(make-i/o-encoding-error procedure) -(i/o-error-filename procedure) -(reverse procedure) -(magnitude procedure) -(number? procedure) -(condition-name procedure) -(compile-imported-libraries thread-param) -(procedure-arity-mask procedure) -(flfloor procedure) -(reset procedure) -(time? procedure) -(null? procedure) -(fresh-line procedure) -(set-port-input-index! procedure) -(ormap procedure) -(fleven? procedure) -(guardian? procedure) -(current-exception-state thread-param) -(revisit procedure) -(fxdiv0-and-mod0 procedure) -(eval-when syntax) -(&implementation-restriction syntax) -(port? procedure) -(with-input-from-string procedure) -(bytevector->immutable-bytevector procedure) -(threaded? procedure) -(r6rs:hashtable-entries #f) -(rational? procedure) -(values procedure) -(hashtable-ephemeron? procedure) -(with-output-to-string procedure) -(make-i/o-write-error procedure) -(i/o-file-is-read-only-error? procedure) -(sleep procedure) -(time? procedure) -(bound-identifier=? procedure) -(utf-16le-codec procedure) -(sc-expand procedure) -(foreign-sizeof procedure) -(source-file-descriptor-path procedure) -(condition-wait procedure) -(vector procedure) -(time-difference procedure) -(char->integer procedure) -(integer-valued? procedure) -(engine-block procedure) -(bitwise-and procedure) -(infinite? procedure) -(ftype-pointer=? syntax) -(make-sstats procedure) -(cp0-effort-limit thread-param) -(getprop procedure) -(char-titlecase procedure) -(compress-level thread-param) -(waiter-prompt-and-read thread-param) -(round procedure) -(utf32->string procedure) -(date-and-time procedure) -(sort! procedure) -(bytevector->u8-list procedure) -(drop-prefix syntax) -(trace syntax) -(record-constructor-descriptor? procedure) -(syntax-violation-form procedure) -(vector-cas! procedure) -(get-char procedure) -(quote syntax) -(cpu-time procedure) -(port-nonblocking? procedure) -(make-string procedure) -(bitwise-ior procedure) -(record-field-mutable? procedure) -(unbox procedure) -(eq-hashtable-ephemeron? procedure) -(commonization-level thread-param) -(date-dst? procedure) -(eval-syntax-expanders-when thread-param) -(putenv procedure) -(subst procedure) -(enum-set=? procedure) -(bitwise-not procedure) -(string-truncate! procedure) -(r6rs:delete-file #f) -(verify-loadability procedure) -(textual-port-input-size procedure) -(condition procedure) -(textual-port-output-size procedure) -(make-syntax-violation procedure) -(visit procedure) -(type-descriptor syntax) -(hash-table? procedure) -(generate-instruction-counts thread-param) -(constructor syntax) -(flnegative? procedure) -(make-ephemeron-eqv-hashtable procedure) -(get-string-some! procedure) -(string-for-each procedure) -(bitwise-xor procedure) -(fold-right procedure) -(date-hour procedure) -(make-input-port procedure) -(condition-accessor procedure) -(string-ci? procedure) -(record-type-hash-procedure procedure) -(i/o-filename-error? procedure) -(vector-copy procedure) -(format-condition? procedure) -(i/o-write-error? procedure) -(fxquotient procedure) -(boolean? procedure) -(bytevector-s16-set! procedure) -(enum-set-projection procedure) -(default-prompt-and-read procedure) -(bytevector-s16-native-set! procedure) -(pretty-initial-indent thread-param) -(immutable-vector? procedure) -(zero? procedure) -(get-line procedure) -(ftype-pointer? syntax) -(bitwise-copy-bit procedure) -(transcript-cafe procedure) -(standard-input-port procedure) -(list->vector procedure) -(fxarithmetic-shift-right procedure) -(source-object? procedure) -(get-mode procedure) -(case-lambda syntax) -(&i/o-decoding syntax) -(make-source-table procedure) -(print-precision thread-param) -(write procedure) -(subst! procedure) -(sstats-real procedure) -(bytevector-ieee-single-native-ref procedure) -(csv7:record-field-accessible? #f) -(command-line global-param) -(record-type-uid procedure) -(enum-set-subset? procedure) -(make-undefined-violation procedure) -(greatest-fixnum procedure) -(r6rs:record? #f) -(fxvector procedure) -(set-binary-port-input-size! procedure) -(fixnum? procedure) -(flonum? procedure) -(bytevector-uncompress procedure) -(substq procedure) -(flush-output-port procedure) -(substv procedure) -(string-copy procedure) -(file-regular? procedure) -(string-hash procedure) -(latin-1-codec procedure) -(bytevector-s24-set! procedure) -(date-year procedure) -(vector-set! procedure) -(compile-time-value? procedure) -(unless syntax) -(source-table-cell procedure) -(flfinite? procedure) -(directory-list procedure) -(port-output-buffer procedure) -(cfl-conjugate procedure) -(fltruncate procedure) -(transcript-off procedure) -(make-who-condition procedure) -(r6rs:utf-16-codec #f) -(concatenate-object-files procedure) -(print-extended-identifiers thread-param) -(positive? procedure) -(file-change-time procedure) -(hashtable-update! procedure) -(process procedure) -(&violation syntax) -(sstats-gc-cpu procedure) -(make-weak-eq-hashtable procedure) -(random-seed thread-param) -(string? procedure) -(fxvector->immutable-fxvector procedure) -(set-sstats-gc-real! procedure) -(compile-script procedure) -(time>=? procedure) -(make-continuation-condition procedure) -(string procedure) -(locate-source-object-source procedure) -(condition-continuation procedure) -(syntax->datum procedure) -(record-mutator procedure) -(cost-center-instruction-count procedure) -(source-table-dump procedure) -(revisit-compiled-from-port procedure) -(profile syntax) -(r6rs:case #f) -(char-ready? procedure) -(put-bytevector procedure) -(make-i/o-decoding-error procedure) -(bytevector-s32-set! procedure) -(top-level-syntax? procedure) -(make-custom-binary-input-port procedure) -(string-set! procedure) -(fx*/carry procedure) -(syntax-error procedure) -(exit-handler thread-param) -(fldenominator procedure) -(current-locate-source-object-source thread-param) -(gensym-prefix thread-param) -(flround procedure) -(environment-symbols procedure) -(enum-set-member? procedure) -(i/o-read-error? procedure) -(maximum-memory-bytes procedure) -(fluid-let syntax) -(make-boot-header procedure) -(letrec-syntax syntax) -(textual-port-output-count procedure) -(r6rs:standard-output-port #f) -(generate-covin-files thread-param) -(record-rtd procedure) -(scheme-start global-param) -(cfl-magnitude-squared procedure) -(source-object-line procedure) -(set-time-nanosecond! procedure) -(default-record-hash-procedure thread-param) -(profile-clear procedure) -(binary-port-input-count procedure) -(set-binary-port-output-size! procedure) -(unquote-splicing syntax) -(bitwise-copy-bit-field procedure) -(set-sstats-cpu! procedure) -(&i/o-encoding syntax) -(r6rs:eval #f) -(source-table-set! procedure) -(syntax-case syntax) -(make-non-continuable-violation procedure) -(port-has-set-port-nonblocking!? procedure) -(set-timer procedure) -(fxnonnegative? procedure) -(csv7:record-type-field-decls #f) -(fasl-compressed thread-param) -(r6rs:exit #f) -(bytevector-u16-native-ref procedure) -(import-only syntax) -(bytevector-s40-set! procedure) -(with-output-to-file procedure) -(truncate-file procedure) -(open-input-string procedure) -(load-shared-object procedure) -(&i/o-filename syntax) -(base-exception-handler thread-param) -(file-buffer-size thread-param) -(ftype-lock! syntax) -(source-table-size procedure) -(console-error-port thread-param) -(file-options syntax) -(dynamic-wind procedure) -(port-has-port-position? procedure) -(bitwise-reverse-bit-field procedure) -(symbol-hashtable-contains? procedure) -(hashtable-cell procedure) -(syntax syntax) -(remainder procedure) -(hashtable-values procedure) -(fixnum-width procedure) -(flzero? procedure) -(&i/o-invalid-position syntax) -(source-condition-form procedure) -(textual-port-output-index procedure) -(list->string procedure) -(open-output-file procedure) -(immutable-fxvector? procedure) -(condition-who procedure) -(record-type-parent procedure) -(binary-port-input-index procedure) -(meta-cond syntax) -(ftype-locked-decr! syntax) -(hashtable-copy procedure) -(make-eq-hashtable procedure) -(run-cp0 thread-param) -(open-bytevector-input-port procedure) -(protocol syntax) -(system procedure) -(bytevector-sint-ref procedure) -(i/o-file-protection-error? procedure) -(flonum->fixnum procedure) -(fixnum->flonum procedure) -(syntax->annotation procedure) -(number->string procedure) -(thread? procedure) -(with-syntax syntax) -(r6rs:string-ci<=? #f) -(uint-list->bytevector procedure) -(record-type-descriptor procedure) -(r6rs:string-ci>=? #f) -(enable-object-counts global-param) -(hashtable-keys procedure) -(transcript-on procedure) -(condition? procedure) -(bitwise-if procedure) -(simple-conditions procedure) -(collect-generation-radix global-param) -(transcoder? procedure) -(truncate-port procedure) -(symbol-hashtable? procedure) -(put-string procedure) -(vector? procedure) -(sstats-cpu procedure) -(set-port-bol! procedure) -(make-fxvector procedure) -(maybe-compile-program procedure) -(bytevector-sint-set! procedure) -(trace-define-syntax syntax) -(profile-clear-database procedure) -(date-minute procedure) -(foreign-free procedure) -(hashtable-set! procedure) -(vector-map procedure) -(string-upcase procedure) -(enumerate procedure) -(r6rs:number->string #f) -(fx+/carry procedure) -(set-port-eof! procedure) -(make-record-type-descriptor procedure) -(make-custom-textual-output-port procedure) -(vector-ref procedure) -(waiter-prompt-string thread-param) -(open-file-output-port procedure) -(interpret procedure) -(fprintf procedure) -(standard-output-port procedure) -(r6rs:hashtable-keys #f) -(continuation-condition? procedure) -(i/o-encoding-error? procedure) -(set-car! procedure) -(generate-temporaries procedure) -(hashtable-size procedure) -(make-output-port procedure) -(set-cdr! procedure) -(fxvector-fill! procedure) -(set-port-name! procedure) -(path-first procedure) -(list-ref procedure) -(compile-time-value-value procedure) -(add-prefix syntax) -(library-requirements procedure) -(hashtable-ref procedure) -(suppress-greeting global-param) -(close-input-port procedure) -(profile-load-data procedure) -(environment-mutable? procedure) -(foreign-set! procedure) -(print-brackets thread-param) -(&serious syntax) -(&format syntax) -(make-eqv-hashtable procedure) -(apropos-list procedure) -(set-box! procedure) -(set-port-length! procedure) -(message-condition? procedure) -(denominator procedure) -(magnitude-squared procedure) -(csv7:record-type-field-names #f) -(date->time-utc procedure) -(thread-condition? procedure) -(make-source-condition procedure) -(enum-set-intersection procedure) -(symbol-hashtable-ref procedure) -(list->fxvector procedure) -(bitwise-arithmetic-shift-left procedure) -(bytevector->sint-list procedure) -(set-sstats-real! procedure) -(copy-time procedure) -(put-source-table procedure) -(syntax-rules syntax) -(non-continuable-violation? procedure) -(date-day procedure) -(port-input-buffer procedure) -(bytevector-s64-native-ref procedure) -(ftype-locked-incr! syntax) -(r6rs:flush-output-port #f) -(set-port-position! procedure) -(annotation-source procedure) -(directory-separator? procedure) -(invoke-library procedure) -(syntax-violation? procedure) -(call-with-output-file procedure) -(extend-syntax syntax) -(r6rs:string-ci? #f) -(binary-port-output-count procedure) -(eq-hashtable? procedure) -(r6rs:open-input-file #f) -(fasl-strip-options syntax) -(current-transcoder thread-param) -(virtual-register-count procedure) -(port-closed? procedure) -(bitwise-length procedure) -(import-notify thread-param) -(delete-directory procedure) -(date-month procedure) -(nonpositive? procedure) -(display-string procedure) -(assertion-violation procedure) -(ftype-unlock! syntax) -(print-graph thread-param) -(&condition syntax) -(define-top-level-syntax procedure) -(with-cost-center procedure) -(bytes-deallocated procedure) -(make-compile-time-value procedure) -(textual-port-output-buffer procedure) -(eq-hashtable-cell procedure) -(flnonnegative? procedure) -(make-bytevector procedure) -(make-implementation-restriction-violation procedure) -(immutable-box? procedure) -(fxdiv-and-mod procedure) -(r6rs:fx* #f) -(r6rs:fx+ #f) -(r6rs:fx- #f) -(bytevector=? procedure) -(lock-object procedure) -(source-file-descriptor procedure) -(decode-float procedure) -(fxreverse-bit-field procedure) -(output-port? procedure) -(conjugate procedure) -(include syntax) -(parent-rtd syntax) -(mutable-vector? procedure) -(native-endianness procedure) -(compile-profile thread-param) -(port-input-count procedure) -(exact-integer-sqrt procedure) -(warning procedure) -(scheme-version-number procedure) -(file-length procedure) -(foreign-procedure syntax) -(expand/optimize procedure) -(set-port-output-size! procedure) -(binary-port-output-index procedure) -(print-level thread-param) -(date-second procedure) -(textual-port? procedure) -(cp0-score-limit thread-param) -(file-directory? procedure) -(putprop procedure) -(ftype-pointer-address procedure) -(compile-program procedure) -(clear-input-port procedure) -(&assertion syntax) -(set-textual-port-input-index! procedure) -(compile-interpret-simple thread-param) -(hashtable-cells procedure) -(collect-maximum-generation global-param) -(string-downcase procedure) -(make-source-file-descriptor procedure) -(bytevector-u32-native-ref procedure) -(i/o-invalid-position-error? procedure) -(i/o-error-port procedure) -(port-input-empty? procedure) -(mutex-release procedure) -(make-format-condition procedure) -(r6rs:string? #f) -(generate-profile-forms thread-param) -(condition-signal procedure) -(top-level-bound? procedure) -(bitwise-arithmetic-shift procedure) -(get-bytevector-n procedure) -(pretty-file procedure) -(mutable-box? procedure) -(r6rs:current-output-port #f) -(source-file-descriptor-checksum procedure) -(define-condition-type syntax) -(truncate procedure) -(char-upcase procedure) -(locate-source procedure) -(transcoder-error-handling-mode procedure) -(make-i/o-file-already-exists-error procedure) -(make-annotation procedure) -(eq-hashtable-set! procedure) -(port-input-index procedure) -(ftype-sizeof syntax) -(inexact procedure) -(get-string-n! procedure) -(print-radix thread-param) -(path-parent procedure) -(fldiv-and-mod procedure) -(csv7:record-field-mutator #f) -(bytevector-truncate! procedure) -(profile-release-counters procedure) -(unsyntax syntax) -(indirect-export syntax) -(char-lower-case? procedure) -(* procedure) -(+ procedure) -(/ procedure) -(port-transcoder procedure) -(< procedure) -(= procedure) -(> procedure) -(port-has-set-port-length!? procedure) -(complex? procedure) -(file-modification-time procedure) -(port-handler procedure) -(make-no-infinities-violation procedure) -(open-input-file procedure) -(_ syntax) -(ftype-&ref syntax) -(r6rs:current-error-port #f) -(fork-thread procedure) -(symbol=? procedure) -(expand/optimize-output thread-param) -(eof-object? procedure) -(sint-list->bytevector procedure) -(utf-16be-codec procedure) -(immutable-string? procedure) -(char-alphabetic? procedure) -(r6rs:open-output-file #f) -(fxeven? procedure) -(get-bytevector-n! procedure) -(file-port? procedure) -(print-gensym thread-param) -(default-library-search-handler procedure) -(string-normalize-nfkc procedure) -(string-normalize-nfkd procedure) -(sstats-gc-count procedure) -(reset-handler thread-param) -(char-ci<=? procedure) -(eq-hashtable-update! procedure) -(box-immutable procedure) -(char-ci>=? procedure) -(current-make-source-object thread-param) -(bytevector-u16-native-set! procedure) -(hashtable-delete! procedure) -(eq-hashtable-contains? procedure) -(set-binary-port-input-buffer! procedure) -(ftype-pointer-ftype procedure) -(buffer-mode syntax) -(bytevector-ieee-single-ref procedure) -(set-binary-port-output-index! procedure) -(profile-dump procedure) -(put-bytevector-some procedure) -(open-fd-output-port procedure) -(make-record-constructor-descriptor procedure) -(predicate syntax) -(scheme-script global-param) -(native-eol-style procedure) -(unget-char procedure) -(free-identifier=? procedure) -(current-error-port thread-param) -(bytevector-ieee-single-native-set! procedure) -(get-source-table! procedure) -(least-fixnum procedure) -(condition-broadcast procedure) -(inspect/object procedure) -(sstats-gc-bytes procedure) -(no-nans-violation? procedure) -(call/cc procedure) -(utf8->string procedure) -(get-datum procedure) -(call-with-string-output-port procedure) -(library-requirements-options syntax) -(make-error procedure) -(csv7:record-type-name #f) -(caaaar procedure) -(set-port-input-size! procedure) -(bytevector-s48-set! procedure) -(record-constructor-descriptor syntax) -(caaadr procedure) -(fx-/carry procedure) -(fxpositive? procedure) -(syntax->vector procedure) -(with-profile-tracker procedure) -(fxcopy-bit-field procedure) -(caadar procedure) -(define-ftype syntax) -(caaddr procedure) -(debug-on-exception global-param) -(substq! procedure) -(record-type-generative? procedure) -(substv! procedure) -(set-textual-port-input-buffer! procedure) -(compute-size procedure) -(cadaar procedure) -(cadadr procedure) -(define-record syntax) -(set-textual-port-output-index! procedure) -(time-type procedure) -(caddar procedure) -(cadddr procedure) -(mutex-name procedure) -(string->number procedure) -(&no-nans syntax) -(library syntax) -(machine-type procedure) -(add-duration! procedure) -(symbol->string procedure) -(get-bytevector-some procedure) -(fldiv0-and-mod0 procedure) -(vector->list procedure) -(port-length procedure) -(string->immutable-string procedure) -(fxlogor procedure) -(lookahead-u8 procedure) -(set-port-output-buffer! procedure) -(library-object-filename procedure) -(file-access-time procedure) -(record-type-sealed? procedure) -(define-enumeration syntax) -(numerator procedure) -(annotation-option-set syntax) -(block-write procedure) -(get-string-n procedure) -(cdaaar procedure) -(string-foldcase procedure) -(unlock-object procedure) -(bytevector-s56-set! procedure) -(make-date procedure) -(cdaadr procedure) -(record-type-opaque? procedure) -(cdadar procedure) -(cdaddr procedure) -(get-process-id procedure) -(record-predicate procedure) -(&irritants syntax) -(cddaar procedure) -(&i/o syntax) -(ftype-pointer-null? syntax) -(cddadr procedure) -(r6rs:string->number #f) -(cdddar procedure) -(csv7:record-type-descriptor #f) -(cddddr procedure) -(utf16->string procedure) -(file-exists? procedure) -(r6rs:standard-error-port #f) -(set-textual-port-output-buffer! procedure) -(make-cost-center procedure) -(bytevector-copy! procedure) -(bytevector-fill! procedure) -(maybe-compile-file procedure) -(cfl-imag-part procedure) -(bytevector-s8-ref procedure) -(foreign-callable-code-object procedure) -(close-output-port procedure) -(add-duration procedure) -(compile-file procedure) -(div-and-mod procedure) -(enum-set-difference procedure) -(set-sstats-gc-cpu! procedure) -(quasiquote syntax) -(make-hash-table procedure) -(inspect procedure) -(enum-set->list procedure) -(bytevector-s64-set! procedure) -(literal-identifier=? procedure) -(get-string-some procedure) -(fxremainder procedure) -(environment procedure) -(boolean=? procedure) -(release-minimum-generation global-param) -(set-textual-port-input-size! procedure) -(letrec* syntax) -(make-i/o-read-error procedure) -(r6rs:string<=? #f) -(rename-file procedure) -(make-list procedure) -(vector-set-fixnum! procedure) -(symbol-hash procedure) -(make-i/o-file-protection-error procedure) -(&i/o-file-already-exists syntax) -(char? procedure) -(r6rs:string>=? #f) -(sstats? procedure) -(record-reader procedure) -(record-equal-procedure procedure) -(abort-handler thread-param) -(bytevector-s16-ref procedure) -(r6rs:< #f) -(r6rs:= #f) -(s8-list->bytevector procedure) -(r6rs:> #f) -(lookahead-char procedure) -(require-nongenerative-clause thread-param) -(i/o-error-position procedure) -(&who syntax) -(weak-pair? procedure) -(reset-cost-center! procedure) -(generate-wpo-files thread-param) -(&undefined syntax) -(bytevector-s24-ref procedure) -(ephemeron-pair? procedure) -(fl-make-rectangular procedure) -(make-polar procedure) -(fxarithmetic-shift-left procedure) -(generate-interrupt-trap thread-param) -(make-mutex procedure) -(&i/o-file-is-read-only syntax) -(&warning syntax) -(assertion-violation? procedure) -(fxbit-set? procedure) -(make-time procedure) -(integer-length procedure) -(r6rs:with-input-from-file #f) -(andmap procedure) -(make-message-condition procedure) -(call-with-bytevector-output-port procedure) -(assertion-violationf procedure) -(maybe-compile-library procedure) -(bytevector-s32-ref procedure) -(string? procedure) -(hashtable-weak? procedure) -(define syntax) -(compile-port procedure) -(make-violation procedure) -(serious-condition? procedure) -(debug-condition thread-param) -(trace-print thread-param) -(print-length thread-param) -(sstats-difference procedure) -(bytevector-s40-ref procedure) -(date-week-day procedure) -($primitive syntax) -(print-char-name thread-param) -(char-general-category procedure) -(make-transcoder procedure) -(&no-infinities syntax) -(fxrotate-bit-field procedure) -(r6rs:command-line #f) -(eq-hashtable-weak? procedure) -(bytes-allocated procedure) -(set-time-type! procedure) -(string->list procedure) -(char<=? procedure) -(bytevector-u8-ref procedure) -(generate-allocation-counts thread-param) -(char>=? procedure) -(... syntax) -(make-weak-eqv-hashtable procedure) -(current-output-port thread-param) -(lexical-violation? procedure) -(record-type-descriptor? procedure) -(with-interrupts-disabled syntax) -(with-mutex syntax) -(define-values syntax) -(get-output-string procedure) -(char-whitespace? procedure) -(get-hash-table procedure) -(integer->char procedure) -(ftype-pointer->sexpr procedure) -(string-titlecase procedure) -(make-hashtable procedure) -(waiter-write thread-param) -(r6rs:<= #f) -(r6rs:>= #f) -(source-table-contains? procedure) -(fxzero? procedure) -(most-positive-fixnum procedure) -(enum-set-constructor procedure) -(native-transcoder procedure) -(untrace syntax) -(cflonum? procedure) -(nongenerative syntax) -(get-string-all procedure) -(unquote syntax) -(fxvector? procedure) -(fasl-write procedure) -(compute-composition procedure) -(peek-char procedure) -(scheme-report-environment procedure) -(make-engine procedure) -(string->utf8 procedure) -(make-warning procedure) -(port-file-compressed! procedure) -(append procedure) -(statistics procedure) -(partition procedure) -(with-exception-handler procedure) -(negative? procedure) -(flinfinite? procedure) -(r6rs:record-constructor #f) -(annotation-expression procedure) -(ceiling procedure) -(bytevector->string procedure) -(foreign-ref procedure) -(hash-table-map procedure) -(make-rectangular procedure) -(bytevector-s32-native-set! procedure) -(heap-reserve-ratio global-param) -(make-enumeration procedure) -(profile-palette thread-param) -(warning? procedure) -(open-string-input-port procedure) -($system module) -(get-u8 procedure) -(warningf procedure) -(exclusive-cond syntax) -(port-output-count procedure) -(load-compiled-from-port procedure) -(most-negative-fixnum procedure) -(hashtable-mutable? procedure) -(print-unicode thread-param) -(get-bytevector-all procedure) -(identifier-syntax syntax) -(&i/o-file-protection syntax) -(bytevector? procedure) -(read-char procedure) -(symbol? procedure) -(reset-maximum-memory-bytes! procedure) -(bytevector-ieee-double-native-ref procedure) -(equal-hash procedure) -(with-input-from-file procedure) -(bignum? procedure) -(trace-do syntax) -(i/o-port-error? procedure) -(exact->inexact procedure) -(bytevector-s48-ref procedure) -(record-constructor procedure)))) -(define chezscheme (private-process '(chezscheme) '( -(- procedure) -(* procedure) -(... syntax) -(/ procedure) -(_ syntax) -(+ procedure) -(< procedure) -(<= procedure) -(= procedure) -(=> syntax) -(> procedure) -(>= procedure) -; (1- procedure) -; (1+ procedure) -; (-1+ procedure) -(abort procedure) -(abs procedure) -(acos procedure) -(acosh procedure) -(add1 procedure) -(add-duration procedure) -(add-duration! procedure) -(add-prefix syntax) -(alias syntax) -(and syntax) -(andmap procedure) -(angle procedure) -(annotation? procedure) -(annotation-expression procedure) -(annotation-options procedure) -(annotation-option-set syntax) -(annotation-source procedure) -(annotation-stripped procedure) -(append procedure) -(append! procedure) -(apply procedure) -(apropos procedure) -(apropos-list procedure) -(ash procedure) -(asin procedure) -(asinh procedure) -(assert syntax) -(assertion-violation procedure) -(assertion-violation? procedure) -(assertion-violationf procedure) -(assoc procedure) -(assp procedure) -(assq procedure) -(assv procedure) -(atan procedure) -(atanh procedure) -(atom? procedure) -(begin syntax) -(bignum? procedure) -(binary-port? procedure) -(binary-port-input-buffer procedure) -(binary-port-input-count procedure) -(binary-port-input-index procedure) -(binary-port-input-size procedure) -(binary-port-output-buffer procedure) -(binary-port-output-count procedure) -(binary-port-output-index procedure) -(binary-port-output-size procedure) -(bitwise-and procedure) -(bitwise-arithmetic-shift procedure) -(bitwise-arithmetic-shift-left procedure) -(bitwise-arithmetic-shift-right procedure) -(bitwise-bit-count procedure) -(bitwise-bit-field procedure) -(bitwise-bit-set? procedure) -(bitwise-copy-bit procedure) -(bitwise-copy-bit-field procedure) -(bitwise-first-bit-set procedure) -(bitwise-if procedure) -(bitwise-ior procedure) -(bitwise-length procedure) -(bitwise-not procedure) -(bitwise-reverse-bit-field procedure) -(bitwise-rotate-bit-field procedure) -(bitwise-xor procedure) -(block-read procedure) -(block-write procedure) -(boolean? procedure) -(boolean=? procedure) -(bound-identifier=? procedure) -(box procedure) -(box? procedure) -(box-cas! procedure) -(box-immutable procedure) -(break procedure) -(buffer-mode syntax) -(buffer-mode? syntax) -(bwp-object? procedure) -(bytes-allocated procedure) -(bytes-deallocated procedure) -(bytevector procedure) -(bytevector? procedure) -(bytevector=? procedure) -(bytevector->immutable-bytevector procedure) -(bytevector->s8-list procedure) -(bytevector->sint-list procedure) -(bytevector->string procedure) -(bytevector->u8-list procedure) -(bytevector->uint-list procedure) -(bytevector-compress procedure) -(bytevector-copy procedure) -(bytevector-copy! procedure) -(bytevector-fill! procedure) -(bytevector-ieee-double-native-ref procedure) -(bytevector-ieee-double-native-set! procedure) -(bytevector-ieee-double-ref procedure) -(bytevector-ieee-double-set! procedure) -(bytevector-ieee-single-native-ref procedure) -(bytevector-ieee-single-native-set! procedure) -(bytevector-ieee-single-ref procedure) -(bytevector-ieee-single-set! procedure) -(bytevector-length procedure) -(bytevector-s16-native-ref procedure) -(bytevector-s16-native-set! procedure) -(bytevector-s16-ref procedure) -(bytevector-s16-set! procedure) -(bytevector-s24-ref procedure) -(bytevector-s24-set! procedure) -(bytevector-s32-native-ref procedure) -(bytevector-s32-native-set! procedure) -(bytevector-s32-ref procedure) -(bytevector-s32-set! procedure) -(bytevector-s40-ref procedure) -(bytevector-s40-set! procedure) -(bytevector-s48-ref procedure) -(bytevector-s48-set! procedure) -(bytevector-s56-ref procedure) -(bytevector-s56-set! procedure) -(bytevector-s64-native-ref procedure) -(bytevector-s64-native-set! procedure) -(bytevector-s64-ref procedure) -(bytevector-s64-set! procedure) -(bytevector-s8-ref procedure) -(bytevector-s8-set! procedure) -(bytevector-sint-ref procedure) -(bytevector-sint-set! procedure) -(bytevector-truncate! procedure) -(bytevector-u16-native-ref procedure) -(bytevector-u16-native-set! procedure) -(bytevector-u16-ref procedure) -(bytevector-u16-set! procedure) -(bytevector-u24-ref procedure) -(bytevector-u24-set! procedure) -(bytevector-u32-native-ref procedure) -(bytevector-u32-native-set! procedure) -(bytevector-u32-ref procedure) -(bytevector-u32-set! procedure) -(bytevector-u40-ref procedure) -(bytevector-u40-set! procedure) -(bytevector-u48-ref procedure) -(bytevector-u48-set! procedure) -(bytevector-u56-ref procedure) -(bytevector-u56-set! procedure) -(bytevector-u64-native-ref procedure) -(bytevector-u64-native-set! procedure) -(bytevector-u64-ref procedure) -(bytevector-u64-set! procedure) -(bytevector-u8-ref procedure) -(bytevector-u8-set! procedure) -(bytevector-uint-ref procedure) -(bytevector-uint-set! procedure) -(bytevector-uncompress procedure) -(caaaar procedure) -(caaadr procedure) -(caaar procedure) -(caadar procedure) -(caaddr procedure) -(caadr procedure) -(caar procedure) -(cadaar procedure) -(cadadr procedure) -(cadar procedure) -(caddar procedure) -(cadddr procedure) -(caddr procedure) -(cadr procedure) -(call/1cc procedure) -(call/cc procedure) -(call-with-bytevector-output-port procedure) -(call-with-current-continuation procedure) -(call-with-input-file procedure) -(call-with-output-file procedure) -(call-with-port procedure) -(call-with-string-output-port procedure) -(call-with-values procedure) -(car procedure) -(case syntax) -(case-lambda syntax) -(cdaaar procedure) -(cdaadr procedure) -(cdaar procedure) -(cdadar procedure) -(cdaddr procedure) -(cdadr procedure) -(cdar procedure) -(cddaar procedure) -(cddadr procedure) -(cddar procedure) -(cdddar procedure) -(cddddr procedure) -(cdddr procedure) -(cddr procedure) -(cdr procedure) -(ceiling procedure) -(cfl- procedure) -(cfl* procedure) -(cfl/ procedure) -(cfl+ procedure) -(cfl= procedure) -(cfl-conjugate procedure) -(cfl-imag-part procedure) -(cfl-magnitude-squared procedure) -(cflonum? procedure) -(cfl-real-part procedure) -(char- procedure) -(char? procedure) -(char? procedure) -(char>=? procedure) -(char->integer procedure) -(char-alphabetic? procedure) -(char-ci? procedure) -(char-ci>=? procedure) -(char-downcase procedure) -(char-foldcase procedure) -(char-general-category procedure) -(char-lower-case? procedure) -(char-name procedure) -(char-numeric? procedure) -(char-ready? procedure) -(char-titlecase procedure) -(char-title-case? procedure) -(char-upcase procedure) -(char-upper-case? procedure) -(char-whitespace? procedure) -(chmod procedure) -(clear-input-port procedure) -(clear-output-port procedure) -(close-input-port procedure) -(close-output-port procedure) -(close-port procedure) -(collect procedure) -(collections procedure) -(collect-rendezvous procedure) -(command-line procedure) -(compile procedure) -(compile-file procedure) -(compile-library procedure) -(compile-port procedure) -(compile-program procedure) -(compile-script procedure) -(compile-time-value? procedure) -(compile-time-value-value procedure) -(compile-to-file procedure) -(compile-to-port procedure) -(compile-whole-library procedure) -(compile-whole-program procedure) -(complex? procedure) -(compute-composition procedure) -(compute-size procedure) -(concatenate-object-files procedure) -(cond syntax) -(condition procedure) -(condition? procedure) -(condition-accessor procedure) -(condition-broadcast procedure) -(condition-continuation procedure) -(condition-irritants procedure) -(condition-message procedure) -(condition-name procedure) -(condition-predicate procedure) -(condition-signal procedure) -(condition-wait procedure) -(condition-who procedure) -(conjugate procedure) -(cons procedure) -(cons* procedure) -(constant syntax) -(constructor syntax) -(continuation-condition? procedure) -(copy-environment procedure) -(copy-time procedure) -(cos procedure) -(cosh procedure) -(cost-center? procedure) -(cost-center-allocation-count procedure) -(cost-center-instruction-count procedure) -(cost-center-time procedure) -(cpu-time procedure) -(create-exception-state procedure) -(critical-section syntax) -(current-date procedure) -(current-error-port procedure) -(current-input-port procedure) -(current-memory-bytes procedure) -(current-output-port procedure) -(current-time procedure) -(date? procedure) -(date->time-utc procedure) -(date-and-time procedure) -(date-day procedure) -(date-dst? procedure) -(date-hour procedure) -(date-minute procedure) -(date-month procedure) -(date-nanosecond procedure) -(date-second procedure) -(date-week-day procedure) -(date-year procedure) -(date-year-day procedure) -(date-zone-name procedure) -(date-zone-offset procedure) -(datum syntax) -(datum->syntax procedure) -(datum->syntax-object procedure) -(debug procedure) -(decode-float procedure) -(default-exception-handler procedure) -(default-library-search-handler procedure) -(default-prompt-and-read procedure) -(define syntax) -(define-condition-type syntax) -(define-enumeration syntax) -(define-ftype syntax) -(define-property syntax) -(define-record syntax) -(define-record-type syntax) -(define-structure syntax) -(define-syntax syntax) -(define-top-level-syntax procedure) -(define-top-level-value procedure) -(define-values syntax) -(delay syntax) -(delete-directory procedure) -(delete-file procedure) -(denominator procedure) -(directory-list procedure) -(directory-separator procedure) -(directory-separator? procedure) -(disable-interrupts procedure) -(display procedure) -(display-condition procedure) -(display-statistics procedure) -(display-string procedure) -(div procedure) -(div0 procedure) -(div0-and-mod0 procedure) -(div-and-mod procedure) -(do syntax) -(drop-prefix syntax) -(dynamic-wind procedure) -(ee-bind-key procedure) -(ee-compose procedure) -(ee-string-macro procedure) -(else syntax) -(enable-interrupts procedure) -(endianness syntax) -(engine-block procedure) -(engine-return procedure) -(enumerate procedure) -(enum-set? procedure) -(enum-set=? procedure) -(enum-set->list procedure) -(enum-set-complement procedure) -(enum-set-constructor procedure) -(enum-set-difference procedure) -(enum-set-indexer procedure) -(enum-set-intersection procedure) -(enum-set-member? procedure) -(enum-set-projection procedure) -(enum-set-subset? procedure) -(enum-set-union procedure) -(enum-set-universe procedure) -(environment procedure) -(environment? procedure) -(environment-mutable? procedure) -(environment-symbols procedure) -(eof-object procedure) -(eof-object? procedure) -(eol-style syntax) -(ephemeron-cons procedure) -(ephemeron-pair? procedure) -(eq? procedure) -(eq-hashtable? procedure) -(eq-hashtable-cell procedure) -(eq-hashtable-contains? procedure) -(eq-hashtable-delete! procedure) -(eq-hashtable-ephemeron? procedure) -(eq-hashtable-ref procedure) -(eq-hashtable-set! procedure) -(eq-hashtable-update! procedure) -(eq-hashtable-weak? procedure) -(equal? procedure) -(equal-hash procedure) -(eqv? procedure) -(error procedure) -(error? procedure) -(errorf procedure) -(error-handling-mode syntax) -(eval procedure) -(eval-when syntax) -(even? procedure) -(exact procedure) -(exact? procedure) -(exact->inexact procedure) -(exact-integer-sqrt procedure) -(except syntax) -(exclusive-cond syntax) -(exists procedure) -(exit procedure) -(exp procedure) -(expand procedure) -(expand/optimize procedure) -(export syntax) -(expr0 syntax) -(expt procedure) -(expt-mod procedure) -(extend-syntax syntax) -(fasl-file procedure) -(fasl-read procedure) -(fasl-strip-options syntax) -(fasl-write procedure) -(fields syntax) -(file-access-time procedure) -(file-change-time procedure) -(file-directory? procedure) -(file-exists? procedure) -(file-length procedure) -(file-modification-time procedure) -(file-options syntax) -(file-port? procedure) -(file-position procedure) -(file-regular? procedure) -(file-symbolic-link? procedure) -(filter procedure) -(find procedure) -(finite? procedure) -(fixnum? procedure) -(fixnum->flonum procedure) -(fixnum-width procedure) -(fl- procedure) -(fl* procedure) -(fl/ procedure) -(fl+ procedure) -(fl< procedure) -(fl procedure) -(fl>? procedure) -(fl>= procedure) -(fl>=? procedure) -(flabs procedure) -(flacos procedure) -(flasin procedure) -(flatan procedure) -(flceiling procedure) -(flcos procedure) -(fldenominator procedure) -(fldiv procedure) -(fldiv0 procedure) -(fldiv0-and-mod0 procedure) -(fldiv-and-mod procedure) -(fleven? procedure) -(flexp procedure) -(flexpt procedure) -(flfinite? procedure) -(flfloor procedure) -(flinfinite? procedure) -(flinteger? procedure) -(fllog procedure) -(fllp procedure) -(fl-make-rectangular procedure) -(flmax procedure) -(flmin procedure) -(flmod procedure) -(flmod0 procedure) -(flnan? procedure) -(flnegative? procedure) -(flnonnegative? procedure) -(flnonpositive? procedure) -(flnumerator procedure) -(flodd? procedure) -(flonum? procedure) -(flonum->fixnum procedure) -(floor procedure) -(flpositive? procedure) -(flround procedure) -(flsin procedure) -(flsqrt procedure) -(fltan procedure) -(fltruncate procedure) -(fluid-let syntax) -(fluid-let-syntax syntax) -(flush-output-port procedure) -(flzero? procedure) -(fold-left procedure) -(fold-right procedure) -(for-all procedure) -(force procedure) -(for-each procedure) -(foreign-address-name procedure) -(foreign-alloc procedure) -(foreign-callable syntax) -(foreign-callable-code-object procedure) -(foreign-callable-entry-point procedure) -(foreign-entry procedure) -(foreign-entry? procedure) -(foreign-free procedure) -(foreign-procedure syntax) -(foreign-ref procedure) -(foreign-set! procedure) -(foreign-sizeof procedure) -(fork-thread procedure) -(format procedure) -(format-condition? procedure) -(fprintf procedure) -(free-identifier=? procedure) -(fresh-line procedure) -(ftype-&ref syntax) -(ftype-guardian syntax) -(ftype-init-lock! syntax) -(ftype-lock! syntax) -(ftype-locked-decr! syntax) -(ftype-locked-incr! syntax) -(ftype-pointer? syntax) -(ftype-pointer=? syntax) -(ftype-pointer->sexpr procedure) -(ftype-pointer-address procedure) -(ftype-pointer-ftype procedure) -(ftype-pointer-null? syntax) -(ftype-ref syntax) -(ftype-set! syntax) -(ftype-sizeof syntax) -(ftype-spin-lock! syntax) -(ftype-unlock! syntax) -(fx- procedure) -(fx* procedure) -(fx*/carry procedure) -(fx/ procedure) -(fx-/carry procedure) -(fx+ procedure) -(fx+/carry procedure) -(fx< procedure) -(fx procedure) -(fx>? procedure) -(fx>= procedure) -(fx>=? procedure) -(fx1- procedure) -(fx1+ procedure) -(fxabs procedure) -(fxand procedure) -(fxarithmetic-shift procedure) -(fxarithmetic-shift-left procedure) -(fxarithmetic-shift-right procedure) -(fxbit-count procedure) -(fxbit-field procedure) -(fxbit-set? procedure) -(fxcopy-bit procedure) -(fxcopy-bit-field procedure) -(fxdiv procedure) -(fxdiv0 procedure) -(fxdiv0-and-mod0 procedure) -(fxdiv-and-mod procedure) -(fxeven? procedure) -(fxfirst-bit-set procedure) -(fxif procedure) -(fxior procedure) -(fxlength procedure) -(fxlogand procedure) -(fxlogbit? procedure) -(fxlogbit0 procedure) -(fxlogbit1 procedure) -(fxlogior procedure) -(fxlognot procedure) -(fxlogor procedure) -(fxlogtest procedure) -(fxlogxor procedure) -(fxmax procedure) -(fxmin procedure) -(fxmod procedure) -(fxmod0 procedure) -(fxmodulo procedure) -(fxnegative? procedure) -(fxnonnegative? procedure) -(fxnonpositive? procedure) -(fxnot procedure) -(fxodd? procedure) -(fxpositive? procedure) -(fxquotient procedure) -(fxremainder procedure) -(fxreverse-bit-field procedure) -(fxrotate-bit-field procedure) -(fxsll procedure) -(fxsra procedure) -(fxsrl procedure) -(fxvector procedure) -(fxvector? procedure) -(fxvector->immutable-fxvector procedure) -(fxvector->list procedure) -(fxvector-copy procedure) -(fxvector-fill! procedure) -(fxvector-length procedure) -(fxvector-ref procedure) -(fxvector-set! procedure) -(fxxor procedure) -(fxzero? procedure) -(gcd procedure) -(generate-temporaries procedure) -(gensym procedure) -(gensym? procedure) -(gensym->unique-string procedure) -(get-bytevector-all procedure) -(get-bytevector-n procedure) -(get-bytevector-n! procedure) -(get-bytevector-some procedure) -(get-bytevector-some! procedure) -(get-char procedure) -(get-datum procedure) -(get-datum/annotations procedure) -(getenv procedure) -(get-hash-table procedure) -(get-line procedure) -(get-mode procedure) -(get-output-string procedure) -(get-process-id procedure) -(getprop procedure) -(get-registry procedure) -(get-source-table! procedure) -(get-string-all procedure) -(get-string-n procedure) -(get-string-n! procedure) -(get-string-some procedure) -(get-string-some! procedure) -(get-thread-id procedure) -(get-u8 procedure) -(greatest-fixnum procedure) -(guard syntax) -(guardian? procedure) -(hashtable? procedure) -(hash-table? procedure) -(hashtable-cell procedure) -(hashtable-cells procedure) -(hashtable-clear! procedure) -(hashtable-contains? procedure) -(hashtable-copy procedure) -(hashtable-delete! procedure) -(hashtable-entries procedure) -(hashtable-ephemeron? procedure) -(hashtable-equivalence-function procedure) -(hash-table-for-each procedure) -(hashtable-hash-function procedure) -(hashtable-keys procedure) -(hash-table-map procedure) -(hashtable-mutable? procedure) -(hashtable-ref procedure) -(hashtable-set! procedure) -(hashtable-size procedure) -(hashtable-update! procedure) -(hashtable-values procedure) -(hashtable-weak? procedure) -(i/o-decoding-error? procedure) -(i/o-encoding-error? procedure) -(i/o-encoding-error-char procedure) -(i/o-error? procedure) -(i/o-error-filename procedure) -(i/o-error-port procedure) -(i/o-error-position procedure) -(i/o-file-already-exists-error? procedure) -(i/o-file-does-not-exist-error? procedure) -(i/o-file-is-read-only-error? procedure) -(i/o-filename-error? procedure) -(i/o-file-protection-error? procedure) -(i/o-invalid-position-error? procedure) -(i/o-port-error? procedure) -(i/o-read-error? procedure) -(i/o-write-error? procedure) -(iconv-codec procedure) -(identifier? procedure) -(identifier-syntax syntax) -(ieee-environment procedure) -(if syntax) -(imag-part procedure) -(immutable syntax) -(immutable-box? procedure) -(immutable-bytevector? procedure) -(immutable-fxvector? procedure) -(immutable-string? procedure) -(immutable-vector? procedure) -(implementation-restriction-violation? procedure) -(implicit-exports syntax) -(import syntax) -(import-only syntax) -(include syntax) -(indirect-export syntax) -(inexact procedure) -(inexact? procedure) -(inexact->exact procedure) -(infinite? procedure) -(initial-bytes-allocated procedure) -(input-port? procedure) -(input-port-ready? procedure) -(inspect procedure) -(inspect/object procedure) -(integer? procedure) -(integer->char procedure) -(integer-length procedure) -(integer-valued? procedure) -(interactive? procedure) -(interpret procedure) -(invoke-library procedure) -(iota procedure) -(irritants-condition? procedure) -(isqrt procedure) -(lambda syntax) -(last-pair procedure) -(latin-1-codec procedure) -(lcm procedure) -(least-fixnum procedure) -(length procedure) -(let syntax) -(let* syntax) -(let*-values syntax) -(letrec syntax) -(letrec* syntax) -(letrec-syntax syntax) -(let-syntax syntax) -(let-values syntax) -(lexical-violation? procedure) -(library syntax) -(library-exports procedure) -(library-list procedure) -(library-object-filename procedure) -(library-requirements procedure) -(library-requirements-options syntax) -(library-version procedure) -(list procedure) -(list* procedure) -(list? procedure) -(list->fxvector procedure) -(list->string procedure) -(list->vector procedure) -(list-copy procedure) -(list-head procedure) -(list-ref procedure) -(list-sort procedure) -(list-tail procedure) -(literal-identifier=? procedure) -(load procedure) -(load-compiled-from-port procedure) -(load-library procedure) -(load-program procedure) -(load-shared-object procedure) -(locate-source procedure) -(locate-source-object-source procedure) -(locked-object? procedure) -(lock-object procedure) -(log procedure) -(logand procedure) -(logbit? procedure) -(logbit0 procedure) -(logbit1 procedure) -(logior procedure) -(lognot procedure) -(logor procedure) -(logtest procedure) -(logxor procedure) -(lookahead-char procedure) -(lookahead-u8 procedure) -(machine-type procedure) -(magnitude procedure) -(magnitude-squared procedure) -(make-annotation procedure) -(make-assertion-violation procedure) -(make-boot-file procedure) -(make-boot-header procedure) -(make-bytevector procedure) -(make-compile-time-value procedure) -(make-condition procedure) -(make-continuation-condition procedure) -(make-cost-center procedure) -(make-custom-binary-input/output-port procedure) -(make-custom-binary-input-port procedure) -(make-custom-binary-output-port procedure) -(make-custom-textual-input/output-port procedure) -(make-custom-textual-input-port procedure) -(make-custom-textual-output-port procedure) -(make-date procedure) -(make-engine procedure) -(make-enumeration procedure) -(make-ephemeron-eq-hashtable procedure) -(make-ephemeron-eqv-hashtable procedure) -(make-eq-hashtable procedure) -(make-eqv-hashtable procedure) -(make-error procedure) -(make-format-condition procedure) -(make-ftype-pointer syntax) -(make-fxvector procedure) -(make-guardian procedure) -(make-hashtable procedure) -(make-hash-table procedure) -(make-i/o-decoding-error procedure) -(make-i/o-encoding-error procedure) -(make-i/o-error procedure) -(make-i/o-file-already-exists-error procedure) -(make-i/o-file-does-not-exist-error procedure) -(make-i/o-file-is-read-only-error procedure) -(make-i/o-filename-error procedure) -(make-i/o-file-protection-error procedure) -(make-i/o-invalid-position-error procedure) -(make-i/o-port-error procedure) -(make-i/o-read-error procedure) -(make-i/o-write-error procedure) -(make-implementation-restriction-violation procedure) -(make-input/output-port procedure) -(make-input-port procedure) -(make-irritants-condition procedure) -(make-lexical-violation procedure) -(make-list procedure) -(make-message-condition procedure) -(make-mutex procedure) -(make-no-infinities-violation procedure) -(make-no-nans-violation procedure) -(make-non-continuable-violation procedure) -(make-object-finder procedure) -(make-output-port procedure) -(make-parameter procedure) -(make-record-constructor-descriptor procedure) -(make-record-type procedure) -(make-record-type-descriptor procedure) -(make-serious-condition procedure) -(make-source-condition procedure) -(make-source-file-descriptor procedure) -(make-source-object procedure) -(make-source-table procedure) -(make-sstats procedure) -(make-string procedure) -(make-syntax-violation procedure) -(make-thread-parameter procedure) -(make-time procedure) -(make-transcoder procedure) -(make-undefined-violation procedure) -(make-variable-transformer procedure) -(make-vector procedure) -(make-violation procedure) -(make-warning procedure) -(make-weak-eq-hashtable procedure) -(make-weak-eqv-hashtable procedure) -(make-who-condition procedure) -(map procedure) -(mark-port-closed! procedure) -(max procedure) -(maximum-memory-bytes procedure) -(maybe-compile-file procedure) -(maybe-compile-library procedure) -(maybe-compile-program procedure) -(member procedure) -(memp procedure) -(memq procedure) -(memv procedure) -(merge procedure) -(merge! procedure) -(message-condition? procedure) -(meta syntax) -(meta-cond syntax) -(min procedure) -(mkdir procedure) -(mod procedure) -(mod0 procedure) -(module syntax) -(modulo procedure) -(most-negative-fixnum procedure) -(most-positive-fixnum procedure) -(multibyte->string procedure) -(mutable syntax) -(mutable-box? procedure) -(mutable-bytevector? procedure) -(mutable-fxvector? procedure) -(mutable-string? procedure) -(mutable-vector? procedure) -(mutex? procedure) -(mutex-acquire procedure) -(mutex-name procedure) -(mutex-release procedure) -(nan? procedure) -(native-endianness procedure) -(native-eol-style procedure) -(native-transcoder procedure) -(negative? procedure) -(new-cafe procedure) -(newline procedure) -(no-infinities-violation? procedure) -(no-nans-violation? procedure) -(non-continuable-violation? procedure) -(nongenerative syntax) -(nonnegative? procedure) -(nonpositive? procedure) -(not procedure) -(null? procedure) -(null-environment procedure) -(number? procedure) -(number->string procedure) -(numerator procedure) -(obj syntax) -(object-counts procedure) -(oblist procedure) -(odd? procedure) -(only syntax) -(opaque syntax) -(open-bytevector-input-port procedure) -(open-bytevector-output-port procedure) -(open-fd-input/output-port procedure) -(open-fd-input-port procedure) -(open-fd-output-port procedure) -(open-file-input/output-port procedure) -(open-file-input-port procedure) -(open-file-output-port procedure) -(open-input-file procedure) -(open-input-output-file procedure) -(open-input-string procedure) -(open-output-file procedure) -(open-output-string procedure) -(open-process-ports procedure) -(open-source-file procedure) -(open-string-input-port procedure) -(open-string-output-port procedure) -(or syntax) -(ormap procedure) -(output-port? procedure) -(output-port-buffer-mode procedure) -(pair? procedure) -(parameterize syntax) -(parent syntax) -(parent-rtd syntax) -(pariah syntax) -(partition procedure) -(path-absolute? procedure) -(path-extension procedure) -(path-first procedure) -(path-last procedure) -(path-parent procedure) -(path-rest procedure) -(path-root procedure) -(peek-char procedure) -(petite? procedure) -(port? procedure) -(port-bol? procedure) -(port-closed? procedure) -(port-eof? procedure) -(port-file-compressed! procedure) -(port-file-descriptor procedure) -(port-handler procedure) -(port-has-port-length? procedure) -(port-has-port-nonblocking?? procedure) -(port-has-port-position? procedure) -(port-has-set-port-length!? procedure) -(port-has-set-port-nonblocking!? procedure) -(port-has-set-port-position!? procedure) -(port-input-buffer procedure) -(port-input-count procedure) -(port-input-empty? procedure) -(port-input-index procedure) -(port-input-size procedure) -(port-length procedure) -(port-name procedure) -(port-nonblocking? procedure) -(port-output-buffer procedure) -(port-output-count procedure) -(port-output-full? procedure) -(port-output-index procedure) -(port-output-size procedure) -(port-position procedure) -(port-transcoder procedure) -(positive? procedure) -(predicate syntax) -(prefix syntax) -(pretty-file procedure) -(pretty-format procedure) -(pretty-print procedure) -(printf procedure) -(procedure? procedure) -(procedure-arity-mask procedure) -(process procedure) -(profile syntax) -(profile-clear procedure) -(profile-clear-database procedure) -(profile-dump procedure) -(profile-dump-data procedure) -(profile-dump-html procedure) -(profile-dump-list procedure) -(profile-load-data procedure) -(profile-query-weight procedure) -(profile-release-counters procedure) -(property-list procedure) -(protocol syntax) -(put-bytevector procedure) -(put-bytevector-some procedure) -(put-char procedure) -(put-datum procedure) -(putenv procedure) -(put-hash-table! procedure) -(putprop procedure) -(put-registry! procedure) -(put-source-table procedure) -(put-string procedure) -(put-string-some procedure) -(put-u8 procedure) -(quasiquote syntax) -(quasisyntax syntax) -(quote syntax) -(quotient procedure) -(raise procedure) -(raise-continuable procedure) -(random procedure) -(rational? procedure) -(rationalize procedure) -(rational-valued? procedure) -(ratnum? procedure) -(read procedure) -(read-char procedure) -(read-token procedure) -(real? procedure) -(real->flonum procedure) -(real-part procedure) -(real-time procedure) -(real-valued? procedure) -(rec syntax) -(record? procedure) -(record-accessor procedure) -(record-case syntax) -(record-constructor procedure) -(record-constructor-descriptor syntax) -(record-constructor-descriptor? procedure) -(record-equal-procedure procedure) -(record-field-accessible? procedure) -(record-field-accessor procedure) -(record-field-mutable? procedure) -(record-field-mutator procedure) -(record-hash-procedure procedure) -(record-mutator procedure) -(record-predicate procedure) -(record-reader procedure) -(record-rtd procedure) -(record-type-descriptor procedure) -(record-type-descriptor syntax) -(record-type-descriptor? procedure) -(record-type-equal-procedure procedure) -(record-type-field-decls procedure) -(record-type-field-names procedure) -(record-type-generative? procedure) -(record-type-hash-procedure procedure) -(record-type-name procedure) -(record-type-opaque? procedure) -(record-type-parent procedure) -(record-type-sealed? procedure) -(record-type-symbol procedure) -(record-type-uid procedure) -(record-writer procedure) -(register-signal-handler procedure) -(remainder procedure) -(remove procedure) -(remove! procedure) -(remove-foreign-entry procedure) -(remove-hash-table! procedure) -(remove-registry! procedure) -(remp procedure) -(remprop procedure) -(remq procedure) -(remq! procedure) -(remv procedure) -(remv! procedure) -(rename syntax) -(rename-file procedure) -(reset procedure) -(reset-cost-center! procedure) -(reset-maximum-memory-bytes! procedure) -(reverse procedure) -(reverse! procedure) -(revisit procedure) -(revisit-compiled-from-port procedure) -(round procedure) -(s8-list->bytevector procedure) -(sc-expand procedure) -(scheme-environment procedure) -(scheme-report-environment procedure) -(scheme-version procedure) -(scheme-version-number procedure) -(sealed syntax) -(serious-condition? procedure) -(set! syntax) -(set-binary-port-input-buffer! procedure) -(set-binary-port-input-index! procedure) -(set-binary-port-input-size! procedure) -(set-binary-port-output-buffer! procedure) -(set-binary-port-output-index! procedure) -(set-binary-port-output-size! procedure) -(set-box! procedure) -(set-car! procedure) -(set-cdr! procedure) -(set-port-bol! procedure) -(set-port-eof! procedure) -(set-port-input-buffer! procedure) -(set-port-input-index! procedure) -(set-port-input-size! procedure) -(set-port-length! procedure) -(set-port-name! procedure) -(set-port-nonblocking! procedure) -(set-port-output-buffer! procedure) -(set-port-output-index! procedure) -(set-port-output-size! procedure) -(set-port-position! procedure) -(set-sstats-bytes! procedure) -(set-sstats-cpu! procedure) -(set-sstats-gc-bytes! procedure) -(set-sstats-gc-count! procedure) -(set-sstats-gc-cpu! procedure) -(set-sstats-gc-real! procedure) -(set-sstats-real! procedure) -(set-textual-port-input-buffer! procedure) -(set-textual-port-input-index! procedure) -(set-textual-port-input-size! procedure) -(set-textual-port-output-buffer! procedure) -(set-textual-port-output-index! procedure) -(set-textual-port-output-size! procedure) -(set-time-nanosecond! procedure) -(set-timer procedure) -(set-time-second! procedure) -(set-time-type! procedure) -(set-top-level-value! procedure) -(set-virtual-register! procedure) -(simple-conditions procedure) -(sin procedure) -(sinh procedure) -(sint-list->bytevector procedure) -(sleep procedure) -(sort procedure) -(sort! procedure) -(source-condition? procedure) -(source-condition-form procedure) -(source-file-descriptor procedure) -(source-file-descriptor? procedure) -(source-file-descriptor-checksum procedure) -(source-file-descriptor-path procedure) -(source-object? procedure) -(source-object-bfp procedure) -(source-object-column procedure) -(source-object-efp procedure) -(source-object-line procedure) -(source-object-sfd procedure) -(source-table? procedure) -(source-table-cell procedure) -(source-table-contains? procedure) -(source-table-delete! procedure) -(source-table-dump procedure) -(source-table-ref procedure) -(source-table-set! procedure) -(source-table-size procedure) -(sqrt procedure) -(sstats? procedure) -(sstats-bytes procedure) -(sstats-cpu procedure) -(sstats-difference procedure) -(sstats-gc-bytes procedure) -(sstats-gc-count procedure) -(sstats-gc-cpu procedure) -(sstats-gc-real procedure) -(sstats-print procedure) -(sstats-real procedure) -(standard-error-port procedure) -(standard-input-port procedure) -(standard-output-port procedure) -(statistics procedure) -(string procedure) -(string? procedure) -(string? procedure) -(string>=? procedure) -(string->bytevector procedure) -(string->immutable-string procedure) -(string->list procedure) -(string->multibyte procedure) -(string->number procedure) -(string->symbol procedure) -(string->utf16 procedure) -(string->utf32 procedure) -(string->utf8 procedure) -(string-append procedure) -(string-ci? procedure) -(string-ci>=? procedure) -(string-ci-hash procedure) -(string-copy procedure) -(string-copy! procedure) -(string-downcase procedure) -(string-fill! procedure) -(string-foldcase procedure) -(string-for-each procedure) -(string-hash procedure) -(string-length procedure) -(string-normalize-nfc procedure) -(string-normalize-nfd procedure) -(string-normalize-nfkc procedure) -(string-normalize-nfkd procedure) -(string-ref procedure) -(string-set! procedure) -(string-titlecase procedure) -(string-truncate! procedure) -(string-upcase procedure) -(strip-fasl-file procedure) -(sub1 procedure) -(subst procedure) -(subst! procedure) -(substq procedure) -(substq! procedure) -(substring procedure) -(substring-fill! procedure) -(substv procedure) -(substv! procedure) -(subtract-duration procedure) -(subtract-duration! procedure) -(symbol? procedure) -(symbol=? procedure) -(symbol->string procedure) -(symbol-hash procedure) -(symbol-hashtable? procedure) -(symbol-hashtable-cell procedure) -(symbol-hashtable-contains? procedure) -(symbol-hashtable-delete! procedure) -(symbol-hashtable-ref procedure) -(symbol-hashtable-set! procedure) -(symbol-hashtable-update! procedure) -(syntax syntax) -(syntax->annotation procedure) -(syntax->datum procedure) -(syntax->list procedure) -(syntax->vector procedure) -(syntax-case syntax) -(syntax-error procedure) -(syntax-object->datum procedure) -(syntax-rules syntax) -(syntax-violation procedure) -(syntax-violation? procedure) -(syntax-violation-form procedure) -(syntax-violation-subform procedure) -(system procedure) -(tan procedure) -(tanh procedure) -(textual-port? procedure) -(textual-port-input-buffer procedure) -(textual-port-input-count procedure) -(textual-port-input-index procedure) -(textual-port-input-size procedure) -(textual-port-output-buffer procedure) -(textual-port-output-count procedure) -(textual-port-output-index procedure) -(textual-port-output-size procedure) -(thread? procedure) -(thread-condition? procedure) -(threaded? procedure) -(time syntax) -(time? procedure) -(time? procedure) -(time>=? procedure) -(time-difference procedure) -(time-difference! procedure) -(time-nanosecond procedure) -(time-second procedure) -(time-type procedure) -(time-utc->date procedure) -(top-level-bound? procedure) -(top-level-mutable? procedure) -(top-level-program syntax) -(top-level-syntax procedure) -(top-level-syntax? procedure) -(top-level-value procedure) -(trace syntax) -(trace-case-lambda syntax) -(trace-define syntax) -(trace-define-syntax syntax) -(trace-do syntax) -(trace-lambda syntax) -(trace-let syntax) -(transcoded-port procedure) -(transcoder? procedure) -(transcoder-codec procedure) -(transcoder-eol-style procedure) -(transcoder-error-handling-mode procedure) -(transcript-cafe procedure) -(transcript-off procedure) -(transcript-on procedure) -(truncate procedure) -(truncate-file procedure) -(truncate-port procedure) -(type-descriptor syntax) -(u8-list->bytevector procedure) -(uint-list->bytevector procedure) -(unbox procedure) -(undefined-violation? procedure) -(unget-char procedure) -(unget-u8 procedure) -(unless syntax) -(unlock-object procedure) -(unquote syntax) -(unquote-splicing syntax) -(unread-char procedure) -(unregister-guardian procedure) -(unsyntax syntax) -(unsyntax-splicing syntax) -(untrace syntax) -(utf16->string procedure) -(utf-16be-codec procedure) -(utf-16-codec procedure) -(utf-16le-codec procedure) -(utf32->string procedure) -(utf8->string procedure) -(utf-8-codec procedure) -(values procedure) -(variable syntax) -(vector procedure) -(vector? procedure) -(vector->immutable-vector procedure) -(vector->list procedure) -(vector-cas! procedure) -(vector-copy procedure) -(vector-fill! procedure) -(vector-for-each procedure) -(vector-length procedure) -(vector-map procedure) -(vector-ref procedure) -(vector-set! procedure) -(vector-set-fixnum! procedure) -(vector-sort procedure) -(vector-sort! procedure) -(verify-loadability procedure) -(violation? procedure) -(virtual-register procedure) -(virtual-register-count procedure) -(visit procedure) -(visit-compiled-from-port procedure) -(void procedure) -(warning procedure) -(warning? procedure) -(warningf procedure) -(weak-cons procedure) -(weak-pair? procedure) -(when syntax) -(who-condition? procedure) -(with syntax) -(with-cost-center procedure) -(with-exception-handler procedure) -(with-implicit syntax) -(with-input-from-file procedure) -(with-input-from-string procedure) -(with-interrupts-disabled syntax) -(with-mutex syntax) -(with-output-to-file procedure) -(with-output-to-string procedure) -(with-profile-tracker procedure) -(with-source-path procedure) -(with-syntax syntax) -(write procedure) -(write-char procedure) -(zero? procedure)))) +(- procedure) +($primitive syntax) +($system module) +(&assertion syntax) +(&condition syntax) +(&continuation syntax) +(&error syntax) +(&format syntax) +(&i/o syntax) +(&i/o-decoding syntax) +(&i/o-encoding syntax) +(&i/o-file-already-exists syntax) +(&i/o-file-does-not-exist syntax) +(&i/o-file-is-read-only syntax) +(&i/o-filename syntax) +(&i/o-file-protection syntax) +(&i/o-invalid-position syntax) +(&i/o-port syntax) +(&i/o-read syntax) +(&i/o-write syntax) +(&implementation-restriction syntax) +(&irritants syntax) +(&lexical syntax) +(&message syntax) +(&no-infinities syntax) +(&no-nans syntax) +(&non-continuable syntax) +(&serious syntax) +(&source syntax) +(&syntax syntax) +(&undefined syntax) +(&violation syntax) +(&warning syntax) +(&who syntax) +(* procedure) +(... syntax) +(/ procedure) +(_ syntax) +(+ procedure) +(+ procedure) +(< procedure) +(<= procedure) +(= procedure) +(=> syntax) +(> procedure) +(>= procedure) +; (1+ procedure) +(abort procedure-skipped) +(abort-handler thread-param) +(abs procedure) +(acos procedure) +(acosh procedure) +(add1 procedure) +(add-duration procedure) +(add-duration! procedure) +(add-prefix syntax) +(alias syntax) +(and syntax) +(andmap procedure) +(angle procedure) +(annotation? procedure) +(annotation-expression procedure) +(annotation-options procedure) +(annotation-option-set syntax) +(annotation-source procedure) +(annotation-stripped procedure) +(append procedure) +(append! procedure) +(apply procedure) +(apropos procedure) +(apropos-list procedure) +(ash procedure) +(asin procedure) +(asinh procedure) +(assert syntax) +(assertion-violation procedure) +(assertion-violation? procedure) +(assertion-violationf procedure) +(assoc procedure) +(assp procedure) +(assq procedure) +(assv procedure) +(atan procedure) +(atanh procedure) +(atom? procedure) +(base-exception-handler thread-param) +(begin syntax) +(bignum? procedure) +(binary-port? procedure) +(binary-port-input-buffer procedure) +(binary-port-input-count procedure) +(binary-port-input-index procedure) +(binary-port-input-size procedure) +(binary-port-output-buffer procedure) +(binary-port-output-count procedure) +(binary-port-output-index procedure) +(binary-port-output-size procedure) +(bitwise-and procedure) +(bitwise-arithmetic-shift procedure) +(bitwise-arithmetic-shift-left procedure) +(bitwise-arithmetic-shift-right procedure) +(bitwise-bit-count procedure) +(bitwise-bit-field procedure) +(bitwise-bit-set? procedure) +(bitwise-copy-bit procedure) +(bitwise-copy-bit-field procedure) +(bitwise-first-bit-set procedure) +(bitwise-if procedure) +(bitwise-ior procedure) +(bitwise-length procedure) +(bitwise-not procedure) +(bitwise-reverse-bit-field procedure) +(bitwise-rotate-bit-field procedure) +(bitwise-xor procedure) +(block-read procedure) +(block-write procedure) +(boolean? procedure) +(boolean=? procedure) +(bound-identifier=? procedure) +(box procedure) +(box? procedure) +(box-cas! procedure) +(box-immutable procedure) +(break procedure) +(break-handler thread-param) +(buffer-mode syntax) +(buffer-mode? syntax) +(bwp-object? procedure) +(bytes-allocated procedure) +(bytes-deallocated procedure) +(bytevector procedure) +(bytevector? procedure) +(bytevector=? procedure) +(bytevector->immutable-bytevector procedure) +(bytevector->s8-list procedure) +(bytevector->sint-list procedure) +(bytevector->string procedure) +(bytevector->u8-list procedure) +(bytevector->uint-list procedure) +(bytevector-compress procedure) +(bytevector-copy procedure) +(bytevector-copy! procedure) +(bytevector-fill! procedure) +(bytevector-ieee-double-native-ref procedure) +(bytevector-ieee-double-native-set! procedure) +(bytevector-ieee-double-ref procedure) +(bytevector-ieee-double-set! procedure) +(bytevector-ieee-single-native-ref procedure) +(bytevector-ieee-single-native-set! procedure) +(bytevector-ieee-single-ref procedure) +(bytevector-ieee-single-set! procedure) +(bytevector-length procedure) +(bytevector-s16-native-ref procedure) +(bytevector-s16-native-set! procedure) +(bytevector-s16-ref procedure) +(bytevector-s16-set! procedure) +(bytevector-s24-ref procedure) +(bytevector-s24-set! procedure) +(bytevector-s32-native-ref procedure) +(bytevector-s32-native-set! procedure) +(bytevector-s32-ref procedure) +(bytevector-s32-set! procedure) +(bytevector-s40-ref procedure) +(bytevector-s40-set! procedure) +(bytevector-s48-ref procedure) +(bytevector-s48-set! procedure) +(bytevector-s56-ref procedure) +(bytevector-s56-set! procedure) +(bytevector-s64-native-ref procedure) +(bytevector-s64-native-set! procedure) +(bytevector-s64-ref procedure) +(bytevector-s64-set! procedure) +(bytevector-s8-ref procedure) +(bytevector-s8-set! procedure) +(bytevector-sint-ref procedure) +(bytevector-sint-set! procedure) +(bytevector-truncate! procedure) +(bytevector-u16-native-ref procedure) +(bytevector-u16-native-set! procedure) +(bytevector-u16-ref procedure) +(bytevector-u16-set! procedure) +(bytevector-u24-ref procedure) +(bytevector-u24-set! procedure) +(bytevector-u32-native-ref procedure) +(bytevector-u32-native-set! procedure) +(bytevector-u32-ref procedure) +(bytevector-u32-set! procedure) +(bytevector-u40-ref procedure) +(bytevector-u40-set! procedure) +(bytevector-u48-ref procedure) +(bytevector-u48-set! procedure) +(bytevector-u56-ref procedure) +(bytevector-u56-set! procedure) +(bytevector-u64-native-ref procedure) +(bytevector-u64-native-set! procedure) +(bytevector-u64-ref procedure) +(bytevector-u64-set! procedure) +(bytevector-u8-ref procedure) +(bytevector-u8-set! procedure) +(bytevector-uint-ref procedure) +(bytevector-uint-set! procedure) +(bytevector-uncompress procedure) +(caaaar procedure) +(caaadr procedure) +(caaar procedure) +(caadar procedure) +(caaddr procedure) +(caadr procedure) +(caar procedure) +(cadaar procedure) +(cadadr procedure) +(cadar procedure) +(caddar procedure) +(cadddr procedure) +(caddr procedure) +(cadr procedure) +(call/1cc procedure) +(call/cc procedure) +(call-with-bytevector-output-port procedure) +(call-with-current-continuation procedure) +(call-with-input-file procedure) +(call-with-output-file procedure) +(call-with-port procedure) +(call-with-string-output-port procedure) +(call-with-values procedure) +(car procedure) +(case syntax) +(case-lambda syntax) +(case-sensitive thread-param) +(cd global-param) +(cdaaar procedure) +(cdaadr procedure) +(cdaar procedure) +(cdadar procedure) +(cdaddr procedure) +(cdadr procedure) +(cdar procedure) +(cddaar procedure) +(cddadr procedure) +(cddar procedure) +(cdddar procedure) +(cddddr procedure) +(cdddr procedure) +(cddr procedure) +(cdr procedure) +(ceiling procedure) +(cfl- procedure) +(cfl* procedure) +(cfl/ procedure) +(cfl+ procedure) +(cfl= procedure) +(cfl-conjugate procedure) +(cfl-imag-part procedure) +(cfl-magnitude-squared procedure) +(cflonum? procedure) +(cfl-real-part procedure) +(char- procedure) +(char? procedure) +(char? procedure) +(char>=? procedure) +(char->integer procedure) +(char-alphabetic? procedure) +(char-ci? procedure) +(char-ci>=? procedure) +(char-downcase procedure) +(char-foldcase procedure) +(char-general-category procedure) +(char-lower-case? procedure) +(char-name procedure) +(char-numeric? procedure) +(char-ready? procedure) +(char-titlecase procedure) +(char-title-case? procedure) +(char-upcase procedure) +(char-upper-case? procedure) +(char-whitespace? procedure) +(chmod procedure) +(clear-input-port procedure) +(clear-output-port procedure) +(close-input-port procedure) +(close-output-port procedure) +(close-port procedure) +(collect procedure) +(collect-generation-radix global-param) +(collections procedure) +(collect-maximum-generation global-param) +(collect-notify global-param) +(collect-rendezvous procedure) +(collect-request-handler global-param) +(collect-trip-bytes global-param) +(command-line global-param) +(command-line-arguments global-param) +(commonization-level thread-param) +(compile procedure) +(compile-file procedure) +(compile-file-message thread-param) +(compile-imported-libraries thread-param) +(compile-interpret-simple thread-param) +(compile-library procedure) +(compile-library-handler thread-param) +(compile-port procedure) +(compile-profile thread-param) +(compile-program procedure) +(compile-program-handler thread-param) +(compile-script procedure) +(compile-time-value? procedure) +(compile-time-value-value procedure) +(compile-to-file procedure) +(compile-to-port procedure) +(compile-whole-library procedure) +(compile-whole-program procedure) +(complex? procedure) +(compress-format thread-param) +(compress-level thread-param) +(compute-composition procedure) +(compute-size procedure) +(concatenate-object-files procedure) +(cond syntax) +(condition procedure) +(condition? procedure) +(condition-accessor procedure) +(condition-broadcast procedure) +(condition-continuation procedure) +(condition-irritants procedure) +(condition-message procedure) +(condition-name procedure) +(condition-predicate procedure) +(condition-signal procedure) +(condition-wait procedure) +(condition-who procedure) +(conjugate procedure) +(cons procedure) +(cons* procedure) +(console-error-port thread-param) +(console-input-port global-param) +(console-output-port global-param) +(constructor syntax) +(continuation-condition? procedure) +(copy-environment procedure) +(copy-time procedure) +(cos procedure) +(cosh procedure) +(cost-center? procedure) +(cost-center-allocation-count procedure) +(cost-center-instruction-count procedure) +(cost-center-time procedure) +(cp0-effort-limit thread-param) +(cp0-outer-unroll-limit thread-param) +(cp0-score-limit thread-param) +(cpu-time procedure) +(create-exception-state procedure) +(critical-section syntax) +(csv7:record-field-accessible? procedure) +(csv7:record-field-accessor procedure) +(csv7:record-field-mutable? procedure) +(csv7:record-field-mutator procedure) +(csv7:record-type-descriptor procedure) +(csv7:record-type-field-decls procedure) +(csv7:record-type-field-names procedure) +(csv7:record-type-name procedure) +(csv7:record-type-symbol procedure) +(current-date procedure) +(current-directory global-param) +(current-error-port procedure) +(current-eval thread-param) +(current-exception-state thread-param) +(current-expand thread-param) +(current-input-port procedure) +(current-locate-source-object-source thread-param) +(current-make-source-object thread-param) +(current-memory-bytes procedure) +(current-output-port procedure) +(current-time procedure) +(current-transcoder thread-param) +(custom-port-buffer-size thread-param) +(date? procedure) +(date->time-utc procedure) +(date-and-time procedure) +(date-day procedure) +(date-dst? procedure) +(date-hour procedure) +(date-minute procedure) +(date-month procedure) +(date-nanosecond procedure) +(date-second procedure) +(date-week-day procedure) +(date-year procedure) +(date-year-day procedure) +(date-zone-name procedure) +(date-zone-offset procedure) +(datum syntax) +(datum->syntax procedure) +(datum->syntax-object procedure) +(debug procedure) +(debug-condition thread-param) +(debug-level thread-param) +(debug-on-exception global-param) +(decode-float procedure) +(default-exception-handler procedure) +(default-library-search-handler procedure) +(default-prompt-and-read procedure) +(default-record-equal-procedure thread-param) +(default-record-hash-procedure thread-param) +(define syntax) +(define-condition-type syntax) +(define-enumeration syntax) +(define-ftype syntax) +(define-property syntax) +(define-record syntax) +(define-record-type syntax) +(define-structure syntax) +(define-syntax syntax) +(define-top-level-syntax procedure) +(define-top-level-value procedure) +(define-values syntax) +(delay syntax) +(delete-directory procedure) +(delete-file procedure) +(denominator procedure) +(directory-list procedure) +(directory-separator procedure) +(directory-separator? procedure) +(disable-interrupts procedure) +(display procedure) +(display-condition procedure) +(display-statistics procedure) +(display-string procedure) +(div procedure) +(div0 procedure) +(div0-and-mod0 procedure) +(div-and-mod procedure) +(do syntax) +(drop-prefix syntax) +(dynamic-wind procedure) +(else syntax) +(enable-cross-library-optimization thread-param) +(enable-interrupts procedure) +(enable-object-counts global-param) +(endianness syntax) +(engine-block procedure) +(engine-return procedure) +(enumerate procedure) +(enum-set? procedure) +(enum-set=? procedure) +(enum-set->list procedure) +(enum-set-complement procedure) +(enum-set-constructor procedure) +(enum-set-difference procedure) +(enum-set-indexer procedure) +(enum-set-intersection procedure) +(enum-set-member? procedure) +(enum-set-projection procedure) +(enum-set-subset? procedure) +(enum-set-union procedure) +(enum-set-universe procedure) +(environment procedure) +(environment? procedure) +(environment-mutable? procedure) +(environment-symbols procedure) +(eof-object procedure) +(eof-object? procedure) +(eol-style syntax) +(ephemeron-cons procedure) +(ephemeron-pair? procedure) +(eq? procedure) +(eq-hashtable? procedure) +(eq-hashtable-cell procedure) +(eq-hashtable-contains? procedure) +(eq-hashtable-delete! procedure) +(eq-hashtable-ephemeron? procedure) +(eq-hashtable-ref procedure) +(eq-hashtable-set! procedure) +(eq-hashtable-update! procedure) +(eq-hashtable-weak? procedure) +(equal? procedure) +(equal-hash procedure) +(eqv? procedure) +(error procedure) +(error? procedure) +(errorf procedure) +(error-handling-mode syntax) +(eval procedure) +(eval-syntax-expanders-when thread-param) +(eval-when syntax) +(even? procedure) +(exact procedure) +(exact? procedure) +(exact->inexact procedure) +(exact-integer-sqrt procedure) +(except syntax) +(exclusive-cond syntax) +(exists procedure) +(exit procedure) +(exit-handler thread-param) +(exp procedure) +(expand procedure) +(expand/optimize procedure) +(expand/optimize-output thread-param) +(expand-output thread-param) +(export syntax) +(expression-editor module) +(expt procedure) +(expt-mod procedure) +(extend-syntax syntax) +(fasl-compressed thread-param) +(fasl-file procedure) +(fasl-read procedure) +(fasl-strip-options syntax) +(fasl-write procedure) +(fields syntax) +(file-access-time procedure) +(file-buffer-size thread-param) +(file-change-time procedure) +(file-directory? procedure) +(file-exists? procedure) +(file-length procedure) +(file-modification-time procedure) +(file-options syntax) +(file-port? procedure) +(file-position procedure) +(file-regular? procedure) +(file-symbolic-link? procedure) +(filter procedure) +(find procedure) +(finite? procedure) +(fixnum? procedure) +(fixnum->flonum procedure) +(fixnum-width procedure) +(fl- procedure) +(fl* procedure) +(fl/ procedure) +(fl+ procedure) +(fl< procedure) +(fl procedure) +(fl>? procedure) +(fl>= procedure) +(fl>=? procedure) +(flabs procedure) +(flacos procedure) +(flasin procedure) +(flatan procedure) +(flceiling procedure) +(flcos procedure) +(fldenominator procedure) +(fldiv procedure) +(fldiv0 procedure) +(fldiv0-and-mod0 procedure) +(fldiv-and-mod procedure) +(fleven? procedure) +(flexp procedure) +(flexpt procedure) +(flfinite? procedure) +(flfloor procedure) +(flinfinite? procedure) +(flinteger? procedure) +(fllog procedure) +(fllp procedure) +(fl-make-rectangular procedure) +(flmax procedure) +(flmin procedure) +(flmod procedure) +(flmod0 procedure) +(flnan? procedure) +(flnegative? procedure) +(flnonnegative? procedure) +(flnonpositive? procedure) +(flnumerator procedure) +(flodd? procedure) +(flonum? procedure) +(flonum->fixnum procedure) +(floor procedure) +(flpositive? procedure) +(flround procedure) +(flsin procedure) +(flsqrt procedure) +(fltan procedure) +(fltruncate procedure) +(fluid-let syntax) +(fluid-let-syntax syntax) +(flush-output-port procedure) +(flzero? procedure) +(fold-left procedure) +(fold-right procedure) +(for-all procedure) +(force procedure) +(for-each procedure) +(foreign-address-name procedure) +(foreign-alloc procedure) +(foreign-callable syntax) +(foreign-callable-code-object procedure) +(foreign-callable-entry-point procedure) +(foreign-entry procedure) +(foreign-entry? procedure) +(foreign-free procedure) +(foreign-procedure syntax) +(foreign-ref procedure) +(foreign-set! procedure) +(foreign-sizeof procedure) +(fork-thread procedure) +(format procedure) +(format-condition? procedure) +(fprintf procedure) +(free-identifier=? procedure) +(fresh-line procedure) +(ftype-&ref syntax) +(ftype-guardian syntax) +(ftype-init-lock! syntax) +(ftype-lock! syntax) +(ftype-locked-decr! syntax) +(ftype-locked-incr! syntax) +(ftype-pointer? syntax) +(ftype-pointer=? syntax) +(ftype-pointer->sexpr procedure) +(ftype-pointer-address procedure) +(ftype-pointer-ftype procedure) +(ftype-pointer-null? syntax) +(ftype-ref syntax) +(ftype-set! syntax) +(ftype-sizeof syntax) +(ftype-spin-lock! syntax) +(ftype-unlock! syntax) +(fx- procedure) +(fx* procedure) +(fx*/carry procedure) +(fx/ procedure) +(fx-/carry procedure) +(fx+ procedure) +(fx+/carry procedure) +(fx< procedure) +(fx procedure) +(fx>? procedure) +(fx>= procedure) +(fx>=? procedure) +(fx1- procedure) +(fx1+ procedure) +(fxabs procedure) +(fxand procedure) +(fxarithmetic-shift procedure) +(fxarithmetic-shift-left procedure) +(fxarithmetic-shift-right procedure) +(fxbit-count procedure) +(fxbit-field procedure) +(fxbit-set? procedure) +(fxcopy-bit procedure) +(fxcopy-bit-field procedure) +(fxdiv procedure) +(fxdiv0 procedure) +(fxdiv0-and-mod0 procedure) +(fxdiv-and-mod procedure) +(fxeven? procedure) +(fxfirst-bit-set procedure) +(fxif procedure) +(fxior procedure) +(fxlength procedure) +(fxlogand procedure) +(fxlogbit? procedure) +(fxlogbit0 procedure) +(fxlogbit1 procedure) +(fxlogior procedure) +(fxlognot procedure) +(fxlogor procedure) +(fxlogtest procedure) +(fxlogxor procedure) +(fxmax procedure) +(fxmin procedure) +(fxmod procedure) +(fxmod0 procedure) +(fxmodulo procedure) +(fxnegative? procedure) +(fxnonnegative? procedure) +(fxnonpositive? procedure) +(fxnot procedure) +(fxodd? procedure) +(fxpositive? procedure) +(fxquotient procedure) +(fxremainder procedure) +(fxreverse-bit-field procedure) +(fxrotate-bit-field procedure) +(fxsll procedure) +(fxsra procedure) +(fxsrl procedure) +(fxvector procedure) +(fxvector? procedure) +(fxvector->immutable-fxvector procedure) +(fxvector->list procedure) +(fxvector-copy procedure) +(fxvector-fill! procedure) +(fxvector-length procedure) +(fxvector-ref procedure) +(fxvector-set! procedure) +(fxxor procedure) +(fxzero? procedure) +(gcd procedure) +(generate-allocation-counts thread-param) +(generate-covin-files thread-param) +(generate-inspector-information thread-param) +(generate-instruction-counts thread-param) +(generate-interrupt-trap thread-param) +(generate-procedure-source-information thread-param) +(generate-profile-forms thread-param) +(generate-temporaries procedure) +(generate-wpo-files thread-param) +(gensym procedure) +(gensym? procedure) +(gensym->unique-string procedure) +(gensym-count thread-param) +(gensym-prefix thread-param) +(get-bytevector-all procedure) +(get-bytevector-n procedure) +(get-bytevector-n! procedure) +(get-bytevector-some procedure) +(get-bytevector-some! procedure) +(get-char procedure) +(get-datum procedure) +(get-datum/annotations procedure) +(getenv procedure) +(get-hash-table procedure) +(get-line procedure) +(get-mode procedure) +(get-output-string procedure) +(get-process-id procedure) +(getprop procedure) +(get-source-table! procedure) +(get-string-all procedure) +(get-string-n procedure) +(get-string-n! procedure) +(get-string-some procedure) +(get-string-some! procedure) +(get-thread-id procedure) +(get-u8 procedure) +(greatest-fixnum procedure) +(guard syntax) +(guardian? procedure) +(hashtable? procedure) +(hash-table? procedure) +(hashtable-cell procedure) +(hashtable-cells procedure) +(hashtable-clear! procedure) +(hashtable-contains? procedure) +(hashtable-copy procedure) +(hashtable-delete! procedure) +(hashtable-entries procedure) +(hashtable-ephemeron? procedure) +(hashtable-equivalence-function procedure) +(hash-table-for-each procedure) +(hashtable-hash-function procedure) +(hashtable-keys procedure) +(hash-table-map procedure) +(hashtable-mutable? procedure) +(hashtable-ref procedure) +(hashtable-set! procedure) +(hashtable-size procedure) +(hashtable-update! procedure) +(hashtable-values procedure) +(hashtable-weak? procedure) +(heap-reserve-ratio global-param) +(i/o-decoding-error? procedure) +(i/o-encoding-error? procedure) +(i/o-encoding-error-char procedure) +(i/o-error? procedure) +(i/o-error-filename procedure) +(i/o-error-port procedure) +(i/o-error-position procedure) +(i/o-file-already-exists-error? procedure) +(i/o-file-does-not-exist-error? procedure) +(i/o-file-is-read-only-error? procedure) +(i/o-filename-error? procedure) +(i/o-file-protection-error? procedure) +(i/o-invalid-position-error? procedure) +(i/o-port-error? procedure) +(i/o-read-error? procedure) +(i/o-write-error? procedure) +(iconv-codec procedure) +(identifier? procedure) +(identifier-syntax syntax) +(ieee module) +(ieee-environment procedure) +(if syntax) +(imag-part procedure) +(immutable syntax) +(immutable-box? procedure) +(immutable-bytevector? procedure) +(immutable-fxvector? procedure) +(immutable-string? procedure) +(immutable-vector? procedure) +(implementation-restriction-violation? procedure) +(implicit-exports syntax) +(import syntax) +(import-notify thread-param) +(import-only syntax) +(include syntax) +(indirect-export syntax) +(inexact procedure) +(inexact? procedure) +(inexact->exact procedure) +(infinite? procedure) +(initial-bytes-allocated procedure) +(input-port? procedure) +(input-port-ready? procedure) +(inspect procedure) +(inspect/object procedure) +(integer? procedure) +(integer->char procedure) +(integer-length procedure) +(integer-valued? procedure) +(interaction-environment thread-param) +(interactive? procedure) +(internal-defines-as-letrec* thread-param) +(interpret procedure) +(invoke-library procedure) +(iota procedure) +(irritants-condition? procedure) +(isqrt procedure) +(keyboard-interrupt-handler thread-param) +(lambda syntax) +(last-pair procedure) +(latin-1-codec procedure) +(lcm procedure) +(least-fixnum procedure) +(length procedure) +(let syntax) +(let* syntax) +(let*-values syntax) +(letrec syntax) +(letrec* syntax) +(letrec-syntax syntax) +(let-syntax syntax) +(let-values syntax) +(lexical-violation? procedure) +(library syntax) +(library-directories thread-param) +(library-exports procedure) +(library-extensions thread-param) +(library-list procedure) +(library-object-filename procedure) +(library-requirements procedure) +(library-requirements-options syntax) +(library-search-handler thread-param) +(library-version procedure) +(list procedure) +(list* procedure) +(list? procedure) +(list->fxvector procedure) +(list->string procedure) +(list->vector procedure) +(list-copy procedure) +(list-head procedure) +(list-ref procedure) +(list-sort procedure) +(list-tail procedure) +(literal-identifier=? procedure) +(load procedure) +(load-compiled-from-port procedure) +(load-library procedure) +(load-program procedure) +(load-shared-object procedure) +(locate-source procedure) +(locate-source-object-source procedure) +(locked-object? procedure) +(lock-object procedure) +(log procedure) +(logand procedure) +(logbit? procedure) +(logbit0 procedure) +(logbit1 procedure) +(logior procedure) +(lognot procedure) +(logor procedure) +(logtest procedure) +(logxor procedure) +(lookahead-char procedure) +(lookahead-u8 procedure) +(machine-type procedure) +(magnitude procedure) +(magnitude-squared procedure) +(make-annotation procedure) +(make-assertion-violation procedure) +(make-boot-file procedure) +(make-boot-header procedure) +(make-bytevector procedure) +(make-compile-time-value procedure) +(make-condition procedure) +(make-continuation-condition procedure) +(make-cost-center procedure) +(make-custom-binary-input/output-port procedure) +(make-custom-binary-input-port procedure) +(make-custom-binary-output-port procedure) +(make-custom-textual-input/output-port procedure) +(make-custom-textual-input-port procedure) +(make-custom-textual-output-port procedure) +(make-date procedure) +(make-engine procedure) +(make-enumeration procedure) +(make-ephemeron-eq-hashtable procedure) +(make-ephemeron-eqv-hashtable procedure) +(make-eq-hashtable procedure) +(make-eqv-hashtable procedure) +(make-error procedure) +(make-format-condition procedure) +(make-ftype-pointer syntax) +(make-fxvector procedure) +(make-guardian procedure) +(make-hashtable procedure) +(make-hash-table procedure) +(make-i/o-decoding-error procedure) +(make-i/o-encoding-error procedure) +(make-i/o-error procedure) +(make-i/o-file-already-exists-error procedure) +(make-i/o-file-does-not-exist-error procedure) +(make-i/o-file-is-read-only-error procedure) +(make-i/o-filename-error procedure) +(make-i/o-file-protection-error procedure) +(make-i/o-invalid-position-error procedure) +(make-i/o-port-error procedure) +(make-i/o-read-error procedure) +(make-i/o-write-error procedure) +(make-implementation-restriction-violation procedure) +(make-input/output-port procedure) +(make-input-port procedure) +(make-irritants-condition procedure) +(make-lexical-violation procedure) +(make-list procedure) +(make-message-condition procedure) +(make-mutex procedure) +(make-no-infinities-violation procedure) +(make-no-nans-violation procedure) +(make-non-continuable-violation procedure) +(make-object-finder procedure) +(make-output-port procedure) +(make-parameter procedure) +(make-polar procedure) +(make-record-constructor-descriptor procedure) +(make-record-type procedure) +(make-record-type-descriptor procedure) +(make-rectangular procedure) +(make-serious-condition procedure) +(make-source-condition procedure) +(make-source-file-descriptor procedure) +(make-source-object procedure) +(make-source-table procedure) +(make-sstats procedure) +(make-string procedure) +(make-syntax-violation procedure) +(make-thread-parameter procedure) +(make-time procedure) +(make-transcoder procedure) +(make-undefined-violation procedure) +(make-variable-transformer procedure) +(make-vector procedure) +(make-violation procedure) +(make-warning procedure) +(make-weak-eq-hashtable procedure) +(make-weak-eqv-hashtable procedure) +(make-who-condition procedure) +(map procedure) +(mark-port-closed! procedure) +(max procedure) +(maximum-memory-bytes procedure) +(maybe-compile-file procedure) +(maybe-compile-library procedure) +(maybe-compile-program procedure) +(member procedure) +(memp procedure) +(memq procedure) +(memv procedure) +(merge procedure) +(merge! procedure) +(message-condition? procedure) +(meta syntax) +(meta-cond syntax) +(min procedure) +(mkdir procedure) +(mod procedure) +(mod0 procedure) +(module syntax) +(modulo procedure) +(most-negative-fixnum procedure) +(most-positive-fixnum procedure) +(mutable syntax) +(mutable-box? procedure) +(mutable-bytevector? procedure) +(mutable-fxvector? procedure) +(mutable-string? procedure) +(mutable-vector? procedure) +(mutex? procedure) +(mutex-acquire procedure) +(mutex-name procedure) +(mutex-release procedure) +(nan? procedure) +(native-endianness procedure) +(native-eol-style procedure) +(native-transcoder procedure) +(negative? procedure) +(new-cafe procedure) +(newline procedure) +(no-infinities-violation? procedure) +(no-nans-violation? procedure) +(non-continuable-violation? procedure) +(nongenerative syntax) +(nonnegative? procedure) +(nonpositive? procedure) +(not procedure) +(null? procedure) +(null-environment procedure) +(number? procedure) +(number->string procedure) +(numerator procedure) +(object-counts procedure) +(oblist procedure) +(odd? procedure) +(only syntax) +(opaque syntax) +(open-bytevector-input-port procedure) +(open-bytevector-output-port procedure) +(open-fd-input/output-port procedure) +(open-fd-input-port procedure) +(open-fd-output-port procedure) +(open-file-input/output-port procedure) +(open-file-input-port procedure) +(open-file-output-port procedure) +(open-input-file procedure) +(open-input-output-file procedure) +(open-input-string procedure) +(open-output-file procedure) +(open-output-string procedure) +(open-process-ports procedure) +(open-source-file procedure) +(open-string-input-port procedure) +(open-string-output-port procedure) +(optimize-level thread-param) +(or syntax) +(ormap procedure) +(output-port? procedure) +(output-port-buffer-mode procedure) +(pair? procedure) +(parameterize syntax) +(parent syntax) +(parent-rtd syntax) +(pariah syntax) +(partition procedure) +(path-absolute? procedure) +(path-extension procedure) +(path-first procedure) +(path-last procedure) +(path-parent procedure) +(path-rest procedure) +(path-root procedure) +(peek-char procedure) +(petite? procedure) +(port? procedure) +(port-bol? procedure) +(port-closed? procedure) +(port-eof? procedure) +(port-file-compressed! procedure) +(port-file-descriptor procedure) +(port-handler procedure) +(port-has-port-length? procedure) +(port-has-port-nonblocking?? procedure) +(port-has-port-position? procedure) +(port-has-set-port-length!? procedure) +(port-has-set-port-nonblocking!? procedure) +(port-has-set-port-position!? procedure) +(port-input-buffer procedure) +(port-input-count procedure) +(port-input-empty? procedure) +(port-input-index procedure) +(port-input-size procedure) +(port-length procedure) +(port-name procedure) +(port-nonblocking? procedure) +(port-output-buffer procedure) +(port-output-count procedure) +(port-output-full? procedure) +(port-output-index procedure) +(port-output-size procedure) +(port-position procedure) +(port-transcoder procedure) +(positive? procedure) +(predicate syntax) +(prefix syntax) +(pretty-file procedure) +(pretty-format procedure) +(pretty-initial-indent thread-param) +(pretty-line-length thread-param) +(pretty-maximum-lines thread-param) +(pretty-one-line-limit thread-param) +(pretty-print procedure) +(pretty-standard-indent thread-param) +(print-brackets thread-param) +(print-char-name thread-param) +(print-extended-identifiers thread-param) +(printf procedure) +(print-gensym thread-param) +(print-graph thread-param) +(print-length thread-param) +(print-level thread-param) +(print-precision thread-param) +(print-radix thread-param) +(print-record thread-param) +(print-unicode thread-param) +(print-vector-length thread-param) +(procedure? procedure) +(procedure-arity-mask procedure) +(process procedure) +(profile syntax) +(profile-clear procedure) +(profile-clear-database procedure) +(profile-dump procedure) +(profile-dump-data procedure) +(profile-dump-html procedure) +(profile-dump-list procedure) +(profile-line-number-color thread-param) +(profile-load-data procedure) +(profile-palette thread-param) +(profile-query-weight procedure) +(profile-release-counters procedure) +(property-list procedure) +(protocol syntax) +(put-bytevector procedure) +(put-bytevector-some procedure) +(put-char procedure) +(put-datum procedure) +(putenv procedure) +(put-hash-table! procedure) +(putprop procedure) +(put-source-table procedure) +(put-string procedure) +(put-string-some procedure) +(put-u8 procedure) +(quasiquote syntax) +(quasisyntax syntax) +(quote syntax) +(quotient procedure) +(r5rs module) +(r5rs-syntax module) +(r6rs:< procedure) +(r6rs:<= procedure) +(r6rs:= procedure) +(r6rs:> procedure) +(r6rs:>= procedure) +(r6rs:call-with-input-file procedure) +(r6rs:call-with-output-file procedure) +(r6rs:case procedure) +(r6rs:char? procedure) +(r6rs:char>=? procedure) +(r6rs:char-ci? procedure) +(r6rs:char-ci>=? procedure) +(r6rs:command-line procedure) +(r6rs:current-error-port procedure) +(r6rs:current-input-port procedure) +(r6rs:current-output-port procedure) +(r6rs:delete-file procedure) +(r6rs:dynamic-wind procedure) +(r6rs:eval procedure) +(r6rs:exit procedure) +(r6rs:file-exists? procedure) +(r6rs:flush-output-port procedure) +(r6rs:fx- procedure) +(r6rs:fx* procedure) +(r6rs:fx+ procedure) +(r6rs:hashtable-entries procedure) +(r6rs:hashtable-keys procedure) +(r6rs:number->string procedure) +(r6rs:open-input-file procedure) +(r6rs:open-output-file procedure) +(r6rs:record? procedure) +(r6rs:record-constructor procedure) +(r6rs:standard-error-port procedure) +(r6rs:standard-input-port procedure) +(r6rs:standard-output-port procedure) +(r6rs:string? procedure) +(r6rs:string>=? procedure) +(r6rs:string->number procedure) +(r6rs:string-ci? procedure) +(r6rs:string-ci>=? procedure) +(r6rs:syntax-rules procedure) +(r6rs:utf-16-codec procedure) +(r6rs:with-input-from-file procedure) +(r6rs:with-output-to-file procedure) +(raise procedure) +(raise-continuable procedure) +(random procedure) +(random-seed thread-param) +(rational? procedure) +(rationalize procedure) +(rational-valued? procedure) +(ratnum? procedure) +(read procedure) +(read-char procedure) +(read-token procedure) +(real? procedure) +(real->flonum procedure) +(real-part procedure) +(real-time procedure) +(real-valued? procedure) +(rec syntax) +(record? procedure) +(record-accessor procedure) +(record-case syntax) +(record-constructor procedure) +(record-constructor-descriptor syntax) +(record-constructor-descriptor? procedure) +(record-equal-procedure procedure) +(record-field-mutable? procedure) +(record-hash-procedure procedure) +(record-mutator procedure) +(record-predicate procedure) +(record-reader procedure) +(record-rtd procedure) +(record-type-descriptor procedure) +(record-type-descriptor? procedure) +(record-type-equal-procedure procedure) +(record-type-field-names procedure) +(record-type-generative? procedure) +(record-type-hash-procedure procedure) +(record-type-name procedure) +(record-type-opaque? procedure) +(record-type-parent procedure) +(record-type-sealed? procedure) +(record-type-uid procedure) +(record-writer procedure) +(register-signal-handler procedure) +(release-minimum-generation global-param) +(remainder procedure) +(remove procedure) +(remove! procedure) +(remove-foreign-entry procedure) +(remove-hash-table! procedure) +(remp procedure) +(remprop procedure) +(remq procedure) +(remq! procedure) +(remv procedure) +(remv! procedure) +(rename syntax) +(rename-file procedure) +(require-nongenerative-clause thread-param) +(reset procedure) +(reset-cost-center! procedure) +(reset-handler thread-param) +(reset-maximum-memory-bytes! procedure) +(reverse procedure) +(reverse! procedure) +(revisit procedure) +(revisit-compiled-from-port procedure) +(round procedure) +(run-cp0 thread-param) +(s8-list->bytevector procedure) +(sc-expand procedure) +(scheme module) +(scheme-environment procedure) +(scheme-program global-param) +(scheme-report-environment procedure) +(scheme-script global-param) +(scheme-start global-param) +(scheme-version procedure) +(scheme-version-number procedure) +(sealed syntax) +(self-evaluating-vectors thread-param) +(serious-condition? procedure) +(set! syntax) +(set-binary-port-input-buffer! procedure) +(set-binary-port-input-index! procedure) +(set-binary-port-input-size! procedure) +(set-binary-port-output-buffer! procedure) +(set-binary-port-output-index! procedure) +(set-binary-port-output-size! procedure) +(set-box! procedure) +(set-car! procedure) +(set-cdr! procedure) +(set-port-bol! procedure) +(set-port-eof! procedure) +(set-port-input-buffer! procedure) +(set-port-input-index! procedure) +(set-port-input-size! procedure) +(set-port-length! procedure) +(set-port-name! procedure) +(set-port-nonblocking! procedure) +(set-port-output-buffer! procedure) +(set-port-output-index! procedure) +(set-port-output-size! procedure) +(set-port-position! procedure) +(set-sstats-bytes! procedure) +(set-sstats-cpu! procedure) +(set-sstats-gc-bytes! procedure) +(set-sstats-gc-count! procedure) +(set-sstats-gc-cpu! procedure) +(set-sstats-gc-real! procedure) +(set-sstats-real! procedure) +(set-textual-port-input-buffer! procedure) +(set-textual-port-input-index! procedure) +(set-textual-port-input-size! procedure) +(set-textual-port-output-buffer! procedure) +(set-textual-port-output-index! procedure) +(set-textual-port-output-size! procedure) +(set-time-nanosecond! procedure) +(set-timer procedure) +(set-time-second! procedure) +(set-time-type! procedure) +(set-top-level-value! procedure) +(set-virtual-register! procedure) +(simple-conditions procedure) +(sin procedure) +(sinh procedure) +(sint-list->bytevector procedure) +(sleep procedure) +(sort procedure) +(sort! procedure) +(source-condition? procedure) +(source-condition-form procedure) +(source-directories global-param) +(source-file-descriptor procedure) +(source-file-descriptor? procedure) +(source-file-descriptor-checksum procedure) +(source-file-descriptor-path procedure) +(source-object? procedure) +(source-object-bfp procedure) +(source-object-column procedure) +(source-object-efp procedure) +(source-object-line procedure) +(source-object-sfd procedure) +(source-table? procedure) +(source-table-cell procedure) +(source-table-contains? procedure) +(source-table-delete! procedure) +(source-table-dump procedure) +(source-table-ref procedure) +(source-table-set! procedure) +(source-table-size procedure) +(sqrt procedure) +(sstats? procedure) +(sstats-bytes procedure) +(sstats-cpu procedure) +(sstats-difference procedure) +(sstats-gc-bytes procedure) +(sstats-gc-count procedure) +(sstats-gc-cpu procedure) +(sstats-gc-real procedure) +(sstats-print procedure) +(sstats-real procedure) +(standard-error-port procedure) +(standard-input-port procedure) +(standard-output-port procedure) +(statistics procedure) +(string procedure) +(string? procedure) +(string? procedure) +(string>=? procedure) +(string->bytevector procedure) +(string->immutable-string procedure) +(string->list procedure) +(string->number procedure) +(string->symbol procedure) +(string->utf16 procedure) +(string->utf32 procedure) +(string->utf8 procedure) +(string-append procedure) +(string-ci? procedure) +(string-ci>=? procedure) +(string-ci-hash procedure) +(string-copy procedure) +(string-copy! procedure) +(string-downcase procedure) +(string-fill! procedure) +(string-foldcase procedure) +(string-for-each procedure) +(string-hash procedure) +(string-length procedure) +(string-normalize-nfc procedure) +(string-normalize-nfd procedure) +(string-normalize-nfkc procedure) +(string-normalize-nfkd procedure) +(string-ref procedure) +(string-set! procedure) +(string-titlecase procedure) +(string-truncate! procedure) +(string-upcase procedure) +(strip-fasl-file procedure) +(sub1 procedure) +(subset-mode thread-param) +(subst procedure) +(subst! procedure) +(substq procedure) +(substq! procedure) +(substring procedure) +(substring-fill! procedure) +(substv procedure) +(substv! procedure) +(subtract-duration procedure) +(subtract-duration! procedure) +(suppress-greeting global-param) +(symbol? procedure) +(symbol=? procedure) +(symbol->string procedure) +(symbol-hash procedure) +(symbol-hashtable? procedure) +(symbol-hashtable-cell procedure) +(symbol-hashtable-contains? procedure) +(symbol-hashtable-delete! procedure) +(symbol-hashtable-ref procedure) +(symbol-hashtable-set! procedure) +(symbol-hashtable-update! procedure) +(syntax syntax) +(syntax->annotation procedure) +(syntax->datum procedure) +(syntax->list procedure) +(syntax->vector procedure) +(syntax-case syntax) +(syntax-error procedure) +(syntax-object->datum procedure) +(syntax-rules syntax) +(syntax-violation procedure) +(syntax-violation? procedure) +(syntax-violation-form procedure) +(syntax-violation-subform procedure) +(system procedure) +(tan procedure) +(tanh procedure) +(textual-port? procedure) +(textual-port-input-buffer procedure) +(textual-port-input-count procedure) +(textual-port-input-index procedure) +(textual-port-input-size procedure) +(textual-port-output-buffer procedure) +(textual-port-output-count procedure) +(textual-port-output-index procedure) +(textual-port-output-size procedure) +(thread? procedure) +(thread-condition? procedure) +(threaded? procedure) +(time syntax) +(time? procedure) +(time? procedure) +(time>=? procedure) +(time-difference procedure) +(time-difference! procedure) +(time-nanosecond procedure) +(timer-interrupt-handler thread-param) +(time-second procedure) +(time-type procedure) +(time-utc->date procedure) +(top-level-bound? procedure) +(top-level-mutable? procedure) +(top-level-program syntax) +(top-level-syntax procedure) +(top-level-syntax? procedure) +(top-level-value procedure) +(trace syntax) +(trace-case-lambda syntax) +(trace-define syntax) +(trace-define-syntax syntax) +(trace-do syntax) +(trace-lambda syntax) +(trace-let syntax) +(trace-output-port thread-param) +(trace-print thread-param) +(transcoded-port procedure) +(transcoder? procedure) +(transcoder-codec procedure) +(transcoder-eol-style procedure) +(transcoder-error-handling-mode procedure) +(transcript-cafe procedure) +(transcript-off procedure) +(transcript-on procedure) +(truncate procedure) +(truncate-file procedure) +(truncate-port procedure) +(type-descriptor syntax) +(u8-list->bytevector procedure) +(uint-list->bytevector procedure) +(unbox procedure) +(undefined-variable-warnings thread-param) +(undefined-violation? procedure) +(unget-char procedure) +(unget-u8 procedure) +(unless syntax) +(unlock-object procedure) +(unquote syntax) +(unquote-splicing syntax) +(unread-char procedure) +(unregister-guardian procedure) +(unsyntax syntax) +(unsyntax-splicing syntax) +(untrace syntax) +(utf16->string procedure) +(utf-16be-codec procedure) +(utf-16-codec procedure) +(utf-16le-codec procedure) +(utf32->string procedure) +(utf8->string procedure) +(utf-8-codec procedure) +(values procedure) +(vector procedure) +(vector? procedure) +(vector->immutable-vector procedure) +(vector->list procedure) +(vector-cas! procedure) +(vector-copy procedure) +(vector-fill! procedure) +(vector-for-each procedure) +(vector-length procedure) +(vector-map procedure) +(vector-ref procedure) +(vector-set! procedure) +(vector-set-fixnum! procedure) +(vector-sort procedure) +(vector-sort! procedure) +(verify-loadability procedure) +(violation? procedure) +(virtual-register procedure) +(virtual-register-count procedure) +(visit procedure) +(visit-compiled-from-port procedure) +(void procedure) +(waiter-prompt-and-read thread-param) +(waiter-prompt-string thread-param) +(waiter-write thread-param) +(warning procedure) +(warning? procedure) +(warningf procedure) +(weak-cons procedure) +(weak-pair? procedure) +(when syntax) +(who-condition? procedure) +(with-cost-center procedure) +(with-exception-handler procedure) +(with-implicit syntax) +(with-input-from-file procedure) +(with-input-from-string procedure) +(with-interrupts-disabled syntax) +(with-mutex syntax) +(with-output-to-file procedure) +(with-output-to-string procedure) +(with-profile-tracker procedure) +(with-source-path procedure) +(with-syntax syntax) +(write procedure) +(write-char procedure) +(zero? procedure)))) + +(define chezscheme (private-process '(chezscheme) '( +(- procedure) +($primitive syntax) +($system module) +(&assertion syntax) +(&condition syntax) +(&continuation syntax) +(&error syntax) +(&format syntax) +(&i/o syntax) +(&i/o-decoding syntax) +(&i/o-encoding syntax) +(&i/o-file-already-exists syntax) +(&i/o-file-does-not-exist syntax) +(&i/o-file-is-read-only syntax) +(&i/o-filename syntax) +(&i/o-file-protection syntax) +(&i/o-invalid-position syntax) +(&i/o-port syntax) +(&i/o-read syntax) +(&i/o-write syntax) +(&implementation-restriction syntax) +(&irritants syntax) +(&lexical syntax) +(&message syntax) +(&no-infinities syntax) +(&no-nans syntax) +(&non-continuable syntax) +(&serious syntax) +(&source syntax) +(&syntax syntax) +(&undefined syntax) +(&violation syntax) +(&warning syntax) +(&who syntax) +(* procedure) +(... syntax) +(/ procedure) +(_ syntax) +(+ procedure) +(< procedure) +(<= procedure) +(= procedure) +(=> syntax) +(> procedure) +(>= procedure) +; (1+ procedure) +(abort procedure-skipped) +(abort-handler thread-param) +(abs procedure) +(acos procedure) +(acosh procedure) +(add1 procedure) +(add-duration procedure) +(add-duration! procedure) +(add-prefix syntax) +(alias syntax) +(and syntax) +(andmap procedure) +(angle procedure) +(annotation? procedure) +(annotation-expression procedure) +(annotation-options procedure) +(annotation-option-set syntax) +(annotation-source procedure) +(annotation-stripped procedure) +(append procedure) +(append! procedure) +(apply procedure) +(apropos procedure) +(apropos-list procedure) +(ash procedure) +(asin procedure) +(asinh procedure) +(assert syntax) +(assertion-violation procedure) +(assertion-violation? procedure) +(assertion-violationf procedure) +(assoc procedure) +(assp procedure) +(assq procedure) +(assv procedure) +(atan procedure) +(atanh procedure) +(atom? procedure) +(base-exception-handler thread-param) +(begin syntax) +(bignum? procedure) +(binary-port? procedure) +(binary-port-input-buffer procedure) +(binary-port-input-count procedure) +(binary-port-input-index procedure) +(binary-port-input-size procedure) +(binary-port-output-buffer procedure) +(binary-port-output-count procedure) +(binary-port-output-index procedure) +(binary-port-output-size procedure) +(bitwise-and procedure) +(bitwise-arithmetic-shift procedure) +(bitwise-arithmetic-shift-left procedure) +(bitwise-arithmetic-shift-right procedure) +(bitwise-bit-count procedure) +(bitwise-bit-field procedure) +(bitwise-bit-set? procedure) +(bitwise-copy-bit procedure) +(bitwise-copy-bit-field procedure) +(bitwise-first-bit-set procedure) +(bitwise-if procedure) +(bitwise-ior procedure) +(bitwise-length procedure) +(bitwise-not procedure) +(bitwise-reverse-bit-field procedure) +(bitwise-rotate-bit-field procedure) +(bitwise-xor procedure) +(block-read procedure) +(block-write procedure) +(boolean? procedure) +(boolean=? procedure) +(bound-identifier=? procedure) +(box procedure) +(box? procedure) +(box-cas! procedure) +(box-immutable procedure) +(break procedure) +(break-handler thread-param) +(buffer-mode syntax) +(buffer-mode? syntax) +(bwp-object? procedure) +(bytes-allocated procedure) +(bytes-deallocated procedure) +(bytevector procedure) +(bytevector? procedure) +(bytevector=? procedure) +(bytevector->immutable-bytevector procedure) +(bytevector->s8-list procedure) +(bytevector->sint-list procedure) +(bytevector->string procedure) +(bytevector->u8-list procedure) +(bytevector->uint-list procedure) +(bytevector-compress procedure) +(bytevector-copy procedure) +(bytevector-copy! procedure) +(bytevector-fill! procedure) +(bytevector-ieee-double-native-ref procedure) +(bytevector-ieee-double-native-set! procedure) +(bytevector-ieee-double-ref procedure) +(bytevector-ieee-double-set! procedure) +(bytevector-ieee-single-native-ref procedure) +(bytevector-ieee-single-native-set! procedure) +(bytevector-ieee-single-ref procedure) +(bytevector-ieee-single-set! procedure) +(bytevector-length procedure) +(bytevector-s16-native-ref procedure) +(bytevector-s16-native-set! procedure) +(bytevector-s16-ref procedure) +(bytevector-s16-set! procedure) +(bytevector-s24-ref procedure) +(bytevector-s24-set! procedure) +(bytevector-s32-native-ref procedure) +(bytevector-s32-native-set! procedure) +(bytevector-s32-ref procedure) +(bytevector-s32-set! procedure) +(bytevector-s40-ref procedure) +(bytevector-s40-set! procedure) +(bytevector-s48-ref procedure) +(bytevector-s48-set! procedure) +(bytevector-s56-ref procedure) +(bytevector-s56-set! procedure) +(bytevector-s64-native-ref procedure) +(bytevector-s64-native-set! procedure) +(bytevector-s64-ref procedure) +(bytevector-s64-set! procedure) +(bytevector-s8-ref procedure) +(bytevector-s8-set! procedure) +(bytevector-sint-ref procedure) +(bytevector-sint-set! procedure) +(bytevector-truncate! procedure) +(bytevector-u16-native-ref procedure) +(bytevector-u16-native-set! procedure) +(bytevector-u16-ref procedure) +(bytevector-u16-set! procedure) +(bytevector-u24-ref procedure) +(bytevector-u24-set! procedure) +(bytevector-u32-native-ref procedure) +(bytevector-u32-native-set! procedure) +(bytevector-u32-ref procedure) +(bytevector-u32-set! procedure) +(bytevector-u40-ref procedure) +(bytevector-u40-set! procedure) +(bytevector-u48-ref procedure) +(bytevector-u48-set! procedure) +(bytevector-u56-ref procedure) +(bytevector-u56-set! procedure) +(bytevector-u64-native-ref procedure) +(bytevector-u64-native-set! procedure) +(bytevector-u64-ref procedure) +(bytevector-u64-set! procedure) +(bytevector-u8-ref procedure) +(bytevector-u8-set! procedure) +(bytevector-uint-ref procedure) +(bytevector-uint-set! procedure) +(bytevector-uncompress procedure) +(caaaar procedure) +(caaadr procedure) +(caaar procedure) +(caadar procedure) +(caaddr procedure) +(caadr procedure) +(caar procedure) +(cadaar procedure) +(cadadr procedure) +(cadar procedure) +(caddar procedure) +(cadddr procedure) +(caddr procedure) +(cadr procedure) +(call/1cc procedure) +(call/cc procedure) +(call-with-bytevector-output-port procedure) +(call-with-current-continuation procedure) +(call-with-input-file procedure) +(call-with-output-file procedure) +(call-with-port procedure) +(call-with-string-output-port procedure) +(call-with-values procedure) +(car procedure) +(case syntax) +(case-lambda syntax) +(case-sensitive thread-param) +(cd global-param) +(cdaaar procedure) +(cdaadr procedure) +(cdaar procedure) +(cdadar procedure) +(cdaddr procedure) +(cdadr procedure) +(cdar procedure) +(cddaar procedure) +(cddadr procedure) +(cddar procedure) +(cdddar procedure) +(cddddr procedure) +(cdddr procedure) +(cddr procedure) +(cdr procedure) +(ceiling procedure) +(cfl- procedure) +(cfl* procedure) +(cfl/ procedure) +(cfl+ procedure) +(cfl= procedure) +(cfl-conjugate procedure) +(cfl-imag-part procedure) +(cfl-magnitude-squared procedure) +(cflonum? procedure) +(cfl-real-part procedure) +(char- procedure) +(char? procedure) +(char? procedure) +(char>=? procedure) +(char->integer procedure) +(char-alphabetic? procedure) +(char-ci? procedure) +(char-ci>=? procedure) +(char-downcase procedure) +(char-foldcase procedure) +(char-general-category procedure) +(char-lower-case? procedure) +(char-name procedure) +(char-numeric? procedure) +(char-ready? procedure) +(char-titlecase procedure) +(char-title-case? procedure) +(char-upcase procedure) +(char-upper-case? procedure) +(char-whitespace? procedure) +(chmod procedure) +(clear-input-port procedure) +(clear-output-port procedure) +(close-input-port procedure) +(close-output-port procedure) +(close-port procedure) +(collect procedure) +(collect-generation-radix global-param) +(collections procedure) +(collect-maximum-generation global-param) +(collect-notify global-param) +(collect-rendezvous procedure) +(collect-request-handler global-param) +(collect-trip-bytes global-param) +(command-line global-param) +(command-line-arguments global-param) +(commonization-level thread-param) +(compile procedure) +(compile-file procedure) +(compile-file-message thread-param) +(compile-imported-libraries thread-param) +(compile-interpret-simple thread-param) +(compile-library procedure) +(compile-library-handler thread-param) +(compile-port procedure) +(compile-profile thread-param) +(compile-program procedure) +(compile-program-handler thread-param) +(compile-script procedure) +(compile-time-value? procedure) +(compile-time-value-value procedure) +(compile-to-file procedure) +(compile-to-port procedure) +(compile-whole-library procedure) +(compile-whole-program procedure) +(complex? procedure) +(compress-format thread-param) +(compress-level thread-param) +(compute-composition procedure) +(compute-size procedure) +(concatenate-object-files procedure) +(cond syntax) +(condition procedure) +(condition? procedure) +(condition-accessor procedure) +(condition-broadcast procedure) +(condition-continuation procedure) +(condition-irritants procedure) +(condition-message procedure) +(condition-name procedure) +(condition-predicate procedure) +(condition-signal procedure) +(condition-wait procedure) +(condition-who procedure) +(conjugate procedure) +(cons procedure) +(cons* procedure) +(console-error-port thread-param) +(console-input-port global-param) +(console-output-port global-param) +(constructor syntax) +(continuation-condition? procedure) +(copy-environment procedure) +(copy-time procedure) +(cos procedure) +(cosh procedure) +(cost-center? procedure) +(cost-center-allocation-count procedure) +(cost-center-instruction-count procedure) +(cost-center-time procedure) +(cp0-effort-limit thread-param) +(cp0-outer-unroll-limit thread-param) +(cp0-score-limit thread-param) +(cpu-time procedure) +(create-exception-state procedure) +(critical-section syntax) +(csv7:record-field-accessible? procedure) +(csv7:record-field-accessor procedure) +(csv7:record-field-mutable? procedure) +(csv7:record-field-mutator procedure) +(csv7:record-type-descriptor procedure) +(csv7:record-type-field-decls procedure) +(csv7:record-type-field-names procedure) +(csv7:record-type-name procedure) +(csv7:record-type-symbol procedure) +(current-date procedure) +(current-directory global-param) +(current-error-port procedure) +(current-eval thread-param) +(current-exception-state thread-param) +(current-expand thread-param) +(current-input-port procedure) +(current-locate-source-object-source thread-param) +(current-make-source-object thread-param) +(current-memory-bytes procedure) +(current-output-port procedure) +(current-time procedure) +(current-transcoder thread-param) +(custom-port-buffer-size thread-param) +(date? procedure) +(date->time-utc procedure) +(date-and-time procedure) +(date-day procedure) +(date-dst? procedure) +(date-hour procedure) +(date-minute procedure) +(date-month procedure) +(date-nanosecond procedure) +(date-second procedure) +(date-week-day procedure) +(date-year procedure) +(date-year-day procedure) +(date-zone-name procedure) +(date-zone-offset procedure) +(datum syntax) +(datum->syntax procedure) +(datum->syntax-object procedure) +(debug procedure) +(debug-condition thread-param) +(debug-level thread-param) +(debug-on-exception global-param) +(decode-float procedure) +(default-exception-handler procedure) +(default-library-search-handler procedure) +(default-prompt-and-read procedure) +(default-record-equal-procedure thread-param) +(default-record-hash-procedure thread-param) +(define syntax) +(define-condition-type syntax) +(define-enumeration syntax) +(define-ftype syntax) +(define-property syntax) +(define-record syntax) +(define-record-type syntax) +(define-structure syntax) +(define-syntax syntax) +(define-top-level-syntax procedure) +(define-top-level-value procedure) +(define-values syntax) +(delay syntax) +(delete-directory procedure) +(delete-file procedure) +(denominator procedure) +(directory-list procedure) +(directory-separator procedure) +(directory-separator? procedure) +(disable-interrupts procedure) +(display procedure) +(display-condition procedure) +(display-statistics procedure) +(display-string procedure) +(div procedure) +(div0 procedure) +(div0-and-mod0 procedure) +(div-and-mod procedure) +(do syntax) +(drop-prefix syntax) +(dynamic-wind procedure) +(else syntax) +(enable-cross-library-optimization thread-param) +(enable-interrupts procedure) +(enable-object-counts global-param) +(endianness syntax) +(engine-block procedure) +(engine-return procedure) +(enumerate procedure) +(enum-set? procedure) +(enum-set=? procedure) +(enum-set->list procedure) +(enum-set-complement procedure) +(enum-set-constructor procedure) +(enum-set-difference procedure) +(enum-set-indexer procedure) +(enum-set-intersection procedure) +(enum-set-member? procedure) +(enum-set-projection procedure) +(enum-set-subset? procedure) +(enum-set-union procedure) +(enum-set-universe procedure) +(environment procedure) +(environment? procedure) +(environment-mutable? procedure) +(environment-symbols procedure) +(eof-object procedure) +(eof-object? procedure) +(eol-style syntax) +(ephemeron-cons procedure) +(ephemeron-pair? procedure) +(eq? procedure) +(eq-hashtable? procedure) +(eq-hashtable-cell procedure) +(eq-hashtable-contains? procedure) +(eq-hashtable-delete! procedure) +(eq-hashtable-ephemeron? procedure) +(eq-hashtable-ref procedure) +(eq-hashtable-set! procedure) +(eq-hashtable-update! procedure) +(eq-hashtable-weak? procedure) +(equal? procedure) +(equal-hash procedure) +(eqv? procedure) +(error procedure) +(error? procedure) +(errorf procedure) +(error-handling-mode syntax) +(eval procedure) +(eval-syntax-expanders-when thread-param) +(eval-when syntax) +(even? procedure) +(exact procedure) +(exact? procedure) +(exact->inexact procedure) +(exact-integer-sqrt procedure) +(except syntax) +(exclusive-cond syntax) +(exists procedure) +(exit procedure) +(exit-handler thread-param) +(exp procedure) +(expand procedure) +(expand/optimize procedure) +(expand/optimize-output thread-param) +(expand-output thread-param) +(export syntax) +(expression-editor module) +(expt procedure) +(expt-mod procedure) +(extend-syntax syntax) +(fasl-compressed thread-param) +(fasl-file procedure) +(fasl-read procedure) +(fasl-strip-options syntax) +(fasl-write procedure) +(fields syntax) +(file-access-time procedure) +(file-buffer-size thread-param) +(file-change-time procedure) +(file-directory? procedure) +(file-exists? procedure) +(file-length procedure) +(file-modification-time procedure) +(file-options syntax) +(file-port? procedure) +(file-position procedure) +(file-regular? procedure) +(file-symbolic-link? procedure) +(filter procedure) +(find procedure) +(finite? procedure) +(fixnum? procedure) +(fixnum->flonum procedure) +(fixnum-width procedure) +(fl- procedure) +(fl* procedure) +(fl/ procedure) +(fl+ procedure) +(fl< procedure) +(fl procedure) +(fl>? procedure) +(fl>= procedure) +(fl>=? procedure) +(flabs procedure) +(flacos procedure) +(flasin procedure) +(flatan procedure) +(flceiling procedure) +(flcos procedure) +(fldenominator procedure) +(fldiv procedure) +(fldiv0 procedure) +(fldiv0-and-mod0 procedure) +(fldiv-and-mod procedure) +(fleven? procedure) +(flexp procedure) +(flexpt procedure) +(flfinite? procedure) +(flfloor procedure) +(flinfinite? procedure) +(flinteger? procedure) +(fllog procedure) +(fllp procedure) +(fl-make-rectangular procedure) +(flmax procedure) +(flmin procedure) +(flmod procedure) +(flmod0 procedure) +(flnan? procedure) +(flnegative? procedure) +(flnonnegative? procedure) +(flnonpositive? procedure) +(flnumerator procedure) +(flodd? procedure) +(flonum? procedure) +(flonum->fixnum procedure) +(floor procedure) +(flpositive? procedure) +(flround procedure) +(flsin procedure) +(flsqrt procedure) +(fltan procedure) +(fltruncate procedure) +(fluid-let syntax) +(fluid-let-syntax syntax) +(flush-output-port procedure) +(flzero? procedure) +(fold-left procedure) +(fold-right procedure) +(for-all procedure) +(force procedure) +(for-each procedure) +(foreign-address-name procedure) +(foreign-alloc procedure) +(foreign-callable syntax) +(foreign-callable-code-object procedure) +(foreign-callable-entry-point procedure) +(foreign-entry procedure) +(foreign-entry? procedure) +(foreign-free procedure) +(foreign-procedure syntax) +(foreign-ref procedure) +(foreign-set! procedure) +(foreign-sizeof procedure) +(fork-thread procedure) +(format procedure) +(format-condition? procedure) +(fprintf procedure) +(free-identifier=? procedure) +(fresh-line procedure) +(ftype-&ref syntax) +(ftype-guardian syntax) +(ftype-init-lock! syntax) +(ftype-lock! syntax) +(ftype-locked-decr! syntax) +(ftype-locked-incr! syntax) +(ftype-pointer? syntax) +(ftype-pointer=? syntax) +(ftype-pointer->sexpr procedure) +(ftype-pointer-address procedure) +(ftype-pointer-ftype procedure) +(ftype-pointer-null? syntax) +(ftype-ref syntax) +(ftype-set! syntax) +(ftype-sizeof syntax) +(ftype-spin-lock! syntax) +(ftype-unlock! syntax) +(fx- procedure) +(fx* procedure) +(fx*/carry procedure) +(fx/ procedure) +(fx-/carry procedure) +(fx+ procedure) +(fx+/carry procedure) +(fx< procedure) +(fx procedure) +(fx>? procedure) +(fx>= procedure) +(fx>=? procedure) +(fx1- procedure) +(fx1+ procedure) +(fxabs procedure) +(fxand procedure) +(fxarithmetic-shift procedure) +(fxarithmetic-shift-left procedure) +(fxarithmetic-shift-right procedure) +(fxbit-count procedure) +(fxbit-field procedure) +(fxbit-set? procedure) +(fxcopy-bit procedure) +(fxcopy-bit-field procedure) +(fxdiv procedure) +(fxdiv0 procedure) +(fxdiv0-and-mod0 procedure) +(fxdiv-and-mod procedure) +(fxeven? procedure) +(fxfirst-bit-set procedure) +(fxif procedure) +(fxior procedure) +(fxlength procedure) +(fxlogand procedure) +(fxlogbit? procedure) +(fxlogbit0 procedure) +(fxlogbit1 procedure) +(fxlogior procedure) +(fxlognot procedure) +(fxlogor procedure) +(fxlogtest procedure) +(fxlogxor procedure) +(fxmax procedure) +(fxmin procedure) +(fxmod procedure) +(fxmod0 procedure) +(fxmodulo procedure) +(fxnegative? procedure) +(fxnonnegative? procedure) +(fxnonpositive? procedure) +(fxnot procedure) +(fxodd? procedure) +(fxpositive? procedure) +(fxquotient procedure) +(fxremainder procedure) +(fxreverse-bit-field procedure) +(fxrotate-bit-field procedure) +(fxsll procedure) +(fxsra procedure) +(fxsrl procedure) +(fxvector procedure) +(fxvector? procedure) +(fxvector->immutable-fxvector procedure) +(fxvector->list procedure) +(fxvector-copy procedure) +(fxvector-fill! procedure) +(fxvector-length procedure) +(fxvector-ref procedure) +(fxvector-set! procedure) +(fxxor procedure) +(fxzero? procedure) +(gcd procedure) +(generate-allocation-counts thread-param) +(generate-covin-files thread-param) +(generate-inspector-information thread-param) +(generate-instruction-counts thread-param) +(generate-interrupt-trap thread-param) +(generate-procedure-source-information thread-param) +(generate-profile-forms thread-param) +(generate-temporaries procedure) +(generate-wpo-files thread-param) +(gensym procedure) +(gensym? procedure) +(gensym->unique-string procedure) +(gensym-count thread-param) +(gensym-prefix thread-param) +(get-bytevector-all procedure) +(get-bytevector-n procedure) +(get-bytevector-n! procedure) +(get-bytevector-some procedure) +(get-bytevector-some! procedure) +(get-char procedure) +(get-datum procedure) +(get-datum/annotations procedure) +(getenv procedure) +(get-hash-table procedure) +(get-line procedure) +(get-mode procedure) +(get-output-string procedure) +(get-process-id procedure) +(getprop procedure) +(get-source-table! procedure) +(get-string-all procedure) +(get-string-n procedure) +(get-string-n! procedure) +(get-string-some procedure) +(get-string-some! procedure) +(get-thread-id procedure) +(get-u8 procedure) +(greatest-fixnum procedure) +(guard syntax) +(guardian? procedure) +(hashtable? procedure) +(hash-table? procedure) +(hashtable-cell procedure) +(hashtable-cells procedure) +(hashtable-clear! procedure) +(hashtable-contains? procedure) +(hashtable-copy procedure) +(hashtable-delete! procedure) +(hashtable-entries procedure) +(hashtable-ephemeron? procedure) +(hashtable-equivalence-function procedure) +(hash-table-for-each procedure) +(hashtable-hash-function procedure) +(hashtable-keys procedure) +(hash-table-map procedure) +(hashtable-mutable? procedure) +(hashtable-ref procedure) +(hashtable-set! procedure) +(hashtable-size procedure) +(hashtable-update! procedure) +(hashtable-values procedure) +(hashtable-weak? procedure) +(heap-reserve-ratio global-param) +(i/o-decoding-error? procedure) +(i/o-encoding-error? procedure) +(i/o-encoding-error-char procedure) +(i/o-error? procedure) +(i/o-error-filename procedure) +(i/o-error-port procedure) +(i/o-error-position procedure) +(i/o-file-already-exists-error? procedure) +(i/o-file-does-not-exist-error? procedure) +(i/o-file-is-read-only-error? procedure) +(i/o-filename-error? procedure) +(i/o-file-protection-error? procedure) +(i/o-invalid-position-error? procedure) +(i/o-port-error? procedure) +(i/o-read-error? procedure) +(i/o-write-error? procedure) +(iconv-codec procedure) +(identifier? procedure) +(identifier-syntax syntax) +(ieee module) +(ieee-environment procedure) +(if syntax) +(imag-part procedure) +(immutable syntax) +(immutable-box? procedure) +(immutable-bytevector? procedure) +(immutable-fxvector? procedure) +(immutable-string? procedure) +(immutable-vector? procedure) +(implementation-restriction-violation? procedure) +(implicit-exports syntax) +(import syntax) +(import-notify thread-param) +(import-only syntax) +(include syntax) +(indirect-export syntax) +(inexact procedure) +(inexact? procedure) +(inexact->exact procedure) +(infinite? procedure) +(initial-bytes-allocated procedure) +(input-port? procedure) +(input-port-ready? procedure) +(inspect procedure) +(inspect/object procedure) +(integer? procedure) +(integer->char procedure) +(integer-length procedure) +(integer-valued? procedure) +(interaction-environment thread-param) +(interactive? procedure) +(internal-defines-as-letrec* thread-param) +(interpret procedure) +(invoke-library procedure) +(iota procedure) +(irritants-condition? procedure) +(isqrt procedure) +(keyboard-interrupt-handler thread-param) +(lambda syntax) +(last-pair procedure) +(latin-1-codec procedure) +(lcm procedure) +(least-fixnum procedure) +(length procedure) +(let syntax) +(let* syntax) +(let*-values syntax) +(letrec syntax) +(letrec* syntax) +(letrec-syntax syntax) +(let-syntax syntax) +(let-values syntax) +(lexical-violation? procedure) +(library syntax) +(library-directories thread-param) +(library-exports procedure) +(library-extensions thread-param) +(library-list procedure) +(library-object-filename procedure) +(library-requirements procedure) +(library-requirements-options syntax) +(library-search-handler thread-param) +(library-version procedure) +(list procedure) +(list* procedure) +(list? procedure) +(list->fxvector procedure) +(list->string procedure) +(list->vector procedure) +(list-copy procedure) +(list-head procedure) +(list-instance procedure) +(list-ref procedure) +(list-sort procedure) +(list-tail procedure) +(literal-identifier=? procedure) +(load procedure) +(load-compiled-from-port procedure) +(load-library procedure) +(load-program procedure) +(load-shared-object procedure) +(locate-source procedure) +(locate-source-object-source procedure) +(locked-object? procedure) +(lock-object procedure) +(log procedure) +(logand procedure) +(logbit? procedure) +(logbit0 procedure) +(logbit1 procedure) +(logior procedure) +(lognot procedure) +(logor procedure) +(logtest procedure) +(logxor procedure) +(lookahead-char procedure) +(lookahead-u8 procedure) +(machine-type procedure) +(magnitude procedure) +(magnitude-squared procedure) +(make-annotation procedure) +(make-assertion-violation procedure) +(make-boot-file procedure) +(make-boot-header procedure) +(make-bytevector procedure) +(make-compile-time-value procedure) +(make-condition procedure) +(make-continuation-condition procedure) +(make-cost-center procedure) +(make-custom-binary-input/output-port procedure) +(make-custom-binary-input-port procedure) +(make-custom-binary-output-port procedure) +(make-custom-textual-input/output-port procedure) +(make-custom-textual-input-port procedure) +(make-custom-textual-output-port procedure) +(make-date procedure) +(make-engine procedure) +(make-enumeration procedure) +(make-ephemeron-eq-hashtable procedure) +(make-ephemeron-eqv-hashtable procedure) +(make-eq-hashtable procedure) +(make-eqv-hashtable procedure) +(make-error procedure) +(make-format-condition procedure) +(make-ftype-pointer syntax) +(make-fxvector procedure) +(make-guardian procedure) +(make-hashtable procedure) +(make-hash-table procedure) +(make-i/o-decoding-error procedure) +(make-i/o-encoding-error procedure) +(make-i/o-error procedure) +(make-i/o-file-already-exists-error procedure) +(make-i/o-file-does-not-exist-error procedure) +(make-i/o-file-is-read-only-error procedure) +(make-i/o-filename-error procedure) +(make-i/o-file-protection-error procedure) +(make-i/o-invalid-position-error procedure) +(make-i/o-port-error procedure) +(make-i/o-read-error procedure) +(make-i/o-write-error procedure) +(make-implementation-restriction-violation procedure) +(make-input/output-port procedure) +(make-input-port procedure) +(make-irritants-condition procedure) +(make-lexical-violation procedure) +(make-list procedure) +(make-message-condition procedure) +(make-mutex procedure) +(make-no-infinities-violation procedure) +(make-no-nans-violation procedure) +(make-non-continuable-violation procedure) +(make-object-finder procedure) +(make-output-port procedure) +(make-parameter procedure) +(make-polar procedure) +(make-record-constructor-descriptor procedure) +(make-record-type procedure) +(make-record-type-descriptor procedure) +(make-rectangular procedure) +(make-serious-condition procedure) +(make-source-condition procedure) +(make-source-file-descriptor procedure) +(make-source-object procedure) +(make-source-table procedure) +(make-sstats procedure) +(make-string procedure) +(make-syntax-violation procedure) +(make-thread-parameter procedure) +(make-time procedure) +(make-transcoder procedure) +(make-undefined-violation procedure) +(make-variable-transformer procedure) +(make-vector procedure) +(make-violation procedure) +(make-warning procedure) +(make-weak-eq-hashtable procedure) +(make-weak-eqv-hashtable procedure) +(make-who-condition procedure) +(map procedure) +(mark-port-closed! procedure) +(max procedure) +(maximum-memory-bytes procedure) +(maybe-compile-file procedure) +(maybe-compile-library procedure) +(maybe-compile-program procedure) +(member procedure) +(memp procedure) +(memq procedure) +(memv procedure) +(merge procedure) +(merge! procedure) +(message-condition? procedure) +(meta syntax) +(meta-cond syntax) +(min procedure) +(mkdir procedure) +(mod procedure) +(mod0 procedure) +(module syntax) +(modulo procedure) +(most-negative-fixnum procedure) +(most-positive-fixnum procedure) +(mutable syntax) +(mutable-box? procedure) +(mutable-bytevector? procedure) +(mutable-fxvector? procedure) +(mutable-string? procedure) +(mutable-vector? procedure) +(mutex? procedure) +(mutex-acquire procedure) +(mutex-name procedure) +(mutex-release procedure) +(nan? procedure) +(native-endianness procedure) +(native-eol-style procedure) +(native-transcoder procedure) +(negative? procedure) +(new-cafe procedure) +(newline procedure) +(no-infinities-violation? procedure) +(no-nans-violation? procedure) +(non-continuable-violation? procedure) +(nongenerative syntax) +(nonnegative? procedure) +(nonpositive? procedure) +(not procedure) +(null? procedure) +(null-environment procedure) +(number? procedure) +(number->string procedure) +(numerator procedure) +(object-counts procedure) +(oblist procedure) +(odd? procedure) +(only syntax) +(opaque syntax) +(open-bytevector-input-port procedure) +(open-bytevector-output-port procedure) +(open-fd-input/output-port procedure) +(open-fd-input-port procedure) +(open-fd-output-port procedure) +(open-file-input/output-port procedure) +(open-file-input-port procedure) +(open-file-output-port procedure) +(open-input-file procedure) +(open-input-output-file procedure) +(open-input-string procedure) +(open-output-file procedure) +(open-output-string procedure) +(open-process-ports procedure) +(open-source-file procedure) +(open-string-input-port procedure) +(open-string-output-port procedure) +(optimize-level thread-param) +(or syntax) +(ormap procedure) +(output-port? procedure) +(output-port-buffer-mode procedure) +(pair? procedure) +(parameterize syntax) +(parent syntax) +(parent-rtd syntax) +(pariah syntax) +(partition procedure) +(path-absolute? procedure) +(path-extension procedure) +(path-first procedure) +(path-last procedure) +(path-parent procedure) +(path-rest procedure) +(path-root procedure) +(peek-char procedure) +(petite? procedure) +(port? procedure) +(port-bol? procedure) +(port-closed? procedure) +(port-eof? procedure) +(port-file-compressed! procedure) +(port-file-descriptor procedure) +(port-handler procedure) +(port-has-port-length? procedure) +(port-has-port-nonblocking?? procedure) +(port-has-port-position? procedure) +(port-has-set-port-length!? procedure) +(port-has-set-port-nonblocking!? procedure) +(port-has-set-port-position!? procedure) +(port-input-buffer procedure) +(port-input-count procedure) +(port-input-empty? procedure) +(port-input-index procedure) +(port-input-size procedure) +(port-length procedure) +(port-name procedure) +(port-nonblocking? procedure) +(port-output-buffer procedure) +(port-output-count procedure) +(port-output-full? procedure) +(port-output-index procedure) +(port-output-size procedure) +(port-position procedure) +(port-transcoder procedure) +(positive? procedure) +(predicate syntax) +(prefix syntax) +(pretty-file procedure) +(pretty-format procedure) +(pretty-initial-indent thread-param) +(pretty-line-length thread-param) +(pretty-maximum-lines thread-param) +(pretty-one-line-limit thread-param) +(pretty-print procedure) +(pretty-standard-indent thread-param) +(print-brackets thread-param) +(print-char-name thread-param) +(print-extended-identifiers thread-param) +(printf procedure) +(print-gensym thread-param) +(print-graph thread-param) +(print-length thread-param) +(print-level thread-param) +(print-precision thread-param) +(print-radix thread-param) +(print-record thread-param) +(print-unicode thread-param) +(print-vector-length thread-param) +(procedure? procedure) +(procedure-arity-mask procedure) +(process procedure) +(profile syntax) +(profile-clear procedure) +(profile-clear-database procedure) +(profile-dump procedure) +(profile-dump-data procedure) +(profile-dump-html procedure) +(profile-dump-list procedure) +(profile-line-number-color thread-param) +(profile-load-data procedure) +(profile-palette thread-param) +(profile-query-weight procedure) +(profile-release-counters procedure) +(property-list procedure) +(protocol syntax) +(put-bytevector procedure) +(put-bytevector-some procedure) +(put-char procedure) +(put-datum procedure) +(putenv procedure) +(put-hash-table! procedure) +(putprop procedure) +(put-source-table procedure) +(put-string procedure) +(put-string-some procedure) +(put-u8 procedure) +(quasiquote syntax) +(quasisyntax syntax) +(quote syntax) +(quotient procedure) +(r5rs module) +(r5rs-syntax module) +(r6rs:< procedure) +(r6rs:<= procedure) +(r6rs:= procedure) +(r6rs:> procedure) +(r6rs:>= procedure) +(r6rs:call-with-input-file procedure) +(r6rs:call-with-output-file procedure) +(r6rs:case procedure) +(r6rs:char? procedure) +(r6rs:char>=? procedure) +(r6rs:char-ci? procedure) +(r6rs:char-ci>=? procedure) +(r6rs:command-line procedure) +(r6rs:current-error-port procedure) +(r6rs:current-input-port procedure) +(r6rs:current-output-port procedure) +(r6rs:delete-file procedure) +(r6rs:dynamic-wind procedure) +(r6rs:eval procedure) +(r6rs:exit procedure) +(r6rs:file-exists? procedure) +(r6rs:flush-output-port procedure) +(r6rs:fx- procedure) +(r6rs:fx* procedure) +(r6rs:fx+ procedure) +(r6rs:hashtable-entries procedure) +(r6rs:hashtable-keys procedure) +(r6rs:number->string procedure) +(r6rs:open-input-file procedure) +(r6rs:open-output-file procedure) +(r6rs:record? procedure) +(r6rs:record-constructor procedure) +(r6rs:standard-error-port procedure) +(r6rs:standard-input-port procedure) +(r6rs:standard-output-port procedure) +(r6rs:string? procedure) +(r6rs:string>=? procedure) +(r6rs:string->number procedure) +(r6rs:string-ci? procedure) +(r6rs:string-ci>=? procedure) +(r6rs:syntax-rules procedure) +(r6rs:utf-16-codec procedure) +(r6rs:with-input-from-file procedure) +(r6rs:with-output-to-file procedure) +(raise procedure) +(raise-continuable procedure) +(random procedure) +(random-seed thread-param) +(rational? procedure) +(rationalize procedure) +(rational-valued? procedure) +(ratnum? procedure) +(read procedure) +(read-char procedure) +(read-token procedure) +(real? procedure) +(real->flonum procedure) +(real-part procedure) +(real-time procedure) +(real-valued? procedure) +(rec syntax) +(record? procedure) +(record-accessor procedure) +(record-case syntax) +(record-constructor procedure) +(record-constructor-descriptor syntax) +(record-constructor-descriptor? procedure) +(record-equal-procedure procedure) +(record-field-mutable? procedure) +(record-hash-procedure procedure) +(record-mutator procedure) +(record-predicate procedure) +(record-reader procedure) +(record-rtd procedure) +(record-type-descriptor procedure) +(record-type-descriptor? procedure) +(record-type-equal-procedure procedure) +(record-type-field-names procedure) +(record-type-generative? procedure) +(record-type-hash-procedure procedure) +(record-type-name procedure) +(record-type-opaque? procedure) +(record-type-parent procedure) +(record-type-sealed? procedure) +(record-type-uid procedure) +(record-writer procedure) +(register-signal-handler procedure) +(release-minimum-generation global-param) +(remainder procedure) +(remove procedure) +(remove! procedure) +(remove-foreign-entry procedure) +(remove-hash-table! procedure) +(remp procedure) +(remprop procedure) +(remq procedure) +(remq! procedure) +(remv procedure) +(remv! procedure) +(rename syntax) +(rename-file procedure) +(require-nongenerative-clause thread-param) +(reset procedure) +(reset-cost-center! procedure) +(reset-handler thread-param) +(reset-maximum-memory-bytes! procedure) +(reverse procedure) +(reverse! procedure) +(revisit procedure) +(revisit-compiled-from-port procedure) +(rnrs procedure) +(round procedure) +(run-cp0 thread-param) +(s8-list->bytevector procedure) +(sc-expand procedure) +(scheme module) +(scheme-environment procedure) +(scheme-program global-param) +(scheme-report-environment procedure) +(scheme-script global-param) +(scheme-start global-param) +(scheme-version procedure) +(scheme-version-number procedure) +(sealed syntax) +(serious-condition? procedure) +(set! syntax) +(set-binary-port-input-buffer! procedure) +(set-binary-port-input-index! procedure) +(set-binary-port-input-size! procedure) +(set-binary-port-output-buffer! procedure) +(set-binary-port-output-index! procedure) +(set-binary-port-output-size! procedure) +(set-box! procedure) +(set-car! procedure) +(set-cdr! procedure) +(set-port-bol! procedure) +(set-port-eof! procedure) +(set-port-input-buffer! procedure) +(set-port-input-index! procedure) +(set-port-input-size! procedure) +(set-port-length! procedure) +(set-port-name! procedure) +(set-port-nonblocking! procedure) +(set-port-output-buffer! procedure) +(set-port-output-index! procedure) +(set-port-output-size! procedure) +(set-port-position! procedure) +(set-sstats-bytes! procedure) +(set-sstats-cpu! procedure) +(set-sstats-gc-bytes! procedure) +(set-sstats-gc-count! procedure) +(set-sstats-gc-cpu! procedure) +(set-sstats-gc-real! procedure) +(set-sstats-real! procedure) +(set-textual-port-input-buffer! procedure) +(set-textual-port-input-index! procedure) +(set-textual-port-input-size! procedure) +(set-textual-port-output-buffer! procedure) +(set-textual-port-output-index! procedure) +(set-textual-port-output-size! procedure) +(set-time-nanosecond! procedure) +(set-timer procedure) +(set-time-second! procedure) +(set-time-type! procedure) +(set-top-level-value! procedure) +(set-virtual-register! procedure) +(simple-conditions procedure) +(sin procedure) +(sinh procedure) +(sint-list->bytevector procedure) +(sleep procedure) +(sort procedure) +(sort! procedure) +(source-condition? procedure) +(source-condition-form procedure) +(source-directories global-param) +(source-file-descriptor procedure) +(source-file-descriptor? procedure) +(source-file-descriptor-checksum procedure) +(source-file-descriptor-path procedure) +(source-object? procedure) +(source-object-bfp procedure) +(source-object-column procedure) +(source-object-efp procedure) +(source-object-line procedure) +(source-object-sfd procedure) +(source-table? procedure) +(source-table-cell procedure) +(source-table-contains? procedure) +(source-table-delete! procedure) +(source-table-dump procedure) +(source-table-ref procedure) +(source-table-set! procedure) +(source-table-size procedure) +(sqrt procedure) +(sstats? procedure) +(sstats-bytes procedure) +(sstats-cpu procedure) +(sstats-difference procedure) +(sstats-gc-bytes procedure) +(sstats-gc-count procedure) +(sstats-gc-cpu procedure) +(sstats-gc-real procedure) +(sstats-print procedure) +(sstats-real procedure) +(standard-error-port procedure) +(standard-input-port procedure) +(standard-output-port procedure) +(statistics procedure) +(string procedure) +(string? procedure) +(string? procedure) +(string>=? procedure) +(string->bytevector procedure) +(string->immutable-string procedure) +(string->list procedure) +(string->number procedure) +(string->symbol procedure) +(string->utf16 procedure) +(string->utf32 procedure) +(string->utf8 procedure) +(string-append procedure) +(string-ci? procedure) +(string-ci>=? procedure) +(string-ci-hash procedure) +(string-copy procedure) +(string-copy! procedure) +(string-downcase procedure) +(string-fill! procedure) +(string-foldcase procedure) +(string-for-each procedure) +(string-hash procedure) +(string-length procedure) +(string-normalize-nfc procedure) +(string-normalize-nfd procedure) +(string-normalize-nfkc procedure) +(string-normalize-nfkd procedure) +(string-ref procedure) +(string-set! procedure) +(string-titlecase procedure) +(string-truncate! procedure) +(string-upcase procedure) +(strip-fasl-file procedure) +(sub1 procedure) +(subset-mode thread-param) +(subst procedure) +(subst! procedure) +(substq procedure) +(substq! procedure) +(substring procedure) +(substring-fill! procedure) +(substv procedure) +(substv! procedure) +(subtract-duration procedure) +(subtract-duration! procedure) +(suppress-greeting global-param) +(symbol? procedure) +(symbol=? procedure) +(symbol->string procedure) +(symbol-hash procedure) +(symbol-hashtable? procedure) +(symbol-hashtable-cell procedure) +(symbol-hashtable-contains? procedure) +(symbol-hashtable-delete! procedure) +(symbol-hashtable-ref procedure) +(symbol-hashtable-set! procedure) +(symbol-hashtable-update! procedure) +(syntax syntax) +(syntax->annotation procedure) +(syntax->datum procedure) +(syntax->list procedure) +(syntax->vector procedure) +(syntax-case syntax) +(syntax-error procedure) +(syntax-object->datum procedure) +(syntax-rules syntax) +(syntax-violation procedure) +(syntax-violation? procedure) +(syntax-violation-form procedure) +(syntax-violation-subform procedure) +(system procedure) +(tan procedure) +(tanh procedure) +(textual-port? procedure) +(textual-port-input-buffer procedure) +(textual-port-input-count procedure) +(textual-port-input-index procedure) +(textual-port-input-size procedure) +(textual-port-output-buffer procedure) +(textual-port-output-count procedure) +(textual-port-output-index procedure) +(textual-port-output-size procedure) +(thread? procedure) +(thread-condition? procedure) +(threaded? procedure) +(time syntax) +(time? procedure) +(time? procedure) +(time>=? procedure) +(time-difference procedure) +(time-difference! procedure) +(time-nanosecond procedure) +(timer-interrupt-handler thread-param) +(time-second procedure) +(time-type procedure) +(time-utc->date procedure) +(top-level-bound? procedure) +(top-level-mutable? procedure) +(top-level-program syntax) +(top-level-syntax procedure) +(top-level-syntax? procedure) +(top-level-value procedure) +(trace syntax) +(trace-case-lambda syntax) +(trace-define syntax) +(trace-define-syntax syntax) +(trace-do syntax) +(trace-lambda syntax) +(trace-let syntax) +(trace-output-port thread-param) +(trace-print thread-param) +(transcoded-port procedure) +(transcoder? procedure) +(transcoder-codec procedure) +(transcoder-eol-style procedure) +(transcoder-error-handling-mode procedure) +(transcript-cafe procedure) +(transcript-off procedure) +(transcript-on procedure) +(truncate procedure) +(truncate-file procedure) +(truncate-port procedure) +(type-descriptor syntax) +(u8-list->bytevector procedure) +(uint-list->bytevector procedure) +(unbox procedure) +(undefined-variable-warnings thread-param) +(undefined-violation? procedure) +(unget-char procedure) +(unget-u8 procedure) +(unless syntax) +(unlock-object procedure) +(unquote syntax) +(unquote-splicing syntax) +(unread-char procedure) +(unregister-guardian procedure) +(unsyntax syntax) +(unsyntax-splicing syntax) +(untrace syntax) +(utf16->string procedure) +(utf-16be-codec procedure) +(utf-16-codec procedure) +(utf-16le-codec procedure) +(utf32->string procedure) +(utf8->string procedure) +(utf-8-codec procedure) +(values procedure) +(vector procedure) +(vector? procedure) +(vector->immutable-vector procedure) +(vector->list procedure) +(vector-cas! procedure) +(vector-copy procedure) +(vector-fill! procedure) +(vector-for-each procedure) +(vector-length procedure) +(vector-map procedure) +(vector-ref procedure) +(vector-set! procedure) +(vector-set-fixnum! procedure) +(vector-sort procedure) +(vector-sort! procedure) +(verify-loadability procedure) +(violation? procedure) +(virtual-register procedure) +(virtual-register-count procedure) +(visit procedure) +(visit-compiled-from-port procedure) +(void procedure) +(waiter-prompt-and-read thread-param) +(waiter-prompt-string thread-param) +(waiter-write thread-param) +(warning procedure) +(warning? procedure) +(warningf procedure) +(weak-cons procedure) +(weak-pair? procedure) +(when syntax) +(who-condition? procedure) +(with-cost-center procedure) +(with-exception-handler procedure) +(with-implicit syntax) +(with-input-from-file procedure) +(with-input-from-string procedure) +(with-interrupts-disabled syntax) +(with-mutex syntax) +(with-output-to-file procedure) +(with-output-to-string procedure) +(with-profile-tracker procedure) +(with-source-path procedure) +(with-syntax syntax) +(write procedure) +(write-char procedure) +(zero? procedure)))) (define rnrs-condition (private-process '(rnrs condition) '( (&assertion syntax) diff --git a/analysis/identifier/rules/fluid-let-syntax.sls b/analysis/identifier/rules/fluid-let-syntax.sls index f28e969..f7bc0da 100644 --- a/analysis/identifier/rules/fluid-let-syntax.sls +++ b/analysis/identifier/rules/fluid-let-syntax.sls @@ -7,7 +7,7 @@ (scheme-langserver util try) (scheme-langserver analysis identifier reference) - (scheme-langserver analysis identifier rules let) + (scheme-langserver analysis identifier rules fluid-let) (scheme-langserver virtual-file-system index-node) (scheme-langserver virtual-file-system library-node) @@ -26,7 +26,7 @@ (lambda (exclude-list identifier-parent-index-node) (let* ([identifier-index-node (car (index-node-children identifier-parent-index-node))] [extended-exclude-list - (append exclude-list (let-parameter-process index-node identifier-index-node index-node exclude-list document 'syntax-variable))]) + (append exclude-list (fluid-let-parameter-process index-node identifier-index-node index-node exclude-list document 'syntax-variable))]) (index-node-excluded-references-set! (index-node-parent identifier-parent-index-node) extended-exclude-list) extended-exclude-list)) '() diff --git a/analysis/identifier/rules/fluid-let.sls b/analysis/identifier/rules/fluid-let.sls index 582869b..8059833 100644 --- a/analysis/identifier/rules/fluid-let.sls +++ b/analysis/identifier/rules/fluid-let.sls @@ -1,5 +1,8 @@ (library (scheme-langserver analysis identifier rules fluid-let) - (export fluid-let-process) + (export + fluid-let-process + fluid-let-parameter-process + ) (import (chezscheme) (ufo-match) @@ -7,7 +10,6 @@ (scheme-langserver util try) (scheme-langserver analysis identifier reference) - (scheme-langserver analysis identifier rules let) (scheme-langserver virtual-file-system index-node) (scheme-langserver virtual-file-system library-node) @@ -26,7 +28,7 @@ (lambda (exclude-list identifier-parent-index-node) (let* ([identifier-index-node (car (index-node-children identifier-parent-index-node))] [extended-exclude-list - (append exclude-list (let-parameter-process index-node identifier-index-node index-node exclude-list document 'variable))]) + (append exclude-list (fluid-let-parameter-process index-node identifier-index-node index-node exclude-list document 'variable))]) (index-node-excluded-references-set! (index-node-parent identifier-parent-index-node) extended-exclude-list) extended-exclude-list)) '() @@ -34,4 +36,32 @@ [else '()]) (except c [else '()])))) + +(define (fluid-let-parameter-process initialization-index-node index-node let-node exclude document type) + (let* ([ann (index-node-datum/annotations index-node)] + [expression (annotation-stripped ann)] + [upper (find-available-references-for document index-node expression)] + [reference + (make-identifier-reference + expression + document + index-node + initialization-index-node + '() + type + upper + '())]) + + (if (not (null? upper)) + (begin + (index-node-references-export-to-other-node-set! + index-node + (append + (index-node-references-export-to-other-node index-node) + `(,reference))) + + (append-references-into-ordered-references-for document let-node `(,reference)) + + `(,reference)) + '()))) ) From 81293f282443c5f7db2d9ce830cb5c09d25d77e6 Mon Sep 17 00:00:00 2001 From: ufo5260987423 Date: Sun, 5 Jan 2025 14:05:19 +0800 Subject: [PATCH 30/44] add:self-defined-rules --- analysis/abstract-interpreter.sls | 37 ++---------- .../identifier/self-defined-rules/router.sls | 56 +++++++++++++++++++ .../srfi/include-resolve.sls | 2 +- 3 files changed, 63 insertions(+), 32 deletions(-) create mode 100644 analysis/identifier/self-defined-rules/router.sls rename analysis/identifier/{rules => self-defined-rules}/srfi/include-resolve.sls (95%) diff --git a/analysis/abstract-interpreter.sls b/analysis/abstract-interpreter.sls index 89a2569..e6d4435 100644 --- a/analysis/abstract-interpreter.sls +++ b/analysis/abstract-interpreter.sls @@ -56,7 +56,7 @@ (scheme-langserver analysis identifier rules with-syntax) (scheme-langserver analysis identifier rules identifier-syntax) - (scheme-langserver analysis identifier rules srfi include-resolve) + (scheme-langserver analysis identifier self-defined-rules router) (scheme-langserver virtual-file-system index-node) (scheme-langserver virtual-file-system document) @@ -164,8 +164,7 @@ (let* ([top (root-ancestor identifier)] [r (map identifier-reference-identifier top)] [i (identifier-reference-identifier identifier)] - [is (map identifier-reference-library-identifier top)] - [possible-new-memory `(,@(reverse (cdr (reverse memory))) (,(car (reverse memory)) . ,identifier-list))]) + [is (map identifier-reference-library-identifier top)]) (if (find meta-library? is) (cond [(equal? r '(define)) (private-add-rule rules `((,define-process) . ,identifier))] @@ -230,34 +229,10 @@ [(equal? r '(body)) (private-add-rule rules `((,do-nothing . ,body-process) . ,identifier))] [else rules]) - (cond - [(and (equal? is '((srfi :23 error tricks))) (equal? r '(SRFI-23-error->R6RS))) - (private-add-rule rules `((,do-nothing . ,body-process) . ,identifier))] - [(and (equal? is '((srfi private include))) (equal? r '(include/resolve))) - (let ([target-lambda - (lambda (root-file-node root-library-node document index-node) - (include-resolve-process root-file-node root-library-node document index-node - (lambda (current-document) - (file-linkage-set! file-linkage (uri->path (document-uri document)) (uri->path (document-uri current-document))) - (step root-file-node root-library-node file-linkage current-document expanded+callee-list (reverse (cdr (reverse memory)))))))]) - (private-add-rule rules `((,target-lambda) . ,identifier)))] - [(and (contain? (map identifier-reference-type top) 'syntax-variable) (not (contain? memory (car (reverse possible-new-memory))))) - ; (fold-left private-add-rule rules - ; (map - ; (lambda (t) - ; `((,(lambda (root-file-node root-library-node document index-node) - ; (self-defined-syntax-process t index-node document expanded+callee-list - ; (lambda (specific-document generated-index-node new-expanded+callee-list) - ; (step root-file-node root-library-node file-linkage specific-document generated-index-node new-expanded+callee-list - ; ;看起来在处理identifier-list的时候,因为一开始没加,导致了一些问题。可能出在source->annotaiton的过程中,也可能出在step过程中 - ; ; `(,@(reverse (cdr (reverse memory))) (,(car (reverse memory)) . ,identifier-list)) - ; possible-new-memory))))) - ; . ,t)) - ; top)) - ;not now to delete - rules - ] - [else rules])))) + (route&add + rules identifier + file-linkage identifier-list current-document expanded+callee-list memory + private-add-rule step)))) '() (filter (lambda (identifier) diff --git a/analysis/identifier/self-defined-rules/router.sls b/analysis/identifier/self-defined-rules/router.sls new file mode 100644 index 0000000..6453055 --- /dev/null +++ b/analysis/identifier/self-defined-rules/router.sls @@ -0,0 +1,56 @@ +(library (scheme-langserver analysis identifier self-defined-rules router) + (export route&add) + (import + (rnrs) + (scheme-langserver util path) + (scheme-langserver util contain) + + (scheme-langserver virtual-file-system index-node) + (scheme-langserver virtual-file-system document) + + (scheme-langserver analysis util) + + (scheme-langserver analysis dependency file-linkage) + + (scheme-langserver analysis identifier reference) + (scheme-langserver analysis identifier rules body) + + (scheme-langserver analysis identifier self-defined-rules srfi include-resolve)) + +(define (route&add + rules target-identifier + file-linkage identifier-list current-document expanded+callee-list memory + add-rule-procedure step) + (let* ([top (root-ancestor target-identifier)] + [expressions (map identifier-reference-identifier top)] + [library-identifiers (map identifier-reference-library-identifier top)] + [possible-new-memory `(,@(reverse (cdr (reverse memory))) (,(car (reverse memory)) . ,identifier-list))]) + (cond + [(and (equal? library-identifiers '((srfi :23 error tricks))) (equal? expressions '(SRFI-23-error->R6RS))) + (add-rule-procedure rules `((,do-nothing . ,body-process) . ,target-identifier))] + [(and (equal? library-identifiers '((srfi private include))) (equal? expressions '(include/resolve))) + (let ([target-lambda + (lambda (root-file-node root-library-node document index-node) + (include-resolve-process root-file-node root-library-node document index-node + (lambda (current-document) + (file-linkage-set! file-linkage (uri->path (document-uri document)) (uri->path (document-uri current-document))) + (step root-file-node root-library-node file-linkage current-document expanded+callee-list (reverse (cdr (reverse memory)))))))]) + (add-rule-procedure rules `((,target-lambda) . ,target-identifier)))] + [(and (contain? (map identifier-reference-type top) 'syntax-variable) (not (contain? memory (car (reverse possible-new-memory))))) + ; (fold-left add-rule-procedure rules + ; (map + ; (lambda (t) + ; `((,(lambda (root-file-node root-library-node document index-node) + ; (self-defined-syntax-process t index-node document expanded+callee-list + ; (lambda (specific-document generated-index-node new-expanded+callee-list) + ; (step root-file-node root-library-node file-linkage specific-document generated-index-node new-expanded+callee-list + ; ;看起来在处理identifier-list的时候,因为一开始没加,导致了一些问题。可能出在source->annotaiton的过程中,也可能出在step过程中 + ; ; `(,@(reverse (cdr (reverse memory))) (,(car (reverse memory)) . ,identifier-list)) + ; possible-new-memory))))) + ; . ,t)) + ; top)) + ;not now to delete + rules + ] + [else rules]))) +) \ No newline at end of file diff --git a/analysis/identifier/rules/srfi/include-resolve.sls b/analysis/identifier/self-defined-rules/srfi/include-resolve.sls similarity index 95% rename from analysis/identifier/rules/srfi/include-resolve.sls rename to analysis/identifier/self-defined-rules/srfi/include-resolve.sls index 394184f..0671e24 100644 --- a/analysis/identifier/rules/srfi/include-resolve.sls +++ b/analysis/identifier/self-defined-rules/srfi/include-resolve.sls @@ -1,4 +1,4 @@ -(library (scheme-langserver analysis identifier rules srfi include-resolve) +(library (scheme-langserver analysis identifier self-defined-rules srfi include-resolve) (export include-resolve-process) (import (chezscheme) From 5bb03a8474eba312b0e1e9347a5c3f66db63b93d Mon Sep 17 00:00:00 2001 From: ufo5260987423 Date: Tue, 7 Jan 2025 08:56:49 +0800 Subject: [PATCH 31/44] fix:replace try with ufo-try --- Akku.lock | 9 +- Akku.manifest | 3 +- analysis/abstract-interpreter.sls | 2 +- analysis/dependency/rules/library-import.sls | 2 +- analysis/identifier/macro-expander.sls | 2 +- analysis/identifier/rules/body.sls | 2 +- analysis/identifier/rules/case-lambda.sls | 2 +- .../identifier/rules/define-record-type.sls | 2 +- analysis/identifier/rules/define-syntax.sls | 2 +- .../rules/define-top-level-syntax.sls | 2 +- .../rules/define-top-level-value.sls | 2 +- analysis/identifier/rules/define.sls | 2 +- analysis/identifier/rules/do.sls | 2 +- .../identifier/rules/fluid-let-syntax.sls | 2 +- analysis/identifier/rules/fluid-let.sls | 2 +- .../identifier/rules/identifier-syntax.sls | 2 +- analysis/identifier/rules/lambda.sls | 2 +- analysis/identifier/rules/let*-values.sls | 2 +- analysis/identifier/rules/let*.sls | 2 +- analysis/identifier/rules/let-syntax.sls | 2 +- analysis/identifier/rules/let-values.sls | 2 +- analysis/identifier/rules/let.sls | 2 +- analysis/identifier/rules/letrec*.sls | 2 +- analysis/identifier/rules/letrec-syntax.sls | 2 +- analysis/identifier/rules/letrec.sls | 2 +- analysis/identifier/rules/library-import.sls | 2 +- analysis/identifier/rules/load-library.sls | 2 +- analysis/identifier/rules/load-program.sls | 2 +- analysis/identifier/rules/load.sls | 2 +- .../identifier/rules/self-defined-syntax.sls | 2 +- analysis/identifier/rules/syntax-case.sls | 2 +- analysis/identifier/rules/syntax-rules.sls | 2 +- analysis/identifier/rules/with-syntax.sls | 2 +- .../srfi/include-resolve.sls | 2 +- analysis/tokenizer.sls | 2 +- .../inner-type-checker.sls | 2 +- .../domain-specific-language/interpreter.sls | 2 +- .../domain-specific-language/syntax-candy.sls | 2 +- analysis/type/substitutions/rules/define.sls | 2 +- analysis/type/substitutions/rules/do.sls | 2 +- analysis/type/substitutions/rules/if.sls | 2 +- analysis/type/substitutions/rules/lambda.sls | 2 +- analysis/type/substitutions/rules/let.sls | 2 +- analysis/type/substitutions/rules/record.sls | 2 +- analysis/type/substitutions/rules/trivial.sls | 2 +- analysis/type/substitutions/util.sls | 2 +- analysis/workspace.sls | 2 +- protocol/apis/document-diagnostic.sls | 2 +- protocol/apis/document-sync.sls | 2 +- scheme-langserver.sls | 2 +- .../identifier/rules/test-syntax-case.sps | 17 ++- util/try.sls | 124 ------------------ 52 files changed, 67 insertions(+), 182 deletions(-) delete mode 100644 util/try.sls diff --git a/Akku.lock b/Akku.lock index 781af31..0c37049 100644 --- a/Akku.lock +++ b/Akku.lock @@ -67,6 +67,11 @@ (url "https://archive.akkuscm.org/archive/pkg/s/struct-pack_1.1.1_repack.tar.xz")) (content (sha256 "42d34a4d7052bdda1bddec0dfddd8f1e576bd0a51b483215a4ca3a8ed7b56d09"))) + ((name "ufo-try") + (location + (url "https://archive.akkuscm.org/archive/pkg/u/ufo-try_1.0.0_repack.tar.xz")) + (content + (sha256 "37bab16e0893f771e5f51c005cbd2d8884bb0c07b163c563325acc2a73957f1c"))) ((name "srfi-180") (location (url "https://archive.akkuscm.org/archive/pkg/s/srfi-180_1.0.0-alpha.0_repack.tar.xz")) @@ -104,6 +109,6 @@ (sha256 "b32f539326abebc0ac8169a2dd1085944ce244ae8e29eee9ae79c6a886662d7c"))) ((name "chez-srfi") (location - (url "https://archive.akkuscm.org/archive/pkg/c/chez-srfi_0.0.0-akku.209.552cd37_repack.tar.xz")) + (url "https://archive.akkuscm.org/archive/pkg/c/chez-srfi_0.0.0-akku.244.b424440_repack.tar.xz")) (content - (sha256 "f0f620f24a4765b85d3157b670e319d6cd30240bfc78f812af1f04cf6f8804e6")))) + (sha256 "f4968e3d74c30d98297aaff3753b11225de45f99795cc2e3f6233e93f46d7c41")))) diff --git a/Akku.manifest b/Akku.manifest index f04bf7d..af595db 100644 --- a/Akku.manifest +++ b/Akku.manifest @@ -6,7 +6,8 @@ "This package is a language server protocol implementation helping scheme programming.") (authors "WANG Zheng") (license "MIT") - (depends ("srfi-180" "^1.0.0-alpha.0") + (depends ("ufo-try" "^1.0.0") + ("srfi-180" "^1.0.0-alpha.0") ("ufo-thread-pool" "^1.0.3") ("ufo-threaded-function" "^1.0.4") ("uuid" "^1.0.0-beta.0") diff --git a/analysis/abstract-interpreter.sls b/analysis/abstract-interpreter.sls index e6d4435..4f441eb 100644 --- a/analysis/abstract-interpreter.sls +++ b/analysis/abstract-interpreter.sls @@ -3,7 +3,7 @@ (import (chezscheme) - (scheme-langserver util try) + (ufo-try) (scheme-langserver util path) (scheme-langserver util contain) (scheme-langserver util dedupe) diff --git a/analysis/dependency/rules/library-import.sls b/analysis/dependency/rules/library-import.sls index 7c2879c..7b5763c 100644 --- a/analysis/dependency/rules/library-import.sls +++ b/analysis/dependency/rules/library-import.sls @@ -6,7 +6,7 @@ (ufo-match) (scheme-langserver analysis identifier reference) - (scheme-langserver util try) + (ufo-try) (scheme-langserver virtual-file-system index-node) (scheme-langserver virtual-file-system document) diff --git a/analysis/identifier/macro-expander.sls b/analysis/identifier/macro-expander.sls index 818291a..629fc99 100644 --- a/analysis/identifier/macro-expander.sls +++ b/analysis/identifier/macro-expander.sls @@ -9,7 +9,7 @@ (chezscheme) (ufo-match) - (scheme-langserver util try) + (ufo-try) (scheme-langserver util path) (scheme-langserver util dedupe) (scheme-langserver util contain) diff --git a/analysis/identifier/rules/body.sls b/analysis/identifier/rules/body.sls index bb9f58e..7733add 100644 --- a/analysis/identifier/rules/body.sls +++ b/analysis/identifier/rules/body.sls @@ -4,7 +4,7 @@ (chezscheme) (ufo-match) - (scheme-langserver util try) + (ufo-try) (scheme-langserver analysis identifier reference) diff --git a/analysis/identifier/rules/case-lambda.sls b/analysis/identifier/rules/case-lambda.sls index 11f508c..2ff542e 100644 --- a/analysis/identifier/rules/case-lambda.sls +++ b/analysis/identifier/rules/case-lambda.sls @@ -4,7 +4,7 @@ (chezscheme) (ufo-match) - (scheme-langserver util try) + (ufo-try) (scheme-langserver analysis identifier reference) (scheme-langserver analysis identifier rules lambda) diff --git a/analysis/identifier/rules/define-record-type.sls b/analysis/identifier/rules/define-record-type.sls index dc88f27..e8d2803 100644 --- a/analysis/identifier/rules/define-record-type.sls +++ b/analysis/identifier/rules/define-record-type.sls @@ -6,7 +6,7 @@ (ufo-match) (scheme-langserver util path) - (scheme-langserver util try) + (ufo-try) (scheme-langserver analysis util) (scheme-langserver analysis identifier reference) diff --git a/analysis/identifier/rules/define-syntax.sls b/analysis/identifier/rules/define-syntax.sls index 4a4710e..a65d81d 100644 --- a/analysis/identifier/rules/define-syntax.sls +++ b/analysis/identifier/rules/define-syntax.sls @@ -4,7 +4,7 @@ (chezscheme) (ufo-match) - (scheme-langserver util try) + (ufo-try) (scheme-langserver analysis util) (scheme-langserver analysis identifier reference) diff --git a/analysis/identifier/rules/define-top-level-syntax.sls b/analysis/identifier/rules/define-top-level-syntax.sls index 8f1324c..d53fe42 100644 --- a/analysis/identifier/rules/define-top-level-syntax.sls +++ b/analysis/identifier/rules/define-top-level-syntax.sls @@ -4,7 +4,7 @@ (chezscheme) (ufo-match) - (scheme-langserver util try) + (ufo-try) (scheme-langserver analysis identifier util) (scheme-langserver analysis identifier reference) diff --git a/analysis/identifier/rules/define-top-level-value.sls b/analysis/identifier/rules/define-top-level-value.sls index 46035dd..e1c4dfe 100644 --- a/analysis/identifier/rules/define-top-level-value.sls +++ b/analysis/identifier/rules/define-top-level-value.sls @@ -4,7 +4,7 @@ (chezscheme) (ufo-match) - (scheme-langserver util try) + (ufo-try) (scheme-langserver analysis identifier util) (scheme-langserver analysis identifier reference) diff --git a/analysis/identifier/rules/define.sls b/analysis/identifier/rules/define.sls index f5d9410..6ccc6cc 100644 --- a/analysis/identifier/rules/define.sls +++ b/analysis/identifier/rules/define.sls @@ -4,7 +4,7 @@ (chezscheme) (ufo-match) - (scheme-langserver util try) + (ufo-try) (scheme-langserver analysis identifier util) (scheme-langserver analysis identifier reference) diff --git a/analysis/identifier/rules/do.sls b/analysis/identifier/rules/do.sls index 52aaf15..0aaf462 100644 --- a/analysis/identifier/rules/do.sls +++ b/analysis/identifier/rules/do.sls @@ -4,7 +4,7 @@ (chezscheme) (ufo-match) - (scheme-langserver util try) + (ufo-try) (scheme-langserver analysis identifier reference) diff --git a/analysis/identifier/rules/fluid-let-syntax.sls b/analysis/identifier/rules/fluid-let-syntax.sls index f7bc0da..266a488 100644 --- a/analysis/identifier/rules/fluid-let-syntax.sls +++ b/analysis/identifier/rules/fluid-let-syntax.sls @@ -4,7 +4,7 @@ (chezscheme) (ufo-match) - (scheme-langserver util try) + (ufo-try) (scheme-langserver analysis identifier reference) (scheme-langserver analysis identifier rules fluid-let) diff --git a/analysis/identifier/rules/fluid-let.sls b/analysis/identifier/rules/fluid-let.sls index 8059833..ce8d91f 100644 --- a/analysis/identifier/rules/fluid-let.sls +++ b/analysis/identifier/rules/fluid-let.sls @@ -7,7 +7,7 @@ (chezscheme) (ufo-match) - (scheme-langserver util try) + (ufo-try) (scheme-langserver analysis identifier reference) diff --git a/analysis/identifier/rules/identifier-syntax.sls b/analysis/identifier/rules/identifier-syntax.sls index 17bf7e0..f1c7699 100644 --- a/analysis/identifier/rules/identifier-syntax.sls +++ b/analysis/identifier/rules/identifier-syntax.sls @@ -4,7 +4,7 @@ (chezscheme) (ufo-match) - (scheme-langserver util try) + (ufo-try) (scheme-langserver util contain) (scheme-langserver analysis identifier reference) diff --git a/analysis/identifier/rules/lambda.sls b/analysis/identifier/rules/lambda.sls index 5e9eb39..e60726e 100644 --- a/analysis/identifier/rules/lambda.sls +++ b/analysis/identifier/rules/lambda.sls @@ -6,7 +6,7 @@ (chezscheme) (ufo-match) - (scheme-langserver util try) + (ufo-try) (scheme-langserver analysis identifier reference) diff --git a/analysis/identifier/rules/let*-values.sls b/analysis/identifier/rules/let*-values.sls index 1e508bb..7e49652 100644 --- a/analysis/identifier/rules/let*-values.sls +++ b/analysis/identifier/rules/let*-values.sls @@ -4,7 +4,7 @@ (chezscheme) (ufo-match) - (scheme-langserver util try) + (ufo-try) (scheme-langserver analysis identifier reference) (scheme-langserver analysis identifier rules let) diff --git a/analysis/identifier/rules/let*.sls b/analysis/identifier/rules/let*.sls index a3abe52..27dd275 100644 --- a/analysis/identifier/rules/let*.sls +++ b/analysis/identifier/rules/let*.sls @@ -4,7 +4,7 @@ (chezscheme) (ufo-match) - (scheme-langserver util try) + (ufo-try) (scheme-langserver analysis identifier reference) (scheme-langserver analysis identifier rules let) diff --git a/analysis/identifier/rules/let-syntax.sls b/analysis/identifier/rules/let-syntax.sls index 2a23ec6..08171cb 100644 --- a/analysis/identifier/rules/let-syntax.sls +++ b/analysis/identifier/rules/let-syntax.sls @@ -4,7 +4,7 @@ (chezscheme) (ufo-match) - (scheme-langserver util try) + (ufo-try) (scheme-langserver analysis identifier reference) (scheme-langserver analysis identifier rules let) diff --git a/analysis/identifier/rules/let-values.sls b/analysis/identifier/rules/let-values.sls index 6cd9c36..95ee466 100644 --- a/analysis/identifier/rules/let-values.sls +++ b/analysis/identifier/rules/let-values.sls @@ -4,7 +4,7 @@ (chezscheme) (ufo-match) - (scheme-langserver util try) + (ufo-try) (scheme-langserver analysis identifier reference) (scheme-langserver analysis identifier rules let) diff --git a/analysis/identifier/rules/let.sls b/analysis/identifier/rules/let.sls index 3ffbc70..73db87a 100644 --- a/analysis/identifier/rules/let.sls +++ b/analysis/identifier/rules/let.sls @@ -6,7 +6,7 @@ (chezscheme) (ufo-match) - (scheme-langserver util try) + (ufo-try) (scheme-langserver analysis identifier reference) diff --git a/analysis/identifier/rules/letrec*.sls b/analysis/identifier/rules/letrec*.sls index f291388..2dc8c4d 100644 --- a/analysis/identifier/rules/letrec*.sls +++ b/analysis/identifier/rules/letrec*.sls @@ -4,7 +4,7 @@ (chezscheme) (ufo-match) - (scheme-langserver util try) + (ufo-try) (scheme-langserver analysis identifier reference) (scheme-langserver analysis identifier rules let) diff --git a/analysis/identifier/rules/letrec-syntax.sls b/analysis/identifier/rules/letrec-syntax.sls index f2baff7..4880cab 100644 --- a/analysis/identifier/rules/letrec-syntax.sls +++ b/analysis/identifier/rules/letrec-syntax.sls @@ -4,7 +4,7 @@ (chezscheme) (ufo-match) - (scheme-langserver util try) + (ufo-try) (scheme-langserver analysis identifier reference) (scheme-langserver analysis identifier rules let) diff --git a/analysis/identifier/rules/letrec.sls b/analysis/identifier/rules/letrec.sls index c8dc580..37e5822 100644 --- a/analysis/identifier/rules/letrec.sls +++ b/analysis/identifier/rules/letrec.sls @@ -4,7 +4,7 @@ (chezscheme) (ufo-match) - (scheme-langserver util try) + (ufo-try) (scheme-langserver analysis identifier reference) (scheme-langserver analysis identifier rules let) diff --git a/analysis/identifier/rules/library-import.sls b/analysis/identifier/rules/library-import.sls index 629fc03..593166e 100644 --- a/analysis/identifier/rules/library-import.sls +++ b/analysis/identifier/rules/library-import.sls @@ -10,7 +10,7 @@ (chezscheme) (ufo-match) - (scheme-langserver util try) + (ufo-try) (scheme-langserver analysis identifier meta) (scheme-langserver analysis identifier reference) diff --git a/analysis/identifier/rules/load-library.sls b/analysis/identifier/rules/load-library.sls index 4ea6692..eb92f54 100644 --- a/analysis/identifier/rules/load-library.sls +++ b/analysis/identifier/rules/load-library.sls @@ -5,7 +5,7 @@ (ufo-match) (scheme-langserver util path) - (scheme-langserver util try) + (ufo-try) (scheme-langserver analysis util) (scheme-langserver analysis identifier reference) diff --git a/analysis/identifier/rules/load-program.sls b/analysis/identifier/rules/load-program.sls index 119de0d..7db4963 100644 --- a/analysis/identifier/rules/load-program.sls +++ b/analysis/identifier/rules/load-program.sls @@ -5,7 +5,7 @@ (ufo-match) (scheme-langserver util path) - (scheme-langserver util try) + (ufo-try) (scheme-langserver analysis util) (scheme-langserver analysis identifier reference) diff --git a/analysis/identifier/rules/load.sls b/analysis/identifier/rules/load.sls index d3d63f7..cba188a 100644 --- a/analysis/identifier/rules/load.sls +++ b/analysis/identifier/rules/load.sls @@ -6,7 +6,7 @@ (scheme-langserver util dedupe) (scheme-langserver util path) - (scheme-langserver util try) + (ufo-try) (scheme-langserver analysis util) (scheme-langserver analysis identifier reference) diff --git a/analysis/identifier/rules/self-defined-syntax.sls b/analysis/identifier/rules/self-defined-syntax.sls index 22a129e..c946035 100644 --- a/analysis/identifier/rules/self-defined-syntax.sls +++ b/analysis/identifier/rules/self-defined-syntax.sls @@ -5,7 +5,7 @@ (chezscheme) (ufo-match) - (scheme-langserver util try) + (ufo-try) (scheme-langserver util path) (scheme-langserver util dedupe) (scheme-langserver util contain) diff --git a/analysis/identifier/rules/syntax-case.sls b/analysis/identifier/rules/syntax-case.sls index 9ca02b9..392dcc0 100644 --- a/analysis/identifier/rules/syntax-case.sls +++ b/analysis/identifier/rules/syntax-case.sls @@ -7,7 +7,7 @@ (chezscheme) (ufo-match) - (scheme-langserver util try) + (ufo-try) (scheme-langserver util contain) (scheme-langserver analysis identifier reference) diff --git a/analysis/identifier/rules/syntax-rules.sls b/analysis/identifier/rules/syntax-rules.sls index 4e07bd7..4935b16 100644 --- a/analysis/identifier/rules/syntax-rules.sls +++ b/analysis/identifier/rules/syntax-rules.sls @@ -4,7 +4,7 @@ (chezscheme) (ufo-match) - (scheme-langserver util try) + (ufo-try) (scheme-langserver util contain) (scheme-langserver util dedupe) diff --git a/analysis/identifier/rules/with-syntax.sls b/analysis/identifier/rules/with-syntax.sls index 39231bf..59d3a49 100644 --- a/analysis/identifier/rules/with-syntax.sls +++ b/analysis/identifier/rules/with-syntax.sls @@ -4,7 +4,7 @@ (chezscheme) (ufo-match) - (scheme-langserver util try) + (ufo-try) (scheme-langserver util contain) (scheme-langserver analysis identifier reference) diff --git a/analysis/identifier/self-defined-rules/srfi/include-resolve.sls b/analysis/identifier/self-defined-rules/srfi/include-resolve.sls index 0671e24..3288438 100644 --- a/analysis/identifier/self-defined-rules/srfi/include-resolve.sls +++ b/analysis/identifier/self-defined-rules/srfi/include-resolve.sls @@ -5,7 +5,7 @@ (ufo-match) (scheme-langserver util path) - (scheme-langserver util try) + (ufo-try) (scheme-langserver analysis util) (scheme-langserver analysis identifier reference) diff --git a/analysis/tokenizer.sls b/analysis/tokenizer.sls index 367a197..ad58229 100644 --- a/analysis/tokenizer.sls +++ b/analysis/tokenizer.sls @@ -6,7 +6,7 @@ (only (srfi :13) string-take string-take-right) (scheme-langserver virtual-file-system index-node) (scheme-langserver util io) - (scheme-langserver util try)) + (ufo-try)) ;I mainly handle miss-matched () and [], and here's serveral options: ;1st, make a (, ), [ or ] behined or after position diff --git a/analysis/type/domain-specific-language/inner-type-checker.sls b/analysis/type/domain-specific-language/inner-type-checker.sls index c7ae653..2fe5fb0 100644 --- a/analysis/type/domain-specific-language/inner-type-checker.sls +++ b/analysis/type/domain-specific-language/inner-type-checker.sls @@ -29,7 +29,7 @@ (chezscheme) (ufo-match) - (scheme-langserver util try) + (ufo-try) (scheme-langserver util contain) (scheme-langserver analysis identifier reference) (scheme-langserver analysis type domain-specific-language variable) diff --git a/analysis/type/domain-specific-language/interpreter.sls b/analysis/type/domain-specific-language/interpreter.sls index 53bab65..09da37f 100644 --- a/analysis/type/domain-specific-language/interpreter.sls +++ b/analysis/type/domain-specific-language/interpreter.sls @@ -25,7 +25,7 @@ (scheme-langserver util contain) (scheme-langserver util cartesian-product) (scheme-langserver util dedupe) - (scheme-langserver util try) + (ufo-try) (scheme-langserver analysis identifier reference) (scheme-langserver analysis type substitutions util) diff --git a/analysis/type/domain-specific-language/syntax-candy.sls b/analysis/type/domain-specific-language/syntax-candy.sls index fbd00ce..e1fdc84 100644 --- a/analysis/type/domain-specific-language/syntax-candy.sls +++ b/analysis/type/domain-specific-language/syntax-candy.sls @@ -13,7 +13,7 @@ (chezscheme) (scheme-langserver util matrix) (scheme-langserver util contain) - (scheme-langserver util try)) + (ufo-try)) (define-record-type segment (fields diff --git a/analysis/type/substitutions/rules/define.sls b/analysis/type/substitutions/rules/define.sls index 3c84f94..08cafe2 100644 --- a/analysis/type/substitutions/rules/define.sls +++ b/analysis/type/substitutions/rules/define.sls @@ -4,7 +4,7 @@ (chezscheme) (ufo-match) - (scheme-langserver util try) + (ufo-try) (scheme-langserver util cartesian-product) (scheme-langserver analysis identifier reference) diff --git a/analysis/type/substitutions/rules/do.sls b/analysis/type/substitutions/rules/do.sls index 1b4120a..9066680 100644 --- a/analysis/type/substitutions/rules/do.sls +++ b/analysis/type/substitutions/rules/do.sls @@ -4,7 +4,7 @@ (chezscheme) (ufo-match) - (scheme-langserver util try) + (ufo-try) (scheme-langserver util cartesian-product) (scheme-langserver analysis identifier reference) diff --git a/analysis/type/substitutions/rules/if.sls b/analysis/type/substitutions/rules/if.sls index e271be1..43e65e6 100644 --- a/analysis/type/substitutions/rules/if.sls +++ b/analysis/type/substitutions/rules/if.sls @@ -4,7 +4,7 @@ (chezscheme) (ufo-match) - (scheme-langserver util try) + (ufo-try) (scheme-langserver analysis identifier reference) (scheme-langserver analysis type substitutions util) diff --git a/analysis/type/substitutions/rules/lambda.sls b/analysis/type/substitutions/rules/lambda.sls index 3ee99a3..bdf32c0 100644 --- a/analysis/type/substitutions/rules/lambda.sls +++ b/analysis/type/substitutions/rules/lambda.sls @@ -4,7 +4,7 @@ (chezscheme) (ufo-match) - (scheme-langserver util try) + (ufo-try) (scheme-langserver util cartesian-product) (scheme-langserver analysis identifier reference) diff --git a/analysis/type/substitutions/rules/let.sls b/analysis/type/substitutions/rules/let.sls index fb28714..dbcc42e 100644 --- a/analysis/type/substitutions/rules/let.sls +++ b/analysis/type/substitutions/rules/let.sls @@ -4,7 +4,7 @@ (chezscheme) (ufo-match) - (scheme-langserver util try) + (ufo-try) (scheme-langserver util contain) (scheme-langserver util cartesian-product) diff --git a/analysis/type/substitutions/rules/record.sls b/analysis/type/substitutions/rules/record.sls index 42a7a0e..a53fb52 100644 --- a/analysis/type/substitutions/rules/record.sls +++ b/analysis/type/substitutions/rules/record.sls @@ -5,7 +5,7 @@ (ufo-match) (scheme-langserver util cartesian-product) - (scheme-langserver util try) + (ufo-try) (scheme-langserver util sub-list) (scheme-langserver analysis identifier reference) diff --git a/analysis/type/substitutions/rules/trivial.sls b/analysis/type/substitutions/rules/trivial.sls index 3a216cd..677ba35 100644 --- a/analysis/type/substitutions/rules/trivial.sls +++ b/analysis/type/substitutions/rules/trivial.sls @@ -9,7 +9,7 @@ (scheme-langserver util dedupe) (scheme-langserver util contain) (scheme-langserver util cartesian-product) - (scheme-langserver util try) + (ufo-try) (scheme-langserver analysis identifier reference) (scheme-langserver analysis identifier meta) diff --git a/analysis/type/substitutions/util.sls b/analysis/type/substitutions/util.sls index 661c485..17f75e5 100644 --- a/analysis/type/substitutions/util.sls +++ b/analysis/type/substitutions/util.sls @@ -11,7 +11,7 @@ (import (chezscheme) - (scheme-langserver util try) + (ufo-try) (scheme-langserver util cartesian-product) (scheme-langserver analysis identifier reference) (scheme-langserver analysis type domain-specific-language variable) diff --git a/analysis/workspace.sls b/analysis/workspace.sls index 94521e5..03483df 100644 --- a/analysis/workspace.sls +++ b/analysis/workspace.sls @@ -29,7 +29,7 @@ (only (srfi :13 strings) string-suffix?) (scheme-langserver util path) - (scheme-langserver util try) + (ufo-try) (scheme-langserver util io) (scheme-langserver util dedupe) (scheme-langserver util contain) diff --git a/protocol/apis/document-diagnostic.sls b/protocol/apis/document-diagnostic.sls index 8a04797..8536665 100644 --- a/protocol/apis/document-diagnostic.sls +++ b/protocol/apis/document-diagnostic.sls @@ -13,7 +13,7 @@ (scheme-langserver util association) (scheme-langserver util path) - (scheme-langserver util try) + (ufo-try) (scheme-langserver util dedupe) (scheme-langserver virtual-file-system index-node) diff --git a/protocol/apis/document-sync.sls b/protocol/apis/document-sync.sls index e14dc93..1d5fc4b 100644 --- a/protocol/apis/document-sync.sls +++ b/protocol/apis/document-sync.sls @@ -13,7 +13,7 @@ (scheme-langserver util association) (scheme-langserver util path) - (scheme-langserver util try) + (ufo-try) (scheme-langserver util text) (scheme-langserver util io) diff --git a/scheme-langserver.sls b/scheme-langserver.sls index e125ad2..854e275 100644 --- a/scheme-langserver.sls +++ b/scheme-langserver.sls @@ -5,6 +5,7 @@ (chezscheme) (ufo-thread-pool) (ufo-match) + (ufo-try) (scheme-langserver analysis workspace) @@ -24,7 +25,6 @@ (scheme-langserver protocol apis document-symbol) (scheme-langserver protocol apis document-diagnostic) - (scheme-langserver util try) (scheme-langserver util association) (scheme-langserver util path)) diff --git a/tests/analysis/identifier/rules/test-syntax-case.sps b/tests/analysis/identifier/rules/test-syntax-case.sps index d72f137..332e8d5 100755 --- a/tests/analysis/identifier/rules/test-syntax-case.sps +++ b/tests/analysis/identifier/rules/test-syntax-case.sps @@ -20,15 +20,18 @@ (scheme-langserver virtual-file-system document)) (test-begin "syntax-case-process") - (let* ( [root-file-node (init-virtual-file-system "./util" '() (lambda (fuzzy) #t))] + (let* ( [root-file-node (init-virtual-file-system (current-directory) '() (lambda (fuzzy) #t))] [root-library-node '()] - [target-file-node (walk-file root-file-node "./util/try.sls")] + [target-file-node (walk-file root-file-node (string-append (current-directory) "/.akku/src/ufo-try/ufo-try.sls"))] [document (file-node-document target-file-node)] [root-index-node (car (document-index-node-list document))] ; a syntax-case node - [ready-index-node (pick-index-node-from `(,root-index-node) (text+position->int (document-text document) 106 15))] - [target-index-node (pick-index-node-from `(,root-index-node) (text+position->int (document-text document) 108 17))]) + [ready-index-node (pick-index-node-from `(,root-index-node) (text+position->int (document-text document) 103 14))] + [target-index-node (pick-index-node-from `(,root-index-node) (text+position->int (document-text document) 105 16))]) + (debug:print-expression ready-index-node) + (debug:print-expression target-index-node) (syntax-case-process root-file-node root-library-node document ready-index-node) + (pretty-print (map identifier-reference-identifier (index-node-references-import-in-this-node target-index-node))) (test-equal #f (not (find @@ -38,13 +41,13 @@ (test-end) (test-begin "syntax-case-process for quasisyntaxand unsyntax") - (let* ( [workspace (init-workspace (string-append (current-directory) "/util") #f #f)] + (let* ( [workspace (init-workspace (string-append (current-directory) "/.akku/src/ufo-try/") #f #f)] [root-file-node (workspace-file-node workspace)] - [target-file-node (walk-file root-file-node (string-append (current-directory) "/util/try.sls"))] + [target-file-node (walk-file root-file-node (string-append (current-directory) "/.akku/src/ufo-try/ufo-try.sls"))] [root-library-node (init-library-node root-file-node)] [file-linkage (workspace-file-linkage workspace)] [document (file-node-document target-file-node)] - [loop-index-node (pick-index-node-from (document-index-node-list document) (text+position->int (document-text document) 114 75))]) + [loop-index-node (pick-index-node-from (document-index-node-list document) (text+position->int (document-text document) 112 75))]) (document-ordered-reference-list-set! document (sort-identifier-references (find-meta '(chezscheme)))) (step root-file-node root-library-node file-linkage document) (test-equal '(loop) (map identifier-reference-identifier (find-available-references-for document loop-index-node 'loop)))) diff --git a/util/try.sls b/util/try.sls deleted file mode 100644 index 3359356..0000000 --- a/util/try.sls +++ /dev/null @@ -1,124 +0,0 @@ -;; Copyright (C) 2016 Chris Vine -;; -;; This file is licensed under the Apache License, Version 2.0 (the -;; "License"); you may not use this file except in compliance with the -;; License. You may obtain a copy of the License at -;; -;; http://www.apache.org/licenses/LICENSE-2.0 -;; -;; Unless required by applicable law or agreed to in writing, software -;; distributed under the License is distributed on an "AS IS" BASIS, -;; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or -;; implied. See the License for the specific language governing -;; permissions and limitations under the License. - -#!r6rs - -(library (scheme-langserver util try) - (export try except) - (import (chezscheme)) - -;; Normally if you have an auxiliary keyword (here 'except') you need -;; to define it separately with define-syntax in order to export it: -;; see https://cisco.github.io/ChezScheme/csug9.5/use.html#./use:s14 . -;; Here however we do not need to do so because chezscheme already has -;; an 'except' identifier which we can rebind as an auxiliary keyword: -;; see https://cisco.github.io/ChezScheme/csug9.5/syntax.html#./syntax:s20 - -;; Try is a macro used in the implementation of the event loop -;; provided by this library, and is exported in case it is useful to -;; users. It has the syntax: -;; -;; (try body0 body1 ... (except condition cond-clause0 cond-clause1 ...)) -;; -;; It has two keywords, 'try' and 'except'. It executes the body -;; clauses, and if an exception is raised by them passes control to -;; the 'except' block with 'condition' set to the condition which was -;; raised. The cond-clauses are then evaluated as if in a cond -;; expression. If a cond test is found to be true, or there is none -;; found to be true but there is an else clause, then the relevant -;; cond consequent or else clause will be evaluated and returned. If -;; none of the cond tests in the cond-clauses is found to be true and -;; there is no else clause, the exception condition will be re-raised -;; as if by raise, for a dynamically enclosing try form, guard form or -;; with-exception-handler form (if any) to handle. -;; -;; The return value of try, if there is no exception raised by the -;; body clauses or any exception raised is handled by a cond-clause, -;; is the value of the last expression of the body clauses or of the -;; cond-clause, as the case may be. -;; -;; This is similar to but not the same as the R6RS 'guard' form. The -;; guard form has the property that the cond tests and any cond -;; consequent or else clause are evaluated in the dynamic environment -;; of the call to 'guard', and if no cond test is found to be true and -;; there is no else clause, there is a return to the dynamic -;; environment in which the exception arose for the exception -;; condition to be re-raised with raise-continuable (the use of -;; raise-continuable is to allow continuable exceptions to propagate -;; successfully through the 'guard' form). However, this can result -;; in triggering multiple dynamic unwinds and rewinds. As mentioned, -;; the 'try' form always re-raises with 'raise' (so in effect -;; converting any continuable exception to a non-continuable one). -;; Furthermore it only exits the dynamic environment in which the -;; exception occurred once. Prior to version 0.24 of this library it -;; did this by evaluating the cond tests, and any cond consequent or -;; else clause, or re-raising the exception, in the dynamic -;; environment of the original call to 'try'. From version 0.24 the -;; cond tests are evaluated, and any re-raising of the exception -;; occurs, in the dynamic environment in which the exception arose, -;; and only the cond consequent (upon a test succeeding) or else -;; clause is evaluated in the dynamic environment of the call to -;; 'try'. This change is to avoid losing relevant debugging -;; information should the exception be re-raised, but in the highly -;; unlikely event that user code which applies this macro has a cond -;; test which accesses parameter values set by parameterize in the -;; 'try' body clauses, it could change the behavior of the cond test. -;; If so, checkout try.ss for version 0.23 and use that (and have a -;; little less debugability): either version of try.ss will work fine -;; with this library. -;; -;; Put another way, the 'try' macro behaves like a conventional stack -;; unwinding exception implementation. 'guard' does not necessarily -;; do so. -;; -;; Continuable exceptions with generalised handling forms such as -;; 'guard' are generally to be avoided, as they may break any -;; intermediate resource management which uses rethrows or dynamic -;; winds. Continuable exceptions are also usually unsuitable for use -;; with asynchronous event handlers, which is why the 'try' form is -;; used in the implementation of the event loop provided by this -;; library. But for cases where that is not true and you know what -;; you are doing, you can use 'guard' instead of 'try' for maintaining -;; continuable exceptions as continuable. -;; -;; The 'try' macro is first available in version 0.3 of this library. -(define-syntax try - (lambda (x) - (syntax-case x (except) - [(try body0 body1 ... (except condition clause0 clause1 ...)) - #`((call/1cc - (lambda (escape) - (with-exception-handler - (lambda (c) - (let ([condition c]) ;; clauses may set! this - #,(let loop ([first #'clause0] [rest #'(clause1 ...)]) - (if (null? rest) - (syntax-case first (else =>) - [(else h0 h1 ...) #'(escape (lambda () h0 h1 ...))] - [(tst) #'(let ([t tst]) (if t (escape (lambda () t)) (raise c)))] - [(tst => l) #'(let ([t tst]) (if t (escape (lambda () (l t))) (raise c)))] - [(tst h0 h1 ...) #'(if tst (escape (lambda () h0 h1 ...)) (raise c))]) - (syntax-case first (=>) - [(tst) #`(let ([t tst]) (if t (escape (lambda () t)) #,(loop (car rest) (cdr rest))))] - [(tst => l) #`(let ([t tst]) (if t (escape (lambda () (l t))) #,(loop (car rest) (cdr rest))))] - [(tst h0 h1 ...) #`(if tst (escape (lambda () h0 h1 ...)) #,(loop (car rest) (cdr rest)))]))))) - (lambda () - ;; cater for multiple return values - (call-with-values - (lambda () body0 body1 ...) - (lambda args - (escape (lambda () - (apply values args))))))))))]))) - -) ;; library From 832d1a8da45407935795baebf46c22e451aed185 Mon Sep 17 00:00:00 2001 From: ufo5260987423 Date: Tue, 7 Jan 2025 09:39:35 +0800 Subject: [PATCH 32/44] fix --- .../identifier/rules/test-syntax-case.sps | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/tests/analysis/identifier/rules/test-syntax-case.sps b/tests/analysis/identifier/rules/test-syntax-case.sps index 332e8d5..32f0c7e 100755 --- a/tests/analysis/identifier/rules/test-syntax-case.sps +++ b/tests/analysis/identifier/rules/test-syntax-case.sps @@ -12,6 +12,8 @@ (scheme-langserver analysis identifier meta) (scheme-langserver analysis abstract-interpreter) + (scheme-langserver analysis package-manager akku) + (scheme-langserver util text) (scheme-langserver protocol alist-access-object) @@ -20,18 +22,16 @@ (scheme-langserver virtual-file-system document)) (test-begin "syntax-case-process") - (let* ( [root-file-node (init-virtual-file-system (current-directory) '() (lambda (fuzzy) #t))] - [root-library-node '()] + (let* ( [workspace (init-workspace (string-append (current-directory) "/.akku/src/ufo-try/") #f #f)] + [root-file-node (workspace-file-node workspace)] [target-file-node (walk-file root-file-node (string-append (current-directory) "/.akku/src/ufo-try/ufo-try.sls"))] + [root-library-node (workspace-library-node workspace)] [document (file-node-document target-file-node)] [root-index-node (car (document-index-node-list document))] ; a syntax-case node - [ready-index-node (pick-index-node-from `(,root-index-node) (text+position->int (document-text document) 103 14))] - [target-index-node (pick-index-node-from `(,root-index-node) (text+position->int (document-text document) 105 16))]) - (debug:print-expression ready-index-node) - (debug:print-expression target-index-node) + [ready-index-node (pick-index-node-from `(,root-index-node) (text+position->int (document-text document) 104 16))] + [target-index-node (pick-index-node-from `(,root-index-node) (text+position->int (document-text document) 106 18))]) (syntax-case-process root-file-node root-library-node document ready-index-node) - (pretty-print (map identifier-reference-identifier (index-node-references-import-in-this-node target-index-node))) (test-equal #f (not (find @@ -47,7 +47,7 @@ [root-library-node (init-library-node root-file-node)] [file-linkage (workspace-file-linkage workspace)] [document (file-node-document target-file-node)] - [loop-index-node (pick-index-node-from (document-index-node-list document) (text+position->int (document-text document) 112 75))]) + [loop-index-node (pick-index-node-from (document-index-node-list document) (text+position->int (document-text document) 110 74))]) (document-ordered-reference-list-set! document (sort-identifier-references (find-meta '(chezscheme)))) (step root-file-node root-library-node file-linkage document) (test-equal '(loop) (map identifier-reference-identifier (find-available-references-for document loop-index-node 'loop)))) From 7e217f9d6ebc0d5699438e2a83a7bff1e6256708 Mon Sep 17 00:00:00 2001 From: ufo5260987423 Date: Tue, 7 Jan 2025 10:00:22 +0800 Subject: [PATCH 33/44] add:try-process --- .../self-defined-rules/ufo-try/try.sls | 41 +++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 analysis/identifier/self-defined-rules/ufo-try/try.sls diff --git a/analysis/identifier/self-defined-rules/ufo-try/try.sls b/analysis/identifier/self-defined-rules/ufo-try/try.sls new file mode 100644 index 0000000..26a38aa --- /dev/null +++ b/analysis/identifier/self-defined-rules/ufo-try/try.sls @@ -0,0 +1,41 @@ +(library (scheme-langserver analysis identifier self-defined-rules ufo-try try) + (export try-process) + (import + (chezscheme) + (ufo-match) + + (scheme-langserver util path) + (ufo-try) + + (scheme-langserver analysis util) + (scheme-langserver analysis identifier reference) + (scheme-langserver analysis identifier meta) + + (scheme-langserver virtual-file-system index-node) + (scheme-langserver virtual-file-system library-node) + (scheme-langserver virtual-file-system document) + (scheme-langserver virtual-file-system file-node)) + +(define (try-process root-file-node root-library-node document index-node step-without-document) + (let* ([ann (index-node-datum/annotations index-node)] + [expression (annotation-stripped ann)] + [parent-index-node (index-node-parent index-node)] + [current-absolute-path (uri->path (document-uri document))]) + (try + (match expression + [(_ something ... ('except (? symbol? c) branch **1)) + (let* ([children (index-node-children index-node)] + [except-index-node (car (reverse children))] + [except-children (index-node-children except-index-node)] + [c-index-node (cadr except-children)] + [reference (make-identifier-reference c document c-index-node index-node '() 'variable '() '())]) + (index-node-references-export-to-other-node-set! + c-index-node + (append + (index-node-references-export-to-other-node c-index-node) + `(,reference))) + (append-references-into-ordered-references-for document except-index-node `(,reference)))] + [else '()]) + (except c + [else '()])))) +) \ No newline at end of file From e3e97225fc614614e93242d7072d25d0cd3b325b Mon Sep 17 00:00:00 2001 From: ufo5260987423 Date: Tue, 7 Jan 2025 10:01:44 +0800 Subject: [PATCH 34/44] fix --- analysis/identifier/self-defined-rules/router.sls | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/analysis/identifier/self-defined-rules/router.sls b/analysis/identifier/self-defined-rules/router.sls index 6453055..aa040a5 100644 --- a/analysis/identifier/self-defined-rules/router.sls +++ b/analysis/identifier/self-defined-rules/router.sls @@ -15,7 +15,8 @@ (scheme-langserver analysis identifier reference) (scheme-langserver analysis identifier rules body) - (scheme-langserver analysis identifier self-defined-rules srfi include-resolve)) + (scheme-langserver analysis identifier self-defined-rules srfi include-resolve) + (scheme-langserver analysis identifier self-defined-rules ufo-try try)) (define (route&add rules target-identifier @@ -36,6 +37,8 @@ (file-linkage-set! file-linkage (uri->path (document-uri document)) (uri->path (document-uri current-document))) (step root-file-node root-library-node file-linkage current-document expanded+callee-list (reverse (cdr (reverse memory)))))))]) (add-rule-procedure rules `((,target-lambda) . ,target-identifier)))] + [(and (equal? library-identifiers '((ufo-try))) (equal? expressions '(try))) + (add-rule-procedure rules `((,try-nothing . ,do-nothing) . ,target-identifier))] [(and (contain? (map identifier-reference-type top) 'syntax-variable) (not (contain? memory (car (reverse possible-new-memory))))) ; (fold-left add-rule-procedure rules ; (map From b6f12582839aaf1cd874d6d5cc4377ceb397bfcf Mon Sep 17 00:00:00 2001 From: ufo5260987423 Date: Tue, 7 Jan 2025 10:06:32 +0800 Subject: [PATCH 35/44] fix:register try-process --- analysis/identifier/self-defined-rules/router.sls | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/analysis/identifier/self-defined-rules/router.sls b/analysis/identifier/self-defined-rules/router.sls index aa040a5..1062706 100644 --- a/analysis/identifier/self-defined-rules/router.sls +++ b/analysis/identifier/self-defined-rules/router.sls @@ -38,7 +38,7 @@ (step root-file-node root-library-node file-linkage current-document expanded+callee-list (reverse (cdr (reverse memory)))))))]) (add-rule-procedure rules `((,target-lambda) . ,target-identifier)))] [(and (equal? library-identifiers '((ufo-try))) (equal? expressions '(try))) - (add-rule-procedure rules `((,try-nothing . ,do-nothing) . ,target-identifier))] + (add-rule-procedure rules `((,try-process . ,do-nothing) . ,target-identifier))] [(and (contain? (map identifier-reference-type top) 'syntax-variable) (not (contain? memory (car (reverse possible-new-memory))))) ; (fold-left add-rule-procedure rules ; (map From 332c3d6551170d280c77dd46e658e6bfe79eb32f Mon Sep 17 00:00:00 2001 From: ufo5260987423 Date: Tue, 7 Jan 2025 10:09:04 +0800 Subject: [PATCH 36/44] fix --- analysis/identifier/self-defined-rules/ufo-try/try.sls | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/analysis/identifier/self-defined-rules/ufo-try/try.sls b/analysis/identifier/self-defined-rules/ufo-try/try.sls index 26a38aa..e07267a 100644 --- a/analysis/identifier/self-defined-rules/ufo-try/try.sls +++ b/analysis/identifier/self-defined-rules/ufo-try/try.sls @@ -16,7 +16,7 @@ (scheme-langserver virtual-file-system document) (scheme-langserver virtual-file-system file-node)) -(define (try-process root-file-node root-library-node document index-node step-without-document) +(define (try-process root-file-node root-library-node document index-node) (let* ([ann (index-node-datum/annotations index-node)] [expression (annotation-stripped ann)] [parent-index-node (index-node-parent index-node)] From d6f29684bbeef9510d9efdddf0dd7b2ea964e5ad Mon Sep 17 00:00:00 2001 From: ufo5260987423 Date: Tue, 7 Jan 2025 16:25:55 +0800 Subject: [PATCH 37/44] fix --- doc/analysis/identifier.md | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/doc/analysis/identifier.md b/doc/analysis/identifier.md index 724dc21..c463afd 100644 --- a/doc/analysis/identifier.md +++ b/doc/analysis/identifier.md @@ -92,7 +92,22 @@ Based on library framework, `export` and `import` would transfer identifier-refe | load-shared-object | (load-shared-object path) | ### Identifier binding for self-made macro -As like [try.sls](../../util/try.sls), they also produce identifiers as expanding macros. A patch will be fixed in the future. + +As like [ufo-try](https://github.com/ufo5260987423/ufo-try), they also produce identifiers as expanding macros. An example may help understanding. In following code: +```lisp +;;a self-defined try-except macro here is used to handle possible exceptions +(try + ;;some works + todo + ;;to catch exception c + (except c + ;; a branch to handle + [else c])) +``` + +Many programmers want to know the `c` in handling branch is relating to the `c` exception after `except`. It's called "goto-definition" in LSP(Language Server Protocol). However, nested macros usually cause undecidable(if I use this word correctly) time-consuming, because "goto-definition" requiring an abstract interpreter evaluates all expansions and backwarding identifier claiments from expansion to macro callee, which interleaves macro expanding. + +An alternative solution is to directly write rules handling requests, as you may see [here](../../analysis/identifier/self-defined-rules/ufo-try). It's registered in [this file](../../analysis/identifier/self-defined-rules/router.sls). ### Why does identifier catching interleave index fully updating? This question is somehow asked maybe they think would speed up auto-complete for long scheme code programming. Their basic idea is that whether the old caught identifiers can be smoothly transformed from old indexed code to newly updated indexed code. Apparently, copy and paste seems to cost less than `match` macro. However, it faced a serious problem that any seemed-locally updating may globally affect whole syntax tree, because code editing is orthogonal with index-nodes tree, and practically, is orthogonal with identifier catching. From 20d367e71e33d92f9aa819cf077bef9e6164524a Mon Sep 17 00:00:00 2001 From: ufo5260987423 Date: Sat, 11 Jan 2025 10:15:13 +0800 Subject: [PATCH 38/44] fix:hover --- protocol/apis/hover.sls | 25 +++++++++++++++---------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/protocol/apis/hover.sls b/protocol/apis/hover.sls index 69a4244..d757d25 100644 --- a/protocol/apis/hover.sls +++ b/protocol/apis/hover.sls @@ -41,7 +41,7 @@ '())]) (if (symbol? prefix) (make-alist - 'content + 'contents (list->vector (dedupe (map identifier-reference->hover (find-available-references-for document target-index-node prefix))))) '())))) @@ -49,8 +49,9 @@ (define (identifier-reference->hover reference) (if (null? (identifier-reference-index-node reference)) (symbol->string (identifier-reference-identifier reference)) - (let* ([not-target-index-node (identifier-reference-index-node reference)] - [index-node (index-node-parent not-target-index-node)] + (let* ( + ; [not-target-index-node (identifier-reference-initialization-index-node reference)] + [index-node (identifier-reference-initialization-index-node reference)] [document (identifier-reference-document reference)] [text (document-text document)] [start-pos (index-node-start index-node)] @@ -67,11 +68,15 @@ (filter (lambda (end-pos) (< end-pos start-pos)) (sort > (map index-node-end (document-index-node-list document))))]) - (string-trim - (substring - text - (if (null? parent-index-node-end-list) - (if (null? document-index-node-end-list) 0 (car document-index-node-end-list)) - (car parent-index-node-end-list)) - end-pos))))) + (make-alist + 'language + "scheme") + 'value + (string-trim + (substring + text + (if (null? parent-index-node-end-list) + (if (null? document-index-node-end-list) 0 (car document-index-node-end-list)) + (car parent-index-node-end-list)) + end-pos))))) ) \ No newline at end of file From d4fdc9e570c573fdfc5d05867c0ca8d06a576693 Mon Sep 17 00:00:00 2001 From: ufo5260987423 Date: Sat, 11 Jan 2025 14:42:05 +0800 Subject: [PATCH 39/44] fix:completion --- protocol/apis/completion.sls | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/protocol/apis/completion.sls b/protocol/apis/completion.sls index c0c4bdf..1828b9e 100644 --- a/protocol/apis/completion.sls +++ b/protocol/apis/completion.sls @@ -45,7 +45,9 @@ [prefix (if (null? target-index-node) "" - (if (and (null? (index-node-children target-index-node)) (symbol? (index-node-datum/annotations target-index-node))) + (if (and + (null? (index-node-children target-index-node)) + (symbol? (annotation-stripped (index-node-datum/annotations target-index-node)))) (symbol->string (annotation-stripped (index-node-datum/annotations target-index-node))) ""))] [whole-list From 66710290d8facf4d8f81194414c12a6ba4475eec Mon Sep 17 00:00:00 2001 From: ufo5260987423 Date: Sat, 11 Jan 2025 16:11:20 +0800 Subject: [PATCH 40/44] fix --- README.md | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/README.md b/README.md index 2e2871e..aadda9c 100644 --- a/README.md +++ b/README.md @@ -15,9 +15,7 @@ This package is a language server protocol implementation helping scheme program This package also has been tested with [Chez Scheme](https://cisco.github.io/ChezScheme/) versions 9.4 and 9.5. A detailed test on version 10.0.0 will be done after upgrading my laptop OS to a newer version. -I do this open source work just in my spare time and I can contribute many splendid ideas to the community like embedding data flow analysis into scheme-langserver or many other things. And I'm continuously asking for much more donation or funding. You can click [this patreon page](https://www.patreon.com/PoorProgrammer/membership) or [爱发电](https://afdian.com/a/ufo5260987423) to donate monthly, or just donate 10 USD just once time with the following paypal link. - -[![paypal](https://www.paypalobjects.com/en_US/i/btn/btn_donateCC_LG.gif)](https://www.paypal.com/paypalme/ufo5260987423/10) +I do this open source work just in my spare time and I can contribute many splendid ideas to the community like embedding data flow analysis into scheme-langserver or many other things. And I'm continuously asking for much more donation or funding. You can donate with [this patreon page](https://www.patreon.com/PoorProgrammer/membership) or [爱发电](https://afdian.com/a/ufo5260987423). ## Compilation , Intallation & Configuration is [HERE](./doc/startup.md) From daa6fc5579066e02461d240c3032545f19783119 Mon Sep 17 00:00:00 2001 From: ufo5260987423 Date: Sun, 12 Jan 2025 09:42:44 +0800 Subject: [PATCH 41/44] fix --- protocol/apis/completion.sls | 23 +++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/protocol/apis/completion.sls b/protocol/apis/completion.sls index 1828b9e..297620b 100644 --- a/protocol/apis/completion.sls +++ b/protocol/apis/completion.sls @@ -58,12 +58,23 @@ (string-prefix? prefix (symbol->string (identifier-reference-identifier candidate-reference))))) (find-available-references-for document target-index-node))] [type-inference? (workspace-type-inference? workspace)]) - ; https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#completionList - (list->vector (map - identifier-reference->completion-item-alist - (if type-inference? - (sort-with-type-inferences document target-index-node whole-list) - (sort-identifier-references whole-list)))))) + (if (or (null? target-index-node) (equal? "" prefix)) + '#() + ; https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#completionList + (make-alist + 'isIncomplete + #f + 'itemDefaults + (make-alist + 'commitCharacters + `#(,prefix) + ) + 'items + (list->vector (map + identifier-reference->completion-item-alist + (if type-inference? + (sort-with-type-inferences document target-index-node whole-list) + (sort-identifier-references whole-list)))))))) (define (private-generate-position-expression index-node) (if (and (not (null? (index-node-parent index-node))) (is-first-child? index-node)) From b46e5448fe3d59f4efa138e38ac98f85b6f67a29 Mon Sep 17 00:00:00 2001 From: ufo5260987423 Date: Sun, 12 Jan 2025 09:50:23 +0800 Subject: [PATCH 42/44] fix --- protocol/apis/completion.sls | 21 +++++---------------- 1 file changed, 5 insertions(+), 16 deletions(-) diff --git a/protocol/apis/completion.sls b/protocol/apis/completion.sls index 297620b..e5f40b4 100644 --- a/protocol/apis/completion.sls +++ b/protocol/apis/completion.sls @@ -58,23 +58,12 @@ (string-prefix? prefix (symbol->string (identifier-reference-identifier candidate-reference))))) (find-available-references-for document target-index-node))] [type-inference? (workspace-type-inference? workspace)]) - (if (or (null? target-index-node) (equal? "" prefix)) - '#() ; https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#completionList - (make-alist - 'isIncomplete - #f - 'itemDefaults - (make-alist - 'commitCharacters - `#(,prefix) - ) - 'items - (list->vector (map - identifier-reference->completion-item-alist - (if type-inference? - (sort-with-type-inferences document target-index-node whole-list) - (sort-identifier-references whole-list)))))))) + (list->vector (map + identifier-reference->completion-item-alist + (if type-inference? + (sort-with-type-inferences document target-index-node whole-list) + (sort-identifier-references whole-list)))))) (define (private-generate-position-expression index-node) (if (and (not (null? (index-node-parent index-node))) (is-first-child? index-node)) From 469ce130b1c56d77ee92fbc1f42f15748722169e Mon Sep 17 00:00:00 2001 From: ufo5260987423 Date: Sun, 12 Jan 2025 10:12:13 +0800 Subject: [PATCH 43/44] fix:completion --- protocol/apis/completion.sls | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/protocol/apis/completion.sls b/protocol/apis/completion.sls index e5f40b4..c8be458 100644 --- a/protocol/apis/completion.sls +++ b/protocol/apis/completion.sls @@ -60,7 +60,8 @@ [type-inference? (workspace-type-inference? workspace)]) ; https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#completionList (list->vector (map - identifier-reference->completion-item-alist + (lambda (identifier) + (identifier-reference->completion-item-alist identifier prefix)) (if type-inference? (sort-with-type-inferences document target-index-node whole-list) (sort-identifier-references whole-list)))))) @@ -125,6 +126,11 @@ (sort-identifier-references true-list) (sort-identifier-references false-list)))) -(define (identifier-reference->completion-item-alist reference) - (make-alist 'label (symbol->string (identifier-reference-identifier reference)))) +(define (identifier-reference->completion-item-alist reference prefix) + (let* ([s (symbol->string (identifier-reference-identifier reference))] + [l (string-length prefix)]) + (make-alist + 'label s + 'insertText (substring s (- l 1) (string-length s)) + ))) ) From b0fab9ab7de671f028ee7bb3895c9575d2c1db8e Mon Sep 17 00:00:00 2001 From: ufo5260987423 Date: Sun, 12 Jan 2025 11:23:23 +0800 Subject: [PATCH 44/44] add now sponsor --- sponsor.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/sponsor.md b/sponsor.md index 1930900..4da0b21 100644 --- a/sponsor.md +++ b/sponsor.md @@ -2,4 +2,5 @@ |----|----|----|----| |Brandon Lucas|2023-05-13|50 USD|Paypal| |James Leveille|2023-12-30 - about 2024-08|5 USD per month|Patreon| -|爱发电用户_wrJ5 |2024-09-05 |15 Yuan|爱发电| \ No newline at end of file +|爱发电用户_wrJ5 |2024-09-05 |15 Yuan|爱发电| +|zhscn |2025-01-11 |50 Yuan|爱发电| \ No newline at end of file