s --> sn, sv. % O rato roeu a rolha
sn_atomico
--> pronome.
% Eu | Quem
sn_atomico --> expr_nominal.
% Portugal
sn_atomico --> det, expr_nominal. % a garrafa roxa
sn_basico
--> sn_atomico.
sn_basico --> sn_atomico, sp.
% a garrafa roxa de rum
lista_de_sns
--> sn_basico.
lista_de_sns --> sn_basico, lista_de_sns.
sn
--> sn_basico.
sn --> lista_de_sns, conj, sn.
% um copo, a garrafa de rum e a garrafa encarnada
sp
--> prep, sn.
% de rum
sv
--> vi.
% morreu
sv --> vt, sn.
% roeu
a garrafa de rum
sv --> vi, sp. % caiu de pé
sv --> vi, sadv.
%
morreu dignamente
sadv
--> adverbio.
expr_nominal
--> nome_proprio.
expr_nominal --> nome_comum.
expr_nominal --> nome_comum, adjectivo.
prep-->[de]; [a]; [em].
prep([X|Resto], [Det|Resto]):-
prep_art(X, Det).
prep_art(X, o):- member(X, [no, do, ao]).
prep_art(X, a):- member(X, [na, da, à]).