edn-abnf 0.1.4 → 0.1.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/edn-abnf.gemspec +1 -1
- data/lib/parser/edngrammar.rb +276 -134
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a595a62b037a2f01e97e65a81ded57ab06f7bb8644b13b154ec0cff3bc10024c
|
4
|
+
data.tar.gz: 9e08a40602ace456c0f354dd9c0faa377bfa5dc45e8f457210808d0933cb49ab
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: af634c12b0f15f52f1693e5ffc341bdb3c212cb162fbb34b912183d525069029a2c946a8b09143da497fda2726407d22f46e1ebce3f75bbe70550bceb6ac9566
|
7
|
+
data.tar.gz: d17d1bb4da4943e31d2670a21e05b7a0ce4f74bbb202e5732f7f93bef469301b4c600168e48615a4458cab1c7d84b60dcd7b9ba4bc331ef6ed7ff63cb84080a9
|
data/edn-abnf.gemspec
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
Gem::Specification.new do |s|
|
2
2
|
s.name = "edn-abnf"
|
3
|
-
s.version = "0.1.
|
3
|
+
s.version = "0.1.5"
|
4
4
|
s.summary = "CBOR Extended Diagnostic Notation (EDN) implemented in ABNF"
|
5
5
|
s.description = %q{edn-abnf implements converters and miscellaneous tools for CBOR EDN's ABNF}
|
6
6
|
s.author = "Carsten Bormann"
|
data/lib/parser/edngrammar.rb
CHANGED
@@ -576,14 +576,21 @@ module EDNGRAMMAR
|
|
576
576
|
end
|
577
577
|
|
578
578
|
module Decnumber3
|
579
|
+
end
|
580
|
+
|
581
|
+
module Decnumber4
|
582
|
+
end
|
583
|
+
|
584
|
+
module Decnumber5
|
579
585
|
def ast
|
580
|
-
|
581
|
-
|
582
|
-
|
583
|
-
|
584
|
-
|
586
|
+
tv = text_value
|
587
|
+
if /[.e]/i =~ tv
|
588
|
+
sp = elements[0].text_value
|
589
|
+
mp = elements[1].text_value.sub(/\A\./, "0.").sub(/\.\z/, ".0")
|
590
|
+
ep = elements[2].text_value
|
591
|
+
(sp + mp + ep).to_f
|
585
592
|
else
|
586
|
-
|
593
|
+
tv.to_i
|
587
594
|
end
|
588
595
|
end
|
589
596
|
end
|
@@ -608,120 +615,171 @@ module EDNGRAMMAR
|
|
608
615
|
end
|
609
616
|
s0 << r1
|
610
617
|
if r1
|
611
|
-
|
618
|
+
i3 = index
|
619
|
+
i4, s4 = index, []
|
620
|
+
s5, i5 = [], index
|
612
621
|
loop do
|
613
|
-
|
614
|
-
if
|
615
|
-
|
622
|
+
r6 = _nt_DIGIT
|
623
|
+
if r6
|
624
|
+
s5 << r6
|
616
625
|
else
|
617
626
|
break
|
618
627
|
end
|
619
628
|
end
|
620
|
-
if
|
621
|
-
@index =
|
622
|
-
|
629
|
+
if s5.empty?
|
630
|
+
@index = i5
|
631
|
+
r5 = nil
|
623
632
|
else
|
624
|
-
|
633
|
+
r5 = instantiate_node(SyntaxNode,input, i5...index, s5)
|
625
634
|
end
|
626
|
-
|
627
|
-
if
|
628
|
-
|
635
|
+
s4 << r5
|
636
|
+
if r5
|
637
|
+
i8, s8 = index, []
|
629
638
|
if (match_len = has_terminal?(".", false, index))
|
630
|
-
|
639
|
+
r9 = true
|
631
640
|
@index += match_len
|
632
641
|
else
|
633
642
|
terminal_parse_failure('"."')
|
634
|
-
|
643
|
+
r9 = nil
|
635
644
|
end
|
636
|
-
|
637
|
-
if
|
638
|
-
|
645
|
+
s8 << r9
|
646
|
+
if r9
|
647
|
+
s10, i10 = [], index
|
639
648
|
loop do
|
640
|
-
|
641
|
-
if
|
642
|
-
|
649
|
+
r11 = _nt_DIGIT
|
650
|
+
if r11
|
651
|
+
s10 << r11
|
643
652
|
else
|
644
653
|
break
|
645
654
|
end
|
646
655
|
end
|
647
|
-
|
648
|
-
|
649
|
-
|
656
|
+
r10 = instantiate_node(SyntaxNode,input, i10...index, s10)
|
657
|
+
s8 << r10
|
658
|
+
end
|
659
|
+
if s8.last
|
660
|
+
r8 = instantiate_node(SyntaxNode,input, i8...index, s8)
|
661
|
+
r8.extend(Decnumber0)
|
662
|
+
else
|
663
|
+
@index = i8
|
664
|
+
r8 = nil
|
665
|
+
end
|
666
|
+
if r8
|
667
|
+
r7 = r8
|
668
|
+
else
|
669
|
+
r7 = instantiate_node(SyntaxNode,input, index...index)
|
670
|
+
end
|
671
|
+
s4 << r7
|
672
|
+
end
|
673
|
+
if s4.last
|
674
|
+
r4 = instantiate_node(SyntaxNode,input, i4...index, s4)
|
675
|
+
r4.extend(Decnumber1)
|
676
|
+
else
|
677
|
+
@index = i4
|
678
|
+
r4 = nil
|
679
|
+
end
|
680
|
+
if r4
|
681
|
+
r4 = SyntaxNode.new(input, (index-1)...index) if r4 == true
|
682
|
+
r3 = r4
|
683
|
+
else
|
684
|
+
i12, s12 = index, []
|
685
|
+
if (match_len = has_terminal?(".", false, index))
|
686
|
+
r13 = true
|
687
|
+
@index += match_len
|
688
|
+
else
|
689
|
+
terminal_parse_failure('"."')
|
690
|
+
r13 = nil
|
691
|
+
end
|
692
|
+
s12 << r13
|
693
|
+
if r13
|
694
|
+
s14, i14 = [], index
|
695
|
+
loop do
|
696
|
+
r15 = _nt_DIGIT
|
697
|
+
if r15
|
698
|
+
s14 << r15
|
699
|
+
else
|
700
|
+
break
|
701
|
+
end
|
702
|
+
end
|
703
|
+
if s14.empty?
|
704
|
+
@index = i14
|
705
|
+
r14 = nil
|
650
706
|
else
|
651
|
-
|
707
|
+
r14 = instantiate_node(SyntaxNode,input, i14...index, s14)
|
652
708
|
end
|
653
|
-
|
709
|
+
s12 << r14
|
654
710
|
end
|
655
|
-
if
|
656
|
-
|
657
|
-
|
711
|
+
if s12.last
|
712
|
+
r12 = instantiate_node(SyntaxNode,input, i12...index, s12)
|
713
|
+
r12.extend(Decnumber2)
|
658
714
|
else
|
659
|
-
@index =
|
660
|
-
|
715
|
+
@index = i12
|
716
|
+
r12 = nil
|
661
717
|
end
|
662
|
-
if
|
663
|
-
|
718
|
+
if r12
|
719
|
+
r12 = SyntaxNode.new(input, (index-1)...index) if r12 == true
|
720
|
+
r3 = r12
|
664
721
|
else
|
665
|
-
|
722
|
+
@index = i3
|
723
|
+
r3 = nil
|
666
724
|
end
|
667
|
-
|
668
|
-
|
669
|
-
|
670
|
-
|
671
|
-
|
672
|
-
|
725
|
+
end
|
726
|
+
s0 << r3
|
727
|
+
if r3
|
728
|
+
i17, s17 = index, []
|
729
|
+
if (match_len = has_terminal?("e", :insens, index))
|
730
|
+
r18 = instantiate_node(SyntaxNode,input, index...(index + match_len))
|
731
|
+
@index += match_len
|
732
|
+
else
|
733
|
+
terminal_parse_failure('"e"')
|
734
|
+
r18 = nil
|
735
|
+
end
|
736
|
+
s17 << r18
|
737
|
+
if r18
|
738
|
+
r20 = _nt_sign
|
739
|
+
if r20
|
740
|
+
r19 = r20
|
673
741
|
else
|
674
|
-
|
675
|
-
r12 = nil
|
742
|
+
r19 = instantiate_node(SyntaxNode,input, index...index)
|
676
743
|
end
|
677
|
-
|
678
|
-
if
|
679
|
-
|
680
|
-
|
681
|
-
|
682
|
-
|
683
|
-
|
684
|
-
end
|
685
|
-
s11 << r13
|
686
|
-
if r13
|
687
|
-
s15, i15 = [], index
|
688
|
-
loop do
|
689
|
-
r16 = _nt_DIGIT
|
690
|
-
if r16
|
691
|
-
s15 << r16
|
692
|
-
else
|
693
|
-
break
|
694
|
-
end
|
695
|
-
end
|
696
|
-
if s15.empty?
|
697
|
-
@index = i15
|
698
|
-
r15 = nil
|
744
|
+
s17 << r19
|
745
|
+
if r19
|
746
|
+
s21, i21 = [], index
|
747
|
+
loop do
|
748
|
+
r22 = _nt_DIGIT
|
749
|
+
if r22
|
750
|
+
s21 << r22
|
699
751
|
else
|
700
|
-
|
752
|
+
break
|
701
753
|
end
|
702
|
-
s11 << r15
|
703
754
|
end
|
755
|
+
if s21.empty?
|
756
|
+
@index = i21
|
757
|
+
r21 = nil
|
758
|
+
else
|
759
|
+
r21 = instantiate_node(SyntaxNode,input, i21...index, s21)
|
760
|
+
end
|
761
|
+
s17 << r21
|
704
762
|
end
|
705
|
-
if s11.last
|
706
|
-
r11 = instantiate_node(SyntaxNode,input, i11...index, s11)
|
707
|
-
r11.extend(Decnumber1)
|
708
|
-
else
|
709
|
-
@index = i11
|
710
|
-
r11 = nil
|
711
|
-
end
|
712
|
-
if r11
|
713
|
-
r10 = r11
|
714
|
-
else
|
715
|
-
r10 = instantiate_node(SyntaxNode,input, index...index)
|
716
|
-
end
|
717
|
-
s0 << r10
|
718
763
|
end
|
764
|
+
if s17.last
|
765
|
+
r17 = instantiate_node(SyntaxNode,input, i17...index, s17)
|
766
|
+
r17.extend(Decnumber3)
|
767
|
+
else
|
768
|
+
@index = i17
|
769
|
+
r17 = nil
|
770
|
+
end
|
771
|
+
if r17
|
772
|
+
r16 = r17
|
773
|
+
else
|
774
|
+
r16 = instantiate_node(SyntaxNode,input, index...index)
|
775
|
+
end
|
776
|
+
s0 << r16
|
719
777
|
end
|
720
778
|
end
|
721
779
|
if s0.last
|
722
780
|
r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
|
723
|
-
r0.extend(
|
724
|
-
r0.extend(
|
781
|
+
r0.extend(Decnumber4)
|
782
|
+
r0.extend(Decnumber5)
|
725
783
|
else
|
726
784
|
@index = i0
|
727
785
|
r0 = nil
|
@@ -751,7 +809,10 @@ module EDNGRAMMAR
|
|
751
809
|
end
|
752
810
|
|
753
811
|
module Basenumber6
|
754
|
-
|
812
|
+
end
|
813
|
+
|
814
|
+
module Basenumber7
|
815
|
+
def ast; /p/i =~ text_value ? Float(text_value.sub(/x\./i, "x0.").sub(/\.p/i, ".0p")) : Integer(text_value) end
|
755
816
|
end
|
756
817
|
|
757
818
|
def _nt_basenumber
|
@@ -831,12 +892,7 @@ module EDNGRAMMAR
|
|
831
892
|
break
|
832
893
|
end
|
833
894
|
end
|
834
|
-
|
835
|
-
@index = i14
|
836
|
-
r14 = nil
|
837
|
-
else
|
838
|
-
r14 = instantiate_node(SyntaxNode,input, i14...index, s14)
|
839
|
-
end
|
895
|
+
r14 = instantiate_node(SyntaxNode,input, i14...index, s14)
|
840
896
|
s12 << r14
|
841
897
|
end
|
842
898
|
if s12.last
|
@@ -916,31 +972,78 @@ module EDNGRAMMAR
|
|
916
972
|
r4 = r5
|
917
973
|
else
|
918
974
|
i21, s21 = index, []
|
919
|
-
if (match_len = has_terminal?("
|
975
|
+
if (match_len = has_terminal?("x", :insens, index))
|
920
976
|
r22 = instantiate_node(SyntaxNode,input, index...(index + match_len))
|
921
977
|
@index += match_len
|
922
978
|
else
|
923
|
-
terminal_parse_failure('"
|
979
|
+
terminal_parse_failure('"x"')
|
924
980
|
r22 = nil
|
925
981
|
end
|
926
982
|
s21 << r22
|
927
983
|
if r22
|
928
|
-
|
929
|
-
|
930
|
-
|
931
|
-
if r24
|
932
|
-
s23 << r24
|
933
|
-
else
|
934
|
-
break
|
935
|
-
end
|
936
|
-
end
|
937
|
-
if s23.empty?
|
938
|
-
@index = i23
|
939
|
-
r23 = nil
|
984
|
+
if (match_len = has_terminal?(".", false, index))
|
985
|
+
r23 = true
|
986
|
+
@index += match_len
|
940
987
|
else
|
941
|
-
|
988
|
+
terminal_parse_failure('"."')
|
989
|
+
r23 = nil
|
942
990
|
end
|
943
991
|
s21 << r23
|
992
|
+
if r23
|
993
|
+
s24, i24 = [], index
|
994
|
+
loop do
|
995
|
+
r25 = _nt_HEXDIG
|
996
|
+
if r25
|
997
|
+
s24 << r25
|
998
|
+
else
|
999
|
+
break
|
1000
|
+
end
|
1001
|
+
end
|
1002
|
+
if s24.empty?
|
1003
|
+
@index = i24
|
1004
|
+
r24 = nil
|
1005
|
+
else
|
1006
|
+
r24 = instantiate_node(SyntaxNode,input, i24...index, s24)
|
1007
|
+
end
|
1008
|
+
s21 << r24
|
1009
|
+
if r24
|
1010
|
+
if (match_len = has_terminal?("p", :insens, index))
|
1011
|
+
r26 = instantiate_node(SyntaxNode,input, index...(index + match_len))
|
1012
|
+
@index += match_len
|
1013
|
+
else
|
1014
|
+
terminal_parse_failure('"p"')
|
1015
|
+
r26 = nil
|
1016
|
+
end
|
1017
|
+
s21 << r26
|
1018
|
+
if r26
|
1019
|
+
r28 = _nt_sign
|
1020
|
+
if r28
|
1021
|
+
r27 = r28
|
1022
|
+
else
|
1023
|
+
r27 = instantiate_node(SyntaxNode,input, index...index)
|
1024
|
+
end
|
1025
|
+
s21 << r27
|
1026
|
+
if r27
|
1027
|
+
s29, i29 = [], index
|
1028
|
+
loop do
|
1029
|
+
r30 = _nt_DIGIT
|
1030
|
+
if r30
|
1031
|
+
s29 << r30
|
1032
|
+
else
|
1033
|
+
break
|
1034
|
+
end
|
1035
|
+
end
|
1036
|
+
if s29.empty?
|
1037
|
+
@index = i29
|
1038
|
+
r29 = nil
|
1039
|
+
else
|
1040
|
+
r29 = instantiate_node(SyntaxNode,input, i29...index, s29)
|
1041
|
+
end
|
1042
|
+
s21 << r29
|
1043
|
+
end
|
1044
|
+
end
|
1045
|
+
end
|
1046
|
+
end
|
944
1047
|
end
|
945
1048
|
if s21.last
|
946
1049
|
r21 = instantiate_node(SyntaxNode,input, i21...index, s21)
|
@@ -953,46 +1056,85 @@ module EDNGRAMMAR
|
|
953
1056
|
r21 = SyntaxNode.new(input, (index-1)...index) if r21 == true
|
954
1057
|
r4 = r21
|
955
1058
|
else
|
956
|
-
|
957
|
-
if (match_len = has_terminal?("
|
958
|
-
|
1059
|
+
i31, s31 = index, []
|
1060
|
+
if (match_len = has_terminal?("o", :insens, index))
|
1061
|
+
r32 = instantiate_node(SyntaxNode,input, index...(index + match_len))
|
959
1062
|
@index += match_len
|
960
1063
|
else
|
961
|
-
terminal_parse_failure('"
|
962
|
-
|
1064
|
+
terminal_parse_failure('"o"')
|
1065
|
+
r32 = nil
|
963
1066
|
end
|
964
|
-
|
965
|
-
if
|
966
|
-
|
1067
|
+
s31 << r32
|
1068
|
+
if r32
|
1069
|
+
s33, i33 = [], index
|
967
1070
|
loop do
|
968
|
-
|
969
|
-
if
|
970
|
-
|
1071
|
+
r34 = _nt_ODIGIT
|
1072
|
+
if r34
|
1073
|
+
s33 << r34
|
971
1074
|
else
|
972
1075
|
break
|
973
1076
|
end
|
974
1077
|
end
|
975
|
-
if
|
976
|
-
@index =
|
977
|
-
|
1078
|
+
if s33.empty?
|
1079
|
+
@index = i33
|
1080
|
+
r33 = nil
|
978
1081
|
else
|
979
|
-
|
1082
|
+
r33 = instantiate_node(SyntaxNode,input, i33...index, s33)
|
980
1083
|
end
|
981
|
-
|
1084
|
+
s31 << r33
|
982
1085
|
end
|
983
|
-
if
|
984
|
-
|
985
|
-
|
1086
|
+
if s31.last
|
1087
|
+
r31 = instantiate_node(SyntaxNode,input, i31...index, s31)
|
1088
|
+
r31.extend(Basenumber4)
|
986
1089
|
else
|
987
|
-
@index =
|
988
|
-
|
1090
|
+
@index = i31
|
1091
|
+
r31 = nil
|
989
1092
|
end
|
990
|
-
if
|
991
|
-
|
992
|
-
r4 =
|
1093
|
+
if r31
|
1094
|
+
r31 = SyntaxNode.new(input, (index-1)...index) if r31 == true
|
1095
|
+
r4 = r31
|
993
1096
|
else
|
994
|
-
|
995
|
-
|
1097
|
+
i35, s35 = index, []
|
1098
|
+
if (match_len = has_terminal?("b", :insens, index))
|
1099
|
+
r36 = instantiate_node(SyntaxNode,input, index...(index + match_len))
|
1100
|
+
@index += match_len
|
1101
|
+
else
|
1102
|
+
terminal_parse_failure('"b"')
|
1103
|
+
r36 = nil
|
1104
|
+
end
|
1105
|
+
s35 << r36
|
1106
|
+
if r36
|
1107
|
+
s37, i37 = [], index
|
1108
|
+
loop do
|
1109
|
+
r38 = _nt_BDIGIT
|
1110
|
+
if r38
|
1111
|
+
s37 << r38
|
1112
|
+
else
|
1113
|
+
break
|
1114
|
+
end
|
1115
|
+
end
|
1116
|
+
if s37.empty?
|
1117
|
+
@index = i37
|
1118
|
+
r37 = nil
|
1119
|
+
else
|
1120
|
+
r37 = instantiate_node(SyntaxNode,input, i37...index, s37)
|
1121
|
+
end
|
1122
|
+
s35 << r37
|
1123
|
+
end
|
1124
|
+
if s35.last
|
1125
|
+
r35 = instantiate_node(SyntaxNode,input, i35...index, s35)
|
1126
|
+
r35.extend(Basenumber5)
|
1127
|
+
else
|
1128
|
+
@index = i35
|
1129
|
+
r35 = nil
|
1130
|
+
end
|
1131
|
+
if r35
|
1132
|
+
r35 = SyntaxNode.new(input, (index-1)...index) if r35 == true
|
1133
|
+
r4 = r35
|
1134
|
+
else
|
1135
|
+
@index = i4
|
1136
|
+
r4 = nil
|
1137
|
+
end
|
996
1138
|
end
|
997
1139
|
end
|
998
1140
|
end
|
@@ -1001,8 +1143,8 @@ module EDNGRAMMAR
|
|
1001
1143
|
end
|
1002
1144
|
if s0.last
|
1003
1145
|
r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
|
1004
|
-
r0.extend(Basenumber5)
|
1005
1146
|
r0.extend(Basenumber6)
|
1147
|
+
r0.extend(Basenumber7)
|
1006
1148
|
else
|
1007
1149
|
@index = i0
|
1008
1150
|
r0 = nil
|