The main difference lies in the order in which the parser attempts to match the input with the production rules of the grammar. Top-down parsing starts from the root of the parse tree and attempts to match the input with the production rules from the top-down. Bottom-up parsing, on the other hand, starts with the input and works up the parse tree.