grammar CommentMacro; /** ** Parser Rules **/ prog : statement+ EOF ; statement : macro (':' macro)* NEWLINE | NEWLINE ; macro : 'GM' master (device)? // Go Master | 'GM' master SLASH number (device)? // Go Master | 'HM' master (device)? // Halt Master | 'AM' master (device)? // Assert Master | 'RM' master (device)? // Relesae Master | 'RA' (device)? // Release All | 'RO' (device)? // Release Others | 'FM' master SLASH number (time)? (device)? // Fade Master | 'FGM' number (time)? (device)? // Fade Grand Master | 'CM' number (device)? // Choose Master | 'GL' target (device)? // Go List | 'GL' target SLASH number (device)? // Go List | 'HL' target (device)? // Halt List | 'AL' target (device)? // Assert List | 'RL' target (device)? // Release List | 'GB' target (device)? // Go Batch | 'HB' target (device)? // Halt Batch | 'AB' target (device)? // Assert Batch | 'RB' target (device)? // Release Batch | 'GS' target (device)? // Go Scene | 'HS' target (device)? // Halt Scene | 'AS' target (device)? // Assert Scene | 'RS' target (device)? // Release Scene | 'CP' number (device)? // Change Page | 'CP' NEXT (device)? // Next Page | 'CP' PREV (device)? // Prev Page | 'RV' number (device)? // Recall View | 'RN' device // Reset Node | 'GK' number (device)? // Go Keystroke Macro | 'HK' number (device)? // Halt Keystroke Macro | 'RK' number (device)? // Stop Keystroke Macro ; master : (target | CURRENT) ; time : TIME number ; device : nodeType number ; nodeType : WHOLEHOG | DP8K | IOP ; /** recursive targeting is non-greedy */ target : ( number | span ) (',' target)* ; span : number THRU number ; number : NUMBER ; /** ** LEXAR Rules **/ SLASH : '/' ; THRU : '>' ; NEXT : '+' ; PREV : '-' ; CURRENT : '*' ; TIME : 't' ; WHOLEHOG : [hH] ; DP8K : [dD] ; IOP : 'IOP'; fragment DIGIT : [0-9] ; NUMBER : DIGIT+ ('.' DIGIT+)? ; NEWLINE : '\r'? '\n' ; // return newlines to parser WS : [ \t]+ -> skip ; // ignore whitespace COMMENT // toss c and HTML sytle block comments : ( '' | '/*' .*? '*/' ) -> skip ; LINE_COMMENT // ignore inline commkents : ( '//' ~[\r\n]* | '#' ~[\r\n]* ) -> skip ;