C.5. Uma conversão passo a passo

No capítulo onde se discutiu a semântica dinâmica (Capítulo 6), foi introduzido um documento SGML que continha o seguinte DTD.

          <!DOCTYPE RECEITAS [
          <!ELEMENT RECEITAS    (TITULO,RECEITA*)>
          <!ELEMENT TITULO      (#PCDATA)>
          <!ELEMENT RECEITA     (TITULO,INGREDIENTE+)>
          <!ELEMENT INGREDIENTE (#PCDATA)>
          <!ATTLIST RECEITA
                               ORIGEM CDATA #IMPLIED>
          ]>

Agora, apresenta-se a sua conversão numa gramática de atributos, passo a passo, através da aplicação sistemática das regras definidas ao DTD:


Exemplo C-6. Uma conversão: DTD → GA

Para cada declaração do DTD apresentam-se as produções geradas sistematicamente:

Receitas (Titulo,Receita*)

Receitas → ReceitasAttList ReceitasContent

ReceitasAttList → &egr;

ReceitasContent → Grupo1

Grupo1 → Titulo Grupo2_0n

Grupo2_0n → &egr;
          | Grupo2 Grupo2_0n

Grupo2 → Receita

Titulo (#PCDATA)

Titulo → TituloAttList TituloContent

TituloAttList → &egr;
TituloContent → textList

textList → text textList
         | &egr;

text → str

Receita (Titulo,Ingredente+)

Receita → ReceitaAttList ReceitaContent

ReceitaAttList → &egr;

ReceitaContent → Titulo Grupo3_1n

Grupo3_1n → Grupo3
          | Grupo3 Grupo3_1n

Grupo3 → Ingrediente

Ingrediente (#PCDATA)

Ingrediente → IngredienteAttList IngredienteContent

IngredienteAttList → &egr;

IngredienteContent → textList

ATTLIST RECEITA ORIGEM CDATA #IMPLIED

ReceitaAttList → Origem

Origem → str
       | &egr;


Com este exemplo, fica concluído este apêndice sobre a conversão de DTDs em Gramáticas de Atributos.