108 lines
3.1 KiB
ANTLR
108 lines
3.1 KiB
ANTLR
grammar CommentMacro;
|
|
|
|
/** The grammer begins here, as a series of statements. */
|
|
prog: statement+ ;
|
|
|
|
/** Each statement has one or many expressions */
|
|
statement
|
|
: 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 ;
|
|
number : NUMBER ;
|
|
|
|
nodeType
|
|
: WHOLEHOG
|
|
| DP8K
|
|
| IOP
|
|
;
|
|
|
|
/** recursive targeting is non-greedy */
|
|
target
|
|
: ( number | span ) also*?
|
|
;
|
|
|
|
span
|
|
: number THRU number
|
|
;
|
|
|
|
also
|
|
: ALSO target
|
|
;
|
|
|
|
SLASH : '/' ;
|
|
ALSO : ',' ;
|
|
THRU : '>' ;
|
|
NEXT : '+' ;
|
|
PREV : '-' ;
|
|
CURRENT : '*' ;
|
|
TIME : 't' ;
|
|
|
|
WHOLEHOG : [hH] ;
|
|
DP8K : [dD] ;
|
|
IOP : 'IOP';
|
|
|
|
NUMBER // intigers or floats
|
|
: [0-9]+ '.' [0-9]*
|
|
| '.' [0-9]+
|
|
| [0-9]+
|
|
;
|
|
|
|
NEWLINE // return newlines to parser (end-statement signal)
|
|
: '\r'? '\n'
|
|
;
|
|
|
|
WS // ignore whitespace
|
|
: [ \t]+
|
|
-> skip
|
|
;
|
|
|
|
COMMENT // toss c and HTML sytle block comments
|
|
: ( '<!--' .*? '-->'
|
|
| '/*' .*? '*/'
|
|
) -> skip
|
|
;
|
|
|
|
LINE_COMMENT
|
|
: ( '//' ~[\r\n]*
|
|
| '#' ~[\r\n]*
|
|
) -> skip
|
|
;
|