We finish the Chomsky hierarchy by looking at context-sensitive languages (which include C, JavaScript, and many other programming languages) and unrestricted grammars, which are Turing-complete. We also connect the undecidable problems to the Chomsky hierarchy by thinking of them as a fifth level. Surprisingly, there's at least one programming language whose grammar is technically undecidable.
Execute Program
Looking for something more interactive? Try Execute Program, an interactive learning platform from Destroy All Software LLC! It has courses on TypeScript, SQL, regular expressions, JavaScript concurrency, and more. All Destroy All Software subscriptions include full access to Execute Program, or you can subscribe to Execute Program directly.