cbqn_evalSrc
This commit is contained in:
parent
7adb06a43d
commit
e38226895e
2
makefile
2
makefile
@ -31,7 +31,7 @@ rtverifyn-singeli:
|
||||
wasi-o3:
|
||||
@${MAKE} singeli=0 t=wasi_o3 f="-DWASM -DWASI -DNO_MMAP -O3 -DCATCH_ERRORS=0 -D_WASI_EMULATED_MMAN --target=wasm32-wasi" LDFLAGS="-lwasi-emulated-mman --target=wasm32-wasi -Wl,-z,stack-size=8388608 -Wl,--initial-memory=67108864" LD_LIBS= PIE= c
|
||||
emcc-o3:
|
||||
@${MAKE} singeli=0 t=emcc_o3 f='-DWASM -DEMCC -O3' LDFLAGS='-s EXPORTED_FUNCTIONS=_main,_cbqn_runLine -s EXPORTED_RUNTIME_METHODS=ccall,cwrap -s ALLOW_MEMORY_GROWTH=1' CC=emcc OUTPUT=BQN.js c
|
||||
@${MAKE} singeli=0 t=emcc_o3 f='-DWASM -DEMCC -O3' LDFLAGS='-s EXPORTED_FUNCTIONS=_main,_cbqn_runLine,_cbqn_evalSrc -s EXPORTED_RUNTIME_METHODS=ccall,cwrap -s ALLOW_MEMORY_GROWTH=1' CC=emcc OUTPUT=BQN.js c
|
||||
|
||||
|
||||
# compiler setup
|
||||
|
||||
27
src/main.c
27
src/main.c
@ -209,7 +209,7 @@ void cbqn_runLine0(char* ln, i64 read) {
|
||||
gc_maybeGC();
|
||||
}
|
||||
|
||||
void cbqn_runLine(char* ln, i64 read) {
|
||||
void cbqn_runLine(char* ln, i64 len) {
|
||||
if(CATCH) {
|
||||
fprintf(stderr, "Error: "); printErrMsg(thrownMsg); fputc('\n', stderr);
|
||||
vm_pst(envCurr+1, envStart+envPrevHeight);
|
||||
@ -220,16 +220,39 @@ void cbqn_runLine(char* ln, i64 read) {
|
||||
gc_maybeGC();
|
||||
return;
|
||||
}
|
||||
cbqn_runLine0(ln, read);
|
||||
cbqn_runLine0(ln, len);
|
||||
popCatch();
|
||||
}
|
||||
|
||||
#if WASM
|
||||
void cbqn_evalSrc(char* src, i64 len) {
|
||||
Body* body = m_nnsDesc();
|
||||
B ns = m_nns(body);
|
||||
Scope* sc = ptr_inc(c(NS, ns)->sc);
|
||||
ptr_dec(v(ns));
|
||||
|
||||
B code = fromUTF8l(src);
|
||||
Block* block = bqn_compSc(code, inc(replPath), emptySVec(), sc, true);
|
||||
|
||||
ptr_dec(sc->body);
|
||||
sc->body = ptr_inc(block->bodies[0]);
|
||||
B res = execBlockInline(block, sc);
|
||||
ptr_dec(block);
|
||||
ptr_dec(sc);
|
||||
B resFmt = bqn_fmt(res);
|
||||
|
||||
printRaw(resFmt); dec(resFmt);
|
||||
putchar('\n');
|
||||
}
|
||||
#endif
|
||||
|
||||
#if EMCC
|
||||
int main() {
|
||||
repl_init();
|
||||
}
|
||||
#else
|
||||
int main(int argc, char* argv[]) {
|
||||
repl_init();
|
||||
bool startREPL = argc==1;
|
||||
bool silentREPL = false;
|
||||
bool execStdin = false;
|
||||
|
||||
Loading…
Reference in New Issue
Block a user