( (rule _empty "0" (first _eps) (seq)) (rule ebnf "1" (start #t) (first '@pass' '@terminals' LHS _eps) (follow _eof) (cleanup star) (alt _empty _ebnf_2)) (rule _ebnf_2 "1.2" (first '@pass' '@terminals' LHS) (follow _eof) (cleanup merge) (seq _ebnf_1 ebnf)) (rule _ebnf_1 "1.1" (first '@pass' '@terminals' LHS) (follow '@pass' '@terminals' LHS _eof) (alt declaration rule)) (rule declaration "2" (first '@pass' '@terminals') (follow '@pass' '@terminals' LHS _eof) (alt '@terminals' pass)) (rule rule "3" (first LHS) (follow '@pass' '@terminals' LHS _eof) (seq LHS expression)) (rule expression "4" (first '(' HEX O_RANGE RANGE STRING1 STRING2 SYMBOL) (follow ')' '@pass' '@terminals' LHS _eof) (seq alt)) (rule alt "5" (first '(' HEX O_RANGE RANGE STRING1 STRING2 SYMBOL) (follow ')' '@pass' '@terminals' LHS _eof) (seq seq _alt_1)) (rule _alt_1 "5.1" (first _eps '|') (follow ')' '@pass' '@terminals' LHS _eof) (cleanup star) (alt _empty _alt_3)) (rule _alt_3 "5.3" (first '|') (follow ')' '@pass' '@terminals' LHS _eof) (cleanup merge) (seq _alt_2 _alt_1)) (rule _alt_2 "5.2" (first '|') (follow ')' '@pass' '@terminals' LHS _eof '|') (seq '|' seq)) (rule seq "6" (first '(' HEX O_RANGE RANGE STRING1 STRING2 SYMBOL) (follow ')' '@pass' '@terminals' LHS _eof '|') (cleanup plus) (seq diff _seq_1)) (rule _seq_1 "6.1" (first '(' HEX O_RANGE RANGE STRING1 STRING2 SYMBOL _eps) (follow ')' '@pass' '@terminals' LHS _eof '|') (cleanup star) (alt _empty _seq_2)) (rule _seq_2 "6.2" (first '(' HEX O_RANGE RANGE STRING1 STRING2 SYMBOL) (follow ')' '@pass' '@terminals' LHS _eof '|') (cleanup merge) (seq diff _seq_1)) (rule diff "7" (first '(' HEX O_RANGE RANGE STRING1 STRING2 SYMBOL) (follow '(' ')' '@pass' '@terminals' HEX LHS O_RANGE RANGE STRING1 STRING2 SYMBOL _eof '|' ) (seq postfix _diff_1)) (rule _diff_1 "7.1" (first '-' _eps) (follow '(' ')' '@pass' '@terminals' HEX LHS O_RANGE RANGE STRING1 STRING2 SYMBOL _eof '|' ) (cleanup opt) (alt _empty _diff_2)) (rule _diff_2 "7.2" (first '-') (follow '(' ')' '@pass' '@terminals' HEX LHS O_RANGE RANGE STRING1 STRING2 SYMBOL _eof '|' ) (seq '-' postfix)) (rule postfix "8" (first '(' HEX O_RANGE RANGE STRING1 STRING2 SYMBOL) (follow '(' ')' '-' '@pass' '@terminals' HEX LHS O_RANGE RANGE STRING1 STRING2 SYMBOL _eof '|' ) (seq primary _postfix_1)) (rule _postfix_1 "8.1" (first POSTFIX _eps) (follow '(' ')' '-' '@pass' '@terminals' HEX LHS O_RANGE RANGE STRING1 STRING2 SYMBOL _eof '|' ) (cleanup opt) (alt _empty POSTFIX)) (rule primary "9" (first '(' HEX O_RANGE RANGE STRING1 STRING2 SYMBOL) (follow '(' ')' '-' '@pass' '@terminals' HEX LHS O_RANGE POSTFIX RANGE STRING1 STRING2 SYMBOL _eof '|' ) (alt HEX SYMBOL O_RANGE RANGE STRING1 STRING2 _primary_1)) (rule _primary_1 "9.1" (first '(') (follow '(' ')' '-' '@pass' '@terminals' HEX LHS O_RANGE POSTFIX RANGE STRING1 STRING2 SYMBOL _eof '|' ) (seq '(' expression ')')) (rule pass "10" (first '@pass') (follow '@pass' '@terminals' LHS _eof) (seq '@pass' expression)) (terminals _terminals (seq)) (terminal LHS "11" (seq (opt (seq '[' SYMBOL ']' (plus ' '))) SYMBOL (star ' ') '::=')) (terminal SYMBOL "12" (plus (alt (range "a-z") (range "A-Z") (range "0-9") '_' '.'))) (terminal HEX "13" (seq '#x' (plus (alt (range "a-f") (range "A-F") (range "0-9"))))) (terminal RANGE "14" (seq '[' (plus (alt (seq R_CHAR '-' R_CHAR) (seq HEX '-' HEX) R_CHAR HEX)) (opt '-') (diff ']' LHS)) ) (terminal O_RANGE "15" (seq '[^' (plus (alt (seq R_CHAR '-' R_CHAR) (seq HEX '-' HEX) R_CHAR HEX)) (opt '-') ']')) (terminal STRING1 "16" (seq '"' (star (diff CHAR '"')) '"')) (terminal STRING2 "17" (seq "'" (star (diff CHAR "'")) "'")) (terminal CHAR "18" (alt (range "#x9#xA#xD") (range "#x20-#xD7FF") (range "#xE000-#xFFFD") (range "#x10000-#x10FFFF")) ) (terminal R_CHAR "19" (diff CHAR (alt ']' '-' HEX))) (terminal POSTFIX "20" (range "?*+")) (terminal PASS "21" (alt (range "#x9#xA#xD#x20") (seq (alt (diff '#' '#x') '//') (star (range "^#xA#xD"))) (seq '/*' (star (alt (opt (seq '*' (range "^/"))) (range "^*"))) '*/') (seq '(*' (star (alt (opt (seq '*' (range "^)"))) (range "^*"))) '*)')) ) (pass _pass (seq PASS)) (rule _ebnf_3 "1.3" (first '@pass' '@terminals' LHS _eps) (follow _eof) (seq ebnf)) (rule _rule_1 "3.1" (first '(' HEX O_RANGE RANGE STRING1 STRING2 SYMBOL) (follow '@pass' '@terminals' LHS _eof) (seq expression)) (rule _alt_4 "5.4" (first _eps '|') (follow ')' '@pass' '@terminals' LHS _eof) (seq _alt_1)) (rule _alt_5 "5.5" (first _eps '|') (follow ')' '@pass' '@terminals' LHS _eof) (seq _alt_1)) (rule _alt_6 "5.6" (first '(' HEX O_RANGE RANGE STRING1 STRING2 SYMBOL) (follow ')' '@pass' '@terminals' LHS _eof '|') (seq seq)) (rule _seq_3 "6.3" (first '(' HEX O_RANGE RANGE STRING1 STRING2 SYMBOL _eps) (follow ')' '@pass' '@terminals' LHS _eof '|') (seq _seq_1)) (rule _seq_4 "6.4" (first '(' HEX O_RANGE RANGE STRING1 STRING2 SYMBOL _eps) (follow ')' '@pass' '@terminals' LHS _eof '|') (seq _seq_1)) (rule _diff_3 "7.3" (first '-' _eps) (follow '(' ')' '@pass' '@terminals' HEX LHS O_RANGE RANGE STRING1 STRING2 SYMBOL _eof '|' ) (seq _diff_1)) (rule _diff_4 "7.4" (first '(' HEX O_RANGE RANGE STRING1 STRING2 SYMBOL) (follow '(' ')' '@pass' '@terminals' HEX LHS O_RANGE RANGE STRING1 STRING2 SYMBOL _eof '|' ) (seq postfix)) (rule _postfix_2 "8.2" (first POSTFIX _eps) (follow '(' ')' '-' '@pass' '@terminals' HEX LHS O_RANGE RANGE STRING1 STRING2 SYMBOL _eof '|' ) (seq _postfix_1)) (rule _primary_2 "9.2" (first '(' HEX O_RANGE RANGE STRING1 STRING2 SYMBOL) (follow '(' ')' '-' '@pass' '@terminals' HEX LHS O_RANGE POSTFIX RANGE STRING1 STRING2 SYMBOL _eof '|' ) (seq expression ')')) (rule _pass_1 "10.1" (first '(' HEX O_RANGE RANGE STRING1 STRING2 SYMBOL) (follow '@pass' '@terminals' LHS _eof) (seq expression)) (rule _primary_3 "9.3" (first ')') (follow '(' ')' '-' '@pass' '@terminals' HEX LHS O_RANGE POSTFIX RANGE STRING1 STRING2 SYMBOL _eof '|' ) (seq ')')) )