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

Modified Files:
      Tag: PF_ROX
        coreprint.c logdebug.c physdebug.c 
Removed Files:
      Tag: PF_ROX
        mildebug.c 
Log Message:
propagated changes of Friday 15 Feb 2008 - Monday Feb 18 2008
from the development trunk to the PF_ROX branch


--- mildebug.c DELETED ---

Index: logdebug.c
===================================================================
RCS file: /cvsroot/monetdb/pathfinder/compiler/debug/logdebug.c,v
retrieving revision 1.89.2.1
retrieving revision 1.89.2.2
diff -u -d -r1.89.2.1 -r1.89.2.2
--- logdebug.c  9 Feb 2008 08:40:29 -0000       1.89.2.1
+++ logdebug.c  18 Feb 2008 16:57:26 -0000      1.89.2.2
@@ -44,7 +44,6 @@
 #include "mem.h"
 #include "prettyp.h"
 #include "oops.h"
-#include "subtyping.h" /* step printing */
 #include "pfstrings.h"
 
 /** Node names to print out for all the Algebra tree nodes. */
@@ -307,6 +306,55 @@
 }
 
 static char *
+xml_literal_list (PFalg_simple_type_t ty)
+{
+    bool first = true;
+    PFarray_t *s = PFarray (sizeof (char));
+
+    if (ty & aat_update)
+        PFarray_printf (s, "update");
+    else if (ty & aat_docmgmt)
+        PFarray_printf (s, "docmgmt");
+    else
+        for (PFalg_simple_type_t t = 1; t; t <<= 1) {
+            if (t & ty) {
+                /* hide fragment information */
+                switch (t) {
+                    case aat_pre:
+                    case aat_frag:
+                    case aat_qname_loc:
+                        continue;
+                    default:
+                        break;
+                }
+                
+                /* start printing spaces only after the first type */
+                if (!first)
+                    PFarray_printf (s, " ");
+                else
+                    first = false;
+                
+                /* print the different types */
+                switch (t) {
+                    case aat_nat:      PFarray_printf (s, "nat");   break;
+                    case aat_int:      PFarray_printf (s, "int");   break;
+                    case aat_str:      PFarray_printf (s, "str");   break;
+                    case aat_dec:      PFarray_printf (s, "dec");   break;
+                    case aat_dbl:      PFarray_printf (s, "dbl");   break;
+                    case aat_bln:      PFarray_printf (s, "bool");  break;
+                    case aat_uA:       PFarray_printf (s, "uA");    break;
+                    case aat_qname_id: PFarray_printf (s, "qname"); break;
+                    case aat_attr:     PFarray_printf (s, "attr");  break;
+                    case aat_nkind:    PFarray_printf (s, "pnode"); break;
+                    default:                                        break;
+                }
+            }
+        }
+
+    return (char *) s->base;
+}
+
+static char *
 comp_str (PFalg_comp_t comp) {
     switch (comp) {
         case alg_comp_eq: return "eq";
@@ -714,52 +762,21 @@
             PFarray_printf (dot, "\", fontcolor=\"#FFFFFF\", label=\"");
         case la_step:
         case la_step_join:
-            PFarray_printf (dot, "%s ", a_id[n->kind]);
+            PFarray_printf (dot, "%s %s::%s",
+                            a_id[n->kind],
+                            PFalg_axis_str (n->sem.step.spec.axis),
+                            PFalg_node_kind_str (n->sem.step.spec.kind));
+
+            if (n->sem.step.spec.kind == node_kind_elem ||
+                n->sem.step.spec.kind == node_kind_attr)
+                PFarray_printf (dot, "(%s)",
+                                PFqname_str (n->sem.step.spec.qname));
+            else if (n->sem.step.spec.kind == node_kind_pi &&
+                     PFqname_loc (n->sem.step.spec.qname))
+                PFarray_printf (dot, "(%s)", PFqname_loc 
(n->sem.step.spec.qname));
+            else
+                PFarray_printf (dot, "()");
                 
-            /* print out XPath axis */
-            switch (n->sem.step.axis)
-            {
-                case alg_anc:
-                    PFarray_printf (dot, "ancestor::");
-                    break;
-                case alg_anc_s:
-                    PFarray_printf (dot, "anc-or-self::");
-                    break;
-                case alg_attr:
-                    PFarray_printf (dot, "attribute::");
-                    break;
-                case alg_chld:
-                    PFarray_printf (dot, "child::");
-                    break;
-                case alg_desc:
-                    PFarray_printf (dot, "descendant::");
-                    break;
-                case alg_desc_s:
-                    PFarray_printf (dot, "desc-or-self::");
-                    break;
-                case alg_fol:
-                    PFarray_printf (dot, "following::");
-                    break;
-                case alg_fol_s:
-                    PFarray_printf (dot, "fol-sibling::");
-                    break;
-                case alg_par:
-                    PFarray_printf (dot, "parent::");
-                    break;
-                case alg_prec:
-                    PFarray_printf (dot, "preceding::");
-                    break;
-                case alg_prec_s:
-                    PFarray_printf (dot, "prec-sibling::");
-                    break;
-                case alg_self:
-                    PFarray_printf (dot, "self::");
-                    break;
-                default: PFoops (OOPS_FATAL,
-                        "unknown XPath axis in dot output");
-            }
-            PFarray_printf (dot, "%s ", PFty_str (n->sem.step.ty));
-            
             /* print guide info */
             if (n->kind == la_guide_step ||
                 n->kind == la_guide_step_join) {
@@ -1325,52 +1342,10 @@
      *   </schema>
      */
     PFarray_printf (xml, "    <schema>\n");
-    for (unsigned int i = 0; i < n->schema.count; i++) {
-        bool first = true;
-
-        PFarray_printf (xml, "      <col name=\"%s\" types=\"",
-                        PFatt_str (n->schema.items[i].name));
-        
-        if (n->schema.items[i].type & aat_update)
-            PFarray_printf (xml, "update");
-        else if (n->schema.items[i].type & aat_docmgmt)
-            PFarray_printf (xml, "docmgmt");
-        else
-            for (PFalg_simple_type_t t = 1; t; t <<= 1) {
-                if (t & n->schema.items[i].type) {
-                    /* hide fragment information */
-                    switch (t) {
-                        case aat_afrag:
-                        case aat_pfrag:
-                            continue;
-                        default:
-                            break;
-                    }
-                    
-                    /* start printing spaces only after the first type */
-                    if (!first)
-                        PFarray_printf (xml, " ");
-                    else
-                        first = false;
-                    
-                    /* print the different types */
-                    switch (t) {
-                        case aat_nat:    PFarray_printf (xml, "nat");   break;
-                        case aat_int:    PFarray_printf (xml, "int");   break;
-                        case aat_str:    PFarray_printf (xml, "str");   break;
-                        case aat_dec:    PFarray_printf (xml, "dec");   break;
-                        case aat_dbl:    PFarray_printf (xml, "dbl");   break;
-                        case aat_bln:    PFarray_printf (xml, "bln");   break;
-                        case aat_qname:  PFarray_printf (xml, "qname"); break;
-                        case aat_uA:     PFarray_printf (xml, "uA");    break;
-                        case aat_attr:   PFarray_printf (xml, "attr");  break;
-                        case aat_pre:    PFarray_printf (xml, "node");  break;
-                        default:                                        break;
-                    }
-                }
-            }
-        PFarray_printf (xml, "\"/>\n");
-    }
+    for (unsigned int i = 0; i < n->schema.count; i++)
+        PFarray_printf (xml, "      <col name=\"%s\" types=\"%s\"/>\n",
+                        PFatt_str (n->schema.items[i].name),
+                        xml_literal_list (n->schema.items[i].type));
     PFarray_printf (xml, "    </schema>\n");
 
     if (PFstate.format) {
@@ -1536,53 +1511,12 @@
             PFarray_printf (xml, "    <content>\n"); 
 
             /* list the attributes of this table */
-            for (unsigned int i = 0; i < n->schema.count; i++) {
-                bool first = true;
-
-                PFarray_printf (xml, "      <column name=\"%s\" type=\"",
-                                PFatt_str (n->schema.items[i].name));
-
-                if (n->schema.items[i].type & aat_update)
-                    PFarray_printf (xml, "update");
-                else
-                    for (PFalg_simple_type_t t = 1; t; t <<= 1) {
-                        if (t & n->schema.items[i].type) {
-                            /* hide fragment information */
-                            switch (t) {
-                                case aat_afrag:
-                                case aat_pfrag:
-                                    continue;
-                                default:
-                                    break;
-                            }
-
-                            /* start printing spaces only after the first type 
*/
-                            if (!first)
-                                PFarray_printf (xml, " ");
-                            else
-                                first = false;
-
-                            /* print the different types */
-                            switch (t) {
-                                case aat_nat:    PFarray_printf (xml, "nat");  
 break;
-                                case aat_int:    PFarray_printf (xml, "int");  
 break;
-                                case aat_str:    PFarray_printf (xml, "str");  
 break;
-                                case aat_dec:    PFarray_printf (xml, "dec");  
 break;
-                                case aat_dbl:    PFarray_printf (xml, "dbl");  
 break;
-                                case aat_bln:    PFarray_printf (xml, "bln");  
 break;
-                                case aat_qname:  PFarray_printf (xml, 
"qname"); break;
-                                case aat_uA:     PFarray_printf (xml, "uA");   
 break;
-                                case aat_attr:   PFarray_printf (xml, "attr"); 
 break;
-                                case aat_pre:    PFarray_printf (xml, "node"); 
 break;
-                                default:                                       
 break;
-                            }
-                        }
-                    }
-                PFarray_printf (xml, "\" new=\"true\"/>\n");
-            }
-
-             
-
+            for (unsigned int i = 0; i < n->schema.count; i++)
+                PFarray_printf (xml,
+                                "      <column name=\"%s\" type=\"%s\""
+                                             " new=\"true\"/>\n",
+                                PFatt_str (n->schema.items[i].name),
+                                xml_literal_list (n->schema.items[i].type));
 
             PFarray_printf (xml, "    </content>\n");
             break;
@@ -1912,188 +1846,24 @@
         case la_guide_step:
         case la_guide_step_join:
         {
-            PFty_t ty     = n->sem.step.ty;
-            char  *kind   = NULL,
+            char  *axis   = PFalg_axis_str (n->sem.step.spec.axis),
+                  *kind   = PFalg_node_kind_str (n->sem.step.spec.kind),
                   *prefix = NULL,
                   *uri    = NULL,
                   *local  = NULL;
             
-            PFarray_printf (xml, "    <content>\n      <step axis=\"");
-                
-            /* print out XPath axis */
-            switch (n->sem.step.axis)
-            {
-                case alg_anc:
-                    PFarray_printf (xml, "ancestor");
-                    break;
-                case alg_anc_s:
-                    PFarray_printf (xml, "ancestor-or-self");
-                    break;
-                case alg_attr:
-                    PFarray_printf (xml, "attribute");
-                    break;
-                case alg_chld:
-                    PFarray_printf (xml, "child");
-                    break;
-                case alg_desc:
-                    PFarray_printf (xml, "descendant");
-                    break;
-                case alg_desc_s:
-                    PFarray_printf (xml, "descendant-or-self");
-                    break;
-                case alg_fol:
-                    PFarray_printf (xml, "following");
-                    break;
-                case alg_fol_s:
-                    PFarray_printf (xml, "following-sibling");
-                    break;
-                case alg_par:
-                    PFarray_printf (xml, "parent");
-                    break;
-                case alg_prec:
-                    PFarray_printf (xml, "preceding");
-                    break;
-                case alg_prec_s:
-                    PFarray_printf (xml, "preceding-sibling");
-                    break;
-                case alg_self:
-                    PFarray_printf (xml, "self");
-                    break;
-                default: PFoops (OOPS_FATAL,
-                        "unknown XPath axis in dot output");
-            }
-
-            if (PFty_subtype (ty, PFty_xs_anyAttribute ())) {
-                
-                /* This is a test for attribute nodes */
-                kind = "attribute";
-
-                /* Is it just a generic attribute kind test?
-                   (e.g. .../attribute()) */
-                if (PFty_subtype (PFty_xs_anyAttribute (), ty))
-                    ;
-                /* Is it a test on attribute kind and local name only? */
-                else if (PFty_subtype (
-                            PFty_attr (
-                                PFqname (PFns_wild,
-                                         PFqname_loc (
-                                             PFty_name (PFty_defn (ty)))),
-                                PFty_xs_anySimpleType ()),
-                            ty))
-                    local = PFqname_loc (PFty_name (PFty_defn (ty)));
-                /* Or maybe a test on attribute kind and namespace only? */
-                else if (PFty_subtype (
-                            PFty_attr (
-                                PFqname (
-                                    PFqname_ns (PFty_name (PFty_defn (ty))),
-                                    NULL),
-                                PFty_xs_anySimpleType ()),
-                            ty)) {
-                    prefix = PFqname_prefix (PFty_name (PFty_defn (ty)));
-                    uri    = PFqname_uri (PFty_name (PFty_defn (ty)));
-                }
-                /* A test on attribute kind and full QName? */
-                else if (PFty_subtype (
-                            PFty_attr (PFty_name (PFty_defn (ty)),
-                                       PFty_xs_anySimpleType ()),
-                            ty)) {
-                    prefix = PFqname_prefix (PFty_name (PFty_defn (ty)));
-                    uri    = PFqname_uri (PFty_name (PFty_defn (ty)));
-                    local = PFqname_loc (PFty_name (PFty_defn (ty)));
-                }
-                /*
-                 * If we couldn't figure out what attribute test we got,
-                 * give up.
-                 *
-                 * NOTE: The surface language actually allows such tests. We
-                 *       just cannot implement them (yet):
-                 *
-                 *        doc("foo")/attribute::attribute(shoeSize, xs:integer)
-                 */
-                else
-                    PFoops (OOPS_FATAL,
-                            "Problem with an XPath step: cannot evaluate "
-                            "node test `%s'", PFty_str (ty));
-            }
-            else if (PFty_subtype (ty, PFty_xs_anyElement ())) {
-
-                /* This is a test for element nodes */
-                kind = "element";
-
-                /* Is it just a generic element kind test?
-                   (e.g. .../element()) */
-                if (PFty_subtype (PFty_xs_anyElement (), ty))
-                    ;
-                /* Is it a test on element kind and local name only? */
-                else if (PFty_subtype (
-                            PFty_elem (
-                                PFqname (PFns_wild,
-                                         PFqname_loc (
-                                             PFty_name (PFty_defn (ty)))),
-                                PFty_xs_anyType ()),
-                            ty))
-                    local = PFqname_loc (PFty_name (PFty_defn (ty)));
-                /* Or maybe a test on element kind and namespace only? */
-                else if (PFty_subtype (
-                            PFty_elem (
-                                PFqname (
-                                    PFqname_ns (PFty_name (PFty_defn (ty))),
-                                                NULL),
-                                       PFty_xs_anyType ()),
-                            ty)) {
-                    prefix = PFqname_prefix (PFty_name (PFty_defn (ty)));
-                    uri    = PFqname_uri (PFty_name (PFty_defn (ty)));
-                }
-                /* A test on element kind and full QName? */
-                else if (PFty_subtype (
-                            PFty_elem (PFty_name (PFty_defn (ty)),
-                                       PFty_xs_anyType ()),
-                            ty)) {
-                    prefix = PFqname_prefix (PFty_name (PFty_defn (ty)));
-                    uri    = PFqname_uri (PFty_name (PFty_defn (ty)));
-                    local = PFqname_loc (PFty_name (PFty_defn (ty)));
-                }
-                /*
-                 * If we couldn't figure out what element test we got, give up.
-                 *
-                 * NOTE: The surface language actually allows such tests. We
-                 *       just cannot implement them (yet):
-                 *
-                 *        doc("foo")/child::element(shoeSize, xs:integer)
-                 */
-                else
-                    PFoops (OOPS_FATAL,
-                            "Problem with an XPath step: cannot evaluate "
-                            "node test `%s'", PFty_str (ty));
-            }
-            else if (PFty_subtype (ty, PFty_text ())) {
-                /* This is a test for text nodes */
-                kind = "textnode";
-            }
-            else if (PFty_subtype (ty, PFty_comm ())) {
-                /* This is a test for comment nodes */
-                kind = "comment";
-            }
-            else if (PFty_subtype (ty, PFty_pi (NULL))) {
-                /* This is a test for processing-instruction nodes */
-                kind = "processing-instruction";
-
-                /* lookup target if any */
-                if (!PFty_subtype (PFty_pi (NULL), ty))
-                    local = PFqname_loc (PFty_name (PFty_defn (ty)));
-            }
-            else if (PFty_subtype (PFty_xs_anyNode (), ty)) {
-                /* If all these cases did not apply,
-                   it is probably a node() test. */
-                kind = "node";
-            }
-            /* If we still couldn't find out, we probably need to give up. */
-            else
-                PFoops (OOPS_FATAL,
-                        "Problem with an XPath step: cannot evaluate "
-                        "node test `%s'", PFty_str (ty));
-
-            PFarray_printf (xml, "\" kind=\"%s\"", kind);
+            if (n->sem.step.spec.kind == node_kind_elem ||
+                n->sem.step.spec.kind == node_kind_attr) {
+                prefix = PFqname_prefix (n->sem.step.spec.qname);
+                uri    = PFqname_uri (n->sem.step.spec.qname);
+                local  = PFqname_loc (n->sem.step.spec.qname);
+            } else if (n->sem.step.spec.kind == node_kind_pi)
+                local  = PFqname_loc (n->sem.step.spec.qname);
+            
+            PFarray_printf (xml,
+                            "    <content>\n"
+                            "      <step axis=\"%s\" kind=\"%s\"",
+                            axis, kind);
             if (prefix) {
                 PFarray_printf (xml, " prefix=\"%s\"", prefix);
                 PFarray_printf (xml, " uri=\"%s\"", uri);

Index: physdebug.c
===================================================================
RCS file: /cvsroot/monetdb/pathfinder/compiler/debug/physdebug.c,v
retrieving revision 1.50.2.1
retrieving revision 1.50.2.2
diff -u -d -r1.50.2.1 -r1.50.2.2
--- physdebug.c 9 Feb 2008 08:40:29 -0000       1.50.2.1
+++ physdebug.c 18 Feb 2008 16:57:26 -0000      1.50.2.2
@@ -75,37 +75,24 @@
     , [pa_refine_sort]     = "refine_sort"
     , [pa_fun_1to1]        = "1:1 fun"
     , [pa_eq]              = "="
-    , [pa_eq_atom]         = "= (atom)"
     , [pa_gt]              = ">"
-    , [pa_gt_atom]         = "> (atom)"
     , [pa_bool_and]        = "AND"
     , [pa_bool_or]         = "OR"
     , [pa_bool_not]        = "NOT"
-    , [pa_bool_and_atom]   = "AND (atom)"
-    , [pa_bool_or_atom]    = "OR (atom)"
     , [pa_to]              = "op:to"
     , [pa_avg]             = "AVG"
     , [pa_min]             = "MAX"
     , [pa_max]             = "MIN"
     , [pa_sum]             = "SUM"
-    , [pa_hash_count]      = "HASH_COUNT"
+    , [pa_count_ext]       = "{COUNT}"
+    , [pa_count]           = "COUNT"
     , [pa_mark]            = "mark"
     , [pa_rank]            = "rank"
     , [pa_mark_grp]        = "mark_grp"
     , [pa_type]            = "TYPE"
     , [pa_type_assert]     = "type assertion"
     , [pa_cast]            = "CAST"
-    , [pa_llscj_anc]       = "//| ancestor"
-    , [pa_llscj_anc_self]  = "//| anc-self"
-    , [pa_llscj_attr]      = "//| attr"
-    , [pa_llscj_child]     = "//| child"
-    , [pa_llscj_desc]      = "//| descendant"
-    , [pa_llscj_desc_self] = "//| desc-self"
-    , [pa_llscj_foll]      = "//| following"
-    , [pa_llscj_foll_sibl] = "//| foll-sibl"
-    , [pa_llscj_parent]    = "//| parent"
-    , [pa_llscj_prec]      = "//| preceding"
-    , [pa_llscj_prec_sibl] = "//| prec-sibl"
+    , [pa_llscjoin]        = "//| "
     , [pa_doc_tbl]         = "DOC"
     , [pa_doc_access]      = "access"
     , [pa_twig]            = "TWIG"             /* lawn \"#00FF00\" */
@@ -117,12 +104,8 @@
     , [pa_comment]         = "COMMENT"          /* lawn \"#00FF00\" */
     , [pa_processi]        = "PI"               /* lawn \"#00FF00\" */
     , [pa_content]         = "CONTENT"          /* lawn \"#00FF00\" */
+    , [pa_slim_content]    = "content"          /* lawn \"#00FF00\" */
     , [pa_merge_adjacent]  = "#pf:merge-adjacent-text-nodes"
-    , [pa_roots]           = "ROOTS"
-    , [pa_fragment]        = "FRAGs"
-    , [pa_frag_extract]    = "FRAG EXTRACT"
-    , [pa_frag_union]      = "FRAG_UNION"
-    , [pa_empty_frag]      = "EMPTY_FRAG"
     , [pa_error]           = "!ERROR"
     , [pa_cond_err]        = "!ERROR"
     , [pa_nil]             = "nil"
@@ -136,7 +119,6 @@
     , [pa_rec_border]      = "rec border"
     , [pa_fun_call]        = "fun call"
     , [pa_fun_param]       = "fun param"
-    , [pa_fun_frag_param]  = "fun frag param"
     , [pa_string_join]     = "fn:string-join"
 };
 
@@ -234,37 +216,24 @@
         , [pa_refine_sort]     = "red"
         , [pa_fun_1to1]        = "\"#C0C0C0\""
         , [pa_eq]              = "\"#00DDDD\""
-        , [pa_eq_atom]         = "\"#00DDDD\""
         , [pa_gt]              = "\"#00DDDD\""
-        , [pa_gt_atom]         = "\"#00DDDD\""
         , [pa_bool_not]        = "\"#C0C0C0\""
         , [pa_bool_and]        = "\"#C0C0C0\""
         , [pa_bool_or]         = "\"#C0C0C0\""
-        , [pa_bool_and_atom]   = "\"#C0C0C0\""
-        , [pa_bool_or_atom]    = "\"#C0C0C0\""
         , [pa_to]              = "\"#C0C0C0\""
         , [pa_avg]             = "\"#A0A0A0\""
         , [pa_max]             = "\"#A0A0A0\""
         , [pa_min]             = "\"#A0A0A0\""
         , [pa_sum]             = "\"#A0A0A0\""
-        , [pa_hash_count]      = "\"#A0A0A0\""
+        , [pa_count_ext]       = "\"#A0A0A0\""
+        , [pa_count]           = "\"#A0A0A0\""
         , [pa_mark]            = "\"#FFBBBB\""
         , [pa_rank]            = "\"#FFBBBB\""
         , [pa_mark_grp]        = "\"#FFBBBB\""
         , [pa_type]            = "\"#C0C0C0\""
         , [pa_type_assert]     = "\"#C0C0C0\""
         , [pa_cast]            = "\"#C0C0C0\""
-        , [pa_llscj_anc]       = "\"#1E90FF\""
-        , [pa_llscj_anc_self]  = "\"#1E90FF\""
-        , [pa_llscj_attr]      = "\"#1E90FF\""
-        , [pa_llscj_child]     = "\"#1E90FF\""
-        , [pa_llscj_desc]      = "\"#1E90FF\""
-        , [pa_llscj_desc_self] = "\"#1E90FF\""
-        , [pa_llscj_foll]      = "\"#1E90FF\""
-        , [pa_llscj_foll_sibl] = "\"#1E90FF\""
-        , [pa_llscj_parent]    = "\"#1E90FF\""
-        , [pa_llscj_prec]      = "\"#1E90FF\""
-        , [pa_llscj_prec_sibl] = "\"#1E90FF\""
+        , [pa_llscjoin]        = "\"#1E90FF\""
         , [pa_doc_tbl]         = "\"#C0C0C0\""
         , [pa_doc_access]      = "\"#CCCCFF\""
         , [pa_twig]            = "\"#00FC59\""
@@ -277,11 +246,6 @@
         , [pa_processi]        = "\"#00FC59\""
         , [pa_content]         = "\"#00FC59\""
         , [pa_merge_adjacent]  = "\"#00D000\""
-        , [pa_roots]           = "\"#E0E0E0\""
-        , [pa_fragment]        = "\"#E0E0E0\""
-        , [pa_frag_extract]    = "\"#DD22DD\""
-        , [pa_frag_union]      = "\"#E0E0E0\""
-        , [pa_empty_frag]      = "\"#E0E0E0\""
         , [pa_error]           = "\"#C0C0C0\""
         , [pa_cond_err]        = "\"#C0C0C0\""
         , [pa_nil]             = "\"#FFFFFF\""
@@ -295,7 +259,6 @@
         , [pa_rec_border]      = "\"#BB00BB\""
         , [pa_fun_call]        = "\"#BB00BB\""
         , [pa_fun_param]       = "\"#BB00BB\""
-        , [pa_fun_frag_param]  = "\"#BB00BB\""
         , [pa_string_join]     = "\"#C0C0C0\""
     };
 
@@ -462,23 +425,14 @@
                             PFatt_str (n->sem.binary.att2));
             break;
 
-        case pa_eq_atom:
-        case pa_gt_atom:
-        case pa_bool_and_atom:
-        case pa_bool_or_atom:
-            PFarray_printf (dot, "%s (%s:<%s, %s>)", a_id[n->kind],
-                            PFatt_str (n->sem.bin_atom.res),
-                            PFatt_str (n->sem.bin_atom.att1),
-                            literal (n->sem.bin_atom.att2));
-            break;
-
         case pa_bool_not:
             PFarray_printf (dot, "%s (%s:<%s>)", a_id[n->kind],
                             PFatt_str (n->sem.unary.res),
                             PFatt_str (n->sem.unary.att));
             break;
 
-        case pa_hash_count:
+        case pa_count_ext:
+        case pa_count:
             if (n->sem.count.part == att_NULL)
                 PFarray_printf (dot, "%s (%s)", a_id[n->kind],
                                 PFatt_str (n->sem.count.res));
@@ -486,6 +440,9 @@
                 PFarray_printf (dot, "%s (%s:/%s)", a_id[n->kind],
                                 PFatt_str (n->sem.count.res),
                                 PFatt_str (n->sem.count.part));
+            if (n->sem.count.loop != att_NULL)
+                PFarray_printf (dot, " (%s)",
+                                PFatt_str (n->sem.count.loop));
             break;
 
         case pa_avg:
@@ -541,19 +498,22 @@
                             PFalg_simple_type_str (n->sem.cast.ty));
             break;
 
-        case pa_llscj_anc:
-        case pa_llscj_anc_self:
-        case pa_llscj_attr:
-        case pa_llscj_child:
-        case pa_llscj_desc:
-        case pa_llscj_desc_self:
-        case pa_llscj_foll:
-        case pa_llscj_foll_sibl:
-        case pa_llscj_parent:
-        case pa_llscj_prec:
-        case pa_llscj_prec_sibl:
-            PFarray_printf (dot, "%s", a_id[n->kind]);
-            PFarray_printf (dot, "::%s", PFty_str (n->sem.scjoin.ty));
+        case pa_llscjoin:
+            PFarray_printf (dot, "%s %s::%s",
+                            a_id[n->kind],
+                            PFalg_axis_str (n->sem.scjoin.spec.axis),
+                            PFalg_node_kind_str (n->sem.scjoin.spec.kind));
+
+            if (n->sem.scjoin.spec.kind == node_kind_elem ||
+                n->sem.scjoin.spec.kind == node_kind_attr)
+                PFarray_printf (dot, "(%s)",
+                                PFqname_str (n->sem.scjoin.spec.qname));
+            else if (n->sem.scjoin.spec.kind == node_kind_pi &&
+                     PFqname_loc (n->sem.scjoin.spec.qname))
+                PFarray_printf (dot, "(%s)",
+                                PFqname_loc (n->sem.scjoin.spec.qname));
+            else
+                PFarray_printf (dot, "()");
             break;
 
         case pa_doc_access:
@@ -587,6 +547,7 @@
         case pa_textnode:
         case pa_comment:
         case pa_content:
+        case pa_slim_content:
         case pa_trace:
         case pa_trace_msg:
             PFarray_printf (dot, "%s (%s, %s)",
@@ -650,12 +611,6 @@
             PFarray_printf (dot, ")");
             break;
             
-        case pa_frag_extract:
-        case pa_fun_frag_param:
-            PFarray_printf (dot, "%s (referencing column %i)",
-                            a_id[n->kind], n->sem.col_ref.pos);
-            break;
-            
         case pa_serialize:
         case pa_cross:
         case pa_append_union:
@@ -664,10 +619,6 @@
         case pa_doc_tbl:
         case pa_fcns:
         case pa_merge_adjacent:
-        case pa_roots:
-        case pa_fragment:
-        case pa_frag_union:
-        case pa_empty_frag:
         case pa_nil:
         case pa_rec_fix:
         case pa_rec_param:

Index: coreprint.c
===================================================================
RCS file: /cvsroot/monetdb/pathfinder/compiler/debug/coreprint.c,v
retrieving revision 1.42
retrieving revision 1.42.4.1
diff -u -d -r1.42 -r1.42.4.1
--- coreprint.c 11 Jan 2008 10:47:01 -0000      1.42
+++ coreprint.c 18 Feb 2008 16:57:26 -0000      1.42.4.1
@@ -50,13 +50,8 @@
 #include "prettyp.h"
 #include <assert.h>
 
-/*
- * Easily access subtree parts.
- */
-/** starting from p, make a left step */
-#define L(p)      ((p)->child[0])
-/** starting from p, make a right step */
-#define R(p)      ((p)->child[1])
+/* Easily access subtree-parts */
+#include "child_mnemonic.h"
 
 /** Node names to print out for all the abstract syntax tree nodes. */
 char *c_id[]  = {


-------------------------------------------------------------------------
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