def parse_ikkatsu_line
      s0 = @current_pos
      if match_str("P") != :failed
        if match_digit != :failed
          s4 = parse_masu
          if s4 != :failed
            s3 = []
            while s4 != :failed
              s3 << s4
              s4 = parse_masu
            end
          else
            s3 = :failed
          end
          if s3 != :failed
            s4 = parse_nl
            if s4 != :failed
              @reported_pos = s0
              s0 = s3
            else
              @current_pos = s0
              s0 = :failed
            end
          else
            @current_pos = s0
            s0 = :failed
          end
        else
          @current_pos = s0
          s0 = :failed
        end
      else
        @current_pos = s0
        s0 = :failed
      end
      s0
    end
def parse_ikkatsu_line
      s0 = @current_pos
      if match_str("P") != :failed
        if match_digit != :failed
          s4 = parse_masu
          if s4 != :failed
            s3 = []
            while s4 != :failed
              s3 << s4
              s4 = parse_masu
            end
          else
            s3 = :failed
          end
          if s3 != :failed
            s4 = parse_nl
            if s4 != :failed
              @reported_pos = s0
              s0 = s3
            else
              @current_pos = s0
              s0 = :failed
            end
          else
            @current_pos = s0
            s0 = :failed
          end
        else
          @current_pos = s0
          s0 = :failed
        end
      else
        @current_pos = s0
        s0 = :failed
      end
      s0
    end
ikkatsuline : "P" [1-9] masu+ nl