Uma gramática simples sem concordâncias

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, à]).