Se cambia la funcion ascii por code-char.


; 9-May-00 Jose Angel Banares Universidad de Zaragoza, Spain
;   Corrijo eval$ para que se ligen variables. Requiere comprobacion exhaustiva.
;;; NOTAS jose Angel Bañares 3/5/2000
- Copio fichero felix y leeme.txt
- Falla de la misma manera al salir la segunda vez.
- Modifico en fichero fuentes/general.lsp la función eval$ 3/5/00
  Esto soluciona el entrar y salir, pero hay que probar variables ...
(defun eval$ (exp)
    (prog (binding)
          (return
             (cond ((or (consp exp) (numberp exp))
		    (eval exp))
                   ((stringp exp) exp)
;                   ((or (not (setq binding (boundp exp))) ; a change here. CODIGO ORIGINAL 
		   ((or (not (setq binding (when (boundp exp) (eval exp)))) ; Modificado JangelB 3/5/00.
			(and (litatom (cdr binding))
			     (null (cdr binding)))); a change here
		    nil)
		    (t (cdr binding))))))



;8-Nov-00 Nuria Ripoll & Moises Gil.

- FICHERO "EXTEND.LSP"
  Definimos la variable !!ALLPUNCT.

   Se supone que tendría que estar definida en el "sxreadl.lsp" pero este fichero no existe.
(defvar !!allpunct '(%dash %slash %apost %hash %lparen %rparen %star %bquote %rsbrack %lsbrack
 %bslash %vbar %dquote %lcbrack %rcbrack %labrack %rabrack %amper %percent %dollar %plus %equal 
 %underbar %upcaret %atsign %tilde %cr %lf %qmark %emark %period %comma %colon %semicolon))



;8-Nov-00 Nuria Ripoll & Moises Gil.
- FICHERO "XREF.LSP"
  Comentamos las siguientes variables en "xref.lsp",ya definidas en "xload.lsp"
  - !!not-defined
  - !!patrules
  - !!pattrans

;10-Nov-00 Nuria Ripoll
- FICHERO "ORTO.LSP"
  Modifico la funcion "buscarerrorortogr" para que no de error al intentar invocar al interfaz grafico
  simplemente añadiendo la condicion de  que la variable *interfaz* este a 'true'.
  (and *interfaz* ...)

;16-Nov-00 Nuria Ripoll
- FICHERO "ORTO.LSP" [OBSOLETO]
 Modifico "revisarfrase" para que, en el caso de no encontrar errores ortograficos,
 busque palabras sinonimas con ayuda de Wordnet.

;16-Nov-00 Nuria Ripoll
- FICHERO "DICCIONARIO.LSP"
 Creacion del fichero DICCIONARIO.LSP, en el que se declaran las funciones para la busqueda de sinonimos
 de las palabras desconocidas.

;24-Nov-00 Nuria Ripoll
 Cambio "diccionario.lsp" -> "dicc-dinonimos.lsp" y añado "dicc-padres.lsp" [OBSOLETO]


;;;;;;;;;;;;;;;;;;;;;;;
;5-Dic-00 Nuria Ripoll
;;;;;;;;;;;;;;;;;;;;;;;
ERRORES - SOLUCIONES:

1. FUNCION EVAL$.
Se observó que no funcionaba correctamente la regla de transformación (::>) y parecía q el
origen se debía a la función "eval$" definida en el fichero "general.lsp", q no estaba totalmente
controlada...pq se pedía una lista cuando lo q se devolvía en dicha función no lo era.

 Así q modifico la función, de tal forma q devuelve una lista:
	...
	 (t
	  ;;(setf (symbol-value exp) (car binding)))))))
	  (setf (symbol-value exp) binding))))))

Resultados:
- La regla de transformación funciona correctamente.
- A la hora de escribir las variables asignadas en las reglas por pantalla, las muestra como
  listas...
- Tampoco está probada exhaustivamente pq no entiendo muy bien lo q debe o no devolver...
y, casi siempre q no se trata de números, cons, o strings, se va al caso por defecto del cond...

2. $w, $n...
Estos operadores tampoco iban bien en según qué ocasiones...
Debían ir siempre al final de un patrón, o bien ser asignados a una variable, en otro caso no
funcionaban, ejemplo:

	Regla:
	(una pal $w final) => (msg "MAL!!!!")

	Ejecución:
	+ una pal nuri final
	 0: ($W (NURI FINAL) ($W FINAL) (2) NIL NIL NIL 1)
	Error: $W got 7 args, wanted 1 arg.
	  [condition type: PROGRAM-ERROR]

La solución a este problema es poner $w o lo q corresponda, entre paréntesis.
	Regla:
	(una pal ($w) final) => (msg "OK!")


;;;;;;;;;;;;;;;;;;;;;;;
;18-Dic-00 Nuria Ripoll
;;;;;;;;;;;;;;;;;;;;;;;

INTRODUCCION NUEVO OPERADOR, $nombre, que reconoce cualquier nombre que le hemos indicado
en una tabla previamente inicializada.

- FICHERO "NOMBRES.LSP"
Creo nuevo fichero "nombres.lsp", que básicamente inicializa la tabla hash *tabla-nombres*,
a partir del fichero "nombres-propios.dat", con la que podremos hacer mas eficientes las 
operaciones de busqueda.


- FICHERO "EXTEND.LSP"
Añado el operador $nombre, q reconoce cualquier palabra que se
considere un nombre, común o propio, tal y como viene en el fichero "nombres-propios.dat".

	(def-op $nombre $ () (l)
		(gethash (car l) *tabla-nombres*))


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;26-Feb-01 Moises Gil & Nuria Ripoll
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

- Se cambia la funcion erase-gra por erasegra.
Ficheros implicados: xref.lsp, decl.lsp, babel.lsp. 

INTRODUCCION NUEVO OPERADOR, <-, que asigna la variable global *categoria*.
**************************************************
Lo hacemos pq no podiamos acceder a una variable asignada con := desde nuestras funciones
lisp, por ejemplo para buscar los sinonimos desde diccionario.lsp.

- FICHERO "XLOAD.LSP"
Funcion "altprop", para hacer el preprocesamiento del operador, y cambiarlo de lugar en el patron.
Añadimos <- a !!operators.

- FICHERO "XREF.LSP"
Funcion "x-pat", para actualizar los valores de first, last... y asi poder asignar a categoria al
principio y final de la frase.
Dado que este tipo de operador no consume entrada, nos interesan los valores de optional y wild.

    (<-
       (values nil t nil t nil t nil))


- FICHERO "XMATCH6.LSP"
Funcion "smatch1": Cuando encuentra el operador <-, hace lo propio, que es la asignacion de la
variable. El puntero no se modifica???

SINONIMOS DE UNA PALABRA, EN WORDNET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

- FICHERO "XMATCH6.LSP"
Funcion "smatch1": 
  Si el patron no es una lista, y no coincide exactamente con la entrada, miramos si esta es 
sinonimo de la palabra que tenemos en nuestra gramatica. Avanzamos el puntero de la entrada.
  Si el patron es una lista de terminales, nos encontramos en el operador &m, donde vamos
mirando los sinonimosde cada una de las palabras de la gramatica. 
[deberiamos mirar !! tambien]


- FICHERO "ORTO.LSP"
Funcion "revisarfrase": 
Lo modifico para que en caso de no encontrar error ortografico en la frase, no devuelva
nil, sino que devuelva la misma frase de entrada porque luego intentaremos encontrar
sinonimos, palabra por palabra.

	  (setq frasen (append frasen (list pal)))
	  ;;;;(return nil)


