
.namespace []
.sub "_block1000"  :anon :subid("10_1372809885.37052")
.annotate 'file', "compilers/data_json/JSON.nqp"
.annotate 'line', 0
    .const 'Sub' $P1125 = "43_1372809885.37052" 
    capture_lex $P1125
    .const 'Sub' $P1067 = "33_1372809885.37052" 
    capture_lex $P1067
    .const 'Sub' $P1010 = "12_1372809885.37052" 
    capture_lex $P1010
    .const 'Sub' $P1003 = "11_1372809885.37052" 
    capture_lex $P1003
.annotate 'line', 140
    .const 'Sub' $P1003 = "11_1372809885.37052" 
    newclosure $P1008, $P1003
    set $P1002, $P1008
    .lex "from_json", $P1002
.annotate 'line', 1
    $P0 = find_dynamic_lex "$*CTXSAVE"
    if null $P0 goto ctxsave_done
    $I0 = can $P0, "ctxsave"
    unless $I0 goto ctxsave_done
    $P0."ctxsave"()
  ctxsave_done:
.annotate 'line', 44
    .const 'Sub' $P1010 = "12_1372809885.37052" 
    capture_lex $P1010
    $P1010()
.annotate 'line', 87
    .const 'Sub' $P1067 = "33_1372809885.37052" 
    capture_lex $P1067
    $P1067()
.annotate 'line', 131
    .const 'Sub' $P1125 = "43_1372809885.37052" 
    capture_lex $P1125
    $P1125()
.annotate 'line', 1
    find_lex $P102, "from_json"
    .return ($P102)
    .const 'Sub' $P1127 = "44_1372809885.37052" 
    .return ($P1127)
.end


.namespace []
.sub "" :load :init :subid("post45") :outer("10_1372809885.37052")
.annotate 'file', "compilers/data_json/JSON.nqp"
.annotate 'line', 0
    .const 'Sub' $P1001 = "10_1372809885.37052" 
    .local pmc block
    set block, $P1001
.annotate 'line', 41
    load_bytecode "P6Regex.pbc"
.annotate 'line', 40
    $P1129 = get_root_global ["parrot"], "P6metaclass"
    $P1129."new_class"("JSON::Grammar", "HLL::Grammar" :named("parent"))
    $P1130 = get_root_global ["parrot"], "P6metaclass"
    $P1130."new_class"("JSON::Actions", "HLL::Actions" :named("parent"))
    $P1131 = get_root_global ["parrot"], "P6metaclass"
    $P1131."new_class"("JSON::Compiler", "HLL::Compiler" :named("parent"))
.end


.namespace []
.include "except_types.pasm"
.sub "from_json"  :subid("11_1372809885.37052") :outer("10_1372809885.37052")
    .param pmc param_1006
.annotate 'file', "compilers/data_json/JSON.nqp"
.annotate 'line', 140
    new $P1005, 'ExceptionHandler', [.CONTROL_RETURN]
    set_label $P1005, control_1004
    push_eh $P1005
    .lex "$value", param_1006
.annotate 'line', 141
    new $P100, "Undef"
    set $P1007, $P100
    .lex "$result", $P1007
    get_hll_global $P101, ["JSON"], "Compiler"
    find_lex $P102, "$value"
    get_hll_global $P103, ["JSON"], "Actions"
    $P104 = $P103."new"()
    $P105 = $P101."eval"($P102, $P104 :named("actions"))
    store_lex "$result", $P105
.annotate 'line', 142
    new $P101, "Exception"
    set $P101['type'], .CONTROL_RETURN
    find_lex $P102, "$result"
    setattribute $P101, 'payload', $P102
    throw $P101
.annotate 'line', 140
    .return ()
  control_1004:
    .local pmc exception 
    .get_results (exception) 
    getattribute $P101, exception, "payload"
    .return ($P101)
.end


.namespace ["JSON";"Grammar"]
.sub "_block1009"  :subid("12_1372809885.37052") :outer("10_1372809885.37052")
.annotate 'file', "compilers/data_json/JSON.nqp"
.annotate 'line', 44
    .const 'Sub' $P1062 = "31_1372809885.37052" 
    capture_lex $P1062
    .const 'Sub' $P1058 = "29_1372809885.37052" 
    capture_lex $P1058
    .const 'Sub' $P1054 = "27_1372809885.37052" 
    capture_lex $P1054
    .const 'Sub' $P1050 = "25_1372809885.37052" 
    capture_lex $P1050
    .const 'Sub' $P1042 = "23_1372809885.37052" 
    capture_lex $P1042
    .const 'Sub' $P1033 = "21_1372809885.37052" 
    capture_lex $P1033
    .const 'Sub' $P1021 = "19_1372809885.37052" 
    capture_lex $P1021
    .const 'Sub' $P1017 = "17_1372809885.37052" 
    capture_lex $P1017
    .const 'Sub' $P1011 = "13_1372809885.37052" 
    capture_lex $P1011
    .const 'Sub' $P1062 = "31_1372809885.37052" 
    capture_lex $P1062
    .return ($P1062)
.end


.namespace ["JSON";"Grammar"]
.sub "TOP"  :subid("13_1372809885.37052") :method :outer("12_1372809885.37052")
.annotate 'file', "compilers/data_json/JSON.nqp"
.annotate 'line', 44
    .local string rx1012_tgt
    .local int rx1012_pos
    .local int rx1012_off
    .local int rx1012_eos
    .local int rx1012_rep
    .local pmc rx1012_cur
    .local pmc rx1012_debug
    (rx1012_cur, rx1012_pos, rx1012_tgt, $I10) = self."!cursor_start"()
    getattribute rx1012_debug, rx1012_cur, "$!debug"
    .lex unicode:"$\x{a2}", rx1012_cur
    .local pmc match
    .lex "$/", match
    length rx1012_eos, rx1012_tgt
    gt rx1012_pos, rx1012_eos, rx1012_done
    set rx1012_off, 0
    lt rx1012_pos, 2, rx1012_start
    sub rx1012_off, rx1012_pos, 1
    substr rx1012_tgt, rx1012_tgt, rx1012_off
  rx1012_start:
    eq $I10, 1, rx1012_restart
    if_null rx1012_debug, debug_46
    rx1012_cur."!cursor_debug"("START", "TOP")
  debug_46:
    $I10 = self.'from'()
    ne $I10, -1, rxscan1014_done
    goto rxscan1014_scan
  rxscan1014_loop:
    ($P10) = rx1012_cur."from"()
    inc $P10
    set rx1012_pos, $P10
    ge rx1012_pos, rx1012_eos, rxscan1014_done
  rxscan1014_scan:
    set_addr $I10, rxscan1014_loop
    rx1012_cur."!mark_push"(0, rx1012_pos, $I10)
  rxscan1014_done:
.annotate 'line', 45
  # rx subrule "ws" subtype=method negate=
    rx1012_cur."!cursor_pos"(rx1012_pos)
    $P10 = rx1012_cur."ws"()
    unless $P10, rx1012_fail
    rx1012_pos = $P10."pos"()
  # rx subrule "value" subtype=capture negate=
    rx1012_cur."!cursor_pos"(rx1012_pos)
    $P10 = rx1012_cur."value"()
    unless $P10, rx1012_fail
    rx1012_cur."!mark_push"(0, -1, 0, $P10)
    $P10."!cursor_names"("value")
    rx1012_pos = $P10."pos"()
  # rx subrule "ws" subtype=method negate=
    rx1012_cur."!cursor_pos"(rx1012_pos)
    $P10 = rx1012_cur."ws"()
    unless $P10, rx1012_fail
    rx1012_pos = $P10."pos"()
  # rx pass
    rx1012_cur."!cursor_pass"(rx1012_pos, "TOP")
    if_null rx1012_debug, debug_47
    rx1012_cur."!cursor_debug"("PASS", "TOP", " at pos=", rx1012_pos)
  debug_47:
    .return (rx1012_cur)
  rx1012_restart:
.annotate 'line', 44
    if_null rx1012_debug, debug_48
    rx1012_cur."!cursor_debug"("NEXT", "TOP")
  debug_48:
  rx1012_fail:
    (rx1012_rep, rx1012_pos, $I10, $P10) = rx1012_cur."!mark_fail"(0)
    lt rx1012_pos, -1, rx1012_done
    eq rx1012_pos, -1, rx1012_fail
    jump $I10
  rx1012_done:
    rx1012_cur."!cursor_fail"()
    if_null rx1012_debug, debug_49
    rx1012_cur."!cursor_debug"("FAIL", "TOP")
  debug_49:
    .return (rx1012_cur)
    .return ()
.end


.namespace ["JSON";"Grammar"]
.sub "!PREFIX__TOP"  :subid("14_1372809885.37052") :method
.annotate 'file', "compilers/data_json/JSON.nqp"
.annotate 'line', 44
    $P102 = self."!PREFIX__!subrule"("ws", "")
    new $P103, "ResizablePMCArray"
    push $P103, $P102
    .return ($P103)
.end


.namespace ["JSON";"Grammar"]
.sub "value"  :subid("15_1372809885.37052") :method
.annotate 'file', "compilers/data_json/JSON.nqp"
.annotate 'line', 47
    $P102 = self."!protoregex"("value")
    .return ($P102)
.end


.namespace ["JSON";"Grammar"]
.sub "!PREFIX__value"  :subid("16_1372809885.37052") :method
.annotate 'file', "compilers/data_json/JSON.nqp"
.annotate 'line', 47
    $P103 = self."!PREFIX__!protoregex"("value")
    .return ($P103)
.end


.namespace ["JSON";"Grammar"]
.sub "value:sym<string>"  :subid("17_1372809885.37052") :method :outer("12_1372809885.37052")
.annotate 'file', "compilers/data_json/JSON.nqp"
.annotate 'line', 44
    .local string rx1018_tgt
    .local int rx1018_pos
    .local int rx1018_off
    .local int rx1018_eos
    .local int rx1018_rep
    .local pmc rx1018_cur
    .local pmc rx1018_debug
    (rx1018_cur, rx1018_pos, rx1018_tgt, $I10) = self."!cursor_start"()
    getattribute rx1018_debug, rx1018_cur, "$!debug"
    .lex unicode:"$\x{a2}", rx1018_cur
    .local pmc match
    .lex "$/", match
    length rx1018_eos, rx1018_tgt
    gt rx1018_pos, rx1018_eos, rx1018_done
    set rx1018_off, 0
    lt rx1018_pos, 2, rx1018_start
    sub rx1018_off, rx1018_pos, 1
    substr rx1018_tgt, rx1018_tgt, rx1018_off
  rx1018_start:
    eq $I10, 1, rx1018_restart
    if_null rx1018_debug, debug_50
    rx1018_cur."!cursor_debug"("START", "value:sym<string>")
  debug_50:
    $I10 = self.'from'()
    ne $I10, -1, rxscan1020_done
    goto rxscan1020_scan
  rxscan1020_loop:
    ($P10) = rx1018_cur."from"()
    inc $P10
    set rx1018_pos, $P10
    ge rx1018_pos, rx1018_eos, rxscan1020_done
  rxscan1020_scan:
    set_addr $I10, rxscan1020_loop
    rx1018_cur."!mark_push"(0, rx1018_pos, $I10)
  rxscan1020_done:
.annotate 'line', 49
  # rx subrule "string" subtype=capture negate=
    rx1018_cur."!cursor_pos"(rx1018_pos)
    $P10 = rx1018_cur."string"()
    unless $P10, rx1018_fail
    rx1018_cur."!mark_push"(0, -1, 0, $P10)
    $P10."!cursor_names"("string")
    rx1018_pos = $P10."pos"()
  # rx pass
    rx1018_cur."!cursor_pass"(rx1018_pos, "value:sym<string>")
    if_null rx1018_debug, debug_51
    rx1018_cur."!cursor_debug"("PASS", "value:sym<string>", " at pos=", rx1018_pos)
  debug_51:
    .return (rx1018_cur)
  rx1018_restart:
.annotate 'line', 44
    if_null rx1018_debug, debug_52
    rx1018_cur."!cursor_debug"("NEXT", "value:sym<string>")
  debug_52:
  rx1018_fail:
    (rx1018_rep, rx1018_pos, $I10, $P10) = rx1018_cur."!mark_fail"(0)
    lt rx1018_pos, -1, rx1018_done
    eq rx1018_pos, -1, rx1018_fail
    jump $I10
  rx1018_done:
    rx1018_cur."!cursor_fail"()
    if_null rx1018_debug, debug_53
    rx1018_cur."!cursor_debug"("FAIL", "value:sym<string>")
  debug_53:
    .return (rx1018_cur)
    .return ()
.end


.namespace ["JSON";"Grammar"]
.sub "!PREFIX__value:sym<string>"  :subid("18_1372809885.37052") :method
.annotate 'file', "compilers/data_json/JSON.nqp"
.annotate 'line', 44
    $P102 = self."!PREFIX__!subrule"("string", "")
    new $P103, "ResizablePMCArray"
    push $P103, $P102
    .return ($P103)
.end


.namespace ["JSON";"Grammar"]
.sub "value:sym<number>"  :subid("19_1372809885.37052") :method :outer("12_1372809885.37052")
.annotate 'file', "compilers/data_json/JSON.nqp"
.annotate 'line', 44
    .local string rx1022_tgt
    .local int rx1022_pos
    .local int rx1022_off
    .local int rx1022_eos
    .local int rx1022_rep
    .local pmc rx1022_cur
    .local pmc rx1022_debug
    (rx1022_cur, rx1022_pos, rx1022_tgt, $I10) = self."!cursor_start"()
    getattribute rx1022_debug, rx1022_cur, "$!debug"
    .lex unicode:"$\x{a2}", rx1022_cur
    .local pmc match
    .lex "$/", match
    length rx1022_eos, rx1022_tgt
    gt rx1022_pos, rx1022_eos, rx1022_done
    set rx1022_off, 0
    lt rx1022_pos, 2, rx1022_start
    sub rx1022_off, rx1022_pos, 1
    substr rx1022_tgt, rx1022_tgt, rx1022_off
  rx1022_start:
    eq $I10, 1, rx1022_restart
    if_null rx1022_debug, debug_54
    rx1022_cur."!cursor_debug"("START", "value:sym<number>")
  debug_54:
    $I10 = self.'from'()
    ne $I10, -1, rxscan1024_done
    goto rxscan1024_scan
  rxscan1024_loop:
    ($P10) = rx1022_cur."from"()
    inc $P10
    set rx1022_pos, $P10
    ge rx1022_pos, rx1022_eos, rxscan1024_done
  rxscan1024_scan:
    set_addr $I10, rxscan1024_loop
    rx1022_cur."!mark_push"(0, rx1022_pos, $I10)
  rxscan1024_done:
.annotate 'line', 52
  # rx rxquantr1025 ** 0..1
    set_addr $I10, rxquantr1025_done
    rx1022_cur."!mark_push"(0, rx1022_pos, $I10)
  rxquantr1025_loop:
  # rx literal  "-"
    add $I11, rx1022_pos, 1
    gt $I11, rx1022_eos, rx1022_fail
    sub $I11, rx1022_pos, rx1022_off
    ord $I11, rx1022_tgt, $I11
    ne $I11, 45, rx1022_fail
    add rx1022_pos, 1
    set_addr $I10, rxquantr1025_done
    (rx1022_rep) = rx1022_cur."!mark_commit"($I10)
  rxquantr1025_done:
  alt1026_0:
.annotate 'line', 53
    set_addr $I10, alt1026_1
    rx1022_cur."!mark_push"(0, rx1022_pos, $I10)
  # rx enumcharlist negate=0 
    ge rx1022_pos, rx1022_eos, rx1022_fail
    sub $I10, rx1022_pos, rx1022_off
    substr $S10, rx1022_tgt, $I10, 1
    index $I11, "123456789", $S10
    lt $I11, 0, rx1022_fail
    inc rx1022_pos
  # rx enumcharlist_q negate=0  r 1..-1
    sub $I10, rx1022_pos, rx1022_off
    set rx1022_rep, 0
    sub $I12, rx1022_eos, rx1022_pos
  rxenumcharlistq1027_loop:
    le $I12, 0, rxenumcharlistq1027_done
    substr $S10, rx1022_tgt, $I10, 1
    index $I11, "0123456789", $S10
    lt $I11, 0, rxenumcharlistq1027_done
    inc rx1022_rep
    inc $I10
    dec $I12
    goto rxenumcharlistq1027_loop
  rxenumcharlistq1027_done:
    lt rx1022_rep, 1, rx1022_fail
    add rx1022_pos, rx1022_pos, rx1022_rep
    goto alt1026_end
  alt1026_1:
  # rx enumcharlist negate=0 
    ge rx1022_pos, rx1022_eos, rx1022_fail
    sub $I10, rx1022_pos, rx1022_off
    substr $S10, rx1022_tgt, $I10, 1
    index $I11, "0123456789", $S10
    lt $I11, 0, rx1022_fail
    inc rx1022_pos
  alt1026_end:
.annotate 'line', 54
  # rx rxquantr1028 ** 0..1
    set_addr $I10, rxquantr1028_done
    rx1022_cur."!mark_push"(0, rx1022_pos, $I10)
  rxquantr1028_loop:
  # rx literal  "."
    add $I11, rx1022_pos, 1
    gt $I11, rx1022_eos, rx1022_fail
    sub $I11, rx1022_pos, rx1022_off
    ord $I11, rx1022_tgt, $I11
    ne $I11, 46, rx1022_fail
    add rx1022_pos, 1
  # rx enumcharlist_q negate=0  r 1..-1
    sub $I10, rx1022_pos, rx1022_off
    set rx1022_rep, 0
    sub $I12, rx1022_eos, rx1022_pos
  rxenumcharlistq1029_loop:
    le $I12, 0, rxenumcharlistq1029_done
    substr $S10, rx1022_tgt, $I10, 1
    index $I11, "0123456789", $S10
    lt $I11, 0, rxenumcharlistq1029_done
    inc rx1022_rep
    inc $I10
    dec $I12
    goto rxenumcharlistq1029_loop
  rxenumcharlistq1029_done:
    lt rx1022_rep, 1, rx1022_fail
    add rx1022_pos, rx1022_pos, rx1022_rep
    set_addr $I10, rxquantr1028_done
    (rx1022_rep) = rx1022_cur."!mark_commit"($I10)
  rxquantr1028_done:
.annotate 'line', 55
  # rx rxquantr1030 ** 0..1
    set_addr $I10, rxquantr1030_done
    rx1022_cur."!mark_push"(0, rx1022_pos, $I10)
  rxquantr1030_loop:
  # rx enumcharlist negate=0 
    ge rx1022_pos, rx1022_eos, rx1022_fail
    sub $I10, rx1022_pos, rx1022_off
    substr $S10, rx1022_tgt, $I10, 1
    index $I11, "Ee", $S10
    lt $I11, 0, rx1022_fail
    inc rx1022_pos
  # rx enumcharlist_q negate=0  r 0..1
    sub $I10, rx1022_pos, rx1022_off
    set rx1022_rep, 0
    sub $I12, rx1022_eos, rx1022_pos
    le $I12, 1, rxenumcharlistq1031_loop
    set $I12, 1
  rxenumcharlistq1031_loop:
    le $I12, 0, rxenumcharlistq1031_done
    substr $S10, rx1022_tgt, $I10, 1
    index $I11, "+-", $S10
    lt $I11, 0, rxenumcharlistq1031_done
    inc rx1022_rep
  rxenumcharlistq1031_done:
    add rx1022_pos, rx1022_pos, rx1022_rep
  # rx enumcharlist_q negate=0  r 1..-1
    sub $I10, rx1022_pos, rx1022_off
    set rx1022_rep, 0
    sub $I12, rx1022_eos, rx1022_pos
  rxenumcharlistq1032_loop:
    le $I12, 0, rxenumcharlistq1032_done
    substr $S10, rx1022_tgt, $I10, 1
    index $I11, "0123456789", $S10
    lt $I11, 0, rxenumcharlistq1032_done
    inc rx1022_rep
    inc $I10
    dec $I12
    goto rxenumcharlistq1032_loop
  rxenumcharlistq1032_done:
    lt rx1022_rep, 1, rx1022_fail
    add rx1022_pos, rx1022_pos, rx1022_rep
    set_addr $I10, rxquantr1030_done
    (rx1022_rep) = rx1022_cur."!mark_commit"($I10)
  rxquantr1030_done:
.annotate 'line', 51
  # rx pass
    rx1022_cur."!cursor_pass"(rx1022_pos, "value:sym<number>")
    if_null rx1022_debug, debug_55
    rx1022_cur."!cursor_debug"("PASS", "value:sym<number>", " at pos=", rx1022_pos)
  debug_55:
    .return (rx1022_cur)
  rx1022_restart:
.annotate 'line', 44
    if_null rx1022_debug, debug_56
    rx1022_cur."!cursor_debug"("NEXT", "value:sym<number>")
  debug_56:
  rx1022_fail:
    (rx1022_rep, rx1022_pos, $I10, $P10) = rx1022_cur."!mark_fail"(0)
    lt rx1022_pos, -1, rx1022_done
    eq rx1022_pos, -1, rx1022_fail
    jump $I10
  rx1022_done:
    rx1022_cur."!cursor_fail"()
    if_null rx1022_debug, debug_57
    rx1022_cur."!cursor_debug"("FAIL", "value:sym<number>")
  debug_57:
    .return (rx1022_cur)
    .return ()
.end


.namespace ["JSON";"Grammar"]
.sub "!PREFIX__value:sym<number>"  :subid("20_1372809885.37052") :method
.annotate 'file', "compilers/data_json/JSON.nqp"
.annotate 'line', 44
    new $P102, "ResizablePMCArray"
    push $P102, ""
    .return ($P102)
.end


.namespace ["JSON";"Grammar"]
.sub "value:sym<array>"  :subid("21_1372809885.37052") :method :outer("12_1372809885.37052")
.annotate 'file', "compilers/data_json/JSON.nqp"
.annotate 'line', 44
    .local string rx1034_tgt
    .local int rx1034_pos
    .local int rx1034_off
    .local int rx1034_eos
    .local int rx1034_rep
    .local pmc rx1034_cur
    .local pmc rx1034_debug
    (rx1034_cur, rx1034_pos, rx1034_tgt, $I10) = self."!cursor_start"()
    rx1034_cur."!cursor_caparray"("value")
    getattribute rx1034_debug, rx1034_cur, "$!debug"
    .lex unicode:"$\x{a2}", rx1034_cur
    .local pmc match
    .lex "$/", match
    length rx1034_eos, rx1034_tgt
    gt rx1034_pos, rx1034_eos, rx1034_done
    set rx1034_off, 0
    lt rx1034_pos, 2, rx1034_start
    sub rx1034_off, rx1034_pos, 1
    substr rx1034_tgt, rx1034_tgt, rx1034_off
  rx1034_start:
    eq $I10, 1, rx1034_restart
    if_null rx1034_debug, debug_58
    rx1034_cur."!cursor_debug"("START", "value:sym<array>")
  debug_58:
    $I10 = self.'from'()
    ne $I10, -1, rxscan1036_done
    goto rxscan1036_scan
  rxscan1036_loop:
    ($P10) = rx1034_cur."from"()
    inc $P10
    set rx1034_pos, $P10
    ge rx1034_pos, rx1034_eos, rxscan1036_done
  rxscan1036_scan:
    set_addr $I10, rxscan1036_loop
    rx1034_cur."!mark_push"(0, rx1034_pos, $I10)
  rxscan1036_done:
.annotate 'line', 59
  # rx subrule "ws" subtype=method negate=
    rx1034_cur."!cursor_pos"(rx1034_pos)
    $P10 = rx1034_cur."ws"()
    unless $P10, rx1034_fail
    rx1034_pos = $P10."pos"()
.annotate 'line', 60
  # rx literal  "["
    add $I11, rx1034_pos, 1
    gt $I11, rx1034_eos, rx1034_fail
    sub $I11, rx1034_pos, rx1034_off
    ord $I11, rx1034_tgt, $I11
    ne $I11, 91, rx1034_fail
    add rx1034_pos, 1
  # rx subrule "ws" subtype=method negate=
    rx1034_cur."!cursor_pos"(rx1034_pos)
    $P10 = rx1034_cur."ws"()
    unless $P10, rx1034_fail
    rx1034_pos = $P10."pos"()
  # rx rxquantr1037 ** 0..1
    set_addr $I10, rxquantr1037_done
    rx1034_cur."!mark_push"(0, rx1034_pos, $I10)
  rxquantr1037_loop:
  # rx subrule "ws" subtype=method negate=
    rx1034_cur."!cursor_pos"(rx1034_pos)
    $P10 = rx1034_cur."ws"()
    unless $P10, rx1034_fail
    rx1034_pos = $P10."pos"()
  # rx rxquantr1038 ** 1..*
    set_addr $I10, rxquantr1038_done
    rx1034_cur."!mark_push"(0, -1, $I10)
  rxquantr1038_loop:
  # rx subrule "value" subtype=capture negate=
    rx1034_cur."!cursor_pos"(rx1034_pos)
    $P10 = rx1034_cur."value"()
    unless $P10, rx1034_fail
    goto rxsubrule1039_pass
  rxsubrule1039_back:
    $P10 = $P10."!cursor_next"()
    unless $P10, rx1034_fail
  rxsubrule1039_pass:
    set_addr $I10, rxsubrule1039_back
    rx1034_cur."!mark_push"(0, rx1034_pos, $I10, $P10)
    $P10."!cursor_names"("value")
    rx1034_pos = $P10."pos"()
    set_addr $I10, rxquantr1038_done
    (rx1034_rep) = rx1034_cur."!mark_commit"($I10)
    set_addr $I10, rxquantr1038_done
    rx1034_cur."!mark_push"(rx1034_rep, rx1034_pos, $I10)
  # rx subrule "ws" subtype=method negate=
    rx1034_cur."!cursor_pos"(rx1034_pos)
    $P10 = rx1034_cur."ws"()
    unless $P10, rx1034_fail
    goto rxsubrule1040_pass
  rxsubrule1040_back:
    $P10 = $P10."!cursor_next"()
    unless $P10, rx1034_fail
  rxsubrule1040_pass:
    set_addr $I10, rxsubrule1040_back
    rx1034_cur."!mark_push"(0, rx1034_pos, $I10, $P10)
    rx1034_pos = $P10."pos"()
  # rx literal  ","
    add $I11, rx1034_pos, 1
    gt $I11, rx1034_eos, rx1034_fail
    sub $I11, rx1034_pos, rx1034_off
    ord $I11, rx1034_tgt, $I11
    ne $I11, 44, rx1034_fail
    add rx1034_pos, 1
  # rx subrule "ws" subtype=method negate=
    rx1034_cur."!cursor_pos"(rx1034_pos)
    $P10 = rx1034_cur."ws"()
    unless $P10, rx1034_fail
    goto rxsubrule1041_pass
  rxsubrule1041_back:
    $P10 = $P10."!cursor_next"()
    unless $P10, rx1034_fail
  rxsubrule1041_pass:
    set_addr $I10, rxsubrule1041_back
    rx1034_cur."!mark_push"(0, rx1034_pos, $I10, $P10)
    rx1034_pos = $P10."pos"()
    goto rxquantr1038_loop
  rxquantr1038_done:
  # rx subrule "ws" subtype=method negate=
    rx1034_cur."!cursor_pos"(rx1034_pos)
    $P10 = rx1034_cur."ws"()
    unless $P10, rx1034_fail
    rx1034_pos = $P10."pos"()
    set_addr $I10, rxquantr1037_done
    (rx1034_rep) = rx1034_cur."!mark_commit"($I10)
  rxquantr1037_done:
  # rx subrule "ws" subtype=method negate=
    rx1034_cur."!cursor_pos"(rx1034_pos)
    $P10 = rx1034_cur."ws"()
    unless $P10, rx1034_fail
    rx1034_pos = $P10."pos"()
  # rx literal  "]"
    add $I11, rx1034_pos, 1
    gt $I11, rx1034_eos, rx1034_fail
    sub $I11, rx1034_pos, rx1034_off
    ord $I11, rx1034_tgt, $I11
    ne $I11, 93, rx1034_fail
    add rx1034_pos, 1
  # rx subrule "ws" subtype=method negate=
    rx1034_cur."!cursor_pos"(rx1034_pos)
    $P10 = rx1034_cur."ws"()
    unless $P10, rx1034_fail
    rx1034_pos = $P10."pos"()
.annotate 'line', 59
  # rx pass
    rx1034_cur."!cursor_pass"(rx1034_pos, "value:sym<array>")
    if_null rx1034_debug, debug_59
    rx1034_cur."!cursor_debug"("PASS", "value:sym<array>", " at pos=", rx1034_pos)
  debug_59:
    .return (rx1034_cur)
  rx1034_restart:
.annotate 'line', 44
    if_null rx1034_debug, debug_60
    rx1034_cur."!cursor_debug"("NEXT", "value:sym<array>")
  debug_60:
  rx1034_fail:
    (rx1034_rep, rx1034_pos, $I10, $P10) = rx1034_cur."!mark_fail"(0)
    lt rx1034_pos, -1, rx1034_done
    eq rx1034_pos, -1, rx1034_fail
    jump $I10
  rx1034_done:
    rx1034_cur."!cursor_fail"()
    if_null rx1034_debug, debug_61
    rx1034_cur."!cursor_debug"("FAIL", "value:sym<array>")
  debug_61:
    .return (rx1034_cur)
    .return ()
.end


.namespace ["JSON";"Grammar"]
.sub "!PREFIX__value:sym<array>"  :subid("22_1372809885.37052") :method
.annotate 'file', "compilers/data_json/JSON.nqp"
.annotate 'line', 44
    $P102 = self."!PREFIX__!subrule"("ws", "")
    new $P103, "ResizablePMCArray"
    push $P103, $P102
    .return ($P103)
.end


.namespace ["JSON";"Grammar"]
.sub "value:sym<object>"  :subid("23_1372809885.37052") :method :outer("12_1372809885.37052")
.annotate 'file', "compilers/data_json/JSON.nqp"
.annotate 'line', 44
    .local string rx1043_tgt
    .local int rx1043_pos
    .local int rx1043_off
    .local int rx1043_eos
    .local int rx1043_rep
    .local pmc rx1043_cur
    .local pmc rx1043_debug
    (rx1043_cur, rx1043_pos, rx1043_tgt, $I10) = self."!cursor_start"()
    rx1043_cur."!cursor_caparray"("string", "value")
    getattribute rx1043_debug, rx1043_cur, "$!debug"
    .lex unicode:"$\x{a2}", rx1043_cur
    .local pmc match
    .lex "$/", match
    length rx1043_eos, rx1043_tgt
    gt rx1043_pos, rx1043_eos, rx1043_done
    set rx1043_off, 0
    lt rx1043_pos, 2, rx1043_start
    sub rx1043_off, rx1043_pos, 1
    substr rx1043_tgt, rx1043_tgt, rx1043_off
  rx1043_start:
    eq $I10, 1, rx1043_restart
    if_null rx1043_debug, debug_62
    rx1043_cur."!cursor_debug"("START", "value:sym<object>")
  debug_62:
    $I10 = self.'from'()
    ne $I10, -1, rxscan1045_done
    goto rxscan1045_scan
  rxscan1045_loop:
    ($P10) = rx1043_cur."from"()
    inc $P10
    set rx1043_pos, $P10
    ge rx1043_pos, rx1043_eos, rxscan1045_done
  rxscan1045_scan:
    set_addr $I10, rxscan1045_loop
    rx1043_cur."!mark_push"(0, rx1043_pos, $I10)
  rxscan1045_done:
.annotate 'line', 63
  # rx subrule "ws" subtype=method negate=
    rx1043_cur."!cursor_pos"(rx1043_pos)
    $P10 = rx1043_cur."ws"()
    unless $P10, rx1043_fail
    rx1043_pos = $P10."pos"()
.annotate 'line', 64
  # rx literal  "{"
    add $I11, rx1043_pos, 1
    gt $I11, rx1043_eos, rx1043_fail
    sub $I11, rx1043_pos, rx1043_off
    ord $I11, rx1043_tgt, $I11
    ne $I11, 123, rx1043_fail
    add rx1043_pos, 1
  # rx subrule "ws" subtype=method negate=
    rx1043_cur."!cursor_pos"(rx1043_pos)
    $P10 = rx1043_cur."ws"()
    unless $P10, rx1043_fail
    rx1043_pos = $P10."pos"()
.annotate 'line', 65
  # rx rxquantr1046 ** 0..1
    set_addr $I10, rxquantr1046_done
    rx1043_cur."!mark_push"(0, rx1043_pos, $I10)
  rxquantr1046_loop:
  # rx subrule "ws" subtype=method negate=
    rx1043_cur."!cursor_pos"(rx1043_pos)
    $P10 = rx1043_cur."ws"()
    unless $P10, rx1043_fail
    rx1043_pos = $P10."pos"()
  # rx rxquantr1047 ** 1..*
    set_addr $I10, rxquantr1047_done
    rx1043_cur."!mark_push"(0, -1, $I10)
  rxquantr1047_loop:
  # rx subrule "ws" subtype=method negate=
    rx1043_cur."!cursor_pos"(rx1043_pos)
    $P10 = rx1043_cur."ws"()
    unless $P10, rx1043_fail
    rx1043_pos = $P10."pos"()
  # rx subrule "string" subtype=capture negate=
    rx1043_cur."!cursor_pos"(rx1043_pos)
    $P10 = rx1043_cur."string"()
    unless $P10, rx1043_fail
    rx1043_cur."!mark_push"(0, -1, 0, $P10)
    $P10."!cursor_names"("string")
    rx1043_pos = $P10."pos"()
  # rx subrule "ws" subtype=method negate=
    rx1043_cur."!cursor_pos"(rx1043_pos)
    $P10 = rx1043_cur."ws"()
    unless $P10, rx1043_fail
    rx1043_pos = $P10."pos"()
  # rx literal  ":"
    add $I11, rx1043_pos, 1
    gt $I11, rx1043_eos, rx1043_fail
    sub $I11, rx1043_pos, rx1043_off
    ord $I11, rx1043_tgt, $I11
    ne $I11, 58, rx1043_fail
    add rx1043_pos, 1
  # rx subrule "ws" subtype=method negate=
    rx1043_cur."!cursor_pos"(rx1043_pos)
    $P10 = rx1043_cur."ws"()
    unless $P10, rx1043_fail
    rx1043_pos = $P10."pos"()
  # rx subrule "value" subtype=capture negate=
    rx1043_cur."!cursor_pos"(rx1043_pos)
    $P10 = rx1043_cur."value"()
    unless $P10, rx1043_fail
    rx1043_cur."!mark_push"(0, -1, 0, $P10)
    $P10."!cursor_names"("value")
    rx1043_pos = $P10."pos"()
  # rx subrule "ws" subtype=method negate=
    rx1043_cur."!cursor_pos"(rx1043_pos)
    $P10 = rx1043_cur."ws"()
    unless $P10, rx1043_fail
    rx1043_pos = $P10."pos"()
    set_addr $I10, rxquantr1047_done
    (rx1043_rep) = rx1043_cur."!mark_commit"($I10)
    set_addr $I10, rxquantr1047_done
    rx1043_cur."!mark_push"(rx1043_rep, rx1043_pos, $I10)
  # rx subrule "ws" subtype=method negate=
    rx1043_cur."!cursor_pos"(rx1043_pos)
    $P10 = rx1043_cur."ws"()
    unless $P10, rx1043_fail
    goto rxsubrule1048_pass
  rxsubrule1048_back:
    $P10 = $P10."!cursor_next"()
    unless $P10, rx1043_fail
  rxsubrule1048_pass:
    set_addr $I10, rxsubrule1048_back
    rx1043_cur."!mark_push"(0, rx1043_pos, $I10, $P10)
    rx1043_pos = $P10."pos"()
  # rx literal  ","
    add $I11, rx1043_pos, 1
    gt $I11, rx1043_eos, rx1043_fail
    sub $I11, rx1043_pos, rx1043_off
    ord $I11, rx1043_tgt, $I11
    ne $I11, 44, rx1043_fail
    add rx1043_pos, 1
  # rx subrule "ws" subtype=method negate=
    rx1043_cur."!cursor_pos"(rx1043_pos)
    $P10 = rx1043_cur."ws"()
    unless $P10, rx1043_fail
    goto rxsubrule1049_pass
  rxsubrule1049_back:
    $P10 = $P10."!cursor_next"()
    unless $P10, rx1043_fail
  rxsubrule1049_pass:
    set_addr $I10, rxsubrule1049_back
    rx1043_cur."!mark_push"(0, rx1043_pos, $I10, $P10)
    rx1043_pos = $P10."pos"()
    goto rxquantr1047_loop
  rxquantr1047_done:
  # rx subrule "ws" subtype=method negate=
    rx1043_cur."!cursor_pos"(rx1043_pos)
    $P10 = rx1043_cur."ws"()
    unless $P10, rx1043_fail
    rx1043_pos = $P10."pos"()
    set_addr $I10, rxquantr1046_done
    (rx1043_rep) = rx1043_cur."!mark_commit"($I10)
  rxquantr1046_done:
  # rx subrule "ws" subtype=method negate=
    rx1043_cur."!cursor_pos"(rx1043_pos)
    $P10 = rx1043_cur."ws"()
    unless $P10, rx1043_fail
    rx1043_pos = $P10."pos"()
.annotate 'line', 66
  # rx literal  "}"
    add $I11, rx1043_pos, 1
    gt $I11, rx1043_eos, rx1043_fail
    sub $I11, rx1043_pos, rx1043_off
    ord $I11, rx1043_tgt, $I11
    ne $I11, 125, rx1043_fail
    add rx1043_pos, 1
  # rx subrule "ws" subtype=method negate=
    rx1043_cur."!cursor_pos"(rx1043_pos)
    $P10 = rx1043_cur."ws"()
    unless $P10, rx1043_fail
    rx1043_pos = $P10."pos"()
.annotate 'line', 63
  # rx pass
    rx1043_cur."!cursor_pass"(rx1043_pos, "value:sym<object>")
    if_null rx1043_debug, debug_63
    rx1043_cur."!cursor_debug"("PASS", "value:sym<object>", " at pos=", rx1043_pos)
  debug_63:
    .return (rx1043_cur)
  rx1043_restart:
.annotate 'line', 44
    if_null rx1043_debug, debug_64
    rx1043_cur."!cursor_debug"("NEXT", "value:sym<object>")
  debug_64:
  rx1043_fail:
    (rx1043_rep, rx1043_pos, $I10, $P10) = rx1043_cur."!mark_fail"(0)
    lt rx1043_pos, -1, rx1043_done
    eq rx1043_pos, -1, rx1043_fail
    jump $I10
  rx1043_done:
    rx1043_cur."!cursor_fail"()
    if_null rx1043_debug, debug_65
    rx1043_cur."!cursor_debug"("FAIL", "value:sym<object>")
  debug_65:
    .return (rx1043_cur)
    .return ()
.end


.namespace ["JSON";"Grammar"]
.sub "!PREFIX__value:sym<object>"  :subid("24_1372809885.37052") :method
.annotate 'file', "compilers/data_json/JSON.nqp"
.annotate 'line', 44
    $P102 = self."!PREFIX__!subrule"("ws", "")
    new $P103, "ResizablePMCArray"
    push $P103, $P102
    .return ($P103)
.end


.namespace ["JSON";"Grammar"]
.sub "value:sym<true>"  :subid("25_1372809885.37052") :method :outer("12_1372809885.37052")
.annotate 'file', "compilers/data_json/JSON.nqp"
.annotate 'line', 44
    .local string rx1051_tgt
    .local int rx1051_pos
    .local int rx1051_off
    .local int rx1051_eos
    .local int rx1051_rep
    .local pmc rx1051_cur
    .local pmc rx1051_debug
    (rx1051_cur, rx1051_pos, rx1051_tgt, $I10) = self."!cursor_start"()
    getattribute rx1051_debug, rx1051_cur, "$!debug"
    .lex unicode:"$\x{a2}", rx1051_cur
    .local pmc match
    .lex "$/", match
    length rx1051_eos, rx1051_tgt
    gt rx1051_pos, rx1051_eos, rx1051_done
    set rx1051_off, 0
    lt rx1051_pos, 2, rx1051_start
    sub rx1051_off, rx1051_pos, 1
    substr rx1051_tgt, rx1051_tgt, rx1051_off
  rx1051_start:
    eq $I10, 1, rx1051_restart
    if_null rx1051_debug, debug_66
    rx1051_cur."!cursor_debug"("START", "value:sym<true>")
  debug_66:
    $I10 = self.'from'()
    ne $I10, -1, rxscan1053_done
    goto rxscan1053_scan
  rxscan1053_loop:
    ($P10) = rx1051_cur."from"()
    inc $P10
    set rx1051_pos, $P10
    ge rx1051_pos, rx1051_eos, rxscan1053_done
  rxscan1053_scan:
    set_addr $I10, rxscan1053_loop
    rx1051_cur."!mark_push"(0, rx1051_pos, $I10)
  rxscan1053_done:
.annotate 'line', 69
  # rx subrule "ws" subtype=method negate=
    rx1051_cur."!cursor_pos"(rx1051_pos)
    $P10 = rx1051_cur."ws"()
    unless $P10, rx1051_fail
    rx1051_pos = $P10."pos"()
.annotate 'line', 70
  # rx literal  "true"
    add $I11, rx1051_pos, 4
    gt $I11, rx1051_eos, rx1051_fail
    sub $I11, rx1051_pos, rx1051_off
    substr $S10, rx1051_tgt, $I11, 4
    ne $S10, "true", rx1051_fail
    add rx1051_pos, 4
  # rx subrule "ws" subtype=method negate=
    rx1051_cur."!cursor_pos"(rx1051_pos)
    $P10 = rx1051_cur."ws"()
    unless $P10, rx1051_fail
    rx1051_pos = $P10."pos"()
.annotate 'line', 69
  # rx pass
    rx1051_cur."!cursor_pass"(rx1051_pos, "value:sym<true>")
    if_null rx1051_debug, debug_67
    rx1051_cur."!cursor_debug"("PASS", "value:sym<true>", " at pos=", rx1051_pos)
  debug_67:
    .return (rx1051_cur)
  rx1051_restart:
.annotate 'line', 44
    if_null rx1051_debug, debug_68
    rx1051_cur."!cursor_debug"("NEXT", "value:sym<true>")
  debug_68:
  rx1051_fail:
    (rx1051_rep, rx1051_pos, $I10, $P10) = rx1051_cur."!mark_fail"(0)
    lt rx1051_pos, -1, rx1051_done
    eq rx1051_pos, -1, rx1051_fail
    jump $I10
  rx1051_done:
    rx1051_cur."!cursor_fail"()
    if_null rx1051_debug, debug_69
    rx1051_cur."!cursor_debug"("FAIL", "value:sym<true>")
  debug_69:
    .return (rx1051_cur)
    .return ()
.end


.namespace ["JSON";"Grammar"]
.sub "!PREFIX__value:sym<true>"  :subid("26_1372809885.37052") :method
.annotate 'file', "compilers/data_json/JSON.nqp"
.annotate 'line', 44
    $P102 = self."!PREFIX__!subrule"("ws", "")
    new $P103, "ResizablePMCArray"
    push $P103, $P102
    .return ($P103)
.end


.namespace ["JSON";"Grammar"]
.sub "value:sym<false>"  :subid("27_1372809885.37052") :method :outer("12_1372809885.37052")
.annotate 'file', "compilers/data_json/JSON.nqp"
.annotate 'line', 44
    .local string rx1055_tgt
    .local int rx1055_pos
    .local int rx1055_off
    .local int rx1055_eos
    .local int rx1055_rep
    .local pmc rx1055_cur
    .local pmc rx1055_debug
    (rx1055_cur, rx1055_pos, rx1055_tgt, $I10) = self."!cursor_start"()
    getattribute rx1055_debug, rx1055_cur, "$!debug"
    .lex unicode:"$\x{a2}", rx1055_cur
    .local pmc match
    .lex "$/", match
    length rx1055_eos, rx1055_tgt
    gt rx1055_pos, rx1055_eos, rx1055_done
    set rx1055_off, 0
    lt rx1055_pos, 2, rx1055_start
    sub rx1055_off, rx1055_pos, 1
    substr rx1055_tgt, rx1055_tgt, rx1055_off
  rx1055_start:
    eq $I10, 1, rx1055_restart
    if_null rx1055_debug, debug_70
    rx1055_cur."!cursor_debug"("START", "value:sym<false>")
  debug_70:
    $I10 = self.'from'()
    ne $I10, -1, rxscan1057_done
    goto rxscan1057_scan
  rxscan1057_loop:
    ($P10) = rx1055_cur."from"()
    inc $P10
    set rx1055_pos, $P10
    ge rx1055_pos, rx1055_eos, rxscan1057_done
  rxscan1057_scan:
    set_addr $I10, rxscan1057_loop
    rx1055_cur."!mark_push"(0, rx1055_pos, $I10)
  rxscan1057_done:
.annotate 'line', 73
  # rx subrule "ws" subtype=method negate=
    rx1055_cur."!cursor_pos"(rx1055_pos)
    $P10 = rx1055_cur."ws"()
    unless $P10, rx1055_fail
    rx1055_pos = $P10."pos"()
.annotate 'line', 74
  # rx literal  "false"
    add $I11, rx1055_pos, 5
    gt $I11, rx1055_eos, rx1055_fail
    sub $I11, rx1055_pos, rx1055_off
    substr $S10, rx1055_tgt, $I11, 5
    ne $S10, "false", rx1055_fail
    add rx1055_pos, 5
  # rx subrule "ws" subtype=method negate=
    rx1055_cur."!cursor_pos"(rx1055_pos)
    $P10 = rx1055_cur."ws"()
    unless $P10, rx1055_fail
    rx1055_pos = $P10."pos"()
.annotate 'line', 73
  # rx pass
    rx1055_cur."!cursor_pass"(rx1055_pos, "value:sym<false>")
    if_null rx1055_debug, debug_71
    rx1055_cur."!cursor_debug"("PASS", "value:sym<false>", " at pos=", rx1055_pos)
  debug_71:
    .return (rx1055_cur)
  rx1055_restart:
.annotate 'line', 44
    if_null rx1055_debug, debug_72
    rx1055_cur."!cursor_debug"("NEXT", "value:sym<false>")
  debug_72:
  rx1055_fail:
    (rx1055_rep, rx1055_pos, $I10, $P10) = rx1055_cur."!mark_fail"(0)
    lt rx1055_pos, -1, rx1055_done
    eq rx1055_pos, -1, rx1055_fail
    jump $I10
  rx1055_done:
    rx1055_cur."!cursor_fail"()
    if_null rx1055_debug, debug_73
    rx1055_cur."!cursor_debug"("FAIL", "value:sym<false>")
  debug_73:
    .return (rx1055_cur)
    .return ()
.end


.namespace ["JSON";"Grammar"]
.sub "!PREFIX__value:sym<false>"  :subid("28_1372809885.37052") :method
.annotate 'file', "compilers/data_json/JSON.nqp"
.annotate 'line', 44
    $P102 = self."!PREFIX__!subrule"("ws", "")
    new $P103, "ResizablePMCArray"
    push $P103, $P102
    .return ($P103)
.end


.namespace ["JSON";"Grammar"]
.sub "value:sym<null>"  :subid("29_1372809885.37052") :method :outer("12_1372809885.37052")
.annotate 'file', "compilers/data_json/JSON.nqp"
.annotate 'line', 44
    .local string rx1059_tgt
    .local int rx1059_pos
    .local int rx1059_off
    .local int rx1059_eos
    .local int rx1059_rep
    .local pmc rx1059_cur
    .local pmc rx1059_debug
    (rx1059_cur, rx1059_pos, rx1059_tgt, $I10) = self."!cursor_start"()
    getattribute rx1059_debug, rx1059_cur, "$!debug"
    .lex unicode:"$\x{a2}", rx1059_cur
    .local pmc match
    .lex "$/", match
    length rx1059_eos, rx1059_tgt
    gt rx1059_pos, rx1059_eos, rx1059_done
    set rx1059_off, 0
    lt rx1059_pos, 2, rx1059_start
    sub rx1059_off, rx1059_pos, 1
    substr rx1059_tgt, rx1059_tgt, rx1059_off
  rx1059_start:
    eq $I10, 1, rx1059_restart
    if_null rx1059_debug, debug_74
    rx1059_cur."!cursor_debug"("START", "value:sym<null>")
  debug_74:
    $I10 = self.'from'()
    ne $I10, -1, rxscan1061_done
    goto rxscan1061_scan
  rxscan1061_loop:
    ($P10) = rx1059_cur."from"()
    inc $P10
    set rx1059_pos, $P10
    ge rx1059_pos, rx1059_eos, rxscan1061_done
  rxscan1061_scan:
    set_addr $I10, rxscan1061_loop
    rx1059_cur."!mark_push"(0, rx1059_pos, $I10)
  rxscan1061_done:
.annotate 'line', 77
  # rx subrule "ws" subtype=method negate=
    rx1059_cur."!cursor_pos"(rx1059_pos)
    $P10 = rx1059_cur."ws"()
    unless $P10, rx1059_fail
    rx1059_pos = $P10."pos"()
.annotate 'line', 78
  # rx literal  "null"
    add $I11, rx1059_pos, 4
    gt $I11, rx1059_eos, rx1059_fail
    sub $I11, rx1059_pos, rx1059_off
    substr $S10, rx1059_tgt, $I11, 4
    ne $S10, "null", rx1059_fail
    add rx1059_pos, 4
  # rx subrule "ws" subtype=method negate=
    rx1059_cur."!cursor_pos"(rx1059_pos)
    $P10 = rx1059_cur."ws"()
    unless $P10, rx1059_fail
    rx1059_pos = $P10."pos"()
.annotate 'line', 77
  # rx pass
    rx1059_cur."!cursor_pass"(rx1059_pos, "value:sym<null>")
    if_null rx1059_debug, debug_75
    rx1059_cur."!cursor_debug"("PASS", "value:sym<null>", " at pos=", rx1059_pos)
  debug_75:
    .return (rx1059_cur)
  rx1059_restart:
.annotate 'line', 44
    if_null rx1059_debug, debug_76
    rx1059_cur."!cursor_debug"("NEXT", "value:sym<null>")
  debug_76:
  rx1059_fail:
    (rx1059_rep, rx1059_pos, $I10, $P10) = rx1059_cur."!mark_fail"(0)
    lt rx1059_pos, -1, rx1059_done
    eq rx1059_pos, -1, rx1059_fail
    jump $I10
  rx1059_done:
    rx1059_cur."!cursor_fail"()
    if_null rx1059_debug, debug_77
    rx1059_cur."!cursor_debug"("FAIL", "value:sym<null>")
  debug_77:
    .return (rx1059_cur)
    .return ()
.end


.namespace ["JSON";"Grammar"]
.sub "!PREFIX__value:sym<null>"  :subid("30_1372809885.37052") :method
.annotate 'file', "compilers/data_json/JSON.nqp"
.annotate 'line', 44
    $P102 = self."!PREFIX__!subrule"("ws", "")
    new $P103, "ResizablePMCArray"
    push $P103, $P102
    .return ($P103)
.end


.namespace ["JSON";"Grammar"]
.sub "string"  :subid("31_1372809885.37052") :method :outer("12_1372809885.37052")
.annotate 'file', "compilers/data_json/JSON.nqp"
.annotate 'line', 44
    .local string rx1063_tgt
    .local int rx1063_pos
    .local int rx1063_off
    .local int rx1063_eos
    .local int rx1063_rep
    .local pmc rx1063_cur
    .local pmc rx1063_debug
    (rx1063_cur, rx1063_pos, rx1063_tgt, $I10) = self."!cursor_start"()
    getattribute rx1063_debug, rx1063_cur, "$!debug"
    .lex unicode:"$\x{a2}", rx1063_cur
    .local pmc match
    .lex "$/", match
    length rx1063_eos, rx1063_tgt
    gt rx1063_pos, rx1063_eos, rx1063_done
    set rx1063_off, 0
    lt rx1063_pos, 2, rx1063_start
    sub rx1063_off, rx1063_pos, 1
    substr rx1063_tgt, rx1063_tgt, rx1063_off
  rx1063_start:
    eq $I10, 1, rx1063_restart
    if_null rx1063_debug, debug_78
    rx1063_cur."!cursor_debug"("START", "string")
  debug_78:
    $I10 = self.'from'()
    ne $I10, -1, rxscan1065_done
    goto rxscan1065_scan
  rxscan1065_loop:
    ($P10) = rx1063_cur."from"()
    inc $P10
    set rx1063_pos, $P10
    ge rx1063_pos, rx1063_eos, rxscan1065_done
  rxscan1065_scan:
    set_addr $I10, rxscan1065_loop
    rx1063_cur."!mark_push"(0, rx1063_pos, $I10)
  rxscan1065_done:
.annotate 'line', 82
  # rx enumcharlist negate=0 zerowidth
    sub $I10, rx1063_pos, rx1063_off
    substr $S10, rx1063_tgt, $I10, 1
    index $I11, "\"", $S10
    lt $I11, 0, rx1063_fail
  # rx subrule "quote_EXPR" subtype=capture negate=
    rx1063_cur."!cursor_pos"(rx1063_pos)
    $P10 = rx1063_cur."quote_EXPR"(":qq")
    unless $P10, rx1063_fail
    rx1063_cur."!mark_push"(0, -1, 0, $P10)
    $P10."!cursor_names"("quote_EXPR")
    rx1063_pos = $P10."pos"()
.annotate 'line', 81
  # rx pass
    rx1063_cur."!cursor_pass"(rx1063_pos, "string")
    if_null rx1063_debug, debug_79
    rx1063_cur."!cursor_debug"("PASS", "string", " at pos=", rx1063_pos)
  debug_79:
    .return (rx1063_cur)
  rx1063_restart:
.annotate 'line', 44
    if_null rx1063_debug, debug_80
    rx1063_cur."!cursor_debug"("NEXT", "string")
  debug_80:
  rx1063_fail:
    (rx1063_rep, rx1063_pos, $I10, $P10) = rx1063_cur."!mark_fail"(0)
    lt rx1063_pos, -1, rx1063_done
    eq rx1063_pos, -1, rx1063_fail
    jump $I10
  rx1063_done:
    rx1063_cur."!cursor_fail"()
    if_null rx1063_debug, debug_81
    rx1063_cur."!cursor_debug"("FAIL", "string")
  debug_81:
    .return (rx1063_cur)
    .return ()
.end


.namespace ["JSON";"Grammar"]
.sub "!PREFIX__string"  :subid("32_1372809885.37052") :method
.annotate 'file', "compilers/data_json/JSON.nqp"
.annotate 'line', 44
    new $P102, "ResizablePMCArray"
    push $P102, "\""
    .return ($P102)
.end


.namespace ["JSON";"Actions"]
.sub "_block1066"  :subid("33_1372809885.37052") :outer("10_1372809885.37052")
.annotate 'file', "compilers/data_json/JSON.nqp"
.annotate 'line', 87
    .const 'Sub' $P1118 = "42_1372809885.37052" 
    capture_lex $P1118
    .const 'Sub' $P1114 = "41_1372809885.37052" 
    capture_lex $P1114
    .const 'Sub' $P1110 = "40_1372809885.37052" 
    capture_lex $P1110
    .const 'Sub' $P1094 = "39_1372809885.37052" 
    capture_lex $P1094
    .const 'Sub' $P1082 = "37_1372809885.37052" 
    capture_lex $P1082
    .const 'Sub' $P1078 = "36_1372809885.37052" 
    capture_lex $P1078
    .const 'Sub' $P1073 = "35_1372809885.37052" 
    capture_lex $P1073
    .const 'Sub' $P1068 = "34_1372809885.37052" 
    capture_lex $P1068
.annotate 'line', 127
    .const 'Sub' $P1118 = "42_1372809885.37052" 
    newclosure $P1123, $P1118
.annotate 'line', 87
    .return ($P1123)
.end


.namespace ["JSON";"Actions"]
.include "except_types.pasm"
.sub "TOP"  :subid("34_1372809885.37052") :method :outer("33_1372809885.37052")
    .param pmc param_1071
.annotate 'file', "compilers/data_json/JSON.nqp"
.annotate 'line', 88
    new $P1070, 'ExceptionHandler', [.CONTROL_RETURN]
    set_label $P1070, control_1069
    push_eh $P1070
    .lex "self", self
    .lex "$/", param_1071
.annotate 'line', 89
    find_lex $P102, "$/"
    get_hll_global $P103, ["PAST"], "Block"
    find_lex $P1072, "$/"
    unless_null $P1072, vivify_82
    $P1072 = root_new ['parrot';'Hash']
  vivify_82:
    set $P104, $P1072["value"]
    unless_null $P104, vivify_83
    new $P104, "Undef"
  vivify_83:
    $P105 = $P104."ast"()
    find_lex $P106, "$/"
    $P107 = $P103."new"($P105, $P106 :named("node"))
    $P108 = $P102."!make"($P107)
.annotate 'line', 88
    .return ($P108)
  control_1069:
    .local pmc exception 
    .get_results (exception) 
    getattribute $P102, exception, "payload"
    .return ($P102)
.end


.namespace ["JSON";"Actions"]
.include "except_types.pasm"
.sub "value:sym<string>"  :subid("35_1372809885.37052") :method :outer("33_1372809885.37052")
    .param pmc param_1076
.annotate 'file', "compilers/data_json/JSON.nqp"
.annotate 'line', 92
    new $P1075, 'ExceptionHandler', [.CONTROL_RETURN]
    set_label $P1075, control_1074
    push_eh $P1075
    .lex "self", self
    .lex "$/", param_1076
    find_lex $P102, "$/"
    find_lex $P1077, "$/"
    unless_null $P1077, vivify_84
    $P1077 = root_new ['parrot';'Hash']
  vivify_84:
    set $P103, $P1077["string"]
    unless_null $P103, vivify_85
    new $P103, "Undef"
  vivify_85:
    $P104 = $P103."ast"()
    $P105 = $P102."!make"($P104)
    .return ($P105)
  control_1074:
    .local pmc exception 
    .get_results (exception) 
    getattribute $P102, exception, "payload"
    .return ($P102)
.end


.namespace ["JSON";"Actions"]
.include "except_types.pasm"
.sub "value:sym<number>"  :subid("36_1372809885.37052") :method :outer("33_1372809885.37052")
    .param pmc param_1081
.annotate 'file', "compilers/data_json/JSON.nqp"
.annotate 'line', 94
    new $P1080, 'ExceptionHandler', [.CONTROL_RETURN]
    set_label $P1080, control_1079
    push_eh $P1080
    .lex "self", self
    .lex "$/", param_1081
    find_lex $P102, "$/"
    find_lex $P103, "$/"
    set $N100, $P103
    $P104 = $P102."!make"($N100)
    .return ($P104)
  control_1079:
    .local pmc exception 
    .get_results (exception) 
    getattribute $P102, exception, "payload"
    .return ($P102)
.end


.namespace ["JSON";"Actions"]
.include "except_types.pasm"
.sub "value:sym<array>"  :subid("37_1372809885.37052") :method :outer("33_1372809885.37052")
    .param pmc param_1085
.annotate 'file', "compilers/data_json/JSON.nqp"
.annotate 'line', 96
    .const 'Sub' $P1091 = "38_1372809885.37052" 
    capture_lex $P1091
    new $P1084, 'ExceptionHandler', [.CONTROL_RETURN]
    set_label $P1084, control_1083
    push_eh $P1084
    .lex "self", self
    .lex "$/", param_1085
.annotate 'line', 97
    new $P102, "Undef"
    set $P1086, $P102
    .lex "$past", $P1086
    get_hll_global $P103, ["PAST"], "Op"
    find_lex $P104, "$/"
    $P105 = $P103."new"("list" :named("pasttype"), $P104 :named("node"))
    store_lex "$past", $P105
.annotate 'line', 98
    find_lex $P1088, "$/"
    unless_null $P1088, vivify_86
    $P1088 = root_new ['parrot';'Hash']
  vivify_86:
    set $P103, $P1088["value"]
    unless_null $P103, vivify_87
    new $P103, "Undef"
  vivify_87:
    unless $P103, if_1087_end
.annotate 'line', 99
    find_lex $P1089, "$/"
    unless_null $P1089, vivify_88
    $P1089 = root_new ['parrot';'Hash']
  vivify_88:
    set $P105, $P1089["value"]
    unless_null $P105, vivify_89
    new $P105, "Undef"
  vivify_89:
    defined $I100, $P105
    unless $I100, for_undef_90
    iter $P104, $P105
    new $P107, 'ExceptionHandler', [.CONTROL_LOOP_NEXT;.CONTROL_LOOP_REDO;.CONTROL_LOOP_LAST]
    set_label $P107, loop1093_handler
    push_eh $P107
  loop1093_test:
    unless $P104, loop1093_done
    shift $P106, $P104
  loop1093_redo:
    .const 'Sub' $P1091 = "38_1372809885.37052" 
    capture_lex $P1091
    $P1091($P106)
  loop1093_next:
    goto loop1093_test
  loop1093_handler:
    .local pmc exception 
    .get_results (exception) 
    pop_upto_eh exception
    getattribute $P108, exception, 'type'
    eq $P108, .CONTROL_LOOP_NEXT, loop1093_next
    eq $P108, .CONTROL_LOOP_REDO, loop1093_redo
  loop1093_done:
    pop_eh 
  for_undef_90:
  if_1087_end:
.annotate 'line', 101
    find_lex $P103, "$/"
    find_lex $P104, "$past"
    $P105 = $P103."!make"($P104)
.annotate 'line', 96
    .return ($P105)
  control_1083:
    .local pmc exception 
    .get_results (exception) 
    getattribute $P103, exception, "payload"
    .return ($P103)
.end


.namespace ["JSON";"Actions"]
.sub "_block1090"  :anon :subid("38_1372809885.37052") :outer("37_1372809885.37052")
    .param pmc param_1092
.annotate 'file', "compilers/data_json/JSON.nqp"
.annotate 'line', 99
    .lex "$_", param_1092
    find_lex $P107, "$past"
    find_lex $P108, "$_"
    $P109 = $P108."ast"()
    $P110 = $P107."push"($P109)
    .return ($P110)
.end


.namespace ["JSON";"Actions"]
.include "except_types.pasm"
.sub "value:sym<object>"  :subid("39_1372809885.37052") :method :outer("33_1372809885.37052")
    .param pmc param_1097
.annotate 'file', "compilers/data_json/JSON.nqp"
.annotate 'line', 104
    new $P1096, 'ExceptionHandler', [.CONTROL_RETURN]
    set_label $P1096, control_1095
    push_eh $P1096
    .lex "self", self
    .lex "$/", param_1097
.annotate 'line', 105
    new $P102, "Undef"
    set $P1098, $P102
    .lex "$past", $P1098
.annotate 'line', 106
    new $P103, "Undef"
    set $P1099, $P103
    .lex "$hashname", $P1099
.annotate 'line', 107
    new $P104, "Undef"
    set $P1100, $P104
    .lex "$hash", $P1100
.annotate 'line', 109
    new $P105, "Undef"
    set $P1101, $P105
    .lex "$hashreg", $P1101
.annotate 'line', 112
    new $P106, "Undef"
    set $P1102, $P106
    .lex "$n", $P1102
.annotate 'line', 105
    get_hll_global $P107, ["PAST"], "Stmts"
    find_lex $P108, "$/"
    $P109 = $P107."new"($P108 :named("node"))
    store_lex "$past", $P109
.annotate 'line', 106
    get_hll_global $P107, ["PAST"], "Compiler"
    $P108 = $P107."unique"("hash")
    store_lex "$hashname", $P108
.annotate 'line', 107
    get_hll_global $P107, ["PAST"], "Var"
    find_lex $P108, "$hashname"
    $P109 = $P107."new"("register" :named("scope"), $P108 :named("name"), "Hash" :named("viviself"), 1 :named("isdecl"))
    store_lex "$hash", $P109
.annotate 'line', 109
    get_hll_global $P107, ["PAST"], "Var"
    find_lex $P108, "$hashname"
    $P109 = $P107."new"("register" :named("scope"), $P108 :named("name"))
    store_lex "$hashreg", $P109
.annotate 'line', 110
    find_lex $P107, "$past"
    find_lex $P108, "$hash"
    $P107."push"($P108)
.annotate 'line', 112
    new $P107, "Integer"
    assign $P107, 0
    store_lex "$n", $P107
.annotate 'line', 113
    new $P109, 'ExceptionHandler', [.CONTROL_LOOP_NEXT;.CONTROL_LOOP_REDO;.CONTROL_LOOP_LAST]
    set_label $P109, loop1109_handler
    push_eh $P109
  loop1109_test:
    find_lex $P107, "$n"
    set $N100, $P107
    find_lex $P1103, "$/"
    unless_null $P1103, vivify_91
    $P1103 = root_new ['parrot';'Hash']
  vivify_91:
    set $P108, $P1103["string"]
    unless_null $P108, vivify_92
    new $P108, "Undef"
  vivify_92:
    set $N101, $P108
    islt $I100, $N100, $N101
    unless $I100, loop1109_done
  loop1109_redo:
.annotate 'line', 114
    find_lex $P109, "$past"
    get_hll_global $P110, ["PAST"], "Op"
    find_lex $P111, "$hashreg"
.annotate 'line', 115
    find_lex $P112, "$n"
    set $I101, $P112
    find_lex $P1104, "$/"
    unless_null $P1104, vivify_93
    $P1104 = root_new ['parrot';'Hash']
  vivify_93:
    set $P1105, $P1104["string"]
    unless_null $P1105, vivify_94
    $P1105 = root_new ['parrot';'ResizablePMCArray']
  vivify_94:
    set $P113, $P1105[$I101]
    unless_null $P113, vivify_95
    new $P113, "Undef"
  vivify_95:
    $P114 = $P113."ast"()
    find_lex $P115, "$n"
    set $I102, $P115
    find_lex $P1106, "$/"
    unless_null $P1106, vivify_96
    $P1106 = root_new ['parrot';'Hash']
  vivify_96:
    set $P1107, $P1106["value"]
    unless_null $P1107, vivify_97
    $P1107 = root_new ['parrot';'ResizablePMCArray']
  vivify_97:
    set $P116, $P1107[$I102]
    unless_null $P116, vivify_98
    new $P116, "Undef"
  vivify_98:
    $P117 = $P116."ast"()
    $P118 = $P110."new"($P111, $P114, $P117, "set__vQ~*" :named("pirop"))
.annotate 'line', 114
    $P109."push"($P118)
.annotate 'line', 113
    find_lex $P109, "$n"
    clone $P1108, $P109
    inc $P109
  loop1109_next:
    goto loop1109_test
  loop1109_handler:
    .local pmc exception 
    .get_results (exception) 
    pop_upto_eh exception
    getattribute $P110, exception, 'type'
    eq $P110, .CONTROL_LOOP_NEXT, loop1109_next
    eq $P110, .CONTROL_LOOP_REDO, loop1109_redo
  loop1109_done:
    pop_eh 
.annotate 'line', 119
    find_lex $P107, "$past"
    find_lex $P108, "$hashreg"
    $P107."push"($P108)
.annotate 'line', 120
    find_lex $P107, "$/"
    find_lex $P108, "$past"
    $P109 = $P107."!make"($P108)
.annotate 'line', 104
    .return ($P109)
  control_1095:
    .local pmc exception 
    .get_results (exception) 
    getattribute $P107, exception, "payload"
    .return ($P107)
.end


.namespace ["JSON";"Actions"]
.include "except_types.pasm"
.sub "value:sym<true>"  :subid("40_1372809885.37052") :method :outer("33_1372809885.37052")
    .param pmc param_1113
.annotate 'file', "compilers/data_json/JSON.nqp"
.annotate 'line', 123
    new $P1112, 'ExceptionHandler', [.CONTROL_RETURN]
    set_label $P1112, control_1111
    push_eh $P1112
    .lex "self", self
    .lex "$/", param_1113
    find_lex $P102, "$/"
    $P103 = $P102."!make"(1)
    .return ($P103)
  control_1111:
    .local pmc exception 
    .get_results (exception) 
    getattribute $P102, exception, "payload"
    .return ($P102)
.end


.namespace ["JSON";"Actions"]
.include "except_types.pasm"
.sub "value:sym<false>"  :subid("41_1372809885.37052") :method :outer("33_1372809885.37052")
    .param pmc param_1117
.annotate 'file', "compilers/data_json/JSON.nqp"
.annotate 'line', 125
    new $P1116, 'ExceptionHandler', [.CONTROL_RETURN]
    set_label $P1116, control_1115
    push_eh $P1116
    .lex "self", self
    .lex "$/", param_1117
    find_lex $P102, "$/"
    $P103 = $P102."!make"(0)
    .return ($P103)
  control_1115:
    .local pmc exception 
    .get_results (exception) 
    getattribute $P102, exception, "payload"
    .return ($P102)
.end


.namespace ["JSON";"Actions"]
.include "except_types.pasm"
.sub "string"  :subid("42_1372809885.37052") :method :outer("33_1372809885.37052")
    .param pmc param_1121
.annotate 'file', "compilers/data_json/JSON.nqp"
.annotate 'line', 127
    new $P1120, 'ExceptionHandler', [.CONTROL_RETURN]
    set_label $P1120, control_1119
    push_eh $P1120
    .lex "self", self
    .lex "$/", param_1121
    find_lex $P102, "$/"
    find_lex $P1122, "$/"
    unless_null $P1122, vivify_99
    $P1122 = root_new ['parrot';'Hash']
  vivify_99:
    set $P103, $P1122["quote_EXPR"]
    unless_null $P103, vivify_100
    new $P103, "Undef"
  vivify_100:
    $P104 = $P103."ast"()
    $P105 = $P102."!make"($P104)
    .return ($P105)
  control_1119:
    .local pmc exception 
    .get_results (exception) 
    getattribute $P102, exception, "payload"
    .return ($P102)
.end


.namespace ["JSON";"Compiler"]
.sub "_block1124"  :subid("43_1372809885.37052") :outer("10_1372809885.37052")
.annotate 'file', "compilers/data_json/JSON.nqp"
.annotate 'line', 131
    .return ()
.end


.namespace ["JSON";"Compiler"]
.sub "" :load :init :subid("post101") :outer("43_1372809885.37052")
.annotate 'file', "compilers/data_json/JSON.nqp"
.annotate 'line', 131
    .const 'Sub' $P1125 = "43_1372809885.37052" 
    .local pmc block
    set block, $P1125
.annotate 'line', 133
    get_hll_global $P102, ["JSON"], "Compiler"
    $P102."language"("JSON")
.annotate 'line', 134
    get_hll_global $P102, ["JSON"], "Compiler"
    get_hll_global $P103, ["JSON"], "Grammar"
    $P102."parsegrammar"($P103)
.annotate 'line', 135
    get_hll_global $P102, ["JSON"], "Compiler"
    get_hll_global $P103, ["JSON"], "Actions"
    $P102."parseactions"($P103)
.end


.namespace []
.sub "_block1126" :load :anon :subid("44_1372809885.37052")
.annotate 'file', "compilers/data_json/JSON.nqp"
.annotate 'line', 1
    .const '' $P1128 = "10_1372809885.37052" 
    $P103 = $P1128()
    .return ($P103)
.end

