+
+ /* TODO: selbe Code wie bei Term/IDENT -- schoener machen! */
+ @i {
+ @Lexpr.node@ = TREENULL;
+ if(tab_lookup(@Lexpr.s@, @IDENT.name@, S_VAR|S_PARM) == SYMNULL) {
+ /* es handelt sich um ein feldzugriff auf this */
+ @Lexpr.node@ = new_field(@IDENT.name@, new_param(O_ID, strdup("this"), TREENULL, TREENULL, 0), TREENULL, tab_lookup(@Lexpr.s@, @IDENT.name@, S_FIELD) == SYMNULL ? -1 : tab_lookup(@Lexpr.s@, @IDENT.name@, S_FIELD)->soffset);
+ } else { /* param oder var */
+ int tmp = tab_lookup(@Lexpr.s@, @IDENT.name@, S_VAR|S_PARM) == SYMNULL ? -1 : tab_lookup(@Lexpr.s@, @IDENT.name@, S_VAR|S_PARM)->param_index;
+ @Lexpr.node@ = new_param(O_ID, @IDENT.name@, TREENULL, TREENULL, tmp);
+ }
+ }
+
+ @reg if(tab_lookup(@Lexpr.s@, @IDENT.name@, S_VAR|S_PARM) == SYMNULL) {
+ /* TODO: kein schoener hack? */
+ @Lexpr.node@->kids[0]->reg = @Lexpr.node@->reg;
+ }