This is a simple demo app for the Query and Report DSLs. Just enter a query and/or report definition, and hit "Go!" to get the report parsed and see a CFDUMP of the generated data structure.

Query:
Report:
q - component andcriterion
        implements criterion
RIGHT
q - component orcriterion
        implements criterion
LEFT
q - component simplecriterion
        implements criterion
NEGATED NO
VALUE poop
FIELD action
RIGHT
q - component simplecriterion
        implements criterion
VALUE pee
FIELD action
NEGATED NO
LEFT
q - component andcriterion
        implements criterion
LEFT
q - component andcriterion
        implements criterion
RIGHT
q - component simplecriterion
        implements criterion
FIELD name
VALUE lucifer
NEGATED NO
LEFT
q - component simplecriterion
        implements criterion
VALUE cat
NEGATED NO
FIELD type
RIGHT
q - component simplecriterion
        implements criterion
FIELD location
NEGATED YES
VALUE litter box
q.left.left.left.field = type
q.left.right.value = litter box
q.left.right.negated = YES
report - struct
aggregates
report - array
1
report - struct
CRITERION
report - component orcriterion
        implements criterion
LEFT
report - component simplecriterion
        implements criterion
NEGATED NO
VALUE anastasia
FIELD owner
RIGHT
report - component simplecriterion
        implements criterion
NEGATED NO
FIELD owner
VALUE drizella
QUERY owner:anastasia OR owner:drizella
VALUE Step-Sisters
conditions
report - array
1
report - struct
CRITERION
report - component simplecriterion
        implements criterion
VALUE cinderella
NEGATED NO
FIELD owner
QUERY owner:cinderella
VALUE Cinderella
2
report - struct
CRITERION
report - component simplecriterion
        implements criterion
VALUE anastasia
FIELD owner
NEGATED NO
QUERY owner:anastasia
VALUE Anastasia
3
report - struct
CRITERION
report - component simplecriterion
        implements criterion
NEGATED NO
FIELD owner
VALUE drizella
QUERY owner:drizella
VALUE Drizella
coreCriterion
report - component simplecriterion
        implements criterion
VALUE chore
NEGATED NO
FIELD type
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));