def lex_number_payload

qasim-bend-kit@0.1.0.2 · proof/JSON_NumberLexProof.bend:282

import qasim-bend-kit@0.1.0.2/proof/JSON_NumberLexProof.bend as JSONNumberLexProof
import Base
import qasim-bend-kit@0.1.0.2/libs/JSON.bend as J

282def lex_number_payload(+text: String,
283                       +evidence: {J.number_valid(text) == True{} : Bool}) -> {J.lex_scan(text, J.Outside{}, SNil{}, Nil{}) == (J.Payload{text} <> Nil{}) : List<&2, J.Lexeme>}:
284    match text:
285        case SNil{}:
286            Empty.absurd({J.lex_scan(SNil{}, J.Outside{}, SNil{}, Nil{}) == (J.Payload{SNil{}} <> Nil{}) : List<&2, J.Lexeme>},
287                false_true(Equal.trans(Bool, False{}, J.number_valid(SNil{}), True{}, {==}, evidence)))
288        case SCon{+head, +tail}:
289            Equal.trans(List<&2, J.Lexeme>,
290                J.lex_scan(text, J.Outside{}, SNil{}, Nil{}),
291                J.lexemes(text, J.Outside{}, SNil{}, Nil{}, J.LexRaw{}),
292                J.Payload{text} <> Nil{},
293                Equal.cong(J.LexAction, List<&2, J.Lexeme>, action => J.lexemes(text, J.Outside{}, SNil{}, Nil{}, action),
294                    J.lex_seed_action(text, J.Outside{}), J.LexRaw{},
295                    number_char_action(head, J.number_char(head), {==}, tail, J.NumberStart{}, evidence)),
296                Equal.trans(List<&2, J.Lexeme>,
297                    J.lexemes(text, J.Outside{}, SNil{}, Nil{}, J.LexRaw{}),
298                    J.lex_scan(tail, J.Outside{}, SCon{head, SNil{}}, Nil{}),
299                    J.Payload{text} <> Nil{},
300                    {==},
301                    Equal.trans(List<&2, J.Lexeme>,
302                        J.lex_scan(tail, J.Outside{}, SCon{head, SNil{}}, Nil{}),
303                        J.Payload{SCon{head, SNil{}} ++ tail} <> Nil{},
304                        J.Payload{text} <> Nil{},
305                        lex_number_tail(tail, J.number_next(J.NumberStart{}, head), head, SNil{}, head, SNil{}, {==},
306                            number_valid_cons(head, tail, J.NumberStart{}, evidence)),
307                        Equal.cong(String, List<&2, J.Lexeme>, s => J.Payload{s} <> Nil{},
308                            SCon{head, SNil{}} ++ tail, text, {==}))))

Uses (21)

Used by (2)