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
- A grammar has variables, terminals and production rules.
- The rule S to aSb adds an a and a b around S.
- The rule S to empty ends the recursion.
- Applying them gives aabb.
- 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
- Open the interactive lesson, with a mini quiz.
- Take the Theory & Discrete Math quiz.
How to study this topic
- Read the explanation above and restate the definition in your own words.
- Open the interactive lesson and answer its mini quiz.
- Read the common pitfall, then write a short example that avoids it.
- 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?
Where do people use Context-Free Grammars?
What is the most common mistake with Context-Free Grammars?
What should I learn before this topic?
How can I practice it?
Is Context-Free Grammars hard to learn?
How long does it take to learn Context-Free Grammars?
Which topics are related to Context-Free Grammars?
What should I study after Context-Free Grammars?
Related topics
- Pumping Lemma for Regular Languages (Theory & Discrete Math)
- Parse Trees (Theory & Discrete Math)
- Regular Expressions in Theory (Theory & Discrete Math)
- Pushdown Automata (Theory & Discrete Math)
- Context Switching (Operating Systems)
- Lock-Free Data Structures (Concurrency & Parallelism)
- Wait-Free Algorithms (Concurrency & Parallelism)