1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81
|
diag :-
new(D, dialog('Analyseur Syntaxique')),
send(D, append,
new(ExprItem, text_item('Saisissez votre requête '))),
send(D, append, new(Resultat, label(''))),
send(D, append,
button(envoyer, message(@prolog, requetes, ExprItem?selection, Resultat))),
send(D, append,
button(quitter, message(D, destroy))),
send(D, open).
requetes(ExprItem,Resultat) :-
send(Resultat, selection, ExprItem). %ne renvoie normalement que le contenue du champ d'entrée
requete([tournes|L]):- etat11(L). %si présence en 1er mot de la phrase du mot tournes, alors l'automate passe à l'état 11 soit l'état terminal. l'automate va donc reconnaitre la phrase constituée du seul mot tournes.
requete([avances|L]):- etat11(L).
requete([stop|L]):- etat11(L).
requete([tournes|L]):- etat8(L). %si présence du mot tournes en 1er, passage à l'état 8 de l'automate.
requete([avances|L]):- etat8(L).
requete([stop|L]):- etat8(L).
requete([avancer|L]):- etat2(L).
requete([avances|L]):- etat2(L).
requete([tourner|L]):- etat2(L).
requete([tournes|L]):- etat2(L).
requete([pivoter|L]):- etat2(L).
requete([pivotes|L]):- etat2(L).
requete([aller|L]):- etat2(L).
requete([va|L]):- etat2(L).
requete([machine|L]):- etat3(L).
requete([robot|L]):- etat3(L).
requete([je|L]):- etat9(L).
requete([nous|L]):- etat4(L).
etat2(['à gauche'|L]) :- etat11(L).
etat2(['à droite'|L]) :- etat11(L).
etat2([devant|L]) :- etat11(L).
etat2(['à gauche'|L]) :- etat8(L).
etat2(['à droite'|L]) :- etat8(L).
etat2([devant|L]) :- etat8(L).
etat3([avancer|L]) :- etat2(L).
etat3([avances|L]) :- etat2(L).
etat3([tourner|L]) :- etat2(L).
etat3([tournes|L]) :- etat2(L).
etat3([pivoter|L]) :- etat2(L).
etat3([pivotes|L]) :- etat2(L).
etat3([aller|L]) :- etat2(L).
etat3([va|L]) :- etat2(L).
etat4([te|L]) :- etat5(L).
etat4(['t\''|L]) :- etat12(L).
etat5([demandons|L]) :- etat6(L).
etat6([de|L]) :- etat7(L).
etat7([tourner|L]) :- etat2(L).
etat7([avancer|L]) :- etat2(L).
etat7([pivoter|L]) :- etat2(L).
etat8(['s\'il te plait'|L]) :- etat11(L). %suite au mot exemple tournes on arrive ici et si l'analyseur reconnait s'il te plait ou je te prie on arrive dans l'état final.
etat8(['je te prie'|L]) :- etat11(L).
etat9([te|L]) :- etat10(L).
etat9(['t\''|L]) :- etat13(L).
etat10([demande|L]) :- etat6(L).
etat12([ordonnons|L]) :- etat6(L).
etat13([ordonne|L]) :- etat6(L).
etat11([]). % état final de l'automate, fin de l'analyse de la phrase si pas d'autres mots derrières et donc return true pour le prompt prolog |
Partager