blob: f6d8048ddfd16cbb1409d0cf082c78a9dcab2078 (
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
40
41
42
43
44
|
#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
#ifdef USE_READLINE
#include <readline/readline.h>
#include <readline/history.h>
#else
#include <editline/readline.h>
#endif
char *READ(char prompt[]) {
char *line;
line = readline(prompt);
if (!line) return NULL; // EOF
add_history(line); // Add input to history.
return line;
}
char *EVAL(char *ast, void *env) {
return ast;
}
char *PRINT(char *exp) {
return exp;
}
int main()
{
char *ast, *exp;
char prompt[100];
// Set the initial prompt
snprintf(prompt, sizeof(prompt), "user> ");
for(;;) {
ast = READ(prompt);
if (!ast) return 0;
exp = EVAL(ast, NULL);
g_print("%s\n", PRINT(exp));
free(ast); // Free input string
}
}
|