Changes made to JFLAP - Jan 15, 2005

JFLAP 4.0b13, January 15, 2005 FIXES * For SLR(1) parsing, it was possible to define on certain specially constructed grammars a parse table that under certain inputs would result in an infinite loop. JFLAP previously simply ran out of memory as it generated an infinite parse tree. Now the user will be presented with a dialog when it looks like the parse tree is getting suspiciously large, allowing them to terminate the parse. * PDAs previously had the restriction that they could only have alphanumeric characters for input read, pops and pushes. This restriction has been removed since this is inconsistent with other structures, and led to problems with conversions of grammars to NPDAs. * For unit production removal, use of "complete selected" would result in an internal inconsitency that produced wrong numbers for the number of productions to remove. * Fixed a transient graphical glitch in table highlights in SLR parsing when one enters a new string to parse during the parsing of another string. * All the editors had an alternate Haiku documentation. L-systems did not because I created that editor later. Seeing my mistake I addressed this oversight so stop complaining! * Under some circumstances the automatic conversion from RE to FA would fall into an infinite loop, which has been fixed. FEATURES & OTHER NON-BUG CHANGES * Made SLR(1) parsing so that, under fully automatic generation of the parse table, the parse table that was derived had states in fully predictable positions. * Added a "multiple run (transducer)" action for simulation of Turing machines. This is identical to the "multiple runs" action, except it also displays the output of the Turing machine if you are interested in using the Turing machine as a transducer. * Added the ability to view the trace of a run in the "multiple run" action. * The ability to open the original JFLAP 4 beta files has been removed. * The FA to RE converter tended to add lots of unnecessary parentheses. It now tries to limit parentheses additions to necessary cases.