ejercicio de final

master
CrossNox 3 years ago
parent 1063bc8a9b
commit 8db002ef10
  1. 21
      src/rustint/core.clj

@ -228,7 +228,7 @@
35 "SE ESPERABA UNA DE LAS PALABRAS RESERVADAS as_str O trim" 35 "SE ESPERABA UNA DE LAS PALABRAS RESERVADAS as_str O trim"
36 "SE ESPERABA UNA DE LAS PALABRAS RESERVADAS to_string O parse" 36 "SE ESPERABA UNA DE LAS PALABRAS RESERVADAS to_string O parse"
37 "SE ESPERABA UN TIPO NUMERICO: i64, f64 O usize" 37 "SE ESPERABA UN TIPO NUMERICO: i64, f64 O usize"
38 "SE ESPERABA UNA FUNCION MATEMATICA: sqrt, sin, atan O abs" 38 "SE ESPERABA UNA FUNCION MATEMATICA: sqrt, cbrt ,sin, atan O abs"
39 "SE ESPERABA UN NUMERO" 39 "SE ESPERABA UN NUMERO"
40 "SE ESPERABA LA PALABRA RESERVADA fn" 40 "SE ESPERABA LA PALABRA RESERVADA fn"
41 "DECLARACION DUPLICADA DE IDENTIFICADOR DE BIBLIOTECA, CONSTANTE O FUNCION" 41 "DECLARACION DUPLICADA DE IDENTIFICADOR DE BIBLIOTECA, CONSTANTE O FUNCION"
@ -697,7 +697,7 @@
) )
(defn hace-push-implicito? [instr] (defn hace-push-implicito? [instr]
(contains? #{'ADD 'SUB 'MUL 'DIV 'MOD 'OR 'AND 'EQ 'NEQ 'GT 'GTE 'LT 'LTE 'NEG 'NOT 'SQRT 'SIN 'ATAN 'ABS 'TOI 'TOF} instr) (contains? #{'ADD 'SUB 'MUL 'DIV 'MOD 'OR 'AND 'EQ 'NEQ 'GT 'GTE 'LT 'LTE 'NEG 'NOT 'SQRT 'CBRT 'SIN 'ATAN 'ABS 'TOI 'TOF} instr)
) )
(defn confirmar-retorno [amb] (defn confirmar-retorno [amb]
@ -1086,6 +1086,12 @@
(expresion) (expresion)
(procesar-terminal ,,, (symbol ")") 12) (procesar-terminal ,,, (symbol ")") 12)
(generar ,,, 'SQRT)) (generar ,,, 'SQRT))
cbrt (-> amb
(escanear)
(procesar-terminal ,,, (symbol "(") 11)
(expresion)
(procesar-terminal ,,, (symbol ")") 12)
(generar ,,, 'CBRT))
sin (-> amb sin (-> amb
(escanear) (escanear)
(procesar-terminal ,,, (symbol "(") 11) (procesar-terminal ,,, (symbol "(") 11)
@ -2026,7 +2032,7 @@
AND (let [res (aplicar-operador-diadico and-diadico pila)] AND (let [res (aplicar-operador-diadico and-diadico pila)]
(if (nil? res) res (recur cod regs-de-act (inc cont-prg) res mapa-regs))) (if (nil? res) res (recur cod regs-de-act (inc cont-prg) res mapa-regs)))
; SQRT: Incrementa cont-prg en 1, quita de la pila un elemento numerico, calcula su raiz cuadrada y la coloca al final de la pila. ; sqrt: incrementa cont-prg en 1, quita de la pila un elemento numerico, calcula su raiz cuadrada y la coloca al final de la pila.
SQRT (let [ SQRT (let [
res (Math/sqrt (last pila)), res (Math/sqrt (last pila)),
nueva_pila (assoc pila (- (count pila) 1) res) nueva_pila (assoc pila (- (count pila) 1) res)
@ -2034,6 +2040,14 @@
(recur cod regs-de-act (inc cont-prg) nueva_pila mapa-regs) (recur cod regs-de-act (inc cont-prg) nueva_pila mapa-regs)
) )
; cbrt: incrementa cont-prg en 1, quita de la pila un elemento numerico, calcula su raiz cúbica y la coloca al final de la pila.
CBRT (let [
res (Math/cbrt (last pila)),
nueva_pila (assoc pila (- (count pila) 1) res)
]
(recur cod regs-de-act (inc cont-prg) nueva_pila mapa-regs)
)
; SIN: Incrementa cont-prg en 1, quita de la pila un elemento numerico, calcula su seno y lo coloca al final de la pila. ; SIN: Incrementa cont-prg en 1, quita de la pila un elemento numerico, calcula su seno y lo coloca al final de la pila.
SIN (let [ SIN (let [
res (Math/sin (last pila)), res (Math/sin (last pila)),
@ -2260,6 +2274,7 @@
'return, 'return,
'sin, 'sin,
'sqrt, 'sqrt,
'cbrt,
'std, 'std,
'stdin, 'stdin,
'stdout, 'stdout,

Loading…
Cancel
Save