Bottom-Up Parsing/Exercise 12: LALR(1): Difference between revisions
From Wiki**3
| (4 intermediate revisions by the same user not shown) | |||
| Line 1: | Line 1: | ||
== Problema == | == Problema == | ||
Consider the following grammar, where A is the initial symbol and { x, y, z } is the set of terminal symbols: | Consider the following grammar, where A is the initial symbol and '''{ x, y, z }''' is the set of terminal symbols: | ||
<text> | <source lang="text"> | ||
A | A → B x y | x y x | x B y | ||
B | B → z | ε | ||
</ | </source> | ||
# Compute the set of LALR(1) states for the grammar. Build the corresponding LALR(1) parse table. | # Compute the set of LALR(1) states for the grammar. Build the corresponding LALR(1) parse table. | ||
# Compact the parse table, eliminating and propagating reductions. | # Compact the parse table, eliminating and propagating reductions. | ||
| Line 12: | Line 12: | ||
== Solução == | == Solução == | ||
{{CollapsedCode|Solução | {{CollapsedCode|Solução (sem compactação) para SLR(1)| | ||
[[Image:Bxy.jpg|768px]] | [[Image:Bxy.jpg|768px]] | ||
}} | |||
{{CollapsedCode|Solução completa para LALR(1)| | |||
[[Image:BxyLALR1.jpg|768px]] | |||
}} | }} | ||
[[category:Compiladores]] | [[category:Compiladores]] | ||
[[category:Ensino]] | [[category:Ensino]] | ||
Latest revision as of 09:48, 2 May 2024
Problema
Consider the following grammar, where A is the initial symbol and { x, y, z } is the set of terminal symbols:
A → B x y | x y x | x B y
B → z | ε
- Compute the set of LALR(1) states for the grammar. Build the corresponding LALR(1) parse table.
- Compact the parse table, eliminating and propagating reductions.
- Show the parsing process for input xzy (including the actions/gotos and the input and stack states). In case of conflict, assume YACC's behavior.
Solução
| Solução (sem compactação) para SLR(1) |
|---|
| Solução completa para LALR(1) |
|---|