Sostituzione

Una regola

rule FIGUREBASE{ /* ... */ }

specifica un elenco di nomi di figure primitive, eventualmente con parametri

startshape FIGUREBASE
rule FIGUREBASE
{
  SQUARE{}
  CIRCLE{x -1}
  TRIANGLE{x +1}
}

trefigure1
oppure un elenco di regole, eventualmente con parametri

startshape FIGUREBASE
rule FIGUREBASE
{
  FIGURA1{}
  FIGURA2{}
  FIGURA3{}
}
rule FIGURA1
{
  SQUARE{}
}
rule FIGURA2
{
  CIRCLE{x -1}
}
rule FIGURA3
{
  TRIANGLE{x +1}
}

oppure sia nomi di figure che regole

startshape FIGUREBASE
rule FIGUREBASE
{
  SQUARE{}
  FIGURA2{}
}
rule FIGURA2
{
  CIRCLE{x -1}
  FIGURA3{}
}
rule FIGURA3
{
  TRIANGLE{x +1}
}

I tre codici precedenti producono la stessa immagine…

ContextFree segue il percorso delle regole, a partire da quella specificata con startshape, e effettuando una sorta di sostituzione di ogni regola con la definizione corrispondente, continua finché ottiene una sequenza di specifiche di figure primitive che costituiscono il risultato finale.

Nel primo caso

FIGUREBASE{} ==> SQUARE{} | CIRCLE{x -1} | TRIANGLE{x +1}

Nel secondo

FIGUREBASE{} ==> FIGURA1{} | FIGURA2{} | FIGURA3{}
             ==> SQUARE{} | CIRCLE{x -1} | TRIANGLE{x +1}

Nel terzo

FIGUREBASE{} ==> SQUARE{} | FIGURA2{}
             ==> SQUARE{} | CIRCLE{x -1} | FIGURA3{}
             ==> SQUARE{} | CIRCLE{x -1} | TRIANGLE{x +1}
Notice: This work is licensed under a BY-NC-SA. Permalink: Sostituzione

Comments are closed.