Bottom-Up Parsing/Exercise 14: LALR(1): Difference between revisions

From Wiki**3

Root (talk | contribs)
Root (talk | contribs)
 
(One intermediate revision by the same user not shown)
Line 3: Line 3:
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:  
<source lang="text">
<source lang="text">
A -> M z x | z M x | z x z
A M z x | z M x | z x z
M -> y | (eps)
M y | ε
</source>
</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.
Line 18: Line 18:
{{CollapsedCode|Solução completa|
{{CollapsedCode|Solução completa|
[[Image:Mzx1.jpg|768px]]
[[Image:Mzx1.jpg|768px]]
[[Image:Mzx2.jpg|768px]]
}}
}}


[[category:Compiladores]]
[[category:Compiladores]]
[[category: Ensino]]
[[category: Ensino]]

Latest revision as of 13:35, 11 May 2026

Problema

Consider the following grammar, where A is the initial symbol and { x, y, z } is the set of terminal symbols:

A → M z x | z M x | z x z
M → y | ε
  1. Compute the set of LALR(1) states for the grammar. Build the corresponding LALR(1) parse table.
  2. Compact the parse table, eliminating and propagating reductions.
  3. Show the parsing process for input zyx (including the actions/gotos and the input and stack states). In case of conflict, assume YACC's behavior.

Solução

Na imagem, os conflitos indicados para a regra 2 são para a regra 5.

Note-se que a solução apresentada é para SLR(1) e LALR(1) (a vermelho).

Solução completa