New, empty WPF app for Fools.cs. No tests or anything; just the app.
Restored the BSD license.
Grunt inited a Fools.js. Just like Grunt built it. Have not yet coffeed it.
I can now lint, test, compile, and minify my project, using grunt. It all works!
Extracted per-test-file boilerplate to a common location. This lets me later add more plugins & test libraries without having to update all the test files.
Added a trivial test.
I want this project to be a regular DLL. Removing it so that I can create it the new way.
Created a few more projects. And changed the one trivial test to expect a parse tree instead of just an enumerable of string.
Starting to work towards block parsing...again.
Now we are parsing all sorts of things. There are problems with the language still, but it handles indentation (at least, it handles correct indentation. No errors are given for bad indentation).
Cleanup. Removed some dead code. Make some things a little prettier.
Also Fools now allows blank lines.
Now with some reasonably good error reporting. I have file, line, error type, snippet, and so on. Currently detects one kind of inconsistent indentation.
Now we get error reporting if people try to include spaces in their indentation.
The pass block now works. Also the message for an unrecognized statement is a little better. It doesn't differentiate between a statement and a block yet, but it's a start.
Trying to get better error messages when we parse a block which has no body. Currently it lists the offending non-body line of code. I want it to list the block header (and possibly the subsequent line).
Can now report errors and continue trying to parse. This lets me report multiple errors from one run. Among other things, this is a step towards making it easier to figure out what went wrong with bad blocks.
Better error reporting for bad blocks. Gives the wrong line number, but it is close. And it doesn't screw up the error reporting for anything else.
Starting to add some types for the AST nodes. They are no longer just object & IList<object>. Not a lot better - most are just Node. But at least disambiguates the strings from the nodes.
More particular error reporting. Require declarations at the top level, and require at least one. This required updating all the tests, since I'd mostly been using if expressions as my top-level blocks before. And that's not legal Fools.
Now top level declarations are required to be...Declarations. In the type system and everything.
More explicit error messages for unrecognized stuff at the top level. Important because only declarations are allowed here and people may be writing perfectly valid statements.