define( fact, ( n ), function(
cond( ( n = 0 || n = 1, 1 )
( n > 1, n * fact(n-1) )
)
)
print( fact( 5 ) )
I think I'd try to program in language like that. Lisp way of thinking, but parenthesis are bit more helpful and there are "normaly" used operators which makes language bit more readable.
Your project looks like another purely academic example. I think purely academic examples sucks because don't teach people to do what is actualy needed.I didn't read your code carefully, but "endles" elsif chains looks terrible and I think there shouldn't be stuff like that in tutorial project. Moreover I believe java isn't good tool for that purpouse( another nobody seems to teach ). I'd use flex and bison or perl if you realy want to implement lexical analisis yourself..