>> parse_ss_list at: "if (abc == xyz) {"
  >> lex_lit at: "if (abc == xyz) {"
    Lex: Trying "}"
  << lex_lit
  >> parse_ss at: "if (abc == xyz) {"
    >> parse_comment at: "if (abc == xyz) {"
      >> lex_regex at: "if (abc == xyz) {"
        Regex 1: pending data is: "if (abc == xyz) {"
        Trying "^//.*"
        Regex 6: pending data is: "if (abc == xyz) {"
      << lex_regex
    << parse_comment
    >> parse_bracketed_ss_list at: "if (abc == xyz) {"
      >> lex_lit at: "if (abc == xyz) {"
        Lex: Trying "{"
      << lex_lit
    << parse_bracketed_ss_list
    >> parse_case_label at: "if (abc == xyz) {"
      >> lex_lit at: "if (abc == xyz) {"
        Lex: Trying "case"
      << lex_lit
    << parse_case_label
    >> parse_label_statement at: "if (abc == xyz) {"
      >> lex_regex at: "if (abc == xyz) {"
        Regex 1: pending data is: "if (abc == xyz) {"
        Trying "^[A-Za-z_][A-Za-z_0-9]*"
        Regex 6: pending data is: "if (abc == xyz) {"
        Regex: pending data is: "if (abc == xyz) {"
        Regex "^[A-Za-z_][A-Za-z_0-9]*" matched "if" leaving ***" (abc == xyz) {"***
      << lex_regex MATCHED leaving: @@@"(abc == xyz) {"@@@
      >> lex_lit at: "(abc == xyz) {"
        Lex: Trying ":"
      << lex_lit
    << parse_label_statement
    >> parse_if_statement at: "if (abc == xyz) {"
      >> lex_lit at: "if (abc == xyz) {"
        Lex: Trying "if"
      << lex_lit MATCHED leaving: @@@"(abc == xyz) {"@@@
      >> lex_lit at: "(abc == xyz) {"
        Lex: Trying "("
      << lex_lit MATCHED leaving: @@@"abc == xyz) {"@@@
      >> parse_cond at: "abc == xyz) {"
        >> parse_expr at: "abc == xyz) {"
          >> parse_typed_var at: "abc == xyz) {"
            >> lex_lit at: "abc == xyz) {"
              Lex: Trying "("
            << lex_lit
            >> parse_opt_monop at: "abc == xyz) {"
              >> lex_lit at: "abc == xyz) {"
                Lex: Trying "-"
              << lex_lit
              >> lex_lit at: "abc == xyz) {"
                Lex: Trying "~"
              << lex_lit
              >> lex_lit at: "abc == xyz) {"
                Lex: Trying "!"
              << lex_lit
            << parse_opt_monop MATCHED leaving: @@@"abc == xyz) {"@@@
            >> parse_val at: "abc == xyz) {"
              >> lex_lit at: "abc == xyz) {"
                Lex: Trying "("
              << lex_lit
              >> parse_fn_call at: "abc == xyz) {"
                >> lex_regex at: "abc == xyz) {"
                  Regex 1: pending data is: "abc == xyz) {"
                  Trying "^[A-Za-z_][A-Za-z_0-9]*"
                  Regex 6: pending data is: "abc == xyz) {"
                  Regex: pending data is: "abc == xyz) {"
                  Regex "^[A-Za-z_][A-Za-z_0-9]*" matched "abc" leaving ***" == xyz) {"***
                << lex_regex MATCHED leaving: @@@"== xyz) {"@@@
                >> lex_lit at: "== xyz) {"
                  Lex: Trying "("
                << lex_lit
              << parse_fn_call
              >> parse_var at: "abc == xyz) {"
                >> lex_regex at: "abc == xyz) {"
                  Regex 1: pending data is: "abc == xyz) {"
                  Trying "^[A-Za-z_][A-Za-z_0-9]*"
                  Regex 6: pending data is: "abc == xyz) {"
                  Regex: pending data is: "abc == xyz) {"
                  Regex "^[A-Za-z_][A-Za-z_0-9]*" matched "abc" leaving ***" == xyz) {"***
                << lex_regex MATCHED leaving: @@@"== xyz) {"@@@
                >> parse_opt_index at: "== xyz) {"
                  >> lex_lit at: "== xyz) {"
                    Lex: Trying "["
                  << lex_lit
                << parse_opt_index MATCHED leaving: @@@"== xyz) {"@@@
              << parse_var MATCHED leaving: @@@"== xyz) {"@@@
            << parse_val MATCHED leaving: @@@"== xyz) {"@@@
          << parse_typed_var MATCHED leaving: @@@"== xyz) {"@@@
          >> parse_opt_binop at: "== xyz) {"
            >> parse_binop at: "== xyz) {"
              >> lex_lit at: "== xyz) {"
                Lex: Trying ">>"
              << lex_lit
              >> lex_lit at: "== xyz) {"
                Lex: Trying "<<"
              << lex_lit
              >> lex_lit at: "== xyz) {"
                Lex: Trying "+"
              << lex_lit
              >> lex_lit at: "== xyz) {"
                Lex: Trying "-"
              << lex_lit
              >> lex_lit at: "== xyz) {"
                Lex: Trying "&"
              << lex_lit
              >> lex_lit at: "== xyz) {"
                Lex: Trying "|"
              << lex_lit
              >> lex_lit at: "== xyz) {"
                Lex: Trying "^"
              << lex_lit
            << parse_binop
          << parse_opt_binop MATCHED leaving: @@@"== xyz) {"@@@
        << parse_expr MATCHED leaving: @@@"== xyz) {"@@@
        >> parse_opt_compare at: "== xyz) {"
          >> parse_compop at: "== xyz) {"
            >> lex_lit at: "== xyz) {"
              Lex: Trying "<="
            << lex_lit
            >> lex_lit at: "== xyz) {"
              Lex: Trying "<"
            << lex_lit
            >> lex_lit at: "== xyz) {"
              Lex: Trying ">="
            << lex_lit
            >> lex_lit at: "== xyz) {"
              Lex: Trying ">"
            << lex_lit
            >> lex_lit at: "== xyz) {"
              Lex: Trying "!="
            << lex_lit
            >> lex_lit at: "== xyz) {"
              Lex: Trying "=="
            << lex_lit MATCHED leaving: @@@"xyz) {"@@@
          << parse_compop MATCHED leaving: @@@"xyz) {"@@@
          >> parse_expr at: "xyz) {"
            >> parse_typed_var at: "xyz) {"
              >> lex_lit at: "xyz) {"
                Lex: Trying "("
              << lex_lit
              >> parse_opt_monop at: "xyz) {"
                >> lex_lit at: "xyz) {"
                  Lex: Trying "-"
                << lex_lit
                >> lex_lit at: "xyz) {"
                  Lex: Trying "~"
                << lex_lit
                >> lex_lit at: "xyz) {"
                  Lex: Trying "!"
                << lex_lit
              << parse_opt_monop MATCHED leaving: @@@"xyz) {"@@@
              >> parse_val at: "xyz) {"
                >> lex_lit at: "xyz) {"
                  Lex: Trying "("
                << lex_lit
                >> parse_fn_call at: "xyz) {"
                  >> lex_regex at: "xyz) {"
                    Regex 1: pending data is: "xyz) {"
                    Trying "^[A-Za-z_][A-Za-z_0-9]*"
                    Regex 6: pending data is: "xyz) {"
                    Regex: pending data is: "xyz) {"
                    Regex "^[A-Za-z_][A-Za-z_0-9]*" matched "xyz" leaving ***") {"***
                  << lex_regex MATCHED leaving: @@@") {"@@@
                  >> lex_lit at: ") {"
                    Lex: Trying "("
                  << lex_lit
                << parse_fn_call
                >> parse_var at: "xyz) {"
                  >> lex_regex at: "xyz) {"
                    Regex 1: pending data is: "xyz) {"
                    Trying "^[A-Za-z_][A-Za-z_0-9]*"
                    Regex 6: pending data is: "xyz) {"
                    Regex: pending data is: "xyz) {"
                    Regex "^[A-Za-z_][A-Za-z_0-9]*" matched "xyz" leaving ***") {"***
                  << lex_regex MATCHED leaving: @@@") {"@@@
                  >> parse_opt_index at: ") {"
                    >> lex_lit at: ") {"
                      Lex: Trying "["
                    << lex_lit
                  << parse_opt_index MATCHED leaving: @@@") {"@@@
                << parse_var MATCHED leaving: @@@") {"@@@
              << parse_val MATCHED leaving: @@@") {"@@@
            << parse_typed_var MATCHED leaving: @@@") {"@@@
            >> parse_opt_binop at: ") {"
              >> parse_binop at: ") {"
                >> lex_lit at: ") {"
                  Lex: Trying ">>"
                << lex_lit
                >> lex_lit at: ") {"
                  Lex: Trying "<<"
                << lex_lit
                >> lex_lit at: ") {"
                  Lex: Trying "+"
                << lex_lit
                >> lex_lit at: ") {"
                  Lex: Trying "-"
                << lex_lit
                >> lex_lit at: ") {"
                  Lex: Trying "&"
                << lex_lit
                >> lex_lit at: ") {"
                  Lex: Trying "|"
                << lex_lit
                >> lex_lit at: ") {"
                  Lex: Trying "^"
                << lex_lit
              << parse_binop
            << parse_opt_binop MATCHED leaving: @@@") {"@@@
          << parse_expr MATCHED leaving: @@@") {"@@@
        << parse_opt_compare MATCHED leaving: @@@") {"@@@
      << parse_cond MATCHED leaving: @@@") {"@@@
      >> lex_lit at: ") {"
        Lex: Trying ")"
      << lex_lit MATCHED leaving: @@@"{"@@@
      >> parse_bracketed_ss_list at: "{"
        >> lex_lit at: "{"
          Lex: Trying "{"
        << lex_lit MATCHED leaving: @@@"fred = jim;"@@@
        >> parse_ss_list at: "fred = jim;"
          >> lex_lit at: "fred = jim;"
            Lex: Trying "}"
          << lex_lit
          >> parse_ss at: "fred = jim;"
            >> parse_comment at: "fred = jim;"
              >> lex_regex at: "fred = jim;"
                Regex 1: pending data is: "fred = jim;"
                Trying "^//.*"
                Regex 6: pending data is: "fred = jim;"
              << lex_regex
            << parse_comment
            >> parse_bracketed_ss_list at: "fred = jim;"
              >> lex_lit at: "fred = jim;"
                Lex: Trying "{"
              << lex_lit
            << parse_bracketed_ss_list
            >> parse_case_label at: "fred = jim;"
              >> lex_lit at: "fred = jim;"
                Lex: Trying "case"
              << lex_lit
            << parse_case_label
            >> parse_label_statement at: "fred = jim;"
              >> lex_regex at: "fred = jim;"
                Regex 1: pending data is: "fred = jim;"
                Trying "^[A-Za-z_][A-Za-z_0-9]*"
                Regex 6: pending data is: "fred = jim;"
                Regex: pending data is: "fred = jim;"
                Regex "^[A-Za-z_][A-Za-z_0-9]*" matched "fred" leaving ***" = jim;"***
              << lex_regex MATCHED leaving: @@@"= jim;"@@@
              >> lex_lit at: "= jim;"
                Lex: Trying ":"
              << lex_lit
            << parse_label_statement
            >> parse_if_statement at: "fred = jim;"
              >> lex_lit at: "fred = jim;"
                Lex: Trying "if"
              << lex_lit
            << parse_if_statement
            >> parse_goto_statement at: "fred = jim;"
              >> lex_lit at: "fred = jim;"
                Lex: Trying "goto"
              << lex_lit
            << parse_goto_statement
            >> parse_procedure_call at: "fred = jim;"
              >> lex_regex at: "fred = jim;"
                Regex 1: pending data is: "fred = jim;"
                Trying "^[A-Za-z_][A-Za-z_0-9]*"
                Regex 6: pending data is: "fred = jim;"
                Regex: pending data is: "fred = jim;"
                Regex "^[A-Za-z_][A-Za-z_0-9]*" matched "fred" leaving ***" = jim;"***
              << lex_regex MATCHED leaving: @@@"= jim;"@@@
              >> lex_lit at: "= jim;"
                Lex: Trying "("
              << lex_lit
            << parse_procedure_call
            >> parse_string_procedure_call at: "fred = jim;"
              >> lex_regex at: "fred = jim;"
                Regex 1: pending data is: "fred = jim;"
                Trying "^[A-Za-z_][A-Za-z_0-9]*"
                Regex 6: pending data is: "fred = jim;"
                Regex: pending data is: "fred = jim;"
                Regex "^[A-Za-z_][A-Za-z_0-9]*" matched "fred" leaving ***" = jim;"***
              << lex_regex MATCHED leaving: @@@"= jim;"@@@
              >> lex_lit at: "= jim;"
                Lex: Trying "("
              << lex_lit
            << parse_string_procedure_call
            >> parse_jump_statement at: "fred = jim;"
              >> lex_lit at: "fred = jim;"
                Lex: Trying "JUMP"
              << lex_lit
            << parse_jump_statement
            >> parse_assignment at: "fred = jim;"
              >> parse_var at: "fred = jim;"
                >> lex_regex at: "fred = jim;"
                  Regex 1: pending data is: "fred = jim;"
                  Trying "^[A-Za-z_][A-Za-z_0-9]*"
                  Regex 6: pending data is: "fred = jim;"
                  Regex: pending data is: "fred = jim;"
                  Regex "^[A-Za-z_][A-Za-z_0-9]*" matched "fred" leaving ***" = jim;"***
                << lex_regex MATCHED leaving: @@@"= jim;"@@@
                >> parse_opt_index at: "= jim;"
                  >> lex_lit at: "= jim;"
                    Lex: Trying "["
                  << lex_lit
                << parse_opt_index MATCHED leaving: @@@"= jim;"@@@
              << parse_var MATCHED leaving: @@@"= jim;"@@@
              >> lex_lit at: "= jim;"
                Lex: Trying "="
              << lex_lit MATCHED leaving: @@@"jim;"@@@
              >> parse_expr at: "jim;"
                >> parse_typed_var at: "jim;"
                  >> lex_lit at: "jim;"
                    Lex: Trying "("
                  << lex_lit
                  >> parse_opt_monop at: "jim;"
                    >> lex_lit at: "jim;"
                      Lex: Trying "-"
                    << lex_lit
                    >> lex_lit at: "jim;"
                      Lex: Trying "~"
                    << lex_lit
                    >> lex_lit at: "jim;"
                      Lex: Trying "!"
                    << lex_lit
                  << parse_opt_monop MATCHED leaving: @@@"jim;"@@@
                  >> parse_val at: "jim;"
                    >> lex_lit at: "jim;"
                      Lex: Trying "("
                    << lex_lit
                    >> parse_fn_call at: "jim;"
                      >> lex_regex at: "jim;"
                        Regex 1: pending data is: "jim;"
                        Trying "^[A-Za-z_][A-Za-z_0-9]*"
                        Regex 6: pending data is: "jim;"
                        Regex: pending data is: "jim;"
                        Regex "^[A-Za-z_][A-Za-z_0-9]*" matched "jim" leaving ***";"***
                      << lex_regex MATCHED leaving: @@@";"@@@
                      >> lex_lit at: ";"
                        Lex: Trying "("
                      << lex_lit
                    << parse_fn_call
                    >> parse_var at: "jim;"
                      >> lex_regex at: "jim;"
                        Regex 1: pending data is: "jim;"
                        Trying "^[A-Za-z_][A-Za-z_0-9]*"
                        Regex 6: pending data is: "jim;"
                        Regex: pending data is: "jim;"
                        Regex "^[A-Za-z_][A-Za-z_0-9]*" matched "jim" leaving ***";"***
                      << lex_regex MATCHED leaving: @@@";"@@@
                      >> parse_opt_index at: ";"
                        >> lex_lit at: ";"
                          Lex: Trying "["
                        << lex_lit
                      << parse_opt_index MATCHED leaving: @@@";"@@@
                    << parse_var MATCHED leaving: @@@";"@@@
                  << parse_val MATCHED leaving: @@@";"@@@
                << parse_typed_var MATCHED leaving: @@@";"@@@
                >> parse_opt_binop at: ";"
                  >> parse_binop at: ";"
                    >> lex_lit at: ";"
                      Lex: Trying ">>"
                    << lex_lit
                    >> lex_lit at: ";"
                      Lex: Trying "<<"
                    << lex_lit
                    >> lex_lit at: ";"
                      Lex: Trying "+"
                    << lex_lit
                    >> lex_lit at: ";"
                      Lex: Trying "-"
                    << lex_lit
                    >> lex_lit at: ";"
                      Lex: Trying "&"
                    << lex_lit
                    >> lex_lit at: ";"
                      Lex: Trying "|"
                    << lex_lit
                    >> lex_lit at: ";"
                      Lex: Trying "^"
                    << lex_lit
                  << parse_binop
                << parse_opt_binop MATCHED leaving: @@@";"@@@
              << parse_expr MATCHED leaving: @@@";"@@@
              >> lex_lit at: ";"
                Lex: Trying ";"
              << lex_lit MATCHED leaving: @@@"goto L00C3;"@@@
            << parse_assignment MATCHED leaving: @@@"goto L00C3;"@@@
          << parse_ss MATCHED leaving: @@@"goto L00C3;"@@@
          >> parse_ss_list at: "goto L00C3;"
            >> lex_lit at: "goto L00C3;"
              Lex: Trying "}"
            << lex_lit
            >> parse_ss at: "goto L00C3;"
              >> parse_comment at: "goto L00C3;"
                >> lex_regex at: "goto L00C3;"
                  Regex 1: pending data is: "goto L00C3;"
                  Trying "^//.*"
                  Regex 6: pending data is: "goto L00C3;"
                << lex_regex
              << parse_comment
              >> parse_bracketed_ss_list at: "goto L00C3;"
                >> lex_lit at: "goto L00C3;"
                  Lex: Trying "{"
                << lex_lit
              << parse_bracketed_ss_list
              >> parse_case_label at: "goto L00C3;"
                >> lex_lit at: "goto L00C3;"
                  Lex: Trying "case"
                << lex_lit
              << parse_case_label
              >> parse_label_statement at: "goto L00C3;"
                >> lex_regex at: "goto L00C3;"
                  Regex 1: pending data is: "goto L00C3;"
                  Trying "^[A-Za-z_][A-Za-z_0-9]*"
                  Regex 6: pending data is: "goto L00C3;"
                  Regex: pending data is: "goto L00C3;"
                  Regex "^[A-Za-z_][A-Za-z_0-9]*" matched "goto" leaving ***" L00C3;"***
                << lex_regex MATCHED leaving: @@@"L00C3;"@@@
                >> lex_lit at: "L00C3;"
                  Lex: Trying ":"
                << lex_lit
              << parse_label_statement
              >> parse_if_statement at: "goto L00C3;"
                >> lex_lit at: "goto L00C3;"
                  Lex: Trying "if"
                << lex_lit
              << parse_if_statement
              >> parse_goto_statement at: "goto L00C3;"
                >> lex_lit at: "goto L00C3;"
                  Lex: Trying "goto"
                << lex_lit MATCHED leaving: @@@"L00C3;"@@@
                >> lex_regex at: "L00C3;"
                  Regex 1: pending data is: "L00C3;"
                  Trying "^[A-Za-z_][A-Za-z_0-9]*"
                  Regex 6: pending data is: "L00C3;"
                  Regex: pending data is: "L00C3;"
                  Regex "^[A-Za-z_][A-Za-z_0-9]*" matched "L00C3" leaving ***";"***
                << lex_regex MATCHED leaving: @@@";"@@@
                >> lex_lit at: ";"
                  Lex: Trying ";"
                << lex_lit MATCHED leaving: @@@"}"@@@
              << parse_goto_statement MATCHED leaving: @@@"}"@@@
            << parse_ss MATCHED leaving: @@@"}"@@@
            >> parse_ss_list at: "}"
              >> lex_lit at: "}"
                Lex: Trying "}"
              << lex_lit MATCHED leaving: @@@"<EOF>"@@@
            << parse_ss_list MATCHED leaving: @@@"}"@@@
          << parse_ss_list MATCHED leaving: @@@"}"@@@
        << parse_ss_list MATCHED leaving: @@@"}"@@@
        >> lex_lit at: "}"
          Lex: Trying "}"
        << lex_lit MATCHED leaving: @@@"<EOF>"@@@
      << parse_bracketed_ss_list MATCHED leaving: @@@"<EOF>"@@@
    << parse_if_statement MATCHED leaving: @@@"<EOF>"@@@
  << parse_ss MATCHED leaving: @@@"<EOF>"@@@
  >> parse_ss_list at: "(null)"
    >> lex_lit at: "(null)"
      Lex: Trying "}"
    << lex_lit
  << parse_ss_list MATCHED leaving: @@@"<EOF>"@@@
<< parse_ss_list MATCHED leaving: @@@"<EOF>"@@@
4 lines of 4 compiled.
