register t_node *nd;
{
indnt(lvl);
- print("Class: %d; Symbol: %s\n", nd->nd_class, symbol2str(nd->nd_symb));
+ print("Class: %d; Symbol: %s; Flags: %d\n", nd->nd_class, symbol2str(nd->nd_symb), nd->nd_flags);
if (nd->nd_type) {
indnt(lvl);
print("Type: ");
assert(nd->nd_class == Stat);
+ if (nd->nd_symb == ';') return;
+
DoLineno(nd);
options['R'] = (nd->nd_flags & ROPTION);
options['A'] = (nd->nd_flags & AOPTION);
}
break;
- case ';':
- break;
-
case BECOMES:
DoAssign(left, right);
break;
nd->nd_def->df_flags |= D_FORLOOP;
def_ilb(l1);
if (! options['R']) {
+ label x = ++text_label;
+
ForLoopVarExpr(nd);
C_stl(tmp2);
- }
- WalkNode(right, exit_label);
- nd->nd_def->df_flags &= ~D_FORLOOP;
- if (! options['R']) {
- label x = ++text_label;
+ WalkNode(right, exit_label);
C_lol(tmp2);
ForLoopVarExpr(nd);
C_beq(x);
C_trp();
def_ilb(x);
}
+ else WalkNode(right, exit_label);
+ nd->nd_def->df_flags &= ~D_FORLOOP;
FreeInt(tmp2);
if (stepsize) {
C_lol(tmp);