From: Larry Evans (cppljevans_at_[hidden])
Date: 2004-05-28 10:35:14


On 05/27/2004 08:04 PM, Joel de Guzman wrote:
> Eric Niebler wrote:
[snip]
> and, yes, stored_rule(s) use shared_ptr. So, again, be wary of cycles.
> I was so eager when Lary Evans hinted at a shared_ptr implementatiion
> with GC. I'm still so eager!
I'm having problems with it. I could upload the files to sandbox;
however, I don't think anybody would be eager to debug it.

My reply to a private email from Eric contained:

> Well, after I read the recent mention of this problem, I started
> going back to work on managed_ptr which is Held's policy_ptr with
> cycle collection. Unfortunately, I'm having problems:
> <-----------------
> cd /home/evansl/prog_dev/boost-root.ln/development/libs/managed_ptr/test/
> make run
> /opt/intel_cc_80/bin/icc -c -MMD -g -I/home/evansl/prog_dev/boost-root.ln/development -I/home/evansl/prog_dev/boost-root.ln smart_ptr_test.cpp
>
> ...
> ===>Enter:<refcycle_counted_node_scalar_type>::refcycle_enum_children_test
> +owner::CTOR(void):overhead=0
> ===>Enter:sp_parent=i.as_basis_source()
> make: *** [run] Interrupt
>>-------------------
> I

I'm also working on the deterministic parser. I also described in that
reply to Eric the use of a symbol class:

       class
exp_tree::
     symbol
     //Purpose:
     // Represents "symbols", i.e.
     // inputs and variables.
     : public exp_tree::top
     {
      public:
             typedef
           unsigned
         id_type
         ;

         symbol(id_type a_id)
           : my_id(a_id)
         {}
      ...
      };

to represent occurences of inputs(terminals) and variables
(non-terminals). The my_id serves as an index into a std:vector
of right-hand-sides for the variables and as argument to
bitset<NumInputs>::test in the case of inputs to test whether
the next input from the lexer belongs to the "direction set"
for a variable. Currently I'm trying to solve for the
first and follow sets which are used to determine the
direction set.