Hi Macon,
You can make some highly flexible DSL's by using regular expressions and DSL
entry chaining.
See the following for an example:
http://blog.athico.com/2008/06/allowing-variable-masks-in-dsl-grammar.html
*
So the above rules could be partially rewritten as:
rule "Monetary 1"
Given the following rules (contrived example):
rule "Monetary 1"
when
Currency(typeID in (CurrencyConst.DOLLAR,
CurrencyConst.EURO, CurrencyConst.YEN))
then
insert(new Fact());
end
rule "Monetary 2"
when
Currency(typeID in (C