Update of /cvsroot/monetdb/pathfinder/compiler/mil
In directory sc8-pr-cvs16.sourceforge.net:/tmp/cvs-serv22818/compiler/mil

Modified Files:
        milgen.brg milprint.c 
Log Message:
implementation for id/idref...

works only for elements for now, but I wanted to commit before the branching.


U milprint.c
Index: milprint.c
===================================================================
RCS file: /cvsroot/monetdb/pathfinder/compiler/mil/milprint.c,v
retrieving revision 1.77
retrieving revision 1.78
diff -u -d -r1.77 -r1.78
--- milprint.c  21 May 2008 10:10:49 -0000      1.77
+++ milprint.c  23 May 2008 20:46:41 -0000      1.78
@@ -1062,7 +1062,7 @@
             print_expression (n->child[5]);
             milprintf (", ");
             print_expression (n->child[6]);
-            milprintf (", ");
+            milprintf (")");
             break;
 
         /* expression : 'htordered_unique_thetajoin (' exp ',' exp ','

U milgen.brg
Index: milgen.brg
===================================================================
RCS file: /cvsroot/monetdb/pathfinder/compiler/mil/milgen.brg,v
retrieving revision 1.156
retrieving revision 1.157
diff -u -d -r1.156 -r1.157
--- milgen.brg  21 May 2008 10:10:49 -0000      1.156
+++ milgen.brg  23 May 2008 20:46:40 -0000      1.157
@@ -204,6 +204,7 @@
 %term fun_call       = 150
 %term fun_param      = 151
 %term string_join    = 160
+%term findnodes      = 170
 /* fold)  */
 
 /** @cond GRAMMAR */ /* make doxygen ignore the grammar */
@@ -300,6 +301,7 @@
 Param:    nil                                                      = 154 (10);
 
 Rel:      string_join (Rel, Rel)                                   = 160 (10);
+Rel:      findnodes (Rel)                                          = 170 (10);
 /* fold) */
 
 %%
@@ -9152,6 +9154,51 @@
             env_add (p->env, p->sem.ii.item, aat_str, item);
         }   break; /* fold) */
 
+        /* Rel:      findnodes (Rel) */
+        case 170: /* fold( */
+        {
+            mvar_t *nodes     = new_var (1);
+            mvar_t *iter      = new_var (p->refctr);
+            mvar_t *item_res  = new_var (p->refctr);
+            
+            PFmil_t *pre      = VAR (L(p)->env,
+                                     p->sem.findnodes.item_doc, 
+                                     aat_pre),
+                    *pre_cont = VAR (L(p)->env,
+                                     p->sem.findnodes.item_doc,
+                                     aat_frag);
+
+            execute (
+                assgn (var (nodes->name),
+                       ws_findnodes (
+                           var (PF_MIL_VAR_WS),
+                           VAR (L(p)->env, p->sem.findnodes.iter, aat_nat),
+                           pre,
+                           set_kind (pre_cont, var (PF_MIL_VAR_ELEM)),
+                           /*mposjoin (
+                               pre,
+                               pre_cont,
+                               fetch (var (PF_MIL_VAR_WS),*/
+                           pre_cont,
+                           VAR (L(p)->env, p->sem.findnodes.item, aat_str),
+                           p->sem.findnodes.id == la_dj_id ? lit_bit (true) :
+                                                             lit_bit (false)
+                       )));
+
+            execute (
+                assgn (var (iter->name),
+                       hmark ( var (nodes->name), lit_oid(0))),
+                assgn (var (item_res->name),
+                       tmark ( var (nodes->name), lit_oid(0))));
+
+            env_add (p->env, p->sem.findnodes.iter, aat_nat, iter);
+            env_add (p->env, p->sem.findnodes.item_res, aat_pre, item_res);
+            env_add (p->env, p->sem.findnodes.item_res, aat_frag, item_res);
+
+            unpin (nodes, 1);
+
+        }   break; /* fold) */
+
         default:
             PFoops (OOPS_FATAL, "unknown rule %u", rule);
             break;


-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
Monetdb-pf-checkins mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/monetdb-pf-checkins

Reply via email to