2003-04-02 14:57:50 +01:00
|
|
|
=================================================================
|
|
|
|
Logtalk - Object oriented extension to Prolog
|
2005-05-24 00:33:41 +01:00
|
|
|
Release 2.25.0
|
2003-04-02 14:57:50 +01:00
|
|
|
|
2005-01-13 12:22:42 +00:00
|
|
|
Copyright (c) 1998-2005 Paulo Moura. All Rights Reserved.
|
2003-04-02 14:57:50 +01:00
|
|
|
=================================================================
|
|
|
|
|
|
|
|
|
2004-06-13 19:04:28 +01:00
|
|
|
% start by loading the example:
|
|
|
|
|
2004-11-29 20:36:31 +00:00
|
|
|
| ?- logtalk_load(dcgs(loader)).
|
2004-06-13 19:04:28 +01:00
|
|
|
...
|
|
|
|
|
|
|
|
|
2003-04-02 14:57:50 +01:00
|
|
|
% DCG rules implementing a simple calculator:
|
|
|
|
|
|
|
|
| ?- calculator::parse("1+2-3*4", Result).
|
|
|
|
|
|
|
|
Result = -9
|
|
|
|
yes
|
|
|
|
|
|
|
|
|
2004-06-06 23:46:45 +01:00
|
|
|
% recognizing gramatically correct sentences:
|
2003-04-02 14:57:50 +01:00
|
|
|
|
|
|
|
| ?- sentence::parse([the, girl, likes, the, boy], Result).
|
|
|
|
|
|
|
|
Result = true
|
|
|
|
yes
|
|
|
|
|
|
|
|
| ?- sentence::parse([the, girl, scares, the, boy], Result).
|
|
|
|
|
|
|
|
Result = false
|
|
|
|
yes
|
|
|
|
|
|
|
|
|
2004-06-06 23:46:45 +01:00
|
|
|
% generating parse trees for sentences:
|
2003-04-02 14:57:50 +01:00
|
|
|
|
|
|
|
| ?- parsetree::parse([the, girl, likes, the, boy], Tree).
|
|
|
|
|
2004-09-30 21:28:42 +01:00
|
|
|
Tree = s(np(d(the), n(girl)), vp(v(likes), np(d(the), n(boy))))
|
2003-04-02 14:57:50 +01:00
|
|
|
yes
|
2003-07-09 01:20:55 +01:00
|
|
|
|
|
|
|
|
2004-06-06 23:46:45 +01:00
|
|
|
% bill of materials example:
|
|
|
|
|
|
|
|
| ?- bom::parts(bike, L).
|
|
|
|
|
|
|
|
L = [frame, crank, pedal, pedal, chain, spokes, rim, hub, spokes, rim, hub]
|
|
|
|
yes
|
|
|
|
|
|
|
|
| ?- bom::parts(wheel, L).
|
|
|
|
|
|
|
|
L = [spokes, rim, hub]
|
|
|
|
yes
|
|
|
|
|
|
|
|
|
|
|
|
% parsing command-line shell input:
|
|
|
|
|
|
|
|
| ?- shell::parse("pwd; cd ..; ls -a", L).
|
|
|
|
|
|
|
|
L = [pwd,'cd ..','ls -a'] ?
|
|
|
|
|
|
|
|
yes
|
|
|
|
|
|
|
|
|
|
|
|
% walker movements:
|
|
|
|
|
|
|
|
| ?- walker::walk([n(5), e(4), s(2), nw(8), s(5), se(1), n(4)], Ending).
|
|
|
|
|
|
|
|
Ending = -0.94974746830583223,6.9497474683058318 ?
|
|
|
|
|
|
|
|
yes
|
|
|
|
|
|
|
|
|
|
|
|
% conversion between compound terms and XML:
|
2003-07-09 01:20:55 +01:00
|
|
|
|
|
|
|
| ?- xml::convert(word(child, children), word(singular, plural), XML).
|
|
|
|
|
|
|
|
XML = '<word><singular>child</singular><plural>children</plural></word>'
|
|
|
|
yes
|
|
|
|
|
|
|
|
| ?- xml::convert(Term, Interpretation, '<word><singular>child</singular><plural>children</plural></word>').
|
|
|
|
|
|
|
|
Term = word(child, children)
|
|
|
|
Interpretation = word(singular, plural)
|
|
|
|
yes
|
|
|
|
|
|
|
|
|
2004-06-06 23:46:45 +01:00
|
|
|
% parsing URLs:
|
2003-07-09 01:20:55 +01:00
|
|
|
|
|
|
|
| ?- url::parse("http://www.logtalk.org", Components).
|
|
|
|
|
|
|
|
Components = [protocol(http), address([www, logtalk, org]), path([]), file('')]
|
|
|
|
yes
|
|
|
|
|
|
|
|
| ?- url::parse("http://www.logtalk.org/", Components).
|
|
|
|
|
|
|
|
Components = [protocol(http), address([www, logtalk, org]), path(['']), file('')]
|
|
|
|
yes
|
|
|
|
|
|
|
|
| ?- url::parse("http://www.logtalk.org/cvs", Components).
|
|
|
|
|
|
|
|
Components = [protocol(http), address([www, logtalk, org]), path([cvs]), file('')]
|
|
|
|
yes
|
|
|
|
|
|
|
|
| ?- url::parse("http://www.logtalk.org/cvs.html", Components).
|
|
|
|
|
|
|
|
Components = [protocol(http), address([www, logtalk, org]), path([]), file('cvs.html')]
|
|
|
|
yes
|
|
|
|
|
|
|
|
| ?- url::parse("http://193.136.64.5/files/update", Components).
|
|
|
|
|
|
|
|
Components = [protocol(http), address([193, 136, 64, 5]), path([files, update]), file('')]
|
|
|
|
yes
|
2004-06-06 23:46:45 +01:00
|
|
|
|
|
|
|
|
|
|
|
% command language example:
|
|
|
|
|
2004-09-30 21:28:42 +01:00
|
|
|
| ?- faa::main.
|
2004-06-06 23:46:45 +01:00
|
|
|
Fly Amzi! Air
|
|
|
|
enter command> list flights
|
|
|
|
aa101
|
|
|
|
aa102
|
|
|
|
aa103
|
|
|
|
enter command> book elana aa102
|
|
|
|
enter command> book tom aa102
|
|
|
|
enter command> list passengers aa102
|
|
|
|
elana
|
|
|
|
tom
|
|
|
|
enter command> exit
|
|
|
|
yes
|
2004-09-30 21:28:42 +01:00
|
|
|
|
|
|
|
|
|
|
|
% double bypass using the {}/1 control constructs of grammar rules and Logtalk:
|
|
|
|
|
2004-10-17 23:37:16 +01:00
|
|
|
| ?- bypass::phrase(foo, _, _).
|
|
|
|
|
2004-09-30 21:28:42 +01:00
|
|
|
bar predicate called
|
|
|
|
yes
|
|
|
|
|
|
|
|
|
|
|
|
% run the Logtalk DCG translator on the test cases:
|
|
|
|
|
|
|
|
| ?- dcgtest::run.
|
|
|
|
|
|
|
|
...
|