I do wonder why all this seems to be a little forgotten. Granted, the syntax and semantics are a bit unusual, but the expressive power can hardly be matched.
Your link lightly addresses one of my questions about using DCGs for parsing. How hard is it to get a sensible error message out of a DCG parser? I've basically written off LALR parsers because getting a reasonable error message out of them is about as much fun as repeatedly poking yourself in the eye with a sharp stick. Good old recursive decent using precedence climbing for expressions seems to be more maintainable in the long run for production parsers.
Prolog is my scripting language of choice for personal projects. Like HN uses a custom Lisp, I prefer doing stuff with my custom Prolog. But then, i'm a curmudgeonly old fart.
Looks like it was written in the year 2000 so it is more than likely it was written on a UNIX system and used the .C suffix. I can't really tell though.
Agreed, but I would take this further. To call this C++ and be using character arrays for strings rather than std::string and performing manual memory management suggests this is "C with Classes" at best, notwithstanding the fact that it HEAP allocates a bunch of stuff that it never reclaims.
I understand this isn't a code review and I'm not trying to be critical but it's saddens me to see poor C++ code being shown online because that's partly responsible for the bad rap of the language - I know there are other reasons, but this doesn't help.
It wouldn't necessary be much different if using C++11. Maybe using unique_ptr instead of new, etc.
It certainly _could_ be a lot different, using a more functional approach, but it likely wouldn't be, and would remain a basic OO program dressed in new syntax.
He also has theory papers explaining the architecture. For example: http://logic.cse.unt.edu/tarau/research/NewJinniPapers/fluen...