8344335 |
Jakob Wakeling |
2023-12-27 15:41:39 |
0
|
// Copyright (C) 2023, Jakob Wakeling |
8344335 |
Jakob Wakeling |
2023-12-27 15:41:39 |
1
|
// All rights reserved. |
8344335 |
Jakob Wakeling |
2023-12-27 15:41:39 |
2
|
|
8344335 |
Jakob Wakeling |
2023-12-27 15:41:39 |
3
|
#include "eval.h" |
da120bb |
Jakob Wakeling |
2023-12-27 17:28:40 |
4
|
#include "exec.h" |
8344335 |
Jakob Wakeling |
2023-12-27 15:41:39 |
5
|
#include "lex.h" |
4681f43 |
Jakob Wakeling |
2023-12-27 16:22:43 |
6
|
#include "parse.h" |
da120bb |
Jakob Wakeling |
2023-12-27 17:28:40 |
7
|
|
da120bb |
Jakob Wakeling |
2023-12-27 17:28:40 |
8
|
#include <unistd.h> |
8344335 |
Jakob Wakeling |
2023-12-27 15:41:39 |
9
|
|
8344335 |
Jakob Wakeling |
2023-12-27 15:41:39 |
10
|
bool Eflag, pflag; |
8344335 |
Jakob Wakeling |
2023-12-27 15:41:39 |
11
|
|
8344335 |
Jakob Wakeling |
2023-12-27 15:41:39 |
12
|
void eval(char *src, u64 len) { |
8344335 |
Jakob Wakeling |
2023-12-27 15:41:39 |
13
|
lex l = lex_init(src, len); |
8344335 |
Jakob Wakeling |
2023-12-27 15:41:39 |
14
|
if (Eflag) { lex_debug(&l); return; } |
4a1246f |
Jakob Wakeling |
2023-12-28 14:53:40 |
15
|
|
4681f43 |
Jakob Wakeling |
2023-12-27 16:22:43 |
16
|
for (ast *a; l.t.k != TK_EOF; ast_free(a)) { |
4681f43 |
Jakob Wakeling |
2023-12-27 16:22:43 |
17
|
a = parse(&l); if (!a) { return; } |
4681f43 |
Jakob Wakeling |
2023-12-27 16:22:43 |
18
|
if (pflag) { ast_debug(a, 0); continue; } |
4a1246f |
Jakob Wakeling |
2023-12-28 14:53:40 |
19
|
|
da120bb |
Jakob Wakeling |
2023-12-27 17:28:40 |
20
|
_ret = execute(a, STDIN_FILENO, NULL); |
4681f43 |
Jakob Wakeling |
2023-12-27 16:22:43 |
21
|
} |
8344335 |
Jakob Wakeling |
2023-12-27 15:41:39 |
22
|
} |
|
|
|
23
|
|