nanopass 1.9.2

Nanopass Compiler Infrastructure

The nanopass framework is a DSL for building compilers. It is used in the open source rewrite of Chez Scheme.

Currently this library supports Chez Scheme, Vicare Scheme, Ikarus Scheme and IronScheme.

$ akku update
$ akku install nanopass
$ .akku/env
Authors

Dipanwita Sarkar

Andrew W. Keep

R. Kent Dybvig

Oscar Waddell

Uploaded to Akku by Göran Weinholt

License

MIT

Dependencies

No dependencies.

Source code

https://github.com/nanopass/nanopass-framework-scheme git
68990d02573faa555ee42919d5809de03f1268a0
Tag: v1.9.2

Package contents

  • (nanopass exp-syntax) R6 Chez Scheme
    • → define-language-exp inspect-language lookup-language Llanguage unparse-Llanguage Lannotated unparse-Lannotated language->s-expression-exp prune-language-exp define-pruned-language-exp diff-languages-exp define-language-node-counter-exp define-unparser-exp define-parser-exp
    • ← (rnrs) R6
    • ← (nanopass)
    • ← (nanopass experimental)
    • ← (nanopass helpers)
    • ← (chezscheme) Built-in
  • (nanopass experimental) R6 Chez Scheme
    • → experimental-language datum? dots? maybe? syntax? exact-integer? Lnp-source unparse-Lnp-source parse-np-source Lcomplete unparse-Lcomplete language-information make-language-information language-information-language language-information-annotated-language handle-language-extension Llanguage unparse-Llanguage meta-variable-suffix-checker check-and-finish-language Lannotated unparse-Lannotated Lannotated? Lannotated-Defn? Lannotated-Terminal? Lannotated-Nonterminal? annotate-language star? modifier? Lpass-src unparse-Lpass-src lookup-language prune-lang diff-langs build-lang-node-counter build-unparser build-parser parse-pass Lpass unparse-Lpass
    • ← (rnrs) R6
    • ← (nanopass)
    • ← (nanopass helpers)
    • ← (nanopass prefix-matcher)
    • ← (chezscheme) Built-in
  • (nanopass helpers) R6
    • → extends definitions entry terminals nongenerative-id maybe ellipsis? unquote? colon? arrow? plus? minus? double-arrow? all-unique-identifiers? construct-id construct-unique-id gentemp bound-id-member? bound-id-union partition-syn datum meta-var->raw-meta-var combine unique-name rec with-values define-who trace-define-who syntax->source-info format printf pretty-print iota make-list list-head gensym regensym indirect-export define-property make-compile-time-value module warningf errorf eq-hashtable-set! eq-hashtable-ref trace-lambda trace-define-syntax trace-let trace-define optimize-level define-nanopass-record with-implicit with-r6rs-quasiquote with-extended-quasiquote extended-quasiquote with-auto-unquote with-compile-time-environment syntax->source-information source-information-source-file source-information-byte-offset-start source-information-char-offset-start source-information-byte-offset-end source-information-char-offset-end source-information-position-line source-information-position-column source-information-type provide-full-source-information
    • ← (rnrs) R6
    • ← (nanopass implementation-helpers)
  • (nanopass implementation-helpers) R6 Chez Scheme
    • → format printf pretty-print iota make-list list-head gensym regensym syntax->source-information source-information-source-file source-information-byte-offset-start source-information-char-offset-start source-information-byte-offset-end source-information-char-offset-end source-information-position-line source-information-position-column source-information-type provide-full-source-information indirect-export define-property make-compile-time-value module warningf errorf eq-hashtable-set! eq-hashtable-ref trace-lambda trace-define-syntax trace-let trace-define optimize-level define-nanopass-record with-implicit with-compile-time-environment
    • ← (chezscheme) Built-in
  • (nanopass implementation-helpers) R6 Ikarus
    • → format printf pretty-print iota make-list list-head gensym regensym syntax->source-information source-information-source-file source-information-byte-offset-start source-information-char-offset-start source-information-byte-offset-end source-information-char-offset-end source-information-position-line source-information-position-column source-information-type provide-full-source-information indirect-export define-property make-compile-time-value module warningf errorf eq-hashtable-set! eq-hashtable-ref trace-lambda trace-define-syntax trace-let trace-define optimize-level define-nanopass-record with-implicit with-compile-time-environment
    • ← (rnrs) R6
    • ← (rnrs eval) R6
    • ← (ikarus) Built-in
    • ← (nanopass syntactic-property)
  • (nanopass implementation-helpers) R6 IronScheme
    • → format printf pretty-print iota make-list list-head gensym regensym syntax->source-information source-information-source-file source-information-byte-offset-start source-information-char-offset-start source-information-byte-offset-end source-information-char-offset-end source-information-position-line source-information-position-column source-information-type provide-full-source-information indirect-export define-property make-compile-time-value module warningf errorf eq-hashtable-set! eq-hashtable-ref trace-lambda trace-define-syntax trace-let trace-define optimize-level define-nanopass-record with-implicit with-compile-time-environment
    • ← (rnrs) R6
    • ← (rnrs eval) R6
    • ← (ironscheme) Built-in
    • ← (nanopass syntactic-property)
    • ← (ironscheme core) Built-in
    • ← (ironscheme clr) Built-in
    • ← (ironscheme reader) Built-in
  • (nanopass implementation-helpers) R6 Vicare
    • → format printf pretty-print iota make-list list-head gensym regensym syntax->source-information source-information-source-file source-information-byte-offset-start source-information-char-offset-start source-information-byte-offset-end source-information-char-offset-end source-information-position-line source-information-position-column source-information-type provide-full-source-information indirect-export define-property make-compile-time-value module warningf errorf eq-hashtable-set! eq-hashtable-ref trace-lambda trace-define-syntax trace-let trace-define optimize-level define-nanopass-record with-implicit with-compile-time-environment
    • ← (vicare) Built-in
    • ← (vicare language-extensions) Built-in
    • ← (vicare language-extensions tracing-syntaxes) Built-in
    • ← (vicare expander) Built-in
    • ← (vicare compiler) Built-in
  • (nanopass language-helpers) R6
    • → prune-language-helper
    • ← (rnrs) R6
    • ← (nanopass records)
  • (nanopass language-node-counter) R6
    • → define-language-node-counter
    • ← (rnrs) R6
    • ← (nanopass records)
    • ← (nanopass helpers)
  • (nanopass language) R6
    • → define-language language->s-expression diff-languages prune-language define-pruned-language
    • ← (rnrs) R6
    • ← (nanopass helpers)
    • ← (nanopass language-helpers)
    • ← (nanopass records)
    • ← (nanopass unparser)
    • ← (nanopass meta-parser)
  • (nanopass meta-parser) R6
    • → make-meta-parser rhs-in-context-quasiquote meta-parse-term make-quasiquote-transformer make-in-context-transformer output-records->syntax parse-cata
    • ← (rnrs) R6
    • ← (nanopass helpers)
    • ← (nanopass records)
    • ← (nanopass syntaxconvert)
    • ← (nanopass meta-syntax-dispatch)
  • (nanopass meta-syntax-dispatch) R6
    • → meta-syntax-dispatch
    • ← (rnrs) R6
    • ← (nanopass helpers)
    • ← (nanopass records)
  • (nanopass nano-syntax-dispatch) R6
    • → nano-syntax-dispatch
    • ← (rnrs) R6
    • ← (nanopass helpers)
  • (nanopass parser) R6
    • → define-parser trace-define-parser
    • ← (rnrs) R6
    • ← (nanopass helpers)
    • ← (nanopass records)
    • ← (nanopass syntaxconvert)
    • ← (nanopass nano-syntax-dispatch)
  • (nanopass pass) R6
    • → define-pass trace-define-pass echo-define-pass with-output-language nanopass-case pass-input-parser pass-output-unparser pass-identifier? pass-input-language pass-output-language
    • ← (rnrs) R6
    • ← (nanopass helpers)
    • ← (nanopass records)
    • ← (nanopass syntaxconvert)
    • ← (nanopass meta-parser)
    • ← (nanopass parser)
    • ← (nanopass unparser)
    • ← (rnrs mutable-pairs) R6
  • (nanopass prefix-matcher) R6 Chez Scheme
    • → empty-prefix-tree insert-prefix match-prefix
    • ← (chezscheme) Built-in
  • (nanopass records) R6
    • → find-spec nonterminal-meta? nonterm-id->ntspec? nonterm-id->ntspec id->spec term-id->tspec? meta-name->tspec meta-name->ntspec make-nano-dots nano-dots? nano-dots-x make-nano-quote nano-quote? nano-quote-x make-nano-unquote nano-unquote? nano-unquote-x make-nano-meta nano-meta? nano-meta-alt nano-meta-fields make-nano-cata nano-cata? nano-cata-itype nano-cata-syntax nano-cata-procexpr nano-cata-maybe-inid* nano-cata-outid* nano-cata-maybe? make-language language? language-name language-entry-ntspec language-tspecs language-ntspecs language-tag-mask language-nongenerative-id make-tspec tspec-meta-vars tspec-type tspec-pred tspec-handler tspec? tspec-tag tspec-parent? ntspec? make-ntspec ntspec-name ntspec-meta-vars ntspec-alts ntspec-pred ntspec-all-pred ntspec-tag ntspec-all-tag ntspec-all-term-pred alt? alt-syn alt-pretty alt-pretty-procedure? make-pair-alt pair-alt? pair-alt-pattern pair-alt-field-names pair-alt-field-levels pair-alt-field-maybes pair-alt-accessors pair-alt-implicit? pair-alt-pred pair-alt-maker pair-alt-tag make-terminal-alt terminal-alt? terminal-alt-tspec make-nonterminal-alt nonterminal-alt? nonterminal-alt-ntspec has-implicit-alt? spec-all-pred spec-type subspec? annotate-language! language->lang-records language->lang-predicates define-nanopass-record exists-alt? make-pass-info pass-info? pass-info-input-language pass-info-output-language
    • ← (rnrs) R6
    • ← (nanopass helpers)
    • ← (nanopass syntaxconvert)
  • (nanopass syntactic-property) R6
    • → syntax-property-set! syntax-property-get
    • ← (rnrs) R6
  • (nanopass syntaxconvert) R6
    • → convert-pattern
    • ← (rnrs) R6
    • ← (nanopass helpers)
  • (nanopass unparser) R6
    • → define-unparser
    • ← (rnrs) R6
    • ← (nanopass helpers)
    • ← (nanopass records)
    • ← (nanopass syntaxconvert)
  • (nanopass) R6
    • → define-language define-parser define-unparser trace-define-parser trace-define-pass echo-define-pass define-pass with-output-language nanopass-case language->s-expression extends entry terminals nongenerative-id maybe diff-languages define-language-node-counter prune-language define-pruned-language with-extended-quasiquote with-r6rs-quasiquote pass-input-parser pass-output-unparser pass-identifier? pass-input-language pass-output-language
    • ← (nanopass language)
    • ← (nanopass parser)
    • ← (nanopass unparser)
    • ← (nanopass language-node-counter)
    • ← (nanopass pass)
    • ← (nanopass helpers)
    • ← (nanopass records)
  • (tests alltests) R6 Test
    • → main-tests final-tests
    • ← (rnrs) R6
  • (tests compiler-test) R6 Test
    • → test-one test-all run-main-tests run-final-tests run-all-tests
    • ← (rnrs) R6
    • ← (tests compiler)
    • ← (tests test-driver)
    • ← (tests alltests)
  • (tests compiler) R6 Test
    • → LP L0 L1 L2 L3 L4 L5 L6 L7 L8 L9 L10 L11 L12 L13 L14 L15 L16 L17 L18 parse-LP parse-L0 parse-L1 parse-L2 parse-L3 parse-L4 parse-L5 parse-L6 parse-L7 parse-L8 parse-L9 parse-L10 parse-L11 parse-L13 parse-L14 parse-L15 parse-L16 parse-L17 parse-L18 unparse-LP unparse-L0 unparse-L1 unparse-L2 unparse-L3 unparse-L4 unparse-L5 unparse-L6 unparse-L7 unparse-L8 unparse-L9 unparse-L10 unparse-L11 unparse-L12 unparse-L13 unparse-L14 unparse-L15 unparse-L16 unparse-L17 unparse-L18 verify-scheme remove-implicit-begin remove-unquoted-constant remove-one-armed-if uncover-settable remove-impure-letrec remove-set! sanitize-binding remove-anonymous-lambda uncover-free convert-closure lift-letrec explicit-closure normalize-context remove-complex-opera* remove-anonymous-call introduce-dummy-rp remove-nonunary-let return-of-set! explicit-labels rename-vars/verify-legal
    • ← (rnrs) R6
    • ← (nanopass)
    • ← (tests helpers)
    • ← (tests synforms)
    • ← (nanopass nano-syntax-dispatch)
  • (tests helpers) R6 Test
    • → compose disjoin any every choose reverse-filter fold reduce constant? keyword? list-of-user-primitives list-of-system-primitives user-primitive? system-primitive? primitive? predicate-primitive? value-primitive? effect-primitive? effect-free-primitive? gen-label reset-seed gen-symbol set? iota with-values empty-set singleton-set add-element member? empty? union intersection difference variable? datum? list-index primapp sys-primapp app const-datum const var quoted-const time printf system interpret pretty-print format set-cons define-who
    • ← (rnrs) R6
    • ← (tests implementation-helpers)
    • ← (nanopass helpers)
  • (tests implementation-helpers) R6 Chez Scheme Test
    • → time printf system interpret pretty-print format
    • ← (chezscheme) Built-in
  • (tests implementation-helpers) R6 Ikarus Test
    • → time printf system interpret pretty-print format
    • ← (ikarus) Built-in
  • (tests implementation-helpers) R6 IronScheme Test
    • → time printf system interpret pretty-print format
    • ← (ironscheme) Built-in
  • (tests implementation-helpers) R6 Chez Scheme Test
    • → time printf system interpret pretty-print format
    • ← (scheme) Built-in
  • (tests implementation-helpers) R6 Vicare Test
    • → time printf system interpret pretty-print format
    • ← (vicare) Built-in
  • (tests new-compiler) R6 Test
    • → L0 parse-L0 unparse-L0
    • ← (rnrs) R6
    • ← (nanopass)
    • ← (tests helpers)
  • (tests synforms) R6 Test
    • → syncase
    • ← (rnrs) R6
  • (tests test-driver) R6 Test
    • → define-passes pass-names passes tracer test-one test-all tests print-file
    • ← (rnrs) R6
    • ← (tests helpers)
  • (tests unit-test-helpers-implementation) R6 Chez Scheme Test
    • → with-output-to-string display-condition format-error-message
    • ← (chezscheme) Built-in
  • (tests unit-test-helpers-implementation) R6 Ikarus Test
    • → with-output-to-string display-condition format-error-message
    • ← (ikarus) Built-in
  • (tests unit-test-helpers-implementation) R6 IronScheme Test
    • → with-output-to-string display-condition format-error-message
    • ← (ironscheme) Built-in
  • (tests unit-test-helpers-implementation) R6 Vicare Test
    • → with-output-to-string display-condition format-error-message
    • ← (vicare) Built-in
  • (tests unit-test-helpers) R6 Test
    • → test-suite test assert-equal? assert-error with-output-to-string format-error-message
    • ← (rnrs) R6
    • ← (tests unit-test-helpers-implementation)
    • ← (nanopass helpers)
  • (tests unit-tests) R6 Test
    • → run-unit-tests run-ensure-correct-identifiers run-maybe-tests run-maybe-dots-tests run-language-dot-support run-maybe-unparse-tests run-argument-name-matching run-error-messages run-pass-parser-unparser
    • ← (rnrs) R6
    • ← (nanopass helpers)
    • ← (nanopass language)
    • ← (nanopass pass)
    • ← (nanopass parser)
    • ← (tests unit-test-helpers)

Version history

  • 2020-10-22 ~ 1.9.2
  • 2020-08-29 ~ 1.9.1
  • 2018-04-07 ~ 1.9.0