scscm/codegen
src/scscm/codegen.tur
defn
generate
(generate [node : int])
emit sclang text for a single AST node.
Parameters
| node | AST node handle (expanded by scscm/expander) |
Returns
Heap-allocated :cstr of the sclang expression. Names bound by enclosing forms are those in the current scope; generate-all resets it.
Example
(generate my-ast-node) ; => "foo_bar(1, 2)"
Since: SC2
defn
generate-all
(generate-all [nodes : int])
emit a sclang program for a top-level cons list of nodes.
Parameters
| nodes | cons list of AST node handles (expanded) |
Returns
Heap-allocated :cstr: one statement per line, each ending in ";". Top-level var/defn names are declared up front (see the module header).
Example
(generate-all top-level-nodes) ; => "var x = 1;\nx.postln;\n"
Since: SC2
Internal definitions
scscm-sym-escape-- map a scscm identifier to a sclang identifier.scscm-concat-- concatenate two strings into a fresh buffer.scscm-cat3-- concatenate three strings.scscm-join-- join a cons list of strings with a separator.scscm-num-text-- a number literal as sclang accepts it (no unary +).scscm-kw-name-- strip the leading colon of a keyword.scscm-ident?-- true when s is a plain sclang identifier.scscm-sym-quoted-- 'text' with quotes and backslashes escaped.scscm-symbol-literalscscm-upper-or-dotted?-- a class name (Synth) or Class.method (SinOsc.ar).scscm-is-binary-op?scscm-sclang-opscscm-scope-opscscm-scope-resetscscm-scope-pushscscm-scope-markscscm-scope-popscscm-in-scope?scscm-in-scope-since?scscm-kind?scscm-head-namescscm-form?scscm-decl?scscm-decl-namescscm-operator-expr?scscm-flattenscscm-flatten-consscscm-drop-emptyscscm-lead-countscscm-declarescscm-dropscscm-decl-valuescscm-gen-leadscscm-gen-restscscm-gen-stmt-listscscm-declare-afterscscm-takescscm-declares?scscm-names-has?scscm-hoist-namesscscm-gen-bodyscscm-any-decl?scscm-gen-operandscscm-gen-binop-loopscscm-gen-binopscscm-dict-kwscscm-dict-pairsscscm-dict-keyscscm-gen-dictscscm-gen-args-loopscscm-gen-argsscscm-controls-callee?scscm-controls-method?scscm-gen-sendscscm-gen-dotscscm-gen-dotdotscscm-gen-paramsscscm-join-paramsscscm-gen-fnscscm-gen-branchscscm-gen-ifscscm-let-pairs?scscm-let-collectscscm-push-allscscm-gen-letscscm-gen-do-exprscscm-gen-setscscm-gen-literalscscm-literal-elemsscscm-gen-quotescscm-gen-callscscm-gen-list-symscscm-gen-listscscm-terminate