Top-Down Parsing/Exercise 7: Difference between revisions

From Wiki**3

Root (talk | contribs)
No edit summary
Root (talk | contribs)
 
(2 intermediate revisions by the same user not shown)
Line 1: Line 1:
{{TOCright}}
{{TOCright}}
= Problem =
== Problem ==


Consider the following grammar, where '''<tt>A</tt>''' is the initial symbol and '''<tt>{a,b,c,d,e}</tt>''' is the set of terminal symbols:
Consider the following grammar, where '''<tt>A</tt>''' is the initial symbol and '''<tt>{a,b,c,d,e}</tt>''' is the set of terminal symbols:
Line 6: Line 6:
  X -> a
  X -> a
  A -> X c A e | M b
  A -> X c A e | M b
  M -> A c | X c d | (eps)
  M -> A c | X c d | ε


# Examine the grammar and rewrite it so that an LL(1) predictive parser can be built for the corresponding language.
# Examine the grammar and rewrite it so that an LL(1) predictive parser can be built for the corresponding language.
Line 12: Line 12:
# Show the analysis table (stack, input, and actions) for the parsing process of the '''<tt>acbe</tt>''' input sequence.
# Show the analysis table (stack, input, and actions) for the parsing process of the '''<tt>acbe</tt>''' input sequence.


= Solution =
== Solution ==


[[Image:CompilersTopDownParsingExercise7.jpg|700px]]
[[Image:CompilersTopDownParsingExercise7.jpg|700px]]


<headertabs/>
[[category:Compiladores]]
 
[[category:Ensino]]
[[category:Teaching]]
[[category:Compilers]]

Latest revision as of 14:04, 30 April 2024

Problem

Consider the following grammar, where A is the initial symbol and {a,b,c,d,e} is the set of terminal symbols:

X -> a
A -> X c A e | M b
M -> A c | X c d | ε
  1. Examine the grammar and rewrite it so that an LL(1) predictive parser can be built for the corresponding language.
  2. Compute the FIRST and FOLLOW sets for all non-terminal symbols in the new grammar and build the parse table.
  3. Show the analysis table (stack, input, and actions) for the parsing process of the acbe input sequence.

Solution