可以匹配类似 Github 的搜索表达式,如
author:hungtcs keyword| grammar Expr; | |
| fragment ESC: '\\' .; | |
| fragment DIGIT: [0-9]; | |
| WS: [ \t\r\n]+ -> skip; | |
| COMMA: ','; | |
| EXCLUDE: '-'; | |
| KEYWORLD: ~[ \t\r\n:,-]+; | |
| QUOTED_STRING: '"' (ESC | ~["\\])* '"'; | |
| GT: ':>'; | |
| LT: ':<'; | |
| EQ: ':'; | |
| NE: ':!='; | |
| GE: ':>='; | |
| LE: ':<='; | |
| DATE: DIGIT DIGIT DIGIT DIGIT '-' DIGIT DIGIT '-' DIGIT DIGIT; | |
| filters: (tagsFilter | userFilter | authorFilter | createdFilter | keywordFilter)+ EOF; | |
| date: DATE; | |
| keyword: KEYWORLD | QUOTED_STRING; | |
| keywordFilter: keyword (COMMA keyword)*; | |
| tag: KEYWORLD | QUOTED_STRING; | |
| tags: tag (COMMA tag)*; | |
| tagsFilter: 'tags' EQ tags; | |
| userFilter: 'user' EQ keyword; | |
| authorFilter: 'author' EQ keyword; | |
| createdFilter: 'created' createdOperation date; | |
| createdOperation: (GT | LT | EQ | NE | GE | LE); |