0% found this document useful (0 votes)
111 views5 pages

Context Free Grammars PDF

This document provides context-free grammar exercises for a computer science class. It includes definitions of terms related to context-free grammars and questions asking students to write context-free grammars for specific languages, identify ambiguous grammars, draw parse trees, and modify grammars to be suitable for recursive descent parsing.

Uploaded by

ervina
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
111 views5 pages

Context Free Grammars PDF

This document provides context-free grammar exercises for a computer science class. It includes definitions of terms related to context-free grammars and questions asking students to write context-free grammars for specific languages, identify ambiguous grammars, draw parse trees, and modify grammars to be suitable for recursive descent parsing.

Uploaded by

ervina
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 5

Context-Free Grammar Exercises

CS 4610 — Spring 2017


This Review Set asks you to prepare written answers to questions on context-free grammars. Each of the questions has
a short answer. You may discuss this Review Set with other students and work on the problems together.

1 Definitions and Background


1. Define the following terms and give examples where appropriate.
(a) Context-Free Grammar:

(b) Non-terminal:

(c) Terminal:

(d) Language of a Context-Free Grammar:

(e) Derivation:

(f) Parse Tree:

(g) Ambiguous Grammar:

(h) Left-Recursive Grammar:

1
2 Context-Free Grammars
1. Let L1 be the language consisting of all non-empty palindromes over the alphabet Σ = {a, b}. That is, L1 consists
of all sequences of a’s and b’s that read the same forward or backward. For example, aba ∈ L1 and and bb ∈ L1
and aabbbaa ∈ L1 , but abb ∈ / L1 .
Let L2 be the language over Σ = {a, b} denoted by the regular expression a(a|b)*.
(a) Write a context-free grammar for L1 .

(b) Draw a parse tree for the string ababa using your grammar from the previous part.

(c) The language L3 = L1 ∩ L2 is context-free. A string s is in L3 if s ∈ L1 and s ∈ L2 . Write a context-free


grammar for the language L3 .
Optional Thing To Think About: Is the intersection of a context-free language and a regular language
always context-free?

2
2. Consider the following grammar:

S → aSb
S → Sb
S → ε

(a) Give a one-sentence description of the language generated by this grammar.

(b) Show that this grammar is ambiguous by giving a single string that can be parsed in two different ways. Draw
both parse trees.

(c) Give an unambiguous grammar that accepts the same language as the grammar above.

3
3. Using the context-free grammar for Cool given in the Cool Reference Manual, draw a parse tree for the following
expression.
while not (x <- z <- 0) loop
y <- z + 2 * x + 1
pool
Note that the context-free grammar by itself is ambiguous, so you will need to refer to the precedence and
associativity rules to get the correct tree.

4
4. Consider the following grammar:

E → E+T
E → T
T → T *F
T → F
F → (E)
F → x
F → y

(a) Why couldn’t a recursive descent parser use this grammar to recognize token sequences?

(b) Rewrite the grammar in such a way that a recursive descent parser could successfully use the resulting grammar.

You might also like