rules: predicate: - tautology - contradiction - identifier - qualified_identifier - var - not - and - or - eq - neq - lt - lte - gt - gte - in - exists - intersect - subset - superset - match - native - empty - has_size #jeny(predicate) - ${op_name} tautology: - [ true ] contradiction: - [ false ] identifier: - [ name ] qualified_identifier: - [ name, name ] var: - [ formaldef, semantics ] not: - [ predicate ] and: - [ predicate+ ] or: - [ predicate+ ] eq: - [ term, term ] neq: - [ term, term ] lt: - [ term, term ] lte: - [ term, term ] gt: - [ term, term ] gte: - [ term, term ] in: - [ varref, term ] intersect: - [ term, term ] subset: - [ term, term ] superset: - [ term, term ] match: - [ term, term, options ] empty: - [ term ] has_size: - [ term, term ] #jeny(predicate) ${op_name}: #jeny(predicate) - [ TODO ] term: - varref - literal - placeholder - opaque - exists varref: - qualified_identifier - identifier - var native: - [ "::Proc" ] literal: - "::Object" placeholder: - "::Predicate::Placeholder" opaque: - "::Object" exists: - "::Object" handler: - "::Object" options: - "::Hash" name: !ruby/regexp /^[a-zA-Z0-9_]+[?!]?$/ semantics: !ruby/regexp /^(dig)$/ formaldef: - string_formaldef - array_formaldef string_formaldef: - "::String" array_formaldef: - "::Array"