diff options
author | Vince Harron <vharron@google.com> | 2015-06-07 21:43:05 -0700 |
---|---|---|
committer | Vince Harron <vharron@google.com> | 2015-06-08 08:33:11 -0700 |
commit | 330b6544424d02bcdf29653dd889d524d2e6f7d2 (patch) | |
tree | 4c40fd53e5c12fcc83aeaa06f27fa606bcfe3d3c /share/swig/2.0.11/guile/interpreter.i | |
parent | 7b7c39b73762eb3aa12d79a3893e156fd801468e (diff) | |
download | windows-x86-studio-3.1.2.tar.gz |
Adding binaries for 2.0.11HEADstudio-master-dev_before_27917934studio-master-dev_before_26911779studio-3.1.2studio-2.3studio-2.0-rc1studio-2.0studio-1.5studio-1.4gradle_3.1.2gradle_2.3.0gradle_2.0.0studio-master-releasestudio-1.4-releasestudio-1.4-devstudio-1.3-releasestudio-1.3-devmastermain
Diffstat (limited to 'share/swig/2.0.11/guile/interpreter.i')
-rw-r--r-- | share/swig/2.0.11/guile/interpreter.i | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/share/swig/2.0.11/guile/interpreter.i b/share/swig/2.0.11/guile/interpreter.i new file mode 100644 index 0000000..524e069 --- /dev/null +++ b/share/swig/2.0.11/guile/interpreter.i @@ -0,0 +1,59 @@ +/* ----------------------------------------------------------------------------- + * interpreter.i + * + * SWIG file for a simple Guile interpreter + * ----------------------------------------------------------------------------- */ + +%{ + +#include <stdio.h> +GSCM_status guile_init(); + +int main(int argc, char **argv) { + GSCM_status status; + GSCM_top_level toplev; + char *eval_answer; + char input_str[16384]; + int done; + + /* start a scheme interpreter */ + status = gscm_run_scm(argc, argv, 0, stdout, stderr, guile_init, 0, "#t"); + if (status != GSCM_OK) { + fputs(gscm_error_msg(status), stderr); + fputc('\n', stderr); + printf("Error in startup.\n"); + exit(1); + } + + /* create the top level environment */ + status = gscm_create_top_level(&toplev); + if (status != GSCM_OK) { + fputs(gscm_error_msg(status), stderr); + fputc('\n', stderr); + exit(1); + } + + /* now sit in a scheme eval loop: I input the expressions, have guile + * evaluate them, and then get another expression. + */ + done = 0; + fprintf(stdout,"Guile > "); + while (!done) { + if (fgets(input_str,16384,stdin) == NULL) { + exit(1); + } else { + if (strncmp(input_str,"quit",4) == 0) exit(1); + status = gscm_eval_str(&eval_answer, toplev, input_str); + fprintf(stdout,"%s\n", eval_answer); + fprintf(stdout,"Guile > "); + } + } + + /* now clean up and quit */ + gscm_destroy_top_level(toplev); +} + +%} + + + |