SoloCodigo
		Programación Específica => Inteligencia Artificial => Mensaje iniciado por: AriLiz en Jueves 26 de Octubre de 2006, 06:55
		
			
			- 
				hola kisiera saber si alguien me puede decir ke hace y komo trabaja el siguiente codigo: 
 :-module(sintactico).
 :-export(inisintax/0).
 :-export(resets/0).
 :-dynamic(tiene/4).
 :-dynamic(lista_resintax/1).
 :-write(sintactico).
 % ***************************************************************************
 %                           SintacSys '98
 %          Analizador Sintáctico
 %
 % Desarrolladores: Hernández Delgado Jazmin Cynthia
 %                  López González Luis Eduardo
 %                   Quintana Colón Fernando
 %                   Terán Botello Martha Karina
 %
 % Derechos reservados MicroSystem.
 % Versión 1.0   mayo 13 de 1998
 % Actualización mayo 21 de 1998
 % ***************************************************************************
 %
 %  Este Analizador Sintáctico utiliza la estructura de DCG's de Amzi!
 %  Prolog 3.3
 %
 % ***************************************************************************
 % ***************************************************************************
 %                 ACTUALIZACION  SintacSys '05
 %          Analizador Sintáctico
 %
 % Desarrolladores:   Guzmán Pérez Ricardo Manuel
 %           Monroy Romero Mónica Nalleli
 %
 % Derechos reservados MicroSystem.
 %
 % Actualización octubre 14 de 2005
 % ***************************************************************************
 %
 %  Este Analizador Sintáctico utiliza la estructura de DCG's de Amzi!
 %  Prolog 3.3
 %
 % ***************************************************************************
 
 
 % REGLA PRINCIPAL
 % Esta regla, recibe como parámetros la estructura plana en una lista, parte
 % que nos proporciona el analizador léxico.
 % EJEMPLOS (así debe introducirlo en el listener para ver como funciona)
 % correcta:   sintaxis([articulo, verbo_infinitivo, verbo]).
 % incorrecta: sintaxis([abrir, pronombre, verbo, adverbio]).
 
 sintaxis(Estructura_plana):-
 s(Estructura_plana,[]),
 write(' *** La estructura es sintácticamente CORRECTA *** '), nl,
 write('Estructura plana: '),
 write(Estructura_plana);
 write(' *** La estructura es sintácticamente INCORRECTA *** '), nl,
 write('Estructura plana: '),
 write(Estructura_plana).
 
 % ESTRUCTURA GENERAL DE UN ENUNCIADO
 s --> sujeto(Numero,Genero), {assert(s)}.
 s --> sujeto(Numero,_), predicado(Persona,Numero,_,_),{assert(s)}.
 s --> predicado(Persona,Numero,_,_),{assert(s)}.
 s --> preg(Numero,_),{assert(s)}.
 
 
 % ESTRUCTURA DEL SUJETO
 
 sujeto(Numero,Genero) --> fsustantiva(Numero,Genero), punto(_,_).
 sujeto(Numero,Genero) --> fpronombre(Numero,Genero), punto(_,_).
 sujeto(Numero,Genero) --> fsustantiva(Numero,Genero).
 sujeto(Numero,Genero) --> fpronombre(Numero,Genero).
 % ESTRUCTURA FRASE SUSTANTIVA
 
 fsustantiva(Numero,Genero) --> articulo(Numero,Genero), sustantivo(Numero,Genero).
 fsustantiva(Numero,Genero) --> articulo(Numero,Genero), sustantivo(Numero,Genero), coma(_,_), fsustantiva(_,_).
 
 fsustantiva(Numero,Genero) --> numero(Numero,_),sustantivo(Numero,Genero).
 fsustantiva(Numero,Genero) --> numero(Numero,_),sustantivo(Numero,Genero), coma(_,_), fsustantiva(_,_).
 
 fsustantiva(Numero,Genero) --> numero(Numero,Genero),sustantivo(Numero,Genero).
 fsustantiva(Numero,Genero) --> numero(Numero,Genero),sustantivo(Numero,Genero), coma(_,_), fsustantiva(_,_).
 
 fsustantiva(Numero,Genero) --> sustantivo(Numero,Genero).
 fsustantiva(Numero,Genero) --> sustantivo(Numero,Genero), coma(_,_), fsustantiva(_,_).
 
 fsustantiva(Numero,Genero) --> sustantivo(Numero,Genero).
 fsustantiva(Numero,Genero) --> sustantivo(Numero,Genero), conjuncion(_,_), fsustantiva(_,_).
 %------------------------------------------------------------------------------------
 fsustantiva(Numero,Genero) --> numero(Numero,_),sustantivo(Numero,Genero), conjuncion(_,_), fpronombre(Numero,_).
 fsustantiva(Numero,Genero) --> numero(Numero,_),sustantivo(Numero,Genero),coma(_,_), fsustantiva(_,_), conjuncion(_,_), fpronombre(Numero,_).
 
 fsustantiva(Numero,Genero) --> numero(Numero,_),sustantivo(Numero,Genero), conjuncion(_,_), fpronombre(Numero,Genero).
 fsustantiva(Numero,Genero) --> numero(Numero,_),sustantivo(Numero,Genero),coma(_,_), fsustantiva(_,_), conjuncion(_,_), fpronombre(Numero,Genero).
 
 fsustantiva(Numero,Genero) --> numero(Numero,Genero),sustantivo(Numero,Genero), conjuncion(_,_), fpronombre(Numero,_).
 fsustantiva(Numero,Genero) --> numero(Numero,Genero),sustantivo(Numero,Genero),coma(_,_), fsustantiva(_,_), conjuncion(_,_), fpronombre(Numero,_).
 
 fsustantiva(Numero,Genero) --> numero(Numero,Genero),sustantivo(Numero,Genero), conjuncion(_,_), fpronombre(Numero,Genero).
 fsustantiva(Numero,Genero) --> numero(Numero,Genero),sustantivo(Numero,Genero),coma(_,_), fsustantiva(_,_), conjuncion(_,_), fpronombre(Numero,Genero).
 
 fsustantiva(Numero,Genero) --> sustantivo(Numero,Genero), conjuncion(_,_), fpronombre(Numero,Genero).
 fsustantiva(Numero,Genero) --> sustantivo(Numero,Genero),coma(_,_), fsustantiva(_,_), conjuncion(_,_), fpronombre(Numero,Genero).
 
 fsustantiva(Numero,Genero) --> sustantivo(Numero,Genero), conjuncion(_,_), fpronombre(Numero,_).
 fsustantiva(Numero,Genero) --> sustantivo(Numero,Genero),coma(_,_), fsustantiva(_,_), conjuncion(_,_), fpronombre(Numero,_).
 %------------------------------------------------------------------------------------
 fsustantiva(Numero,Genero) --> numero(Numero,_), sustantivo(Numero,Genero), conjuncion(_,_), fsustantiva(_,_).
 fsustantiva(Numero,Genero) --> numero(Numero,_), sustantivo(Numero,Genero), coma(_,_), fsustantiva(_,_), conjuncion(_,_), fsustantiva(_,_).
 
 fsustantiva(Numero,Genero) --> numero(Numero,Genero), sustantivo(Numero,Genero), conjuncion(_,_), fsustantiva(_,_).
 fsustantiva(Numero,Genero) --> numero(Numero,Genero), sustantivo(Numero,Genero), coma(_,_), fsustantiva(_,_), conjuncion(_,_), fsustantiva(_,_).
 
 fsustantiva(Numero,Genero) --> sustantivo(Numero,Genero), conjuncion(_,_), fsustantiva(_,_).
 fsustantiva(Numero,Genero) --> sustantivo(Numero,Genero), coma(_,_), fsustantiva(_,_), conjuncion, fsustantiva(_,_).
 %%-------------------------------------------------------------------------------------
 fsustantiva(Numero,Genero) --> numero(Numero,_), sustantivo(Numero,Genero), adjetivo_cal(Numero,Genero).
 fsustantiva(Numero,Genero) --> numero(Numero,_), sustantivo(Numero,Genero), adjetivo_cal(Numero,Genero), coma(_,_), fsustantiva(_,_).
 
 fsustantiva(Numero,Genero) --> numero(Numero,Genero), sustantivo(Numero,Genero), adjetivo_cal(Numero,Genero).
 fsustantiva(Numero,Genero) --> numero(Numero,Genero), sustantivo(Numero,Genero), adjetivo_cal(Numero,Genero), coma(_,_), fsustantiva(_,_).
 
 fsustantiva(Numero,Genero) --> sustantivo(Numero,Genero), adjetivo_cal(Numero,Genero).
 fsustantiva(Numero,Genero) --> sustantivo(Numero,Genero), adjetivo_cal(Numero,Genero), coma(_,_), fsustantiva(_,_).
 %%-------------------------------------------------------------------------------------
 fsustantiva(Numero,Genero) --> numero(Numero,_), sustantivo(Numero,Genero), adjetivo_cal(Numero,Genero), conjuncion(_,_), fsustantiva(_,_).
 fsustantiva(Numero,Genero) --> numero(Numero,_), sustantivo(Numero,Genero), adjetivo_cal(Numero,Genero), coma(_,_), fsustantiva(_,_),conjuncion(_,_), fsustantiva(_,_).
 
 fsustantiva(Numero,Genero) --> numero(Numero,Genero), sustantivo(Numero,Genero), adjetivo_cal(Numero,Genero), conjuncion(_,_), fsustantiva(_,_).
 fsustantiva(Numero,Genero) --> numero(Numero,Genero), sustantivo(Numero,Genero), adjetivo_cal(Numero,Genero), coma(_,_), fsustantiva(_,_), conjuncion(_,_), fsustantiva(_,_).
 
 fsustantiva(Numero,Genero) --> sustantivo(Numero,Genero), adjetivo_cal(Numero,Genero), conjuncion(_,_), fsustantiva(_,_).
 fsustantiva(Numero,Genero) --> sustantivo(Numero,Genero), adjetivo_cal(Numero,Genero), coma(_,_), fsustantiva(_,_),conjuncion(_,_), fsustantiva(_,_).
 %-------------------------------------------------------------------------------------
 fsustantiva(Numero,Genero) --> sustantivo(Numero,Genero), adjetivo_cal(Numero,Genero), conjuncion(_,_), fpronombre(Numero,_).
 fsustantiva(Numero,Genero) --> sustantivo(Numero,Genero), adjetivo_cal(Numero,Genero), coma(_,_), fsustantiva(_,_),conjuncion(_,_), fpronombre(Numero,_).
 
 fsustantiva(Numero,Genero) --> sustantivo(Numero,Genero), adjetivo_cal(Numero,Genero), conjuncion(_,_), fpronombre(Numero,Genero).
 fsustantiva(Numero,Genero) --> sustantivo(Numero,Genero), adjetivo_cal(Numero,Genero), coma(_,_), fsustantiva(_,_),conjuncion(_,_), fpronombre(Numero,Genero).
 
 %-------------------------------------------------------------------------------------
 fsustantiva(Numero,Genero) --> articulo(Numero,Genero), numero(Numero,_), sustantivo(Numero,Genero).
 fsustantiva(Numero,Genero) --> articulo(Numero,Genero), numero(Numero,_), sustantivo(Numero,Genero), coma(_,_), fsustantiva(_,_).
 
 fsustantiva(Numero,Genero) --> articulo(Numero,Genero), numero(Numero,Genero), sustantivo(Numero,Genero).
 fsustantiva(Numero,Genero) --> articulo(Numero,Genero), numero(Numero,Genero), sustantivo(Numero,Genero), coma(_,_), fsustantiva(_,_).
 
 %-------------------------------------------------------------------------------------
 fsustantiva(Numero,Genero) --> articulo(Numero,Genero), numero(Numero,Genero), sustantivo(Numero,Genero), conjuncion(_,_), fsustantiva(_,_).
 fsustantiva(Numero,Genero) --> articulo(Numero,Genero), numero(Numero,Genero), sustantivo(Numero,Genero), coma(_,_), fsustantiva(_,_),conjuncion(_,_), fsustantiva(_,_).
 
 fsustantiva(Numero,Genero) --> articulo(Numero,Genero), sustantivo(Numero,Genero), conjuncion(_,_), fsustantiva(_,_).
 fsustantiva(Numero,Genero) --> articulo(Numero,Genero), sustantivo(Numero,Genero), coma(_,_), fsustantiva(_,_),conjuncion(_,_), fsustantiva(_,_).
 
 %-------------------------------------------------------------------------------------
 fsustantiva(Numero,Genero) --> articulo(Numero,Genero), numero(Numero,_), sustantivo(Numero,Genero), conjuncion(_,_), fpronombre(Numero,_).
 fsustantiva(Numero,Genero) --> articulo(Numero,Genero), numero(Numero,_), sustantivo(Numero,Genero), coma(_,_), fsustantiva(_,_),conjuncion(_,_), fpronombre(Numero,_).
 
 fsustantiva(Numero,Genero) --> articulo(Numero,Genero), numero(Numero,_), sustantivo(Numero,Genero), conjuncion(_,_), fpronombre(Numero,Genero).
 fsustantiva(Numero,Genero) --> articulo(Numero,Genero), numero(Numero,_), sustantivo(Numero,Genero), coma(_,_), fsustantiva(_,_),conjuncion(_,_), fpronombre(Numero,Genero).
 
 fsustantiva(Numero,Genero) --> articulo(Numero,Genero), numero(Numero,Genero), sustantivo(Numero,Genero), conjuncion(_,_), fpronombre(Numero,_).
 fsustantiva(Numero,Genero) --> articulo(Numero,Genero), numero(Numero,Genero), sustantivo(Numero,Genero), coma(_,_), fsustantiva(_,_),conjuncion(_,_), fpronombre(Numero,_).
 
 fsustantiva(Numero,Genero) --> articulo(Numero,Genero), numero(Numero,Genero), sustantivo(Numero,Genero), conjuncion(_,_), fpronombre(Numero,Genero).
 fsustantiva(Numero,Genero) --> articulo(Numero,Genero), numero(Numero,Genero), sustantivo(Numero,Genero), coma(_,_), fsustantiva(_,_),conjuncion(_,_), fpronombre(Numero,Genero).
 
 fsustantiva(Numero,Genero) --> articulo(Numero,Genero), sustantivo(Numero,Genero), conjuncion(_,_), fpronombre(Numero,_).
 fsustantiva(Numero,Genero) --> articulo(Numero,Genero), sustantivo(Numero,Genero), coma(_,_), fsustantiva(_,_),conjuncion(_,_), fpronombre(Numero,_).
 
 fsustantiva(Numero,Genero) --> articulo(Numero,Genero), sustantivo(Numero,Genero), conjuncion(_,_), fpronombre(Numero,Genero).
 fsustantiva(Numero,Genero) --> articulo(Numero,Genero), sustantivo(Numero,Genero), coma(_,_), fsustantiva(_,_),conjuncion(_,_), fpronombre(Numero,Genero).
 
 %-------------------------------------------------------------------------------------
 fsustantiva(Numero,Genero) --> articulo(Numero,Genero), sustantivo(Numero,Genero), adjetivo_cal(Numero,Genero).
 fsustantiva(Numero,Genero) --> articulo(Numero,Genero), sustantivo(Numero,Genero), adjetivo_cal(Numero,Genero), coma(_,_), fsustantiva(_,_).
 %-------------------------------------------------------------------------------------
 fsustantiva(Numero,Genero) --> articulo(Numero,Genero), sustantivo(Numero,Genero), adjetivo_cal(Numero,Genero), conjuncion(_,_), fsustantiva(_,_).
 fsustantiva(Numero,Genero) --> articulo(Numero,Genero), sustantivo(Numero,Genero), adjetivo_cal(Numero,Genero),coma(_,_), fsustantiva(_,_), conjuncion(_,_), fsustantiva(_,_).
 %-------------------------------------------------------------------------------------
 fsustantiva(Numero,Genero) --> articulo(Numero,Genero), sustantivo(Numero,Genero), adjetivo_cal(Numero,Genero), conjuncion(_,_), fpronombre(Numero,_).
 fsustantiva(Numero,Genero) --> articulo(Numero,Genero), sustantivo(Numero,Genero), adjetivo_cal(Numero,Genero), coma(_,_), fsustantiva(_,_),conjuncion(_,_), fpronombre(Numero,_).
 
 fsustantiva(Numero,Genero) --> articulo(Numero,Genero), sustantivo(Numero,Genero), adjetivo_cal(Numero,Genero), conjuncion(_,_), fpronombre(Numero,Genero).
 fsustantiva(Numero,Genero) --> articulo(Numero,Genero), sustantivo(Numero,Genero), adjetivo_cal(Numero,Genero), coma(_,_), fsustantiva(_,_),conjuncion(_,_), fpronombre(Numero,Genero).
 %-------------------------------------------------------------------------------------
 fsustantiva(Numero,Genero) --> adjetivo_det(Numero,Genero), sustantivo(Numero,Genero).
 fsustantiva(Numero,Genero) --> adjetivo_det(Numero,Genero), sustantivo(Numero,Genero), coma(_,_), fsustantiva(_,_) .
 %-------------------------------------------------------------------------------------
 fsustantiva(Numero,Genero) --> adjetivo_det(Numero,Genero), sustantivo(Numero,Genero), conjuncion(_,_), fpronombre(Numero,_).
 fsustantiva(Numero,Genero) --> adjetivo_det(Numero,Genero), sustantivo(Numero,Genero), coma(_,_), fsustantiva(_,_), conjuncion(_,_), fpronombre(Numero,_).
 
 fsustantiva(Numero,Genero) --> adjetivo_det(Numero,Genero), sustantivo(Numero,Genero), conjuncion(_,_), fpronombre(Numero,Genero).
 fsustantiva(Numero,Genero) --> adjetivo_det(Numero,Genero), sustantivo(Numero,Genero), coma(_,_), fsustantiva(_,_), conjuncion(_,_), fpronombre(Numero,Genero).
 %-------------------------------------------------------------------------------------
 fsustantiva(Numero,Genero) --> adjetivo_det(Numero,Genero), sustantivo(Numero,Genero), conjuncion(_,_), fsustantiva(_,_).
 fsustantiva(Numero,Genero) --> adjetivo_det(Numero,Genero), sustantivo(Numero,Genero), coma(_,_), fsustantiva(_,_),conjuncion(_,_), fsustantiva(_,_).
 %-------------------------------------------------------------------------------------
 fsustantiva(Numero,Genero) --> adjetivo_det(Numero,Genero), sustantivo(Numero,Genero), adjetivo_cal(Numero,Genero).
 fsustantiva(Numero,Genero) --> adjetivo_det(Numero,Genero), sustantivo(Numero,Genero), adjetivo_cal(Numero,Genero), coma(_,_), fsustantiva(_,_).
 %-------------------------------------------------------------------------------------
 fsustantiva(Numero,Genero) --> adjetivo_det(Numero,Genero), sustantivo(Numero,Genero), adjetivo_cal(Numero,Genero), conjuncion(_,_), fsustantiva(_,_).
 fsustantiva(Numero,Genero) --> adjetivo_det(Numero,Genero), sustantivo(Numero,Genero), adjetivo_cal(Numero,Genero), coma(_,_), fsustantiva(_,_), conjuncion(_,_), fsustantiva(_,_).
 %-------------------------------------------------------------------------------------
 fsustantiva(Numero,Genero) --> adjetivo_det(Numero,Genero), sustantivo(Numero,Genero), adjetivo_cal(Numero,Genero), conjuncion(_,_), fpronombre(Numero,_).
 fsustantiva(Numero,Genero) --> adjetivo_det(Numero,Genero), sustantivo(Numero,Genero), adjetivo_cal(Numero,Genero), coma(_,_), fsustantiva(_,_), conjuncion(_,_), fpronombre(Numero,_).
 
 fsustantiva(Numero,Genero) --> adjetivo_det(Numero,Genero), sustantivo(Numero,Genero), adjetivo_cal(Numero,Genero), conjuncion(_,_), fpronombre(Numero,Genero).
 fsustantiva(Numero,Genero) --> adjetivo_det(Numero,Genero), sustantivo(Numero,Genero), adjetivo_cal(Numero,Genero), coma(_,_), fsustantiva(_,_), conjuncion(_,_), fpronombre(Numero,Genero).
 %------------------------------------------------------------------------------------
 fsustantiva(Numero,Genero) --> adjetivo_cal(Numero,Genero).
 fsustantiva(Numero,Genero) --> adjetivo_cal(Numero,Genero), coma(_,_), fsustantiva(_,_).
 %-------------------------------------------------------------------------------------
 fsustantiva(Numero,Genero) --> adjetivo_cal(Numero,Genero), conjuncion(_,_), fsustantiva(_,_).
 fsustantiva(Numero,Genero) --> adjetivo_cal(Numero,Genero), coma(_,_), fsustantiva(_,_), conjuncion(_,_), fsustantiva(_,_).
 %-------------------------------------------------------------------------------------
 fsustantiva(Numero,Genero) --> adjetivo_cal(Numero,Genero), sustantivo(Numero,Genero).
 fsustantiva(Numero,Genero) --> adjetivo_cal(Numero,Genero), sustantivo(Numero,Genero), coma(_,_), fsustantiva(_,_).
 %-------------------------------------------------------------------------------------
 fsustantiva(Numero,Genero) --> adjetivo_cal(Numero,Genero), sustantivo(Numero,Genero), conjuncion(_,_), fpronombre(Numero,_).
 fsustantiva(Numero,Genero) --> adjetivo_cal(Numero,Genero), sustantivo(Numero,Genero), coma(_,_), fsustantiva(_,_), conjuncion(_,_), fpronombre(Numero,_).
 
 fsustantiva(Numero,Genero) --> adjetivo_cal(Numero,Genero), sustantivo(Numero,Genero), conjuncion(_,_), fpronombre(Numero,Genero).
 fsustantiva(Numero,Genero) --> adjetivo_cal(Numero,Genero), sustantivo(Numero,Genero), coma(_,_), fsustantiva(_,_), conjuncion(_,_), fpronombre(Numero,Genero).
 %-------------------------------------------------------------------------------------
 fsustantiva(Numero,Genero) --> adjetivo_cal(Numero,Genero), sustantivo(Numero,Genero), conjuncion(_,_), fsustantiva(_,_).
 fsustantiva(Numero,Genero) --> adjetivo_cal(Numero,Genero), sustantivo(Numero,Genero), coma(_,_), fsustantiva(_,_), conjuncion(_,_), fsustantiva(_,_).
 %-------------------------------------------------------------------------------------
 fsustantiva(Numero,Genero) --> fpronombre(Numero,Genero).
 
 % ESTRUCTURAS PRONOMBRE
 %-------------------------------------------------------------------------------------
 fpronombre(Numero,_) --> pronombre(Numero,_).
 fpronombre(Numero,_) --> pronombre(Numero,_), coma(_,_), fpronombre(_,_).
 %-------------------------------------------------------------------------------------
 fpronombre(Numero,_) --> pronombre(Numero,_), conjuncion(_,_), fpronombre(_,_).
 fpronombre(Numero,_) --> pronombre(Numero,_),coma(_,_), fpronombre(_,_), conjuncion(_,_), fpronombre(_,_).
 %-------------------------------------------------------------------------------------
 fpronombre(Numero,_) --> pronombre(Numero,_), conjuncion(_,_), fsustantiva(_,_).
 fpronombre(Numero,_) --> pronombre(Numero,_),coma(_,_), fpronombre(_,_), conjuncion(_,_), fsustantiva(_,_).
 %-------------------------------------------------------------------------------------
 fpronombre(Numero,Genero) --> pronombre(Numero,Genero).
 fpronombre(Numero,Genero) --> pronombre(Numero,Genero), coma(_,_), fpronombre(Numero,Genero).
 %-------------------------------------------------------------------------------------
 fpronombre(Numero,Genero) --> pronombre(Numero,Genero), conjuncion(_,_), fpronombre(Numero,Genero).
 fpronombre(Numero,Genero) --> pronombre(Numero,Genero),coma(_,_), fpronombre(Numero,Genero), conjuncion(_,_), fpronombre(Numero,Genero).
 %-------------------------------------------------------------------------------------
 fpronombre(Numero,Genero) --> pronombre(Numero,Genero), conjuncion(_,_), fsustantiva(_,_).
 fpronombre(Numero,Genero) --> pronombre(Numero,Genero),coma(_,_), fpronombre(Numero,Genero), conjuncion(_,_), fsustantiva(_,_).
 %-------------------------------------------------------------------------------------
 
 % ESTRUCTURA DEL PREDICADO
 
 predicado(_,plural,Tiempo,Modo) --> fverbo(_,plural,Tiempo,Modo).
 
 %-------------------------------------------------------------------------------------
 predicado(Persona,Numero,Tiempo,Modo) --> fverbo(Persona,Numero,Tiempo,Modo).
 predicado(Persona,Numero,Tiempo,Modo) --> fverbo(Persona,Numero,Tiempo,Modo), punto(_,_).
 %-------------------------------------------------------------------------------------
 predicado(Persona,Numero,Tiempo,Modo) --> fverbo(Persona,Numero,Tiempo,Modo), fsustantiva(_,_).
 predicado(Persona,Numero,Tiempo,Modo) --> fverbo(Persona,Numero,Tiempo,Modo), fsustantiva(_,_), punto(_,_).
 %-------------------------------------------------------------------------------------
 predicado(Persona,Numero,Tiempo,Modo) --> fverbo(Persona,Numero,Tiempo,Modo), fpreposicion(_,_).
 predicado(Persona,Numero,Tiempo,Modo) --> fverbo(Persona,Numero,Tiempo,Modo), fpreposicion(_,_), punto(_,_).
 %-------------------------------------------------------------------------------------
 predicado(Persona,Numero,Tiempo,Modo) --> fverbo(Persona,Numero,Tiempo,Modo), adverbios(_,_).
 predicado(Persona,Numero,Tiempo,Modo) --> fverbo(Persona,Numero,Tiempo,Modo), adverbios(_,_), punto(_,_).
 
 predicado(Persona,Numero,Tiempo,Modo) --> fverbo(Persona,Numero,Tiempo,Modo), adverbios(sing,_).
 predicado(Persona,Numero,Tiempo,Modo) --> fverbo(Persona,Numero,Tiempo,Modo), adverbios(sing,_), punto(_,_).
 
 predicado(Persona,Numero,Tiempo,Modo) --> fverbo(Persona,Numero,Tiempo,Modo), adverbios(plural,_).
 predicado(Persona,Numero,Tiempo,Modo) --> fverbo(Persona,Numero,Tiempo,Modo), adverbios(plural,_), punto(_,_).
 %-------------------------------------------------------------------------------------
 predicado(Persona,Numero,Tiempo,Modo) --> fverbo(Persona,Numero,Tiempo,Modo), conjuncion(_,_), s.
 predicado(Persona,Numero,Tiempo,Modo) --> fverbo(Persona,Numero,Tiempo,Modo), conjuncion(_,_), s, punto(_,_).
 %-------------------------------------------------------------------------------------
 predicado(Persona,Numero,Tiempo,Modo) --> fverbo(Persona,Numero,Tiempo,Modo), conjuncion(_,_), predicado(_,_,_,_).
 predicado(Persona,Numero,Tiempo,Modo) --> fverbo(Persona,Numero,Tiempo,Modo), conjuncion(_,_), predicado(_,_,_,_), punto(_,_).
 %-------------------------------------------------------------------------------------
 
 % ESTRUCTURA FRASE VERBAL
 
 fverbo(_,plural,Tiempo,Modo) --> fsustantiva(_,_), conjuncion(_,_), fsustantiva(sing,_), verbo(_,plural,Tiempo,Modo).
 %-------------------------------------------------------------------------------------
 fverbo(Persona,Numero,Tiempo,Modo) --> verbo(Persona,Numero,Tiempo,Modo).
 fverbo(Persona,Numero,Tiempo,Modo) --> verbo(Persona,Numero,Tiempo,Modo), coma(_,_), fverbo(Persona,Numero,Tiempo,Modo).
 %-------------------------------------------------------------------------------------
 fverbo(Persona,Numero,Tiempo,Modo) --> verbo(Persona,Numero,Tiempo,Modo), conjuncion(_,_), fverbo(Persona,Numero,Tiempo,Modo).
 fverbo(Persona,Numero,Tiempo,Modo) --> verbo(Persona,Numero,Tiempo,Modo), coma(_,_), fverbo(Persona,Numero,Tiempo,Modo) , conjuncion(_,_), fverbo(Persona,Numero,Tiempo,Modo).
 
 % ESTRUCTURA FRASE PREPOSICIONAL
 fpreposicion(_,_) --> preposicion(_,_), sujeto(Numero,Genero).
 
 % ESTRUCTURAS FRASE DE ADVERBIO.
 adverbios(_,_) --> adverbio(_,_).
 adverbios(_,_) --> adverbio(_,_), adverbio(_,_).
 adverbios(_,_) --> adverbio(_,_), conjuncion(_,_), adverbios(_,_).
 
 adverbios(sing,_) --> adverbio(sing,_).
 adverbios(sing,_) --> adverbio(sing,_), adverbio(sing,_).
 adverbios(sing,_) --> adverbio(sing,_), conjuncion(_,_), adverbios(sing,_).
 
 adverbios(plural,_) --> adverbio(plural,_).
 adverbios(plural,_) --> adverbio(plural,_), adverbio(plural,_).
 adverbios(plural,_) --> adverbio(plural,_), conjuncion(_,_), adverbios(plural,_).
 
 % ESTRUCTURAS DE PREGUNTA.
 preg(Numero,_) --> question(Numero,_), preguntacierra(_,_).
 preg(Numero,_) --> question(Numero,_), sujeto(Numero,_), preguntacierrar(_,_).
 preg(Numero,_) --> question(Numero,_), predicado(Persona,Numero,Tiempo), sujeto(Numero,_), preguntacierra(_,_).
 preg(Numero,_) --> question(Numero,_), s, preguntacierra(_,_).
 preg(Numero,_) --> question(Numero,_), predicado(Persona,Numero,Tiempo), fpreposicion(_,_), preguntacierra(_,_).
 %preg(Numero,_) --> s, preguntacierra(_,_).
 preg(Numero,_) --> sujeto(Numero,_), preguntacierra(_,_).
 
 
 %  BASE DE CONOCIMIENTOS
 articulo(sing,fem) --> [articulosingfem].
 articulo(sing,mas) --> [articulosingmas].
 articulo(plural,fem) --> [articulopluralfem].
 articulo(plural,mas) --> [articulopluralmas].
 
 sustantivo(sing,fem) --> [sustantivosingfem].
 sustantivo(sing,mas) --> [sustantivosingmas].
 sustantivo(plural,fem) --> [sustantivopluralfem].
 sustantivo(plural,mas) --> [sustantivopluralmas].
 
 verbo(_,_,_,infinitivo) --> [verbonoaplicanoaplicanoaplicainfinitivo].
 
 verbo(1,sing,pas,indi) --> [verbo1singpretéritoindicativo].
 verbo(2,sing,pas,indi) --> [verbo2singpretéritoindicativo].
 verbo(3,sing,pas,indi) --> [verbo3singpretéritoindicativo].
 
 verbo(1,plural,pas,indi) --> [verbo1pluralpretéritoindicativo].
 verbo(2,plural,pas,indi) --> [verbo2pluralpretéritoindicativo].
 verbo(3,plural,pas,indi) --> [verbo3pluralpretéritoindicativo].
 
 verbo(1,sing,pre,indi) --> [verbo1singpresenteindicativo].
 verbo(2,sing,pre,indi) --> [verbo2singpresenteindicativo].
 verbo(3,sing,pre,indi) --> [verbo3singpresenteindicativo].
 
 verbo(1,plural,pre,indi) --> [verbo1pluralpresenteindicativo].
 verbo(2,plural,pre,indi) --> [verbo2pluralpresenteindicativo].
 verbo(3,plural,pre,indi) --> [verbo3pluralpresenteindicativo].
 
 verbo(1,sing,fut,indi) --> [verbo1singfuturoindicativo].
 verbo(2,sing,fut,indi) --> [verbo2singfuturoindicativo].
 verbo(3,sing,fut,indi) --> [verbo3singfuturoindicativo].
 
 verbo(1,plural,fut,indi) --> [verbo1pluralfuturoindicativo].
 verbo(2,plural,fut,indi) --> [verbo2pluralfuturoindicativo].
 verbo(3,plural,fut,indi) --> [verbo3pluralfuturoindicativo].
 
 verbo(1,sing,copre,indi) --> [verbo1singcopretéritoindicativo].
 verbo(2,sing,copre,indi) --> [verbo2singcopretéritoindicativo].
 verbo(3,sing,copre,indi) --> [verbo3singcopretéritoindicativo].
 
 verbo(1,plural,copre,indi) --> [verbo1pluralcopretéritoindicativo].
 verbo(2,plural,copre,indi) --> [verbo2pluralcopretéritoindicativo].
 verbo(3,plural,copre,indi) --> [verbo3pluralcopretéritoindicativo].
 
 verbo(1,sing,pospre,indi) --> [verbo1singpospretéritoindicativo].
 verbo(2,sing,pospre,indi) --> [verbo2singpospretéritoindicativo].
 verbo(3,sing,pospre,indi) --> [verbo3singpospretéritoindicativo].
 
 verbo(1,plural,pospre,indi) --> [verbo1pluralpospretéritoindicativo].
 verbo(2,plural,pospre,indi) --> [verbo2pluralpospretéritoindicativo].
 verbo(3,plural,pospre,indi) --> [verbo3pluralpospretéritoindicativo].
 
 verbo(1,sing,pas,subj) --> [verbo1singpretéritosubjuntivo].
 verbo(2,sing,pas,subj) --> [verbo2singpretéritosubjuntivo].
 verbo(3,sing,pas,subj) --> [verbo3singpretéritosubjuntivo].
 
 verbo(1,plural,pas,subj) --> [verbo1pluralpretéritosubjuntivo].
 verbo(2,plural,pas,subj) --> [verbo2pluralpretéritosubjuntivo].
 verbo(3,plural,pas,subj) --> [verbo3pluralpretéritosubjuntivo].
 
 verbo(1,sing,pre,subj) --> [verbo1singpresentesubjuntivo].
 verbo(2,sing,pre,subj) --> [verbo2singpresentesubjuntivo].
 verbo(3,sing,pre,subj) --> [verbo3singpresentesubjuntivo].
 
 verbo(1,plural,pre,subj) --> [verbo1pluralpresentesubjuntivo].
 verbo(2,plural,pre,subj) --> [verbo2pluralpresentesubjuntivo].
 verbo(3,plural,pre,subj) --> [verbo3pluralpresentesubjuntivo].
 
 verbo(1,sing,fut,subj) --> [verbo1singfuturosubjuntivo].
 verbo(2,sing,fut,subj) --> [verbo2singfuturosubjuntivo].
 verbo(3,sing,fut,subj) --> [verbo3singfuturosubjuntivo].
 
 verbo(1,plural,fut,subj) --> [verbo1pluralfuturosubjuntivo].
 verbo(2,plural,fut,subj) --> [verbo2pluralfuturosubjuntivo].
 verbo(3,plural,fut,subj) --> [verbo3pluralfuturosubjuntivo].
 
 verbo(2,sing,pre,imp) --> [verbo2singpresenteimperativo].
 verbo(3,sing,pre,imp) --> [verbo3singpresenteimperativo].
 
 verbo(1,plural,pre,imp) --> [verbo1pluralpresenteimperativo].
 verbo(2,plural,pre,imp) --> [verbo2pluralpresenteimperativo].
 verbo(3,plural,pre,imp) --> [verbo3pluralpresenteimperativo].
 
 conjuncion(_,_) --> [conjuncionnoaplicanoaplica].
 
 pronombre(sing,_) --> [pronombresingneutro].
 pronombre(plural,_) --> [pronombrepluralneutro].
 
 pronombre(sing,mas) --> [pronombresingmas].
 pronombre(plural,mas) --> [pronombrepluralmas].
 
 pronombre(sing,fem) --> [pronombresingfem].
 pronombre(plural,fem) --> [pronombrepluralfem].
 
 adverbio(_,_) --> [adverbionoaplicaneutro].
 adverbio(sing,_) --> [adverbiosingneutro].
 adverbio(plural,_) --> [adverbiopluralneutro].
 
 preposicion(_,_) --> [preposicionnoaplicanoaplica].
 
 question(sing,_) --> [questionsingnoaplica].
 question(plural,_) --> [questionpluralnoaplica].
 
 adjetivo_cal(sing,fem) --> [adjetivo_calsingfem].
 adjetivo_cal(sing,mas) --> [adjetivo_calsingmas].
 
 adjetivo_cal(plural,fem) --> [adjetivo_calpluralfem].
 adjetivo_cal(plural,mas) --> [adjetivo_calpluralmas].
 
 adjetivo_det(sing,fem) --> [adjetivo_detsingfem].
 adjetivo_det(sing,mas) --> [adjetivo_detsingmas].
 
 adjetivo_det(plural,fem) --> [adjetivo_detpluralfem].
 adjetivo_det(plural,mas) --> [adjetivo_detpluralmas].
 
 contracciones --> [contracciones]; ["del"]; ["al"].
 preguntacierra(_,_) --> [preguntacierranoaplicaneutro].
 
 coma(_,_) --> [comanoaplicaneutro].
 punto(_,_) --> [puntonoaplicaneutro].
 
 numero(_,_) --> [numeronoaplicanoaplica].
 numero(plural,_)--> [numeropluralnoaplica].
 numero(plural,mas)--> [numeropluralmas].
 numero(plural,fem)--> [numeropluralfem].
 numero(sing,mas)--> [numerosingmas].
 numero(sing,fem)--> [numerosingfem].
 
 inisintax:-
 leelista,
 leetabla,
 genera,
 lista_resintax(X),
 sintaxis(X).
 
 leelista:- see("c:\\archivos de programa\\amzi\\eclipse\\workspace\\prolexy\\estruc_sintac.pro"),
 lista,
 seen.
 
 lista:- read(lista_sintaxis(Y)),
 assertz(lista_sintaxis(Y)),
 nl.
 
 leetabla:- see("c:\\archivos de programa\\amzi\\eclipse\\workspace\\prolexy\\tabla_simbolos.pro"),
 tabla,
 seen.
 
 tabla:- (read(alexis:tabla_simbolos(X)),
 assertz(tabla_simbolos(X)),
 tabla);!.
 
 genera:- (tabla_simbolos(S),
 nueva(S),
 genera(S)
 );true.
 
 genera(S):- (
 nueva(S)
 );true.
 
 nueva(S):-
 tiene(Cat,Gen,Num,S),
 Cat\=verbo,
 lista_resintax(L),
 atom_concat(Cat,Num,Pal1),
 atom_concat(Pal1,Gen,Pal2),
 inserta(Pal2,L,Lista),
 retractall(lista_resintax(L)),
 assertz(lista_resintax(Lista)),fail.
 
 nueva(S):-
 tiene(Cat,Per,Num,Tiem,Modo,S),
 lista_resintax(L),
 is_string_term(Per1,Per),
 string_list(Per1,Pers),
 name(Per2,Pers),
 atom_concat(Cat,Per2,Pal1),
 atom_concat(Pal1,Num,Pal2),
 atom_concat(Pal2,Tiem,Pal3),
 atom_concat(Pal3,Modo,Pal4),
 inserta(Pal4,L,Lista),
 retractall(lista_resintax(L)),
 assertz(lista_resintax(Lista)),
 fail.
 
 tiene(Cat,Gen,Num,[N,[Cat,Pal,Raiz,[Lex,Gen,Num]]]).
 tiene(Cat,Per,Num,Tiem,Modo,[N,[Cat,Pal,Raiz,[Lex,Per,Num,Tiem,Modo]]]).
 tiene(Cat,Gen,Num,[N,[Cat,Ont,Pal,Raiz,[Lex,Gen,Num]]]).
 
 lista_resintax([]).
 lista(PP1):-
 lista_resintax(L),
 inserta(PP1,L,Lista),
 retractall(lista_resintax(L)),
 assertz(lista_resintax(Lista)).
 
 inserta(Ele,[],[Ele]).
 inserta(Ele,[X|L1],[X|L2]):-
 inserta(Ele,L1,L2).
 
 miembro(C,[C|O]).
 miembro(X,[C|O]):-miembro(X,O).
 
 resets:-
 retractall(tabla_simbolos(X)),
 retractall(lista_resintax(L)),
 retractall(lista_sintaxis(Y)),
 assertz(tabla_simbolos([])),
 assertz(lista_resintax([])).
 
 :-end_module(sintactico).
 
 Se los agradeceria muchisimo... 1000Gracias por lo ke puedan hacer...
 c23bca@yahoo.com.mx