LearnViz CompSci
Home / Learn / Theory & Discrete Math / Context-Free Grammars

Intermediate Topic 24 of 51 Theory & Discrete Math

Context-Free Grammars

Rules generating strings via recursive productions.

How it works

A context-free grammar defines a language with production rules that replace a single nonterminal with a string of terminals and nonterminals, starting from a start symbol, for example S -> a S b | epsilon. Derivations show how a string is generated, and parse trees show its structure. Context-free languages include nested and recursive structures such as balanced parentheses, arithmetic expressions and most programming language syntax, and are recognized by pushdown automata.

Step-by-step walkthrough

  1. A grammar has variables, terminals and production rules.
  2. The rule S to aSb adds an a and a b around S.
  3. The rule S to empty ends the recursion.
  4. Applying them gives aabb.
  5. This grammar generates a^n b^n, which no finite automaton can.

Where it is used

Compilers and interpreters specify syntax in BNF and parse it with LL, LR and Earley or GLR parsers. Natural language processing and structured data formats like JSON and XML also use grammars.

Common pitfall

Ambiguous grammars give more than one parse tree for a string, causing different meanings, such as the dangling else problem; rewriting or precedence rules resolve it. Left recursion breaks top-down parsers. Context-free grammars cannot express context-dependent rules such as declaring variables before use. Use normal forms such as Chomsky normal form for algorithms.

Where it fits in the course

Context-Free Grammars is topic 24 of 51 in Theory & Discrete Math, rated Intermediate. It follows Pumping Lemma for Regular Languages. The next topic is Parse Trees.

Practice and explore

How to study this topic

  1. Read the explanation above and restate the definition in your own words.
  2. Open the interactive lesson and answer its mini quiz.
  3. Read the common pitfall, then write a short example that avoids it.
  4. Check your understanding in the Theory & Discrete Math quiz, and revisit the topic if you miss a question.

Frequently asked questions

What is Context-Free Grammars?
Rules generating strings via recursive productions. It belongs to Theory & Discrete Math and is an intermediate-level topic.
Where do people use Context-Free Grammars?
Compilers and interpreters specify syntax in BNF and parse it with LL, LR and Earley or GLR parsers.
What is the most common mistake with Context-Free Grammars?
Ambiguous grammars give more than one parse tree for a string, causing different meanings, such as the dangling else problem; rewriting or precedence rules resolve it.
What should I learn before this topic?
Start with Pumping Lemma for Regular Languages, the topic just before it in Theory & Discrete Math.
How can I practice it?
Answer the mini quiz in the interactive lesson, then take the Theory & Discrete Math quiz.
Is Context-Free Grammars hard to learn?
It is an Intermediate topic. Be comfortable with the Beginner topics in this area first, then read the common pitfall carefully, since it is where most mistakes happen.
How long does it take to learn Context-Free Grammars?
Most learners can read the explanation and finish the interactive lesson in under an hour. Fluency comes from applying the idea, so plan a few short practice sessions with the quiz.
Which topics are related to Context-Free Grammars?
Pumping Lemma for Regular Languages, Parse Trees, Regular Expressions in Theory are closely connected. The full list is in the related topics section of this page.
What should I study after Context-Free Grammars?
Continue with Parse Trees, the next topic in Theory & Discrete Math.

Related topics