cRulesFile:
    FILE
    {                       // filter.rulesFile receives the name of the file
        beginRules();       // start processing a rules file.
    }
;

cFile:
    cRulesFile rules        // inspect the rules of a rule file
|
    FILE                    // no file switching anymore, skip the filename
;

cHdr:
    HDR
    {                       // filter.setHeader receives the name of the hdr.
        hdr();              // select the matching mail hdrs.
    }
;

condTerm:            
    cHdr cFile       // cFile switches file and handles its rules
    {                
        condTerm();       // filter.matchCondition handles 'optNot'
    }
;

condition:
    condition AND condTerm
|
    condTerm
;
