Changeset 6868
- Timestamp:
- 12/15/15 12:53:16 (8 years ago)
- Location:
- FCS-QL/trunk/src/main/antlr4/eu/clarin/sru/fcs/qlparser
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
FCS-QL/trunk/src/main/antlr4/eu/clarin/sru/fcs/qlparser/FCSLexer.g4
r6865 r6868 24 24 OPERATOR_NE: '!='; 25 25 COLON: ':'; 26 WITHIN: 'within'; 26 27 27 REGEXP_FLAGS28 : ( 'i' /* case-insensitive; Poliqarp/Perl compat */29 | 'I' /* case-sensitive; Poliqarp compat */30 | 'c' /* case-insensitive, CQP compat */31 | 'C' /* case-sensitive */32 | 'l' /* literal matching, CQP compat*/33 | 'd')+ /* diacritic agnostic matching, CQP compat */34 ;35 36 REGEXP37 : QUOTED_STRING38 ;39 40 //SIMPLE_ATTRIBUTE41 // : IDENTIFIER42 // ;43 44 //QUALIFIED_ATTRIBUTE45 // : IDENTIFIER ':' IDENTIFIER46 // ;47 48 IDENTIFIER49 : IDENTIFIER_FIRST_CHAR IDENTIFIER_CHAR*50 ;51 52 fragment IDENTIFIER_FIRST_CHAR53 : [a-zA-Z]54 ;55 56 fragment IDENTIFIER_CHAR57 : [a-zA-Z0-9\-]58 ;59 60 INTEGER61 : [0-9+]62 ;63 64 WITHIN: 'within';65 28 66 29 SIMPLE_WITHIN_SCOPE … … 77 40 ; 78 41 42 43 REGEXP_FLAGS 44 : ( 'i' /* case-insensitive; Poliqarp/Perl compat */ 45 | 'I' /* case-sensitive; Poliqarp compat */ 46 | 'c' /* case-insensitive, CQP compat */ 47 | 'C' /* case-sensitive */ 48 | 'l' /* literal matching, CQP compat*/ 49 | 'd')+ /* diacritic agnostic matching, CQP compat */ 50 ; 51 52 53 fragment IDENTIFIER_FIRST_CHAR 54 : [a-zA-Z] 55 ; 56 57 58 fragment IDENTIFIER_LAST_CHAR 59 : [a-zA-Z0-9] 60 ; 61 62 63 fragment IDENTIFIER_CHAR 64 : [a-zA-Z0-9\-] 65 ; 66 67 68 IDENTIFIER 69 : IDENTIFIER_FIRST_CHAR (IDENTIFIER_CHAR* IDENTIFIER_LAST_CHAR)? 70 ; 71 72 73 INTEGER 74 : [0-9]+ 75 ; 76 77 78 REGEXP 79 : QUOTED_STRING 80 ; 81 82 79 83 /* // doesnt work 80 84 QUOTED_STRING … … 84 88 */ 85 89 90 86 91 QUOTED_STRING 87 92 : '\'' (ESCAPED_CHAR | ~['\\])* '\'' 88 93 | '"' (ESCAPED_CHAR | ~["\\])* '"' 89 94 ; 95 90 96 91 97 fragment CHAR … … 98 104 ; 99 105 106 100 107 /* any unicode whitespace */ 101 108 fragment WS: '\u0009' | '\u000A' | '\u000B' | '\u000C' | '\u000D' | '\u0020' | '\u0085' … … 104 111 | '\u2029' | '\u202F' | '\u205F' | '\u3000' 105 112 ; 113 106 114 107 115 fragment ESCAPED_CHAR … … 118 126 ; 119 127 128 120 129 fragment HEX 121 130 : [0-9a-fA-F] 122 131 ; 123 132 133 124 134 Space 125 135 : WS -> skip -
FCS-QL/trunk/src/main/antlr4/eu/clarin/sru/fcs/qlparser/FCSParser.g4
r6865 r6868 4 4 * Parser for FCS Core FCS-QL version 2.0 5 5 * 20150501- /ljo 6 */ 6 */ 7 7 8 query 8 9 : main_query (WITHIN within_part)? EOF 9 10 ; 10 11 11 /* for debugging */12 parse13 : (t=.14 {System.out.printf("text: %-7s type: %s \n",15 $t.text, tokenNames[$t.type]);}16 )*17 ;18 19 12 20 13 main_query 21 : query_simple /* #simpleQuery */22 | query_group /* #queryGroup */23 | query_sequence /* #querySequence */24 | query_disjunction /* #queryDisjunction */14 : query_simple 15 | query_group 16 | query_sequence 17 | query_disjunction 25 18 ; 26 19 … … 57 50 58 51 query_implicit 59 : flagged_regexp52 : regexp 60 53 ; 61 54 … … 67 60 68 61 within_part 69 : simple_within_part62 : within_part_simple 70 63 ; 71 64 72 65 73 simple_within_part 66 within_part_simple 74 67 : SIMPLE_WITHIN_SCOPE 75 68 ; … … 109 102 110 103 expression_basic 111 : attribute (OPERATOR_EQ | OPERATOR_NE) flagged_regexp104 : attribute (OPERATOR_EQ | OPERATOR_NE) regexp 112 105 ; 106 113 107 114 108 attribute … … 116 110 ; 117 111 112 118 113 qualifier 119 114 : (IDENTIFIER | WITHIN | SIMPLE_WITHIN_SCOPE | REGEXP_FLAGS) 120 115 ; 116 121 117 122 118 identifier … … 124 120 ; 125 121 126 flagged_regexp 127 : REGEXP (FWD_SLASH REGEXP_FLAGS)? 122 123 regexp 124 : regexp_pattern (FWD_SLASH regexp_flag)? 128 125 ; 126 127 128 regexp_pattern 129 : REGEXP 130 ; 131 132 133 regexp_flag 134 : REGEXP_FLAGS 135 ;
Note: See TracChangeset
for help on using the changeset viewer.