/* An ordinary block */
block : '{' remember lineseq '}'
- { if (PL_copline > (line_t)IVAL($1))
- PL_copline = (line_t)IVAL($1);
+ { if (PL_parser->copline > (line_t)IVAL($1))
+ PL_parser->copline = (line_t)IVAL($1);
$$ = block_end($2, $3);
TOKEN_GETMAD($1,$$,'{');
TOKEN_GETMAD($4,$$,'}');
progstart:
{
- PL_expect = XSTATE; $$ = block_start(TRUE);
+ PL_parser->expect = XSTATE; $$ = block_start(TRUE);
}
;
mblock : '{' mremember lineseq '}'
- { if (PL_copline > (line_t)IVAL($1))
- PL_copline = (line_t)IVAL($1);
+ { if (PL_parser->copline > (line_t)IVAL($1))
+ PL_parser->copline = (line_t)IVAL($1);
$$ = block_end($2, $3);
TOKEN_GETMAD($1,$$,'{');
TOKEN_GETMAD($4,$$,'}');
$$ = IF_MAD(
newOP(OP_NULL, 0),
Nullop);
- PL_copline = NOLINE;
+ PL_parser->copline = NOLINE;
TOKEN_FREE($1);
TOKEN_GETMAD($2,$$,';');
}
- PL_expect = XSTATE;
+ PL_parser->expect = XSTATE;
}
| label sideff ';'
{
$$ = newSTATEOP(0, PVAL($1), $2);
- PL_expect = XSTATE;
+ PL_parser->expect = XSTATE;
DO_MAD(
/* sideff might already have a nexstate */
OP* op = ((LISTOP*)$$)->op_first;
TOKEN_GETMAD($1,$$,'o');
}
| ELSIF '(' mexpr ')' mblock else
- { PL_copline = (line_t)IVAL($1);
+ { PL_parser->copline = (line_t)IVAL($1);
$$ = newCONDOP(0, $3, scope($5), $6);
PL_hints |= HINT_BLOCK_SCOPE;
TOKEN_GETMAD($1,$$,'I');
/* Real conditional expressions */
cond : IF '(' remember mexpr ')' mblock else
- { PL_copline = (line_t)IVAL($1);
+ { PL_parser->copline = (line_t)IVAL($1);
$$ = block_end($3,
newCONDOP(0, $4, scope($6), $7));
TOKEN_GETMAD($1,$$,'I');
TOKEN_GETMAD($5,$$,')');
}
| UNLESS '(' remember miexpr ')' mblock else
- { PL_copline = (line_t)IVAL($1);
+ { PL_parser->copline = (line_t)IVAL($1);
$$ = block_end($3,
newCONDOP(0, $4, scope($6), $7));
TOKEN_GETMAD($1,$$,'I');
/* Loops: while, until, for, and a bare block */
loop : label WHILE '(' remember texpr ')' mintro mblock cont
{ OP *innerop;
- PL_copline = (line_t)$2;
+ PL_parser->copline = (line_t)$2;
$$ = block_end($4,
newSTATEOP(0, PVAL($1),
innerop = newWHILEOP(0, 1, (LOOP*)Nullop,
| label UNTIL '(' remember iexpr ')' mintro mblock cont
{ OP *innerop;
- PL_copline = (line_t)$2;
+ PL_parser->copline = (line_t)$2;
$$ = block_end($4,
newSTATEOP(0, PVAL($1),
innerop = newWHILEOP(0, 1, (LOOP*)Nullop,
mblock
/* basically fake up an initialize-while lineseq */
{ OP *forop;
- PL_copline = (line_t)IVAL($2);
+ PL_parser->copline = (line_t)IVAL($2);
forop = newSTATEOP(0, PVAL($1),
newWHILEOP(0, 1, (LOOP*)Nullop,
IVAL($2), scalar($7),
/* Switch blocks */
switch : label GIVEN '(' remember mydefsv mexpr ')' mblock
- { PL_copline = (line_t) $2;
+ { PL_parser->copline = (line_t) $2;
$$ = block_end($4,
newSTATEOP(0, PVAL($1),
newGIVENOP($6, scope($8),
newOP(OP_NULL,0),
Nullop
);
- PL_expect = XSTATE;
+ PL_parser->expect = XSTATE;
TOKEN_GETMAD($1,$$,';');
}
;
/* In this and all the hash accessors, ';' is
* provided by the tokeniser */
{ $$ = newBINOP(OP_GELEM, 0, $1, scalar($3));
- PL_expect = XOPERATOR;
+ PL_parser->expect = XOPERATOR;
TOKEN_GETMAD($2,$$,'{');
TOKEN_GETMAD($4,$$,';');
TOKEN_GETMAD($5,$$,'}');
}
| scalar '{' expr ';' '}' /* $foo->{bar();} */
{ $$ = newBINOP(OP_HELEM, 0, oopsHV($1), jmaybe($3));
- PL_expect = XOPERATOR;
+ PL_parser->expect = XOPERATOR;
TOKEN_GETMAD($2,$$,'{');
TOKEN_GETMAD($4,$$,';');
TOKEN_GETMAD($5,$$,'}');
{ $$ = newBINOP(OP_HELEM, 0,
ref(newHVREF($1),OP_RV2HV),
jmaybe($4));
- PL_expect = XOPERATOR;
+ PL_parser->expect = XOPERATOR;
TOKEN_GETMAD($2,$$,'a');
TOKEN_GETMAD($3,$$,'{');
TOKEN_GETMAD($5,$$,';');
{ $$ = newBINOP(OP_HELEM, 0,
ref(newHVREF($1),OP_RV2HV),
jmaybe($3));
- PL_expect = XOPERATOR;
+ PL_parser->expect = XOPERATOR;
TOKEN_GETMAD($2,$$,'{');
TOKEN_GETMAD($4,$$,';');
TOKEN_GETMAD($5,$$,'}');
newLISTOP(OP_HSLICE, 0,
list($3),
ref(oopsHV($1), OP_HSLICE)));
- PL_expect = XOPERATOR;
+ PL_parser->expect = XOPERATOR;
TOKEN_GETMAD($2,$$,'{');
TOKEN_GETMAD($4,$$,';');
TOKEN_GETMAD($5,$$,'}');