I'm studying for my Computing languages test and there's one idea I'm having problems wrapping my head around. I understand that Regular Grammars are simpler and cannot contain ambiguity but can't do a lot of tasks that are required for programming languages. I also understand that Context Free Grammars allow ambiguity, but allow for some things necessary for programming languages (like palindromes).
What I'm having trouble with is understanding how I can derive all of the above by knowing that Regular Grammar nonterminals can map to a terminal or a nonterminal followed by a terminal or that a Context Free nonterminal maps to any combination of terminals and nonterminals. Can someone help me put all of this together?