Changeset 6868 for FCS-QL


Ignore:
Timestamp:
12/15/15 12:53:16 (8 years ago)
Author:
Leif-Jöran
Message:

Further simplified AST and working within part

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  
    2424OPERATOR_NE: '!=';
    2525COLON: ':';
     26WITHIN: 'within';
    2627
    27 REGEXP_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 */
    34     ;
    35 
    36 REGEXP
    37     : QUOTED_STRING
    38     ;
    39 
    40 //SIMPLE_ATTRIBUTE
    41 //    : IDENTIFIER
    42 //    ;
    43 
    44 //QUALIFIED_ATTRIBUTE
    45 //    :  IDENTIFIER ':' IDENTIFIER
    46 //    ;
    47 
    48 IDENTIFIER
    49     : IDENTIFIER_FIRST_CHAR IDENTIFIER_CHAR*
    50     ; 
    51 
    52 fragment IDENTIFIER_FIRST_CHAR
    53     : [a-zA-Z]
    54     ;
    55 
    56 fragment IDENTIFIER_CHAR
    57     : [a-zA-Z0-9\-]
    58     ;
    59 
    60 INTEGER
    61     : [0-9+]
    62     ;
    63 
    64 WITHIN: 'within';
    6528
    6629SIMPLE_WITHIN_SCOPE
     
    7740    ;
    7841
     42
     43REGEXP_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
     53fragment IDENTIFIER_FIRST_CHAR
     54    : [a-zA-Z]
     55    ;
     56
     57
     58fragment IDENTIFIER_LAST_CHAR
     59    : [a-zA-Z0-9]
     60    ;
     61
     62
     63fragment IDENTIFIER_CHAR
     64    : [a-zA-Z0-9\-]
     65    ;
     66
     67
     68IDENTIFIER
     69    : IDENTIFIER_FIRST_CHAR (IDENTIFIER_CHAR* IDENTIFIER_LAST_CHAR)?
     70    ; 
     71
     72
     73INTEGER
     74    : [0-9]+
     75    ;
     76
     77
     78REGEXP
     79    : QUOTED_STRING
     80    ;
     81
     82
    7983/* // doesnt work
    8084QUOTED_STRING
     
    8488*/
    8589
     90
    8691QUOTED_STRING
    8792    : '\'' (ESCAPED_CHAR | ~['\\])* '\''
    8893    | '"' (ESCAPED_CHAR | ~["\\])* '"'
    8994    ;
     95
    9096
    9197fragment CHAR
     
    98104    ;
    99105
     106
    100107/* any unicode whitespace */
    101108fragment WS: '\u0009' | '\u000A' | '\u000B' | '\u000C' | '\u000D' | '\u0020' | '\u0085'
     
    104111  | '\u2029' | '\u202F' | '\u205F' | '\u3000'
    105112  ;
     113
    106114
    107115fragment ESCAPED_CHAR
     
    118126    ;
    119127
     128
    120129fragment HEX
    121130    : [0-9a-fA-F]
    122131    ;
    123132
     133
    124134Space
    125135    : WS -> skip
  • FCS-QL/trunk/src/main/antlr4/eu/clarin/sru/fcs/qlparser/FCSParser.g4

    r6865 r6868  
    44 * Parser for FCS Core FCS-QL version 2.0
    55 * 20150501- /ljo
    6  */
     6 */
     7
    78query
    89    : main_query (WITHIN within_part)? EOF
    910    ;
    1011
    11 /* for debugging */
    12 parse
    13   :  (t=.   
    14           {System.out.printf("text: %-7s  type: %s \n", 
    15            $t.text, tokenNames[$t.type]);} 
    16      )*
    17   ;
    18 
    1912
    2013main_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
    2518    ;
    2619
     
    5750
    5851query_implicit
    59     : flagged_regexp
     52    : regexp
    6053    ;
    6154
     
    6760
    6861within_part
    69     : simple_within_part
     62    : within_part_simple
    7063    ;
    7164
    7265
    73 simple_within_part
     66within_part_simple
    7467    : SIMPLE_WITHIN_SCOPE
    7568    ;
     
    109102
    110103expression_basic
    111     : attribute (OPERATOR_EQ | OPERATOR_NE) flagged_regexp
     104    : attribute (OPERATOR_EQ | OPERATOR_NE) regexp
    112105    ;
     106
    113107
    114108attribute
     
    116110    ;
    117111
     112
    118113qualifier
    119114    : (IDENTIFIER | WITHIN | SIMPLE_WITHIN_SCOPE | REGEXP_FLAGS)
    120115    ;
     116
    121117
    122118identifier
     
    124120    ;
    125121
    126 flagged_regexp
    127     : REGEXP (FWD_SLASH REGEXP_FLAGS)?
     122
     123regexp
     124    : regexp_pattern (FWD_SLASH regexp_flag)?
    128125    ;
     126
     127
     128regexp_pattern
     129    : REGEXP
     130    ;
     131
     132
     133regexp_flag
     134    : REGEXP_FLAGS
     135    ;
Note: See TracChangeset for help on using the changeset viewer.