|
- #include <stdio.h>
- #include <string.h>
- #include <stdlib.h>
-
- #define new(type) (type*)malloc(sizeof(type))
-
- #include "./helpers.c"
- #include "./ast.c"
- #include "./io.c"
- #include "./parse.c"
- #include "./built_ins.c"
- #include "./env.c"
- #include "./eval.c"
-
- void test() {
- // (+ 4 10)
- Ast_Node* nil = create_ast_node_nil();
- Ast_Node* ten = create_ast_node_number(10);
- Ast_Node* four = create_ast_node_number(4);
- Ast_Node* plus = create_ast_node_symbol("+");
- Ast_Node* minus = create_ast_node_symbol("-");
-
- Ast_Node* form1 = create_ast_node_pair(
- plus,
- create_ast_node_pair(
- ten,
- create_ast_node_pair(
- four,
- nil)));
-
- Ast_Node* form2 = create_ast_node_pair(
- plus,
- create_ast_node_pair(
- four,
- create_ast_node_pair(
- four,
- nil)));
-
- Ast_Node* root = create_ast_node_pair(
- minus,
- create_ast_node_pair(
- form1,
- create_ast_node_pair(
- form2,
- nil)));
-
- print(root);
- printf("\n");
- Ast_Node* result = eval_expr(root, new(Environment));
- print(result);
- printf("\n");
- }
-
- int main (int argc, char *argv[]) {
- /* if (argc > 1) { */
- /* char* fileContent = read_entire_file(argv[1]); */
- /* if (fileContent) { */
- /* printf("File: %s\n", fileContent); */
- /* } */
- /* } else { */
- /* printf("No source provided.\n"); */
- /* } */
-
- /* test(); */
- print(parse_expression("(+ 4 7)"));
- return 0;
- }
|