aboutsummaryrefslogtreecommitdiff
path: root/repl.c
blob: ea8d7443dc79ccd59133360ee28967d0129f6fa2 (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()
{
    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;
}