Today was a huge overhaul to the string/language generation algorithms that I came up with last week. One of the biggest improvements was the replacing of the Brute Parsing method with CYK/LL(1) parsing to increase the speed, and just assuming that the Brute Force method will only be used on grammars that aren't context-free. Also, I implemented a way to get strings of specified lengths, either all or a specified maximum amount, that a language can derive. Julian's file system is up now, so I was able to test it integrating with that, as well as being constructed with Regex, FSA, or Grammars. That process functioned as a great test for Julian's code as well as my own, and resulted in a lot of debugging. With this as complete as it is, I think our next task will be sets, and language specific terms like reverse, concatination, etc. Soon, will be the visualization, and that's going to be a challenge of its own.
Got a look at what the GUI might be something like today! As my swing knowledge is a little lacking, I decided to try to build a fairly simple visualization of the CYK parser with input fields, steps, step to completion, and tables, and used an eclipse plugin to help with that. It came out quite well, actually, but after checking out Julian's, that's much better. As his interface is almost done, I'll probably just build on that instead of building mine from scratch, but seeing how things interact gave me ideas for what I want to do. I also worked some more on the set/language set packages to add more fuctionality such as concatination, positve/star closure, and reversing of languages.
Did a lot of GUI work today, working on my temporary GUI, improving, and writing methods to integrate for the new, real one. I also did a lot of reading, online and through old code, to prepare for writing as much of the GUI as possible. I think it will be a challenge, but will be quite satisfying and doable, plus it will be good for Julian to have some help and to have some people here after he leaves who know JFLAP 8.0 code in and out. Should start on that tomorrow, so hopefully today has prepared me!
Today I focused a lot on languages, and how we might represent them for interactive visualization. What we can up with was something similar to the pumping lemmas, where we have a number of premade languages that can be played around with (ie. union, intersection, generation of strings of length x) as well as allowing for some simple user input to create new sets. These would include a lot of mathematic sets, as those are the easiest to modify based on user input. Hopefully we'll have a wide variety for users to interact with.
Took a break from languages today and left them up to Peggy so that I could help get Turing machines translated to the new JFLAP framework. Julian had done most of the initial things, the automaton, transitions, etc, so I started working on some algorithms for transforming existing Turing machines, including removal of S-transitions and TM to grammar conversion. I will continue working on this after the weekend.