El diseño descendente o Top-Down permite dividir un problema en módulos jerárquicos para simplificarlo y programarlo de forma independiente. Los módulos se definen para realizar tareas específicas y pueden llamarse desde el algoritmo principal. Un analizador sintáctico descendente examina los terminales en el orden de la cadena y construye el árbol de derivación desde la raíz hacia la izquierda para obtener el árbol de análisis o detectar errores.