1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
|
if(!s) fatal("Allocation failed\n");
s->id=tokenv|0x8000;
s->addr=ptr-1;
s->next=labelstack;
labelstack=s;
}
break;
case OP_IF: case OP_OR: case OP_AND: case OP_FORK:
AddInst(tokenv);
FlowPush(OP_IF);
peep=++ptr;
break;
case OP_THEN:
FlowPop(OP_IF);
cl->codes[flowptr[flowdepth]]=peep=ptr;
|
|
|
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
|
if(!s) fatal("Allocation failed\n");
s->id=tokenv|0x8000;
s->addr=ptr-1;
s->next=labelstack;
labelstack=s;
}
break;
case OP_IF: case OP_IF_C: case OP_OR: case OP_AND: case OP_FORK:
AddInst(tokenv);
FlowPush(OP_IF);
peep=++ptr;
break;
case OP_THEN:
FlowPop(OP_IF);
cl->codes[flowptr[flowdepth]]=peep=ptr;
|
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
|
FlowPop(OP_BEGIN);
AddInst2(OP_GOTO,flowptr[flowdepth]);
break;
case OP_UNTIL:
FlowPop(OP_BEGIN);
AddInst2(OP_IF,flowptr[flowdepth]);
break;
case OP_WHILE:
AddInst(OP_IF);
FlowPush(OP_WHILE);
peep=++ptr;
break;
case OP_REPEAT:
FlowPop(OP_WHILE);
x=flowptr[flowdepth];
FlowPop(OP_BEGIN);
AddInst2(OP_GOTO,flowptr[flowdepth]);
cl->codes[x]=ptr;
|
>
>
>
>
>
>
>
>
>
|
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679
1680
1681
1682
1683
1684
1685
|
FlowPop(OP_BEGIN);
AddInst2(OP_GOTO,flowptr[flowdepth]);
break;
case OP_UNTIL:
FlowPop(OP_BEGIN);
AddInst2(OP_IF,flowptr[flowdepth]);
break;
case OP_UNTIL_C:
FlowPop(OP_BEGIN);
AddInst2(OP_IF_C,flowptr[flowdepth]);
break;
case OP_WHILE:
AddInst(OP_IF);
FlowPush(OP_WHILE);
peep=++ptr;
break;
case OP_WHILE_C:
AddInst(OP_IF_C);
FlowPush(OP_WHILE);
peep=++ptr;
break;
case OP_REPEAT:
FlowPop(OP_WHILE);
x=flowptr[flowdepth];
FlowPop(OP_BEGIN);
AddInst2(OP_GOTO,flowptr[flowdepth]);
cl->codes[x]=ptr;
|