pubid 2.0.1 → 2.0.2

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.
Files changed (185) hide show
  1. checksums.yaml +4 -4
  2. data/data/parg/adobe.json +1 -1
  3. data/data/parg/amca.json +1 -1
  4. data/data/parg/ansi.json +1 -1
  5. data/data/parg/api.json +1 -1
  6. data/data/parg/ashrae.json +1 -1
  7. data/data/parg/asme.json +1 -1
  8. data/data/parg/astm.json +1 -1
  9. data/data/parg/bipm.json +1 -1
  10. data/data/parg/bsi.json +1 -1
  11. data/data/parg/ccsds.json +1 -1
  12. data/data/parg/cen_cenelec.json +1 -1
  13. data/data/parg/cie.json +1 -1
  14. data/data/parg/csa.json +1 -1
  15. data/data/parg/ecma.json +1 -1
  16. data/data/parg/etsi.json +1 -1
  17. data/data/parg/evs.json +1 -1
  18. data/data/parg/gost.json +1 -1
  19. data/data/parg/iana.json +1 -1
  20. data/data/parg/idf.json +1 -1
  21. data/data/parg/iec.json +1 -1
  22. data/data/parg/iho.json +1 -0
  23. data/data/parg/isbn.json +1 -1
  24. data/data/parg/itu.json +1 -1
  25. data/data/parg/jcgm.json +1 -1
  26. data/data/parg/jis.json +1 -1
  27. data/data/parg/nist.json +1 -1
  28. data/data/parg/oiml.json +1 -1
  29. data/data/parg/omg.json +1 -1
  30. data/data/parg/plateau.json +1 -1
  31. data/data/parg/tgpp.json +1 -1
  32. data/data/parg/un.json +1 -1
  33. data/lib/pubid/adobe/identifier.rb +1 -1
  34. data/lib/pubid/adobe/parser.rb +2 -113
  35. data/lib/pubid/amca/identifiers/base.rb +1 -1
  36. data/lib/pubid/amca/parser.rb +1 -145
  37. data/lib/pubid/ansi/identifier.rb +1 -1
  38. data/lib/pubid/ansi/parser.rb +1 -82
  39. data/lib/pubid/api/builder.rb +32 -1
  40. data/lib/pubid/api/identifier.rb +1 -1
  41. data/lib/pubid/api/parser.rb +1 -131
  42. data/lib/pubid/ashrae/identifiers/base.rb +1 -1
  43. data/lib/pubid/ashrae/parser.rb +3 -710
  44. data/lib/pubid/asme/builder.rb +6 -4
  45. data/lib/pubid/asme/identifier.rb +1 -2
  46. data/lib/pubid/asme/parser.rb +1 -328
  47. data/lib/pubid/astm/builder.rb +12 -3
  48. data/lib/pubid/astm/identifier.rb +1 -2
  49. data/lib/pubid/astm/parser.rb +1 -227
  50. data/lib/pubid/bipm/identifier.rb +8 -1
  51. data/lib/pubid/bipm/parser.rb +2 -224
  52. data/lib/pubid/bsi/builder.rb +2 -4
  53. data/lib/pubid/bsi/parser.rb +1 -666
  54. data/lib/pubid/bsi/single_identifier.rb +38 -1
  55. data/lib/pubid/calconnect/parser.rb +2 -40
  56. data/lib/pubid/ccsds/identifier.rb +1 -1
  57. data/lib/pubid/ccsds/parser.rb +1 -66
  58. data/lib/pubid/cen_cenelec/identifier.rb +16 -1
  59. data/lib/pubid/cen_cenelec/parser.rb +3 -136
  60. data/lib/pubid/cie/identifier.rb +1 -1
  61. data/lib/pubid/cie/parser.rb +3 -378
  62. data/lib/pubid/conformance.rb +1 -1
  63. data/lib/pubid/csa/builder.rb +41 -18
  64. data/lib/pubid/csa/identifier.rb +12 -4
  65. data/lib/pubid/csa/identifiers/amendment.rb +28 -0
  66. data/lib/pubid/csa/identifiers.rb +1 -0
  67. data/lib/pubid/csa/parser.rb +16 -397
  68. data/lib/pubid/doi/parser.rb +2 -37
  69. data/lib/pubid/easc/builder.rb +1 -1
  70. data/lib/pubid/easc/parser.rb +2 -70
  71. data/lib/pubid/ecma/CLAUDE.md +8 -1
  72. data/lib/pubid/ecma/identifier.rb +13 -8
  73. data/lib/pubid/ecma/parser.rb +2 -54
  74. data/lib/pubid/ecma/renderer.rb +3 -7
  75. data/lib/pubid/errors.rb +18 -13
  76. data/lib/pubid/etsi/builder.rb +8 -5
  77. data/lib/pubid/etsi/identifiers/base.rb +1 -1
  78. data/lib/pubid/etsi/parser.rb +1 -132
  79. data/lib/pubid/evs/identifier.rb +7 -0
  80. data/lib/pubid/evs/parser.rb +1 -8
  81. data/lib/pubid/evs.rb +1 -1
  82. data/lib/pubid/gb/identifier.rb +6 -0
  83. data/lib/pubid/gb/parser.rb +2 -51
  84. data/lib/pubid/gost/identifier.rb +9 -1
  85. data/lib/pubid/gost/parser.rb +4 -81
  86. data/lib/pubid/iala/parser.rb +2 -121
  87. data/lib/pubid/iana/identifier.rb +1 -1
  88. data/lib/pubid/iana/parser.rb +2 -24
  89. data/lib/pubid/identifier.rb +78 -1
  90. data/lib/pubid/idf/builder.rb +42 -0
  91. data/lib/pubid/idf/identifier.rb +1 -1
  92. data/lib/pubid/idf/parser.rb +1 -137
  93. data/lib/pubid/idf.rb +1 -2
  94. data/lib/pubid/iec/builder.rb +158 -50
  95. data/lib/pubid/iec/identifier.rb +1 -1
  96. data/lib/pubid/iec/parser.rb +3 -430
  97. data/lib/pubid/ieee/aiee/identifier.rb +2 -1
  98. data/lib/pubid/ieee/aiee.rb +0 -1
  99. data/lib/pubid/ieee/builder.rb +2 -2
  100. data/lib/pubid/ieee/identifiers/base.rb +1 -1
  101. data/lib/pubid/ieee/ire/identifier.rb +2 -1
  102. data/lib/pubid/ieee/ire.rb +0 -1
  103. data/lib/pubid/ieee/nesc.rb +0 -1
  104. data/lib/pubid/ieee/parser.rb +1 -1257
  105. data/lib/pubid/ietf/identifiers/base.rb +17 -1
  106. data/lib/pubid/ietf/parser.rb +2 -47
  107. data/lib/pubid/ietf/renderer.rb +17 -2
  108. data/lib/pubid/iho/CLAUDE.md +89 -0
  109. data/lib/pubid/iho/builder.rb +4 -1
  110. data/lib/pubid/iho/identifiers/base.rb +28 -2
  111. data/lib/pubid/iho/renderer.rb +8 -0
  112. data/lib/pubid/iho/urn_generator.rb +11 -1
  113. data/lib/pubid/iho/urn_parser.rb +21 -11
  114. data/lib/pubid/iho.rb +0 -1
  115. data/lib/pubid/isbn/identifier.rb +1 -1
  116. data/lib/pubid/isbn/parser.rb +2 -31
  117. data/lib/pubid/iso/builder.rb +1 -1
  118. data/lib/pubid/iso/identifiers/directives.rb +6 -3
  119. data/lib/pubid/iso/identifiers/guide.rb +6 -3
  120. data/lib/pubid/iso/identifiers/international_workshop_agreement.rb +6 -3
  121. data/lib/pubid/iso/normalizer.rb +1 -1
  122. data/lib/pubid/iso/parser.rb +1 -539
  123. data/lib/pubid/iso/supplement_identifier.rb +6 -3
  124. data/lib/pubid/iso/utilities.rb +4 -5
  125. data/lib/pubid/iso.rb +1 -19
  126. data/lib/pubid/itu/builder.rb +36 -20
  127. data/lib/pubid/itu/identifiers/base.rb +15 -2
  128. data/lib/pubid/itu/parser.rb +1 -775
  129. data/lib/pubid/jcgm/builder.rb +35 -0
  130. data/lib/pubid/jcgm/parser.rb +1 -151
  131. data/lib/pubid/jcgm.rb +1 -2
  132. data/lib/pubid/jis/builder.rb +18 -29
  133. data/lib/pubid/jis/identifier.rb +1 -1
  134. data/lib/pubid/jis/parser.rb +1 -128
  135. data/lib/pubid/nist/builder.rb +5 -1
  136. data/lib/pubid/nist/caster.rb +13 -3
  137. data/lib/pubid/nist/identifiers/base.rb +37 -2
  138. data/lib/pubid/nist/identifiers/circular.rb +2 -2
  139. data/lib/pubid/nist/identifiers/circular_supplement.rb +2 -2
  140. data/lib/pubid/nist/identifiers/commercial_standards_monthly.rb +2 -2
  141. data/lib/pubid/nist/identifiers/crpl_report.rb +2 -2
  142. data/lib/pubid/nist/identifiers/handbook.rb +2 -2
  143. data/lib/pubid/nist/identifiers/internal_report.rb +2 -2
  144. data/lib/pubid/nist/identifiers/miscellaneous_publication.rb +2 -2
  145. data/lib/pubid/nist/identifiers/monograph.rb +2 -2
  146. data/lib/pubid/nist/identifiers/report.rb +2 -2
  147. data/lib/pubid/nist/parser.rb +19 -775
  148. data/lib/pubid/nist/router.rb +4 -1
  149. data/lib/pubid/nist/supplement_identifier.rb +2 -2
  150. data/lib/pubid/oasis/parser.rb +2 -16
  151. data/lib/pubid/ogc/parser.rb +2 -26
  152. data/lib/pubid/oiml/identifiers/certification_system.rb +7 -0
  153. data/lib/pubid/oiml/identifiers/dual_published.rb +2 -2
  154. data/lib/pubid/oiml/parser.rb +1 -303
  155. data/lib/pubid/oiml.rb +1 -2
  156. data/lib/pubid/omg/identifier.rb +6 -1
  157. data/lib/pubid/omg/parser.rb +2 -76
  158. data/lib/pubid/parser.rb +5 -4
  159. data/lib/pubid/parsers/mr_string.rb +1 -1
  160. data/lib/pubid/plateau/parser.rb +1 -66
  161. data/lib/pubid/plateau.rb +1 -2
  162. data/lib/pubid/renderers/directives_renderer.rb +1 -1
  163. data/lib/pubid/renderers/iwa_renderer.rb +1 -1
  164. data/lib/pubid/renderers/publisher_stripper.rb +82 -0
  165. data/lib/pubid/renderers/supplement_renderer.rb +1 -1
  166. data/lib/pubid/renderers.rb +1 -0
  167. data/lib/pubid/sae/parser.rb +1 -48
  168. data/lib/pubid/tgpp/identifier.rb +1 -1
  169. data/lib/pubid/tgpp/parser.rb +2 -59
  170. data/lib/pubid/un/identifier.rb +1 -1
  171. data/lib/pubid/un/parser.rb +1 -18
  172. data/lib/pubid/version.rb +1 -1
  173. data/lib/pubid/w3c/parser.rb +2 -27
  174. data/lib/pubid/xsf/identifier.rb +10 -6
  175. data/lib/pubid/xsf/parser.rb +3 -31
  176. data/lib/pubid/xsf/renderer.rb +2 -4
  177. data/lib/pubid.rb +8 -9
  178. metadata +6 -23
  179. data/lib/pubid/ieee/aiee/parser.rb +0 -130
  180. data/lib/pubid/ieee/ire/parser.rb +0 -109
  181. data/lib/pubid/ieee/nesc/parser.rb +0 -155
  182. data/lib/pubid/iho/parser.rb +0 -68
  183. data/lib/pubid/parser/common_parse_methods.rb +0 -13
  184. data/lib/pubid/parser/common_parse_rules.rb +0 -56
  185. data/lib/pubid/parser/grammar.rb +0 -96
data/data/parg/evs.json CHANGED
@@ -1 +1 @@
1
- {"bindings":null,"version":"0.3.0","grammar":"PubidEvs","shape":"parsanol-tree/v2","binding_version":1,"entries":{"identifier":{"root":"identifier","grammar":{"atoms":[{"Entity":{"atom":2}},{"Str":{"pattern":"pr"}},{"Named":{"name":"draft_prefix","atom":1}},{"Repetition":{"atom":0,"min":0,"max":1,"tag":"Maybe"}},{"Str":{"pattern":"EVS"}},{"Entity":{"atom":11}},{"Entity":{"atom":7}},{"Str":{"pattern":"-"}},{"Entity":{"atom":9}},{"Str":{"pattern":" "}},{"Alternative":{"atoms":[6,8]}},{"Named":{"name":"evs_separator","atom":10}},{"Entity":{"atom":256}},{"Entity":{"atom":121}},{"Entity":{"atom":18}},{"Str":{"pattern":"FprEN"}},{"Str":{"pattern":"prEN"}},{"Alternative":{"atoms":[15,16]}},{"Named":{"name":"type_with_stage","atom":17}},{"Entity":{"atom":49}},{"Str":{"pattern":"CWA"}},{"Str":{"pattern":"HD"}},{"Str":{"pattern":"ES"}},{"Str":{"pattern":"CR"}},{"Str":{"pattern":"ENV"}},{"Alternative":{"atoms":[20,21,22,23,24]}},{"Named":{"name":"publisher","atom":25}},{"Str":{"pattern":"EN"}},{"Str":{"pattern":"CEN"}},{"Alternative":{"atoms":[27,28]}},{"Named":{"name":"publisher","atom":29}},{"Entity":{"atom":41}},{"Entity":{"atom":39}},{"Entity":{"atom":34}},{"Str":{"pattern":"/"}},{"Str":{"pattern":"CLC"}},{"Str":{"pattern":"ETSI"}},{"Alternative":{"atoms":[35,36]}},{"Named":{"name":"copublisher","atom":37}},{"Sequence":{"atoms":[33,38]}},{"Repetition":{"atom":32,"min":1,"max":null,"tag":"Repetition"}},{"Named":{"name":"copublishers","atom":40}},{"Repetition":{"atom":31,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[30,42]}},{"Str":{"pattern":"CLC"}},{"Named":{"name":"publisher","atom":44}},{"Entity":{"atom":41}},{"Repetition":{"atom":46,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[45,47]}},{"Alternative":{"atoms":[26,43,48]}},{"Alternative":{"atoms":[14,19]}},{"Entity":{"atom":52}},{"Str":{"pattern":" "}},{"Entity":{"atom":63}},{"Entity":{"atom":55}},{"Re":{"pattern":"[\\x30-\\x39]"}},{"Repetition":{"atom":54,"min":1,"max":null,"tag":"Repetition"}},{"Entity":{"atom":52}},{"Entity":{"atom":55}},{"Repetition":{"atom":58,"min":1,"max":null,"tag":"Repetition"}},{"Sequence":{"atoms":[57,59]}},{"Repetition":{"atom":60,"min":0,"max":null,"tag":"Repetition"}},{"Sequence":{"atoms":[56,61]}},{"Named":{"name":"number","atom":62}},{"Entity":{"atom":75}},{"Entity":{"atom":73}},{"Entity":{"atom":67}},{"Str":{"pattern":"-"}},{"Entity":{"atom":55}},{"Entity":{"atom":67}},{"Alternative":{"atoms":[68,69]}},{"Repetition":{"atom":70,"min":1,"max":null,"tag":"Repetition"}},{"Named":{"name":"part","atom":71}},{"Sequence":{"atoms":[66,72]}},{"Repetition":{"atom":65,"min":0,"max":null,"tag":"Repetition"}},{"Named":{"name":"parts","atom":74}},{"Entity":{"atom":52}},{"Str":{"pattern":"AMD"}},{"Entity":{"atom":55}},{"Repetition":{"atom":78,"min":1,"max":null,"tag":"Repetition"}},{"Named":{"name":"amendment_number","atom":79}},{"Entity":{"atom":52}},{"Str":{"pattern":"FRAG"}},{"Entity":{"atom":55}},{"Repetition":{"atom":83,"min":1,"max":null,"tag":"Repetition"}},{"Named":{"name":"fragment_number","atom":84}},{"Sequence":{"atoms":[50,51,53,64,76,77,80,81,82,85]}},{"Entity":{"atom":18}},{"Entity":{"atom":49}},{"Alternative":{"atoms":[87,88]}},{"Entity":{"atom":52}},{"Entity":{"atom":63}},{"Entity":{"atom":75}},{"Entity":{"atom":99}},{"Entity":{"atom":95}},{"Str":{"pattern":":"}},{"Entity":{"atom":55}},{"Repetition":{"atom":96,"min":4,"max":4,"tag":"Repetition"}},{"Named":{"name":"year","atom":97}},{"Sequence":{"atoms":[94,98]}},{"Repetition":{"atom":93,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":102}},{"Str":{"pattern":"+"}},{"Entity":{"atom":34}},{"Alternative":{"atoms":[101,103]}},{"Str":{"pattern":"A"}},{"Entity":{"atom":55}},{"Repetition":{"atom":106,"min":1,"max":null,"tag":"Repetition"}},{"Named":{"name":"amendment_number","atom":107}},{"Entity":{"atom":95}},{"Entity":{"atom":55}},{"Repetition":{"atom":110,"min":4,"max":4,"tag":"Repetition"}},{"Named":{"name":"amendment_year","atom":111}},{"Sequence":{"atoms":[109,112]}},{"Repetition":{"atom":113,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":52}},{"Str":{"pattern":"FRAG"}},{"Entity":{"atom":55}},{"Repetition":{"atom":117,"min":1,"max":null,"tag":"Repetition"}},{"Named":{"name":"fragment_number","atom":118}},{"Sequence":{"atoms":[89,90,91,92,100,104,105,108,114,115,116,119]}},{"Alternative":{"atoms":[86,120]}},{"Entity":{"atom":18}},{"Entity":{"atom":49}},{"Alternative":{"atoms":[122,123]}},{"Entity":{"atom":52}},{"Entity":{"atom":211}},{"Entity":{"atom":131}},{"Str":{"pattern":"ISO"}},{"Str":{"pattern":"IEC"}},{"Str":{"pattern":"CISPR"}},{"Alternative":{"atoms":[128,129,130]}},{"Entity":{"atom":194}},{"Entity":{"atom":149}},{"Entity":{"atom":102}},{"Named":{"name":"amd_sep_plus","atom":134}},{"Entity":{"atom":34}},{"Named":{"name":"amd_sep_slash","atom":136}},{"Alternative":{"atoms":[135,137]}},{"Str":{"pattern":"A"}},{"Entity":{"atom":55}},{"Repetition":{"atom":140,"min":1,"max":null,"tag":"Repetition"}},{"Named":{"name":"amd_number","atom":141}},{"Entity":{"atom":95}},{"Entity":{"atom":55}},{"Repetition":{"atom":144,"min":4,"max":4,"tag":"Repetition"}},{"Named":{"name":"amd_year","atom":145}},{"Sequence":{"atoms":[143,146]}},{"Repetition":{"atom":147,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[138,139,142,148]}},{"Entity":{"atom":192}},{"Entity":{"atom":102}},{"Named":{"name":"amd_sep_plus","atom":151}},{"Entity":{"atom":34}},{"Named":{"name":"amd_sep_slash","atom":153}},{"Alternative":{"atoms":[152,154]}},{"Str":{"pattern":"AC"}},{"Entity":{"atom":55}},{"Entity":{"atom":55}},{"Repetition":{"atom":158,"min":0,"max":null,"tag":"Repetition"}},{"Sequence":{"atoms":[157,159]}},{"Named":{"name":"cor_number","atom":160}},{"Repetition":{"atom":161,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":184}},{"Entity":{"atom":95}},{"Entity":{"atom":55}},{"Repetition":{"atom":165,"min":4,"max":4,"tag":"Repetition"}},{"Named":{"name":"year","atom":166}},{"Entity":{"atom":67}},{"Entity":{"atom":183}},{"Str":{"pattern":"01"}},{"Str":{"pattern":"02"}},{"Str":{"pattern":"03"}},{"Str":{"pattern":"04"}},{"Str":{"pattern":"05"}},{"Str":{"pattern":"06"}},{"Str":{"pattern":"07"}},{"Str":{"pattern":"08"}},{"Str":{"pattern":"09"}},{"Str":{"pattern":"10"}},{"Str":{"pattern":"11"}},{"Str":{"pattern":"12"}},{"Alternative":{"atoms":[170,171,172,173,174,175,176,177,178,179,180,181]}},{"Named":{"name":"month","atom":182}},{"Sequence":{"atoms":[164,167,168,169]}},{"Entity":{"atom":95}},{"Entity":{"atom":55}},{"Repetition":{"atom":186,"min":4,"max":4,"tag":"Repetition"}},{"Named":{"name":"year","atom":187}},{"Sequence":{"atoms":[185,188]}},{"Alternative":{"atoms":[163,189]}},{"Repetition":{"atom":190,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[155,156,162,191]}},{"Alternative":{"atoms":[133,150]}},{"Named":{"name":"supplement","atom":193}},{"Lookahead":{"atom":132,"positive":false}},{"Entity":{"atom":202}},{"Entity":{"atom":52}},{"Str":{"pattern":"ED"}},{"Entity":{"atom":55}},{"Repetition":{"atom":199,"min":1,"max":null,"tag":"Repetition"}},{"Named":{"name":"edition","atom":200}},{"Sequence":{"atoms":[197,198,201]}},{"Lookahead":{"atom":196,"positive":false}},{"Entity":{"atom":207}},{"Re":{"pattern":"[\\x01-\\x09]"}},{"Re":{"pattern":"[\\x0b-\\u{10ffff}]"}},{"Alternative":{"atoms":[205,206]}},{"Sequence":{"atoms":[195,203,204]}},{"Repetition":{"atom":208,"min":0,"max":null,"tag":"Repetition"}},{"Sequence":{"atoms":[127,209]}},{"Named":{"name":"adopted_string","atom":210}},{"Sequence":{"atoms":[125,126]}},{"Repetition":{"atom":212,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":52}},{"Entity":{"atom":221}},{"Str":{"pattern":"Guide"}},{"Str":{"pattern":"GUIDE"}},{"Str":{"pattern":"TR"}},{"Str":{"pattern":"TS"}},{"Alternative":{"atoms":[216,217,218,219]}},{"Named":{"name":"type","atom":220}},{"Sequence":{"atoms":[214,215]}},{"Entity":{"atom":34}},{"Entity":{"atom":221}},{"Sequence":{"atoms":[223,224]}},{"Alternative":{"atoms":[222,225]}},{"Repetition":{"atom":226,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":52}},{"Entity":{"atom":63}},{"Entity":{"atom":75}},{"Entity":{"atom":243}},{"Entity":{"atom":52}},{"Str":{"pattern":"V"}},{"Entity":{"atom":55}},{"Repetition":{"atom":234,"min":1,"max":null,"tag":"Repetition"}},{"Str":{"pattern":"."}},{"Entity":{"atom":55}},{"Repetition":{"atom":237,"min":1,"max":null,"tag":"Repetition"}},{"Str":{"pattern":"."}},{"Entity":{"atom":55}},{"Repetition":{"atom":240,"min":1,"max":null,"tag":"Repetition"}},{"Sequence":{"atoms":[232,233,235,236,238,239,241]}},{"Named":{"name":"version","atom":242}},{"Repetition":{"atom":231,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":99}},{"Repetition":{"atom":245,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[228,229,230,244,246]}},{"Repetition":{"atom":247,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":252}},{"Entity":{"atom":194}},{"Repetition":{"atom":250,"min":0,"max":null,"tag":"Repetition"}},{"Named":{"name":"supplements","atom":251}},{"Entity":{"atom":202}},{"Repetition":{"atom":253,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[124,213,227,248,249,254]}},{"Alternative":{"atoms":[13,255]}},{"Named":{"name":"adopted","atom":12}},{"Entity":{"atom":282}},{"Str":{"pattern":"ISO"}},{"Str":{"pattern":"IEC"}},{"Alternative":{"atoms":[259,260]}},{"Named":{"name":"intl_org","atom":261}},{"Entity":{"atom":9}},{"Entity":{"atom":265}},{"Re":{"pattern":"[\\x30-\\x39]"}},{"Repetition":{"atom":264,"min":1,"max":null,"tag":"Repetition"}},{"Named":{"name":"number","atom":266}},{"Sequence":{"atoms":[262,263,267]}},{"Entity":{"atom":7}},{"Entity":{"atom":265}},{"Repetition":{"atom":270,"min":1,"max":null,"tag":"Repetition"}},{"Named":{"name":"part","atom":271}},{"Sequence":{"atoms":[269,272]}},{"Repetition":{"atom":273,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":276}},{"Str":{"pattern":":"}},{"Entity":{"atom":265}},{"Repetition":{"atom":277,"min":4,"max":4,"tag":"Repetition"}},{"Named":{"name":"year","atom":278}},{"Sequence":{"atoms":[275,279]}},{"Repetition":{"atom":280,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[268,274,281]}},{"Named":{"name":"intl","atom":258}},{"Entity":{"atom":301}},{"Str":{"pattern":"TS"}},{"Str":{"pattern":"TR"}},{"Alternative":{"atoms":[285,286]}},{"Named":{"name":"evs_type","atom":287}},{"Entity":{"atom":9}},{"Sequence":{"atoms":[288,289]}},{"Repetition":{"atom":290,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":265}},{"Repetition":{"atom":292,"min":1,"max":null,"tag":"Repetition"}},{"Named":{"name":"number","atom":293}},{"Entity":{"atom":276}},{"Entity":{"atom":265}},{"Repetition":{"atom":296,"min":4,"max":4,"tag":"Repetition"}},{"Named":{"name":"year","atom":297}},{"Sequence":{"atoms":[295,298]}},{"Repetition":{"atom":299,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[291,294,300]}},{"Named":{"name":"plain","atom":284}},{"Alternative":{"atoms":[257,283,302]}},{"Entity":{"atom":327}},{"Entity":{"atom":306}},{"Str":{"pattern":"+"}},{"Named":{"name":"supp_plus","atom":305}},{"Entity":{"atom":309}},{"Str":{"pattern":"/"}},{"Named":{"name":"supp_slash","atom":308}},{"Entity":{"atom":9}},{"Named":{"name":"supp_space","atom":311}},{"Alternative":{"atoms":[307,310,312]}},{"Str":{"pattern":"AMD"}},{"Named":{"name":"amd_kind","atom":314}},{"Sequence":{"atoms":[313,315]}},{"Entity":{"atom":265}},{"Repetition":{"atom":317,"min":1,"max":null,"tag":"Repetition"}},{"Named":{"name":"amd_number","atom":318}},{"Entity":{"atom":276}},{"Entity":{"atom":265}},{"Repetition":{"atom":321,"min":4,"max":4,"tag":"Repetition"}},{"Named":{"name":"amd_year","atom":322}},{"Sequence":{"atoms":[320,323]}},{"Repetition":{"atom":324,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[316,319,325]}},{"Named":{"name":"evs_amd","atom":326}},{"Repetition":{"atom":304,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":349}},{"Entity":{"atom":306}},{"Named":{"name":"supp_plus","atom":330}},{"Entity":{"atom":309}},{"Named":{"name":"supp_slash","atom":332}},{"Alternative":{"atoms":[331,333]}},{"Str":{"pattern":"COR"}},{"Named":{"name":"cor_kind","atom":335}},{"Sequence":{"atoms":[334,336]}},{"Entity":{"atom":265}},{"Repetition":{"atom":338,"min":1,"max":null,"tag":"Repetition"}},{"Named":{"name":"cor_number","atom":339}},{"Repetition":{"atom":340,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":276}},{"Entity":{"atom":265}},{"Repetition":{"atom":343,"min":4,"max":4,"tag":"Repetition"}},{"Named":{"name":"cor_year","atom":344}},{"Sequence":{"atoms":[342,345]}},{"Repetition":{"atom":346,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[337,341,347]}},{"Named":{"name":"evs_cor","atom":348}},{"Entity":{"atom":366}},{"Entity":{"atom":9}},{"Named":{"name":"supp_space","atom":351}},{"Str":{"pattern":"AC"}},{"Named":{"name":"cor_kind","atom":353}},{"Entity":{"atom":265}},{"Repetition":{"atom":355,"min":1,"max":null,"tag":"Repetition"}},{"Named":{"name":"cor_number","atom":356}},{"Repetition":{"atom":357,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":276}},{"Entity":{"atom":265}},{"Repetition":{"atom":360,"min":4,"max":4,"tag":"Repetition"}},{"Named":{"name":"cor_year","atom":361}},{"Sequence":{"atoms":[359,362]}},{"Repetition":{"atom":363,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[352,354,358,364]}},{"Named":{"name":"evs_cor","atom":365}},{"Alternative":{"atoms":[329,350]}},{"Repetition":{"atom":367,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":384}},{"Entity":{"atom":306}},{"Named":{"name":"supp_plus","atom":370}},{"Entity":{"atom":309}},{"Named":{"name":"supp_slash","atom":372}},{"Alternative":{"atoms":[371,373]}},{"Str":{"pattern":"NA"}},{"Sequence":{"atoms":[374,375]}},{"Entity":{"atom":276}},{"Entity":{"atom":265}},{"Repetition":{"atom":378,"min":4,"max":4,"tag":"Repetition"}},{"Named":{"name":"na_year","atom":379}},{"Sequence":{"atoms":[377,380]}},{"Repetition":{"atom":381,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[376,382]}},{"Named":{"name":"na","atom":383}},{"Repetition":{"atom":369,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[3,4,5,303,328,368,385]}}],"root":386},"bindings":[]},"cen_cenelec.identifier":{"root":"cen_cenelec.identifier","grammar":{"atoms":[{"Entity":{"atom":108}},{"Entity":{"atom":5}},{"Str":{"pattern":"FprEN"}},{"Str":{"pattern":"prEN"}},{"Alternative":{"atoms":[2,3]}},{"Named":{"name":"type_with_stage","atom":4}},{"Entity":{"atom":36}},{"Str":{"pattern":"CWA"}},{"Str":{"pattern":"HD"}},{"Str":{"pattern":"ES"}},{"Str":{"pattern":"CR"}},{"Str":{"pattern":"ENV"}},{"Alternative":{"atoms":[7,8,9,10,11]}},{"Named":{"name":"publisher","atom":12}},{"Str":{"pattern":"EN"}},{"Str":{"pattern":"CEN"}},{"Alternative":{"atoms":[14,15]}},{"Named":{"name":"publisher","atom":16}},{"Entity":{"atom":28}},{"Entity":{"atom":26}},{"Entity":{"atom":21}},{"Str":{"pattern":"/"}},{"Str":{"pattern":"CLC"}},{"Str":{"pattern":"ETSI"}},{"Alternative":{"atoms":[22,23]}},{"Named":{"name":"copublisher","atom":24}},{"Sequence":{"atoms":[20,25]}},{"Repetition":{"atom":19,"min":1,"max":null,"tag":"Repetition"}},{"Named":{"name":"copublishers","atom":27}},{"Repetition":{"atom":18,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[17,29]}},{"Str":{"pattern":"CLC"}},{"Named":{"name":"publisher","atom":31}},{"Entity":{"atom":28}},{"Repetition":{"atom":33,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[32,34]}},{"Alternative":{"atoms":[13,30,35]}},{"Alternative":{"atoms":[1,6]}},{"Entity":{"atom":39}},{"Str":{"pattern":" "}},{"Entity":{"atom":50}},{"Entity":{"atom":42}},{"Re":{"pattern":"[\\x30-\\x39]"}},{"Repetition":{"atom":41,"min":1,"max":null,"tag":"Repetition"}},{"Entity":{"atom":39}},{"Entity":{"atom":42}},{"Repetition":{"atom":45,"min":1,"max":null,"tag":"Repetition"}},{"Sequence":{"atoms":[44,46]}},{"Repetition":{"atom":47,"min":0,"max":null,"tag":"Repetition"}},{"Sequence":{"atoms":[43,48]}},{"Named":{"name":"number","atom":49}},{"Entity":{"atom":62}},{"Entity":{"atom":60}},{"Entity":{"atom":54}},{"Str":{"pattern":"-"}},{"Entity":{"atom":42}},{"Entity":{"atom":54}},{"Alternative":{"atoms":[55,56]}},{"Repetition":{"atom":57,"min":1,"max":null,"tag":"Repetition"}},{"Named":{"name":"part","atom":58}},{"Sequence":{"atoms":[53,59]}},{"Repetition":{"atom":52,"min":0,"max":null,"tag":"Repetition"}},{"Named":{"name":"parts","atom":61}},{"Entity":{"atom":39}},{"Str":{"pattern":"AMD"}},{"Entity":{"atom":42}},{"Repetition":{"atom":65,"min":1,"max":null,"tag":"Repetition"}},{"Named":{"name":"amendment_number","atom":66}},{"Entity":{"atom":39}},{"Str":{"pattern":"FRAG"}},{"Entity":{"atom":42}},{"Repetition":{"atom":70,"min":1,"max":null,"tag":"Repetition"}},{"Named":{"name":"fragment_number","atom":71}},{"Sequence":{"atoms":[37,38,40,51,63,64,67,68,69,72]}},{"Entity":{"atom":5}},{"Entity":{"atom":36}},{"Alternative":{"atoms":[74,75]}},{"Entity":{"atom":39}},{"Entity":{"atom":50}},{"Entity":{"atom":62}},{"Entity":{"atom":86}},{"Entity":{"atom":82}},{"Str":{"pattern":":"}},{"Entity":{"atom":42}},{"Repetition":{"atom":83,"min":4,"max":4,"tag":"Repetition"}},{"Named":{"name":"year","atom":84}},{"Sequence":{"atoms":[81,85]}},{"Repetition":{"atom":80,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":89}},{"Str":{"pattern":"+"}},{"Entity":{"atom":21}},{"Alternative":{"atoms":[88,90]}},{"Str":{"pattern":"A"}},{"Entity":{"atom":42}},{"Repetition":{"atom":93,"min":1,"max":null,"tag":"Repetition"}},{"Named":{"name":"amendment_number","atom":94}},{"Entity":{"atom":82}},{"Entity":{"atom":42}},{"Repetition":{"atom":97,"min":4,"max":4,"tag":"Repetition"}},{"Named":{"name":"amendment_year","atom":98}},{"Sequence":{"atoms":[96,99]}},{"Repetition":{"atom":100,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":39}},{"Str":{"pattern":"FRAG"}},{"Entity":{"atom":42}},{"Repetition":{"atom":104,"min":1,"max":null,"tag":"Repetition"}},{"Named":{"name":"fragment_number","atom":105}},{"Sequence":{"atoms":[76,77,78,79,87,91,92,95,101,102,103,106]}},{"Alternative":{"atoms":[73,107]}},{"Entity":{"atom":5}},{"Entity":{"atom":36}},{"Alternative":{"atoms":[109,110]}},{"Entity":{"atom":39}},{"Entity":{"atom":198}},{"Entity":{"atom":118}},{"Str":{"pattern":"ISO"}},{"Str":{"pattern":"IEC"}},{"Str":{"pattern":"CISPR"}},{"Alternative":{"atoms":[115,116,117]}},{"Entity":{"atom":181}},{"Entity":{"atom":136}},{"Entity":{"atom":89}},{"Named":{"name":"amd_sep_plus","atom":121}},{"Entity":{"atom":21}},{"Named":{"name":"amd_sep_slash","atom":123}},{"Alternative":{"atoms":[122,124]}},{"Str":{"pattern":"A"}},{"Entity":{"atom":42}},{"Repetition":{"atom":127,"min":1,"max":null,"tag":"Repetition"}},{"Named":{"name":"amd_number","atom":128}},{"Entity":{"atom":82}},{"Entity":{"atom":42}},{"Repetition":{"atom":131,"min":4,"max":4,"tag":"Repetition"}},{"Named":{"name":"amd_year","atom":132}},{"Sequence":{"atoms":[130,133]}},{"Repetition":{"atom":134,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[125,126,129,135]}},{"Entity":{"atom":179}},{"Entity":{"atom":89}},{"Named":{"name":"amd_sep_plus","atom":138}},{"Entity":{"atom":21}},{"Named":{"name":"amd_sep_slash","atom":140}},{"Alternative":{"atoms":[139,141]}},{"Str":{"pattern":"AC"}},{"Entity":{"atom":42}},{"Entity":{"atom":42}},{"Repetition":{"atom":145,"min":0,"max":null,"tag":"Repetition"}},{"Sequence":{"atoms":[144,146]}},{"Named":{"name":"cor_number","atom":147}},{"Repetition":{"atom":148,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":171}},{"Entity":{"atom":82}},{"Entity":{"atom":42}},{"Repetition":{"atom":152,"min":4,"max":4,"tag":"Repetition"}},{"Named":{"name":"year","atom":153}},{"Entity":{"atom":54}},{"Entity":{"atom":170}},{"Str":{"pattern":"01"}},{"Str":{"pattern":"02"}},{"Str":{"pattern":"03"}},{"Str":{"pattern":"04"}},{"Str":{"pattern":"05"}},{"Str":{"pattern":"06"}},{"Str":{"pattern":"07"}},{"Str":{"pattern":"08"}},{"Str":{"pattern":"09"}},{"Str":{"pattern":"10"}},{"Str":{"pattern":"11"}},{"Str":{"pattern":"12"}},{"Alternative":{"atoms":[157,158,159,160,161,162,163,164,165,166,167,168]}},{"Named":{"name":"month","atom":169}},{"Sequence":{"atoms":[151,154,155,156]}},{"Entity":{"atom":82}},{"Entity":{"atom":42}},{"Repetition":{"atom":173,"min":4,"max":4,"tag":"Repetition"}},{"Named":{"name":"year","atom":174}},{"Sequence":{"atoms":[172,175]}},{"Alternative":{"atoms":[150,176]}},{"Repetition":{"atom":177,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[142,143,149,178]}},{"Alternative":{"atoms":[120,137]}},{"Named":{"name":"supplement","atom":180}},{"Lookahead":{"atom":119,"positive":false}},{"Entity":{"atom":189}},{"Entity":{"atom":39}},{"Str":{"pattern":"ED"}},{"Entity":{"atom":42}},{"Repetition":{"atom":186,"min":1,"max":null,"tag":"Repetition"}},{"Named":{"name":"edition","atom":187}},{"Sequence":{"atoms":[184,185,188]}},{"Lookahead":{"atom":183,"positive":false}},{"Entity":{"atom":194}},{"Re":{"pattern":"[\\x01-\\x09]"}},{"Re":{"pattern":"[\\x0b-\\u{10ffff}]"}},{"Alternative":{"atoms":[192,193]}},{"Sequence":{"atoms":[182,190,191]}},{"Repetition":{"atom":195,"min":0,"max":null,"tag":"Repetition"}},{"Sequence":{"atoms":[114,196]}},{"Named":{"name":"adopted_string","atom":197}},{"Sequence":{"atoms":[112,113]}},{"Repetition":{"atom":199,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":39}},{"Entity":{"atom":208}},{"Str":{"pattern":"Guide"}},{"Str":{"pattern":"GUIDE"}},{"Str":{"pattern":"TR"}},{"Str":{"pattern":"TS"}},{"Alternative":{"atoms":[203,204,205,206]}},{"Named":{"name":"type","atom":207}},{"Sequence":{"atoms":[201,202]}},{"Entity":{"atom":21}},{"Entity":{"atom":208}},{"Sequence":{"atoms":[210,211]}},{"Alternative":{"atoms":[209,212]}},{"Repetition":{"atom":213,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":39}},{"Entity":{"atom":50}},{"Entity":{"atom":62}},{"Entity":{"atom":230}},{"Entity":{"atom":39}},{"Str":{"pattern":"V"}},{"Entity":{"atom":42}},{"Repetition":{"atom":221,"min":1,"max":null,"tag":"Repetition"}},{"Str":{"pattern":"."}},{"Entity":{"atom":42}},{"Repetition":{"atom":224,"min":1,"max":null,"tag":"Repetition"}},{"Str":{"pattern":"."}},{"Entity":{"atom":42}},{"Repetition":{"atom":227,"min":1,"max":null,"tag":"Repetition"}},{"Sequence":{"atoms":[219,220,222,223,225,226,228]}},{"Named":{"name":"version","atom":229}},{"Repetition":{"atom":218,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":86}},{"Repetition":{"atom":232,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[215,216,217,231,233]}},{"Repetition":{"atom":234,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":239}},{"Entity":{"atom":181}},{"Repetition":{"atom":237,"min":0,"max":null,"tag":"Repetition"}},{"Named":{"name":"supplements","atom":238}},{"Entity":{"atom":189}},{"Repetition":{"atom":240,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[111,200,214,235,236,241]}},{"Alternative":{"atoms":[0,242]}}],"root":243},"bindings":[]}},"preprocess":{},"tables":{},"lint":{"order_warnings":["rule cen_cenelec.publisher: branches 1 and 2 are order-dependent (shared first bytes; ordered choice is decisive)","rule cen_cenelec.publisher: branches 1 and 3 are order-dependent (shared first bytes; ordered choice is decisive)","rule cen_cenelec.publisher: branches 2 and 3 are order-dependent (shared first bytes; ordered choice is decisive)","rule cen_cenelec.date: branches 1 and 2 are order-dependent (shared first bytes; ordered choice is decisive)","rule cen_cenelec.adopted_org_prefix: branches 1 and 2 are order-dependent (shared first bytes; ordered choice is decisive)","rule cen_cenelec.any_noln_char: branches 1 and 2 are order-dependent (first set not statically known)","rule cen_cenelec.fragment_identifier: branches 1 and 2 are order-dependent (shared first bytes; ordered choice is decisive)","rule cen_cenelec.identifier: branches 1 and 2 are order-dependent (shared first bytes; ordered choice is decisive)"]},"default_entry":"identifier","render":{},"derive":{},"tests":[{"entry":"identifier","kind":"accept","input":"EVS-EN 18216:2026","expect":{}},{"entry":"identifier","kind":"accept","input":"EVS-EN ISO 9001:2015/A1:2024","expect":{}},{"entry":"identifier","kind":"accept","input":"EVS EN 196-1:2016","expect":{}},{"entry":"identifier","kind":"accept","input":"EVS 921:2019","expect":{}},{"entry":"identifier","kind":"accept","input":"EVS-TS 1:2019","expect":{}},{"entry":"identifier","kind":"accept","input":"EVS-TR 1:2019","expect":{}},{"entry":"identifier","kind":"accept","input":"EVS-ISO 9001:2015","expect":{}},{"entry":"identifier","kind":"accept","input":"EVS-IEC 62368-1:2020","expect":{}},{"entry":"identifier","kind":"accept","input":"EVS-EN 1993-1-1:2005+NA:2010","expect":{}},{"entry":"identifier","kind":"accept","input":"EVS-EN 1993-1-1:2005/NA","expect":{}},{"entry":"identifier","kind":"accept","input":"EVS-EN 50581:2012+COR:2015","expect":{}},{"entry":"identifier","kind":"accept","input":"EVS-EN 50581:2012+AC:2015","expect":{}},{"entry":"identifier","kind":"accept","input":"EVS-EN 71-1:2011 AMD1:2014","expect":{}},{"entry":"identifier","kind":"accept","input":"prEVS-EN 100:2026","expect":{}},{"entry":"identifier","kind":"reject","input":"nonsense","expect":{}},{"entry":"cen_cenelec.identifier","kind":"accept","input":"EN 18216:2026","expect":{}},{"entry":"cen_cenelec.identifier","kind":"accept","input":"EN ISO 9001:2015","expect":{}},{"entry":"cen_cenelec.identifier","kind":"accept","input":"CEN/CLC TR 17161:2019","expect":{}},{"entry":"cen_cenelec.identifier","kind":"accept","input":"EN 196-1:2016+A1","expect":{}},{"entry":"cen_cenelec.identifier","kind":"accept","input":"CEN/CLC/ETSI/TR 101551:2026","expect":{}},{"entry":"cen_cenelec.identifier","kind":"accept","input":"EN 302 326-2:2026","expect":{}},{"entry":"cen_cenelec.identifier","kind":"accept","input":"EN 302 326-2 V2.2.1","expect":{}},{"entry":"cen_cenelec.identifier","kind":"accept","input":"EN 302 326 V2.2.1:2026","expect":{}},{"entry":"cen_cenelec.identifier","kind":"accept","input":"EN 302:2026","expect":{}},{"entry":"cen_cenelec.identifier","kind":"reject","input":"nonsense","expect":{}}],"docs":{},"source":"# The EVS national identifier: the national prefix (\"EVS\" / \"prEVS\") over a\n# CEN/CENELEC adoption, an ISO/IEC adoption, or a plain Estonian standard —\n# plus the EVS-list supplements (national annex, corrigendum, AMD amendment)\n# and the language code. The CEN spine is IMPORTED via `use` (TODO 11/C6\n# imports): rules are namespaced cen_cenelec.* while captures keep their\n# contract names.\n\nuse cen_cenelec\n\ngrammar PubidEvs version \"0.3.0\" mode \"v1\" {\n identifier = [draft_prefix] \"EVS\" evs_separator ((cen_cenelec.identifier) as adopted / (evs_intl) as intl / (evs_plain) as plain) [evs_amd] [evs_cor / evs_ac] [evs_na]\n\n draft_prefix = \"pr\" as draft_prefix\n evs_separator = (dash / space) as evs_separator\n\n # \"EVS-ISO 9001:2015\", \"EVS-IEC 62368-1:2020\" (+ their amendments)\n evs_intl = ((((\"ISO\" / \"IEC\") as intl_org) space (1*digit) as number) [(dash (1*digit) as part)] [(colon (4digit) as year)])\n # \"EVS 921:2019\", \"EVS-TS 1:2019\", \"EVS-TR 1:2019\"\n evs_plain = [((\"TS\" / \"TR\") as evs_type) space] (1*digit) as number [(colon (4digit) as year)]\n\n # \" AMD1:2014\" / \"+AMD1\" — the AMD amendment spelling; the separator is\n # semantic (list: \"+A full standard plus the amendment\", \"/A only amendment\")\n evs_amd = (((plus as supp_plus / slash as supp_slash / space as supp_space) (\"AMD\" as amd_kind)) (1*digit) as amd_number [(colon (4digit) as amd_year)]) as evs_amd\n # \"+COR:2015\" / \"/COR\" — the COR spelling (the CEN spine consumes +AC itself)\n evs_cor = (((plus as supp_plus / slash as supp_slash) (\"COR\" as cor_kind)) [(1*digit) as cor_number] [(colon (4digit) as cor_year)]) as evs_cor\n # \" AC:2015\" — the space-separated AC spelling\n evs_ac = ((space as supp_space) (\"AC\" as cor_kind) [(1*digit) as cor_number] [(colon (4digit) as cor_year)]) as evs_cor\n # \"+NA:2010\" / \"/NA\" — the national annex\n evs_na = (((plus as supp_plus / slash as supp_slash) \"NA\") [(colon (4digit) as na_year)]) as na\n # The trailing language code (\" et\" / \" en\" / \" et-en\") is extracted by\n # the parse wrapper (Pubid::Evs.parse) BEFORE the grammar runs — the\n # CEN adopted_string is greedy over plain text and would swallow it.\n\n digit = %x30-39\n dash = \"-\"\n space = \" \"\n plus = \"+\"\n slash = \"/\"\n colon = \":\"\n\n entry identifier: identifier\n\n test {\n accept \"EVS-EN 18216:2026\"\n accept \"EVS-EN ISO 9001:2015/A1:2024\"\n accept \"EVS EN 196-1:2016\"\n accept \"EVS 921:2019\"\n accept \"EVS-TS 1:2019\"\n accept \"EVS-TR 1:2019\"\n accept \"EVS-ISO 9001:2015\"\n accept \"EVS-IEC 62368-1:2020\"\n accept \"EVS-EN 1993-1-1:2005+NA:2010\"\n accept \"EVS-EN 1993-1-1:2005/NA\"\n accept \"EVS-EN 50581:2012+COR:2015\"\n accept \"EVS-EN 50581:2012+AC:2015\"\n accept \"EVS-EN 71-1:2011 AMD1:2014\"\n accept \"prEVS-EN 100:2026\"\n reject \"nonsense\"\n }\n}\n","source_hash":"ae887f335324589d1341176a774682af86e7c65f3291055b37dfbe3fa664f816","unicode_tables":"onigmo (Ruby 3.4.8)","compiler_version":"1.3.114","edition":1,"checksum":"sha256:ce3875cdfefbc851802f9d377788b8210a8540cc628e6cb4159c43985da6628c"}
1
+ {"bindings":null,"version":"0.3.0","grammar":"PubidEvs","shape":"parsanol-tree/v2","binding_version":1,"entries":{"identifier":{"root":"identifier","grammar":{"atoms":[{"Entity":{"atom":2}},{"Str":{"pattern":"pr"}},{"Named":{"name":"draft_prefix","atom":1}},{"Repetition":{"atom":0,"min":0,"max":1,"tag":"Maybe"}},{"Str":{"pattern":"EVS"}},{"Entity":{"atom":9}},{"Str":{"pattern":"-"}},{"Str":{"pattern":" "}},{"Alternative":{"atoms":[6,7]}},{"Named":{"name":"evs_separator","atom":8}},{"Entity":{"atom":249}},{"Entity":{"atom":113}},{"Entity":{"atom":16}},{"Str":{"pattern":"FprEN"}},{"Str":{"pattern":"prEN"}},{"Alternative":{"atoms":[13,14]}},{"Named":{"name":"type_with_stage","atom":15}},{"Entity":{"atom":46}},{"Str":{"pattern":"CWA"}},{"Str":{"pattern":"HD"}},{"Str":{"pattern":"ES"}},{"Str":{"pattern":"CR"}},{"Str":{"pattern":"ENV"}},{"Alternative":{"atoms":[18,19,20,21,22]}},{"Named":{"name":"publisher","atom":23}},{"Str":{"pattern":"EN"}},{"Str":{"pattern":"CEN"}},{"Alternative":{"atoms":[25,26]}},{"Named":{"name":"publisher","atom":27}},{"Entity":{"atom":38}},{"Entity":{"atom":36}},{"Str":{"pattern":"/"}},{"Str":{"pattern":"CLC"}},{"Str":{"pattern":"ETSI"}},{"Alternative":{"atoms":[32,33]}},{"Named":{"name":"copublisher","atom":34}},{"Sequence":{"atoms":[31,35]}},{"Repetition":{"atom":30,"min":1,"max":null,"tag":"Repetition"}},{"Named":{"name":"copublishers","atom":37}},{"Repetition":{"atom":29,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[28,39]}},{"Str":{"pattern":"CLC"}},{"Named":{"name":"publisher","atom":41}},{"Entity":{"atom":38}},{"Repetition":{"atom":43,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[42,44]}},{"Alternative":{"atoms":[24,40,45]}},{"Alternative":{"atoms":[12,17]}},{"Str":{"pattern":" "}},{"Entity":{"atom":58}},{"Re":{"pattern":"[\\x30-\\x39]"}},{"Repetition":{"atom":50,"min":1,"max":null,"tag":"Repetition"}},{"Str":{"pattern":" "}},{"Re":{"pattern":"[\\x30-\\x39]"}},{"Repetition":{"atom":53,"min":1,"max":null,"tag":"Repetition"}},{"Sequence":{"atoms":[52,54]}},{"Repetition":{"atom":55,"min":0,"max":null,"tag":"Repetition"}},{"Sequence":{"atoms":[51,56]}},{"Named":{"name":"number","atom":57}},{"Entity":{"atom":69}},{"Entity":{"atom":67}},{"Str":{"pattern":"-"}},{"Re":{"pattern":"[\\x30-\\x39]"}},{"Str":{"pattern":"-"}},{"Alternative":{"atoms":[62,63]}},{"Repetition":{"atom":64,"min":1,"max":null,"tag":"Repetition"}},{"Named":{"name":"part","atom":65}},{"Sequence":{"atoms":[61,66]}},{"Repetition":{"atom":60,"min":0,"max":null,"tag":"Repetition"}},{"Named":{"name":"parts","atom":68}},{"Str":{"pattern":" "}},{"Str":{"pattern":"AMD"}},{"Re":{"pattern":"[\\x30-\\x39]"}},{"Repetition":{"atom":72,"min":1,"max":null,"tag":"Repetition"}},{"Named":{"name":"amendment_number","atom":73}},{"Str":{"pattern":" "}},{"Str":{"pattern":"FRAG"}},{"Re":{"pattern":"[\\x30-\\x39]"}},{"Repetition":{"atom":77,"min":1,"max":null,"tag":"Repetition"}},{"Named":{"name":"fragment_number","atom":78}},{"Sequence":{"atoms":[47,48,49,59,70,71,74,75,76,79]}},{"Entity":{"atom":16}},{"Entity":{"atom":46}},{"Alternative":{"atoms":[81,82]}},{"Str":{"pattern":" "}},{"Entity":{"atom":58}},{"Entity":{"atom":69}},{"Entity":{"atom":92}},{"Str":{"pattern":":"}},{"Re":{"pattern":"[\\x30-\\x39]"}},{"Repetition":{"atom":89,"min":4,"max":4,"tag":"Repetition"}},{"Named":{"name":"year","atom":90}},{"Sequence":{"atoms":[88,91]}},{"Repetition":{"atom":87,"min":0,"max":1,"tag":"Maybe"}},{"Str":{"pattern":"+"}},{"Str":{"pattern":"/"}},{"Alternative":{"atoms":[94,95]}},{"Str":{"pattern":"A"}},{"Re":{"pattern":"[\\x30-\\x39]"}},{"Repetition":{"atom":98,"min":1,"max":null,"tag":"Repetition"}},{"Named":{"name":"amendment_number","atom":99}},{"Str":{"pattern":":"}},{"Re":{"pattern":"[\\x30-\\x39]"}},{"Repetition":{"atom":102,"min":4,"max":4,"tag":"Repetition"}},{"Named":{"name":"amendment_year","atom":103}},{"Sequence":{"atoms":[101,104]}},{"Repetition":{"atom":105,"min":0,"max":1,"tag":"Maybe"}},{"Str":{"pattern":" "}},{"Str":{"pattern":"FRAG"}},{"Re":{"pattern":"[\\x30-\\x39]"}},{"Repetition":{"atom":109,"min":1,"max":null,"tag":"Repetition"}},{"Named":{"name":"fragment_number","atom":110}},{"Sequence":{"atoms":[83,84,85,86,93,96,97,100,106,107,108,111]}},{"Alternative":{"atoms":[80,112]}},{"Entity":{"atom":16}},{"Entity":{"atom":46}},{"Alternative":{"atoms":[114,115]}},{"Entity":{"atom":118}},{"Str":{"pattern":" "}},{"Entity":{"atom":202}},{"Str":{"pattern":"ISO"}},{"Str":{"pattern":"IEC"}},{"Str":{"pattern":"CISPR"}},{"Alternative":{"atoms":[120,121,122]}},{"Entity":{"atom":186}},{"Entity":{"atom":141}},{"Str":{"pattern":"+"}},{"Named":{"name":"amd_sep_plus","atom":126}},{"Str":{"pattern":"/"}},{"Named":{"name":"amd_sep_slash","atom":128}},{"Alternative":{"atoms":[127,129]}},{"Str":{"pattern":"A"}},{"Re":{"pattern":"[\\x30-\\x39]"}},{"Repetition":{"atom":132,"min":1,"max":null,"tag":"Repetition"}},{"Named":{"name":"amd_number","atom":133}},{"Str":{"pattern":":"}},{"Re":{"pattern":"[\\x30-\\x39]"}},{"Repetition":{"atom":136,"min":4,"max":4,"tag":"Repetition"}},{"Named":{"name":"amd_year","atom":137}},{"Sequence":{"atoms":[135,138]}},{"Repetition":{"atom":139,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[130,131,134,140]}},{"Entity":{"atom":184}},{"Str":{"pattern":"+"}},{"Named":{"name":"amd_sep_plus","atom":143}},{"Str":{"pattern":"/"}},{"Named":{"name":"amd_sep_slash","atom":145}},{"Alternative":{"atoms":[144,146]}},{"Str":{"pattern":"AC"}},{"Re":{"pattern":"[\\x30-\\x39]"}},{"Re":{"pattern":"[\\x30-\\x39]"}},{"Repetition":{"atom":150,"min":0,"max":null,"tag":"Repetition"}},{"Sequence":{"atoms":[149,151]}},{"Named":{"name":"cor_number","atom":152}},{"Repetition":{"atom":153,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":176}},{"Str":{"pattern":":"}},{"Re":{"pattern":"[\\x30-\\x39]"}},{"Repetition":{"atom":157,"min":4,"max":4,"tag":"Repetition"}},{"Named":{"name":"year","atom":158}},{"Str":{"pattern":"-"}},{"Entity":{"atom":175}},{"Str":{"pattern":"01"}},{"Str":{"pattern":"02"}},{"Str":{"pattern":"03"}},{"Str":{"pattern":"04"}},{"Str":{"pattern":"05"}},{"Str":{"pattern":"06"}},{"Str":{"pattern":"07"}},{"Str":{"pattern":"08"}},{"Str":{"pattern":"09"}},{"Str":{"pattern":"10"}},{"Str":{"pattern":"11"}},{"Str":{"pattern":"12"}},{"Alternative":{"atoms":[162,163,164,165,166,167,168,169,170,171,172,173]}},{"Named":{"name":"month","atom":174}},{"Sequence":{"atoms":[156,159,160,161]}},{"Str":{"pattern":":"}},{"Re":{"pattern":"[\\x30-\\x39]"}},{"Repetition":{"atom":178,"min":4,"max":4,"tag":"Repetition"}},{"Named":{"name":"year","atom":179}},{"Sequence":{"atoms":[177,180]}},{"Alternative":{"atoms":[155,181]}},{"Repetition":{"atom":182,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[147,148,154,183]}},{"Alternative":{"atoms":[125,142]}},{"Named":{"name":"supplement","atom":185}},{"Lookahead":{"atom":124,"positive":false}},{"Entity":{"atom":194}},{"Str":{"pattern":" "}},{"Str":{"pattern":"ED"}},{"Re":{"pattern":"[\\x30-\\x39]"}},{"Repetition":{"atom":191,"min":1,"max":null,"tag":"Repetition"}},{"Named":{"name":"edition","atom":192}},{"Sequence":{"atoms":[189,190,193]}},{"Lookahead":{"atom":188,"positive":false}},{"Re":{"pattern":"[\\x01-\\x09]"}},{"Re":{"pattern":"[\\x0b-\\u{10ffff}]"}},{"Alternative":{"atoms":[196,197]}},{"Sequence":{"atoms":[187,195,198]}},{"Repetition":{"atom":199,"min":0,"max":null,"tag":"Repetition"}},{"Sequence":{"atoms":[123,200]}},{"Named":{"name":"adopted_string","atom":201}},{"Sequence":{"atoms":[117,119]}},{"Repetition":{"atom":203,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":118}},{"Entity":{"atom":212}},{"Str":{"pattern":"Guide"}},{"Str":{"pattern":"GUIDE"}},{"Str":{"pattern":"TR"}},{"Str":{"pattern":"TS"}},{"Alternative":{"atoms":[207,208,209,210]}},{"Named":{"name":"type","atom":211}},{"Sequence":{"atoms":[205,206]}},{"Entity":{"atom":215}},{"Str":{"pattern":"/"}},{"Named":{"name":"cen_cenelec.slash","atom":214}},{"Entity":{"atom":212}},{"Sequence":{"atoms":[216,217]}},{"Alternative":{"atoms":[213,218]}},{"Repetition":{"atom":219,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":118}},{"Entity":{"atom":58}},{"Entity":{"atom":69}},{"Entity":{"atom":236}},{"Str":{"pattern":" "}},{"Str":{"pattern":"V"}},{"Re":{"pattern":"[\\x30-\\x39]"}},{"Repetition":{"atom":227,"min":1,"max":null,"tag":"Repetition"}},{"Str":{"pattern":"."}},{"Re":{"pattern":"[\\x30-\\x39]"}},{"Repetition":{"atom":230,"min":1,"max":null,"tag":"Repetition"}},{"Str":{"pattern":"."}},{"Re":{"pattern":"[\\x30-\\x39]"}},{"Repetition":{"atom":233,"min":1,"max":null,"tag":"Repetition"}},{"Sequence":{"atoms":[225,226,228,229,231,232,234]}},{"Named":{"name":"version","atom":235}},{"Repetition":{"atom":224,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":92}},{"Repetition":{"atom":238,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[221,222,223,237,239]}},{"Repetition":{"atom":240,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":245}},{"Entity":{"atom":186}},{"Repetition":{"atom":243,"min":0,"max":null,"tag":"Repetition"}},{"Named":{"name":"supplements","atom":244}},{"Entity":{"atom":194}},{"Repetition":{"atom":246,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[116,204,220,241,242,247]}},{"Alternative":{"atoms":[11,248]}},{"Named":{"name":"adopted","atom":10}},{"Entity":{"atom":273}},{"Str":{"pattern":"ISO"}},{"Str":{"pattern":"IEC"}},{"Alternative":{"atoms":[252,253]}},{"Named":{"name":"intl_org","atom":254}},{"Str":{"pattern":" "}},{"Re":{"pattern":"[\\x30-\\x39]"}},{"Repetition":{"atom":257,"min":1,"max":null,"tag":"Repetition"}},{"Named":{"name":"number","atom":258}},{"Sequence":{"atoms":[255,256,259]}},{"Str":{"pattern":"-"}},{"Re":{"pattern":"[\\x30-\\x39]"}},{"Repetition":{"atom":262,"min":1,"max":null,"tag":"Repetition"}},{"Named":{"name":"part","atom":263}},{"Sequence":{"atoms":[261,264]}},{"Repetition":{"atom":265,"min":0,"max":1,"tag":"Maybe"}},{"Str":{"pattern":":"}},{"Re":{"pattern":"[\\x30-\\x39]"}},{"Repetition":{"atom":268,"min":4,"max":4,"tag":"Repetition"}},{"Named":{"name":"year","atom":269}},{"Sequence":{"atoms":[267,270]}},{"Repetition":{"atom":271,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[260,266,272]}},{"Named":{"name":"intl","atom":251}},{"Entity":{"atom":292}},{"Str":{"pattern":"TS"}},{"Str":{"pattern":"TR"}},{"Alternative":{"atoms":[276,277]}},{"Named":{"name":"evs_type","atom":278}},{"Str":{"pattern":" "}},{"Sequence":{"atoms":[279,280]}},{"Repetition":{"atom":281,"min":0,"max":1,"tag":"Maybe"}},{"Re":{"pattern":"[\\x30-\\x39]"}},{"Repetition":{"atom":283,"min":1,"max":null,"tag":"Repetition"}},{"Named":{"name":"number","atom":284}},{"Str":{"pattern":":"}},{"Re":{"pattern":"[\\x30-\\x39]"}},{"Repetition":{"atom":287,"min":4,"max":4,"tag":"Repetition"}},{"Named":{"name":"year","atom":288}},{"Sequence":{"atoms":[286,289]}},{"Repetition":{"atom":290,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[282,285,291]}},{"Named":{"name":"plain","atom":275}},{"Alternative":{"atoms":[250,274,293]}},{"Entity":{"atom":316}},{"Str":{"pattern":"+"}},{"Named":{"name":"supp_plus","atom":296}},{"Str":{"pattern":"/"}},{"Named":{"name":"supp_slash","atom":298}},{"Str":{"pattern":" "}},{"Named":{"name":"supp_space","atom":300}},{"Alternative":{"atoms":[297,299,301]}},{"Str":{"pattern":"AMD"}},{"Named":{"name":"amd_kind","atom":303}},{"Sequence":{"atoms":[302,304]}},{"Re":{"pattern":"[\\x30-\\x39]"}},{"Repetition":{"atom":306,"min":1,"max":null,"tag":"Repetition"}},{"Named":{"name":"amd_number","atom":307}},{"Str":{"pattern":":"}},{"Re":{"pattern":"[\\x30-\\x39]"}},{"Repetition":{"atom":310,"min":4,"max":4,"tag":"Repetition"}},{"Named":{"name":"amd_year","atom":311}},{"Sequence":{"atoms":[309,312]}},{"Repetition":{"atom":313,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[305,308,314]}},{"Named":{"name":"evs_amd","atom":315}},{"Repetition":{"atom":295,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":338}},{"Str":{"pattern":"+"}},{"Named":{"name":"supp_plus","atom":319}},{"Str":{"pattern":"/"}},{"Named":{"name":"supp_slash","atom":321}},{"Alternative":{"atoms":[320,322]}},{"Str":{"pattern":"COR"}},{"Named":{"name":"cor_kind","atom":324}},{"Sequence":{"atoms":[323,325]}},{"Re":{"pattern":"[\\x30-\\x39]"}},{"Repetition":{"atom":327,"min":1,"max":null,"tag":"Repetition"}},{"Named":{"name":"cor_number","atom":328}},{"Repetition":{"atom":329,"min":0,"max":1,"tag":"Maybe"}},{"Str":{"pattern":":"}},{"Re":{"pattern":"[\\x30-\\x39]"}},{"Repetition":{"atom":332,"min":4,"max":4,"tag":"Repetition"}},{"Named":{"name":"cor_year","atom":333}},{"Sequence":{"atoms":[331,334]}},{"Repetition":{"atom":335,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[326,330,336]}},{"Named":{"name":"evs_cor","atom":337}},{"Entity":{"atom":355}},{"Str":{"pattern":" "}},{"Named":{"name":"supp_space","atom":340}},{"Str":{"pattern":"AC"}},{"Named":{"name":"cor_kind","atom":342}},{"Re":{"pattern":"[\\x30-\\x39]"}},{"Repetition":{"atom":344,"min":1,"max":null,"tag":"Repetition"}},{"Named":{"name":"cor_number","atom":345}},{"Repetition":{"atom":346,"min":0,"max":1,"tag":"Maybe"}},{"Str":{"pattern":":"}},{"Re":{"pattern":"[\\x30-\\x39]"}},{"Repetition":{"atom":349,"min":4,"max":4,"tag":"Repetition"}},{"Named":{"name":"cor_year","atom":350}},{"Sequence":{"atoms":[348,351]}},{"Repetition":{"atom":352,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[341,343,347,353]}},{"Named":{"name":"evs_cor","atom":354}},{"Alternative":{"atoms":[318,339]}},{"Repetition":{"atom":356,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":373}},{"Str":{"pattern":"+"}},{"Named":{"name":"supp_plus","atom":359}},{"Str":{"pattern":"/"}},{"Named":{"name":"supp_slash","atom":361}},{"Alternative":{"atoms":[360,362]}},{"Str":{"pattern":"NA"}},{"Sequence":{"atoms":[363,364]}},{"Str":{"pattern":":"}},{"Re":{"pattern":"[\\x30-\\x39]"}},{"Repetition":{"atom":367,"min":4,"max":4,"tag":"Repetition"}},{"Named":{"name":"na_year","atom":368}},{"Sequence":{"atoms":[366,369]}},{"Repetition":{"atom":370,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[365,371]}},{"Named":{"name":"na","atom":372}},{"Repetition":{"atom":358,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[3,4,5,294,317,357,374]}}],"root":375},"bindings":[{"capture":"draft_prefix","path":"draft_prefix","type":"string","card":null,"preprocess":null},{"capture":"evs_separator","path":"evs_separator","type":"string","card":null,"preprocess":null},{"capture":"adopted","path":"adopted","type":"raw","card":null,"preprocess":null},{"capture":"intl","path":"intl","type":"raw","card":null,"preprocess":null},{"capture":"plain","path":"plain","type":"raw","card":null,"preprocess":null},{"capture":"evs_amd","path":"evs_amd","type":"raw","card":null,"preprocess":null},{"capture":"evs_cor","path":"evs_cor","type":"raw","card":null,"preprocess":null},{"capture":"na","path":"na","type":"raw","card":null,"preprocess":null}]},"cen_cenelec.identifier":{"root":"cen_cenelec.identifier","grammar":{"atoms":[{"Entity":{"atom":102}},{"Entity":{"atom":5}},{"Str":{"pattern":"FprEN"}},{"Str":{"pattern":"prEN"}},{"Alternative":{"atoms":[2,3]}},{"Named":{"name":"type_with_stage","atom":4}},{"Entity":{"atom":35}},{"Str":{"pattern":"CWA"}},{"Str":{"pattern":"HD"}},{"Str":{"pattern":"ES"}},{"Str":{"pattern":"CR"}},{"Str":{"pattern":"ENV"}},{"Alternative":{"atoms":[7,8,9,10,11]}},{"Named":{"name":"publisher","atom":12}},{"Str":{"pattern":"EN"}},{"Str":{"pattern":"CEN"}},{"Alternative":{"atoms":[14,15]}},{"Named":{"name":"publisher","atom":16}},{"Entity":{"atom":27}},{"Entity":{"atom":25}},{"Str":{"pattern":"/"}},{"Str":{"pattern":"CLC"}},{"Str":{"pattern":"ETSI"}},{"Alternative":{"atoms":[21,22]}},{"Named":{"name":"copublisher","atom":23}},{"Sequence":{"atoms":[20,24]}},{"Repetition":{"atom":19,"min":1,"max":null,"tag":"Repetition"}},{"Named":{"name":"copublishers","atom":26}},{"Repetition":{"atom":18,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[17,28]}},{"Str":{"pattern":"CLC"}},{"Named":{"name":"publisher","atom":30}},{"Entity":{"atom":27}},{"Repetition":{"atom":32,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[31,33]}},{"Alternative":{"atoms":[13,29,34]}},{"Alternative":{"atoms":[1,6]}},{"Str":{"pattern":" "}},{"Entity":{"atom":47}},{"Re":{"pattern":"[\\x30-\\x39]"}},{"Repetition":{"atom":39,"min":1,"max":null,"tag":"Repetition"}},{"Str":{"pattern":" "}},{"Re":{"pattern":"[\\x30-\\x39]"}},{"Repetition":{"atom":42,"min":1,"max":null,"tag":"Repetition"}},{"Sequence":{"atoms":[41,43]}},{"Repetition":{"atom":44,"min":0,"max":null,"tag":"Repetition"}},{"Sequence":{"atoms":[40,45]}},{"Named":{"name":"number","atom":46}},{"Entity":{"atom":58}},{"Entity":{"atom":56}},{"Str":{"pattern":"-"}},{"Re":{"pattern":"[\\x30-\\x39]"}},{"Str":{"pattern":"-"}},{"Alternative":{"atoms":[51,52]}},{"Repetition":{"atom":53,"min":1,"max":null,"tag":"Repetition"}},{"Named":{"name":"part","atom":54}},{"Sequence":{"atoms":[50,55]}},{"Repetition":{"atom":49,"min":0,"max":null,"tag":"Repetition"}},{"Named":{"name":"parts","atom":57}},{"Str":{"pattern":" "}},{"Str":{"pattern":"AMD"}},{"Re":{"pattern":"[\\x30-\\x39]"}},{"Repetition":{"atom":61,"min":1,"max":null,"tag":"Repetition"}},{"Named":{"name":"amendment_number","atom":62}},{"Str":{"pattern":" "}},{"Str":{"pattern":"FRAG"}},{"Re":{"pattern":"[\\x30-\\x39]"}},{"Repetition":{"atom":66,"min":1,"max":null,"tag":"Repetition"}},{"Named":{"name":"fragment_number","atom":67}},{"Sequence":{"atoms":[36,37,38,48,59,60,63,64,65,68]}},{"Entity":{"atom":5}},{"Entity":{"atom":35}},{"Alternative":{"atoms":[70,71]}},{"Str":{"pattern":" "}},{"Entity":{"atom":47}},{"Entity":{"atom":58}},{"Entity":{"atom":81}},{"Str":{"pattern":":"}},{"Re":{"pattern":"[\\x30-\\x39]"}},{"Repetition":{"atom":78,"min":4,"max":4,"tag":"Repetition"}},{"Named":{"name":"year","atom":79}},{"Sequence":{"atoms":[77,80]}},{"Repetition":{"atom":76,"min":0,"max":1,"tag":"Maybe"}},{"Str":{"pattern":"+"}},{"Str":{"pattern":"/"}},{"Alternative":{"atoms":[83,84]}},{"Str":{"pattern":"A"}},{"Re":{"pattern":"[\\x30-\\x39]"}},{"Repetition":{"atom":87,"min":1,"max":null,"tag":"Repetition"}},{"Named":{"name":"amendment_number","atom":88}},{"Str":{"pattern":":"}},{"Re":{"pattern":"[\\x30-\\x39]"}},{"Repetition":{"atom":91,"min":4,"max":4,"tag":"Repetition"}},{"Named":{"name":"amendment_year","atom":92}},{"Sequence":{"atoms":[90,93]}},{"Repetition":{"atom":94,"min":0,"max":1,"tag":"Maybe"}},{"Str":{"pattern":" "}},{"Str":{"pattern":"FRAG"}},{"Re":{"pattern":"[\\x30-\\x39]"}},{"Repetition":{"atom":98,"min":1,"max":null,"tag":"Repetition"}},{"Named":{"name":"fragment_number","atom":99}},{"Sequence":{"atoms":[72,73,74,75,82,85,86,89,95,96,97,100]}},{"Alternative":{"atoms":[69,101]}},{"Entity":{"atom":5}},{"Entity":{"atom":35}},{"Alternative":{"atoms":[103,104]}},{"Entity":{"atom":107}},{"Str":{"pattern":" "}},{"Entity":{"atom":191}},{"Str":{"pattern":"ISO"}},{"Str":{"pattern":"IEC"}},{"Str":{"pattern":"CISPR"}},{"Alternative":{"atoms":[109,110,111]}},{"Entity":{"atom":175}},{"Entity":{"atom":130}},{"Str":{"pattern":"+"}},{"Named":{"name":"amd_sep_plus","atom":115}},{"Str":{"pattern":"/"}},{"Named":{"name":"amd_sep_slash","atom":117}},{"Alternative":{"atoms":[116,118]}},{"Str":{"pattern":"A"}},{"Re":{"pattern":"[\\x30-\\x39]"}},{"Repetition":{"atom":121,"min":1,"max":null,"tag":"Repetition"}},{"Named":{"name":"amd_number","atom":122}},{"Str":{"pattern":":"}},{"Re":{"pattern":"[\\x30-\\x39]"}},{"Repetition":{"atom":125,"min":4,"max":4,"tag":"Repetition"}},{"Named":{"name":"amd_year","atom":126}},{"Sequence":{"atoms":[124,127]}},{"Repetition":{"atom":128,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[119,120,123,129]}},{"Entity":{"atom":173}},{"Str":{"pattern":"+"}},{"Named":{"name":"amd_sep_plus","atom":132}},{"Str":{"pattern":"/"}},{"Named":{"name":"amd_sep_slash","atom":134}},{"Alternative":{"atoms":[133,135]}},{"Str":{"pattern":"AC"}},{"Re":{"pattern":"[\\x30-\\x39]"}},{"Re":{"pattern":"[\\x30-\\x39]"}},{"Repetition":{"atom":139,"min":0,"max":null,"tag":"Repetition"}},{"Sequence":{"atoms":[138,140]}},{"Named":{"name":"cor_number","atom":141}},{"Repetition":{"atom":142,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":165}},{"Str":{"pattern":":"}},{"Re":{"pattern":"[\\x30-\\x39]"}},{"Repetition":{"atom":146,"min":4,"max":4,"tag":"Repetition"}},{"Named":{"name":"year","atom":147}},{"Str":{"pattern":"-"}},{"Entity":{"atom":164}},{"Str":{"pattern":"01"}},{"Str":{"pattern":"02"}},{"Str":{"pattern":"03"}},{"Str":{"pattern":"04"}},{"Str":{"pattern":"05"}},{"Str":{"pattern":"06"}},{"Str":{"pattern":"07"}},{"Str":{"pattern":"08"}},{"Str":{"pattern":"09"}},{"Str":{"pattern":"10"}},{"Str":{"pattern":"11"}},{"Str":{"pattern":"12"}},{"Alternative":{"atoms":[151,152,153,154,155,156,157,158,159,160,161,162]}},{"Named":{"name":"month","atom":163}},{"Sequence":{"atoms":[145,148,149,150]}},{"Str":{"pattern":":"}},{"Re":{"pattern":"[\\x30-\\x39]"}},{"Repetition":{"atom":167,"min":4,"max":4,"tag":"Repetition"}},{"Named":{"name":"year","atom":168}},{"Sequence":{"atoms":[166,169]}},{"Alternative":{"atoms":[144,170]}},{"Repetition":{"atom":171,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[136,137,143,172]}},{"Alternative":{"atoms":[114,131]}},{"Named":{"name":"supplement","atom":174}},{"Lookahead":{"atom":113,"positive":false}},{"Entity":{"atom":183}},{"Str":{"pattern":" "}},{"Str":{"pattern":"ED"}},{"Re":{"pattern":"[\\x30-\\x39]"}},{"Repetition":{"atom":180,"min":1,"max":null,"tag":"Repetition"}},{"Named":{"name":"edition","atom":181}},{"Sequence":{"atoms":[178,179,182]}},{"Lookahead":{"atom":177,"positive":false}},{"Re":{"pattern":"[\\x01-\\x09]"}},{"Re":{"pattern":"[\\x0b-\\u{10ffff}]"}},{"Alternative":{"atoms":[185,186]}},{"Sequence":{"atoms":[176,184,187]}},{"Repetition":{"atom":188,"min":0,"max":null,"tag":"Repetition"}},{"Sequence":{"atoms":[112,189]}},{"Named":{"name":"adopted_string","atom":190}},{"Sequence":{"atoms":[106,108]}},{"Repetition":{"atom":192,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":107}},{"Entity":{"atom":201}},{"Str":{"pattern":"Guide"}},{"Str":{"pattern":"GUIDE"}},{"Str":{"pattern":"TR"}},{"Str":{"pattern":"TS"}},{"Alternative":{"atoms":[196,197,198,199]}},{"Named":{"name":"type","atom":200}},{"Sequence":{"atoms":[194,195]}},{"Entity":{"atom":204}},{"Str":{"pattern":"/"}},{"Named":{"name":"cen_cenelec.slash","atom":203}},{"Entity":{"atom":201}},{"Sequence":{"atoms":[205,206]}},{"Alternative":{"atoms":[202,207]}},{"Repetition":{"atom":208,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":107}},{"Entity":{"atom":47}},{"Entity":{"atom":58}},{"Entity":{"atom":225}},{"Str":{"pattern":" "}},{"Str":{"pattern":"V"}},{"Re":{"pattern":"[\\x30-\\x39]"}},{"Repetition":{"atom":216,"min":1,"max":null,"tag":"Repetition"}},{"Str":{"pattern":"."}},{"Re":{"pattern":"[\\x30-\\x39]"}},{"Repetition":{"atom":219,"min":1,"max":null,"tag":"Repetition"}},{"Str":{"pattern":"."}},{"Re":{"pattern":"[\\x30-\\x39]"}},{"Repetition":{"atom":222,"min":1,"max":null,"tag":"Repetition"}},{"Sequence":{"atoms":[214,215,217,218,220,221,223]}},{"Named":{"name":"version","atom":224}},{"Repetition":{"atom":213,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":81}},{"Repetition":{"atom":227,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[210,211,212,226,228]}},{"Repetition":{"atom":229,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":234}},{"Entity":{"atom":175}},{"Repetition":{"atom":232,"min":0,"max":null,"tag":"Repetition"}},{"Named":{"name":"supplements","atom":233}},{"Entity":{"atom":183}},{"Repetition":{"atom":235,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[105,193,209,230,231,236]}},{"Alternative":{"atoms":[0,237]}}],"root":238},"bindings":[{"capture":"publisher","path":"publisher","type":"string","card":null,"preprocess":null},{"capture":"copublisher","path":"copublishers[].copublisher","type":"string","card":null,"preprocess":null},{"capture":"type_with_stage","path":"type_with_stage","type":"string","card":null,"preprocess":null},{"capture":"type","path":"type","type":"string","card":null,"preprocess":null},{"capture":"number","path":"number","type":"string","card":null,"preprocess":null},{"capture":"version","path":"version","type":"string","card":null,"preprocess":null},{"capture":"part","path":"parts[].part","type":"string","card":null,"preprocess":null},{"capture":"year","path":"year","type":"string","card":null,"preprocess":null},{"capture":"adopted_string","path":"adopted_string","type":"string","card":null,"preprocess":null},{"capture":"edition","path":"edition","type":"string","card":null,"preprocess":null},{"capture":"amendment_number","path":"amendment_number","type":"string","card":null,"preprocess":null},{"capture":"amendment_year","path":"amendment_year","type":"string","card":null,"preprocess":null},{"capture":"fragment_number","path":"fragment_number","type":"string","card":null,"preprocess":null},{"capture":"supplement","path":"supplements[].supplement","type":"raw","card":null,"preprocess":null}]}},"preprocess":{},"tables":{},"lint":{"order_warnings":["rule cen_cenelec.publisher: branches 1 and 2 are order-dependent (shared first bytes; ordered choice is decisive)","rule cen_cenelec.publisher: branches 1 and 3 are order-dependent (shared first bytes; ordered choice is decisive)","rule cen_cenelec.publisher: branches 2 and 3 are order-dependent (shared first bytes; ordered choice is decisive)","rule cen_cenelec.date: branches 1 and 2 are order-dependent (shared first bytes; ordered choice is decisive)","rule cen_cenelec.fragment_identifier: branches 1 and 2 are order-dependent (shared first bytes; ordered choice is decisive)","rule cen_cenelec.identifier: branches 1 and 2 are order-dependent (shared first bytes; ordered choice is decisive)"]},"default_entry":"identifier","render":{},"derive":{},"tests":[{"entry":"identifier","kind":"accept","input":"EVS-EN 18216:2026","expect":{}},{"entry":"identifier","kind":"accept","input":"EVS-EN ISO 9001:2015/A1:2024","expect":{}},{"entry":"identifier","kind":"accept","input":"EVS EN 196-1:2016","expect":{}},{"entry":"identifier","kind":"accept","input":"EVS 921:2019","expect":{}},{"entry":"identifier","kind":"accept","input":"EVS-TS 1:2019","expect":{}},{"entry":"identifier","kind":"accept","input":"EVS-TR 1:2019","expect":{}},{"entry":"identifier","kind":"accept","input":"EVS-ISO 9001:2015","expect":{}},{"entry":"identifier","kind":"accept","input":"EVS-IEC 62368-1:2020","expect":{}},{"entry":"identifier","kind":"accept","input":"EVS-EN 1993-1-1:2005+NA:2010","expect":{}},{"entry":"identifier","kind":"accept","input":"EVS-EN 1993-1-1:2005/NA","expect":{}},{"entry":"identifier","kind":"accept","input":"EVS-EN 50581:2012+COR:2015","expect":{}},{"entry":"identifier","kind":"accept","input":"EVS-EN 50581:2012+AC:2015","expect":{}},{"entry":"identifier","kind":"accept","input":"EVS-EN 71-1:2011 AMD1:2014","expect":{}},{"entry":"identifier","kind":"accept","input":"prEVS-EN 100:2026","expect":{}},{"entry":"identifier","kind":"reject","input":"nonsense","expect":{}},{"entry":"cen_cenelec.identifier","kind":"accept","input":"EN 18216:2026","expect":{}},{"entry":"cen_cenelec.identifier","kind":"accept","input":"EN ISO 9001:2015","expect":{}},{"entry":"cen_cenelec.identifier","kind":"accept","input":"CEN/CLC TR 17161:2019","expect":{}},{"entry":"cen_cenelec.identifier","kind":"accept","input":"EN 196-1:2016+A1","expect":{}},{"entry":"cen_cenelec.identifier","kind":"accept","input":"CEN/CLC/ETSI/TR 101551:2026","expect":{}},{"entry":"cen_cenelec.identifier","kind":"accept","input":"EN 302 326-2:2026","expect":{}},{"entry":"cen_cenelec.identifier","kind":"accept","input":"EN 302 326-2 V2.2.1","expect":{}},{"entry":"cen_cenelec.identifier","kind":"accept","input":"EN 302 326 V2.2.1:2026","expect":{}},{"entry":"cen_cenelec.identifier","kind":"accept","input":"EN 302:2026","expect":{}},{"entry":"cen_cenelec.identifier","kind":"reject","input":"nonsense","expect":{}}],"docs":{},"source":"# The EVS national identifier: the national prefix (\"EVS\" / \"prEVS\") over a\n# CEN/CENELEC adoption, an ISO/IEC adoption, or a plain Estonian standard —\n# plus the EVS-list supplements (national annex, corrigendum, AMD amendment)\n# and the language code. The CEN spine is IMPORTED via `use` (TODO 11/C6\n# imports): rules are namespaced cen_cenelec.* while captures keep their\n# contract names.\n#\n# Edition 2: every reference inside a captured body is inlined to raw\n# terms (a rule reference materializes as a named node in the edition-2\n# tree, so only a raw capture binds a scalar span). The branch wrappers\n# (adopted, intl, plain) and the supplement wrappers (evs_amd, evs_cor,\n# na) keep the v1 tree shape and the bindings name the scalar leaves.\n\nuse cen_cenelec\n\ngrammar PubidEvs version \"0.3.0\" edition 2 {\n identifier = {\n [draft_prefix] \"EVS\" evs_separator\n (\n (cen_cenelec.identifier) as adopted\n / (evs_intl) as intl\n / (evs_plain) as plain\n )\n [evs_amd]\n [evs_cor / evs_ac]\n [evs_na]\n }\n\n draft_prefix = \"pr\" as draft_prefix\n evs_separator = (\"-\" / \" \") as evs_separator\n\n # \"EVS-ISO 9001:2015\", \"EVS-IEC 62368-1:2020\" (+ their amendments)\n evs_intl = {\n (\n (((\"ISO\" / \"IEC\") as intl_org) \" \" (1*%x30-39) as number)\n [(\"-\" (1*%x30-39) as part)]\n [(\":\" (4*4%x30-39) as year)]\n )\n }\n # \"EVS 921:2019\", \"EVS-TS 1:2019\", \"EVS-TR 1:2019\"\n evs_plain = {\n ([((\"TS\" / \"TR\") as evs_type) \" \"]) (1*%x30-39) as number [(\":\" (4*4%x30-39) as year)]\n }\n\n # \" AMD1:2014\" / \"+AMD1\" — the AMD amendment spelling; the separator is\n # semantic (list: \"+A full standard plus the amendment\", \"/A only amendment\")\n evs_amd = {\n (\n ((\"+\" as supp_plus / \"/\" as supp_slash / \" \" as supp_space) (\"AMD\" as amd_kind))\n (1*%x30-39) as amd_number\n [(\":\" (4*4%x30-39) as amd_year)]\n ) as evs_amd\n }\n # \"+COR:2015\" / \"/COR\" — the COR spelling (the CEN spine consumes +AC itself)\n evs_cor = {\n (\n ((\"+\" as supp_plus / \"/\" as supp_slash) (\"COR\" as cor_kind))\n [(1*%x30-39) as cor_number]\n [(\":\" (4*4%x30-39) as cor_year)]\n ) as evs_cor\n }\n # \" AC:2015\" — the space-separated AC spelling\n evs_ac = {\n (\n (\" \" as supp_space) (\"AC\" as cor_kind)\n [(1*%x30-39) as cor_number]\n [(\":\" (4*4%x30-39) as cor_year)]\n ) as evs_cor\n }\n # \"+NA:2010\" / \"/NA\" — the national annex\n evs_na = {\n (\n ((\"+\" as supp_plus / \"/\" as supp_slash) \"NA\")\n [(\":\" (4*4%x30-39) as na_year)]\n ) as na\n }\n # The trailing language code (\" et\" / \" en\" / \" et-en\") is extracted by\n # the parse wrapper (Pubid::Evs.parse) BEFORE the grammar runs — the\n # CEN adopted_string is greedy over plain text and would swallow it.\n\n entry identifier: identifier\n\n test {\n accept \"EVS-EN 18216:2026\"\n accept \"EVS-EN ISO 9001:2015/A1:2024\"\n accept \"EVS EN 196-1:2016\"\n accept \"EVS 921:2019\"\n accept \"EVS-TS 1:2019\"\n accept \"EVS-TR 1:2019\"\n accept \"EVS-ISO 9001:2015\"\n accept \"EVS-IEC 62368-1:2020\"\n accept \"EVS-EN 1993-1-1:2005+NA:2010\"\n accept \"EVS-EN 1993-1-1:2005/NA\"\n accept \"EVS-EN 50581:2012+COR:2015\"\n accept \"EVS-EN 50581:2012+AC:2015\"\n accept \"EVS-EN 71-1:2011 AMD1:2014\"\n accept \"prEVS-EN 100:2026\"\n reject \"nonsense\"\n }\n\n bindings identifier {\n # The builder dispatches on the branch and supplement wrappers and\n # reads every leaf from inside them (evs/builder.rb: data[:adopted] is\n # rebuilt by the CEN builder, data[:intl]/data[:plain]/data[:na] are\n # read member-wise) — so all six wrappers bind uncast, the v1 nested\n # shape. Only the two flat spine fields the builder reads directly stay\n # scalar; the branch leaves are nested-only and bind no flat copies.\n draft_prefix -> draft_prefix (string)\n evs_separator -> evs_separator (string)\n adopted -> adopted (raw)\n intl -> intl (raw)\n plain -> plain (raw)\n evs_amd -> evs_amd (raw)\n evs_cor -> evs_cor (raw)\n na -> na (raw)\n }\n}\n","source_hash":"cbedc547a6684aed1abfced213e77a07aed30058fabd037e289b67ac3fcb635f","unicode_tables":"onigmo (Ruby 3.4.8)","compiler_version":"1.3.114","edition":2,"checksum":"sha256:4fdd53d505026bf88856d498100581271978e4e57536fae6adf88c38e83dec79"}
data/data/parg/gost.json CHANGED
@@ -1 +1 @@
1
- {"bindings":null,"version":"0.1.0","grammar":"PubidGost","shape":"parsanol-tree/v2","binding_version":1,"entries":{"identifier":{"root":"identifier","grammar":{"atoms":[{"Entity":{"atom":7}},{"Str":{"pattern":"GOST"}},{"Str":{"pattern":"ГОСТ"}},{"Alternative":{"atoms":[1,2]}},{"Named":{"name":"gost_word","atom":3}},{"Entity":{"atom":6}},{"Str":{"pattern":" "}},{"Sequence":{"atoms":[4,5]}},{"Entity":{"atom":14}},{"Str":{"pattern":"R"}},{"Str":{"pattern":"Р"}},{"Alternative":{"atoms":[9,10]}},{"Named":{"name":"scope_r","atom":11}},{"Entity":{"atom":6}},{"Sequence":{"atoms":[12,13]}},{"Repetition":{"atom":8,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":33}},{"Entity":{"atom":23}},{"Re":{"pattern":"[\\u0410-\\u042f]"}},{"Re":{"pattern":"[\\u0430-\\u044f]"}},{"Re":{"pattern":"[/]"}},{"Re":{"pattern":"[\\x41-\\x5a]"}},{"Re":{"pattern":"[\\x61-\\x7a]"}},{"Alternative":{"atoms":[18,19,20,21,22]}},{"Repetition":{"atom":17,"min":1,"max":null,"tag":"Repetition"}},{"Entity":{"atom":6}},{"Entity":{"atom":23}},{"Repetition":{"atom":26,"min":1,"max":null,"tag":"Repetition"}},{"Sequence":{"atoms":[25,27]}},{"Repetition":{"atom":28,"min":0,"max":null,"tag":"Repetition"}},{"Sequence":{"atoms":[24,29]}},{"Named":{"name":"prefix_text","atom":30}},{"Entity":{"atom":6}},{"Sequence":{"atoms":[31,32]}},{"Repetition":{"atom":16,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":55}},{"Entity":{"atom":37}},{"Re":{"pattern":"[\\x30-\\x39]"}},{"Repetition":{"atom":36,"min":1,"max":null,"tag":"Repetition"}},{"Entity":{"atom":40}},{"Str":{"pattern":"."}},{"Entity":{"atom":46}},{"Entity":{"atom":43}},{"Str":{"pattern":"-"}},{"Str":{"pattern":"—"}},{"Str":{"pattern":"–"}},{"Alternative":{"atoms":[42,44,45]}},{"Alternative":{"atoms":[39,41]}},{"Entity":{"atom":6}},{"Repetition":{"atom":48,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":37}},{"Repetition":{"atom":50,"min":1,"max":null,"tag":"Repetition"}},{"Sequence":{"atoms":[47,49,51]}},{"Repetition":{"atom":52,"min":0,"max":null,"tag":"Repetition"}},{"Sequence":{"atoms":[38,53]}},{"Named":{"name":"raw","atom":54}},{"Entity":{"atom":68}},{"Entity":{"atom":6}},{"Repetition":{"atom":57,"min":0,"max":1,"tag":"Maybe"}},{"Repetition":{"atom":58,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":61}},{"Str":{"pattern":"/"}},{"Entity":{"atom":65}},{"Re":{"pattern":"[\\x01-\\x09]"}},{"Re":{"pattern":"[\\x0b-\\u{10ffff}]"}},{"Alternative":{"atoms":[63,64]}},{"Repetition":{"atom":62,"min":1,"max":null,"tag":"Repetition"}},{"Named":{"name":"adopted_raw","atom":66}},{"Sequence":{"atoms":[59,60,67]}},{"Repetition":{"atom":56,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":82}},{"Entity":{"atom":6}},{"Repetition":{"atom":71,"min":0,"max":1,"tag":"Maybe"}},{"Repetition":{"atom":72,"min":0,"max":1,"tag":"Maybe"}},{"Str":{"pattern":"("}},{"Entity":{"atom":78}},{"Re":{"pattern":"[\\x01-\\x28]"}},{"Re":{"pattern":"[\\x2a-\\u{10ffff}]"}},{"Alternative":{"atoms":[76,77]}},{"Repetition":{"atom":75,"min":1,"max":null,"tag":"Repetition"}},{"Named":{"name":"adopted_reference_raw","atom":79}},{"Str":{"pattern":")"}},{"Sequence":{"atoms":[73,74,80,81]}},{"Repetition":{"atom":70,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[0,15,34,35,69,83]}}],"root":84},"bindings":[]}},"preprocess":{},"tables":{},"lint":{"order_warnings":["rule year_sep_core: branches 2 and 3 are order-dependent (shared first bytes; ordered choice is decisive)","rule any_noln_char: branches 1 and 2 are order-dependent (first set not statically known)","rule no_rparen_char: branches 1 and 2 are order-dependent (first set not statically known)"]},"default_entry":"identifier","render":{},"derive":{},"tests":[{"entry":"identifier","kind":"accept","input":"GOST 12.0.004","expect":{}},{"entry":"identifier","kind":"accept","input":"GOST R 8.568","expect":{}},{"entry":"identifier","kind":"reject","input":"nonsense","expect":{}}],"docs":{},"source":"# Port of lib/pubid/gost/parser.rb — GOST identifiers in Latin and\n# Cyrillic: ГОСТ [Р|R] [copublisher/subtype] <raw>[/adopted|(reference)].\n# prefix_text and raw are captured verbatim; the builder splits them.\n# The Cyrillic character class uses codepoint ranges (%x0410-042F\n# = А-Я, %x0430-044F = а-я), faithful to the source class.\n\ngrammar PubidGost version \"0.1.0\" mode \"v1\" {\n gost_word = (\"GOST\" / \"ГОСТ\") as gost_word space\n scope_r = (\"R\" / \"Р\") as scope_r space\n prefix_char = %x0410-042F / %x0430-044F / %x2F / %x41-5A / %x61-7A\n prefix_text = (1*prefix_char *(space 1*prefix_char)) as prefix_text space\n raw_body = (1*digit *((dot / year_sep_core) [space] 1*digit)) as raw\n year_sep_core = dash / \"—\" / \"–\"\n adopted_part = [[space]] slash (1*any_noln_char) as adopted_raw\n adopted_reference_part = [[space]] \"(\" (1*no_rparen_char) as adopted_reference_raw \")\"\n identifier = gost_word [scope_r] [prefix_text] raw_body [adopted_part] [adopted_reference_part]\n any_noln_char = %x01-09 / %x0B-10FFFF\n no_rparen_char = %x01-28 / %x2A-10FFFF\n digit = %x30-39\n dot = \".\"\n dash = \"-\"\n slash = \"/\"\n space = \" \"\n entry identifier: identifier\n\n test {\n accept \"GOST 12.0.004\"\n accept \"GOST R 8.568\"\n reject \"nonsense\"\n }\n}\n","source_hash":"0674be84f36f09324a5bc1e4f89b7ca8c443b235e80ab52132467c71329433fe","unicode_tables":"onigmo (Ruby 3.4.8)","compiler_version":"1.3.114","edition":1,"checksum":"sha256:08f0057dcb16a36632e7a3b0dc74646b0d3c3246f1bd9c059ad35b72a03376e7"}
1
+ {"bindings":null,"version":"0.1.0","grammar":"PubidGost","shape":"parsanol-tree/v2","binding_version":1,"entries":{"identifier":{"root":"identifier","grammar":{"atoms":[{"Entity":{"atom":7}},{"Str":{"pattern":"GOST"}},{"Str":{"pattern":"ГОСТ"}},{"Alternative":{"atoms":[1,2]}},{"Named":{"name":"gost_word","atom":3}},{"Entity":{"atom":6}},{"Str":{"pattern":" "}},{"Sequence":{"atoms":[4,5]}},{"Entity":{"atom":14}},{"Str":{"pattern":"R"}},{"Str":{"pattern":"Р"}},{"Alternative":{"atoms":[9,10]}},{"Named":{"name":"scope_r","atom":11}},{"Entity":{"atom":6}},{"Sequence":{"atoms":[12,13]}},{"Repetition":{"atom":8,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":33}},{"Entity":{"atom":23}},{"Re":{"pattern":"[\\u0410-\\u042f]"}},{"Re":{"pattern":"[\\u0430-\\u044f]"}},{"Re":{"pattern":"[/]"}},{"Re":{"pattern":"[\\x41-\\x5a]"}},{"Re":{"pattern":"[\\x61-\\x7a]"}},{"Alternative":{"atoms":[18,19,20,21,22]}},{"Repetition":{"atom":17,"min":1,"max":null,"tag":"Repetition"}},{"Entity":{"atom":6}},{"Entity":{"atom":23}},{"Repetition":{"atom":26,"min":1,"max":null,"tag":"Repetition"}},{"Sequence":{"atoms":[25,27]}},{"Repetition":{"atom":28,"min":0,"max":null,"tag":"Repetition"}},{"Sequence":{"atoms":[24,29]}},{"Named":{"name":"prefix_text","atom":30}},{"Entity":{"atom":6}},{"Sequence":{"atoms":[31,32]}},{"Repetition":{"atom":16,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":51}},{"Entity":{"atom":37}},{"Re":{"pattern":"[\\x30-\\x39]"}},{"Repetition":{"atom":36,"min":1,"max":null,"tag":"Repetition"}},{"Str":{"pattern":"."}},{"Str":{"pattern":"-"}},{"Str":{"pattern":"—"}},{"Str":{"pattern":"–"}},{"Alternative":{"atoms":[39,40,41,42]}},{"Entity":{"atom":6}},{"Repetition":{"atom":44,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":37}},{"Repetition":{"atom":46,"min":1,"max":null,"tag":"Repetition"}},{"Sequence":{"atoms":[43,45,47]}},{"Repetition":{"atom":48,"min":0,"max":null,"tag":"Repetition"}},{"Sequence":{"atoms":[38,49]}},{"Named":{"name":"raw","atom":50}},{"Entity":{"atom":65}},{"Entity":{"atom":6}},{"Repetition":{"atom":53,"min":0,"max":1,"tag":"Maybe"}},{"Repetition":{"atom":54,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":57}},{"Str":{"pattern":"/"}},{"Named":{"name":"slash","atom":56}},{"Entity":{"atom":62}},{"Re":{"pattern":"[\\x01-\\x09]"}},{"Re":{"pattern":"[\\x0b-\\u{10ffff}]"}},{"Alternative":{"atoms":[60,61]}},{"Repetition":{"atom":59,"min":1,"max":null,"tag":"Repetition"}},{"Named":{"name":"adopted_raw","atom":63}},{"Sequence":{"atoms":[55,58,64]}},{"Repetition":{"atom":52,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":79}},{"Entity":{"atom":6}},{"Repetition":{"atom":68,"min":0,"max":1,"tag":"Maybe"}},{"Repetition":{"atom":69,"min":0,"max":1,"tag":"Maybe"}},{"Str":{"pattern":"("}},{"Entity":{"atom":75}},{"Re":{"pattern":"[\\x01-\\x28]"}},{"Re":{"pattern":"[\\x2a-\\u{10ffff}]"}},{"Alternative":{"atoms":[73,74]}},{"Repetition":{"atom":72,"min":1,"max":null,"tag":"Repetition"}},{"Named":{"name":"adopted_reference_raw","atom":76}},{"Str":{"pattern":")"}},{"Sequence":{"atoms":[70,71,77,78]}},{"Repetition":{"atom":67,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[0,15,34,35,66,80]}}],"root":81},"bindings":[{"capture":"gost_word","path":"gost_word","type":"string","card":null,"preprocess":null},{"capture":"scope_r","path":"scope_r","type":"string","card":null,"preprocess":null},{"capture":"prefix_text","path":"prefix_text","type":"string","card":null,"preprocess":null},{"capture":"raw","path":"raw","type":"string","card":null,"preprocess":null},{"capture":"adopted_raw","path":"adopted_raw","type":"string","card":null,"preprocess":null},{"capture":"adopted_reference_raw","path":"adopted_reference_raw","type":"string","card":null,"preprocess":null}]}},"preprocess":{},"tables":{},"lint":{"order_warnings":["rule year_sep_core: branches 2 and 3 are order-dependent (shared first bytes; ordered choice is decisive)","rule any_noln_char: branches 1 and 2 are order-dependent (first set not statically known)","rule no_rparen_char: branches 1 and 2 are order-dependent (first set not statically known)"]},"default_entry":"identifier","render":{},"derive":{},"tests":[{"entry":"identifier","kind":"accept","input":"GOST 12.0.004","expect":{}},{"entry":"identifier","kind":"accept","input":"GOST R 8.568","expect":{}},{"entry":"identifier","kind":"reject","input":"nonsense","expect":{}}],"docs":{},"source":"# Port of lib/pubid/gost/parser.rb — GOST identifiers in Latin and\n# Cyrillic: ГОСТ [Р|R] [copublisher/subtype] <raw>[/adopted|(reference)].\n# prefix_text and raw are captured verbatim; the builder splits them.\n# The Cyrillic character class uses codepoint ranges (%x0410-042F\n# = А-Я, %x0430-044F = а-я), faithful to the source class.\n\ngrammar PubidGost version \"0.1.0\" edition 2 {\n gost_word = (\"GOST\" / \"ГОСТ\") as gost_word space\n scope_r = (\"R\" / \"Р\") as scope_r space\n prefix_char = %x0410-042F / %x0430-044F / %x2F / %x41-5A / %x61-7A\n prefix_text = (1*prefix_char *(space 1*prefix_char)) as prefix_text space\n raw_body = (1*digit *((\".\" / \"-\" / \"—\" / \"–\") [space] 1*digit)) as raw\n year_sep_core = dash / \"—\" / \"–\"\n adopted_part = [[space]] slash (1*any_noln_char) as adopted_raw\n adopted_reference_part = [[space]] \"(\" (1*no_rparen_char) as adopted_reference_raw \")\"\n identifier = gost_word [scope_r] [prefix_text] raw_body [adopted_part] [adopted_reference_part]\n any_noln_char = %x01-09 / %x0B-10FFFF\n no_rparen_char = %x01-28 / %x2A-10FFFF\n digit = %x30-39\n dot = \".\"\n dash = \"-\"\n slash = \"/\"\n space = \" \"\n entry identifier: identifier\n\n bindings identifier {\n gost_word -> gost_word (string)\n scope_r -> scope_r (string)\n prefix_text -> prefix_text (string)\n raw -> raw (string)\n adopted_raw -> adopted_raw (string)\n adopted_reference_raw -> adopted_reference_raw (string)\n }\n\n\n test {\n accept \"GOST 12.0.004\"\n accept \"GOST R 8.568\"\n reject \"nonsense\"\n }\n}\n","source_hash":"d067829f030f27bd387b4c40859702a42c66f236bef5db7b276162982175c3f4","unicode_tables":"onigmo (Ruby 3.4.8)","compiler_version":"1.3.114","edition":2,"checksum":"sha256:7b8220c982fc764365cd9a84f72fad328c4a9d44b13e75a8c94ead7653f34dab"}
data/data/parg/iana.json CHANGED
@@ -1 +1 @@
1
- {"bindings":null,"version":"0.1.0","grammar":"PubidIana","shape":"parsanol-tree/v2","binding_version":1,"entries":{"identifier":{"root":"identifier","grammar":{"atoms":[{"Str":{"pattern":"IANA "}},{"Repetition":{"atom":0,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":11}},{"Entity":{"atom":10}},{"Re":{"pattern":"[\\x30-\\x39]"}},{"Re":{"pattern":"[\\x41-\\x5a]"}},{"Re":{"pattern":"[\\x61-\\x7a]"}},{"Re":{"pattern":"[.]"}},{"Re":{"pattern":"[_]"}},{"Re":{"pattern":"[\\-]"}},{"Alternative":{"atoms":[4,5,6,7,8,9]}},{"Repetition":{"atom":3,"min":1,"max":null,"tag":"Repetition"}},{"Named":{"name":"registry","atom":2}},{"Entity":{"atom":14}},{"Str":{"pattern":"/"}},{"Entity":{"atom":11}},{"Named":{"name":"sub_registry","atom":15}},{"Sequence":{"atoms":[13,16]}},{"Repetition":{"atom":17,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[1,12,18]}}],"root":19},"bindings":[]}},"preprocess":{},"tables":{},"lint":{"order_warnings":[]},"default_entry":"identifier","render":{},"derive":{},"tests":[{"entry":"identifier","kind":"accept","input":"IANA media-types","expect":{}},{"entry":"identifier","kind":"accept","input":"media-types/application","expect":{}},{"entry":"identifier","kind":"reject","input":"no sense","expect":{}}],"docs":{},"source":"# Port of lib/pubid/iana/parser.rb: \"IANA <slug>[/<sub-slug>]\", the\n# optional prefix consumed and discarded.\n\ngrammar PubidIana version \"0.1.0\" mode \"v1\" {\n slug_char = %x30-39 / %x41-5A / %x61-7A / %x2E / %x5F / %x2D\n slug = 1*slug_char\n identifier = [\"IANA \"] slug as registry [slash slug as sub_registry]\n slash = \"/\"\n entry identifier: identifier\n\n test {\n accept \"IANA media-types\"\n accept \"media-types/application\"\n reject \"no sense\"\n }\n}\n","source_hash":"619f4f193b102765af81a143eb5aee3b1cff3ae6a0f9e5e07649f3ac4b73d1ab","unicode_tables":"onigmo (Ruby 3.4.8)","compiler_version":"1.3.114","edition":1,"checksum":"sha256:205c0460ddaead258a8d33d8e4cd81858a3fdc9d1b2552b11e55bc4fc9b99645"}
1
+ {"bindings":null,"version":"0.1.0","grammar":"PubidIana","shape":"parsanol-tree/v2","binding_version":1,"entries":{"identifier":{"root":"identifier","grammar":{"atoms":[{"Str":{"pattern":"IANA "}},{"Repetition":{"atom":0,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":9}},{"Re":{"pattern":"[\\x30-\\x39]"}},{"Re":{"pattern":"[\\x41-\\x5a]"}},{"Re":{"pattern":"[\\x61-\\x7a]"}},{"Re":{"pattern":"[.]"}},{"Re":{"pattern":"[_]"}},{"Re":{"pattern":"[\\-]"}},{"Alternative":{"atoms":[3,4,5,6,7,8]}},{"Repetition":{"atom":2,"min":1,"max":null,"tag":"Repetition"}},{"Named":{"name":"registry","atom":10}},{"Entity":{"atom":13}},{"Str":{"pattern":"/"}},{"Named":{"name":"slash","atom":12}},{"Entity":{"atom":9}},{"Repetition":{"atom":15,"min":1,"max":null,"tag":"Repetition"}},{"Named":{"name":"sub_registry","atom":16}},{"Sequence":{"atoms":[14,17]}},{"Repetition":{"atom":18,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[1,11,19]}}],"root":20},"bindings":[{"capture":"registry","path":"registry","type":"string","card":null,"preprocess":null},{"capture":"sub_registry","path":"sub_registry","type":"string","card":null,"preprocess":null}]}},"preprocess":{},"tables":{},"lint":{"order_warnings":[]},"default_entry":"identifier","render":{},"derive":{},"tests":[{"entry":"identifier","kind":"accept","input":"IANA media-types","expect":{}},{"entry":"identifier","kind":"accept","input":"media-types/application","expect":{}},{"entry":"identifier","kind":"reject","input":"no sense","expect":{}}],"docs":{},"source":"# Port of lib/pubid/iana/parser.rb: \"IANA <slug>[/<sub-slug>]\", the\n# optional prefix consumed and discarded.\n\ngrammar PubidIana version \"0.1.0\" edition 2 {\n slug_char = %x30-39 / %x41-5A / %x61-7A / %x2E / %x5F / %x2D\n slug = 1*slug_char\n identifier = [\"IANA \"] 1*slug_char as registry [slash 1*slug_char as sub_registry]\n slash = \"/\"\n entry identifier: identifier\n\n bindings identifier {\n registry -> registry (string)\n sub_registry -> sub_registry (string)\n }\n\n\n test {\n accept \"IANA media-types\"\n accept \"media-types/application\"\n reject \"no sense\"\n }\n}\n","source_hash":"c2633424d33a30d370e12141700d25ef4124f5dc49a565da404dbf7da0bffb21","unicode_tables":"onigmo (Ruby 3.4.8)","compiler_version":"1.3.114","edition":2,"checksum":"sha256:96a166d7ec2855a592f9de2222b339790cdb0182a0ffaac4788a62556b4b53ca"}
data/data/parg/idf.json CHANGED
@@ -1 +1 @@
1
- {"bindings":null,"version":"0.1.0","grammar":"PubidIdf","shape":"parsanol-tree/v2","binding_version":1,"entries":{"identifier":{"root":"identifier","grammar":{"atoms":[{"Entity":{"atom":169}},{"Entity":{"atom":135}},{"Entity":{"atom":120}},{"Entity":{"atom":5}},{"Str":{"pattern":"IDF"}},{"Named":{"name":"publisher","atom":4}},{"Entity":{"atom":7}},{"Str":{"pattern":" "}},{"Repetition":{"atom":6,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":10}},{"Str":{"pattern":"/"}},{"Repetition":{"atom":9,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":48}},{"Str":{"pattern":"AWI RM"}},{"Str":{"pattern":"PRF RM"}},{"Str":{"pattern":"PWI RM"}},{"Str":{"pattern":"CD RM"}},{"Str":{"pattern":"NP RM"}},{"Str":{"pattern":"WD RM"}},{"Str":{"pattern":"FDIS"}},{"Str":{"pattern":"FDRM"}},{"Str":{"pattern":"NWIP"}},{"Str":{"pattern":"PDRM"}},{"Str":{"pattern":"WDAR"}},{"Str":{"pattern":"AMD"}},{"Str":{"pattern":"AWI"}},{"Str":{"pattern":"COR"}},{"Str":{"pattern":"DIS"}},{"Str":{"pattern":"DRM"}},{"Str":{"pattern":"FCD"}},{"Str":{"pattern":"FPD"}},{"Str":{"pattern":"Fpr"}},{"Str":{"pattern":"PRF"}},{"Str":{"pattern":"PWI"}},{"Str":{"pattern":"WDA"}},{"Str":{"pattern":"WDR"}},{"Str":{"pattern":"CD"}},{"Str":{"pattern":"NP"}},{"Str":{"pattern":"RM"}},{"Str":{"pattern":"WD"}},{"Alternative":{"atoms":[13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39]}},{"Named":{"name":"type_with_stage","atom":40}},{"Entity":{"atom":43}},{"Re":{"pattern":"[\\x30-\\x39]"}},{"Named":{"name":"stage_iteration","atom":42}},{"Entity":{"atom":7}},{"Sequence":{"atoms":[44,45]}},{"Repetition":{"atom":46,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[41,47]}},{"Repetition":{"atom":12,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":7}},{"Repetition":{"atom":50,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":119}},{"Entity":{"atom":80}},{"Entity":{"atom":61}},{"Entity":{"atom":60}},{"Re":{"pattern":"[\\x30-\\x39]"}},{"Re":{"pattern":"[\\x41-\\x5a]"}},{"Re":{"pattern":"[\\x61-\\x7a]"}},{"Re":{"pattern":"[_]"}},{"Alternative":{"atoms":[56,57,58,59]}},{"Repetition":{"atom":55,"min":1,"max":5,"tag":"Repetition"}},{"Entity":{"atom":77}},{"Entity":{"atom":67}},{"Str":{"pattern":"-"}},{"Str":{"pattern":"‑"}},{"Str":{"pattern":"‐"}},{"Alternative":{"atoms":[64,65,66]}},{"Entity":{"atom":7}},{"Repetition":{"atom":68,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":60}},{"Repetition":{"atom":70,"min":1,"max":null,"tag":"Repetition"}},{"Entity":{"atom":67}},{"Entity":{"atom":60}},{"Repetition":{"atom":73,"min":1,"max":null,"tag":"Repetition"}},{"Sequence":{"atoms":[72,74]}},{"Repetition":{"atom":75,"min":0,"max":1,"tag":"Repetition"}},{"Sequence":{"atoms":[63,69,71,76]}},{"Repetition":{"atom":62,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[54,78]}},{"Named":{"name":"number_with_part","atom":79}},{"Entity":{"atom":86}},{"Entity":{"atom":83}},{"Str":{"pattern":"."}},{"Entity":{"atom":43}},{"Named":{"name":"stage_iteration","atom":84}},{"Sequence":{"atoms":[82,85]}},{"Repetition":{"atom":81,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":7}},{"Repetition":{"atom":88,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":91}},{"Str":{"pattern":":"}},{"Entity":{"atom":116}},{"Entity":{"atom":102}},{"Entity":{"atom":97}},{"Str":{"pattern":"19"}},{"Str":{"pattern":"20"}},{"Alternative":{"atoms":[95,96]}},{"Entity":{"atom":43}},{"Repetition":{"atom":98,"min":2,"max":null,"tag":"Repetition"}},{"Entity":{"atom":43}},{"Lookahead":{"atom":100,"positive":false}},{"Sequence":{"atoms":[94,99,101]}},{"Entity":{"atom":67}},{"Entity":{"atom":106}},{"Entity":{"atom":43}},{"Repetition":{"atom":105,"min":2,"max":null,"tag":"Repetition"}},{"Sequence":{"atoms":[103,104]}},{"Repetition":{"atom":107,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":67}},{"Entity":{"atom":112}},{"Entity":{"atom":43}},{"Repetition":{"atom":111,"min":2,"max":null,"tag":"Repetition"}},{"Sequence":{"atoms":[109,110]}},{"Repetition":{"atom":113,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[93,108,114]}},{"Named":{"name":"date","atom":115}},{"Sequence":{"atoms":[90,92]}},{"Repetition":{"atom":117,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[53,87,89,118]}},{"Sequence":{"atoms":[3,8,11,49,51,52]}},{"Named":{"name":"base","atom":2}},{"Entity":{"atom":7}},{"Repetition":{"atom":122,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":10}},{"Entity":{"atom":7}},{"Repetition":{"atom":125,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":131}},{"Str":{"pattern":"AMD"}},{"Str":{"pattern":"COR"}},{"Alternative":{"atoms":[128,129]}},{"Named":{"name":"type_with_stage","atom":130}},{"Entity":{"atom":7}},{"Repetition":{"atom":132,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":119}},{"Sequence":{"atoms":[121,123,124,126,127,133,134]}},{"Entity":{"atom":168}},{"Entity":{"atom":7}},{"Repetition":{"atom":137,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":162}},{"Str":{"pattern":"("}},{"Entity":{"atom":142}},{"Re":{"pattern":"[\\x61-\\x7a]"}},{"Repetition":{"atom":141,"min":1,"max":null,"tag":"Repetition"}},{"Str":{"pattern":","}},{"Repetition":{"atom":144,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[143,145]}},{"Entity":{"atom":154}},{"Re":{"pattern":"[E]"}},{"Re":{"pattern":"[F]"}},{"Re":{"pattern":"[A]"}},{"Re":{"pattern":"[R]"}},{"Re":{"pattern":"[D]"}},{"Re":{"pattern":"[S]"}},{"Alternative":{"atoms":[148,149,150,151,152,153]}},{"Entity":{"atom":10}},{"Repetition":{"atom":155,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[147,156]}},{"Alternative":{"atoms":[146,157]}},{"Repetition":{"atom":158,"min":0,"max":null,"tag":"Repetition"}},{"Named":{"name":"languages","atom":159}},{"Str":{"pattern":")"}},{"Sequence":{"atoms":[140,160,161]}},{"Repetition":{"atom":139,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":166}},{"Str":{"pattern":"(all parts)"}},{"Named":{"name":"all_parts","atom":165}},{"Repetition":{"atom":164,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[138,163,167]}},{"Sequence":{"atoms":[1,136]}},{"Entity":{"atom":173}},{"Entity":{"atom":120}},{"Entity":{"atom":168}},{"Sequence":{"atoms":[171,172]}},{"Alternative":{"atoms":[0,170]}}],"root":174},"bindings":[]}},"preprocess":{},"tables":{"idf_typed_stages":{"file":"idf_typed_stages.yaml","rows":[{"abbr":"PWI RM"},{"abbr":"NP RM"},{"abbr":"AWI RM"},{"abbr":"WD RM"},{"abbr":"CD RM"},{"abbr":"PDRM"},{"abbr":"DRM"},{"abbr":"FDRM"},{"abbr":"PRF RM"},{"abbr":"RM"},{"abbr":"AMD"},{"abbr":"COR"},{"abbr":"PWI"},{"abbr":"NP"},{"abbr":"NWIP"},{"abbr":"AWI"},{"abbr":"WD"},{"abbr":"CD"},{"abbr":"FCD"},{"abbr":"DIS"},{"abbr":"FPD"},{"abbr":"FDIS"},{"abbr":"PRF"},{"abbr":"Fpr"},{"abbr":"WDR"},{"abbr":"WDA"},{"abbr":"WDAR"}]},"idf_typed_stages_supplements":{"file":"idf_typed_stages_supplements.yaml","rows":[{"abbr":"AMD"},{"abbr":"COR"}]}},"lint":{"order_warnings":["rule dash: branches 2 and 3 are order-dependent (shared first bytes; ordered choice is decisive)","rule identifier: branches 1 and 2 are order-dependent (shared first bytes; ordered choice is decisive)"]},"default_entry":"identifier","render":{},"derive":{},"tests":[],"docs":{},"source":"# Port of lib/pubid/idf/parser.rb: IDF identifiers and their\n# supplements. The ISO joint form (ISO 5537|IDF 26) inlines these rules\n# as idf_* in iso.pg.\n\ngrammar PubidIdf version \"0.1.0\" mode \"v1\" {\n digit = %x30-39\n word_char = %x30-39 / %x41-5A / %x61-7A / %x5F\n dash = \"-\" / \"‑\" / \"‐\"\n dot = \".\"\n slash = \"/\"\n space = \" \"\n colon = \":\"\n letter = %x41-5A / %x61-7A\n lower = %x61-7A\n century = \"19\" / \"20\"\n year_digits = century 2*digit !digit\n month_digits = 2*digit\n day_digits = 2*digit\n publisher = \"IDF\" as publisher\n number = 1*5word_char\n part_and_subpart = dash [space] 1*word_char *1(dash 1*word_char)\n number_with_part = (number [part_and_subpart]) as number_with_part\n date = (year_digits [(dash month_digits)] [(dash day_digits)]) as date\n stage_iteration = dot digit as stage_iteration\n second_part = number_with_part [stage_iteration] [space] [(colon date)]\n all_parts = \"(all parts)\" as all_parts\n language = \"(\" *(1*lower [\",\"] / (one_of_efards [slash])) as languages \")\"\n one_of_efards = %x45 / %x46 / %x41 / %x52 / %x44 / %x53\n third_part = [space] [language] [all_parts]\n identifier_publisher_no_third = publisher [space] [slash] [type_with_stage] [space] second_part\n identifier_publisher = identifier_publisher_no_third third_part\n type_with_stage = alt from_table \"idf_typed_stages\" column \"abbr\" as type_with_stage [digit as stage_iteration space]\n supplement_type_with_stage = alt from_table \"idf_typed_stages_supplements\" column \"abbr\" as type_with_stage\n supplement_identifier_no_third = (identifier_publisher_no_third as base) [space] slash [space] supplement_type_with_stage [space] second_part\n supplement_identifier = supplement_identifier_no_third third_part\n identifier = supplement_identifier / identifier_publisher\n\n entry identifier: identifier\n}\n","source_hash":"61aadcf431410259d884897cc87e4930e8936794a3bd99f941c386753e29991d","unicode_tables":"onigmo (Ruby 3.4.8)","compiler_version":"1.3.114","edition":1,"checksum":"sha256:982485cb6a5d4aa4858005fff792e5c5da8bc9fe31591bb34a32ebcaef29001b"}
1
+ {"bindings":null,"version":"0.1.0","grammar":"PubidIdf","shape":"parsanol-tree/v2","binding_version":1,"entries":{"identifier":{"root":"identifier","grammar":{"atoms":[{"Entity":{"atom":226}},{"Entity":{"atom":191}},{"Entity":{"atom":116}},{"Entity":{"atom":5}},{"Str":{"pattern":"IDF"}},{"Named":{"name":"publisher","atom":4}},{"Str":{"pattern":" "}},{"Repetition":{"atom":6,"min":0,"max":1,"tag":"Maybe"}},{"Str":{"pattern":"/"}},{"Repetition":{"atom":8,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":46}},{"Str":{"pattern":"AWI RM"}},{"Str":{"pattern":"PRF RM"}},{"Str":{"pattern":"PWI RM"}},{"Str":{"pattern":"CD RM"}},{"Str":{"pattern":"NP RM"}},{"Str":{"pattern":"WD RM"}},{"Str":{"pattern":"FDIS"}},{"Str":{"pattern":"FDRM"}},{"Str":{"pattern":"NWIP"}},{"Str":{"pattern":"PDRM"}},{"Str":{"pattern":"WDAR"}},{"Str":{"pattern":"AMD"}},{"Str":{"pattern":"AWI"}},{"Str":{"pattern":"COR"}},{"Str":{"pattern":"DIS"}},{"Str":{"pattern":"DRM"}},{"Str":{"pattern":"FCD"}},{"Str":{"pattern":"FPD"}},{"Str":{"pattern":"Fpr"}},{"Str":{"pattern":"PRF"}},{"Str":{"pattern":"PWI"}},{"Str":{"pattern":"WDA"}},{"Str":{"pattern":"WDR"}},{"Str":{"pattern":"CD"}},{"Str":{"pattern":"NP"}},{"Str":{"pattern":"RM"}},{"Str":{"pattern":"WD"}},{"Alternative":{"atoms":[11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37]}},{"Named":{"name":"base_type_with_stage","atom":38}},{"Entity":{"atom":41}},{"Re":{"pattern":"[\\x30-\\x39]"}},{"Named":{"name":"base_stage_iteration","atom":40}},{"Str":{"pattern":" "}},{"Sequence":{"atoms":[42,43]}},{"Repetition":{"atom":44,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[39,45]}},{"Repetition":{"atom":10,"min":0,"max":1,"tag":"Maybe"}},{"Str":{"pattern":" "}},{"Repetition":{"atom":48,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":115}},{"Entity":{"atom":83}},{"Re":{"pattern":"[\\x30-\\x39]"}},{"Re":{"pattern":"[\\x41-\\x5a]"}},{"Re":{"pattern":"[\\x61-\\x7a]"}},{"Re":{"pattern":"[_]"}},{"Alternative":{"atoms":[52,53,54,55]}},{"Repetition":{"atom":56,"min":1,"max":5,"tag":"Repetition"}},{"Entity":{"atom":62}},{"Str":{"pattern":"-"}},{"Str":{"pattern":"‑"}},{"Str":{"pattern":"‐"}},{"Alternative":{"atoms":[59,60,61]}},{"Str":{"pattern":" "}},{"Repetition":{"atom":63,"min":0,"max":1,"tag":"Maybe"}},{"Re":{"pattern":"[\\x30-\\x39]"}},{"Re":{"pattern":"[\\x41-\\x5a]"}},{"Re":{"pattern":"[\\x61-\\x7a]"}},{"Re":{"pattern":"[_]"}},{"Alternative":{"atoms":[65,66,67,68]}},{"Repetition":{"atom":69,"min":1,"max":null,"tag":"Repetition"}},{"Entity":{"atom":62}},{"Re":{"pattern":"[\\x30-\\x39]"}},{"Re":{"pattern":"[\\x41-\\x5a]"}},{"Re":{"pattern":"[\\x61-\\x7a]"}},{"Re":{"pattern":"[_]"}},{"Alternative":{"atoms":[72,73,74,75]}},{"Repetition":{"atom":76,"min":1,"max":null,"tag":"Repetition"}},{"Sequence":{"atoms":[71,77]}},{"Repetition":{"atom":78,"min":0,"max":1,"tag":"Repetition"}},{"Sequence":{"atoms":[58,64,70,79]}},{"Repetition":{"atom":80,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[57,81]}},{"Named":{"name":"base_number_with_part","atom":82}},{"Entity":{"atom":88}},{"Str":{"pattern":"."}},{"Entity":{"atom":41}},{"Named":{"name":"base_stage_iteration","atom":86}},{"Sequence":{"atoms":[85,87]}},{"Repetition":{"atom":84,"min":0,"max":1,"tag":"Maybe"}},{"Str":{"pattern":" "}},{"Repetition":{"atom":90,"min":0,"max":1,"tag":"Maybe"}},{"Str":{"pattern":":"}},{"Entity":{"atom":112}},{"Str":{"pattern":"19"}},{"Str":{"pattern":"20"}},{"Alternative":{"atoms":[94,95]}},{"Entity":{"atom":41}},{"Repetition":{"atom":97,"min":2,"max":null,"tag":"Repetition"}},{"Entity":{"atom":41}},{"Lookahead":{"atom":99,"positive":false}},{"Entity":{"atom":62}},{"Entity":{"atom":41}},{"Repetition":{"atom":102,"min":2,"max":null,"tag":"Repetition"}},{"Sequence":{"atoms":[101,103]}},{"Repetition":{"atom":104,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":62}},{"Entity":{"atom":41}},{"Repetition":{"atom":107,"min":2,"max":null,"tag":"Repetition"}},{"Sequence":{"atoms":[106,108]}},{"Repetition":{"atom":109,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[96,98,100,105,110]}},{"Named":{"name":"base_date","atom":111}},{"Sequence":{"atoms":[92,93]}},{"Repetition":{"atom":113,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[51,89,91,114]}},{"Sequence":{"atoms":[3,7,9,47,49,50]}},{"Str":{"pattern":" "}},{"Repetition":{"atom":117,"min":0,"max":1,"tag":"Maybe"}},{"Str":{"pattern":"/"}},{"Str":{"pattern":" "}},{"Repetition":{"atom":120,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":126}},{"Str":{"pattern":"AMD"}},{"Str":{"pattern":"COR"}},{"Alternative":{"atoms":[123,124]}},{"Named":{"name":"type_with_stage","atom":125}},{"Str":{"pattern":" "}},{"Repetition":{"atom":127,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":190}},{"Entity":{"atom":158}},{"Re":{"pattern":"[\\x30-\\x39]"}},{"Re":{"pattern":"[\\x41-\\x5a]"}},{"Re":{"pattern":"[\\x61-\\x7a]"}},{"Re":{"pattern":"[_]"}},{"Alternative":{"atoms":[131,132,133,134]}},{"Repetition":{"atom":135,"min":1,"max":5,"tag":"Repetition"}},{"Entity":{"atom":62}},{"Str":{"pattern":" "}},{"Repetition":{"atom":138,"min":0,"max":1,"tag":"Maybe"}},{"Re":{"pattern":"[\\x30-\\x39]"}},{"Re":{"pattern":"[\\x41-\\x5a]"}},{"Re":{"pattern":"[\\x61-\\x7a]"}},{"Re":{"pattern":"[_]"}},{"Alternative":{"atoms":[140,141,142,143]}},{"Repetition":{"atom":144,"min":1,"max":null,"tag":"Repetition"}},{"Entity":{"atom":62}},{"Re":{"pattern":"[\\x30-\\x39]"}},{"Re":{"pattern":"[\\x41-\\x5a]"}},{"Re":{"pattern":"[\\x61-\\x7a]"}},{"Re":{"pattern":"[_]"}},{"Alternative":{"atoms":[147,148,149,150]}},{"Repetition":{"atom":151,"min":1,"max":null,"tag":"Repetition"}},{"Sequence":{"atoms":[146,152]}},{"Repetition":{"atom":153,"min":0,"max":1,"tag":"Repetition"}},{"Sequence":{"atoms":[137,139,145,154]}},{"Repetition":{"atom":155,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[136,156]}},{"Named":{"name":"number_with_part","atom":157}},{"Entity":{"atom":163}},{"Str":{"pattern":"."}},{"Entity":{"atom":41}},{"Named":{"name":"stage_iteration","atom":161}},{"Sequence":{"atoms":[160,162]}},{"Repetition":{"atom":159,"min":0,"max":1,"tag":"Maybe"}},{"Str":{"pattern":" "}},{"Repetition":{"atom":165,"min":0,"max":1,"tag":"Maybe"}},{"Str":{"pattern":":"}},{"Entity":{"atom":187}},{"Str":{"pattern":"19"}},{"Str":{"pattern":"20"}},{"Alternative":{"atoms":[169,170]}},{"Entity":{"atom":41}},{"Repetition":{"atom":172,"min":2,"max":null,"tag":"Repetition"}},{"Entity":{"atom":41}},{"Lookahead":{"atom":174,"positive":false}},{"Entity":{"atom":62}},{"Entity":{"atom":41}},{"Repetition":{"atom":177,"min":2,"max":null,"tag":"Repetition"}},{"Sequence":{"atoms":[176,178]}},{"Repetition":{"atom":179,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":62}},{"Entity":{"atom":41}},{"Repetition":{"atom":182,"min":2,"max":null,"tag":"Repetition"}},{"Sequence":{"atoms":[181,183]}},{"Repetition":{"atom":184,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[171,173,175,180,185]}},{"Named":{"name":"date","atom":186}},{"Sequence":{"atoms":[167,168]}},{"Repetition":{"atom":188,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[130,164,166,189]}},{"Sequence":{"atoms":[2,118,119,121,122,128,129]}},{"Entity":{"atom":225}},{"Str":{"pattern":" "}},{"Repetition":{"atom":193,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":219}},{"Str":{"pattern":"("}},{"Entity":{"atom":198}},{"Re":{"pattern":"[\\x61-\\x7a]"}},{"Repetition":{"atom":197,"min":1,"max":null,"tag":"Repetition"}},{"Str":{"pattern":","}},{"Repetition":{"atom":200,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[199,201]}},{"Entity":{"atom":210}},{"Re":{"pattern":"[E]"}},{"Re":{"pattern":"[F]"}},{"Re":{"pattern":"[A]"}},{"Re":{"pattern":"[R]"}},{"Re":{"pattern":"[D]"}},{"Re":{"pattern":"[S]"}},{"Alternative":{"atoms":[204,205,206,207,208,209]}},{"Entity":{"atom":212}},{"Str":{"pattern":"/"}},{"Repetition":{"atom":211,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[203,213]}},{"Alternative":{"atoms":[202,214]}},{"Repetition":{"atom":215,"min":0,"max":null,"tag":"Repetition"}},{"Named":{"name":"languages","atom":216}},{"Str":{"pattern":")"}},{"Sequence":{"atoms":[196,217,218]}},{"Repetition":{"atom":195,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":223}},{"Str":{"pattern":"(all parts)"}},{"Named":{"name":"all_parts","atom":222}},{"Repetition":{"atom":221,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[194,220,224]}},{"Sequence":{"atoms":[1,192]}},{"Entity":{"atom":286}},{"Entity":{"atom":284}},{"Entity":{"atom":5}},{"Str":{"pattern":" "}},{"Repetition":{"atom":230,"min":0,"max":1,"tag":"Maybe"}},{"Str":{"pattern":"/"}},{"Repetition":{"atom":232,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":269}},{"Str":{"pattern":"AWI RM"}},{"Str":{"pattern":"PRF RM"}},{"Str":{"pattern":"PWI RM"}},{"Str":{"pattern":"CD RM"}},{"Str":{"pattern":"NP RM"}},{"Str":{"pattern":"WD RM"}},{"Str":{"pattern":"FDIS"}},{"Str":{"pattern":"FDRM"}},{"Str":{"pattern":"NWIP"}},{"Str":{"pattern":"PDRM"}},{"Str":{"pattern":"WDAR"}},{"Str":{"pattern":"AMD"}},{"Str":{"pattern":"AWI"}},{"Str":{"pattern":"COR"}},{"Str":{"pattern":"DIS"}},{"Str":{"pattern":"DRM"}},{"Str":{"pattern":"FCD"}},{"Str":{"pattern":"FPD"}},{"Str":{"pattern":"Fpr"}},{"Str":{"pattern":"PRF"}},{"Str":{"pattern":"PWI"}},{"Str":{"pattern":"WDA"}},{"Str":{"pattern":"WDR"}},{"Str":{"pattern":"CD"}},{"Str":{"pattern":"NP"}},{"Str":{"pattern":"RM"}},{"Str":{"pattern":"WD"}},{"Alternative":{"atoms":[235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261]}},{"Named":{"name":"type_with_stage","atom":262}},{"Entity":{"atom":41}},{"Named":{"name":"stage_iteration","atom":264}},{"Str":{"pattern":" "}},{"Sequence":{"atoms":[265,266]}},{"Repetition":{"atom":267,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[263,268]}},{"Repetition":{"atom":234,"min":0,"max":1,"tag":"Maybe"}},{"Str":{"pattern":" "}},{"Repetition":{"atom":271,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":283}},{"Entity":{"atom":158}},{"Entity":{"atom":163}},{"Repetition":{"atom":275,"min":0,"max":1,"tag":"Maybe"}},{"Str":{"pattern":" "}},{"Repetition":{"atom":277,"min":0,"max":1,"tag":"Maybe"}},{"Str":{"pattern":":"}},{"Entity":{"atom":187}},{"Sequence":{"atoms":[279,280]}},{"Repetition":{"atom":281,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[274,276,278,282]}},{"Sequence":{"atoms":[229,231,233,270,272,273]}},{"Entity":{"atom":225}},{"Sequence":{"atoms":[228,285]}},{"Alternative":{"atoms":[0,227]}}],"root":287},"bindings":[{"capture":"publisher","path":"publisher","type":"string","card":null,"preprocess":null},{"capture":"number_with_part","path":"number_with_part","type":"string","card":null,"preprocess":null},{"capture":"base_number_with_part","path":"base_number_with_part","type":"string","card":null,"preprocess":null},{"capture":"date","path":"date","type":"string","card":null,"preprocess":null},{"capture":"base_date","path":"base_date","type":"string","card":null,"preprocess":null},{"capture":"stage_iteration","path":"stage_iteration","type":"string","card":null,"preprocess":null},{"capture":"base_stage_iteration","path":"base_stage_iteration","type":"string","card":null,"preprocess":null},{"capture":"type_with_stage","path":"type_with_stage","type":"string","card":null,"preprocess":null},{"capture":"base_type_with_stage","path":"base_type_with_stage","type":"string","card":null,"preprocess":null},{"capture":"all_parts","path":"all_parts","type":"string","card":null,"preprocess":null},{"capture":"languages","path":"languages","type":"string","card":null,"preprocess":null}]}},"preprocess":{},"tables":{"idf_typed_stages":{"file":"idf_typed_stages.yaml","rows":[{"abbr":"PWI RM"},{"abbr":"NP RM"},{"abbr":"AWI RM"},{"abbr":"WD RM"},{"abbr":"CD RM"},{"abbr":"PDRM"},{"abbr":"DRM"},{"abbr":"FDRM"},{"abbr":"PRF RM"},{"abbr":"RM"},{"abbr":"AMD"},{"abbr":"COR"},{"abbr":"PWI"},{"abbr":"NP"},{"abbr":"NWIP"},{"abbr":"AWI"},{"abbr":"WD"},{"abbr":"CD"},{"abbr":"FCD"},{"abbr":"DIS"},{"abbr":"FPD"},{"abbr":"FDIS"},{"abbr":"PRF"},{"abbr":"Fpr"},{"abbr":"WDR"},{"abbr":"WDA"},{"abbr":"WDAR"}]},"idf_typed_stages_supplements":{"file":"idf_typed_stages_supplements.yaml","rows":[{"abbr":"AMD"},{"abbr":"COR"}]}},"lint":{"order_warnings":["rule dash: branches 2 and 3 are order-dependent (shared first bytes; ordered choice is decisive)","rule identifier: branches 1 and 2 are order-dependent (shared first bytes; ordered choice is decisive)"]},"default_entry":"identifier","render":{},"derive":{},"tests":[],"docs":{},"source":"# Port of lib/pubid/idf/parser.rb: IDF identifiers and their\n# supplements. The ISO joint form (ISO 5537|IDF 26) inlines these rules\n# as idf_* in iso.pg.\n#\n# Edition-2 notes: number_with_part inlines the number and\n# part_and_subpart bodies fully to raw terms at the capture site (a\n# capture wrapping rule refs expands to element hashes, while the\n# inlined body binds as one scalar string). The supplement base wrapper\n# capture drops (the bindings cannot nest); within a supplement the base\n# portion captures under base_* names so the supplement layer keeps the\n# canonical number_with_part/date/type_with_stage captures — the values\n# the builder read at top level — mirroring the csa part_* per-position\n# convention.\n\ngrammar PubidIdf version \"0.1.0\" edition 2 {\n digit = %x30-39\n word_char = %x30-39 / %x41-5A / %x61-7A / %x5F\n dash = \"-\" / \"‑\" / \"‐\"\n dot = \".\"\n slash = \"/\"\n space = \" \"\n colon = \":\"\n letter = %x41-5A / %x61-7A\n lower = %x61-7A\n century = \"19\" / \"20\"\n year_digits = century 2*digit !digit\n month_digits = 2*digit\n day_digits = 2*digit\n publisher = \"IDF\" as publisher\n number_with_part = {\n (\n 1*5(%x30-39 / %x41-5A / %x61-7A / %x5F)\n [\n dash [\" \"]\n 1*(%x30-39 / %x41-5A / %x61-7A / %x5F)\n *1( dash 1*(%x30-39 / %x41-5A / %x61-7A / %x5F) )\n ]\n ) as number_with_part\n }\n date = {\n (\n (\"19\" / \"20\") 2*digit !digit\n [(dash 2*digit)]\n [(dash 2*digit)]\n ) as date\n }\n stage_iteration = \".\" digit as stage_iteration\n second_part = number_with_part [stage_iteration] [\" \"] [( \":\" date )]\n all_parts = \"(all parts)\" as all_parts\n language = \"(\" ( *( 1*lower [\",\"] / ( one_of_efards [slash] ) ) ) as languages \")\"\n one_of_efards = %x45 / %x46 / %x41 / %x52 / %x44 / %x53\n third_part = [\" \"] [language] [all_parts]\n identifier_publisher_no_third = {\n publisher [\" \"] [\"/\"] [type_with_stage] [\" \"] second_part\n }\n identifier_publisher = identifier_publisher_no_third third_part\n type_with_stage = {\n (\n alt from_table \"idf_typed_stages\" column \"abbr\"\n ) as type_with_stage\n [digit as stage_iteration \" \"]\n }\n # Supplement side: the supplement layer keeps the canonical\n # type_with_stage/number_with_part/date captures (what the builder\n # read at top level); its base portion captures under base_* names so\n # the two layers never collapse onto each other.\n supplement_type_with_stage = {\n (\n alt from_table \"idf_typed_stages_supplements\" column \"abbr\"\n ) as type_with_stage\n }\n base_number_with_part = {\n (\n 1*5(%x30-39 / %x41-5A / %x61-7A / %x5F)\n [\n dash [\" \"]\n 1*(%x30-39 / %x41-5A / %x61-7A / %x5F)\n *1( dash 1*(%x30-39 / %x41-5A / %x61-7A / %x5F) )\n ]\n ) as base_number_with_part\n }\n base_date = {\n (\n (\"19\" / \"20\") 2*digit !digit\n [(dash 2*digit)]\n [(dash 2*digit)]\n ) as base_date\n }\n base_stage_iteration = \".\" digit as base_stage_iteration\n base_second_part = base_number_with_part [base_stage_iteration] [\" \"] [( \":\" base_date )]\n base_type_with_stage = {\n (\n alt from_table \"idf_typed_stages\" column \"abbr\"\n ) as base_type_with_stage\n [digit as base_stage_iteration \" \"]\n }\n supplement_base_no_third = {\n publisher [\" \"] [\"/\"] [base_type_with_stage] [\" \"] base_second_part\n }\n supplement_second_part = number_with_part [stage_iteration] [\" \"] [( \":\" date )]\n supplement_identifier_no_third = {\n supplement_base_no_third [\" \"] \"/\" [\" \"] supplement_type_with_stage [\" \"] supplement_second_part\n }\n supplement_identifier = supplement_identifier_no_third third_part\n identifier = supplement_identifier / identifier_publisher\n\n entry identifier: identifier\n\n bindings identifier {\n publisher -> publisher (string)\n number_with_part -> number_with_part (string)\n base_number_with_part -> base_number_with_part (string)\n date -> date (string)\n base_date -> base_date (string)\n stage_iteration -> stage_iteration (string)\n base_stage_iteration -> base_stage_iteration (string)\n type_with_stage -> type_with_stage (string)\n base_type_with_stage -> base_type_with_stage (string)\n all_parts -> all_parts (string)\n languages -> languages (string)\n }\n}\n","source_hash":"adf15539b2c63baa49e70c4ffe48fdbe92a797d5eccb8f47832055a8b16daf16","unicode_tables":"onigmo (Ruby 3.4.8)","compiler_version":"1.3.114","edition":2,"checksum":"sha256:f69e7efbffb4a664e092e17135e77977598e3788e001f7b98c60617278ec0322"}