可以匹配类似 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); |