edn-abnf 0.1.4 → 0.1.5

Sign up to get free protection for your applications and to get access to all the features.
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