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