51 lines
1.1 KiB
C
51 lines
1.1 KiB
C
#include "enfilade.h"
|
|||
|
|
#include "enfilade_s7.h"
|
||
|
|
|
||
|
|
#include <stdio.h>
|
||
|
|
#include <string.h>
|
||
|
|
|
||
|
|
static void repl(s7_scheme *sc)
|
||
|
|
{
|
||
|
|
char buffer[4096];
|
||
|
|
|
||
|
|
for (;;) {
|
||
|
|
fputs("> ", stdout);
|
||
|
|
fflush(stdout);
|
||
|
|
|
||
|
|
if (!fgets(buffer, sizeof(buffer), stdin)) {
|
||
|
|
fputc('\n', stdout);
|
||
|
|
return;
|
||
|
|
}
|
||
|
|
|
||
|
|
if (buffer[0] == '\n' && buffer[1] == '\0')
|
||
|
|
continue;
|
||
|
|
|
||
|
|
{
|
||
|
|
s7_pointer value = s7_eval_c_string(sc, buffer);
|
||
|
|
printf("%s\n", s7_object_to_c_string(sc, value));
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
int main(int argc, char **argv)
|
||
|
|
{
|
||
|
|
if (argc == 2 && (!strcmp(argv[1], "-V") || !strcmp(argv[1], "--version"))) {
|
||
|
|
printf("ensifer version %s\n", ENSIFER_VERSION);
|
||
|
|
return 0;
|
||
|
|
}
|
||
|
|
if (argc == 2 && (!strcmp(argv[1], "-h") || !strcmp(argv[1], "--help"))) {
|
||
|
|
puts("Usage: logan [-h|--help] [-V|--version]");
|
||
|
|
return 0;
|
||
|
|
}
|
||
|
|
if (argc != 1) {
|
||
|
|
fprintf(stderr, "Usage: logan [-h|--help] [-V|--version]\n");
|
||
|
|
return 2;
|
||
|
|
}
|
||
|
|
|
||
|
|
s7_scheme *sc = s7_init();
|
||
|
|
|
||
|
|
init_enfilade_s7(sc);
|
||
|
|
repl(sc);
|
||
|
|
s7_free(sc);
|
||
|
|
return 0;
|
||
|
|
}
|