Regular Expression Grammar


"_Start_" :
  | "Disjunction" 
  | "Disjunction" "/" "Disjunction" 

"Disjunction" :
  | "Alternative" "|" "Disjunction" 
  | "Alternative" 

"Alternative" :
  | "Alternative" "Term" 
  | "Term" 

"Term" :
  | "Atom" "*" 
  | "Atom" "+" 
  | "Atom" "?" 
  | "Atom" 

"Atom" :
  | "(" "Disjunction" ")" 
  | "Character" 
  | "." 
  | "[" "SetContents" "]" 
  | "[" "^" "SetContents" "]" 
  | "\\" "w" 
  | "\\" "d" 
  | "\\" "s" 
  | "\\" "+" 
  | "\\" "." 
  | "\\" "$" 
  | "\\" "/" 
  | "\\" "{" 
  | "\\" "[" 
  | "\\" "|" 
  | "\\" "\\" 
  | "\\" "}" 
  | "\\" "]" 
  | "\\" "^" 
  | "\\" "(" 
  | "\\" "?" 
  | "\\" ")" 
  | "\\" "*" 

"Character" :
  | "Letter" 
  | "Digit" 
  | "Whitespace" 
  | "Symbol" 

"SetContents" :
  | "SetItem" 
  | "SetContents" "SetItem" 

"SetItem" :
  | "SetCharacter" 
  | "LowercaseLetter" "-" "LowercaseLetter" 
  | "UppercaseLetter" "-" "UppercaseLetter" 
  | "Digit" "-" "Digit" 

"Letter" :
  | "LowercaseLetter" 
  | "UppercaseLetter" 

"LowercaseLetter" :
  | "a" 
  | "b" 
  | "c" 
  | "d" 
  | "e" 
  | "f" 
  | "g" 
  | "h" 
  | "i" 
  | "j" 
  | "k" 
  | "l" 
  | "m" 
  | "n" 
  | "o" 
  | "p" 
  | "q" 
  | "r" 
  | "s" 
  | "t" 
  | "u" 
  | "v" 
  | "w" 
  | "x" 
  | "y" 
  | "z" 

"UppercaseLetter" :
  | "A" 
  | "B" 
  | "C" 
  | "D" 
  | "E" 
  | "F" 
  | "G" 
  | "H" 
  | "I" 
  | "J" 
  | "K" 
  | "L" 
  | "M" 
  | "N" 
  | "O" 
  | "P" 
  | "Q" 
  | "R" 
  | "S" 
  | "T" 
  | "U" 
  | "V" 
  | "W" 
  | "X" 
  | "Y" 
  | "Z" 

"Digit" :
  | "0" 
  | "1" 
  | "2" 
  | "3" 
  | "4" 
  | "5" 
  | "6" 
  | "7" 
  | "8" 
  | "9" 

"Whitespace" :
  | " " 
  | "\r" 
  | "\n" 
  | "\t" 

"Symbol" :
  | "~" 
  | "`" 
  | "!" 
  | "@" 
  | "#" 
  | "%" 
  | "&" 
  | "_" 
  | "=" 
  | ":" 
  | ";" 
  | "\"" 
  | "'" 
  | "<" 
  | "," 
  | ">" 
  | "-" 

"SetCharacter" :
  | "0" 
  | "1" 
  | "2" 
  | "3" 
  | "4" 
  | "5" 
  | "6" 
  | "7" 
  | "8" 
  | "9" 
  | "a" 
  | "b" 
  | "c" 
  | "d" 
  | "e" 
  | "f" 
  | "g" 
  | "h" 
  | "i" 
  | "j" 
  | "k" 
  | "l" 
  | "m" 
  | "n" 
  | "o" 
  | "p" 
  | "q" 
  | "r" 
  | "s" 
  | "t" 
  | "u" 
  | "v" 
  | "w" 
  | "x" 
  | "y" 
  | "z" 
  | "A" 
  | "B" 
  | "C" 
  | "D" 
  | "E" 
  | "F" 
  | "G" 
  | "H" 
  | "I" 
  | "J" 
  | "K" 
  | "L" 
  | "M" 
  | "N" 
  | "O" 
  | "P" 
  | "Q" 
  | "R" 
  | "S" 
  | "T" 
  | "U" 
  | "V" 
  | "W" 
  | "X" 
  | "Y" 
  | "Z" 
  | "~" 
  | "`" 
  | "!" 
  | "@" 
  | "#" 
  | "%" 
  | "&" 
  | "_" 
  | "=" 
  | ":" 
  | ";" 
  | "\"" 
  | "'" 
  | "<" 
  | "," 
  | ">" 
  | " " 
  | "\r" 
  | "\n" 
  | "\t" 
  | "+" 
  | "." 
  | "$" 
  | "/" 
  | "{" 
  | "|" 
  | "}" 
  | "(" 
  | "?" 
  | ")" 
  | "*" 
  | "\\" "-" 
  | "\\" "^" 
  | "\\" "[" 
  | "\\" "]" 
  | "\\" "\\"