• Home
  • Raw
  • Download

Lines Matching refs:e

16 	struct expr *e = calloc(1, sizeof(*e));  in expr_alloc_symbol()  local
17 e->type = E_SYMBOL; in expr_alloc_symbol()
18 e->left.sym = sym; in expr_alloc_symbol()
19 return e; in expr_alloc_symbol()
24 struct expr *e = calloc(1, sizeof(*e)); in expr_alloc_one() local
25 e->type = type; in expr_alloc_one()
26 e->left.expr = ce; in expr_alloc_one()
27 return e; in expr_alloc_one()
32 struct expr *e = calloc(1, sizeof(*e)); in expr_alloc_two() local
33 e->type = type; in expr_alloc_two()
34 e->left.expr = e1; in expr_alloc_two()
35 e->right.expr = e2; in expr_alloc_two()
36 return e; in expr_alloc_two()
41 struct expr *e = calloc(1, sizeof(*e)); in expr_alloc_comp() local
42 e->type = type; in expr_alloc_comp()
43 e->left.sym = s1; in expr_alloc_comp()
44 e->right.sym = s2; in expr_alloc_comp()
45 return e; in expr_alloc_comp()
64 struct expr *e; in expr_copy() local
69 e = malloc(sizeof(*org)); in expr_copy()
70 memcpy(e, org, sizeof(*org)); in expr_copy()
73 e->left = org->left; in expr_copy()
76 e->left.expr = expr_copy(org->left.expr); in expr_copy()
80 e->left.sym = org->left.sym; in expr_copy()
81 e->right.sym = org->right.sym; in expr_copy()
86 e->left.expr = expr_copy(org->left.expr); in expr_copy()
87 e->right.expr = expr_copy(org->right.expr); in expr_copy()
90 printf("can't copy type %d\n", e->type); in expr_copy()
91 free(e); in expr_copy()
92 e = NULL; in expr_copy()
96 return e; in expr_copy()
99 void expr_free(struct expr *e) in expr_free() argument
101 if (!e) in expr_free()
104 switch (e->type) { in expr_free()
108 expr_free(e->left.expr); in expr_free()
115 expr_free(e->left.expr); in expr_free()
116 expr_free(e->right.expr); in expr_free()
119 printf("how to free type %d?\n", e->type); in expr_free()
122 free(e); in expr_free()
231 struct expr *expr_eliminate_yn(struct expr *e) in expr_eliminate_yn() argument
235 if (e) switch (e->type) { in expr_eliminate_yn()
237 e->left.expr = expr_eliminate_yn(e->left.expr); in expr_eliminate_yn()
238 e->right.expr = expr_eliminate_yn(e->right.expr); in expr_eliminate_yn()
239 if (e->left.expr->type == E_SYMBOL) { in expr_eliminate_yn()
240 if (e->left.expr->left.sym == &symbol_no) { in expr_eliminate_yn()
241 expr_free(e->left.expr); in expr_eliminate_yn()
242 expr_free(e->right.expr); in expr_eliminate_yn()
243 e->type = E_SYMBOL; in expr_eliminate_yn()
244 e->left.sym = &symbol_no; in expr_eliminate_yn()
245 e->right.expr = NULL; in expr_eliminate_yn()
246 return e; in expr_eliminate_yn()
247 } else if (e->left.expr->left.sym == &symbol_yes) { in expr_eliminate_yn()
248 free(e->left.expr); in expr_eliminate_yn()
249 tmp = e->right.expr; in expr_eliminate_yn()
250 *e = *(e->right.expr); in expr_eliminate_yn()
252 return e; in expr_eliminate_yn()
255 if (e->right.expr->type == E_SYMBOL) { in expr_eliminate_yn()
256 if (e->right.expr->left.sym == &symbol_no) { in expr_eliminate_yn()
257 expr_free(e->left.expr); in expr_eliminate_yn()
258 expr_free(e->right.expr); in expr_eliminate_yn()
259 e->type = E_SYMBOL; in expr_eliminate_yn()
260 e->left.sym = &symbol_no; in expr_eliminate_yn()
261 e->right.expr = NULL; in expr_eliminate_yn()
262 return e; in expr_eliminate_yn()
263 } else if (e->right.expr->left.sym == &symbol_yes) { in expr_eliminate_yn()
264 free(e->right.expr); in expr_eliminate_yn()
265 tmp = e->left.expr; in expr_eliminate_yn()
266 *e = *(e->left.expr); in expr_eliminate_yn()
268 return e; in expr_eliminate_yn()
273 e->left.expr = expr_eliminate_yn(e->left.expr); in expr_eliminate_yn()
274 e->right.expr = expr_eliminate_yn(e->right.expr); in expr_eliminate_yn()
275 if (e->left.expr->type == E_SYMBOL) { in expr_eliminate_yn()
276 if (e->left.expr->left.sym == &symbol_no) { in expr_eliminate_yn()
277 free(e->left.expr); in expr_eliminate_yn()
278 tmp = e->right.expr; in expr_eliminate_yn()
279 *e = *(e->right.expr); in expr_eliminate_yn()
281 return e; in expr_eliminate_yn()
282 } else if (e->left.expr->left.sym == &symbol_yes) { in expr_eliminate_yn()
283 expr_free(e->left.expr); in expr_eliminate_yn()
284 expr_free(e->right.expr); in expr_eliminate_yn()
285 e->type = E_SYMBOL; in expr_eliminate_yn()
286 e->left.sym = &symbol_yes; in expr_eliminate_yn()
287 e->right.expr = NULL; in expr_eliminate_yn()
288 return e; in expr_eliminate_yn()
291 if (e->right.expr->type == E_SYMBOL) { in expr_eliminate_yn()
292 if (e->right.expr->left.sym == &symbol_no) { in expr_eliminate_yn()
293 free(e->right.expr); in expr_eliminate_yn()
294 tmp = e->left.expr; in expr_eliminate_yn()
295 *e = *(e->left.expr); in expr_eliminate_yn()
297 return e; in expr_eliminate_yn()
298 } else if (e->right.expr->left.sym == &symbol_yes) { in expr_eliminate_yn()
299 expr_free(e->left.expr); in expr_eliminate_yn()
300 expr_free(e->right.expr); in expr_eliminate_yn()
301 e->type = E_SYMBOL; in expr_eliminate_yn()
302 e->left.sym = &symbol_yes; in expr_eliminate_yn()
303 e->right.expr = NULL; in expr_eliminate_yn()
304 return e; in expr_eliminate_yn()
311 return e; in expr_eliminate_yn()
317 struct expr *expr_trans_bool(struct expr *e) in expr_trans_bool() argument
319 if (!e) in expr_trans_bool()
321 switch (e->type) { in expr_trans_bool()
325 e->left.expr = expr_trans_bool(e->left.expr); in expr_trans_bool()
326 e->right.expr = expr_trans_bool(e->right.expr); in expr_trans_bool()
330 if (e->left.sym->type == S_TRISTATE) { in expr_trans_bool()
331 if (e->right.sym == &symbol_no) { in expr_trans_bool()
332 e->type = E_SYMBOL; in expr_trans_bool()
333 e->right.sym = NULL; in expr_trans_bool()
340 return e; in expr_trans_bool()
612 struct expr *expr_eliminate_dups(struct expr *e) in expr_eliminate_dups() argument
615 if (!e) in expr_eliminate_dups()
616 return e; in expr_eliminate_dups()
621 switch (e->type) { in expr_eliminate_dups()
623 expr_eliminate_dups1(e->type, &e, &e); in expr_eliminate_dups()
624 expr_eliminate_dups2(e->type, &e, &e); in expr_eliminate_dups()
630 e = expr_eliminate_yn(e); in expr_eliminate_dups()
633 return e; in expr_eliminate_dups()
636 struct expr *expr_transform(struct expr *e) in expr_transform() argument
640 if (!e) in expr_transform()
642 switch (e->type) { in expr_transform()
649 e->left.expr = expr_transform(e->left.expr); in expr_transform()
650 e->right.expr = expr_transform(e->right.expr); in expr_transform()
653 switch (e->type) { in expr_transform()
655 if (e->left.sym->type != S_BOOLEAN) in expr_transform()
657 if (e->right.sym == &symbol_no) { in expr_transform()
658 e->type = E_NOT; in expr_transform()
659 e->left.expr = expr_alloc_symbol(e->left.sym); in expr_transform()
660 e->right.sym = NULL; in expr_transform()
663 if (e->right.sym == &symbol_mod) { in expr_transform()
664 printf("boolean symbol %s tested for 'm'? test forced to 'n'\n", e->left.sym->name); in expr_transform()
665 e->type = E_SYMBOL; in expr_transform()
666 e->left.sym = &symbol_no; in expr_transform()
667 e->right.sym = NULL; in expr_transform()
670 if (e->right.sym == &symbol_yes) { in expr_transform()
671 e->type = E_SYMBOL; in expr_transform()
672 e->right.sym = NULL; in expr_transform()
677 if (e->left.sym->type != S_BOOLEAN) in expr_transform()
679 if (e->right.sym == &symbol_no) { in expr_transform()
680 e->type = E_SYMBOL; in expr_transform()
681 e->right.sym = NULL; in expr_transform()
684 if (e->right.sym == &symbol_mod) { in expr_transform()
685 printf("boolean symbol %s tested for 'm'? test forced to 'y'\n", e->left.sym->name); in expr_transform()
686 e->type = E_SYMBOL; in expr_transform()
687 e->left.sym = &symbol_yes; in expr_transform()
688 e->right.sym = NULL; in expr_transform()
691 if (e->right.sym == &symbol_yes) { in expr_transform()
692 e->type = E_NOT; in expr_transform()
693 e->left.expr = expr_alloc_symbol(e->left.sym); in expr_transform()
694 e->right.sym = NULL; in expr_transform()
699 switch (e->left.expr->type) { in expr_transform()
702 tmp = e->left.expr->left.expr; in expr_transform()
703 free(e->left.expr); in expr_transform()
704 free(e); in expr_transform()
705 e = tmp; in expr_transform()
706 e = expr_transform(e); in expr_transform()
711 tmp = e->left.expr; in expr_transform()
712 free(e); in expr_transform()
713 e = tmp; in expr_transform()
714 e->type = e->type == E_EQUAL ? E_UNEQUAL : E_EQUAL; in expr_transform()
718 tmp = e->left.expr; in expr_transform()
719 e->type = E_AND; in expr_transform()
720 e->right.expr = expr_alloc_one(E_NOT, tmp->right.expr); in expr_transform()
723 e = expr_transform(e); in expr_transform()
727 tmp = e->left.expr; in expr_transform()
728 e->type = E_OR; in expr_transform()
729 e->right.expr = expr_alloc_one(E_NOT, tmp->right.expr); in expr_transform()
732 e = expr_transform(e); in expr_transform()
735 if (e->left.expr->left.sym == &symbol_yes) { in expr_transform()
737 tmp = e->left.expr; in expr_transform()
738 free(e); in expr_transform()
739 e = tmp; in expr_transform()
740 e->type = E_SYMBOL; in expr_transform()
741 e->left.sym = &symbol_no; in expr_transform()
744 if (e->left.expr->left.sym == &symbol_mod) { in expr_transform()
746 tmp = e->left.expr; in expr_transform()
747 free(e); in expr_transform()
748 e = tmp; in expr_transform()
749 e->type = E_SYMBOL; in expr_transform()
750 e->left.sym = &symbol_mod; in expr_transform()
753 if (e->left.expr->left.sym == &symbol_no) { in expr_transform()
755 tmp = e->left.expr; in expr_transform()
756 free(e); in expr_transform()
757 e = tmp; in expr_transform()
758 e->type = E_SYMBOL; in expr_transform()
759 e->left.sym = &symbol_yes; in expr_transform()
770 return e; in expr_transform()
877 struct expr *expr_trans_compare(struct expr *e, enum expr_type type, struct symbol *sym) in expr_trans_compare() argument
881 if (!e) { in expr_trans_compare()
882 e = expr_alloc_symbol(sym); in expr_trans_compare()
884 e = expr_alloc_one(E_NOT, e); in expr_trans_compare()
885 return e; in expr_trans_compare()
887 switch (e->type) { in expr_trans_compare()
889 e1 = expr_trans_compare(e->left.expr, E_EQUAL, sym); in expr_trans_compare()
890 e2 = expr_trans_compare(e->right.expr, E_EQUAL, sym); in expr_trans_compare()
892 e = expr_alloc_two(E_AND, e1, e2); in expr_trans_compare()
894 e = expr_alloc_two(E_OR, e1, e2); in expr_trans_compare()
896 e = expr_alloc_one(E_NOT, e); in expr_trans_compare()
897 return e; in expr_trans_compare()
899 e1 = expr_trans_compare(e->left.expr, E_EQUAL, sym); in expr_trans_compare()
900 e2 = expr_trans_compare(e->right.expr, E_EQUAL, sym); in expr_trans_compare()
902 e = expr_alloc_two(E_OR, e1, e2); in expr_trans_compare()
904 e = expr_alloc_two(E_AND, e1, e2); in expr_trans_compare()
906 e = expr_alloc_one(E_NOT, e); in expr_trans_compare()
907 return e; in expr_trans_compare()
909 return expr_trans_compare(e->left.expr, type == E_EQUAL ? E_UNEQUAL : E_EQUAL, sym); in expr_trans_compare()
914 return expr_copy(e); in expr_trans_compare()
918 return expr_alloc_one(E_NOT, expr_copy(e)); in expr_trans_compare()
921 return expr_alloc_one(E_NOT, expr_copy(e)); in expr_trans_compare()
925 return expr_copy(e); in expr_trans_compare()
929 return expr_alloc_comp(type, e->left.sym, sym); in expr_trans_compare()
938 tristate expr_calc_value(struct expr *e) in expr_calc_value() argument
943 if (!e) in expr_calc_value()
946 switch (e->type) { in expr_calc_value()
948 sym_calc_value(e->left.sym); in expr_calc_value()
949 return e->left.sym->curr.tri; in expr_calc_value()
951 val1 = expr_calc_value(e->left.expr); in expr_calc_value()
952 val2 = expr_calc_value(e->right.expr); in expr_calc_value()
955 val1 = expr_calc_value(e->left.expr); in expr_calc_value()
956 val2 = expr_calc_value(e->right.expr); in expr_calc_value()
959 val1 = expr_calc_value(e->left.expr); in expr_calc_value()
962 sym_calc_value(e->left.sym); in expr_calc_value()
963 sym_calc_value(e->right.sym); in expr_calc_value()
964 str1 = sym_get_string_value(e->left.sym); in expr_calc_value()
965 str2 = sym_get_string_value(e->right.sym); in expr_calc_value()
968 sym_calc_value(e->left.sym); in expr_calc_value()
969 sym_calc_value(e->right.sym); in expr_calc_value()
970 str1 = sym_get_string_value(e->left.sym); in expr_calc_value()
971 str2 = sym_get_string_value(e->right.sym); in expr_calc_value()
974 printf("expr_calc_value: %d?\n", e->type); in expr_calc_value()
1012 expr_get_leftmost_symbol(const struct expr *e) in expr_get_leftmost_symbol() argument
1015 if (e == NULL) in expr_get_leftmost_symbol()
1018 while (e->type != E_SYMBOL) in expr_get_leftmost_symbol()
1019 e = e->left.expr; in expr_get_leftmost_symbol()
1021 return expr_copy(e); in expr_get_leftmost_symbol()
1038 struct expr *e; in expr_simplify_unmet_dep() local
1039 e = expr_alloc_and(expr_copy(e1), expr_copy(e2)); in expr_simplify_unmet_dep()
1040 e = expr_eliminate_dups(e); in expr_simplify_unmet_dep()
1041 ret = (!expr_eq(e, e1)) ? e1 : NULL; in expr_simplify_unmet_dep()
1042 expr_free(e); in expr_simplify_unmet_dep()
1053 void expr_print(struct expr *e, void (*fn)(void *, struct symbol *, const char *), void *data, int … in expr_print() argument
1055 if (!e) { in expr_print()
1060 if (expr_compare_type(prevtoken, e->type) > 0) in expr_print()
1062 switch (e->type) { in expr_print()
1064 if (e->left.sym->name) in expr_print()
1065 fn(data, e->left.sym, e->left.sym->name); in expr_print()
1071 expr_print(e->left.expr, fn, data, E_NOT); in expr_print()
1074 if (e->left.sym->name) in expr_print()
1075 fn(data, e->left.sym, e->left.sym->name); in expr_print()
1079 fn(data, e->right.sym, e->right.sym->name); in expr_print()
1082 if (e->left.sym->name) in expr_print()
1083 fn(data, e->left.sym, e->left.sym->name); in expr_print()
1087 fn(data, e->right.sym, e->right.sym->name); in expr_print()
1090 expr_print(e->left.expr, fn, data, E_OR); in expr_print()
1092 expr_print(e->right.expr, fn, data, E_OR); in expr_print()
1095 expr_print(e->left.expr, fn, data, E_AND); in expr_print()
1097 expr_print(e->right.expr, fn, data, E_AND); in expr_print()
1100 fn(data, e->right.sym, e->right.sym->name); in expr_print()
1101 if (e->left.expr) { in expr_print()
1103 expr_print(e->left.expr, fn, data, E_LIST); in expr_print()
1108 fn(data, e->left.sym, e->left.sym->name); in expr_print()
1110 fn(data, e->right.sym, e->right.sym->name); in expr_print()
1116 sprintf(buf, "<unknown type %d>", e->type); in expr_print()
1121 if (expr_compare_type(prevtoken, e->type) > 0) in expr_print()
1130 void expr_fprint(struct expr *e, FILE *out) in expr_fprint() argument
1132 expr_print(e, expr_print_file_helper, out, E_NONE); in expr_fprint()
1165 void expr_gstr_print(struct expr *e, struct gstr *gs) in expr_gstr_print() argument
1167 expr_print(e, expr_print_gstr_helper, gs, E_NONE); in expr_gstr_print()