Top-Down Parsing/Exercise 6: Difference between revisions

From Wiki**3

< Top-Down Parsing
No edit summary
(Redirected page to ist:Top-Down Parsing/Exercise 6)
 
(5 intermediate revisions by the same user not shown)
Line 1: Line 1:
{{TOCright}}
#REDIRECT [[ist:Top-Down Parsing/Exercise 6]]
= Problem =
 
Consider the following grammar, where '''<tt>F</tt>''' is the initial symbol and '''<tt>{a,b,c,d,e}</tt>''' is the set of terminal symbols:
 
F -> G b | O c F e
O -> a
G -> F c | O c d | (eps)
 
# Examine the grammar and rewrite it so that an LL(1) predictive parser can be built for the corresponding language.
# Compute the FIRST and FOLLOW sets for all non-terminal symbols in the new grammar and build the parse table.
# Show the analysis table (stack, input, and actions) for the parsing process of the '''<tt>acbe</tt>''' input sequence.
 
== Solution ==
 
=== Semantic tree and dependency graph ===
 
"x" is an inherited attribute (propagation in blue); "val" is a synthesized attribute (propagation in red).
 
Temporary handwritten solution.
 
[[Image:Top-Down Parsing-exercise-6-semantic-tree-1.png]]
 
=== Attribute grammar using only synthesized attributes ===
 
We start by noting that the semantic computed by the previous grammar corresponds to base 5-like numbering (although the digits do not belong to base 5).
 
The new grammar is trivial to write:
 
<text>
 
</text>
 
"val" is a synthesized attribute (propagation in red).
 
Temporary handwritten solution.
 
[[Image:Top-Down Parsing-exercise-6-semantic-tree-2.png]]
 
[[category:Teaching]]
[[category:Compilers]]
 
 
 
[[category:Teaching]]
[[category:Compilers]]

Latest revision as of 22:20, 5 December 2018