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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 122c595b8bcc114dd460241dc52dbee57962508d969a9ac56b712c8c183c6838
4
- data.tar.gz: 19c2c5dc9508495f8757b5497f8090a244f41f1d6798195c0b2cce65a2b057d4
3
+ metadata.gz: a595a62b037a2f01e97e65a81ded57ab06f7bb8644b13b154ec0cff3bc10024c
4
+ data.tar.gz: 9e08a40602ace456c0f354dd9c0faa377bfa5dc45e8f457210808d0933cb49ab
5
5
  SHA512:
6
- metadata.gz: 67ead5d54e2fb18292a07c2e6a52b7cedbc3d92e3d4325c9dfaacb3d14d3d61158353d32ea0c6e15ebb1f200b2033191afcb21643f168e7fbcb538bc6facbe18
7
- data.tar.gz: 68d8e92c4a4764993e6132d777670bea452eeeabd39001ac3b81608e98a0e8bb0d9f0d1ff4997658adedac362174539b81bc315f8ccdb67a6239f86589b299a5
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.4"
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"
@@ -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
- ip = elements[0].text_value + elements[1].text_value
581
- dp = elements[2].text_value
582
- ep = elements[3].text_value
583
- if dp.empty? && ep.empty?
584
- ip.to_i
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
- (ip + dp + ep).to_f
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
- s3, i3 = [], index
618
+ i3 = index
619
+ i4, s4 = index, []
620
+ s5, i5 = [], index
612
621
  loop do
613
- r4 = _nt_DIGIT
614
- if r4
615
- s3 << r4
622
+ r6 = _nt_DIGIT
623
+ if r6
624
+ s5 << r6
616
625
  else
617
626
  break
618
627
  end
619
628
  end
620
- if s3.empty?
621
- @index = i3
622
- r3 = nil
629
+ if s5.empty?
630
+ @index = i5
631
+ r5 = nil
623
632
  else
624
- r3 = instantiate_node(SyntaxNode,input, i3...index, s3)
633
+ r5 = instantiate_node(SyntaxNode,input, i5...index, s5)
625
634
  end
626
- s0 << r3
627
- if r3
628
- i6, s6 = index, []
635
+ s4 << r5
636
+ if r5
637
+ i8, s8 = index, []
629
638
  if (match_len = has_terminal?(".", false, index))
630
- r7 = true
639
+ r9 = true
631
640
  @index += match_len
632
641
  else
633
642
  terminal_parse_failure('"."')
634
- r7 = nil
643
+ r9 = nil
635
644
  end
636
- s6 << r7
637
- if r7
638
- s8, i8 = [], index
645
+ s8 << r9
646
+ if r9
647
+ s10, i10 = [], index
639
648
  loop do
640
- r9 = _nt_DIGIT
641
- if r9
642
- s8 << r9
649
+ r11 = _nt_DIGIT
650
+ if r11
651
+ s10 << r11
643
652
  else
644
653
  break
645
654
  end
646
655
  end
647
- if s8.empty?
648
- @index = i8
649
- r8 = nil
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
- r8 = instantiate_node(SyntaxNode,input, i8...index, s8)
707
+ r14 = instantiate_node(SyntaxNode,input, i14...index, s14)
652
708
  end
653
- s6 << r8
709
+ s12 << r14
654
710
  end
655
- if s6.last
656
- r6 = instantiate_node(SyntaxNode,input, i6...index, s6)
657
- r6.extend(Decnumber0)
711
+ if s12.last
712
+ r12 = instantiate_node(SyntaxNode,input, i12...index, s12)
713
+ r12.extend(Decnumber2)
658
714
  else
659
- @index = i6
660
- r6 = nil
715
+ @index = i12
716
+ r12 = nil
661
717
  end
662
- if r6
663
- r5 = r6
718
+ if r12
719
+ r12 = SyntaxNode.new(input, (index-1)...index) if r12 == true
720
+ r3 = r12
664
721
  else
665
- r5 = instantiate_node(SyntaxNode,input, index...index)
722
+ @index = i3
723
+ r3 = nil
666
724
  end
667
- s0 << r5
668
- if r5
669
- i11, s11 = index, []
670
- if (match_len = has_terminal?("e", :insens, index))
671
- r12 = instantiate_node(SyntaxNode,input, index...(index + match_len))
672
- @index += match_len
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
- terminal_parse_failure('"e"')
675
- r12 = nil
742
+ r19 = instantiate_node(SyntaxNode,input, index...index)
676
743
  end
677
- s11 << r12
678
- if r12
679
- r14 = _nt_sign
680
- if r14
681
- r13 = r14
682
- else
683
- r13 = instantiate_node(SyntaxNode,input, index...index)
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
- r15 = instantiate_node(SyntaxNode,input, i15...index, s15)
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(Decnumber2)
724
- r0.extend(Decnumber3)
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
- def ast; /p/i =~ text_value ? Float(text_value) : Integer(text_value) end
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
- if s14.empty?
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?("o", :insens, index))
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('"o"')
979
+ terminal_parse_failure('"x"')
924
980
  r22 = nil
925
981
  end
926
982
  s21 << r22
927
983
  if r22
928
- s23, i23 = [], index
929
- loop do
930
- r24 = _nt_ODIGIT
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
- r23 = instantiate_node(SyntaxNode,input, i23...index, s23)
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
- i25, s25 = index, []
957
- if (match_len = has_terminal?("b", :insens, index))
958
- r26 = instantiate_node(SyntaxNode,input, index...(index + match_len))
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('"b"')
962
- r26 = nil
1064
+ terminal_parse_failure('"o"')
1065
+ r32 = nil
963
1066
  end
964
- s25 << r26
965
- if r26
966
- s27, i27 = [], index
1067
+ s31 << r32
1068
+ if r32
1069
+ s33, i33 = [], index
967
1070
  loop do
968
- r28 = _nt_BDIGIT
969
- if r28
970
- s27 << r28
1071
+ r34 = _nt_ODIGIT
1072
+ if r34
1073
+ s33 << r34
971
1074
  else
972
1075
  break
973
1076
  end
974
1077
  end
975
- if s27.empty?
976
- @index = i27
977
- r27 = nil
1078
+ if s33.empty?
1079
+ @index = i33
1080
+ r33 = nil
978
1081
  else
979
- r27 = instantiate_node(SyntaxNode,input, i27...index, s27)
1082
+ r33 = instantiate_node(SyntaxNode,input, i33...index, s33)
980
1083
  end
981
- s25 << r27
1084
+ s31 << r33
982
1085
  end
983
- if s25.last
984
- r25 = instantiate_node(SyntaxNode,input, i25...index, s25)
985
- r25.extend(Basenumber4)
1086
+ if s31.last
1087
+ r31 = instantiate_node(SyntaxNode,input, i31...index, s31)
1088
+ r31.extend(Basenumber4)
986
1089
  else
987
- @index = i25
988
- r25 = nil
1090
+ @index = i31
1091
+ r31 = nil
989
1092
  end
990
- if r25
991
- r25 = SyntaxNode.new(input, (index-1)...index) if r25 == true
992
- r4 = r25
1093
+ if r31
1094
+ r31 = SyntaxNode.new(input, (index-1)...index) if r31 == true
1095
+ r4 = r31
993
1096
  else
994
- @index = i4
995
- r4 = nil
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
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: edn-abnf
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.4
4
+ version: 0.1.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Carsten Bormann