Completed lambda implementation of functions.
Hooray! 🎉
This commit is contained in:
@@ -129,7 +129,12 @@ exp:
|
||||
// Number.
|
||||
NUM { $$ = ast_init(AST_TYPE_NUM, ast_num_data_init($1)); }
|
||||
|
||||
// Call.
|
||||
// Variable reference.
|
||||
| WORD {
|
||||
$$ = ast_init(AST_TYPE_VREF, ast_vref_data_init($1));
|
||||
}
|
||||
|
||||
// Call (general form).
|
||||
| exp GROUPS arg GROUPE {
|
||||
size_t argc = $3->ln;
|
||||
AST** argv = $3->buf;
|
||||
@@ -141,6 +146,18 @@ exp:
|
||||
));
|
||||
}
|
||||
|
||||
// Call (convenient form).
|
||||
| WORD GROUPS arg GROUPE {
|
||||
size_t argc = $3->ln;
|
||||
AST** argv = $3->buf;
|
||||
argarr_destroypsv($3);
|
||||
$$ = ast_init(AST_TYPE_CALL, ast_call_data_init(
|
||||
argc,
|
||||
argv,
|
||||
ast_init(AST_TYPE_VREF, ast_vref_data_init($1))
|
||||
));
|
||||
}
|
||||
|
||||
// Function definitions. Convert to VDef of Lambda.
|
||||
| WORD GROUPS arg GROUPE exp {
|
||||
size_t parc = $3->ln;
|
||||
@@ -191,11 +208,6 @@ exp:
|
||||
$$ = ast_init(AST_TYPE_VDEF, ast_vdef_data_init($1, $3));
|
||||
}
|
||||
|
||||
// Variable reference.
|
||||
| WORD {
|
||||
$$ = ast_init(AST_TYPE_VREF, ast_vref_data_init($1));
|
||||
}
|
||||
|
||||
| exp ADD exp {
|
||||
AST** argv = calloc(2, sizeof(AST*));
|
||||
argv[0] = $1;
|
||||
|
Reference in New Issue
Block a user