def lex
bend-kit-sigv4@0.11.0.1 · sigv4.bend:662
import bend-kit-sigv4@0.11.0.1/sigv4.bend as Sigv4
import Base
662
663def lex(s: String, m: Lx, st: St) -> St:
664 match s:
665 case SNil{}:
666 st.end(m, st)
667 case SCon{h, t}:
668 match h m:
669 case '<' LText{}:
670 lex(t, LOpen{}, st.nm0(st))
671 case '&' LText{}:
672 lex(t, LEnt{}, st.nm0(st))
673 case c LText{}:
674 lex(t, LText{}, st.txt(st, c))
675 case '/' LOpen{}:
676 lex(t, LEnd{}, st)
677 case '?' LOpen{}:
678 lex(t, LPi{}, st)
679 case '!' LOpen{}:
680 lex(t, LBang{}, st)
681 case c LOpen{}:
682 lex(t, LName{}, st.nm(st, c))
683 case '>' LName{}:
684 lex(t, LText{}, st.open(st))
685 case '/' LName{}:
686 lex(t, LSelf{}, st.open(st))
687 case ' ' LName{}:
688 lex(t, LAttr{}, st.open(st))
689 case Chr{9} LName{}:
690 lex(t, LAttr{}, st.open(st))
691 case Chr{10} LName{}:
692 lex(t, LAttr{}, st.open(st))
693 case Chr{13} LName{}:
694 lex(t, LAttr{}, st.open(st))
695 case c LName{}:
696 lex(t, LName{}, st.nm(st, c))
697 case '"' LAttr{}:
698 lex(t, LDq{}, st)
699 case Chr{39} LAttr{}:
700 lex(t, LSq{}, st)
701 case '>' LAttr{}:
702 lex(t, LText{}, st)
703 case '/' LAttr{}:
704 lex(t, LSelf{}, st)
705 case c LAttr{}:
706 lex(t, LAttr{}, st)
707 case '"' LDq{}:
708 lex(t, LAttr{}, st)
709 case c LDq{}:
710 lex(t, LDq{}, st)
711 case Chr{39} LSq{}:
712 lex(t, LAttr{}, st)
713 case c LSq{}:
714 lex(t, LSq{}, st)
715 case '>' LSelf{}:
716 lex(t, LText{}, st.close.top(st))
717 case c LSelf{}:
718 lex(t, LAttr{}, st)
719 case '>' LEnd{}:
720 lex(t, LText{}, st.close(st))
721 case ' ' LEnd{}:
722 lex(t, LEnd{}, st)
723 case Chr{9} LEnd{}:
724 lex(t, LEnd{}, st)
725 case Chr{10} LEnd{}:
726 lex(t, LEnd{}, st)
727 case Chr{13} LEnd{}:
728 lex(t, LEnd{}, st)
729 case c LEnd{}:
730 lex(t, LEnd{}, st.nm(st, c))
731 case '?' LPi{}:
732 lex(t, LPiQ{}, st)
733 case c LPi{}:
734 lex(t, LPi{}, st)
735 case '>' LPiQ{}:
736 lex(t, LText{}, st)
737 case '?' LPiQ{}:
738 lex(t, LPiQ{}, st)
739 case c LPiQ{}:
740 lex(t, LPi{}, st)
741 case '-' LBang{}:
742 lex(t, LCom{}, st)
743 case '[' LBang{}:
744 lex(t, LCdHead{}, st)
745 case c LBang{}:
746 lex(t, LDecl{}, st)
747 case '-' LCom{}:
748 lex(t, LCom1{}, st)
749 case c LCom{}:
750 lex(t, LCom{}, st)
751 case '-' LCom1{}:
752 lex(t, LCom2{}, st)
753 case c LCom1{}:
754 lex(t, LCom{}, st)
755 case '>' LCom2{}:
756 lex(t, LText{}, st)
757 case '-' LCom2{}:
758 lex(t, LCom2{}, st)
759 case c LCom2{}:
760 lex(t, LCom{}, st)
761 case '[' LCdHead{}:
762 lex(t, LCd{}, st)
763 case c LCdHead{}:
764 lex(t, LCdHead{}, st)
765 case ']' LCd{}:
766 lex(t, LCd1{}, st)
767 case c LCd{}:
768 lex(t, LCd{}, st.txt(st, c))
769 case ']' LCd1{}:
770 lex(t, LCd2{}, st)
771 case c LCd1{}:
772 lex(t, LCd{}, st.txt(st.txt(st, ']'), c))
773 case '>' LCd2{}:
774 lex(t, LText{}, st)
775 case ']' LCd2{}:
776 lex(t, LCd2{}, st.txt(st, ']'))
777 case c LCd2{}:
778 lex(t, LCd{}, st.txt(st.txt(st.txt(st, ']'), ']'), c))
779 case ';' LEnt{}:
780 lex(t, LText{}, st.ent(st))
781 case c LEnt{}:
782 lex(t, LEnt{}, st.nm(st, c))
783 case '>' LDecl{}:
784 lex(t, LText{}, st)
785 case c LDecl{}:
786 lex(t, LDecl{}, st)