Files
Ensifer/src/logan.c
T

51 lines
1.1 KiB
C
Raw Normal View History

2026-09-30 19:27:45 -04:00
#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;
}