class
     PRODUCT

inherit
     AGGREGATE
           redefine
                 post_action
           end

     POLYNOM

create
     make

feature

     construct_name: STRING is
           once
                 Result := "PRODUCT"
           end
     
feature {NONE}

     Separator: STRING is "*"
     
feature

     production: LINKED_LIST [CONSTRUCT] is
           local
                 base: TERM
           once
                 create Result.make
                 Result.forth
                 create base.make
                 put (base)
           end

     post_action is
           local
                 int_value: INTEGER
           do
                 if not no_components then
                       from
                             child_start
                             if not child_after then
                                   int_value := 1
                             end
                       until
                             child_after
                       loop
                             child.post_action
                             int_value := int_value * info.child_value
                             child_forth
                       end
                       info.set_child_value (int_value)
                 end
           end
     
end -- class PRODUCT