Beruflich Dokumente
Kultur Dokumente
Compiladores
Sintaxis
Lenguajes de Programacin 2
( ENT , ET , S , R )
Reglas
Smbolo ENT
Distinguido ENT ET
ENT
Sintaxis 4
<programa> <bloque>
( ENT , ET , S , R )
<bloque> <sent> regla recursiva
ENT = {<programa> , <bloque>
<bloque> <bloque> <sent> <sent>, }
ET = { WRITE, CTE_S}
<sent> WRITE CTE_S
S = {<programa>}
R
WRITE y CTE_S son tokens definidos en el Analizador Lxico
Sintaxis 6
Notacin
Gramticas BNF
ENT Letras Entre < >
Maysculas
ET Letras Directamente
Minsculas
S - -
R <> ::=
Sintaxis 7
Con Animacin
Flex Bison
Sentencia A := A + B <sent_asig>
+ <expresion>
id
<expresion> cte * <expresion>
<expresion>
id
id
id cte
(a + b) * 2 = 22 a + (b * 2) = 18
suponiendo a=4 b=7
Ambigedad
13
SOLUCIN
Cambiar las reglas de la gramtica
Asociatividad Quiero Hacer
12 - 8 - 4 14
Con Animacin
Gramtica 1 Gramtica 2
<expresion> ::= <expresion> + <termino> <expresion> ::= <termino> + <expresion>
<expresion> ::= <expresion> - <termino> <expresion> ::= <termino> - <expresion>
<expresion> ::= <expresion>*<termino> <expresion> ::= <termino>
<expresion> ::= <expresion>/<termino> <termino> ::= <factor> * <termino>
<expresion> ::= <termino> <termino> ::= <factor> / <termino>
<termino> ::= cte <termino> ::= <factor>
<factor> ::= cte
<expresion> <expresion>
- <termino> <factor>
<expresion> cte3 <termino> - <expresion>
4
<termino> <factor> <termino>
cte1
cte2
8 12 <factor>
cte1 cte2
12
8
cte3
12 8 4 = 0 12 (8 4) = 8 4
Sintaxis 15
Con Animacin
Preguntas?
Hacer: Prctica Sintaxis BNF