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 key 0827 2FBB 54EE B507 2D5B A930 E33E 61A2 E9B8 C3A2

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