MarketTime;0 8 * * 1-5 America/New_York;'agency.asmp.'yyyyMMdd;America/New_York;_249;1
'agency.asmp.'yyyyMMdd;America/New_York
"_249" as timezone and only ";1" as id_or_int_list
/*File trigger validator lexer */
lexer grammar FileTriggerLexer;
CRON
:
'cron'
;
MARKET_CRON
:
'marketCron'
;
COMBINED
:
'combined'
;
FILE_FEED
:
'FileFeed'
;
MANUAL_NOTICE
:
'ManualNotice'
;
TIME
:
'Time'
;
MARKET_TIME
:
'MarketTime'
;
SCHEDULE
:
'Schedule'
;
PRODUCT
:
'Product'
;
UCA_CLIENT
:
'UCAClient'
;
APEX_GSM
:
'ApexGSM'
;
DELAY
:
'Delay'
;
CATEGORY
:
'Category'
;
EXCHANGE
:
'Exchange'
;
CALENDAR_EXCHANGE
:
'CalendarExchange'
;
FEED
:
'Feed'
;
RANGE
:
'Range'
;
SYNTH
:
'Synth'
;
TRIGGER
:
'Trigger'
;
DELAYED_TRIGGER
:
'DelayedTrigger'
;
INTRA_TRIGGER
:
'IntraTrigger'
;
CURRENT_TRIGGER
:
'CurrentTrigger'
;
CALENDAR_FILE_FEED
:
'CalendarFileFeed'
;
PREVIOUS
:
'Previous'
;
LATE_DELAY
:
'LateDelay'
;
BUILD_ARCHIVE
:
'BuildArchive'
;
COMPRESS
:
'Compress'
;
LATE_TIME
:
'LateTime'
;
CALENDAR_CATEGORY
:
'CalendarCategory'
;
APEX_GPM
:
'ApexGPM'
;
PORTFOLIO_NOTICE
:
'PortfolioNotice'
;
FIXED_TIME_OF_DAY
:
'fixedTimeOfDay'
;
DELTA:'delta';
Delta:'Delta';
MARKET_CLOSE:'marketClose';
MARKET_OPEN:'marketOpen';
X_BUSINESS_DAY:'xBusinessDay';
X_CALENDAR_DAY:'xCalendarDay';
SEMICOLON
:
';'
;
ASTERISK
:
'*'
;
LBRACKET
:
'('
;
RBRACKET
:
')'
;
PERCENT
:
'%'
;
DASH
:
'-'
;
DOUBLE_QUOTE
:
'"'
;
QUOTE
:
'\''
;
SLASH
:
'/'
;
DOT
:
'.'
;
COMMA
:
','
;
UNDERSCORE
:
'_'
;
EQUAL
:
'='
;
MORE_THAN
:
'>'
;
LESS
:
'<'
;
INTERVAL
:
INTEGER DASH INTEGER
;
INTEGER
:
[0-9]+
;
ID
:
[_a-zA-Z] [_a-zA-Z0-9]*
;
WS
:
[ \t\r\n]+ -> skip
;
/**
* Define Fied Trigger valdiator grammar
*/
grammar FileTriggerValidator;
options
{
tokenVocab = FileTriggerLexer;
}
r
:
(
schedule
| file_feed
| time_feed
| market_time_feed
| manual_notice
| range
| not_checked
)+
;
range: RANGE (SEMICOLON cron)+ ;
manual_notice
:
MANUAL_NOTICE SEMICOLON file_name SEMICOLON timezone
;
time_feed
:
TIME SEMICOLON cron_part
(
timezone?
) SEMICOLON file_name SEMICOLON timezone
;
market_time_feed
:
MARKET_TIME SEMICOLON cron_part timezone SEMICOLON file_name SEMICOLON
timezone id_or_int_list
;
id_or_int_list:(
SEMICOLON (ID|INTEGER)
)*;
file_feed
:
file_feed_name SEMICOLON source_file SEMICOLON source_host SEMICOLON
source_host SEMICOLON notSemicolon SEMICOLON notSemicolon
(
SEMICOLON source_host
)*
;
source_host
:
ID
(
(DASH|SLASH) ID
)*
;
file_feed_name
:
FILE_FEED
;
source_file
:
(
ID
| DASH
| UNDERSCORE
)+
;
schedule
:
SCHEDULE SEMICOLON schedule_defining SEMICOLON file_name SEMICOLON timezone
(
SEMICOLON DASH? INTEGER
)*
;
schedule_defining
:
cron
| market_cron
| combined_cron
| other_schedule
;
other_schedule:(FIXED_TIME_OF_DAY|DELTA|MARKET_CLOSE|MARKET_OPEN|X_BUSINESS_DAY|X_CALENDAR_DAY) notSemicolon
;
cron
:
CRON LBRACKET DOUBLE_QUOTE cron_part timezone? DOUBLE_QUOTE RBRACKET
;
market_cron
:
MARKET_CRON LBRACKET DOUBLE_QUOTE cron_part timezone DOUBLE_QUOTE COMMA
DOUBLE_QUOTE (ID|INTEGER) DOUBLE_QUOTE RBRACKET
;
combined_cron
:
COMBINED LBRACKET cron_list_element
(
COMMA cron_list_element
)* RBRACKET
;
file_name
:
notSemicolon
;
cron_list_element
:
cron
| market_cron
;
//
cron_part
:
minutes hours days_of_month month week_days
;
//
minutes
:
cron_part_list
;
hours
:
cron_part_list
;
//
days_of_month
:
cron_part_list
;
//
month
:
cron_part_list
;
//
week_days
:
cron_part_list
;
//
timezone
:
timezone_part
(
SLASH timezone_part
)?
;
//
timezone_part
:
ID
(
UNDERSCORE ID
)?
;
//
cron_part_list
: int_list_part+
;
int_list_part:int_list_value (COMMA int_list_value)*;
int_list_value:INTEGER|ASTERISK (SLASH INTEGER)?|INTERVAL;
not_checked
:
(
PRODUCT
| UCA_CLIENT
| APEX_GSM
| APEX_GPM
| DELAY
| CATEGORY
| CALENDAR_CATEGORY
| EXCHANGE
| CALENDAR_EXCHANGE
| FEED
| SYNTH
| TRIGGER
| DELAYED_TRIGGER
| INTRA_TRIGGER
| CURRENT_TRIGGER
| CALENDAR_FILE_FEED
| PREVIOUS
| LATE_DELAY
| LATE_TIME
| COMPRESS
| BUILD_ARCHIVE
|PORTFOLIO_NOTICE
|DELTA
|Delta
)
(
SEMICOLON anyList
)?
;
anyList
:
notSemicolon
(
SEMICOLON notSemicolon
)*
;
notSemicolon
:
(~';')+;