in reply to Parsing with regular expressions

Yes, regex matching is really good at discovering either complete success or no possible success. It's not as good at "chewing up" an input as far as possible then stopping so you can see what to chew up next. It can do it, but it's not obvious what kind of looping structure you'd need for most simple projects.

The book, Mastering Regular Expressions, has quite a few real-world and contrived examples of how to do this token-by-token parsing, chewing up the input and accepting different constructs according to state.

The module, Parse::RecDescent, has a lot of power in developing parsing logic from a grammar of possible valid inputs. If you've used YACC, you'll find this familiar. If you've not explored such structured grammars, it can be daunting without examples.

--
[ e d @ h a l l e y . c c ]