TRANSFORMANDO
UNA BNF A GRAFO
SINTACTICO
Transformación de una BNF a un grafo
sintáctico.
REGLA 1: Las producciones de la forma
N  α1
| α2
| …
| αn
Se representan con el siguiente grafo
α1
α2
α3
Transformación de una BNF a un grafo
sintáctico.
REGLA 2: Los términos de la forma
α  a1
| a2
| …
| an
Se representan con el siguiente grafo
a1
a2
an
Transformación de una BNF a un grafo
sintáctico.
REGLA 3: Si un elemento tiene uno o cero ocurrencias,
o sea [α ]
Se representa con el siguiente grafo
α
Transformación de una BNF a un grafo
sintáctico.
REGLA 4: Si un elemento se repite arbitrariamente ( 0
veces inclusive) , o sea {α}
Se representa con el siguiente grafo
α
Transformación de una BNF a un grafo
sintáctico.
REGLA 5: Los símbolos no terminales N se
representaran dentro de un rectángulo.
N
REGLA 6: Los símbolos terminales t se representaran
dentro de un circulo o un ovalo.
t t
Ejemplo
Sea G = ( T , N , P , S ) que acepta
expresiones aritméticas como:
X + Y – X * Y
 
T = { X , Y , + , - , * , / , ( , ) }
 
N = { EXPR , TERM , FACTOR }
 
P = { EXPR  TERM 
                          | EXPR + TERM 
                          | EXPR – TERM
         TERM  FACTOR 
                          | TERM * FACTOR 
                          | TERM / FACTOR
         FACTOR  X | Y | ( EXPR )
 
S = {EXPR} 
TERM
EXPR
EXPR
TERM
TERM
+
-
EXPR
FACTOR
TERM
TERM
FACTOR*
/
TERM
FACTOR
EXPR( )
X
Y
  
FACTOR
Diagrama de Conway
Ejemplo
<entero>  <digito> | <entero> <digito>
<identificador>  <letra> | <identificador> <digito> | <identificador> <letra>
<param_prog>  ( <lista_id> )
<lista_id>   <identificador> | <lista_id> , <identificador>
DIGITO
 
     ENTERO
LETRA
LETRA
DIGITO
IDENTIFICADOR
LISTA_ID( )
PARAM_PROG
IDENTIFICADOR
,
 
LISTA_ID

S01 _2_transformaciones