Looking for SHRDLU Prolog clone with working code

I’ve been reading a bit about Terry Winograd’s SHRDLU program and found this note:

[ Henrik Prebensen ] ([hp@hum.ku.dk](mailto: hp@hum.ku.dk)) wrote [Blockhead], a SHRDLU-like program written in Turbo Prolog with a graphical interface and documented in the book “The Advanced User’s Guide to Turbo Prolog”. Rudimentary blocks world programs are a common demo of natural language programming in Prolog, such as this code included in POPLOG.


Unfortunately, the link to Blockhead has rotted away and I can’t find anything about it online. I was wondering if anyone can point me either to Blockhead or a similar piece of software mimicking or re-implementing SHRDLU’s functionality in Prolog.

I’m primarily interested in SHRDLU’s natural language parser. I had a look at Terry Winograd’s thesis and a companion document that lays out the structure of the grammar in flowcharts. It might be possible to re-implement the original parser from these flowcharts (as indeed some people have done in the past) but that’s a long-ish term project and my immediate purposes would be better served by an existing implementation that can run in Swi-Prolog with a bit of modification (or more). I’d be grateful if anyone knows of anything like that (and would be willing to tell me about it).

I found this on page 79, but it is not in English.

Still looking.

Thanks, that’s interesting. Unfortunately I don’t speak German, but I’ll have a look to see if I can find a version of the paper in English. It’ll be nice to read.

I’m really looking for working code though. I had a look at the Poplog code mentioned in the article and it starts with a grammar in a peculiar lisp-like syntax that is easy to translate to a DCG, so I did. Would anyone be interested in it? Should I just dump it here for future reference?

1 Like

Why don’t you just e-mail him and ask him?

Well, I assumed the email address will be dead like the other links but it doesn’t hurt to try, cheers.

Peter Ljunglöf, a colleague of mine, once wrote a conference paper that may be of interest to you, although it’s not the original SHRDLU parser:


The implementation is available here:

1 Like

Thank you, that is perfect, exactly what I was hoping to find.

Edit: I’ll contact Peter to say “thank you” once I know exactly how I will use his work :slight_smile:

1 Like

I think you found what you wanted but just in case: here’s a link with code to a version of SHRDLU in LISP.

FWIW: I’ve been working on a similar type of system, but I have used the English Resource Grammar for converting Natural Language to predicates and then implemented the predicates in SWI Prolog. A demo of it running is here, background on how it was built is here.


Thanks for these links. I’m not aware of SHRDLU for Prolog. I am aware of chat80 that seems related. APE also comes to mind.

Thanks for this, I think the ERG is a terrific resource. I’ll have a look at your demo with great interest.

And sorry for the delay. I’m rubbish at replying to messages timely :frowning: