Dual pushdown automata and context sensitive grammars