blob: 4fe42936e98ec21128f2796aceabd9c7ee69ac23 [file] [log] [blame]
Grammar : Spacing Definition+ EndOfFile;
Definition : Identifier COLON Expression SEMI;
Expression : Sequence (BAR Sequence)*;
Sequence : Prefix*;
Prefix : (AND | NOT)? Suffix;
Suffix : Primary (QUESTION | STAR | PLUS)?;
Primary : Identifier !COLON
| DOLLAR OPEN Expression CLOSE
| DOLLAR Identifier OPEN Expression CLOSE
| OPEN Expression CLOSE
| Literal
| Class
| DOT;
Identifier : $(IdentStart IdentCont*) Spacing;
IdentStart : [a-zA-Z_];
IdentCont : IdentStart
| [0-9];
Literal : ['] (!['] Char)* ['] Spacing
| ["] (!["] Char)* ["] Spacing;
Class : "[" (!"]" Range)* "]" Spacing;
Range : Char "-" Char
| Char;
Char : "\\" [nrt'"\[\]\\]
| "\\" [0-2] [0-7] [0-7]
| "\\" [0-7] [0-7]?
| !"\\" .;
COLON : ":" Spacing;
SEMI : ";" Spacing;
BAR : "|" Spacing;
AND : "&" Spacing;
NOT : "!" Spacing;
QUESTION : "?" Spacing;
STAR : "*" Spacing;
PLUS : "+" Spacing;
OPEN : "(" Spacing;
CLOSE : ")" Spacing;
DOT : "." Spacing;
DOLLAR : "$" Spacing;
Spacing : $((Space | Comment)*);
Comment : "#" (!EndOfLine .)* EndOfLine;
Space : " "
| "\t"
| EndOfLine;
EndOfLine : "\r\n"
| "\n"
| "\r";
EndOfFile : !.;