tur/compile
src/scscm/compile.tur
defn
lex-err?
(lex-err? [r :ptr<void>])
defn
lex-ok?
(lex-ok? [r :ptr<void>])
defn
lex-ok-val
(lex-ok-val [r :ptr<void>])
defn
lex-err
(lex-err [e :int])
defn
lex-ok
(lex-ok [x :int])
defn
tokenize
(tokenize [source :cstr])
defn
tokens-free
(tokens-free [tokens :int])
defn
parse
(parse [tokens :int])
defn
expand-all
(expand-all [asts :int])
defn
generate-all
(generate-all [nodes :int])
defn
ast-free-all
(ast-free-all [ast_list :int])
defn
scscm-cstr-as-int
(scscm-cstr-as-int [s :cstr])
defn
scscm-read-file
(scscm-read-file [path :cstr])
defn
scscm-int-as-cstr
(scscm-int-as-cstr [n :int])
defn
compile-text
(compile-text [source :cstr])
compile scscm source text to sclang text.
Parameters
| source | NUL-terminated scscm source string |
Returns
lex-ok(sclang-text :cstr) on success. lex-err(message-int :int) on lexer/parser error (cast :int to :cstr for message).
Example
(let [r (compile-text "(+ 1 2)")]
(if (lex-ok? r) (lex-ok-val r) "error"))
Since: SC4
defn
compile-file
(compile-file [path :cstr])
read a file and compile its scscm content to sclang.
Parameters
| path | NUL-terminated filesystem path to a .tur or .scscm file |
Returns
lex-ok(sclang-text :cstr) on success. lex-err(message-int :int) on I/O or compile error.
Example
(let [r (compile-file "my-synth.scscm")]
(if (lex-ok? r) (lex-ok-val r) "error"))
Since: SC4