66 states, 44 actions. open Syntax open Grammar open Scan_aux let rec action_43 lexbuf = ( comment lexbuf ) and action_42 lexbuf = ( raise(Lexical_error "unterminated comment") ) and action_41 lexbuf = ( reset_string_buffer(); string lexbuf; reset_string_buffer(); comment lexbuf ) and action_40 lexbuf = ( decr comment_depth; if !comment_depth = 0 then () else comment lexbuf ) and action_39 lexbuf = ( incr comment_depth; comment lexbuf ) and action_38 lexbuf = ( raise(Lexical_error "bad character constant") ) and action_37 lexbuf = ( char_for_decimal_code lexbuf 1 ) and action_36 lexbuf = ( char_for_backslash (Lexing.lexeme_char lexbuf 1) ) and action_35 lexbuf = ( Lexing.lexeme_char lexbuf 0 ) and action_34 lexbuf = ( store_string_char(Lexing.lexeme_char lexbuf 0); string lexbuf ) and action_33 lexbuf = ( raise(Lexical_error "unterminated string") ) and action_32 lexbuf = ( store_string_char(char_for_decimal_code lexbuf 1); string lexbuf ) and action_31 lexbuf = ( store_string_char(char_for_backslash(Lexing.lexeme_char lexbuf 1)); string lexbuf ) and action_30 lexbuf = ( string lexbuf ) and action_29 lexbuf = ( () ) and action_28 lexbuf = ( action lexbuf ) and action_27 lexbuf = ( raise (Lexical_error "unterminated action") ) and action_26 lexbuf = ( comment_depth := 1; comment lexbuf; action lexbuf ) and action_25 lexbuf = ( let _ = char lexbuf in action lexbuf ) and action_24 lexbuf = ( reset_string_buffer(); string lexbuf; reset_string_buffer(); action lexbuf ) and action_23 lexbuf = ( decr brace_depth; if !brace_depth = 0 then Lexing.lexeme_start lexbuf else action lexbuf ) and action_22 lexbuf = ( incr brace_depth; action lexbuf ) and action_21 lexbuf = ( raise(Lexical_error("illegal character " ^ Lexing.lexeme lexbuf)) ) and action_20 lexbuf = ( raise(Lexical_error "unterminated lexer definition") ) and action_19 lexbuf = ( Tdash ) and action_18 lexbuf = ( Tcaret ) and action_17 lexbuf = ( Trparen ) and action_16 lexbuf = ( Tlparen ) and action_15 lexbuf = ( Tplus ) and action_14 lexbuf = ( Tmaybe ) and action_13 lexbuf = ( Tstar ) and action_12 lexbuf = ( Trbracket ) and action_11 lexbuf = ( Tlbracket ) and action_10 lexbuf = ( Teof ) and action_9 lexbuf = ( Tunderscore ) and action_8 lexbuf = ( Tor ) and action_7 lexbuf = ( Tend ) and action_6 lexbuf = ( Tequal ) and action_5 lexbuf = ( let n1 = Lexing.lexeme_end lexbuf in brace_depth := 1; let n2 = action lexbuf in Taction(Location(n1, n2)) ) and action_4 lexbuf = ( Tchar(char lexbuf) ) and action_3 lexbuf = ( reset_string_buffer(); string lexbuf; Tstring(get_stored_string()) ) and action_2 lexbuf = ( match Lexing.lexeme lexbuf with "rule" -> Trule | "parse" -> Tparse | "and" -> Tand | "eof" -> Teof | s -> Tident s ) and action_1 lexbuf = ( comment_depth := 1; comment lexbuf; main lexbuf ) and action_0 lexbuf = ( main lexbuf ) and state_0 lexbuf = match lexing.next_char lexbuf with 'z'|'y'|'x'|'w'|'v'|'u'|'t'|'s'|'r'|'q'|'p'|'o'|'n'|'m'|'l'|'k'|'j'|'i'|'h'|'g'|'f'|'d'|'c'|'b'|'a'|'Z'|'Y'|'X'|'W'|'V'|'U'|'T'|'S'|'R'|'Q'|'P'|'O'|'N'|'M'|'L'|'K'|'J'|'I'|'H'|'G'|'F'|'E'|'D'|'C'|'B'|'A' -> state_51 lexbuf | ' '|'\013'|'\n'|'\t' -> state_40 lexbuf | '|' -> action_8 lexbuf | '{' -> action_5 lexbuf | 'e' -> state_56 lexbuf | '_' -> state_55 lexbuf | '^' -> action_18 lexbuf | ']' -> action_12 lexbuf | '[' -> action_11 lexbuf | '?' -> action_14 lexbuf | '=' -> action_6 lexbuf | ';' -> state_48 lexbuf | '-' -> action_19 lexbuf | '+' -> action_15 lexbuf | '*' -> action_13 lexbuf | ')' -> action_17 lexbuf | '(' -> state_43 lexbuf | '\'' -> action_4 lexbuf | '"' -> action_3 lexbuf | '\000' -> action_20 lexbuf | _ -> action_21 lexbuf and state_1 lexbuf = match lexing.next_char lexbuf with '}' -> action_23 lexbuf | '{' -> action_22 lexbuf | '(' -> state_34 lexbuf | '\'' -> action_25 lexbuf | '"' -> action_24 lexbuf | '\000' -> action_27 lexbuf | _ -> action_28 lexbuf and state_2 lexbuf = match lexing.next_char lexbuf with '\\' -> state_24 lexbuf | '"' -> action_29 lexbuf | '\000' -> action_33 lexbuf | _ -> action_34 lexbuf and state_3 lexbuf = match lexing.next_char lexbuf with '\\' -> state_13 lexbuf | '\000' -> lexing.backtrack lexbuf | _ -> state_12 lexbuf and state_4 lexbuf = match lexing.next_char lexbuf with '*' -> state_9 lexbuf | '(' -> state_8 lexbuf | '"' -> action_41 lexbuf | '\000' -> action_42 lexbuf | _ -> action_43 lexbuf and state_8 lexbuf = Lexing.set_backtrack lexbuf action_43; match lexing.next_char lexbuf with '*' -> action_39 lexbuf | _ -> lexing.backtrack lexbuf and state_9 lexbuf = Lexing.set_backtrack lexbuf action_43; match lexing.next_char lexbuf with ')' -> action_40 lexbuf | _ -> lexing.backtrack lexbuf and state_12 lexbuf = Lexing.set_backtrack lexbuf action_38; match lexing.next_char lexbuf with '\'' -> action_35 lexbuf | _ -> lexing.backtrack lexbuf and state_13 lexbuf = Lexing.set_backtrack lexbuf action_38; match lexing.next_char lexbuf with '9'|'8'|'7'|'6'|'5'|'4'|'3'|'2'|'1'|'0' -> state_15 lexbuf | 't'|'r'|'n'|'b'|'\\'|'\'' -> state_14 lexbuf | _ -> lexing.backtrack lexbuf and state_14 lexbuf = match lexing.next_char lexbuf with '\'' -> action_36 lexbuf | _ -> lexing.backtrack lexbuf and state_15 lexbuf = match lexing.next_char lexbuf with '9'|'8'|'7'|'6'|'5'|'4'|'3'|'2'|'1'|'0' -> state_16 lexbuf | _ -> lexing.backtrack lexbuf and state_16 lexbuf = match lexing.next_char lexbuf with '9'|'8'|'7'|'6'|'5'|'4'|'3'|'2'|'1'|'0' -> state_17 lexbuf | _ -> lexing.backtrack lexbuf and state_17 lexbuf = match lexing.next_char lexbuf with '\'' -> action_37 lexbuf | _ -> lexing.backtrack lexbuf and state_24 lexbuf = Lexing.set_backtrack lexbuf action_34; match lexing.next_char lexbuf with '9'|'8'|'7'|'6'|'5'|'4'|'3'|'2'|'1'|'0' -> state_27 lexbuf | 't'|'r'|'n'|'b'|'\\'|'"' -> action_31 lexbuf | ' '|'\026'|'\013'|'\012'|'\n'|'\t' -> state_25 lexbuf | _ -> lexing.backtrack lexbuf and state_25 lexbuf = Lexing.set_backtrack lexbuf action_30; match lexing.next_char lexbuf with ' '|'\026'|'\013'|'\012'|'\n'|'\t' -> state_25 lexbuf | _ -> lexing.backtrack lexbuf and state_27 lexbuf = match lexing.next_char lexbuf with '9'|'8'|'7'|'6'|'5'|'4'|'3'|'2'|'1'|'0' -> state_28 lexbuf | _ -> lexing.backtrack lexbuf and state_28 lexbuf = match lexing.next_char lexbuf with '9'|'8'|'7'|'6'|'5'|'4'|'3'|'2'|'1'|'0' -> action_32 lexbuf | _ -> lexing.backtrack lexbuf and state_34 lexbuf = Lexing.set_backtrack lexbuf action_28; match lexing.next_char lexbuf with '*' -> action_26 lexbuf | _ -> lexing.backtrack lexbuf and state_40 lexbuf = Lexing.set_backtrack lexbuf action_0; match lexing.next_char lexbuf with ' '|'\013'|'\n'|'\t' -> state_65 lexbuf | _ -> lexing.backtrack lexbuf and state_43 lexbuf = Lexing.set_backtrack lexbuf action_16; match lexing.next_char lexbuf with '*' -> action_1 lexbuf | _ -> lexing.backtrack lexbuf and state_48 lexbuf = Lexing.set_backtrack lexbuf action_21; match lexing.next_char lexbuf with ';' -> action_7 lexbuf | _ -> lexing.backtrack lexbuf and state_51 lexbuf = Lexing.set_backtrack lexbuf action_2; match lexing.next_char lexbuf with 'z'|'y'|'x'|'w'|'v'|'u'|'t'|'s'|'r'|'q'|'p'|'o'|'n'|'m'|'l'|'k'|'j'|'i'|'h'|'g'|'f'|'e'|'d'|'c'|'b'|'a'|'Z'|'Y'|'X'|'W'|'V'|'U'|'T'|'S'|'R'|'Q'|'P'|'O'|'N'|'M'|'L'|'K'|'J'|'I'|'H'|'G'|'F'|'E'|'D'|'C'|'B'|'A'|'9'|'8'|'7'|'6'|'5'|'4'|'3'|'2'|'1'|'0'|'\'' -> state_59 lexbuf | '_' -> state_60 lexbuf | _ -> lexing.backtrack lexbuf and state_55 lexbuf = Lexing.set_backtrack lexbuf action_9; match lexing.next_char lexbuf with 'z'|'y'|'x'|'w'|'v'|'u'|'t'|'s'|'r'|'q'|'p'|'o'|'n'|'m'|'l'|'k'|'j'|'i'|'h'|'g'|'f'|'e'|'d'|'c'|'b'|'a'|'Z'|'Y'|'X'|'W'|'V'|'U'|'T'|'S'|'R'|'Q'|'P'|'O'|'N'|'M'|'L'|'K'|'J'|'I'|'H'|'G'|'F'|'E'|'D'|'C'|'B'|'A'|'9'|'8'|'7'|'6'|'5'|'4'|'3'|'2'|'1'|'0'|'\'' -> state_59 lexbuf | _ -> lexing.backtrack lexbuf and state_56 lexbuf = Lexing.set_backtrack lexbuf action_2; match lexing.next_char lexbuf with 'z'|'y'|'x'|'w'|'v'|'u'|'t'|'s'|'r'|'q'|'p'|'n'|'m'|'l'|'k'|'j'|'i'|'h'|'g'|'f'|'e'|'d'|'c'|'b'|'a'|'Z'|'Y'|'X'|'W'|'V'|'U'|'T'|'S'|'R'|'Q'|'P'|'O'|'N'|'M'|'L'|'K'|'J'|'I'|'H'|'G'|'F'|'E'|'D'|'C'|'B'|'A'|'9'|'8'|'7'|'6'|'5'|'4'|'3'|'2'|'1'|'0'|'\'' -> state_59 lexbuf | 'o' -> state_61 lexbuf | '_' -> state_60 lexbuf | _ -> lexing.backtrack lexbuf and state_59 lexbuf = Lexing.set_backtrack lexbuf action_2; match lexing.next_char lexbuf with 'z'|'y'|'x'|'w'|'v'|'u'|'t'|'s'|'r'|'q'|'p'|'o'|'n'|'m'|'l'|'k'|'j'|'i'|'h'|'g'|'f'|'e'|'d'|'c'|'b'|'a'|'Z'|'Y'|'X'|'W'|'V'|'U'|'T'|'S'|'R'|'Q'|'P'|'O'|'N'|'M'|'L'|'K'|'J'|'I'|'H'|'G'|'F'|'E'|'D'|'C'|'B'|'A'|'9'|'8'|'7'|'6'|'5'|'4'|'3'|'2'|'1'|'0'|'\'' -> state_59 lexbuf | '_' -> state_60 lexbuf | _ -> lexing.backtrack lexbuf and state_60 lexbuf = match lexing.next_char lexbuf with 'z'|'y'|'x'|'w'|'v'|'u'|'t'|'s'|'r'|'q'|'p'|'o'|'n'|'m'|'l'|'k'|'j'|'i'|'h'|'g'|'f'|'e'|'d'|'c'|'b'|'a'|'Z'|'Y'|'X'|'W'|'V'|'U'|'T'|'S'|'R'|'Q'|'P'|'O'|'N'|'M'|'L'|'K'|'J'|'I'|'H'|'G'|'F'|'E'|'D'|'C'|'B'|'A'|'9'|'8'|'7'|'6'|'5'|'4'|'3'|'2'|'1'|'0'|'\'' -> state_59 lexbuf | _ -> lexing.backtrack lexbuf and state_61 lexbuf = Lexing.set_backtrack lexbuf action_2; match lexing.next_char lexbuf with 'z'|'y'|'x'|'w'|'v'|'u'|'t'|'s'|'r'|'q'|'p'|'o'|'n'|'m'|'l'|'k'|'j'|'i'|'h'|'g'|'e'|'d'|'c'|'b'|'a'|'Z'|'Y'|'X'|'W'|'V'|'U'|'T'|'S'|'R'|'Q'|'P'|'O'|'N'|'M'|'L'|'K'|'J'|'I'|'H'|'G'|'F'|'E'|'D'|'C'|'B'|'A'|'9'|'8'|'7'|'6'|'5'|'4'|'3'|'2'|'1'|'0'|'\'' -> state_59 lexbuf | 'f' -> state_62 lexbuf | '_' -> state_60 lexbuf | _ -> lexing.backtrack lexbuf and state_62 lexbuf = Lexing.set_backtrack lexbuf action_2; match lexing.next_char lexbuf with 'z'|'y'|'x'|'w'|'v'|'u'|'t'|'s'|'r'|'q'|'p'|'o'|'n'|'m'|'l'|'k'|'j'|'i'|'h'|'g'|'f'|'e'|'d'|'c'|'b'|'a'|'Z'|'Y'|'X'|'W'|'V'|'U'|'T'|'S'|'R'|'Q'|'P'|'O'|'N'|'M'|'L'|'K'|'J'|'I'|'H'|'G'|'F'|'E'|'D'|'C'|'B'|'A'|'9'|'8'|'7'|'6'|'5'|'4'|'3'|'2'|'1'|'0'|'\'' -> state_59 lexbuf | '_' -> state_60 lexbuf | _ -> lexing.backtrack lexbuf and state_65 lexbuf = Lexing.set_backtrack lexbuf action_0; match lexing.next_char lexbuf with ' '|'\013'|'\n'|'\t' -> state_65 lexbuf | _ -> lexing.backtrack lexbuf and main lexbuf = Lexing.init lexbuf; state_0 lexbuf and action lexbuf = Lexing.init lexbuf; state_1 lexbuf and string lexbuf = Lexing.init lexbuf; state_2 lexbuf and char lexbuf = Lexing.init lexbuf; state_3 lexbuf and comment lexbuf = Lexing.init lexbuf; state_4 lexbuf