Exemplo n.º 1
0
// ----------------------------------------------------------------
void mlr_dsl_ast_print(mlr_dsl_ast_t* past) {
	printf("AST BEGIN STATEMENTS (%d):\n", past->pbegin_statements->length);
	for (sllve_t* pe = past->pbegin_statements->phead; pe != NULL; pe = pe->pnext)
		mlr_dsl_ast_node_print(pe->pvvalue);

	printf("AST MAIN STATEMENTS (%d):\n", past->pmain_statements->length);
	for (sllve_t* pe = past->pmain_statements->phead; pe != NULL; pe = pe->pnext)
		mlr_dsl_ast_node_print(pe->pvvalue);

	printf("AST END STATEMENTS (%d):\n", past->pend_statements->length);
	for (sllve_t* pe = past->pend_statements->phead; pe != NULL; pe = pe->pnext)
		mlr_dsl_ast_node_print(pe->pvvalue);
}
Exemplo n.º 2
0
// ----------------------------------------------------------------
static mapper_t* mapper_put_parse_cli(int* pargi, int argc, char** argv) {
	char* verb = argv[(*pargi)++];
	char* mlr_dsl_expression = NULL;
	int   print_asts = FALSE;

	ap_state_t* pstate = ap_alloc();
	ap_define_true_flag(pstate, "-v", &print_asts);

	if (!ap_parse(pstate, verb, pargi, argc, argv)) {
		mapper_put_usage(argv[0], verb);
		return NULL;
	}

	if ((argc - *pargi) < 1) {
		mapper_put_usage(argv[0], verb);
		return NULL;
	}
	mlr_dsl_expression = argv[(*pargi)++];

	// Linked list of mlr_dsl_ast_node_t*.
	sllv_t* pasts = put_dsl_parse(mlr_dsl_expression);
	if (pasts == NULL) {
		mapper_put_usage(argv[0], verb);
		return NULL;
	}
	if (print_asts) {
		for (sllve_t* pe = pasts->phead; pe != NULL; pe = pe->pnext)
			mlr_dsl_ast_node_print(pe->pvdata);
	}

	return mapper_put_alloc(pasts);
}