multiple assign can handle x::xs pattern
the inner function, parser(), can handle non-call object, just a symbol.
modify parser() in do.maker() so that a NULL object can be passed