query ::= ( patternFilter | booleanFilter | numericFilter | boundedListFilter | unboundedListFilter | dateFilter )*
patternFilter ::= (patternField patternOp patternVal)
patternField ::= ('url' | 'metadata')
patternOp ::= (':' | '=' )
patternSearchValues ::= (string)
booleanFilter ::= (booleanField booleanOp booleanVal)
booleanField ::= ('with_visit')
booleanOp ::= ('=' | ':')
booleanVal ::= ('true' | 'false')
numericFilter ::= (numericField numericOp numericVal)
numericField ::= ('nb_visits' | 'limit')
numericOp ::= (rangeOp)
numericVal ::= (numbers)
boundedListFilter ::= (visitTypeFilter | sortByFilter)
visitTypeFilter ::= (visitTypeField visitTypeOp visitTypeVal)
visitTypeField ::= "visit_types"
visitTypeOp ::= ":"
visitTypeVal ::= ('[' visitTypeOptions ("," visitTypeOptions)* ']')
visitTypeOptions ::= ("any" | "cran" | "deb" | "deposit" | "ftp" | "hg" | "git" | "nixguix" | "npm" | "pypi" | "svn" | "tar")
sortByFilter ::= (sortByField sortByOp sortByVal)
sortByField ::= "sort_by"
sortByOp ::= ":"
sortByVal ::= ('[' sortByOptions ("," sortByOptions)* ']')
sortByOptions ::= ('nb_visits' | 'last_visit_date' | 'last_eventful_visit_date' | 'last_revision_date' | 'last_release_date' | 'date_created' | 'date_modified' |
'date_published')
unboundedListFilter ::= (listField listOp listVal)
listField ::= ('programming_languages' | 'licenses' | 'keywords')
listOp ::= ('in' | 'not in')
listVal ::= (list)
dateFilter ::= (dateField dateOp dateVal)
dateField ::= ('last_visit_date' | 'last_eventful_visit_date' | 'last_revision_date' | 'last_release_date' | 'date_created' | 'date_modified' | 'date_published')
dateOp ::= (rangeOp)
dateVal ::= (date)
list ::= '[' string ("," string)* ']'
date ::= 'DATE_REGEX'
rangeOp ::= ('<' | '<=' | '=' | '!=' | '>=' | '>')
numbers ::= [0-9]+
string ::= ( word | ['] words ['] | ["] words ["])
words ::= (word ( )* )*
word ::= [0-9A-Za-z_.]+