(
(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" (alt (seq '<' O_SYMBOL '>') O_SYMBOL))
(terminal O_SYMBOL "12a" (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 '-') ']'))
(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 ')')) )