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

Simplified AST

File:
1 edited

Legend:

Unmodified
Added
Removed
  • 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.