aboutsummaryrefslogtreecommitdiff
path: root/repl.c
blob: c9d6861c5057fa3c8190e5b1897437ed1769c07e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#include <stdlib.h>
#include <stdio.h>
#include <string.h>

#include "parse.h"
#include "eval.h"
#include "env.h"
#include "atom.h"
#include "linenoise.h"

int main(int argc, char **argv)
{
    char *line;
    struct env *env;

    env = env_new();

    linenoiseSetMultiLine(0);

    while ((line = linenoise("> ")) != NULL)
    {
        linenoiseHistoryAdd(line);

        if (strcmp(".clean", line) == 0)
        {
            env_free(env);
            env = env_new();
        }
        else
        {
            struct atom *result = eval_str(line, env);
            print_atom(result, 0);
        }

        free(line);
    }

    return 0;
}