Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Anlisis Sintctico
y Notacin BNF
(Forma Normal de Backs)
(En construccin)
Notas Materia LENGUAJES DE PROGRAMACION
Mara de Guadalupe Cota Ortiz
Terminales
Regla o Produccin
<expr>
<expr>
<expr>
<expr>
<op>
<op>
<num>
<dig>
::=
::=
::=
::=
::=
::=
::=
::=
<expr>
<expr>
<expr>
<expr>
<op>
<op>
<num>
<dig>
::=
::=
::=
::=
::=
::=
::=
::=
<expr>
<expr>
<expr>
<expr>
<op>
<op>
<num>
<dig>
::=
::=
::=
::=
::=
::=
::=
::=
<expr>
<expr>
<expr>
<expr>
<op>
<op>
<num>
<dig>
::=
::=
::=
::=
::=
::=
::=
::=
Recordatorio
(Recorridos)
FIN
1
2
3
6
4
7
5
Recorrido:
1,2,3,4,5,6,7,8,9
Recordatorio
(Recorridos)
FIN
1
2
3
6
4
7
5
Recorrido:
1,6,7,9,8,2,4,5,3
Arbol de Parseo
Derivacin por la izquierda
<num>
<dig>
<op>
<expr>
<expr>
<expr> <op>
<num>
)
<expr>
<num>
<dig>
<dig>
Arbol de Parseo
Derivacin por la derecha
<op>
<num>
<dig>
1
<expr>
<expr>
<expr> <op>
<num>
)
<expr>
<num>
<dig>
<dig>
<expr>
<expr> <op> <expr>
<num> <op> <expr>
<dig> <op> <expr>
1 <op> <expr>
1 * <expr>
1 * ( <expr> )
1 * ( <expr> <op> <expr> )
1 * ( <num> <op> <expr> )
1 * ( <dig> <op> <expr> )
1 * ( 3 <op> <expr> )
1 * ( 3 + <expr> )
1 * ( 3 + <num> )
1 * ( 3 + <dig> )
1 * ( 3 + <5> )
<expr>
<expr> <op> <expr>
<expr> <op> ( <expr> )
<expr> <op> ( <expr> <op> <expr> )
<expr> <op> ( <expr> <op> <num> )
<expr> <op> ( <expr> <op> <dig> )
<expr> <op> ( <expr> + <dig> )
<expr> <op> ( <num> + <dig> )
<expr> <op> ( <dig> + <dig> )
<expr> * ( <dig> + <dig> )
<num> * ( <dig> + <dig> )
<dig> * ( <dig> + <dig> )
Ambigedad
<expr>
<expr> <op>
num
<expr>
num
<expr>
<expr>
<op>
12 + (5 * 8) = 52
<expr>
<expr>
num
<expr>
num
<op>
<op>
<expr>
<expr>
*
num
num
(12 + 5) * 8 = 136
for
<tipo> <variable> =
<valor> ;
<condicion> ; <expr_inddec>
Ejemplo
<for>::= ([, {<tipo> <variable> = <valor>}];[,{ <condicion>}]; [,{<expr_incdec>})
<tipo>::= int | char | float | double | long | short | void
for
<tipo> <variable> =
<valor> ;
<condicion> ; <expr_inddec>
int
Ejemplo
<for>::= ([, {<tipo> <variable> = <valor>}];[,{ <condicion>}]; [,{<expr_incdec>})
<tipo>::= int | char | float | double | long | short | void
<variable>::= {<carcter>}+
<caracter>::= a | b |.... | z | A |.... | Z
for
<tipo> <variable> =
<valor> ;
<condicion> ; <expr_inddec>
<carcter>
int
Ejemplo
<for>::= ([, {<tipo> <variable> = <valor>}];[,{ <condicion>}]; [,{<expr_incdec>})
<tipo>::= int | char | float | double | long | short | void
<variable>::= {<carcter>}+
<caracter>::= a | b |.... | z | A |.... | Z
for
<tipo> <variable> =
<valor> ;
<condicion> ; <expr_inddec>
<carcter>
int
ind
Ejemplo
<for>::= ([, {<tipo> <variable> = <valor>}];[,{ <condicion>}]; [,{<expr_incdec>})
<tipo>::= int | char | float | double | long | short | void
<variable>::= {<carcter>}+
<caracter>::= a | b |.... | z | A |.... | Z
<valor>::= {<digito>} +
<digito>::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
for
<tipo> <variable> =
int
<valor> ;
<carcter>
<digito>
ind
<condicion> ; <expr_inddec>
Ejemplo
<for>::= ([, {<tipo> <variable> = <valor>}];[,{ <condicion>}]; [,{<expr_incdec>})
<tipo>::= int | char | float | double | long | short | void
<variable>::= {<carcter>}+
<caracter>::= a | b |.... | z | A |.... | Z
<valor>::= {<digito>} +
<digito>::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
<condicion>::= <variable><operador><valor>
for
<tipo> <variable> =
<carcter>
int
ind
<valor> ;
<condicion> ; <expr_inddec>
Ejemplo
<for>::= ([, {<tipo> <variable> = <valor>}];[,{ <condicion>}]; [,{<expr_incdec>})
<tipo>::= int | char | float | double | long | short | void
<variable>::= {<carcter>}+
<caracter>::= a | b |.... | z | A |.... | Z
<valor>::= {<digito>} +
<digito>::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
<condicion>::= <variable><operador><valor>
for
<tipo> <variable> =
<carcter>
int
ind
<valor> ;
<condicion> ; <expr_inddec>
ind
Ejemplo
<for>::= ([, {<tipo> <variable> = <valor>}];[,{ <condicion>}]; [,{<expr_incdec>})
<tipo>::= int | char | float | double | long | short | void
<variable>::= {<carcter>}+
<caracter>::= a | b |.... | z | A |.... | Z
<valor>::= {<digito>} +
<digito>::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
<condicion>::= <variable><operador><valor>
<operador>::= + | - | / | * | > | >= | < | <= | = | == | !
for
<tipo> <variable> =
<carcter>
int
ind
<valor> ;
<condicion> ; <expr_inddec>
ind
<
Ejemplo
<for>::= ([, {<tipo> <variable> = <valor>}];[,{ <condicion>}]; [,{<expr_incdec>})
<tipo>::= int | char | float | double | long | short | void
<variable>::= {<carcter>}+
<caracter>::= a | b |.... | z | A |.... | Z
<valor>::= {<digito>} +
<digito>::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
<condicion>::= <variable><operador><valor>
<operador>::= + | - | / | * | > | >= | < | <= | = | == | !
for
<tipo> <variable> =
<carcter>
int
ind
<valor> ;
<condicion> ; <expr_inddec>
ind
<
10
Ejemplo
<for>::= ([, {<tipo> <variable> = <valor>}];[,{ <condicion>}]; [,{<expr_incdec>})
<tipo>::= int | char | float | double | long | short | void
<variable>::= {<carcter>}+
<caracter>::= a | b |.... | z | A |.... | Z
<valor>::= {<digito>} +
<digito>::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
<condicion>::= <variable><operador><valor>
<operador>::= + | - | / | * | > | >= | < | <= | = | == | !
<expr_inddec>::= <variable> ++ | - - for
<tipo> <variable> =
<carcter>
int
ind
<valor> ;
<condicion> ; <expr_inddec>
ind
<
10
Ind
Ejemplo
<for>::= ([, {<tipo> <variable> = <valor>}];[,{ <condicion>}]; [,{<expr_incdec>})
<tipo>::= int | char | float | double | long | short | void
<variable>::= {<carcter>}+
<caracter>::= a | b |.... | z | A |.... | Z
<valor>::= {<digito>} +
<digito>::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
<condicion>::= <variable><operador><valor>
<operador>::= + | - | / | * | > | >= | < | <= | = | == | !
<expr_inddec>::= <variable> ++ | - - for
<tipo> <variable> =
<carcter>
int
ind
<valor> ;
<condicion> ; <expr_inddec>
ind
<
10
Ind