sentenca(S1,S,INF,SUP,_,A):-
	sint_orac(S1,S,INF,SUP,d,A1,_,_),
	monta_arv(A,sentenca,[A1]).

sint_orac(S1,S,INF,SUP,_,A,FV,MV):-
	sint_verb(S2,S3,INF,SUP,d,A2,FV,MV,P,N),
	e_sint_nom(S1,S2,INF,S2,e,A1,P,_,N),
	e_sint_nom(S3,S,S3,SUP,d,A3,_,_,_),
	monta_arv(A,sint_orac,[A1,A2,A3]).

e_sint_nom(S,S,_,_,_,'',_,_,_).

e_sint_nom(S1,S,INF,SUP,_,A,P,G,N):-
	sint_nom(S1,S,INF,SUP,d,A1,P,G,N),
	monta_arv(A,e_sint_nom,[A1]).

sint_nom(S1,S,INF,SUP,_,A,3,mas,sin):-
	sint_orac(S1,S,INF,SUP,d,A1,nom,inf),
	monta_arv(A,sint_nom,[A1]).

sint_nom(S1,S,INF,SUP,_,A,3,G,N):-
	subst(S2,S,INF,SUP,d,A2,_,_,G,N,_),
	det(S1,S2,INF,S2,e,A1,G,N),
	monta_arv(A,sint_nom,[A1,A2]).

sint_verb(S1,S,INF,SUP,_,A,fin,ind,P,N):-
	verbo(S1,S,INF,SUP,d,A1,_,_,fin,ind,_,P,N),
	monta_arv(A,sint_verb,[A1]),
        write(['sint_verb_1',S1,S]),nl.

sint_verb(S1,S,INF,SUP,_,A,nom,inf,P,N):-
	verbo(S1,S,INF,SUP,d,A1,_,_,nom,inf,pes,P,N),
	monta_arv(A,sint_verb,[A1]),
        write(['sint_verb_2',S1,S]),nl.

det(S1,S,INF,SUP,_,A,G,N):-
	art(S1,S,INF,SUP,d,A1,_,_,def,G,N),
	monta_arv(A,det,[A1]).

adj(S1,S,INF,SUP,_,A,PAL,CAN,G,N,Gr):-
	x_adj(S1,S,PAL,CAN,G,N,Gr),
	INF =< S1,
	SUP >= S,
	monta_arv(A,adjetivo,[PAL]).

x_adj(0,0,_,_,_,_,_).

adv(S1,S,INF,SUP,_,A,PAL,CAN,TAdv,Gr):-
	x_adv(S1,S,PAL,CAN,TAdv,Gr),
	INF =< S1,
	SUP >= S,
	monta_arv(A,adverbio,[PAL]).

x_adv(0,0,_,_,_,_).

art(S1,S,INF,SUP,_,A,PAL,CAN,Tart,G,N):-
	x_art(S1,S,PAL,CAN,Tart,G,N),
	INF =< S1,
	SUP >= S,
	monta_arv(A,artigo,[PAL]).

x_art(0,0,_,_,_,_,_).

avos(S1,S,INF,SUP,_,A,PAL,CAN,G,N):-
	x_avos(S1,S,PAL,CAN,G,N),
	INF =< S1,
	SUP >= S,
	monta_arv(A,avos,[PAL]).

x_avos(0,0,_,_,_,_).

cod(S1,S,INF,SUP,_,A,PAL,CAN,TCod,G,N):-
	x_cod(S1,S,PAL,CAN,TCod,G,N),
	INF =< S1,
	SUP >= S,
	monta_arv(A,codificacao,[PAL]).

x_cod(0,0,_,_,_,_,_).

coord(S1,S,INF,SUP,_,A,PAL,CAN,TCoord,GCoord,C):-
	x_coord(S1,S,PAL,CAN,TCoord,GCoord,C),
	INF =< S1,
	SUP >= S,
	monta_arv(A,coordenador,[PAL]).

x_coord(0,0,_,_,_,_,_).

comp(S1,S,INF,SUP,_,A,PAL,CAN,TComp):-
	x_comp(S1,S,PAL,CAN,TComp),
	INF =< S1,
	SUP >= S,
	monta_arv(A,comparador,[PAL]).

x_comp(0,0,_,_,_).

conj(S1,S,INF,SUP,_,A,PAL,CAN,TConj,FV,MV):-
	x_conj(S1,S,PAL,CAN,TConj,FV,MV),
	INF =< S1,
	SUP >= S,
	monta_arv(A,conjuncao,[PAL]).

x_conj(0,0,_,_,_,_,_).

interj(S1,S,INF,SUP,_,A,PAL,CAN,TInterj):-
	x_interj(S1,S,PAL,CAN,TInterj),
	INF =< S1,
	SUP >= S,
	monta_arv(A,interjeicao,[PAL]).

x_interj(0,0,_,_,_).

nome(S1,S,INF,SUP,_,A,PAL,CAN,G,N):-
	x_nome(S1,S,PAL,CAN,G,N),
	INF =< S1,
	SUP >= S,
	monta_arv(A,nome_proprio,[PAL]).

x_nome(0,0,_,_,_,_).

num(S1,S,INF,SUP,_,A,PAL,CAN,TNum,GNum,F,G,N,ONum):-
	x_num(S1,S,PAL,CAN,TNum,GNum,F,G,N,ONum),
	INF =< S1,
	SUP >= S,
	monta_arv(A,numeral,[PAL]).

x_num(0,0,_,_,_,_,_,_,_,_).

pont(S1,S,INF,SUP,_,A,PAL,CAN,TPont):-
	x_pont(S1,S,PAL,CAN,TPont),
	INF =< S1,
	SUP >= S,
	monta_arv(A,pontuacao,[PAL]).

x_pont(0,0,_,_,_).

prep(S1,S,INF,SUP,_,A,PAL,CAN):-
	x_prep(S1,S,PAL,CAN),
	INF =< S1,
	SUP >= S,
	monta_arv(A,preposicao,[PAL]).

x_prep(0,0,_,_).

pron(S1,S,INF,SUP,_,A,PAL,CAN,TPron,F,P,G,N):-
	x_pron(S1,S,PAL,CAN,TPron,F,P,G,N),
	INF =< S1,
	SUP >= S,
	monta_arv(A,pronome,[PAL]).

x_pron(0,0,_,_,_,_,_,_,_).

pron(S1,S,INF,SUP,_,A,PAL,CAN,TPron,F,P,G,N,PPron):-
	x_pron(S1,S,PAL,CAN,TPron,F,P,G,N,PPron),
	INF =< S1,
	SUP >= S,
	monta_arv(A,pronome,[PAL]).

x_pron(0,0,_,_,_,_,_,_,_,_).

pron(S1,S,INF,SUP,_,A,PAL,CAN,TPron,F,P,G,N,P2,N2):-
	x_pron(S1,S,PAL,CAN,TPron,F,P,G,N,P2,N2),
	INF =< S1,
	SUP >= S,
	monta_arv(A,pronome,[PAL]).

x_pron(0,0,_,_,_,_,_,_,_,_,_).

rel(S1,S,INF,SUP,_,A,PAL,CAN,FE,FI,P,G,N):-
	x_rel(S1,S,PAL,CAN,FE,FI,P,G,N),
	INF =< S1,
	SUP >= S,
	monta_arv(A,relativo,[PAL]).

x_rel(0,0,_,_,_,_,_,_,_).

sigla(S1,S,INF,SUP,_,A,PAL,CAN,G,N):-
	x_sigla(S1,S,PAL,CAN,G,N),
	INF =< S1,
	SUP >= S,
	monta_arv(A,sigla,[PAL]).

x_sigla(0,0,_,_,_,_).

simb(S1,S,INF,SUP,_,A,PAL,CAN):-
	x_simb(S1,S,PAL,CAN),
	INF =< S1,
	SUP >= S,
	monta_arv(A,simbolos,[PAL]).

x_simb(0,0,_,_).

subst(S1,S,INF,SUP,_,A,PAL,CAN,G,N,Gr):-
	x_subst(S1,S,PAL,CAN,G,N,Gr),
	INF =< S1,
	SUP >= S,
	monta_arv(A,substantivo,[PAL]).

x_subst(0,0,_,_,_,_,_).

verbo(S1,S,INF,SUP,_,A,PAL,CAN,FV,MV,TV,P,N):-
	x_verbo(S1,S,PAL,CAN,FV,MV,TV,P,N),
	INF =< S1,
	SUP >= S,
	monta_arv(A,verbo,[PAL]).

x_verbo(0,0,_,_,_,_,_,_,_).

