Lines Matching refs:np
36 static NODE *arithmetic(NODE *np);
37 static NODE *comparison(NODE *np);
38 static int type_of(NODE *np);
41 static NODE *userfunc(NODE *np);
43 static NODE *exprconcat(NODE *np, int len);
44 static int s_if(NODE *np);
45 static int s_while(NODE *np);
46 static int s_for(NODE *np);
47 static int s_forin(NODE *np);
50 static int action(NODE *np);
51 static wchar_t *makeindex(NODE *np, wchar_t *array, int tag);
52 static int exprtest(NODE *np);
116 strassign(NODE *np, STRING string, int flags, size_t length) in strassign() argument
118 if (np->n_type == FUNC) in strassign()
120 else if (np->n_type == GETLINE || np->n_type == KEYWORD) in strassign()
122 if (np->n_flags & FSPECIAL) { in strassign()
123 (void) nassign(np, stringnode(string, flags, length)); in strassign()
126 if (isastring(np->n_flags)) in strassign()
127 free((wchar_t *)np->n_string); in strassign()
128 np->n_strlen = length++; in strassign()
131 np->n_string = (STRING) emalloc(length); in strassign()
132 (void) memcpy((void *)np->n_string, string, length); in strassign()
134 np->n_string = string; in strassign()
140 np->n_flags &= FSAVE; in strassign()
143 flags |= type_of(np); in strassign()
146 np->n_flags |= flags; in strassign()
156 nassign(NODE *np, NODE *value) in nassign() argument
162 if (np == value) in nassign()
163 return (np); in nassign()
164 if (np->n_flags & FSPECIAL) { in nassign()
165 if (np == varRS || np == varFS) { in nassign()
166 if (isastring(np->n_flags)) in nassign()
167 free((void *)np->n_string); in nassign()
168 len = sizeof (wchar_t) * ((np->n_strlen = in nassign()
170 np->n_string = emalloc(len); in nassign()
171 (void) memcpy((wchar_t *)np->n_string, cp, len); in nassign()
172 np->n_flags = FALLOC|FSTRING|FSPECIAL; in nassign()
173 if (np == varRS) { in nassign()
174 if (np->n_string[0] == '\n') in nassign()
176 else if (np->n_string[0] == '\0') in nassign()
180 } else if (np == varFS) { in nassign()
185 if (wcslen((wchar_t *)np->n_string) > 1) in nassign()
186 setrefield(np); in nassign()
187 else if (np->n_string[0] == ' ') in nassign()
192 return (np); in nassign()
195 if (isastring(np->n_flags)) in nassign()
196 free((wchar_t *)np->n_string); in nassign()
198 np->n_strlen = value->n_strlen; in nassign()
200 len = (np->n_strlen+1) * sizeof (wchar_t); in nassign()
201 np->n_string = emalloc(len); in nassign()
202 (void) memcpy(np->n_string, value->n_string, len); in nassign()
203 np->n_flags &= FSAVE; in nassign()
204 np->n_flags |= value->n_flags & ~FSAVE; in nassign()
205 np->n_flags |= FALLOC; in nassign()
206 return (np); in nassign()
208 np->n_string = value->n_string; in nassign()
210 np->n_int = value->n_int; in nassign()
212 np->n_real = value->n_real; in nassign()
213 np->n_flags &= FSAVE; in nassign()
214 np->n_flags |= value->n_flags & ~FSAVE; in nassign()
215 return (np); in nassign()
222 setrefield(NODE *np) in setrefield() argument
227 if ((n = REGWCOMP(&re, np->n_string)) != REG_OK) { in setrefield()
230 (char *)linebuf, np->n_string); in setrefield()
284 register NODE *np; in node() local
286 np = emptynode(type, 0); in node()
287 np->n_left = left; in node()
288 np->n_right = right; in node()
289 np->n_lineno = lineno; in node()
290 return (np); in node()
299 register NODE *np; in intnode() local
301 np = emptynode(CONSTANT, 0); in intnode()
302 np->n_flags = FINT|FVINT; in intnode()
303 np->n_int = i; in intnode()
304 return (np); in intnode()
313 register NODE *np; in realnode() local
315 np = emptynode(CONSTANT, 0); in realnode()
316 np->n_flags = FREAL|FVREAL; in realnode()
317 np->n_real = real; in realnode()
318 return (np); in realnode()
327 register NODE *np; in stringnode() local
329 np = emptynode(CONSTANT, 0); in stringnode()
330 np->n_strlen = length; in stringnode()
332 np->n_string = emalloc(length = (length+1) * sizeof (wchar_t)); in stringnode()
333 (void) memcpy(np->n_string, s, length); in stringnode()
335 np->n_string = s; in stringnode()
342 np->n_flags = type_of(np); in stringnode()
345 np->n_flags = FSTRING; in stringnode()
346 np->n_flags |= how; in stringnode()
347 return (np); in stringnode()
371 register NODE *np; in emptynode() local
374 np = fnodep++; in emptynode()
376 np = (NODE *)emalloc(sizeof (NODE) + in emptynode()
379 np->n_next = freelist; in emptynode()
380 freelist = np; in emptynode()
383 np->n_flags = FNONTOK; in emptynode()
384 np->n_type = type; in emptynode()
385 np->n_alink = NNULL; in emptynode()
387 return (np); in emptynode()
394 freenode(NODE *np) in freenode() argument
396 if (isastring(np->n_flags)) in freenode()
397 free((wchar_t *)np->n_string); in freenode()
398 else if (np->n_type == RE) { in freenode()
399 REGWFREE(np->n_regexp); in freenode()
401 free((wchar_t *)np); in freenode()
410 register NODE *np; in kinstall() local
414 np = emptynode(KEYWORD, l); in kinstall()
415 np->n_keywtype = type; in kinstall()
416 (void) memcpy(np->n_name, name, (l+1) * sizeof (wchar_t)); in kinstall()
417 addsymtab(np); in kinstall()
426 register NODE *np; in finstall() local
430 np = emptynode(type, l); in finstall()
431 np->n_function = func; in finstall()
432 (void) memcpy(np->n_name, name, (l+1) * sizeof (wchar_t)); in finstall()
433 addsymtab(np); in finstall()
434 return (np); in finstall()
447 register NODE *np; in vlookup() local
449 np = symtab[hashbuck(hash = dohash((wchar_t *)name))]; in vlookup()
450 while (np != NNULL) { in vlookup()
451 if (np->n_hash == hash && wcscmp(name, np->n_name) == 0) in vlookup()
452 return (np); in vlookup()
453 np = np->n_next; in vlookup()
456 np = NNULL; in vlookup()
458 np = emptynode(VAR, hash = wcslen(name)); in vlookup()
459 np->n_flags = FSTRING|FVINT; in vlookup()
460 np->n_strlen = 0; in vlookup()
461 np->n_string = _null; in vlookup()
462 (void) memcpy(np->n_name, name, in vlookup()
464 addsymtab(np); in vlookup()
466 return (np); in vlookup()
473 addsymtab(NODE *np) in addsymtab() argument
477 np->n_hash = dohash((wchar_t *)np->n_name); in addsymtab()
478 spp = &symtab[hashbuck(np->n_hash)]; in addsymtab()
479 np->n_next = *spp; in addsymtab()
480 *spp = np; in addsymtab()
491 delsymtab(NODE *np, int fflag) in delsymtab() argument
502 h = hashbuck(np->n_hash); in delsymtab()
505 if (rnp == np) { in delsymtab()
557 register NODE *np; in execute() local
568 np = wp->n_left; in execute()
571 np = wp; in execute()
574 if (np->n_type != PACT) in execute()
581 tnp = np; in execute()
582 np = np->n_left; in execute()
583 if (np == NNULL) { in execute()
587 if (np->n_type != phase) in execute()
589 } else if ((type = np->n_type) == BEGIN || type == END) { in execute()
597 if (np->n_flags & FMATCH) { in execute()
598 if (exprint(np->n_right) != 0) in execute()
599 np->n_flags &= ~FMATCH; in execute()
600 } else if (exprint(np->n_left) != 0) { in execute()
601 if (exprint(np->n_right) == 0) in execute()
602 np->n_flags |= FMATCH; in execute()
605 } else if (exprint(np) == 0) in execute()
607 np = tnp; in execute()
608 if (action(np->n_right)) { in execute()
623 register NODE *np, *nnp; in freetemps() local
627 for (np = &nodes[0]; np < fnodep; np++) { in freetemps()
628 if (isastring(np->n_flags)) { in freetemps()
629 free((wchar_t *)np->n_string); in freetemps()
630 } else if (np->n_type == RE) { in freetemps()
631 REGWFREE(np->n_regexp); in freetemps()
635 for (np = freelist; np != NNULL; np = nnp) { in freetemps()
636 nnp = np->n_next; in freetemps()
637 freenode(np); in freetemps()
649 register NODE *np; in action() local
655 np = wp->n_left; in action()
658 np = wp; in action()
663 curnode = np; in action()
669 switch (np->n_type) { in action()
671 (void) assign(np->n_left, np->n_right); in action()
675 s_print(np); in action()
679 s_prf(np); in action()
683 if (np->n_left != NNULL) in action()
684 act = (int)exprint(np->n_left); else in action()
692 np = np->n_left != NNULL in action()
693 ? exprreduce(np->n_left) in action()
697 (void) nassign(retval, np); in action()
705 return (np->n_type); in action()
708 if ((l = np->n_left)->n_type == PARM) { in action()
719 if ((np = l->n_left)->n_type == PARM) { in action()
720 np = np->n_next; in action()
721 if (!(np->n_flags & FLARRAY)) in action()
722 np = np->n_alink; in action()
735 while (np != NNULL) { in action()
736 if (np->n_alink == l) { in action()
737 np->n_alink = l->n_alink; in action()
740 np = np->n_alink; in action()
759 if ((act = s_while(np)) != 0) in action()
764 if ((act = s_for(np)) != 0) in action()
769 if ((act = s_forin(np)) != 0) in action()
774 if ((act = s_if(np)) != 0) in action()
779 (void) exprreduce(np); in action()
795 delarray(NODE *np) in delarray() argument
799 nnp = np->n_alink; in delarray()
800 np->n_alink = NNULL; in delarray()
802 np = nnp->n_alink; in delarray()
804 nnp = np; in delarray()
812 exprint(NODE *np) in exprint() argument
814 if (isleaf(np->n_flags)) { in exprint()
815 if (np->n_type == PARM) in exprint()
816 np = np->n_next; in exprint()
819 np = exprreduce(np); in exprint()
820 switch (np->n_type) { in exprint()
824 if (np->n_flags & FINT) in exprint()
825 return (np->n_int); in exprint()
826 if (np->n_flags & FREAL) in exprint()
827 return ((INT)np->n_real); in exprint()
828 return ((INT)wcstoll(np->n_string, NULL, 10)); in exprint()
841 exprreal(NODE *np) in exprreal() argument
845 if (isleaf(np->n_flags)) { in exprreal()
846 if (np->n_type == PARM) in exprreal()
847 np = np->n_next; in exprreal()
850 np = exprreduce(np); in exprreal()
851 switch (np->n_type) { in exprreal()
855 if (np->n_flags & FREAL) in exprreal()
856 return (np->n_real); in exprreal()
857 if (np->n_flags & FINT) in exprreal()
858 return ((REAL)np->n_int); in exprreal()
859 return ((REAL)wcstod((wchar_t *)np->n_string, (wchar_t **)0)); in exprreal()
872 exprstring(NODE *np) in exprstring() argument
874 if (isleaf(np->n_flags)) { in exprstring()
875 if (np->n_type == PARM) in exprstring()
876 np = np->n_next; in exprstring()
879 np = exprreduce(np); in exprstring()
880 switch (np->n_type) { in exprstring()
884 if (isstring(np->n_flags)) in exprstring()
885 return (np->n_string); in exprstring()
886 if (np->n_flags & FINT) in exprstring()
887 return (STRING)lltoa((long long)np->n_int); in exprstring()
892 (double)np->n_real); in exprstring()
947 exprconcat(NODE *np, int len) in exprconcat() argument
950 register NODE *lnp = np->n_left; in exprconcat()
951 register NODE *rnp = np->n_right; in exprconcat()
998 exprreduce(NODE *np) in exprreduce() argument
1012 if ((t = np->n_type) == VAR || t == CONSTANT) in exprreduce()
1013 return (np); in exprreduce()
1020 if ((np = np->n_next)->n_type == ARRAY) in exprreduce()
1021 awkerr(badarray, np->n_name); in exprreduce()
1023 return (np); in exprreduce()
1027 curnode = np; in exprreduce()
1030 return (userfunc(np)); in exprreduce()
1033 return (rfield(exprint(np->n_left))); in exprreduce()
1038 temp = np->n_type; in exprreduce()
1039 tnp = np->n_left; in exprreduce()
1040 np = np->n_right; in exprreduce()
1070 if (np == NNULL || np->n_type == COMMA) in exprreduce()
1073 np = vlook(exprstring(np)); in exprreduce()
1074 return (np); in exprreduce()
1076 cp = makeindex(np, aname, tag); in exprreduce()
1078 np = vlook(cp); in exprreduce()
1079 if (!(np->n_flags & FINARRAY)) { in exprreduce()
1080 np->n_alink = tnp->n_alink; in exprreduce()
1081 tnp->n_alink = np; in exprreduce()
1082 np->n_flags |= FINARRAY; in exprreduce()
1085 np = vlookup(cp, 1) == NNULL ? const0 : const1; in exprreduce()
1088 return (np); in exprreduce()
1092 np = exprconcat(np, 0); in exprreduce()
1094 return (np); in exprreduce()
1097 return (intnode(exprtest(np->n_left) == 0 ? (INT)1 : (INT)0)); in exprreduce()
1100 return ((exprtest(np->n_left) != 0 && in exprreduce()
1101 exprtest(np->n_right) != 0) ? const1 : const0); in exprreduce()
1104 return ((exprtest(np->n_left) != 0 || in exprreduce()
1105 exprtest(np->n_right) != 0) ? const1 : const0); in exprreduce()
1117 f1 = (double)exprreal(np->n_left); in exprreduce()
1118 f2 = (double)exprreal(np->n_right); in exprreduce()
1123 if (np->n_right->n_type != COLON) in exprreduce()
1125 if (exprtest(np->n_left)) in exprreduce()
1126 np = np->n_right->n_left; else in exprreduce()
1127 np = np->n_right->n_right; in exprreduce()
1128 return (exprreduce(np)); in exprreduce()
1136 return (comparison(np)); in exprreduce()
1143 return (arithmetic(np)); in exprreduce()
1151 if ((np = np->n_left)->n_type == INDEX) in exprreduce()
1152 np = exprreduce(np); in exprreduce()
1153 if (np->n_flags & FREAL) in exprreduce()
1154 tnp = realnode(np->n_real); in exprreduce()
1156 tnp = intnode(exprint(np)); in exprreduce()
1157 inc_oper->n_left = np; in exprreduce()
1158 (void) assign(np, inc_oper); in exprreduce()
1167 if ((np = np->n_left)->n_type == INDEX) in exprreduce()
1168 np = exprreduce(np); in exprreduce()
1169 inc_oper->n_left = np; in exprreduce()
1170 return (assign(np, inc_oper)); in exprreduce()
1190 asn_oper->n_right = np->n_right; in exprreduce()
1191 if ((np = np->n_left)->n_type == INDEX) in exprreduce()
1192 np = exprreduce(np); in exprreduce()
1193 asn_oper->n_left = np; in exprreduce()
1194 return (assign(np, asn_oper)); in exprreduce()
1198 return (f_getline(np)); in exprreduce()
1201 return ((*np->n_left->n_function)(np->n_right)); in exprreduce()
1204 if (regmatch(np->n_regexp, linebuf) == REG_OK) in exprreduce()
1209 cp = exprstring(np->n_left); in exprreduce()
1210 if (regmatch(getregexp(np->n_right), cp) == REG_OK) in exprreduce()
1215 cp = exprstring(np->n_left); in exprreduce()
1216 if (regmatch(getregexp(np->n_right), cp) != REG_OK) in exprreduce()
1221 return (assign(np->n_left, np->n_right)); in exprreduce()
1224 awkerr(badarray, np->n_name); in exprreduce()
1227 awkerr(varnotfunc, np->n_name); in exprreduce()
1240 arithmetic(NODE *np) in arithmetic() argument
1248 left = exprreduce(np->n_left); in arithmetic()
1253 r2 = exprreal(np->n_right); in arithmetic()
1256 right = exprreduce(np->n_right); in arithmetic()
1269 switch (np->n_type) { in arithmetic()
1337 comparison(NODE *np) in comparison() argument
1345 left = np->n_left; in comparison()
1352 right = np->n_right; in comparison()
1425 switch (np->n_type) { in comparison()
1457 type_of(NODE *np) in type_of() argument
1466 cp = (wchar_t *)np->n_string; in type_of()
1585 lfield(INT fieldno, NODE *np) in lfield() argument
1595 newlen = wcslen(newval = (wchar_t *)exprstring(np)); in lfield()
1660 return (np); in lfield()
1671 userfunc(NODE *np) in userfunc() argument
1676 if ((fnp = np->n_left) == NNULL) in userfunc()
1698 actlist = np->n_right; in userfunc()
1794 np = retval; else in userfunc()
1795 np = const0; in userfunc()
1813 return (np); in userfunc()
1820 getregexp(NODE *np) in getregexp() argument
1822 if (np->n_type == RE) in getregexp()
1823 return (np->n_regexp); in getregexp()
1824 np = renode((wchar_t *)exprstring(np)); in getregexp()
1825 return (np->n_regexp); in getregexp()
1834 register NODE *np; in getlist() local
1836 if ((np = *npp) == NNULL) in getlist()
1837 return (np); in getlist()
1838 if (np->n_type == COMMA) { in getlist()
1839 *npp = np->n_right; in getlist()
1840 return (np->n_left); in getlist()
1843 return (np); in getlist()
1851 s_if(NODE *np) in s_if() argument
1856 test = exprtest(np->n_left); in s_if()
1857 xp = np->n_right; in s_if()
1871 s_while(NODE *np) in s_while() argument
1875 if (np->n_type == DO) in s_while()
1878 if (exprtest(np->n_left) == 0) in s_while()
1881 if ((act = action(np->n_right)) != 0) { in s_while()
1901 s_for(NODE *np) in s_for() argument
1907 listp = np->n_left; in s_for()
1916 if ((act = action(np->n_right)) != 0) { in s_for()
1939 s_forin(NODE *np) in s_forin() argument
1951 left = np->n_left; in s_forin()
1952 statement = np->n_right; in s_forin()
1957 np = left->n_right; in s_forin()
1958 if (np->n_type == PARM) { in s_forin()
1959 np = np->n_next; in s_forin()
1960 if (!(np->n_flags & FLARRAY)) in s_forin()
1961 np = np->n_alink; in s_forin()
1963 if (np == varSYMTAB) { in s_forin()
1965 np = NNULL; in s_forin()
1974 if (np->n_type != ARRAY) { in s_forin()
1975 if (!isstring(np->n_flags) || np->n_string != _null) in s_forin()
1976 awkerr(notarray, np->n_name); in s_forin()
1979 promote(np); in s_forin()
1980 if (np->n_alink != NNULL) in s_forin()
1981 if (!(np->n_flags & FLARRAY)) in s_forin()
1982 np = np->n_alink; in s_forin()
1994 if ((*(nnp = next_forin) = np->n_alink) == 0) in s_forin()
2014 if ((left = symwalk(&nbuck, &np)) == NNULL) in s_forin()
2018 if ((np = *nnp) == NNULL) in s_forin()
2020 index = np->n_name+alen; in s_forin()
2021 *nnp = np->n_alink; in s_forin()
2047 register NODE *np; in symwalk() local
2049 np = *npp; in symwalk()
2051 while (np == NNULL) { in symwalk()
2054 np = symtab[(*buckp)++]; in symwalk()
2056 if (np->n_type == VAR && in symwalk()
2057 (!isstring(np->n_flags) || np->n_string != _null)) { in symwalk()
2058 *npp = np->n_next; in symwalk()
2059 return (np); in symwalk()
2061 np = np->n_next; in symwalk()
2070 exprtest(NODE *np) in exprtest() argument
2074 if (np == NNULL) in exprtest()
2078 np = exprreduce(np); in exprtest()
2079 if (isint(t = np->n_flags)) { in exprtest()
2081 return (exprint(np) != 0); in exprtest()
2082 return (np->n_int != 0); in exprtest()
2087 rval = isstring(t) ? exprreal(np) : np->n_real; in exprtest()
2090 return (*(wchar_t *)exprstring(np) != '\0'); in exprtest()
2099 makeindex(NODE *np, wchar_t *array, int tag) in makeindex() argument
2121 if (np->n_type != COMMA) { in makeindex()
2125 if (isleaf(np->n_flags) && np->n_type == PARM) in makeindex()
2126 np = np->n_next; in makeindex()
2127 if (isstring(np->n_flags)) { in makeindex()
2128 indstr = np->n_string; in makeindex()
2129 len = np->n_strlen; in makeindex()
2131 indstr = exprstring(np); in makeindex()
2153 while ((index = getlist(&np)) != NNULL) { in makeindex()