Changeset 6865 for FCS-QL


Ignore:
Timestamp:
12/09/15 17:49:23 (8 years ago)
Author:
Leif-Jöran
Message:

Simplified AST

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

    r6863 r6865  
    77 */
    88
    9 LPAREN: '(';
    10 RPAREN: ')';
     9L_PAREN: '(';
     10R_PAREN: ')';
    1111L_SQUARE_BRACKET: '[';
    1212R_SQUARE_BRACKET: ']';
     
    1515NOT: '!';
    1616FWD_SLASH: '/';
     17L_CURLY_BRACKET: '{';
     18R_CURLY_BRACKET: '}';
     19Q_ONE_OR_MORE: '+';
     20Q_ZERO_OR_MORE: '*';
     21Q_ZERO_OR_ONE: '?';
     22Q_COMMA: ',';
     23OPERATOR_EQ: '=';
     24OPERATOR_NE: '!=';
     25COLON: ':';
    1726
    18 OPERATOR
    19     : '='
    20     | '!='
     27REGEXP_FLAGS
     28    : ( '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 */
    2134    ;
    22 
    23 QUANTIFIER
    24     : '+'                           /* one-or-more */
    25     | '*'                           /* zero-or-more */
    26     | '?'                           /* zero-or-one */
    27     | '{' INTEGER '}'               /* exactly n-times */
    28     | '{' INTEGER? ',' INTEGER '}'  /* at most */
    29     | '{' INTEGER ',' INTEGER? '}'  /* min-max */
    30     ;   
    3135
    3236REGEXP
     
    3438    ;
    3539
    36 SIMPLE_ATTRIBUTE
    37     : IDENTIFIER
    38     ;
    39 QUALIFIED_ATTRIBUTE
    40     :  IDENTIFIER ':' IDENTIFIER
    41     ;
     40//SIMPLE_ATTRIBUTE
     41//    : IDENTIFIER
     42//    ;
     43
     44//QUALIFIED_ATTRIBUTE
     45//    :  IDENTIFIER ':' IDENTIFIER
     46//    ;
    4247
    4348IDENTIFIER
     
    7075    | 'text'
    7176    | 'session'
    72     ;
    73 
    74 REGEXP_FLAG
    75     : 'i'  /* case-insensitive; Poliqarp/Perl compat */
    76     | 'I'  /* case-sensitive; Poliqarp compat */
    77     | 'c'  /* case-insensitive, CQP compat */
    78     | 'C'  /* case-sensitive */
    79     | 'l'  /* literal matching, CQP compat*/
    80     | 'd'  /* diacritic agnostic matching, CQP compat */
    8177    ;
    8278
     
    129125    : WS -> skip
    130126    ;
    131 
  • FCS-QL/trunk/src/main/antlr4/eu/clarin/sru/fcs/qlparser/FCSParser.g4

    r6815 r6865  
    66 */
    77query
    8     : main_query within_part?
     8    : main_query (WITHIN within_part)? EOF
    99    ;
    1010
     
    1717  ;
    1818
    19 //main_query
    20 //    : simple_query
    21 //    | main_query OR main_query     /* or */
    22 //    | main_query main_query         /* sequence */
    23 //    | main_query QUANTIFIER         /* quatification */
    24 //    ;
    2519
    2620main_query
    27     : simple_query
    28     | simple_query OR main_query     /* or */
    29     | simple_query main_query         /* sequence */
    30     | simple_query QUANTIFIER         /* quatification */
     21    : query_simple /* #simpleQuery */
     22    | query_group /* #queryGroup */
     23    | query_sequence /* #querySequence */
     24    | query_disjunction /* #queryDisjunction */
    3125    ;
    3226
    33 /*
    34 simple_query
    35     : implicit_query
    36     | segment_query
    37     ;
    38 */
    3927
    40 simple_query
    41     : LPAREN main_query RPAREN            /* grouping */
    42     | implicit_query
    43     | segment_query
     28query_disjunction
     29    : (query_simple | query_sequence | query_group)
     30            (OR (query_simple | query_sequence | query_group))+
    4431    ;
    4532
    46 implicit_query
     33
     34query_sequence
     35    : (query_simple | query_group)+
     36    ;
     37
     38
     39query_group
     40    : L_PAREN (query_disjunction | query_sequence) R_PAREN quantifier?
     41    ;
     42
     43
     44query_simple
     45    : (query_implicit | query_segment) quantifier?
     46    ;
     47
     48
     49quantifier
     50    : (Q_ONE_OR_MORE | Q_ZERO_OR_MORE | Q_ZERO_OR_ONE |
     51        ( L_CURLY_BRACKET
     52            (INTEGER |
     53             INTEGER? Q_COMMA INTEGER |
     54             INTEGER Q_COMMA INTEGER?) R_CURLY_BRACKET))
     55    ;
     56
     57
     58query_implicit
    4759    : flagged_regexp
    4860    ;
    4961
    50 segment_query
     62
     63query_segment
    5164    : L_SQUARE_BRACKET expression? R_SQUARE_BRACKET     /* [ expression? ] */
    5265    ;
     66
    5367
    5468within_part
     
    5670    ;
    5771
     72
    5873simple_within_part
    59     : WITHIN SIMPLE_WITHIN_SCOPE
    60     ;
    61 
    62 //expression
    63 //    : basic_expression          # basicExpression
    64 //    | expression OR expression  # orExpression /* or */
    65 //    | expression AND expression # andExpression /* and */
    66 //    | LPAREN expression RPAREN  # groupedExpression /* grouping */
    67 //    | NOT expression            # notExpression /* not */
    68 //    ;
    69 
    70 expression
    71     : basic_expression          # basicExpression
    72     | expression OR expression  # orExpression /* or */
    73     | expression AND expression # andExpression /* and */
    74     ;
    75 
    76 /*
    77 basic_expression
    78     : attribute OPERATOR flagged_regexp
    79     ;
    80 */
    81 
    82 basic_expression
    83     : LPAREN expression RPAREN  # groupedExpression /* grouping */
    84     | NOT expression            # notExpression /* not */
    85     | attribute OPERATOR flagged_regexp #basicAttrOpFlaggedRegex
     74    : SIMPLE_WITHIN_SCOPE
    8675    ;
    8776
    8877
     78expression
     79    : expression_basic
     80    | expression_not
     81    | expression_group
     82    | expression_or
     83    | expression_and
     84    ;
     85
     86
     87expression_or
     88    : (expression_basic | expression_group | expression_not | expression_and)
     89        (OR (expression_basic | expression_group | expression_not | expression_and))+
     90    ;   
     91
     92
     93expression_and
     94    : (expression_basic | expression_group | expression_not)
     95        (AND (expression_basic | expression_group | expression_not))+
     96    ;   
     97
     98
     99
     100expression_group
     101    : L_PAREN (expression_basic | expression_not | expression_or | expression_and) R_PAREN
     102    ;
     103
     104
     105expression_not
     106    : NOT (expression_basic | expression_not | expression_or | expression_and)
     107    ;
     108
     109
     110expression_basic
     111    : attribute (OPERATOR_EQ | OPERATOR_NE) flagged_regexp
     112    ;
     113
    89114attribute
    90     : SIMPLE_ATTRIBUTE    # simpleAttribute
    91     | QUALIFIED_ATTRIBUTE # qualifiedAttribute
     115    : (qualifier COLON)? identifier
     116    ;
     117
     118qualifier
     119    : (IDENTIFIER | WITHIN | SIMPLE_WITHIN_SCOPE | REGEXP_FLAGS)
     120    ;
     121
     122identifier
     123    : (IDENTIFIER | WITHIN | SIMPLE_WITHIN_SCOPE | REGEXP_FLAGS)
    92124    ;
    93125
    94126flagged_regexp
    95     : REGEXP         # regexp
    96     | REGEXP FWD_SLASH REGEXP_FLAG+ # flaggedRegexp
     127    : REGEXP (FWD_SLASH REGEXP_FLAGS)?
    97128    ;
Note: See TracChangeset for help on using the changeset viewer.