2 votes

traduire le prologue en anglais formel

J'essaie d'écrire un programme qui traduit une phrase de prologue en une phrase anglaise formelle. Voici mon code :

sentence --> [if],[the], first_phrase, second_phrase.
first_phrase -->  predicate, det , assertion, det, noun.
second_phrase --> [then],[the], predicate, det , noun.
assertion --> noun, [and], [the], predicate.
det --> [are].
det --> [is].

noun --> [flat].
noun --> [webbed].
noun -->[waterfowl].
predicate --> [feet].
predicate --> [bill].
predicate -->[order].

sentence(S1,S3) :- first_phrase(S1,S2), second_phrase(S2,S3).
first_phrase(S1,S3) :- second_phrase(S1,S2), noun(S2,S3).
second_phrase(S1,S3) :- assertion(S1,S2), first_phrase(S2,S3).
det([is|X], X).
det([are|X], X).

le résultat de ce code est le suivant : X = [si, les, pieds, sont, plats, et, les, pieds, sont| ] il manque donc quelques mots, où il devrait afficher quelque chose comme ceci : Si les pieds sont palmés et que le bec est plat, alors l'ordre est celui du gibier d'eau.

Que dois-je ajouter ou corriger pour obtenir ce résultat ?

0voto

gusbro Points 7993

Ajoutez ce code à votre fichier de code source :

remove_max_depth:-
    current_prolog_flag(toplevel_print_options,Options),
    select(max_depth(_), Options, NOptions)->
    set_prolog_flag(toplevel_print_options, NOptions); true.

:-remove_max_depth.

Procédure remove_max_depth supprimera la contrainte sur le nombre maximum d'éléments à afficher au niveau supérieur, et la directive :-remove_max_depth. exécutera la procédure lorsque vous consulterez le fichier.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X