<style type="text/css">
.highlight .hll 
.highlight
.highlight .c
 /* Comment */
.highlight .err 
 /* Error */
.highlight .k 
 /* Keyword */
.highlight .o 
 /* Operator */
.highlight .cm 
 /* Comment.Multiline */
.highlight .cp 
 /* Comment.Preproc */
.highlight .c1 
 /* Comment.Single */
.highlight .cs 
 /* Comment.Special */
.highlight .gd 
 /* Generic.Deleted */
.highlight .ge 
 /* Generic.Emph */
.highlight .gr 
 /* Generic.Error */
.highlight .gh 
 /* Generic.Heading */
.highlight .gi 
 /* Generic.Inserted */
.highlight .go 
 /* Generic.Output */
.highlight .gp 
 /* Generic.Prompt */
.highlight .gs 
 /* Generic.Strong */
.highlight .gu 
 /* Generic.Subheading */
.highlight .gt 
 /* Generic.Traceback */
.highlight .kc 
 /* Keyword.Constant */
.highlight .kd 
 /* Keyword.Declaration */
.highlight .kn 
 /* Keyword.Namespace */
.highlight .kp 
 /* Keyword.Pseudo */
.highlight .kr 
 /* Keyword.Reserved */
.highlight .kt 
 /* Keyword.Type */
.highlight .m 
 /* Literal.Number */
.highlight .s 
 /* Literal.String */
.highlight .na 
 /* Name.Attribute */
.highlight .nb 
 /* Name.Builtin */
.highlight .nc 
 /* Name.Class */
.highlight .no 
 /* Name.Constant */
.highlight .nd 
 /* Name.Decorator */
.highlight .ni 
 /* Name.Entity */
.highlight .ne 
 /* Name.Exception */
.highlight .nf 
 /* Name.Function */
.highlight .nl 
 /* Name.Label */
.highlight .nn 
 /* Name.Namespace */
.highlight .nt 
 /* Name.Tag */
.highlight .nv 
 /* Name.Variable */
.highlight .ow 
 /* Operator.Word */
.highlight .w 
 /* Text.Whitespace */
.highlight .mf 
 /* Literal.Number.Float */
.highlight .mh 
 /* Literal.Number.Hex */
.highlight .mi 
 /* Literal.Number.Integer */
.highlight .mo 
 /* Literal.Number.Oct */
.highlight .sb 
 /* Literal.String.Backtick */
.highlight .sc 
 /* Literal.String.Char */
.highlight .sd 
 /* Literal.String.Doc */
.highlight .s2 
 /* Literal.String.Double */
.highlight .se 
 /* Literal.String.Escape */
.highlight .sh 
 /* Literal.String.Heredoc */
.highlight .si 
 /* Literal.String.Interpol */
.highlight .sx 
 /* Literal.String.Other */
.highlight .sr 
 /* Literal.String.Regex */
.highlight .s1 
 /* Literal.String.Single */
.highlight .ss 
 /* Literal.String.Symbol */
.highlight .bp 
 /* Name.Builtin.Pseudo */
.highlight .vc 
 /* Name.Variable.Class */
.highlight .vg 
 /* Name.Variable.Global */
.highlight .vi 
 /* Name.Variable.Instance */
.highlight .il 
 /* Literal.Number.Integer.Long */
</style>
| Token | Meaning | 
|---|---|
| ‘*’ | Zero or more | 
| ‘!’ | Zero or one | 
| ‘+’ | One or more | 
| ‘>>’ | Sequence/concatenation | 
| ‘|’ | alternate | 
| ‘-‘ | not | 
Defs ::= *( nextline | extern ) >> +suite >> EOL extern ::= "extern" >> ( absolutepath >> !( ":" >> identifier ) >> +nextline suite ::= "suite" >> suiteName >> *( variable | inlimit | defstatus | limit | late | clock | repeat | autocancel | zombie ) >> *( family | task ) >> endsuite family ::= "family" >> `familyName` >> !leaf_ecf >> *(task | family) >> endfamily task ::= "task" >> `taskName` >> leaf_ecf >> !endtask leaf_ecf ::= *( variable | trigger | time | today | date | day | defstatus | complete | inlimit | label | event | late | limit | meter | repeat | cron | autocancel | zombie ) clock ::= "clock" >> ( "real"| "hybrid" ) >> ( ( clock_date >> !(hh_mm | int ) ) | (hh_mm | int )) >> +nextline trigger ::= "trigger" >> expression >> +nextline complete ::= "complete" >> expression >> +nextline variable ::= "edit" >> identifier >> varvalue >> +nextline label ::= "label" >> identifier >> quotedstring >> +nextline time ::= "time" >> !'+ >> (timeseries | two_int_p >> “:” two_int_p) >> +nextline today ::= "today" >> !'+ >> (timeseries | two_int_p >> “:” two_int_p ) >> +nextline day ::= "day" >> (“monday” | “tuesday” | “wednesday” | “thursday” | “friday” | “saturday” | “sunday”) + nextline date ::= "date" >> !’+’ >> ( two_int_p | ‘*’ ) >> "." >> ( two_int_p | ‘*’) >> "." >> (two_int_p | ‘*’) autocancel ::= "autocancel" >> !’+’ >> (( two_int_p >> ‘:’ >> two_int_p) | unsigned integer) >> +nextline limit ::= "limit" >> ( identifier >> unsigned int ) >> +nextline inlimit ::= "inlimit" >>( (`nodePath` >> ":“ >> identifier) | identifier )) >> ! unsigned int >> +nextline event ::= eventcontent2 | eventcontent1; eventcontent1 ::= "event” >> ( eventnumber | eventname ) >> +nextline eventcontent2 ::= "event” >> ( eventnumber >> eventname ) >> +nextline meter ::= "meter" >> identifier >> ( int >> int >> !unsigned int) >> +nextline defstatus ::= "defstatus" >> dstate >> +nextline endsuite ::= "endsuite" >> *nextline endfamily ::= "endfamily" >> +nextline endtask ::= "endtask" >> +nextline zombie ::= "zombie" >> zombie_type >> ":" >> *child >> ":" >> !(client_side_action | server_side_action) >> ":" >> !zombie_life_time zombie_type ::= "user" | "ecf" | "path" child ::= "init" | "event" | "meter" | "label" | "wait" | "abort" | "complete" client_side_action ::= "fob" | "fail" | "block" server_side_action ::= "adopt" | "delete" zombie_life_time ::= unsigned integer ( default: user(300), ecf(3600), path(900) ) late ::= "late" >> late_option >> !late_option >> !late_option >> +nextline late_option ::= "-c" >> hh_mm | ("-s" >> hh_mm ) | "-a" >> hh_mm repeat ::= "repeat" >> repeat_type >> +nextline repeat_type ::= repeat_date | repeat_day | repeat_month | repeat_year | repeat_integer | repeat_enumerated | repeat_string repeat_day ::= "day" >> unsigned integer >> !ymd repeat_month ::= “month" >> unsigned integer >> !ymd repeat_year ::= "year" >> unsigned integer >> !ymd repeat_integer ::= "integer" >> identifier >> integer >> " " >> integer >> " " >> integer repeat_enumerated ::= "enumerated" >> identifier >> +identifier repeat_string ::= "string" >> identifier >> +identifier repeat_date ::= "date" >> identifier >> ymd >> ymd >> unsigned integer varvalue ::= tickquotedstring | quotedstring | identifier suiteName ::= node_name >> +nextline familyName ::= node_name >> +nextline taskName ::= node_name >> +nextline nodestate ::= "complete” | "unknown” | "queued" | "aborted" | “active” dstate ::= "complete” | "unknown” | "queued" | "aborted" | “active” | “suspended” eventnumber ::= unsigned integer eventname ::= identifier hh_mm ::= !'+' >> two_int_p >> ":" >> two_int_p clock_date ::= ( two_int_p | ‘*’ ) >> "." >> ( two_int_p | ‘*’ ) >> "." >> (two_int_p | ‘*’) cron ::= "cron" >> ((‘-w >> +int) | (‘-d’ >> +int) | (‘-m’ >> +int)) >> timeseries >> +nextline node_name ::= (alpha_numeric | ‘_’| ‘.’) >> *(alpha_numeric | ‘_’ | ‘.’ ) comment ::= ’#’ >> printable chars > newline nextline ::= newline | comment timeseries ::= two_int_p >> “:” >> two_int_p >> two_int_p >> “:” >> two_int_p >> two_int_p >> “:” >> two_int_p quotedstring ::= ’”‘ >> *(printable chars) >> ‘”’ tickquotedstring ::= ’'’ >> *(print_p - nextline) ] absolutepath ::= !’/’ >> identifier >> *( ‘/’ >> identifier ) dotdotpath ::= ".." >> +( ‘/’ >> identifier ) dotpath ::= ‘.’ >> +( ‘/’ >> identifier ) identifier ::= (alpha_numeric | ‘_’) >> *(alpha_numeric | ‘_’) nodePath ::= absolutepath | dotdotpath | dotpath expression ::= printable chars >> !’\’ >> nextline two_int_p ::= 2 digit integer theYear ::= 4 digit integer ymd ::= 8 digit integer newline ::= \n