Ejercicios BNF
1. Diseñar BNF para Asignaciones de operaciones aritméticas o booleanas:
- Las asignaciones se representan con el símbolo :=
- Las variables pueden ser alfanuméricas, no pudiendo comenzar con un número. Ejemplo: VALOR1 -> válido 1VALOR ->inválido
- Las operaciones aritméticas son: suma (+), resta (-), división (/), multiplicación (*) y potencia (^).
- Las operaciones lógicas son AND, OR, NOT
- Se podrán tener operaciones entre ()
- Ejemplos de asignaciones: VAR12 := (VAR1 + VAR2) * VAR3 ^ VAR4 / VAR5 Otro Ejemplo: VARBOL2 := VAR1 AND VAR3 NOT VAR5 AND (VAR6 OR VAR7)
2. Dado el siguiente BNF para expresiones lógicas:
<exp_lógica> ::= <exp_lógica> or <exp_lógica> | <exp_lógica> and <exp_lógica> | (<exp_lógica>) | not <exp_lógica> | true | false | <var_lógica>
<var_lógica> ::= A | B | C | ... | Zç
- Determine usando árboles de derivación, si las siguientes son expresiones lógicas.
- A or ((B and not (B or A)) and true
- ((A and B) or C) and not A or B
- A and (C or B) or not (true and false)
- Determine si el BNF dado es o no ambiguo. Justifique. En caso de ser ambiguo, defina si es posible un BNF no ambiguo que genere el mismo lenguaje.
3. Diseñar una gramática en formato BNF para: