Test cases
test(A(explode("a")), ['a', []]);

test(A(explode("a+b")), [['+', 'a', 'b'], []]);

test(A(explode("a+b+c")), [['+', 'a', ['+', 'b', 'c']], []]);

test(A(explode("a+b+c+a")), [['+', 'a', ['+', 'b', ['+', 'c', 'a']]], []]);

test(A(explode("")), [FAILURE, []]);

test(A(explode("+")), [FAILURE, ['+']]);

test(A(explode("ab")), ['a', ['b']]);

test(A(explode("a+b+")), [['+', 'a', 'b'], ['+']]);

test(A(explode("a+b+c+")), [['+', 'a', ['+', 'b', 'c']], ['+']]);

test(A(explode("ab+c")), ['a', ['b', '+', 'c']]);

test(A(explode("a+b+")), [['+', 'a', 'b'], ['+']]);