[lexer] final tokens => [Identifier("extend"), LParen, StringLiteral("sqlite"), RParen, Identifier("extend"), LParen, StringLiteral("array"), RParen, Identifier("db"), Equals, Identifier("sqlite:open"), LParen, LBracket, Identifier("path"), Colon, StringLiteral("demo1.db"), RBracket, RParen, Identifier("handle"), Equals, Identifier("db"), LBracket, StringLiteral("handle"), RBracket, Identifier("sqlite:query"), LParen, LBracket, Identifier("handle"), Colon, Identifier("handle"), Comma, Identifier("sql"), Colon, StringLiteral("DROP TABLE IF EXISTS things"), Comma, Identifier("params"), Colon, LBracket, RBracket, RBracket, RParen, Identifier("X"), Equals, Identifier("sqlite:query"), LParen, LBracket, Identifier("handle"), Colon, Identifier("handle"), Comma, Identifier("sql"), Colon, StringLiteral("CREATE TABLE things (id INTEGER PRIMARY KEY, label TEXT)"), Comma, Identifier("params"), Colon, LBracket, RBracket, RBracket, RParen, Identifier("slog"), LParen, Identifier("X"), RParen, Identifier("Y"), Equals, Identifier("sqlite:query"), LParen, LBracket, Identifier("handle"), Colon, Identifier("handle"), Comma, Identifier("sql"), Colon, StringLiteral("INSERT INTO things (label) VALUES (?)"), Comma, Identifier("params"), Colon, LBracket, StringLiteral("apple"), RBracket, RBracket, RParen, Identifier("slog"), LParen, Identifier("Y"), RParen, Identifier("sqlite:query"), LParen, LBracket, Identifier("handle"), Colon, Identifier("handle"), Comma, Identifier("sql"), Colon, StringLiteral("INSERT INTO things (label) VALUES (?)"), Comma, Identifier("params"), Colon, LBracket, StringLiteral("banana"), RBracket, RBracket, RParen, Identifier("sqlite:query"), LParen, LBracket, Identifier("handle"), Colon, Identifier("handle"), Comma, Identifier("sql"), Colon, StringLiteral("INSERT INTO things (label) VALUES (?)"), Comma, Identifier("params"), Colon, LBracket, StringLiteral("carrot"), RBracket, RBracket, RParen, Identifier("results"), Equals, Identifier("sqlite:query"), LParen, LBracket, Identifier("handle"), Colon, Identifier("handle"), Comma, Identifier("sql"), Colon, StringLiteral("SELECT id, label FROM things"), Comma, Identifier("params"), Colon, LBracket, RBracket, RBracket, RParen, Identifier("rows"), Equals, Identifier("array:collect"), LParen, Identifier("results"), RParen, Identifier("sqlite:close"), LParen, LBracket, Identifier("handle"), Colon, Identifier("handle"), RBracket, RParen]
[parser2] parse_tokens => about to parse statement at pos=0 token=Some(Identifier("extend"))
[parser2] advance => consuming token at pos=0 => Identifier("extend")
[parser2] advance => consuming token at pos=1 => LParen
[parser2] advance => consuming token at pos=2 => StringLiteral("sqlite")
[parser2] advance => consuming token at pos=3 => RParen
[parser2] parse_tokens => got a statement: ImportSo("sqlite")
[parser2] parse_tokens => about to parse statement at pos=4 token=Some(Identifier("extend"))
[parser2] advance => consuming token at pos=4 => Identifier("extend")
[parser2] advance => consuming token at pos=5 => LParen
[parser2] advance => consuming token at pos=6 => StringLiteral("array")
[parser2] advance => consuming token at pos=7 => RParen
[parser2] parse_tokens => got a statement: ImportSo("array")
[parser2] parse_tokens => about to parse statement at pos=8 token=Some(Identifier("db"))
[parser2] advance => consuming token at pos=8 => Identifier("db")
[parser2] advance => consuming token at pos=9 => Equals
[parser2] advance => consuming token at pos=10 => Identifier("sqlite:open")
[parser2] advance => consuming token at pos=11 => LParen
[parser2] advance => consuming token at pos=12 => LBracket
[parser2] advance => consuming token at pos=13 => Identifier("path")
[parser2] advance => consuming token at pos=14 => Colon
[parser2] advance => consuming token at pos=15 => StringLiteral("demo1.db")
[parser2] advance => consuming token at pos=16 => RBracket
[parser2] advance => consuming token at pos=17 => RParen
[parser2] parse_tokens => got a statement: Assignment { left: Ident("db"), right: FunctionCall { callee: Ident("sqlite:open"), args: [KeyedArray([("path", StrLit("demo1.db"))])] } }
[parser2] parse_tokens => about to parse statement at pos=18 token=Some(Identifier("handle"))
[parser2] advance => consuming token at pos=18 => Identifier("handle")
[parser2] advance => consuming token at pos=19 => Equals
[parser2] advance => consuming token at pos=20 => Identifier("db")
[parser2] advance => consuming token at pos=21 => LBracket
[parser2] advance => consuming token at pos=22 => StringLiteral("handle")
[parser2] advance => consuming token at pos=23 => RBracket
[parser2] parse_tokens => got a statement: Assignment { left: Ident("handle"), right: Index(Ident("db"), StrLit("handle")) }
[parser2] parse_tokens => about to parse statement at pos=24 token=Some(Identifier("sqlite:query"))
[parser2] advance => consuming token at pos=24 => Identifier("sqlite:query")
[parser2] advance => consuming token at pos=25 => LParen
[parser2] advance => consuming token at pos=26 => LBracket
[parser2] advance => consuming token at pos=27 => Identifier("handle")
[parser2] advance => consuming token at pos=28 => Colon
[parser2] advance => consuming token at pos=29 => Identifier("handle")
[parser2] advance => consuming token at pos=30 => Comma
[parser2] advance => consuming token at pos=31 => Identifier("sql")
[parser2] advance => consuming token at pos=32 => Colon
[parser2] advance => consuming token at pos=33 => StringLiteral("DROP TABLE IF EXISTS things")
[parser2] advance => consuming token at pos=34 => Comma
[parser2] advance => consuming token at pos=35 => Identifier("params")
[parser2] advance => consuming token at pos=36 => Colon
[parser2] advance => consuming token at pos=37 => LBracket
[parser2] advance => consuming token at pos=38 => RBracket
[parser2] advance => consuming token at pos=39 => RBracket
[parser2] advance => consuming token at pos=40 => RParen
[parser2] parse_tokens => got a statement: ExprStmt(FunctionCall { callee: Ident("sqlite:query"), args: [KeyedArray([("handle", Ident("handle")), ("sql", StrLit("DROP TABLE IF EXISTS things")), ("params", BracketedArray([]))])] })
[parser2] parse_tokens => about to parse statement at pos=41 token=Some(Identifier("X"))
[parser2] advance => consuming token at pos=41 => Identifier("X")
[parser2] advance => consuming token at pos=42 => Equals
[parser2] advance => consuming token at pos=43 => Identifier("sqlite:query")
[parser2] advance => consuming token at pos=44 => LParen
[parser2] advance => consuming token at pos=45 => LBracket
[parser2] advance => consuming token at pos=46 => Identifier("handle")
[parser2] advance => consuming token at pos=47 => Colon
[parser2] advance => consuming token at pos=48 => Identifier("handle")
[parser2] advance => consuming token at pos=49 => Comma
[parser2] advance => consuming token at pos=50 => Identifier("sql")
[parser2] advance => consuming token at pos=51 => Colon
[parser2] advance => consuming token at pos=52 => StringLiteral("CREATE TABLE things (id INTEGER PRIMARY KEY, label TEXT)")
[parser2] advance => consuming token at pos=53 => Comma
[parser2] advance => consuming token at pos=54 => Identifier("params")
[parser2] advance => consuming token at pos=55 => Colon
[parser2] advance => consuming token at pos=56 => LBracket
[parser2] advance => consuming token at pos=57 => RBracket
[parser2] advance => consuming token at pos=58 => RBracket
[parser2] advance => consuming token at pos=59 => RParen
[parser2] parse_tokens => got a statement: Assignment { left: Ident("X"), right: FunctionCall { callee: Ident("sqlite:query"), args: [KeyedArray([("handle", Ident("handle")), ("sql", StrLit("CREATE TABLE things (id INTEGER PRIMARY KEY, label TEXT)")), ("params", BracketedArray([]))])] } }
[parser2] parse_tokens => about to parse statement at pos=60 token=Some(Identifier("slog"))
[parser2] advance => consuming token at pos=60 => Identifier("slog")
[parser2] advance => consuming token at pos=61 => LParen
[parser2] advance => consuming token at pos=62 => Identifier("X")
[parser2] advance => consuming token at pos=63 => RParen
[parser2] parse_tokens => got a statement: ExprStmt(FunctionCall { callee: Ident("slog"), args: [Ident("X")] })
[parser2] parse_tokens => about to parse statement at pos=64 token=Some(Identifier("Y"))
[parser2] advance => consuming token at pos=64 => Identifier("Y")
[parser2] advance => consuming token at pos=65 => Equals
[parser2] advance => consuming token at pos=66 => Identifier("sqlite:query")
[parser2] advance => consuming token at pos=67 => LParen
[parser2] advance => consuming token at pos=68 => LBracket
[parser2] advance => consuming token at pos=69 => Identifier("handle")
[parser2] advance => consuming token at pos=70 => Colon
[parser2] advance => consuming token at pos=71 => Identifier("handle")
[parser2] advance => consuming token at pos=72 => Comma
[parser2] advance => consuming token at pos=73 => Identifier("sql")
[parser2] advance => consuming token at pos=74 => Colon
[parser2] advance => consuming token at pos=75 => StringLiteral("INSERT INTO things (label) VALUES (?)")
[parser2] advance => consuming token at pos=76 => Comma
[parser2] advance => consuming token at pos=77 => Identifier("params")
[parser2] advance => consuming token at pos=78 => Colon
[parser2] advance => consuming token at pos=79 => LBracket
[parser2] advance => consuming token at pos=80 => StringLiteral("apple")
[parser2] advance => consuming token at pos=81 => RBracket
[parser2] advance => consuming token at pos=82 => RBracket
[parser2] advance => consuming token at pos=83 => RParen
[parser2] parse_tokens => got a statement: Assignment { left: Ident("Y"), right: FunctionCall { callee: Ident("sqlite:query"), args: [KeyedArray([("handle", Ident("handle")), ("sql", StrLit("INSERT INTO things (label) VALUES (?)")), ("params", BracketedArray([StrLit("apple")]))])] } }
[parser2] parse_tokens => about to parse statement at pos=84 token=Some(Identifier("slog"))
[parser2] advance => consuming token at pos=84 => Identifier("slog")
[parser2] advance => consuming token at pos=85 => LParen
[parser2] advance => consuming token at pos=86 => Identifier("Y")
[parser2] advance => consuming token at pos=87 => RParen
[parser2] parse_tokens => got a statement: ExprStmt(FunctionCall { callee: Ident("slog"), args: [Ident("Y")] })
[parser2] parse_tokens => about to parse statement at pos=88 token=Some(Identifier("sqlite:query"))
[parser2] advance => consuming token at pos=88 => Identifier("sqlite:query")
[parser2] advance => consuming token at pos=89 => LParen
[parser2] advance => consuming token at pos=90 => LBracket
[parser2] advance => consuming token at pos=91 => Identifier("handle")
[parser2] advance => consuming token at pos=92 => Colon
[parser2] advance => consuming token at pos=93 => Identifier("handle")
[parser2] advance => consuming token at pos=94 => Comma
[parser2] advance => consuming token at pos=95 => Identifier("sql")
[parser2] advance => consuming token at pos=96 => Colon
[parser2] advance => consuming token at pos=97 => StringLiteral("INSERT INTO things (label) VALUES (?)")
[parser2] advance => consuming token at pos=98 => Comma
[parser2] advance => consuming token at pos=99 => Identifier("params")
[parser2] advance => consuming token at pos=100 => Colon
[parser2] advance => consuming token at pos=101 => LBracket
[parser2] advance => consuming token at pos=102 => StringLiteral("banana")
[parser2] advance => consuming token at pos=103 => RBracket
[parser2] advance => consuming token at pos=104 => RBracket
[parser2] advance => consuming token at pos=105 => RParen
[parser2] parse_tokens => got a statement: ExprStmt(FunctionCall { callee: Ident("sqlite:query"), args: [KeyedArray([("handle", Ident("handle")), ("sql", StrLit("INSERT INTO things (label) VALUES (?)")), ("params", BracketedArray([StrLit("banana")]))])] })
[parser2] parse_tokens => about to parse statement at pos=106 token=Some(Identifier("sqlite:query"))
[parser2] advance => consuming token at pos=106 => Identifier("sqlite:query")
[parser2] advance => consuming token at pos=107 => LParen
[parser2] advance => consuming token at pos=108 => LBracket
[parser2] advance => consuming token at pos=109 => Identifier("handle")
[parser2] advance => consuming token at pos=110 => Colon
[parser2] advance => consuming token at pos=111 => Identifier("handle")
[parser2] advance => consuming token at pos=112 => Comma
[parser2] advance => consuming token at pos=113 => Identifier("sql")
[parser2] advance => consuming token at pos=114 => Colon
[parser2] advance => consuming token at pos=115 => StringLiteral("INSERT INTO things (label) VALUES (?)")
[parser2] advance => consuming token at pos=116 => Comma
[parser2] advance => consuming token at pos=117 => Identifier("params")
[parser2] advance => consuming token at pos=118 => Colon
[parser2] advance => consuming token at pos=119 => LBracket
[parser2] advance => consuming token at pos=120 => StringLiteral("carrot")
[parser2] advance => consuming token at pos=121 => RBracket
[parser2] advance => consuming token at pos=122 => RBracket
[parser2] advance => consuming token at pos=123 => RParen
[parser2] parse_tokens => got a statement: ExprStmt(FunctionCall { callee: Ident("sqlite:query"), args: [KeyedArray([("handle", Ident("handle")), ("sql", StrLit("INSERT INTO things (label) VALUES (?)")), ("params", BracketedArray([StrLit("carrot")]))])] })
[parser2] parse_tokens => about to parse statement at pos=124 token=Some(Identifier("results"))
[parser2] advance => consuming token at pos=124 => Identifier("results")
[parser2] advance => consuming token at pos=125 => Equals
[parser2] advance => consuming token at pos=126 => Identifier("sqlite:query")
[parser2] advance => consuming token at pos=127 => LParen
[parser2] advance => consuming token at pos=128 => LBracket
[parser2] advance => consuming token at pos=129 => Identifier("handle")
[parser2] advance => consuming token at pos=130 => Colon
[parser2] advance => consuming token at pos=131 => Identifier("handle")
[parser2] advance => consuming token at pos=132 => Comma
[parser2] advance => consuming token at pos=133 => Identifier("sql")
[parser2] advance => consuming token at pos=134 => Colon
[parser2] advance => consuming token at pos=135 => StringLiteral("SELECT id, label FROM things")
[parser2] advance => consuming token at pos=136 => Comma
[parser2] advance => consuming token at pos=137 => Identifier("params")
[parser2] advance => consuming token at pos=138 => Colon
[parser2] advance => consuming token at pos=139 => LBracket
[parser2] advance => consuming token at pos=140 => RBracket
[parser2] advance => consuming token at pos=141 => RBracket
[parser2] advance => consuming token at pos=142 => RParen
[parser2] parse_tokens => got a statement: Assignment { left: Ident("results"), right: FunctionCall { callee: Ident("sqlite:query"), args: [KeyedArray([("handle", Ident("handle")), ("sql", StrLit("SELECT id, label FROM things")), ("params", BracketedArray([]))])] } }
[parser2] parse_tokens => about to parse statement at pos=143 token=Some(Identifier("rows"))
[parser2] advance => consuming token at pos=143 => Identifier("rows")
[parser2] advance => consuming token at pos=144 => Equals
[parser2] advance => consuming token at pos=145 => Identifier("array:collect")
[parser2] advance => consuming token at pos=146 => LParen
[parser2] advance => consuming token at pos=147 => Identifier("results")
[parser2] advance => consuming token at pos=148 => RParen
[parser2] parse_tokens => got a statement: Assignment { left: Ident("rows"), right: FunctionCall { callee: Ident("array:collect"), args: [Ident("results")] } }
[parser2] parse_tokens => about to parse statement at pos=149 token=Some(Identifier("sqlite:close"))
[parser2] advance => consuming token at pos=149 => Identifier("sqlite:close")
[parser2] advance => consuming token at pos=150 => LParen
[parser2] advance => consuming token at pos=151 => LBracket
[parser2] advance => consuming token at pos=152 => Identifier("handle")
[parser2] advance => consuming token at pos=153 => Colon
[parser2] advance => consuming token at pos=154 => Identifier("handle")
[parser2] advance => consuming token at pos=155 => RBracket
[parser2] advance => consuming token at pos=156 => RParen
[parser2] parse_tokens => got a statement: ExprStmt(FunctionCall { callee: Ident("sqlite:close"), args: [KeyedArray([("handle", Ident("handle"))])] })
[sput] => register_sput => setting up bridging for sput(...)
[slog] => register_slog => setting up bridging for slog(...)
(Interpreter) extend => sqlite
[tokenize_pick_args] => ["\"sqlite\""]
[extend] Attempting to load library => 'libmumusqlite.so'
[extend] Found Cargo.lock => calling it now...
[extend] plugin 'libmumusqlite.so' => Cargo.lock() success. Extra arg = None
(Interpreter) extend => array
[tokenize_pick_args] => ["\"array\""]
[extend] Attempting to load library => 'libmumuarray.so'
[extend] Found Cargo.lock => calling it now...
[extend] plugin 'libmumuarray.so' => Cargo.lock() success. Extra arg = None
[slog] => About to print data with a newline. data=Int(0)
[slog] => printing => '0\n'
[slog] => About to print data with a newline. data=Int(1)
[slog] => printing => '1\n'
[array:collect] called with args = [InkIterator(...)]
[array:collect] (Plugin) Beginning to collect from Plugin InkIterator
[sqlite:query] streaming: got row {"id": Long(1), "label": SingleString("apple")}
[array:collect] (Plugin) Collected: KeyedArray(id => Long(1), label => SingleString("apple"), )
[sqlite:query] streaming: got row {"id": Long(1), "label": SingleString("apple")}
[array:collect] (Plugin) Collected: KeyedArray(id => Long(1), label => SingleString("apple"), )
[sqlite:query] streaming: got row {"id": Long(1), "label": SingleString("apple")}
[array:collect] (Plugin) Collected: KeyedArray(id => Long(1), label => SingleString("apple"), )
[sqlite:query] streaming: got row {"id": Long(1), "label": SingleString("apple")}
[array:collect] (Plugin) Collected: KeyedArray(id => Long(1), label => SingleString("apple"), )
[sqlite:query] streaming: got row {"id": Long(1), "label": SingleString("apple")}
[array:collect] (Plugin) Collected: KeyedArray(id => Long(1), label => SingleString("apple"), )
[sqlite:query] streaming: got row {"id": Long(1), "label": SingleString("apple")}
[array:collect] (Plugin) Collected: KeyedArray(id => Long(1), label => SingleString("apple"), )
[sqlite:query] streaming: got row {"id": Long(1), "label": SingleString("apple")}
[array:collect] (Plugin) Collected: KeyedArray(id => Long(1), label => SingleString("apple"), )
[sqlite:query] streaming: got row {"id": Long(1), "label": SingleString("apple")}
[array:collect] (Plugin) Collected: KeyedArray(id => Long(1), label => SingleString("apple"), )
[sqlite:query] streaming: got row {"id": Long(1), "label": SingleString("apple")}
[array:collect] (Plugin) Collected: KeyedArray(id => Long(1), label => SingleString("apple"), )
[sqlite:query] streaming: got row {"id": Long(1), "label": SingleString("apple")}
[array:collect] (Plugin) Collected: KeyedArray(id => Long(1), label => SingleString("apple"), )
[sqlite:query] streaming: got row {"id": Long(1), "label": SingleString("apple")}
[array:collect] (Plugin) Collected: KeyedArray(id => Long(1), label => SingleString("apple"), )
[sqlite:query] streaming: got row {"id": Long(1), "label": SingleString("apple")}
[array:collect] (Plugin) Collected: KeyedArray(id => Long(1), label => SingleString("apple"), )
[sqlite:query] streaming: got row {"id": Long(1), "label": SingleString("apple")}
[array:collect] (Plugin) Collected: KeyedArray(id => Long(1), label => SingleString("apple"), )
[sqlite:query] streaming: got row {"id": Long(1), "label": SingleString("apple")}
[array:collect] (Plugin) Collected: KeyedArray(id => Long(1), label => SingleString("apple"), )