Lines Matching +full:sub +full:- +full:node

24  * awk -- YACC grammar
47 static NODE * fliplist ANSI((NODE *np));
51 NODE *node; member
63 %token <node> PARM ARRAY UFUNC FIELD IN INDEX CONCAT
64 %token <node> NOT AND OR EXP QUEST
65 %token <node> EQ NE GE LE GT LT
66 %token <node> ADD SUB MUL DIV REM INC DEC PRE_INC PRE_DEC
67 %token <node> GETLINE CALLFUNC RE TILDE NRE
73 %token <node> PRINT PRINTF
74 %token <node> EXIT RETURN BREAK CONTINUE NEXT
75 %token <node> DELETE WHILE DO FOR FORIN IF
81 %token <node> CONSTANT VAR FUNC
82 %token <node> DEFFUNC BEGIN END CLOSE ELSE PACT
101 HYPHEN /* '-' */
139 %type <node> prog rule pattern expr rvalue lvalue fexpr varlist varlist2
140 %type <node> statement statlist fileout exprlist eexprlist simplepattern
141 %type <node> getline optvar var
142 %type <node> dummy
159 yytree = node(COMMA, $1, yytree); else
166 $$ = node(PACT, $1, $3);
171 $$ = node(PACT, NNULL, $2);
174 $$ = node(PACT, $1, node(PRINT, NNULL, NNULL));
178 { $2->n_type = UFUNC; funparm = 1; }
182 $2->n_ufunc = node(DEFFUNC, $5, fliplist($9));
186 awkerr((char *) gettext("function \"%S\" redefined"), $2->n_name);
198 $$ = node(COMMA, $1, $3);
204 $$ = node(BEGIN, NNULL, NNULL);
209 $$ = node(END, NNULL, NNULL);
227 $$ = node(COMMA, $1, $3);
241 $$ = node(COMMA, $1, $3);
257 $$ = node(ADD, $1, $3);
260 $$ = node(SUB, $1, $3);
263 $$ = node(MUL, $1, $3);
266 $$ = node(DIV, $1, $3);
269 $$ = node(REM, $1, $3);
272 $$ = node(EXP, $1, $3);
275 $$ = node(AND, $1, $3);
278 $$ = node(OR, $1, $3);
281 $$ = node(QUEST, $1, node(COLON, $3, $5));
284 $$ = node(ASG, $1, $3);
287 $$ = node(AADD, $1, $3);
290 $$ = node(ASUB, $1, $3);
293 $$ = node(AMUL, $1, $3);
296 $$ = node(ADIV, $1, $3);
299 $$ = node(AREM, $1, $3);
302 $$ = node(AEXP, $1, $3);
305 $$ = node(INC, $1, NNULL);
308 $$ = node(DEC, $1, NNULL);
311 $$ = node(EQ, $1, $3);
314 $$ = node(NE, $1, $3);
317 $$ = node(GT, $1, $3);
320 $$ = node(LT, $1, $3);
323 $$ = node(GE, $1, $3);
326 $$ = node(LE, $1, $3);
329 $$ = node(TILDE, $1, $3);
332 $$ = node(NRE, $1, $3);
335 $$ = node(IN, $3, $1);
338 $$ = node(IN, $5, $2);
343 $$ = node(CONCAT, $1, $3);
349 $$ = node(FIELD, $2, NNULL);
356 $$ = node(INDEX, $1, $3);
372 $$ = node(NOT, $2, NNULL);
375 $$ = node(SUB, const0, $2);
381 $$ = node(PRE_DEC, $2, NNULL);
384 $$ = node(PRE_INC, $2, NNULL);
387 $$ = node(CALLFUNC, $1, NNULL);
390 $$ = node(CALLFUNC, $1, $3);
393 $$ = node(CALLUFUNC, $1, $3);
396 $$ = node(CALLUFUNC, $1, $3);
399 $$ = $<node>3;
405 $$ = node(FOR, node(COMMA, $3, node(COMMA, $5, $7)), $9);
408 register NODE *np;
418 && np->n_type == DELETE
419 && (np = np->n_left)->n_type == INDEX
420 && np->n_left == $5
421 && np->n_right == $3)
422 $$ = node(DELETE, $5, NNULL);
424 $$ = node(FORIN, node(IN, $3, $5), $7);
427 $$ = node(WHILE, $3, $5);
430 $$ = node(DO, $5, $2);
433 $$ = node(IF, $3, node(ELSE, $5, $7));
436 $$ = node(IF, $3, node(ELSE, $5, NNULL));
439 $$ = node(CONTINUE, NNULL, NNULL);
442 $$ = node(BREAK, NNULL, NNULL);
445 $$ = node(NEXT, NNULL, NNULL);
448 $$ = node(DELETE, $2, NNULL);
451 $$ = node(RETURN, $2, NNULL);
454 $$ = node(EXIT, $2, NNULL);
457 $$ = node(PRINT, $2, $3);
460 $$ = node(PRINT, $3, $5);
463 $$ = node(PRINTF, $2, $3);
466 $$ = node(PRINTF, $3, $5);
488 $$ = node(COMMA, $1, $2);
494 $$ = node(WRITE, $2, NNULL);
497 $$ = node(APPEND, $2, NNULL);
500 $$ = node(PIPE, $2, NNULL);
509 $$ = node(GETLINE, $2, NNULL);
512 $$ = node(GETLINE, $4, node(PIPESYM, $1, NNULL));
515 $$ = node(GETLINE, $2, node(LT, $4, NNULL));
531 * Flip a left-recursively generated list
535 static NODE *
536 fliplist(NODE *np)
540 if (np!=NNULL && !isleaf(np->n_flags)
542 && (type = np->n_type)!=FUNC && type!=UFUNC
545 np->n_right = fliplist(np->n_right);
546 if ((type=np->n_type)==COMMA) {
547 register NODE *lp;
549 while ((lp = np->n_left)!=NNULL && lp->n_type==COMMA) {
550 register NODE* *spp;
552 lp->n_right = fliplist(lp->n_right);
553 for (spp = &lp->n_right;
554 *spp != NNULL && (*spp)->n_type==COMMA;
555 spp = &(*spp)->n_right)
557 np->n_left = *spp;
562 if (np->n_left != NULL &&
563 (type = np->n_left->n_type)!= FUNC && type!=UFUNC)
564 np->n_left = fliplist(np->n_left);