// GENERATED // SPDX-FileCopyrightText: 2023 Norman Gray // SPDX-License-Identifier: BSD-2-Clause /* contents of "readermacros.scm" */ const char* const readermacros_scm = "(define (triple-quotes-remainder*) (define (line-join lines) (apply string-append (let loop ((ll lines)) (if (null? (cdr ll)) (list (car ll)) ( (#_list-values (car ll) \"\\n\") (loop (cdr ll))))))) (define (reassemble-lines lines) (if (null? lines) \"\" (let* ((dedent (let loop ((ll (cdr lines)) (d -1)) (cond ((null? ll) (if (< d 0) 0 d)) ((and (car ll) (or (< d 0) (< (caar ll) d))) (loop (cdr ll) (caar ll))) (else (loop (cdr ll) d))))) (ll-dedented (cons (and (car lines) (cdar lines)) (map (lambda (l) (if l (substring (cdr l) dedent) \"\")) (cdr lines))))) (cond ((car ll-dedented) (line-join ll-dedented)) ((null? (cdr ll-dedented)) \"\") (else (line-join (cdr ll-dedented))))))) (let loop ((c (read-char)) (lines '()) (cl '()) (bol? #t) (leadspace 0) (qcount 0)) (cond ((char=? c #\\\") (if (= qcount 2) (reassemble-lines (reverse! (cons (cons leadspace (list->string (reverse! (cddr cl)))) lines))) (loop (read-char) lines (cons c cl) bol? leadspace (+ qcount 1)))) ((char=? c #\\newline) (loop (read-char) (if bol? (cons #f lines) (cons (cons leadspace (list->string (reverse! cl))) lines)) '() #t 0 0)) (bol? (if (char=? c #\\space) (loop (read-char) lines (cons c cl) #t (+ leadspace 1) 0) (loop (read-char) lines (cons c cl) #f leadspace 0))) (else (loop (read-char) lines (cons c cl) #f leadspace 0)))))" "(define (NOT-triple-quotes-remainder*) (define (line-join/reverse/dedent lines) (define (my-filter l) (cond ((null? l) '()) ((not (car l)) (my-filter (cdr l))) (else (cons (car l) (my-filter (cdr l)))))) (define (line-join/reverse lines) (let loop ((l (cdr lines)) (res (list (car lines)))) (if (null? l) (apply string-append res) (loop (cdr l) ( (#_list-values (car l) \"\\n\") res))))) (define (nspaces s . rest) (let ((len (string-length s))) (let loop ((i 0)) (cond ((= i len) (if (null? rest) #f i)) ((char=? (string-ref s i) #\\space) (loop (+ i 1))) (else i))))) (let ((last-line (car lines))) (let ((lines/rev (reverse! lines))) (let ((first-line (car lines/rev)) (other-lines (cdr lines/rev))) (if (null? other-lines) first-line (let ((first-line-empty? (string=? first-line \"\")) (dedent-size (apply min (my-filter (cons (nspaces last-line #t) (map nspaces other-lines)))))) (let ((dedented-lines (map (lambda (l) (if (and l (> (string-length l) dedent-size)) (substring l dedent-size) \"\")) other-lines))) (line-join/reverse (reverse! (if first-line-empty? dedented-lines (cons first-line dedented-lines))))))))))) (let loop ((c (read-char)) (lines '()) (cl '()) (qcount 0)) (cond ((char=? c #\\\") (if (= qcount 2) (line-join/reverse/dedent (cons (list->string (reverse! (cddr cl))) lines)) (loop (read-char) lines (cons c cl) (+ qcount 1)))) ((char=? c #\\newline) (loop (read-char) (cons (list->string (reverse! cl)) lines) '() 0)) (else (loop (read-char) lines (cons c cl) 0)))))" "(define (ustring-read-handler-remainder* iter) (let ((u (make-ustring))) (let loop ((escape? #f)) (let ((c (iter))) (cond ((eof-object? c) (beastie-error \"EOF while reading #\\\"...\\\"\")) (escape? (case c ((34 92) (ustring-append! u c) (loop #f)) ((110) (ustring-append! u #\\newline) (loop #f)) (else (print-warning \"#\\\"...\\\" escape \\\\~a ignored\" (integer->char c)) (loop #f)))) (else (case c ((34) u) ((92) (loop #t)) (else (ustring-append! u c) (loop #f)))))))))" "(define (dquotes-reader* str) (define (compose-iterators* . iters) \"`(compose-iterators* iter ...)` : produces an iterator which returns\\nitems from the given iterators, returning `#` only when all are exhausted.\" (let ((+iterator+ #t)) (lambda () (if (null? iters) # (let ((i0 ((car iters)))) (if (eof-object? i0) (if (null? (set! iters (cdr iters))) # ((car iters))) i0)))))) (if (string=? str \"\\\"\") (let ((c2 (peek-char))) (if (char=? c2 #\\\") (begin (read-char) (let ((c3 (peek-char))) (if (char=? c3 #\\\") (begin (read-char) (triple-quotes-remainder*)) (make-ustring)))) (ustring-read-handler-remainder* unicode-decode1/port/utf8))) (ustring-read-handler-remainder* (compose-iterators* (let ((p (open-input-string str))) (read-byte p) (lambda () (unicode-decode1/port/utf8 p))) unicode-decode1/port/utf8))))" "(define (srfi62-comments str) (if (string=? str \";\") (read)) (values))"; const size_t readermacros_scm_len = 4160; #line 3 "*stdin*"