• Domingo 22 de Diciembre de 2024, 18:23

Autor Tema:  Ayuda Xfavor  (Leído 1983 veces)

AriLiz

  • Nuevo Miembro
  • *
  • Mensajes: 3
    • Ver Perfil
Ayuda Xfavor
« en: Jueves 26 de Octubre de 2006, 06:55 »
0
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