I have a scripting engine I just published as an open source project. It's been sitting on my harddrive waiting for about a year. My engine of course isn't complete in any way, but it does work for simple scripts. It has a javascript-ish feel to it, but I don't wish to abide by the ECMA spec or anything. Now, the big thing I'm working on is improving code quality while leaving the language working as it is(which I have a few regression tests to prove). It doesn't have a formal grammar at all and works like so:Preprocess/Tokenize. At this point it removes whitespace and cuts everything into tokens, which is basically just a structure containing a string and a rough hint as to what the token is (Number, Identifier, Operation, etc) and some debugging info such as line numberA ScriptingEngine class which takes the list of tokens and actually parses them and executes themAn ExpressionEvaluator class which will take a subset of the tokens list and build a specific tree of operations, values, and then execute operations and such and collapse the tree down into a single valueMy engine has the goals of being portable(works everywhere .Net does) and self-contained. So far, this works, but the code is terrible and I'm pretty sure that I'm going about it the wrong way. I'm wondering if a formal grammar and everything that goes with it might helpSome benefits I've heard of being more formal with grammarUnambiguous specification of the languageEasier to maintain/changeMore traditional/Bigger community support? And some of the disadvantagesSome languages can be very difficult to reduce to a formal grammar, ie Perl.A learning curve for someone not in the know(ie, me) Generally rely on tools such as yacc and ANTLR, which introduce another step in your workflow and/or add dependencies(which I'd like to avoid)Although this project is in .Net, it could equally apply to any other implementing language. Should I use a formal grammar? Can someone expand on the pros/cons of both sides? 
Should I use a formal grammar for my interpreted scripting language
language agnostic;language design;scripting;parsing;grammar