Podcast
Questions and Answers
Who developed the concept of Context-Free Grammars?
Who developed the concept of Context-Free Grammars?
- John Backus
- Donald Knuth
- Noam Chomsky (correct)
- Alan Turing
What is the primary purpose of Backus-Naur Form (BNF)?
What is the primary purpose of Backus-Naur Form (BNF)?
- To implement the syntax of programming languages
- To describe the semantics of programming languages
- To analyze the runtime of programming languages
- To describe the syntax of programming languages (correct)
What is the left-hand side (LHS) of a production rule in BNF?
What is the left-hand side (LHS) of a production rule in BNF?
- A finite set of terminal symbols
- A string of terminals and/or nonterminals
- A single nonterminal (correct)
- A set of production rules
What is the purpose of nonterminal symbols in BNF?
What is the purpose of nonterminal symbols in BNF?
What is the result of a derivation in BNF?
What is the result of a derivation in BNF?
What symbol is used to chain multiple RHS in a BNF rule?
What symbol is used to chain multiple RHS in a BNF rule?
How are syntactic lists described in BNF?
How are syntactic lists described in BNF?
What is the special nonterminal symbol in a BNF grammar?
What is the special nonterminal symbol in a BNF grammar?
Study Notes
Context-Free Grammars
- Developed by Noam Chomsky, who classified four classes of generative devices or grammars that define four classes of languages
- Context-free grammars are one of the two classes (along with regular grammars) that are useful for describing the syntax of programming languages
Backus-Naur Form (BNF)
- Invented by John Backus to describe the syntax of ALGOL 58
- A natural notation for describing syntax, equivalent to context-free grammars
BNF Fundamentals
- A BNF grammar consists of:
- A start symbol
- A finite set of production rules
- A finite set of terminal symbols
- A finite set of nonterminal symbols
Production Rules
- A production rule has:
- A left-hand side (LHS), which is a single nonterminal
- A right-hand side (RHS), which is a string of terminals and/or nonterminals
Nonterminal Symbols
- Nonterminal symbols are abstractions used to represent classes of syntactic structures
- Also called simply nonterminals
- Nonterminals are often enclosed in angle brackets
Terminal Symbols
- Terminal symbols are lexemes or tokens
Derivation
- A derivation is the repeated application of rules, starting with the start symbol and ending with a sentence (a string of only terminal symbols)
- A sentential form is every string of (nonterminal or terminal) symbols in a derivation
- A sentence is a sentential form that has only terminal symbols
- Leftmost derivation: the leftmost nonterminal in each sentential form is the one that is expanded next
BNF Rules
- An abstraction (or nonterminal symbol) can have more than one RHS, chained using the | symbol
Describing Lists
- Syntactic lists are described using recursion
- Example: a list of identifiers can be described using a recursive rule, where the list can be either an identifier or an identifier followed by a comma and another list
Studying That Suits You
Use AI to generate personalized quizzes and flashcards to suit your learning preferences.
Description
Learn about Noam Chomsky's context-free grammars and John Backus' Backus-Naur Form, including their development and applications in programming languages.