Recently I wrote an interpreter for operations on sparse matrices (a sparse matrix calculator) in lex/yacc.  The language is still very bare bones and doesn't even include control structures or parameterized subroutines, yet it is already at several thousand lines of code, and that's not including the matrix classes.  In particular, the yacc file is close to two thousand lines in length.  Because of this I'm finding it quite difficult to work on.  Is this normal or is there a way I can simplify things?If you want to review my code, it can be found at:http://sourceforge.net/projects/msci/files/libpetey/
How do I simplify a compiler/interpreter?
compiler;dsl