PigLexer.g

lexer grammar PigLexer;

@header {
package pig;
}

@members {
}

DEFINE : 'define'
;

LOAD   : 'load'
;

FILTER : 'filter'
;

FOREACH : 'foreach'
;

ORDER   :  'order'
;

ARRANGE : 'arrange'
;

DISTINCT : 'distinct'
;

COGROUP : 'cogroup'
;

JOIN : 'join'
;

CROSS : 'cross'
;

UNION : 'union'
;

SPLIT : 'split'
;

INTO : 'into'
;

IF : 'if'
;

ALL : 'all'
;

ANY : 'any'
;

AS : 'as'
;

BY : 'by'
;

USING : 'using'
;

INNER : 'inner'
;

OUTER : 'outer'
;

ONSCHEMA : 'ONSCHEMA'
;

STAR : '*'
;

PARALLEL : 'parallel'
;

PARTITION : 'partition'
;

GROUP : 'group'
;

AND : 'and'
;

OR : 'or'
;

NOT : 'not'
;

GENERATE : 'generate'
;

FLATTEN : 'flatten'
;

EVAL : 'eval'
;

ASC : 'asc'
;

DESC : 'desc'
;

INT : 'int'
;

LONG : 'long'
;

FLOAT : 'float'
;

DOUBLE : 'double'
;

CHARARRAY : 'chararray'
;

BYTEARRAY : 'bytearray'
;

BAG : 'bag'
;

TUPLE : 'tuple'
;

MAP : 'map'
;

IS : 'is'
;

NULL : 'null'
;

STREAM : 'stream'
;

THROUGH : 'through'
;

STORE : 'store'
;

MAPREDUCE : 'mapreduce'
;

SHIP : 'ship'
;

CACHE : 'cache'
;

INPUT : 'input'
;

OUTPUT : 'output'
;

ERROR : 'stderr'
;

STDIN : 'stdin'
;

STDOUT : 'stdout'
;

LIMIT : 'limit'
;

SAMPLE : 'sample'
;

LEFT : 'left'
;

RIGHT : 'right'
;

FULL : 'full'
;

fragment DIGIT : '0'..'9'
;

fragment LETTER : 'a'..'z' | 'A'..'Z'
;
    
fragment SPECIALCHAR : '_'
;
   
fragment FSSPECIALCHAR : '-' | ':' | '/'
;

IDENTIFIER: LETTER ( DIGIT | LETTER | SPECIALCHAR | '::' )*
;

fragment FLOATINGPOINT : INTEGER ( '.' INTEGER )? | '.' INTEGER 
;
    
INTEGER: ( DIGIT )+
;

LONGINTEGER: INTEGER ( 'l' | 'L' )?
;
    
DOUBLENUMBER : FLOATINGPOINT ( ('e' | 'E') ( '-' | '+' )? FLOATINGPOINT )?
;
    
FLOATNUMBER : DOUBLENUMBER ('f' | 'F')?
;

QUOTEDSTRING :  '\'' (   (~('\'' | '\\' | '\n' | '\r'))
  | ('\\'
      ( ('n' | 't' | 'b' | 'r' | 'f' | '\\' | '\'') )
    )
  | ('\\u'
        ('0'..'9' | 'A'..'F' | 'a'..'f')
        ('0'..'9' | 'A'..'F' | 'a'..'f')
        ('0'..'9' | 'A'..'F' | 'a'..'f')
        ('0'..'9' | 'A'..'F' | 'a'..'f')
    ) )*
'\''
;

EXECCOMMAND : '`' (~('`'))* '`'
;
    
DOLLAR : '$'
;
            
WS  :  ( ' ' | '\r' | '\t' | '\u000C' | '\n' ) { $channel = 99; }
;
    
SL_COMMENT : '--' (~('\r' | '\n'))* { $channel = 99; }
        ;

ML_COMMENT : '/*' (options {greedy=false;} : .)* '*/' { $channel = HIDDEN; }
;

fragment STRFILTEROP : 'eq' | 'gt' | 'lt' | 'gte' | 'lte' | 'neq' | 'matches'
;
    
fragment NUMFILTEROP : '==' | '<' | '<=' | '>' | '>=' | '!='
;
    
FILTEROP : STRFILTEROP | NUMFILTEROP
;
    
SEMI_COLON : ';'
;
    
LEFT_PAREN : '('
;
    
RIGHT_PAREN : ')'
;

LEFT_CURLYP : '{'
;

RIGHT_CURLYP : '}'
;

LEFT_BRACKET : '['
;
    
RIGHT_BRACKET : ']'
;

POUND : '#'
;

EQUAL : '='
;

COMMA : ','
;

PERIOD : '.'
;

DIV : '/'
;

PERCENT : '%'
;

PLUS : '+'
;

MINUS : '-'
;

QMARK : '?'
;

PigLexer (last edited 2010-10-08 22:16:18 by XuefuZhang)