The semantic analysis is by far and away the hardest thing day to day. Parsing is easy
(Although, that said, compiler courses could probably do well to ditch a lot of the LL(1)/LR(1) parsing theory to focus on other topics instead. You still need to teach grammars, and focus a bit on how to actually parse grammars to AST under recursive descent, including expression precedence, but you could probably excise a lot of the parser generator theory.)
It is way more relevant for optimizing parsers performance and for designing languages syntax.
Anyone can "invent" recursive descent with fairly little prodding about how to divide and conquer.