The error means an AVM was encountered whose depth (longest path of features to get to something) exceeded 1024, an arbitrary limit ACE used to flag that something unintended is probably happening. I recommend parsing with -vvv, which will dump the feature structures to the terminal as it goes. Redirecting to a log file is a good idea, as you will get a LOT of output. Towards the bottom you will almost certainly find some phenomenally huge AVMs with a repeating chain of substructures. This means some rule is spinning. The log will tell you which rule produced the AVM right before it prints it. Situations like this sometimes involve two or more rules alternating with each other, so you might need to look back and try to find the pattern of rule applications. You will have to keep track of edge numbers in the log to do that. It will almost certainly be one or more unary rules — possibly, as Emily suggested, a lexical/orthographemic rule, but I wouldn’t guarantee it.
In the LKB, the best way to debug this is to turn off packing
(setq *chart-packing-p* nil)
and reduce the edge limit, e.g.
(setq *maximum-number-of-edges* 200)
so the parser stops itself quickly. Otherwise it could get into a cycle of building and copying ever larger feature structures and getting slower and slower, never reaching the edge limit; this can happen with the new append list mechanism.
Once the parser has run into the edge limit, view the chart. In the graphical view, you might see a long horizontal line of rule applications. If so, this shows you the group of unary rules that are applying to each other circularly. Alternatively, print the chart to the terminal window, by
and look for repeated lines.
@olzama, if this doesn’t do the trick, please email me your grammar and I’ll investigate and come up with an alternative debugging strategy.
@johnca, I know I’ve asked this before but for the life of me I can’t locate the answer. (Hopefully, having the answer here will help in the future.) In LKB-FOS, how do I get access to the terminal? I’ve seen it open a couple times, actually, but most of the time it doesn’t, and I only have the GUI.
@olzama, you don’t get access to a terminal if you start the LKB by double-clicking LKB.app. To get a terminal, create an xterm from XQuartz or run Terminal.app, and then start the LKB by typing the name of the unix binary on the command line; you can then run Lisp expressions from that terminal.
Co-incidentally, I’m in the process of adding to LKB-FOS a new menu command “Evaluate lisp expression…”, which will come preloaded with a few common commands to make this easier.