codea: this passt jetzt auch
authorBernhard Urban <lewurm@gmail.com>
Mon, 3 May 2010 11:23:18 +0000 (13:23 +0200)
committerBernhard Urban <lewurm@gmail.com>
Mon, 3 May 2010 11:23:18 +0000 (13:23 +0200)
codea/code.bfe
codea/parser.y

index c2a0d6d9a71cb4dff4e30f32ce4947e5feb9e481..be6122119d85e535c428273d2e62bf526b7ebbd8 100644 (file)
@@ -17,7 +17,7 @@
 begin: ret # 0 # printf("// end\n");
 ret: O_RET(expr) # 1 # move(bnode->reg, "rax"); ret();
 
-expr: O_ID # 1 # if(bnode->param_index!=0) move(param_reg(bnode->param_index), bnode->reg);
+expr: O_ID # 1 # if(bnode->param_index > -1) move(param_reg(bnode->param_index), bnode->reg);
 
 %%
 
index f981df9e5f501f63083a676b53471583529268ac..c6158c2d70e465a6c2a61c96ca5663241c418821 100644 (file)
@@ -92,7 +92,7 @@ Parms:
 FeldID:
          IDENT FeldID
          @{
-           @i @FeldID.0.f@ = tab_add_symbol(@FeldID.1.f@, @IDENT.name@, S_FIELD, 1, 0);
+           @i @FeldID.0.f@ = tab_add_symbol(@FeldID.1.f@, @IDENT.name@, S_FIELD, 1, -1);
          @}
 
        |
@@ -125,7 +125,7 @@ Statement:
          @{
                /* tab_clone ist hier noetig, vgl. folgendes statement
                 * > var x := x - 1; */
-               @i @Statement.sout@ = tab_add_symbol(tab_clone(@Statement.sin@), @IDENT.name@, S_VAR, 1, 0);
+               @i @Statement.sout@ = tab_add_symbol(tab_clone(@Statement.sin@), @IDENT.name@, S_VAR, 1, -1);
                xxputsin(@Expr.s@,)
            @i @Statement.node@ = TREENULL;
          @}
@@ -289,7 +289,7 @@ Term:
 
        | THIS
          @{
-           @i @Term.node@ = TREENULL;
+           @i @Term.node@ = new_node(O_ID, TREENULL, TREENULL); @Term.node@->param_index = 0;
            @reg fprintf(stderr, "wtf4\n");
          @}