mirror of
https://github.com/johnkerl/miller.git
synced 2026-07-19 17:35:16 +00:00
xvfuncs iterate
This commit is contained in:
parent
9f29118f24
commit
409e41ac2b
5 changed files with 1355 additions and 28 deletions
|
|
@ -12,24 +12,19 @@
|
|||
#include "../containers/mlhmmv.h"
|
||||
|
||||
// ----------------------------------------------------------------
|
||||
typedef mlhmmv_xvalue_t mv_variadic_func_t(
|
||||
typedef mlhmmv_xvalue_t xv_variadic_func_t(
|
||||
mlhmmv_xvalue_t* pxvals,
|
||||
int nxvals);
|
||||
|
||||
typedef mlhmmv_xvalue_t mv_zary_func_t();
|
||||
typedef mlhmmv_xvalue_t xv_zary_func_t();
|
||||
|
||||
typedef mlhmmv_xvalue_t mv_unary_func_t(
|
||||
typedef mlhmmv_xvalue_t xv_unary_func_t(
|
||||
mlhmmv_xvalue_t* pxval1);
|
||||
|
||||
typedef mlhmmv_xvalue_t mv_binary_func_t(
|
||||
typedef mlhmmv_xvalue_t xv_binary_func_t(
|
||||
mlhmmv_xvalue_t* pxval1,
|
||||
mlhmmv_xvalue_t* pxval2);
|
||||
|
||||
typedef mlhmmv_xvalue_t mv_ternary_func_t(
|
||||
mlhmmv_xvalue_t* pxval1,
|
||||
mlhmmv_xvalue_t* pxval2,
|
||||
mlhmmv_xvalue_t* pxval3);
|
||||
|
||||
// ----------------------------------------------------------------
|
||||
static inline mlhmmv_xvalue_t b_x_ispresent_xfunc(mlhmmv_xvalue_t* pxval1) {
|
||||
return mlhmmv_xvalue_wrap_terminal(
|
||||
|
|
|
|||
|
|
@ -1,34 +1,35 @@
|
|||
noinst_LTLIBRARIES= libdsl.la
|
||||
libdsl_la_SOURCES= \
|
||||
context_flags.h \
|
||||
function_manager.h \
|
||||
function_manager.c \
|
||||
rval_evaluator.h \
|
||||
rval_evaluators.h \
|
||||
rval_expr_evaluators.c \
|
||||
rxval_expr_evaluators.c \
|
||||
rval_func_evaluators.c \
|
||||
rval_list_evaluators.c \
|
||||
function_manager.h \
|
||||
mlr_dsl_ast.c \
|
||||
mlr_dsl_ast.h \
|
||||
mlr_dsl_blocked_ast.c \
|
||||
mlr_dsl_blocked_ast.h \
|
||||
mlr_dsl_cst.c \
|
||||
mlr_dsl_cst.h \
|
||||
mlr_dsl_cst_condish_statements.c \
|
||||
mlr_dsl_cst_for_map_statements.c \
|
||||
mlr_dsl_cst_for_srec_statements.c \
|
||||
mlr_dsl_cst_func_subr.c \
|
||||
mlr_dsl_cst_keywords.c \
|
||||
mlr_dsl_cst_statements.c \
|
||||
mlr_dsl_cst_scalar_assignment_statements.c \
|
||||
mlr_dsl_cst_map_assignment_statements.c \
|
||||
mlr_dsl_cst_unset_statements.c \
|
||||
mlr_dsl_cst_condish_statements.c \
|
||||
mlr_dsl_cst_for_srec_statements.c \
|
||||
mlr_dsl_cst_for_map_statements.c \
|
||||
mlr_dsl_cst_triple_for_statements.c \
|
||||
mlr_dsl_cst_loop_control_statements.c \
|
||||
mlr_dsl_cst_return_statements.c \
|
||||
mlr_dsl_cst_map_assignment_statements.c \
|
||||
mlr_dsl_cst_output_statements.c \
|
||||
mlr_dsl_cst_return_statements.c \
|
||||
mlr_dsl_cst_scalar_assignment_statements.c \
|
||||
mlr_dsl_cst_statements.c \
|
||||
mlr_dsl_cst_triple_for_statements.c \
|
||||
mlr_dsl_cst_unset_statements.c \
|
||||
mlr_dsl_stack_allocate.c \
|
||||
rval_evaluator.h \
|
||||
rval_evaluators.h \
|
||||
rval_expr_evaluators.c \
|
||||
rval_func_evaluators.c \
|
||||
rval_list_evaluators.c \
|
||||
rxval_expr_evaluators.c \
|
||||
rxval_func_evaluators.c \
|
||||
type_inference.h
|
||||
libdsl_la_LIBADD= ../lib/libmlr.la ../cli/libcli.la ../input/libinput.la
|
||||
|
||||
|
|
|
|||
|
|
@ -2,6 +2,8 @@
|
|||
#define RVAL_EVALUATORS_H
|
||||
|
||||
#include <stdio.h>
|
||||
#include "containers/mvfuncs.h"
|
||||
#include "containers/xvfuncs.h"
|
||||
#include "dsl/mlr_dsl_ast.h"
|
||||
#include "dsl/rval_evaluator.h"
|
||||
#include "dsl/function_manager.h"
|
||||
|
|
@ -81,7 +83,7 @@ rval_evaluator_t* rval_evaluator_alloc_from_mlrval(mv_t* pval);
|
|||
// rval_func_evaluators.c
|
||||
// ================================================================
|
||||
|
||||
// These have some shared code that would otherwise be duplicated per-function in containers/mlrval.c.
|
||||
// These have some shared code that would otherwise be duplicated per-function in containers/mvfuncs.c.
|
||||
rval_evaluator_t* rval_evaluator_alloc_from_variadic_func(mv_variadic_func_t* pfunc, rval_evaluator_t** pargs, int nargs);
|
||||
rval_evaluator_t* rval_evaluator_alloc_from_b_b_func(mv_unary_func_t* pfunc, rval_evaluator_t* parg1);
|
||||
rval_evaluator_t* rval_evaluator_alloc_from_b_bb_and_func(rval_evaluator_t* parg1, rval_evaluator_t* parg2);
|
||||
|
|
@ -185,4 +187,10 @@ rxval_evaluator_t* rxval_evaluator_alloc_from_full_srec(
|
|||
rxval_evaluator_t* rxval_evaluator_alloc_wrapping_rval(
|
||||
mlr_dsl_ast_node_t* past, fmgr_t* pfmgr, int type_inferencing, int context_flags);
|
||||
|
||||
// ================================================================
|
||||
// rxval_func_evaluators.c
|
||||
|
||||
rxval_evaluator_t* rxval_evaluator_alloc_from_variadic_func(xv_variadic_func_t* pfunc, rxval_evaluator_t** pargs, int nargs);
|
||||
rxval_evaluator_t* rxval_evaluator_alloc_from_b_m_func(xv_unary_func_t* pfunc, rxval_evaluator_t* parg1);
|
||||
|
||||
#endif // LREC_FEVALUATORS_H
|
||||
|
|
|
|||
1323
c/dsl/rxval_func_evaluators.c
Normal file
1323
c/dsl/rxval_func_evaluators.c
Normal file
File diff suppressed because it is too large
Load diff
|
|
@ -42,8 +42,8 @@ MAPVAR CHECKLIST:
|
|||
* apply mapvar contexts to some built-ins: length, typeof, ... ?
|
||||
|
||||
- calltree:
|
||||
! separate mlrval.[ch] per se from mv_funcs.[ch]; new xv_funcs.[ch]
|
||||
> mv_unary_func_t xv_unary_func_t
|
||||
k separate mlrval.[ch] per se from mv_funcs.[ch]; new xv_funcs.[ch]
|
||||
k mv_unary_func_t xv_unary_func_t
|
||||
> rval_evaluator_alloc_from_b_b_func rxval_evaluator_alloc_from_m_b_func
|
||||
> fmgr_alloc_evaluator_from_unary_func_name fmgr_alloc_xevaluator_from_unary_func_name
|
||||
> construct_builtin_function_callsite_evaluator construct_builtin_function_callsite_xevaluator
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue