blob: db405d2a9d925f017683067d4490d19862bd1447 [file] [log] [blame]
lexer grammar RutaLexer;
options {
language = Java;
}
tokens {
DocComment;
Annotation;
ListIdentifier;
}
@lexer::header {
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
package org.apache.uima.ruta.ide.core.parser;
}
@lexer::members {
public int implicitLineJoiningLevel = 0;
public int startPos=-1;
public void emitErrorMessage(String msg) {
}
}
TRIE
: 'TRIE'
;
CONTAINS
: 'CONTAINS'
;
DECLARE
: 'DECLARE'
;
WORDLIST
: 'WORDLIST'
;
WORDTABLE
: 'WORDTABLE'
;
RESOURCE
: 'RESOURCE'
;
AND
: 'AND'
;
CONTEXTCOUNT
: 'CONTEXTCOUNT'
;
COUNT
: 'COUNT'
;
TOTALCOUNT
: 'TOTALCOUNT'
;
CURRENTCOUNT
: 'CURRENTCOUNT'
;
INLIST
: 'INLIST'
;
LAST
: 'LAST'
;
MOFN
: 'MOFN'
;
NEAR
: 'NEAR'
;
OR
: 'OR'
;
PARTOF
: 'PARTOF'
;
PARTOFNEQ
: 'PARTOFNEQ'
;
POSITION
: 'POSITION'
;
REGEXP
: 'REGEXP'
;
SCORE
: 'SCORE'
;
VOTE
: 'VOTE'
;
IF
: 'IF'
;
FEATURE
: 'FEATURE'
;
PARSE
: 'PARSE'
;
CREATE
: 'CREATE'
;
GATHER
: 'GATHER'
;
FILL
: 'FILL'
;
ATTRIBUTE
: 'ATTRIBUTE'
;
COLOR
: 'COLOR'
;
DEL
: 'DEL'
;
LOG
: 'LOG'
;
MARK
: 'MARK'
;
MARKSCORE
: 'MARKSCORE'
;
MARKONCE
: 'MARKONCE'
;
MARKFAST
: 'MARKFAST'
;
MARKTABLE
: 'MARKTABLE'
;
MARKLAST
: 'MARKLAST'
;
MARKFIRST
: 'MARKFIRST'
;
REPLACE
: 'REPLACE'
;
RETAINTYPE
: 'RETAINTYPE'
;
FILTERTYPE
: 'FILTERTYPE'
;
CALL
: 'CALL'
;
EXEC
: 'EXEC'
;
CONFIGURE
: 'CONFIGURE'
;
ASSIGN
: 'ASSIGN'
;
SETFEATURE
: 'SETFEATURE'
;
GETFEATURE
: 'GETFEATURE'
;
UNMARK
: 'UNMARK'
;
UNMARKALL
: 'UNMARKALL'
;
TRANSFER
: 'TRANSFER'
;
SHIFT
: 'SHIFT'
;
SPLIT
: 'SPLIT'
;
DYNAMICANCHORING
: 'DYNAMICANCHORING'
;
GREEDYANCHORING
: 'GREEDYANCHORING'
;
TRIM
: 'TRIM'
;
BEFORE
: 'BEFORE'
;
AFTER
: 'AFTER'
;
IS
: 'IS'
;
STARTSWITH
: 'STARTSWITH'
;
ENDSWITH
: 'ENDSWITH'
;
ADDRETAINTYPE
: 'ADDRETAINTYPE'
;
REMOVERETAINTYPE
: 'REMOVERETAINTYPE'
;
ADDFILTERTYPE
: 'ADDFILTERTYPE'
;
REMOVEFILTERTYPE
: 'REMOVEFILTERTYPE'
;
NOT
: 'NOT'
;
ADD : 'ADD';
REMOVE : 'REMOVE';
REMOVEDUPLICATE : 'REMOVEDUPLICATE';
MERGE : 'MERGE';
GET : 'GET';
GETLIST : 'GETLIST';
SIZE : 'SIZE';
MATCHEDTEXT : 'MATCHEDTEXT';
REMOVESTRING : 'REMOVESTRING';
CLEAR : 'CLEAR';
THEN
: '->'
;
THEN2
: '<-'
;
LogLevel:
'finest' | 'finer' | 'fine' | 'config' | 'info' | 'warning' | 'severe'
;
OldColor
: 'black' | 'maroon' | 'green' | 'olive' | 'navy' | 'purple' | 'teal' | 'gray' | 'silver' | 'red' | 'lime' | 'yellow' | 'blue' | 'fuchsia' | 'aqua'
;
PackageString : 'PACKAGE';
ScriptString : 'SCRIPT';
EngineString : 'ENGINE';
UimafitString : 'UIMAFIT';
BlockString : 'BLOCK';
ForEachString : 'FOREACH';
TypeString : 'TYPE';
IntString : 'INT';
DoubleString : 'DOUBLE';
FloatString : 'FLOAT';
StringString : 'STRING';
BooleanString : 'BOOLEAN';
TypeSystemString: 'TYPESYSTEM';
ImportString : 'IMPORT';
FromString : 'FROM';
AsString : 'AS';
SymbolString : 'SYMBOL';
CONDITION : 'CONDITION';
ACTION : 'ACTION';
VAR : 'VAR';
BOOLEANLIST
: 'BOOLEANLIST';
INTLIST : 'INTLIST';
DOUBLELIST
: 'DOUBLELIST';
FLOATLIST
: 'FLOATLIST';
STRINGLIST
: 'STRINGLIST';
TYPELIST: 'TYPELIST';
ANNOTATION
: 'ANNOTATION';
ANNOTATIONLIST
: 'ANNOTATIONLIST';
EXP : 'EXP';
LOGN : 'LOGN';
SIN : 'SIN';
COS : 'COS';
TAN : 'TAN';
POW : 'POW';
XOR : 'XOR';
TRUE : 'true';
FALSE : 'false';
NULL : 'null';
ADDRESS_PREFIX
: '$';
STARTANCHOR
: '@';
OPTIONAL : '_' ;
HexLiteral : '0' ('x'|'X') HexDigit+ IntegerTypeSuffix? ;
DecimalLiteral : ('0' | '1'..'9' '0'..'9'*) IntegerTypeSuffix? ;
OctalLiteral : '0' ('0'..'7')+ IntegerTypeSuffix? ;
fragment
HexDigit : ('0'..'9'|'a'..'f'|'A'..'F') ;
fragment
IntegerTypeSuffix : ('l'|'L') ;
FloatingPointLiteral
: ('0'..'9')+ '.' ('0'..'9')* Exponent? FloatTypeSuffix?
| '.' ('0'..'9')+ Exponent? FloatTypeSuffix?
//| ('0'..'9')+ Exponent FloatTypeSuffix?
//| ('0'..'9')+ Exponent? FloatTypeSuffix
;
fragment
Exponent : ('e'|'E') ('+'|'-')? ('0'..'9')+ ;
fragment
FloatTypeSuffix : ('f'|'F'|'d'|'D') ;
CharacterLiteral
: '\'' ( EscapeSequence | ~('\''|'\\') ) '\''
;
StringLiteral
: '"' ( EscapeSequence | ~('\\'|'"') )* '"'
;
RessourceLiteral
: '\'' ( EscapeSequence | ~('\\'|'\'') )* '\''
;
fragment
EscapeSequence
: '\\' ('b'|'t'|'n'|'f'|'r'|'\"'|'\''|'\\')
| UnicodeEscape
| OctalEscape
;
fragment
OctalEscape
: '\\' ('0'..'3') ('0'..'7') ('0'..'7')
| '\\' ('0'..'7') ('0'..'7')
| '\\' ('0'..'7')
;
fragment
UnicodeEscape
: '\\' 'u' HexDigit HexDigit HexDigit HexDigit
;
Identifier
: Letter (Letter|JavaIDDigit)*
;
fragment
Letter
:
'\u0041'..'\u005a' |
'\u005f' |
'\u0061'..'\u007a' |
'\u00c0'..'\u00d6' |
'\u00d8'..'\u00f6' |
'\u00f8'..'\u00ff' |
'\u0100'..'\u1fff' |
'\u3040'..'\u318f' |
'\u3300'..'\u337f' |
'\u3400'..'\u3d2d' |
'\u4e00'..'\u9fff' |
'\uf900'..'\ufaff'
;
fragment
JavaIDDigit
: '\u0030'..'\u0039' |
'\u0660'..'\u0669' |
'\u06f0'..'\u06f9' |
'\u0966'..'\u096f' |
'\u09e6'..'\u09ef' |
'\u0a66'..'\u0a6f' |
'\u0ae6'..'\u0aef' |
'\u0b66'..'\u0b6f' |
'\u0be7'..'\u0bef' |
'\u0c66'..'\u0c6f' |
'\u0ce6'..'\u0cef' |
'\u0d66'..'\u0d6f' |
'\u0e50'..'\u0e59' |
'\u0ed0'..'\u0ed9' |
'\u1040'..'\u1049'
;
LPAREN : '(' {implicitLineJoiningLevel++;} ;
RPAREN : ')' {implicitLineJoiningLevel--;} ;
LBRACK : '[' {implicitLineJoiningLevel++;} ;
RBRACK : ']' {implicitLineJoiningLevel--;} ;
LCURLY : '{' {implicitLineJoiningLevel++;} ;
RCURLY : '}' {implicitLineJoiningLevel--;} ;
CIRCUMFLEX : '^' ;
DOT : '.' ;
COLON : ':' ;
COMMA : ',' ;
SEMI : ';' ;
PLUS : '+' ;
MINUS : '-' ;
STAR : '*' ;
SLASH : '/' ;
VBAR : '|' ;
AMPER : '&' ;
LESS : '<' ;
GREATER : '>' ;
ASSIGN_EQUAL : '=' ;
PERCENT : '%' ;
QUESTION : '?' ;
EQUAL : '==' ;
NOTEQUAL : '!=' ;
ALT_NOTEQUAL: '<>' ;
LESSEQUAL : '<=' ;
GREATEREQUAL : '>=' ;
WILDCARD : '#' ;
WS : (' '|'\r'|'\t'|'\u000C'|'\n') {$channel=HIDDEN;}
;
COMMENT
: '/*'{if (input.LA(1)=='*') $type=DocComment; else $channel=HIDDEN;} ( options {greedy=false;} : . )* '*/'
;
LINE_COMMENT
: '//' ~('\n'|'\r')* '\r'? '\n' {$channel=HIDDEN;}
;