Playing with xml
XML is a convenient way to define external DSL. On one of my previous posts ( Filtering using Scala Parser Combinators ) I used parser combinators JavaTokenParsers with PackratParsers This time I will use different approach using XML . XML is easy to handle by non-developers and easy to read. We can query XML using XPATH like expressions and using pattern matching. In this post we will define some business rules using XML and we will treat our XML as first class citizen. Source code can be found here . let's define our DSL : Our rules will use AND/OR operators but to make it more interesting, our operators will not use the following pattern: <expression><operator><expression> (where expression evaluates to boolean). because XML have opening and closing tags we can define something like : <operator><expression1><expression2>...<expression N></operator> now we can define our AND/OR o...