Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- EXAMEN MAYO 2017
- 1. Hacer un operador '^' que haga una puerta lógica xor (solo es verdadero cuando 1 de los dos operandos es
- verdadero).
- - Modificar parser para añadir la operación y su precedencia
- - Cambiar el codeGeneration de value para realizar la operación
- - Se puede hacer negando ambos operandos y negandolos y luego haciendo and y negandolo, es decir:
- push op1
- not
- push op2
- not
- and
- not
- O se puede hacer con labels como si de ifs se tratar
- 2. Cambiar la asignación para que se puedan asignar listas de valores a listas de variables (ejemplo: a,b = 1,2).
- Consideración a tener en cuenta: si se asigna una variable a otra variable, el valor que se asigna es el que tenía
- antes de tal asignación, esto es, si tenemos una variable a con valor 1 y una variable b con valor 2, y hacemos
- a,b = b, a el resultado no puede ser 2,2 sino 2,1.
- - Modificamos parser para cambiar la asignación por una lista de expressiones
- - Modificamos nodo AST para cambiar la left y right por listas
- - Modificamos typeChecking para hacer la misma operación iterando sobre las listas y para comprobar que
- ambas listas tienen el mismo tamaño
- - Modificamos el CodeGeneration de execute para primero guardar todos los pares address y valor en la pila
- y luego hacer store de todos de una vez (para que el store corresponda con los tipos, hay que iterar por
- los tipos alreves)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement