my $grammar = q~ logic: expression eod expression: termop: /and/i | /xor/i | /or/i term: '(' expression ')' | condition condition: element comparison element element: '<' /-?\w+/ '>' | /\d+/ comparison: /=[><]=/ | /=?[><]=?/ | '=' | '!=' eod: /^\Z/ ~;