Lines Matching refs:np
38 static NODE *arithmetic(NODE *np);
39 static NODE *comparison(NODE *np);
40 static int type_of(NODE *np);
43 static NODE *userfunc(NODE *np);
45 static NODE *exprconcat(NODE *np, int len);
46 static int s_if(NODE *np);
47 static int s_while(NODE *np);
48 static int s_for(NODE *np);
49 static int s_forin(NODE *np);
52 static int action(NODE *np);
53 static wchar_t *makeindex(NODE *np, wchar_t *array, int tag);
54 static int exprtest(NODE *np);
118 strassign(NODE *np, STRING string, int flags, size_t length) in strassign() argument
120 if (np->n_type == FUNC) in strassign()
122 else if (np->n_type == GETLINE || np->n_type == KEYWORD) in strassign()
124 if (np->n_flags & FSPECIAL) { in strassign()
125 (void) nassign(np, stringnode(string, flags, length)); in strassign()
128 if (isastring(np->n_flags)) in strassign()
129 free((wchar_t *)np->n_string); in strassign()
130 np->n_strlen = length++; in strassign()
133 np->n_string = (STRING) emalloc(length); in strassign()
134 (void) memcpy((void *)np->n_string, string, length); in strassign()
136 np->n_string = string; in strassign()
142 np->n_flags &= FSAVE; in strassign()
145 flags |= type_of(np); in strassign()
148 np->n_flags |= flags; in strassign()
158 nassign(NODE *np, NODE *value) in nassign() argument
164 if (np == value) in nassign()
165 return (np); in nassign()
166 if (np->n_flags & FSPECIAL) { in nassign()
167 if (np == varRS || np == varFS) { in nassign()
168 if (isastring(np->n_flags)) in nassign()
169 free((void *)np->n_string); in nassign()
170 len = sizeof (wchar_t) * ((np->n_strlen = in nassign()
172 np->n_string = emalloc(len); in nassign()
173 (void) memcpy((wchar_t *)np->n_string, cp, len); in nassign()
174 np->n_flags = FALLOC|FSTRING|FSPECIAL; in nassign()
175 if (np == varRS) { in nassign()
176 if (np->n_string[0] == '\n') in nassign()
178 else if (np->n_string[0] == '\0') in nassign()
182 } else if (np == varFS) { in nassign()
187 if (wcslen((wchar_t *)np->n_string) > 1) in nassign()
188 setrefield(np); in nassign()
189 else if (np->n_string[0] == ' ') in nassign()
194 return (np); in nassign()
197 if (isastring(np->n_flags)) in nassign()
198 free((wchar_t *)np->n_string); in nassign()
200 np->n_strlen = value->n_strlen; in nassign()
202 len = (np->n_strlen+1) * sizeof (wchar_t); in nassign()
203 np->n_string = emalloc(len); in nassign()
204 (void) memcpy(np->n_string, value->n_string, len); in nassign()
205 np->n_flags &= FSAVE; in nassign()
206 np->n_flags |= value->n_flags & ~FSAVE; in nassign()
207 np->n_flags |= FALLOC; in nassign()
208 return (np); in nassign()
210 np->n_string = value->n_string; in nassign()
212 np->n_int = value->n_int; in nassign()
214 np->n_real = value->n_real; in nassign()
215 np->n_flags &= FSAVE; in nassign()
216 np->n_flags |= value->n_flags & ~FSAVE; in nassign()
217 return (np); in nassign()
224 setrefield(NODE *np) in setrefield() argument
229 if ((n = REGWCOMP(&re, np->n_string)) != REG_OK) { in setrefield()
232 (char *)linebuf, np->n_string); in setrefield()
286 register NODE *np; in node() local
288 np = emptynode(type, 0); in node()
289 np->n_left = left; in node()
290 np->n_right = right; in node()
291 np->n_lineno = lineno; in node()
292 return (np); in node()
301 register NODE *np; in intnode() local
303 np = emptynode(CONSTANT, 0); in intnode()
304 np->n_flags = FINT|FVINT; in intnode()
305 np->n_int = i; in intnode()
306 return (np); in intnode()
315 register NODE *np; in realnode() local
317 np = emptynode(CONSTANT, 0); in realnode()
318 np->n_flags = FREAL|FVREAL; in realnode()
319 np->n_real = real; in realnode()
320 return (np); in realnode()
329 register NODE *np; in stringnode() local
331 np = emptynode(CONSTANT, 0); in stringnode()
332 np->n_strlen = length; in stringnode()
334 np->n_string = emalloc(length = (length+1) * sizeof (wchar_t)); in stringnode()
335 (void) memcpy(np->n_string, s, length); in stringnode()
337 np->n_string = s; in stringnode()
344 np->n_flags = type_of(np); in stringnode()
347 np->n_flags = FSTRING; in stringnode()
348 np->n_flags |= how; in stringnode()
349 return (np); in stringnode()
373 register NODE *np; in emptynode() local
376 np = fnodep++; in emptynode()
378 np = (NODE *)emalloc(sizeof (NODE) + in emptynode()
381 np->n_next = freelist; in emptynode()
382 freelist = np; in emptynode()
385 np->n_flags = FNONTOK; in emptynode()
386 np->n_type = type; in emptynode()
387 np->n_alink = NNULL; in emptynode()
389 return (np); in emptynode()
396 freenode(NODE *np) in freenode() argument
398 if (isastring(np->n_flags)) in freenode()
399 free((wchar_t *)np->n_string); in freenode()
400 else if (np->n_type == RE) { in freenode()
401 REGWFREE(np->n_regexp); in freenode()
403 free((wchar_t *)np); in freenode()
412 register NODE *np; in kinstall() local
416 np = emptynode(KEYWORD, l); in kinstall()
417 np->n_keywtype = type; in kinstall()
418 (void) memcpy(np->n_name, name, (l+1) * sizeof (wchar_t)); in kinstall()
419 addsymtab(np); in kinstall()
428 register NODE *np; in finstall() local
432 np = emptynode(type, l); in finstall()
433 np->n_function = func; in finstall()
434 (void) memcpy(np->n_name, name, (l+1) * sizeof (wchar_t)); in finstall()
435 addsymtab(np); in finstall()
436 return (np); in finstall()
449 register NODE *np; in vlookup() local
451 np = symtab[hashbuck(hash = dohash((wchar_t *)name))]; in vlookup()
452 while (np != NNULL) { in vlookup()
453 if (np->n_hash == hash && wcscmp(name, np->n_name) == 0) in vlookup()
454 return (np); in vlookup()
455 np = np->n_next; in vlookup()
458 np = NNULL; in vlookup()
460 np = emptynode(VAR, hash = wcslen(name)); in vlookup()
461 np->n_flags = FSTRING|FVINT; in vlookup()
462 np->n_strlen = 0; in vlookup()
463 np->n_string = _null; in vlookup()
464 (void) memcpy(np->n_name, name, in vlookup()
466 addsymtab(np); in vlookup()
468 return (np); in vlookup()
475 addsymtab(NODE *np) in addsymtab() argument
479 np->n_hash = dohash((wchar_t *)np->n_name); in addsymtab()
480 spp = &symtab[hashbuck(np->n_hash)]; in addsymtab()
481 np->n_next = *spp; in addsymtab()
482 *spp = np; in addsymtab()
493 delsymtab(NODE *np, int fflag) in delsymtab() argument
504 h = hashbuck(np->n_hash); in delsymtab()
507 if (rnp == np) { in delsymtab()
559 register NODE *np; in execute() local
570 np = wp->n_left; in execute()
573 np = wp; in execute()
576 if (np->n_type != PACT) in execute()
583 tnp = np; in execute()
584 np = np->n_left; in execute()
585 if (np == NNULL) { in execute()
589 if (np->n_type != phase) in execute()
591 } else if ((type = np->n_type) == BEGIN || type == END) { in execute()
599 if (np->n_flags & FMATCH) { in execute()
600 if (exprint(np->n_right) != 0) in execute()
601 np->n_flags &= ~FMATCH; in execute()
602 } else if (exprint(np->n_left) != 0) { in execute()
603 if (exprint(np->n_right) == 0) in execute()
604 np->n_flags |= FMATCH; in execute()
607 } else if (exprint(np) == 0) in execute()
609 np = tnp; in execute()
610 if (action(np->n_right)) { in execute()
625 register NODE *np, *nnp; in freetemps() local
629 for (np = &nodes[0]; np < fnodep; np++) { in freetemps()
630 if (isastring(np->n_flags)) { in freetemps()
631 free((wchar_t *)np->n_string); in freetemps()
632 } else if (np->n_type == RE) { in freetemps()
633 REGWFREE(np->n_regexp); in freetemps()
637 for (np = freelist; np != NNULL; np = nnp) { in freetemps()
638 nnp = np->n_next; in freetemps()
639 freenode(np); in freetemps()
651 register NODE *np; in action() local
657 np = wp->n_left; in action()
660 np = wp; in action()
665 curnode = np; in action()
671 switch (np->n_type) { in action()
673 (void) assign(np->n_left, np->n_right); in action()
677 s_print(np); in action()
681 s_prf(np); in action()
685 if (np->n_left != NNULL) in action()
686 act = (int)exprint(np->n_left); else in action()
694 np = np->n_left != NNULL in action()
695 ? exprreduce(np->n_left) in action()
699 (void) nassign(retval, np); in action()
707 return (np->n_type); in action()
710 if ((l = np->n_left)->n_type == PARM) { in action()
721 if ((np = l->n_left)->n_type == PARM) { in action()
722 np = np->n_next; in action()
723 if (!(np->n_flags & FLARRAY)) in action()
724 np = np->n_alink; in action()
737 while (np != NNULL) { in action()
738 if (np->n_alink == l) { in action()
739 np->n_alink = l->n_alink; in action()
742 np = np->n_alink; in action()
760 if ((act = s_while(np)) != 0) in action()
765 if ((act = s_for(np)) != 0) in action()
770 if ((act = s_forin(np)) != 0) in action()
775 if ((act = s_if(np)) != 0) in action()
780 (void) exprreduce(np); in action()
796 delarray(NODE *np) in delarray() argument
800 nnp = np->n_alink; in delarray()
801 np->n_alink = NNULL; in delarray()
803 np = nnp->n_alink; in delarray()
805 nnp = np; in delarray()
813 exprint(NODE *np) in exprint() argument
815 if (isleaf(np->n_flags)) { in exprint()
816 if (np->n_type == PARM) in exprint()
817 np = np->n_next; in exprint()
820 np = exprreduce(np); in exprint()
821 switch (np->n_type) { in exprint()
825 if (np->n_flags & FINT) in exprint()
826 return (np->n_int); in exprint()
827 if (np->n_flags & FREAL) in exprint()
828 return ((INT)np->n_real); in exprint()
829 return ((INT)wcstoll(np->n_string, NULL, 10)); in exprint()
842 exprreal(NODE *np) in exprreal() argument
846 if (isleaf(np->n_flags)) { in exprreal()
847 if (np->n_type == PARM) in exprreal()
848 np = np->n_next; in exprreal()
851 np = exprreduce(np); in exprreal()
852 switch (np->n_type) { in exprreal()
856 if (np->n_flags & FREAL) in exprreal()
857 return (np->n_real); in exprreal()
858 if (np->n_flags & FINT) in exprreal()
859 return ((REAL)np->n_int); in exprreal()
860 return ((REAL)wcstod((wchar_t *)np->n_string, (wchar_t **)0)); in exprreal()
873 exprstring(NODE *np) in exprstring() argument
875 if (isleaf(np->n_flags)) { in exprstring()
876 if (np->n_type == PARM) in exprstring()
877 np = np->n_next; in exprstring()
880 np = exprreduce(np); in exprstring()
881 switch (np->n_type) { in exprstring()
885 if (isstring(np->n_flags)) in exprstring()
886 return (np->n_string); in exprstring()
887 if (np->n_flags & FINT) in exprstring()
888 return (STRING)lltoa((long long)np->n_int); in exprstring()
893 (double)np->n_real); in exprstring()
948 exprconcat(NODE *np, int len) in exprconcat() argument
951 register NODE *lnp = np->n_left; in exprconcat()
952 register NODE *rnp = np->n_right; in exprconcat()
999 exprreduce(NODE *np) in exprreduce() argument
1013 if ((t = np->n_type) == VAR || t == CONSTANT) in exprreduce()
1014 return (np); in exprreduce()
1021 if ((np = np->n_next)->n_type == ARRAY) in exprreduce()
1022 awkerr(badarray, np->n_name); in exprreduce()
1024 return (np); in exprreduce()
1028 curnode = np; in exprreduce()
1031 return (userfunc(np)); in exprreduce()
1034 return (rfield(exprint(np->n_left))); in exprreduce()
1039 temp = np->n_type; in exprreduce()
1040 tnp = np->n_left; in exprreduce()
1041 np = np->n_right; in exprreduce()
1071 if (np == NNULL || np->n_type == COMMA) in exprreduce()
1074 np = vlook(exprstring(np)); in exprreduce()
1075 return (np); in exprreduce()
1077 cp = makeindex(np, aname, tag); in exprreduce()
1079 np = vlook(cp); in exprreduce()
1080 if (!(np->n_flags & FINARRAY)) { in exprreduce()
1081 np->n_alink = tnp->n_alink; in exprreduce()
1082 tnp->n_alink = np; in exprreduce()
1083 np->n_flags |= FINARRAY; in exprreduce()
1086 np = vlookup(cp, 1) == NNULL ? const0 : const1; in exprreduce()
1089 return (np); in exprreduce()
1093 np = exprconcat(np, 0); in exprreduce()
1095 return (np); in exprreduce()
1098 return (intnode(exprtest(np->n_left) == 0 ? (INT)1 : (INT)0)); in exprreduce()
1101 return ((exprtest(np->n_left) != 0 && in exprreduce()
1102 exprtest(np->n_right) != 0) ? const1 : const0); in exprreduce()
1105 return ((exprtest(np->n_left) != 0 || in exprreduce()
1106 exprtest(np->n_right) != 0) ? const1 : const0); in exprreduce()
1118 f1 = (double)exprreal(np->n_left); in exprreduce()
1119 f2 = (double)exprreal(np->n_right); in exprreduce()
1124 if (np->n_right->n_type != COLON) in exprreduce()
1126 if (exprtest(np->n_left)) in exprreduce()
1127 np = np->n_right->n_left; else in exprreduce()
1128 np = np->n_right->n_right; in exprreduce()
1129 return (exprreduce(np)); in exprreduce()
1137 return (comparison(np)); in exprreduce()
1144 return (arithmetic(np)); in exprreduce()
1152 if ((np = np->n_left)->n_type == INDEX) in exprreduce()
1153 np = exprreduce(np); in exprreduce()
1154 if (np->n_flags & FREAL) in exprreduce()
1155 tnp = realnode(np->n_real); in exprreduce()
1157 tnp = intnode(exprint(np)); in exprreduce()
1158 inc_oper->n_left = np; in exprreduce()
1159 (void) assign(np, inc_oper); in exprreduce()
1168 if ((np = np->n_left)->n_type == INDEX) in exprreduce()
1169 np = exprreduce(np); in exprreduce()
1170 inc_oper->n_left = np; in exprreduce()
1171 return (assign(np, inc_oper)); in exprreduce()
1191 asn_oper->n_right = np->n_right; in exprreduce()
1192 if ((np = np->n_left)->n_type == INDEX) in exprreduce()
1193 np = exprreduce(np); in exprreduce()
1194 asn_oper->n_left = np; in exprreduce()
1195 return (assign(np, asn_oper)); in exprreduce()
1199 return (f_getline(np)); in exprreduce()
1202 return ((*np->n_left->n_function)(np->n_right)); in exprreduce()
1205 if (regmatch(np->n_regexp, linebuf) == REG_OK) in exprreduce()
1210 cp = exprstring(np->n_left); in exprreduce()
1211 if (regmatch(getregexp(np->n_right), cp) == REG_OK) in exprreduce()
1216 cp = exprstring(np->n_left); in exprreduce()
1217 if (regmatch(getregexp(np->n_right), cp) != REG_OK) in exprreduce()
1222 return (assign(np->n_left, np->n_right)); in exprreduce()
1225 awkerr(badarray, np->n_name); in exprreduce()
1229 awkerr(varnotfunc, np->n_name); in exprreduce()
1243 arithmetic(NODE *np) in arithmetic() argument
1251 left = exprreduce(np->n_left); in arithmetic()
1256 r2 = exprreal(np->n_right); in arithmetic()
1259 right = exprreduce(np->n_right); in arithmetic()
1272 switch (np->n_type) { in arithmetic()
1340 comparison(NODE *np) in comparison() argument
1348 left = np->n_left; in comparison()
1355 right = np->n_right; in comparison()
1428 switch (np->n_type) { in comparison()
1460 type_of(NODE *np) in type_of() argument
1469 cp = (wchar_t *)np->n_string; in type_of()
1588 lfield(INT fieldno, NODE *np) in lfield() argument
1598 newlen = wcslen(newval = (wchar_t *)exprstring(np)); in lfield()
1663 return (np); in lfield()
1674 userfunc(NODE *np) in userfunc() argument
1679 if ((fnp = np->n_left) == NNULL) in userfunc()
1701 actlist = np->n_right; in userfunc()
1797 np = retval; else in userfunc()
1798 np = const0; in userfunc()
1816 return (np); in userfunc()
1823 getregexp(NODE *np) in getregexp() argument
1825 if (np->n_type == RE) in getregexp()
1826 return (np->n_regexp); in getregexp()
1827 np = renode((wchar_t *)exprstring(np)); in getregexp()
1828 return (np->n_regexp); in getregexp()
1837 register NODE *np; in getlist() local
1839 if ((np = *npp) == NNULL) in getlist()
1840 return (np); in getlist()
1841 if (np->n_type == COMMA) { in getlist()
1842 *npp = np->n_right; in getlist()
1843 return (np->n_left); in getlist()
1846 return (np); in getlist()
1854 s_if(NODE *np) in s_if() argument
1859 test = exprtest(np->n_left); in s_if()
1860 xp = np->n_right; in s_if()
1874 s_while(NODE *np) in s_while() argument
1878 if (np->n_type == DO) in s_while()
1881 if (exprtest(np->n_left) == 0) in s_while()
1884 if ((act = action(np->n_right)) != 0) { in s_while()
1904 s_for(NODE *np) in s_for() argument
1910 listp = np->n_left; in s_for()
1919 if ((act = action(np->n_right)) != 0) { in s_for()
1942 s_forin(NODE *np) in s_forin() argument
1954 left = np->n_left; in s_forin()
1955 statement = np->n_right; in s_forin()
1960 np = left->n_right; in s_forin()
1961 if (np->n_type == PARM) { in s_forin()
1962 np = np->n_next; in s_forin()
1963 if (!(np->n_flags & FLARRAY)) in s_forin()
1964 np = np->n_alink; in s_forin()
1966 if (np == varSYMTAB) { in s_forin()
1968 np = NNULL; in s_forin()
1977 if (np->n_type != ARRAY) { in s_forin()
1978 if (!isstring(np->n_flags) || np->n_string != _null) in s_forin()
1979 awkerr(notarray, np->n_name); in s_forin()
1982 promote(np); in s_forin()
1983 if (np->n_alink != NNULL) in s_forin()
1984 if (!(np->n_flags & FLARRAY)) in s_forin()
1985 np = np->n_alink; in s_forin()
1997 if ((*(nnp = next_forin) = np->n_alink) == 0) in s_forin()
2017 if ((left = symwalk(&nbuck, &np)) == NNULL) in s_forin()
2021 if ((np = *nnp) == NNULL) in s_forin()
2023 index = np->n_name+alen; in s_forin()
2024 *nnp = np->n_alink; in s_forin()
2050 register NODE *np; in symwalk() local
2052 np = *npp; in symwalk()
2054 while (np == NNULL) { in symwalk()
2057 np = symtab[(*buckp)++]; in symwalk()
2059 if (np->n_type == VAR && in symwalk()
2060 (!isstring(np->n_flags) || np->n_string != _null)) { in symwalk()
2061 *npp = np->n_next; in symwalk()
2062 return (np); in symwalk()
2064 np = np->n_next; in symwalk()
2073 exprtest(NODE *np) in exprtest() argument
2077 if (np == NNULL) in exprtest()
2081 np = exprreduce(np); in exprtest()
2082 if (isint(t = np->n_flags)) { in exprtest()
2084 return (exprint(np) != 0); in exprtest()
2085 return (np->n_int != 0); in exprtest()
2090 rval = isstring(t) ? exprreal(np) : np->n_real; in exprtest()
2093 return (*(wchar_t *)exprstring(np) != '\0'); in exprtest()
2102 makeindex(NODE *np, wchar_t *array, int tag) in makeindex() argument
2124 if (np->n_type != COMMA) { in makeindex()
2128 if (isleaf(np->n_flags) && np->n_type == PARM) in makeindex()
2129 np = np->n_next; in makeindex()
2130 if (isstring(np->n_flags)) { in makeindex()
2131 indstr = np->n_string; in makeindex()
2132 len = np->n_strlen; in makeindex()
2134 indstr = exprstring(np); in makeindex()
2156 while ((index = getlist(&np)) != NNULL) { in makeindex()