PN_AST2           131 syn/syntax-p5.y           { $$ = PN_AST2(ASSIGN, PN_AST(EXPR, PN_TUP(PN_AST(MSG, n))),
PN_AST2           132 syn/syntax-p5.y                                  PN_AST(EXPR, PN_TUP(PN_AST2(PROTO, l, b)))) }
PN_AST2           134 syn/syntax-p5.y           { $$ = PN_AST2(ASSIGN, PN_AST(EXPR, PN_TUP(PN_AST(MSG, n))),
PN_AST2           135 syn/syntax-p5.y                                  PN_AST(EXPR, PN_TUP(PN_AST2(PROTO, PN_AST(LIST, PN_NIL), b)))) }
PN_AST2           137 syn/syntax-p5.y         { $$ = PN_AST2(PROTO, l, b) }
PN_AST2           141 syn/syntax-p5.y #        { $$ = PN_AST2(ASSIGN, n, PN_AST2(PROTO, p, b)) }
PN_AST2           146 syn/syntax-p5.y         { p2_eval(P, PN_AST(BLOCK, PN_TUP(PN_AST2(MSG, PN_use, PN_AST(LIST, PN_PUSH(PN_TUP(u), v)))))) }
PN_AST2           150 syn/syntax-p5.y         { p2_eval(P, PN_AST(BLOCK, PN_TUP(PN_AST2(MSG, PN_use, PN_AST(LIST, PN_PUSH(PN_TUP(u), n)))))) }
PN_AST2           152 syn/syntax-p5.y         { p2_eval(P, PN_AST(BLOCK, PN_TUP(PN_AST2(MSG, PN_use, PN_AST(LIST, PN_PUSH(u,PN_PUSH(PN_PUSH(PN_TUP(u),n),l))))))) }
PN_AST2           168 syn/syntax-p5.y         MY t:name l:listvar assign r:list { PN_SRC(l)->a[2] = PN_SRC(t); $$ = PN_AST2(ASSIGN, l, r) }
PN_AST2           169 syn/syntax-p5.y       | MY? l:listvar assign r:list       { $$ = PN_AST2(ASSIGN, l, r) }
PN_AST2           173 syn/syntax-p5.y             s1 = PN_PUSH(s1, PN_AST2(ASSIGN, v, potion_tuple_at(P,0,PN_S(r,0),PN_NUM(i))));
PN_AST2           177 syn/syntax-p5.y             s1 = PN_PUSH(s1, PN_AST2(ASSIGN, v, potion_tuple_at(P,0,PN_S(r,0),PN_NUM(i))));
PN_AST2           179 syn/syntax-p5.y       | l:lexglobal assign e:eqs -  { $$ = PN_AST2(ASSIGN, l, e) }
PN_AST2           184 syn/syntax-p5.y        ( assign s:sets       { e = PN_AST2(ASSIGN, e, s) }
PN_AST2           185 syn/syntax-p5.y        | or assign s:sets    { e = PN_AST2(ASSIGN, e, PN_OP(AST_OR, e, s)) }
PN_AST2           186 syn/syntax-p5.y        | and assign s:sets   { e = PN_AST2(ASSIGN, e, PN_OP(AST_OR, e, s)) }
PN_AST2           187 syn/syntax-p5.y        | pipe assign s:sets  { e = PN_AST2(ASSIGN, e, PN_OP(AST_PIPE, e, s)) }
PN_AST2           188 syn/syntax-p5.y        | caret assign s:sets { e = PN_AST2(ASSIGN, e, PN_OP(AST_CARET, e, s)) }
PN_AST2           189 syn/syntax-p5.y        | amp assign s:sets   { e = PN_AST2(ASSIGN, e, PN_OP(AST_AMP, e, s)) }
PN_AST2           190 syn/syntax-p5.y        | bitl assign s:sets  { e = PN_AST2(ASSIGN, e, PN_OP(AST_BITL, e, s)) }
PN_AST2           191 syn/syntax-p5.y        | bitr assign s:sets  { e = PN_AST2(ASSIGN, e, PN_OP(AST_BITR, e, s)) }
PN_AST2           192 syn/syntax-p5.y        | plus assign s:sets  { e = PN_AST2(ASSIGN, e, PN_OP(AST_PLUS, e, s)) }
PN_AST2           193 syn/syntax-p5.y        | minus assign s:sets { e = PN_AST2(ASSIGN, e, PN_OP(AST_MINUS, e, s)) }
PN_AST2           194 syn/syntax-p5.y        | times assign s:sets { e = PN_AST2(ASSIGN, e, PN_OP(AST_TIMES, e, s)) }
PN_AST2           195 syn/syntax-p5.y        | div assign s:sets   { e = PN_AST2(ASSIGN, e, PN_OP(AST_DIV, e, s)) }
PN_AST2           196 syn/syntax-p5.y        | rem assign s:sets   { e = PN_AST2(ASSIGN, e, PN_OP(AST_REM, e, s)) }
PN_AST2           197 syn/syntax-p5.y        | pow assign s:sets   { e = PN_AST2(ASSIGN, e, PN_OP(AST_POW, e, s)) })?
PN_AST2           306 syn/syntax-p5.y #          | m:msg v:loose { $$ = PN_AST2(LICK, m, v) }
PN_AST2           309 syn/syntax-p5.y hash-item = k:value - (fatcomma|comma) v:atom { $$ = PN_AST2(ASSIGN, k, v) }
PN_AST2           310 syn/syntax-p5.y           | k:unquoted - fatcomma v:atom      { $$ = PN_AST2(ASSIGN, PN_AST(VALUE, k), v) }
PN_AST2           320 syn/syntax-p5.y #sub = SUB n:arg-name - t:list? b:block       { $$ = PN_AST2(ASSIGN, n, PN_AST2(PROTO, t, b)) }
PN_AST2           365 syn/syntax-p5.y         { $$ = PN_AST2(MSG, PN_STRCAT("@", PN_STR_PTR(l)),
PN_AST2           368 syn/syntax-p5.y         { $$ = PN_AST2(MSG, PN_STRCAT("%", PN_STR_PTR(h)),
PN_AST2            74 syn/syntax.y          ( assign s:sets       { e = PN_AST2(ASSIGN, e, s) }
PN_AST2            75 syn/syntax.y          | defassign s:value   { e = PN_AST2(ASSIGN, e, s) }
PN_AST2            76 syn/syntax.y          | or assign s:sets    { e = PN_AST2(ASSIGN, e, PN_OP(AST_OR, e, s)) }
PN_AST2            77 syn/syntax.y          | and assign s:sets   { e = PN_AST2(ASSIGN, e, PN_OP(AST_AND, e, s)) }
PN_AST2            78 syn/syntax.y          | pipe assign s:sets  { e = PN_AST2(ASSIGN, e, PN_OP(AST_PIPE, e, s)) }
PN_AST2            79 syn/syntax.y          | caret assign s:sets { e = PN_AST2(ASSIGN, e, PN_OP(AST_CARET, e, s)) }
PN_AST2            80 syn/syntax.y          | amp assign s:sets   { e = PN_AST2(ASSIGN, e, PN_OP(AST_AMP, e, s)) }
PN_AST2            81 syn/syntax.y          | bitl assign s:sets  { e = PN_AST2(ASSIGN, e, PN_OP(AST_BITL, e, s)) }
PN_AST2            82 syn/syntax.y          | bitr assign s:sets  { e = PN_AST2(ASSIGN, e, PN_OP(AST_BITR, e, s)) }
PN_AST2            83 syn/syntax.y          | plus assign s:sets  { e = PN_AST2(ASSIGN, e, PN_OP(AST_PLUS, e, s)) }
PN_AST2            84 syn/syntax.y          | minus assign s:sets { e = PN_AST2(ASSIGN, e, PN_OP(AST_MINUS, e, s)) }
PN_AST2            85 syn/syntax.y          | times assign s:sets { e = PN_AST2(ASSIGN, e, PN_OP(AST_TIMES, e, s)) }
PN_AST2            86 syn/syntax.y          | div assign s:sets   { e = PN_AST2(ASSIGN, e, PN_OP(AST_DIV, e, s)) }
PN_AST2            87 syn/syntax.y          | rem assign s:sets   { e = PN_AST2(ASSIGN, e, PN_OP(AST_REM, e, s)) }
PN_AST2            88 syn/syntax.y          | pow assign s:sets   { e = PN_AST2(ASSIGN, e, PN_OP(AST_POW, e, s)) })?
PN_AST2           164 syn/syntax.y             | m:msg v:loose { $$ = PN_AST2(LICK, m, v) }
PN_AST2           170 syn/syntax.y   closure = t:list? b:block { $$ = PN_AST2(PROTO, t, b) }