edn-abnf 0.1.3 → 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: 85b82b93fb1a2682e147c29fc1012e178c48f8eae6d60243a7d87abd82c15a3f
4
- data.tar.gz: d87f8ca88bc659c58629540a5f7fdefab86c53b09662e64e0851dbaadb8525cd
3
+ metadata.gz: a595a62b037a2f01e97e65a81ded57ab06f7bb8644b13b154ec0cff3bc10024c
4
+ data.tar.gz: 9e08a40602ace456c0f354dd9c0faa377bfa5dc45e8f457210808d0933cb49ab
5
5
  SHA512:
6
- metadata.gz: dc9cedb1fb36395595382a787268954d887bcf240a92379be884224dd383331750ebcbb3e97b6966364476cb26563357e9e15bc2f443936ee9d6cda6835ff77c
7
- data.tar.gz: ae270987f189617657a5484824b44ef4468dfcd3911dc345492e0c2a56c9710af74086145fe55b5f4291c6373f5b0744a8c4ad4e637a426473a13866c189d042
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"
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
644
+ end
645
+ s8 << r9
646
+ if r9
647
+ s10, i10 = [], index
648
+ loop do
649
+ r11 = _nt_DIGIT
650
+ if r11
651
+ s10 << r11
652
+ else
653
+ break
654
+ end
655
+ end
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
635
691
  end
636
- s6 << r7
637
- if r7
638
- s8, i8 = [], index
692
+ s12 << r13
693
+ if r13
694
+ s14, i14 = [], index
639
695
  loop do
640
- r9 = _nt_DIGIT
641
- if r9
642
- s8 << r9
696
+ r15 = _nt_DIGIT
697
+ if r15
698
+ s14 << r15
643
699
  else
644
700
  break
645
701
  end
646
702
  end
647
- if s8.empty?
648
- @index = i8
649
- r8 = nil
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
@@ -879,7 +935,12 @@ module EDNGRAMMAR
879
935
  break
880
936
  end
881
937
  end
882
- r19 = instantiate_node(SyntaxNode,input, i19...index, s19)
938
+ if s19.empty?
939
+ @index = i19
940
+ r19 = nil
941
+ else
942
+ r19 = instantiate_node(SyntaxNode,input, i19...index, s19)
943
+ end
883
944
  s10 << r19
884
945
  end
885
946
  end
@@ -911,31 +972,78 @@ module EDNGRAMMAR
911
972
  r4 = r5
912
973
  else
913
974
  i21, s21 = index, []
914
- if (match_len = has_terminal?("o", :insens, index))
975
+ if (match_len = has_terminal?("x", :insens, index))
915
976
  r22 = instantiate_node(SyntaxNode,input, index...(index + match_len))
916
977
  @index += match_len
917
978
  else
918
- terminal_parse_failure('"o"')
979
+ terminal_parse_failure('"x"')
919
980
  r22 = nil
920
981
  end
921
982
  s21 << r22
922
983
  if r22
923
- s23, i23 = [], index
924
- loop do
925
- r24 = _nt_ODIGIT
926
- if r24
927
- s23 << r24
928
- else
929
- break
930
- end
931
- end
932
- if s23.empty?
933
- @index = i23
934
- r23 = nil
984
+ if (match_len = has_terminal?(".", false, index))
985
+ r23 = true
986
+ @index += match_len
935
987
  else
936
- r23 = instantiate_node(SyntaxNode,input, i23...index, s23)
988
+ terminal_parse_failure('"."')
989
+ r23 = nil
937
990
  end
938
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
939
1047
  end
940
1048
  if s21.last
941
1049
  r21 = instantiate_node(SyntaxNode,input, i21...index, s21)
@@ -948,46 +1056,85 @@ module EDNGRAMMAR
948
1056
  r21 = SyntaxNode.new(input, (index-1)...index) if r21 == true
949
1057
  r4 = r21
950
1058
  else
951
- i25, s25 = index, []
952
- if (match_len = has_terminal?("b", :insens, index))
953
- 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))
954
1062
  @index += match_len
955
1063
  else
956
- terminal_parse_failure('"b"')
957
- r26 = nil
1064
+ terminal_parse_failure('"o"')
1065
+ r32 = nil
958
1066
  end
959
- s25 << r26
960
- if r26
961
- s27, i27 = [], index
1067
+ s31 << r32
1068
+ if r32
1069
+ s33, i33 = [], index
962
1070
  loop do
963
- r28 = _nt_BDIGIT
964
- if r28
965
- s27 << r28
1071
+ r34 = _nt_ODIGIT
1072
+ if r34
1073
+ s33 << r34
966
1074
  else
967
1075
  break
968
1076
  end
969
1077
  end
970
- if s27.empty?
971
- @index = i27
972
- r27 = nil
1078
+ if s33.empty?
1079
+ @index = i33
1080
+ r33 = nil
973
1081
  else
974
- r27 = instantiate_node(SyntaxNode,input, i27...index, s27)
1082
+ r33 = instantiate_node(SyntaxNode,input, i33...index, s33)
975
1083
  end
976
- s25 << r27
1084
+ s31 << r33
977
1085
  end
978
- if s25.last
979
- r25 = instantiate_node(SyntaxNode,input, i25...index, s25)
980
- r25.extend(Basenumber4)
1086
+ if s31.last
1087
+ r31 = instantiate_node(SyntaxNode,input, i31...index, s31)
1088
+ r31.extend(Basenumber4)
981
1089
  else
982
- @index = i25
983
- r25 = nil
1090
+ @index = i31
1091
+ r31 = nil
984
1092
  end
985
- if r25
986
- r25 = SyntaxNode.new(input, (index-1)...index) if r25 == true
987
- r4 = r25
1093
+ if r31
1094
+ r31 = SyntaxNode.new(input, (index-1)...index) if r31 == true
1095
+ r4 = r31
988
1096
  else
989
- @index = i4
990
- 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
991
1138
  end
992
1139
  end
993
1140
  end
@@ -996,8 +1143,8 @@ module EDNGRAMMAR
996
1143
  end
997
1144
  if s0.last
998
1145
  r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
999
- r0.extend(Basenumber5)
1000
1146
  r0.extend(Basenumber6)
1147
+ r0.extend(Basenumber7)
1001
1148
  else
1002
1149
  @index = i0
1003
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.3
4
+ version: 0.1.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Carsten Bormann