Appendices
Grammar definition
//_______________________________________________
// relaxed simple ITL format specification
//_______________________________________________
start : expr
| start expr
;
//_______________________________________________
// expression of the script language
//_______________________________________________
expr : message ENDEXPR
| variabledecl ENDEXPR
| script
| ENDSCRIPT
;
//_______________________________________________
// javascript and support
//_______________________________________________
script : JSCRIPT
;
//_______________________________________________
// messages specification (extends osc spec.)
//_______________________________________________
message : address
| address params
| address eval LEFTPAR messagelist RIGHTPAR
| address eval variable
;
messagelist : message
| messagelist messagelistseparator message
;
messagelistseparator : COMMA
| COLON
;
//_______________________________________________
// address specification (extends osc spec.)
address : oscaddress
| relativeaddress
| urlprefix oscaddress
;
oscaddress : OSCADDRESS
;
relativeaddress : POINT oscaddress
;
urlprefix : hostname UINT
| STRING COLON UINT
| IPNUM COLON UINT
;
hostname : HOSTNAME
;
identifier : IDENTIFIER
| HOSTNAME
| REGEXP
;
//_______________________________________________
// parameters definitions
// eval need a special case since messages are expected as argument
eval : EVAL
| variable
| params variable
| params param
;
params : sparam
| params sparam
| mathexpr
| params mathexpr
;
variable : VARIABLE
| VARIABLEPOSTINC
| VARIABLEPOSTDEC
| VARIABLEPREINC
| VARIABLEPREDEC
;
msgvariable : VARSTART LEFTPAR message RIGHTPAR
;
param : number
| FLOAT
| identifier
| STRING
;
sparam : expression
| LEFTPAR messagelist RIGHTPAR
| script
;
//_______________________________________________
// math expressions
mathexpr : param
| variable
| msgvariable
| mathexpr ADD mathexpr
| mathexpr SUB mathexpr
| MINUS mathexpr
| mathexpr MULT mathexpr
| mathexpr DIV mathexpr
| mathexpr MODULO mathexpr
| LEFTPAR mathexpr RIGHTPAR
| MIN LEFTPAR mathmin RIGHTPAR
| MAX LEFTPAR mathmax RIGHTPAR
| LEFTPAR mathbool QUEST mathexpr COLON mathexpr RIGHTPAR
;
mathmin : mathexpr
| mathmin mathexpr
;
mathmax : mathexpr
| mathmax mathexpr
;
mathbool : mathexpr
| NEG mathexpr
| mathexpr EQ mathexpr
| mathexpr NEQ mathexpr
| mathexpr GREATER mathexpr
| mathexpr GREATEREQ mathexpr
| mathexpr LESS mathexpr
| mathexpr LESSEQ mathexpr
;
//_______________________________________________
// variable declaration
variabledecl : varname EQUAL params
;
varname : IDENTIFIER
;
//_______________________________________________
// misc
number : UINT
| INT
;
//_______________________________________________
// expression declaration
expression : EXPRESSION
;
Lexical tokens
//_______________________________________________
// numbers
//_______________________________________________
INT a signed integer
UINT an unsigned integer
FLOAT a floating point number
//_______________________________________________
// hosts addresses
//_______________________________________________
// allowed character set for host names (see RFC952 and RFC1123)
HOSTNAME : [-a-zA-Z0-9]+
IPNUM : {DIGIT}+"."{DIGIT}+"."{DIGIT}+"."{DIGIT}+
//_______________________________________________
// OSC addresses
//_______________________________________________
// allowed characters for identifiers
IDENTIFIER : [_a-zA-Z][_a-zA-Z0-9]*
REGEXP see OSC doc for regular expressions
OSCADDRESS
//_______________________________________________
// strings
//_______________________________________________
STRING : ("/"|(".""."?"/")*)([^ \t/?:*><|"';=]+"/"?)+"."[_a-zA-Z0-9]+
or quoted strings that can include any character
quotes could be single (') or double quotes (")
//_______________________________________________
// scripting
//_______________________________________________
JSCRIPT : <?javascript ...any javascript code... ?>
VARIABLE : the name of a variable
//_______________________________________________
// misc.
//_______________________________________________
POINT : '.'
VARSTART : '$'
COLON : ':'
COMMA : ','
LEFTPAR : '('
RIGHTPAR : ')'
EQUAL : '='
ENDEXPR : ';'
ENDSCRIPT : "__END__"
EVAL : "eval"
//_______________________________________________
// score expressions
//_______________________________________________
EXPRESSION expr( a valid score expression )
see 'Score expressions grammar'
//_______________________________________________
// math expressions
//_______________________________________________
ADD : '+'
DIV : '/'
EQ : '=='
GREATER : '>'
GREATEREQ : '>='
LESS : '<'
LESSEQ : '<='
MINUS : '-'
MODULO : '
MULT : '*'
NEG : '!'
QUEST : ' ? '
SUB : '- '
MAX : '@max'
MIN : '@min'
VARIABLEPOSTDEC : $VAR--
VARIABLEPOSTINC : $VAR++
VARIABLEPREDEC : --$VAR
VARIABLEPREINC : ++$VAR