Context-free languages and pushdown automata