pubid 2.0.0 → 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.
- checksums.yaml +4 -4
- data/data/parg/adobe.json +1 -1
- data/data/parg/aiee.json +1 -1
- data/data/parg/amca.json +1 -1
- data/data/parg/ansi.json +1 -1
- data/data/parg/api.json +1 -1
- data/data/parg/ashrae.json +1 -1
- data/data/parg/asme.json +1 -1
- data/data/parg/astm.json +1 -1
- data/data/parg/bipm.json +1 -1
- data/data/parg/bsi.json +1 -1
- data/data/parg/calconnect.json +1 -1
- data/data/parg/ccsds.json +1 -1
- data/data/parg/cen_cenelec.json +1 -1
- data/data/parg/cie.json +1 -1
- data/data/parg/csa.json +1 -1
- data/data/parg/doi.json +1 -1
- data/data/parg/easc.json +1 -1
- data/data/parg/ecma.json +1 -1
- data/data/parg/etsi.json +1 -1
- data/data/parg/evs.json +1 -1
- data/data/parg/gb.json +1 -1
- data/data/parg/gost.json +1 -1
- data/data/parg/iala.json +1 -1
- data/data/parg/iana.json +1 -1
- data/data/parg/idf.json +1 -1
- data/data/parg/iec.json +1 -1
- data/data/parg/ieee.json +1 -29571
- data/data/parg/ietf.json +1 -1
- data/data/parg/iho.json +1 -0
- data/data/parg/ire.json +1 -1
- data/data/parg/isbn.json +1 -1
- data/data/parg/iso.json +1 -8510
- data/data/parg/itu.json +1 -1
- data/data/parg/jcgm.json +1 -1
- data/data/parg/jis.json +1 -1
- data/data/parg/nesc.json +1 -1
- data/data/parg/nist.json +1 -9588
- data/data/parg/oasis.json +1 -1
- data/data/parg/ogc.json +1 -1
- data/data/parg/oiml.json +1 -1
- data/data/parg/omg.json +1 -1
- data/data/parg/parg.json +1 -1
- data/data/parg/plateau.json +1 -1
- data/data/parg/sae.json +1 -1
- data/data/parg/tables/typed_stages.yaml +1 -0
- data/data/parg/tgpp.json +1 -1
- data/data/parg/un.json +1 -1
- data/data/parg/w3c.json +1 -1
- data/data/parg/xsf.json +1 -1
- data/lib/pubid/adobe/identifier.rb +1 -1
- data/lib/pubid/adobe/parser.rb +2 -113
- data/lib/pubid/amca/identifiers/base.rb +1 -1
- data/lib/pubid/amca/parser.rb +1 -145
- data/lib/pubid/ansi/identifier.rb +1 -1
- data/lib/pubid/ansi/parser.rb +1 -82
- data/lib/pubid/api/builder.rb +32 -1
- data/lib/pubid/api/identifier.rb +1 -1
- data/lib/pubid/api/parser.rb +1 -131
- data/lib/pubid/ashrae/identifiers/base.rb +1 -1
- data/lib/pubid/ashrae/parser.rb +3 -710
- data/lib/pubid/asme/builder.rb +6 -4
- data/lib/pubid/asme/identifier.rb +1 -2
- data/lib/pubid/asme/parser.rb +1 -328
- data/lib/pubid/astm/builder.rb +12 -3
- data/lib/pubid/astm/identifier.rb +1 -2
- data/lib/pubid/astm/parser.rb +1 -227
- data/lib/pubid/bipm/identifier.rb +8 -1
- data/lib/pubid/bipm/parser.rb +2 -224
- data/lib/pubid/bsi/builder.rb +2 -4
- data/lib/pubid/bsi/parser.rb +1 -666
- data/lib/pubid/bsi/single_identifier.rb +38 -1
- data/lib/pubid/calconnect/identifier.rb +1 -1
- data/lib/pubid/calconnect/parser.rb +2 -40
- data/lib/pubid/ccsds/identifier.rb +1 -1
- data/lib/pubid/ccsds/parser.rb +1 -66
- data/lib/pubid/cen_cenelec/identifier.rb +16 -1
- data/lib/pubid/cen_cenelec/parser.rb +3 -136
- data/lib/pubid/cie/identifier.rb +1 -1
- data/lib/pubid/cie/parser.rb +3 -378
- data/lib/pubid/conformance.rb +1 -1
- data/lib/pubid/csa/builder.rb +41 -18
- data/lib/pubid/csa/identifier.rb +12 -4
- data/lib/pubid/csa/identifiers/amendment.rb +28 -0
- data/lib/pubid/csa/identifiers.rb +1 -0
- data/lib/pubid/csa/parser.rb +16 -397
- data/lib/pubid/doi/identifier.rb +1 -1
- data/lib/pubid/doi/parser.rb +2 -37
- data/lib/pubid/easc/builder.rb +1 -1
- data/lib/pubid/easc/identifier.rb +1 -1
- data/lib/pubid/easc/parser.rb +2 -70
- data/lib/pubid/ecma/CLAUDE.md +8 -1
- data/lib/pubid/ecma/identifier.rb +13 -8
- data/lib/pubid/ecma/parser.rb +2 -54
- data/lib/pubid/ecma/renderer.rb +3 -7
- data/lib/pubid/errors.rb +18 -13
- data/lib/pubid/etsi/builder.rb +8 -5
- data/lib/pubid/etsi/identifiers/base.rb +1 -1
- data/lib/pubid/etsi/parser.rb +1 -132
- data/lib/pubid/evs/identifier.rb +7 -0
- data/lib/pubid/evs/parser.rb +1 -8
- data/lib/pubid/evs.rb +1 -1
- data/lib/pubid/gb/identifier.rb +7 -1
- data/lib/pubid/gb/parser.rb +2 -51
- data/lib/pubid/gost/identifier.rb +9 -1
- data/lib/pubid/gost/parser.rb +4 -81
- data/lib/pubid/iala/parser.rb +2 -121
- data/lib/pubid/iana/identifier.rb +1 -1
- data/lib/pubid/iana/parser.rb +2 -24
- data/lib/pubid/identifier.rb +78 -1
- data/lib/pubid/idf/builder.rb +42 -0
- data/lib/pubid/idf/identifier.rb +1 -1
- data/lib/pubid/idf/parser.rb +1 -137
- data/lib/pubid/idf.rb +1 -2
- data/lib/pubid/iec/builder.rb +158 -50
- data/lib/pubid/iec/identifier.rb +1 -1
- data/lib/pubid/iec/parser.rb +3 -430
- data/lib/pubid/ieee/aiee/identifier.rb +2 -1
- data/lib/pubid/ieee/aiee.rb +0 -1
- data/lib/pubid/ieee/builder.rb +2 -2
- data/lib/pubid/ieee/identifiers/base.rb +1 -1
- data/lib/pubid/ieee/ire/identifier.rb +2 -1
- data/lib/pubid/ieee/ire.rb +0 -1
- data/lib/pubid/ieee/nesc.rb +0 -1
- data/lib/pubid/ieee/parser.rb +1 -1257
- data/lib/pubid/ietf/identifiers/base.rb +17 -1
- data/lib/pubid/ietf/parser.rb +2 -47
- data/lib/pubid/ietf/renderer.rb +17 -2
- data/lib/pubid/iho/CLAUDE.md +89 -0
- data/lib/pubid/iho/builder.rb +4 -1
- data/lib/pubid/iho/identifiers/base.rb +28 -2
- data/lib/pubid/iho/renderer.rb +8 -0
- data/lib/pubid/iho/urn_generator.rb +11 -1
- data/lib/pubid/iho/urn_parser.rb +21 -11
- data/lib/pubid/iho.rb +0 -1
- data/lib/pubid/isbn/identifier.rb +1 -1
- data/lib/pubid/isbn/parser.rb +2 -31
- data/lib/pubid/iso/builder.rb +1 -1
- data/lib/pubid/iso/identifiers/directives.rb +6 -3
- data/lib/pubid/iso/identifiers/guide.rb +6 -3
- data/lib/pubid/iso/identifiers/international_standard.rb +3 -1
- data/lib/pubid/iso/identifiers/international_workshop_agreement.rb +6 -3
- data/lib/pubid/iso/normalizer.rb +1 -1
- data/lib/pubid/iso/parser.rb +1 -539
- data/lib/pubid/iso/supplement_identifier.rb +6 -3
- data/lib/pubid/iso/utilities.rb +4 -5
- data/lib/pubid/iso.rb +1 -19
- data/lib/pubid/itu/builder.rb +36 -20
- data/lib/pubid/itu/identifiers/base.rb +15 -2
- data/lib/pubid/itu/parser.rb +1 -775
- data/lib/pubid/jcgm/builder.rb +35 -0
- data/lib/pubid/jcgm/parser.rb +1 -151
- data/lib/pubid/jcgm.rb +1 -2
- data/lib/pubid/jis/builder.rb +18 -29
- data/lib/pubid/jis/identifier.rb +1 -1
- data/lib/pubid/jis/parser.rb +1 -128
- data/lib/pubid/nist/builder.rb +5 -1
- data/lib/pubid/nist/caster.rb +13 -3
- data/lib/pubid/nist/identifiers/base.rb +37 -2
- data/lib/pubid/nist/identifiers/circular.rb +2 -2
- data/lib/pubid/nist/identifiers/circular_supplement.rb +2 -2
- data/lib/pubid/nist/identifiers/commercial_standards_monthly.rb +2 -2
- data/lib/pubid/nist/identifiers/crpl_report.rb +2 -2
- data/lib/pubid/nist/identifiers/handbook.rb +2 -2
- data/lib/pubid/nist/identifiers/internal_report.rb +2 -2
- data/lib/pubid/nist/identifiers/miscellaneous_publication.rb +2 -2
- data/lib/pubid/nist/identifiers/monograph.rb +2 -2
- data/lib/pubid/nist/identifiers/report.rb +2 -2
- data/lib/pubid/nist/parser.rb +19 -775
- data/lib/pubid/nist/router.rb +4 -1
- data/lib/pubid/nist/supplement_identifier.rb +2 -2
- data/lib/pubid/oasis/identifier.rb +1 -1
- data/lib/pubid/oasis/parser.rb +2 -16
- data/lib/pubid/ogc/identifier.rb +1 -1
- data/lib/pubid/ogc/parser.rb +2 -26
- data/lib/pubid/oiml/identifiers/certification_system.rb +7 -0
- data/lib/pubid/oiml/identifiers/dual_published.rb +2 -2
- data/lib/pubid/oiml/parser.rb +1 -303
- data/lib/pubid/oiml.rb +1 -2
- data/lib/pubid/omg/identifier.rb +6 -1
- data/lib/pubid/omg/parser.rb +2 -76
- data/lib/pubid/parg/artifact.rb +22 -3
- data/lib/pubid/parg/model.rb +98 -0
- data/lib/pubid/parg.rb +1 -0
- data/lib/pubid/parser.rb +5 -4
- data/lib/pubid/parsers/mr_string.rb +1 -1
- data/lib/pubid/plateau/parser.rb +1 -66
- data/lib/pubid/plateau.rb +1 -2
- data/lib/pubid/renderers/directives_renderer.rb +1 -1
- data/lib/pubid/renderers/iwa_renderer.rb +1 -1
- data/lib/pubid/renderers/publisher_stripper.rb +82 -0
- data/lib/pubid/renderers/supplement_renderer.rb +1 -1
- data/lib/pubid/renderers.rb +1 -0
- data/lib/pubid/sae/identifiers/base.rb +1 -1
- data/lib/pubid/sae/parser.rb +1 -48
- data/lib/pubid/tgpp/identifier.rb +1 -1
- data/lib/pubid/tgpp/parser.rb +2 -59
- data/lib/pubid/un/identifier.rb +1 -1
- data/lib/pubid/un/parser.rb +1 -18
- data/lib/pubid/version.rb +1 -1
- data/lib/pubid/w3c/identifier.rb +1 -1
- data/lib/pubid/w3c/parser.rb +2 -27
- data/lib/pubid/xsf/identifier.rb +11 -7
- data/lib/pubid/xsf/parser.rb +3 -31
- data/lib/pubid/xsf/renderer.rb +2 -4
- data/lib/pubid.rb +8 -9
- metadata +15 -25
- data/lib/pubid/ieee/aiee/parser.rb +0 -130
- data/lib/pubid/ieee/ire/parser.rb +0 -109
- data/lib/pubid/ieee/nesc/parser.rb +0 -155
- data/lib/pubid/iho/parser.rb +0 -68
- data/lib/pubid/parser/common_parse_methods.rb +0 -13
- data/lib/pubid/parser/common_parse_rules.rb +0 -56
- data/lib/pubid/parser/grammar.rb +0 -96
data/data/parg/calconnect.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"bindings":null,"version":"0.1.0","grammar":"PubidCalconnect","shape":"parsanol-tree/v2","binding_version":1,"entries":{"identifier":{"root":"identifier","grammar":{"atoms":[{"Str":{"pattern":"CC"}},{"Entity":{"atom":2}},{"Str":{"pattern":"/"}},{"Entity":{"atom":
|
|
1
|
+
{"bindings":null,"version":"0.1.0","grammar":"PubidCalconnect","shape":"parsanol-tree/v2","binding_version":1,"entries":{"identifier":{"root":"identifier","grammar":{"atoms":[{"Str":{"pattern":"CC"}},{"Entity":{"atom":2}},{"Str":{"pattern":"/"}},{"Named":{"name":"slash","atom":1}},{"Entity":{"atom":10}},{"Entity":{"atom":8}},{"Re":{"pattern":"[\\x41-\\x5a]"}},{"Re":{"pattern":"[\\x61-\\x7a]"}},{"Alternative":{"atoms":[6,7]}},{"Repetition":{"atom":5,"min":1,"max":null,"tag":"Repetition"}},{"Named":{"name":"series","atom":9}},{"Sequence":{"atoms":[3,4]}},{"Repetition":{"atom":11,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":14}},{"Str":{"pattern":" "}},{"Entity":{"atom":27}},{"Entity":{"atom":17}},{"Re":{"pattern":"[\\x30-\\x39]"}},{"Repetition":{"atom":16,"min":1,"max":null,"tag":"Repetition"}},{"Str":{"pattern":"."}},{"Str":{"pattern":"-"}},{"Alternative":{"atoms":[19,20]}},{"Entity":{"atom":17}},{"Repetition":{"atom":22,"min":1,"max":null,"tag":"Repetition"}},{"Sequence":{"atoms":[21,23]}},{"Repetition":{"atom":24,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[18,25]}},{"Named":{"name":"number","atom":26}},{"Entity":{"atom":29}},{"Str":{"pattern":":"}},{"Named":{"name":"colon","atom":28}},{"Entity":{"atom":45}},{"Entity":{"atom":17}},{"Repetition":{"atom":32,"min":1,"max":null,"tag":"Repetition"}},{"Named":{"name":"year","atom":33}},{"Str":{"pattern":"-"}},{"Entity":{"atom":17}},{"Repetition":{"atom":36,"min":1,"max":null,"tag":"Repetition"}},{"Named":{"name":"month","atom":37}},{"Str":{"pattern":"-"}},{"Entity":{"atom":17}},{"Repetition":{"atom":40,"min":1,"max":null,"tag":"Repetition"}},{"Named":{"name":"day","atom":41}},{"Sequence":{"atoms":[35,38,39,42]}},{"Repetition":{"atom":43,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[34,44]}},{"Sequence":{"atoms":[30,31]}},{"Repetition":{"atom":46,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[0,12,13,15,47]}}],"root":48},"bindings":[{"capture":"series","path":"series","type":"string","card":null,"preprocess":null},{"capture":"number","path":"number","type":"string","card":null,"preprocess":null},{"capture":"year","path":"year","type":"string","card":null,"preprocess":null},{"capture":"month","path":"month","type":"string","card":null,"preprocess":null},{"capture":"day","path":"day","type":"string","card":null,"preprocess":null}]}},"preprocess":{},"tables":{},"lint":{"order_warnings":[]},"default_entry":"identifier","render":{},"derive":{},"tests":[{"entry":"identifier","kind":"accept","input":"CC 9101","expect":{}},{"entry":"identifier","kind":"accept","input":"CC/CD 9101","expect":{}},{"entry":"identifier","kind":"accept","input":"CC 9101:2024","expect":{}},{"entry":"identifier","kind":"reject","input":"nonsense","expect":{}}],"docs":{},"source":"# Port of lib/pubid/calconnect/parser.rb:\n# CC[/<series>] <number>[.<sub>|-$sub>][:<date>]\n\ngrammar PubidCalconnect version \"0.1.0\" edition \"v2\" {\n letter = %x41-5A / %x61-7A\n series = (1*letter) as series\n number = (1*digit [(\".\" / \"-\") 1*digit]) as number\n date = (1*digit) as year [(\"-\" (1*digit) as month \"-\" (1*digit) as day)]\n identifier = \"CC\" [slash series] space number [(colon date)]\n digit = %x30-39\n space = \" \"\n slash = \"/\"\n colon = \":\"\n entry identifier: identifier\n\n # Typed model bindings: every bound capture lands directly on the\n # attribute of the same name in the consumer's identifier model.\n bindings identifier {\n series -> series (string)\n number -> number (string)\n year -> year (string)\n month -> month (string)\n day -> day (string)\n }\n\n test {\n accept \"CC 9101\"\n accept \"CC/CD 9101\"\n accept \"CC 9101:2024\"\n reject \"nonsense\"\n }\n}\n","source_hash":"224fcedd1385fec4491afbe673c42ab7e036ff09eb376675573ae731a0f87898","unicode_tables":"onigmo (Ruby 3.4.8)","compiler_version":"1.3.114","edition":2,"checksum":"sha256:73daf108c73f8cf32ace8769877157c8425a9ca293ca8db03bf77f32a8e6b381"}
|
data/data/parg/ccsds.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"bindings":null,"version":"0.1.0","grammar":"PubidCcsds","shape":"parsanol-tree/v2","binding_version":1,"entries":{"identifier":{"root":"identifier","grammar":{"atoms":[{"Str":{"pattern":"CCSDS "}},{"Entity":{"atom":8}},{"Entity":{"atom":6}},{"Re":{"pattern":"[\\x41-\\x5a]"}},{"Re":{"pattern":"[\\x61-\\x7a]"}},{"Re":{"pattern":"[\\x30-\\x39]"}},{"Alternative":{"atoms":[3,4,5]}},{"Repetition":{"atom":2,"min":1,"max":null,"tag":"Repetition"}},{"Named":{"name":"number","atom":7}},{"Entity":{"atom":14}},{"Str":{"pattern":"."}},{"Entity":{"atom":6}},{"Repetition":{"atom":11,"min":1,"max":null,"tag":"Repetition"}},{"Named":{"name":"part","atom":12}},{"Sequence":{"atoms":[10,13]}},{"Repetition":{"atom":9,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":21}},{"Str":{"pattern":"-"}},{"Entity":{"atom":19}},{"Re":{"pattern":"[\\x41-\\x5a]"}},{"Named":{"name":"type","atom":18}},{"Sequence":{"atoms":[17,20]}},{"Repetition":{"atom":16,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":38}},{"Str":{"pattern":"-"}},{"Entity":{"atom":28}},{"Re":{"pattern":"[\\x30-\\x39]"}},{"Re":{"pattern":"[.]"}},{"Alternative":{"atoms":[26,27]}},{"Repetition":{"atom":25,"min":1,"max":null,"tag":"Repetition"}},{"Entity":{"atom":33}},{"Re":{"pattern":"[\\x41-\\x5a]"}},{"Re":{"pattern":"[\\x61-\\x7a]"}},{"Alternative":{"atoms":[31,32]}},{"Repetition":{"atom":30,"min":0,"max":1,"tag":"Repetition"}},{"Repetition":{"atom":34,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[29,35]}},{"Named":{"name":"edition","atom":36}},{"Sequence":{"atoms":[24,37]}},{"Repetition":{"atom":23,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":44}},{"Str":{"pattern":"-"}},{"Entity":{"atom":19}},{"Named":{"name":"suffix","atom":42}},{"Sequence":{"atoms":[41,43]}},{"Repetition":{"atom":40,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":58}},{"Entity":{"atom":56}},{"Entity":{"atom":49}},{"Str":{"pattern":" "}},{"Str":{"pattern":"Cor."}},{"Entity":{"atom":49}},{"Entity":{"atom":53}},{"Re":{"pattern":"[\\x30-\\x39]"}},{"Repetition":{"atom":52,"min":1,"max":null,"tag":"Repetition"}},{"Named":{"name":"cor_number","atom":54}},{"Sequence":{"atoms":[48,50,51,55]}},{"Repetition":{"atom":47,"min":0,"max":null,"tag":"Repetition"}},{"Named":{"name":"corrigenda","atom":57}},{"Entity":{"atom":
|
|
1
|
+
{"bindings":null,"version":"0.1.0","grammar":"PubidCcsds","shape":"parsanol-tree/v2","binding_version":1,"entries":{"identifier":{"root":"identifier","grammar":{"atoms":[{"Str":{"pattern":"CCSDS "}},{"Entity":{"atom":8}},{"Entity":{"atom":6}},{"Re":{"pattern":"[\\x41-\\x5a]"}},{"Re":{"pattern":"[\\x61-\\x7a]"}},{"Re":{"pattern":"[\\x30-\\x39]"}},{"Alternative":{"atoms":[3,4,5]}},{"Repetition":{"atom":2,"min":1,"max":null,"tag":"Repetition"}},{"Named":{"name":"number","atom":7}},{"Entity":{"atom":14}},{"Str":{"pattern":"."}},{"Entity":{"atom":6}},{"Repetition":{"atom":11,"min":1,"max":null,"tag":"Repetition"}},{"Named":{"name":"part","atom":12}},{"Sequence":{"atoms":[10,13]}},{"Repetition":{"atom":9,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":21}},{"Str":{"pattern":"-"}},{"Entity":{"atom":19}},{"Re":{"pattern":"[\\x41-\\x5a]"}},{"Named":{"name":"type","atom":18}},{"Sequence":{"atoms":[17,20]}},{"Repetition":{"atom":16,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":38}},{"Str":{"pattern":"-"}},{"Entity":{"atom":28}},{"Re":{"pattern":"[\\x30-\\x39]"}},{"Re":{"pattern":"[.]"}},{"Alternative":{"atoms":[26,27]}},{"Repetition":{"atom":25,"min":1,"max":null,"tag":"Repetition"}},{"Entity":{"atom":33}},{"Re":{"pattern":"[\\x41-\\x5a]"}},{"Re":{"pattern":"[\\x61-\\x7a]"}},{"Alternative":{"atoms":[31,32]}},{"Repetition":{"atom":30,"min":0,"max":1,"tag":"Repetition"}},{"Repetition":{"atom":34,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[29,35]}},{"Named":{"name":"edition","atom":36}},{"Sequence":{"atoms":[24,37]}},{"Repetition":{"atom":23,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":44}},{"Str":{"pattern":"-"}},{"Entity":{"atom":19}},{"Named":{"name":"suffix","atom":42}},{"Sequence":{"atoms":[41,43]}},{"Repetition":{"atom":40,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":58}},{"Entity":{"atom":56}},{"Entity":{"atom":49}},{"Str":{"pattern":" "}},{"Str":{"pattern":"Cor."}},{"Entity":{"atom":49}},{"Entity":{"atom":53}},{"Re":{"pattern":"[\\x30-\\x39]"}},{"Repetition":{"atom":52,"min":1,"max":null,"tag":"Repetition"}},{"Named":{"name":"cor_number","atom":54}},{"Sequence":{"atoms":[48,50,51,55]}},{"Repetition":{"atom":47,"min":0,"max":null,"tag":"Repetition"}},{"Named":{"name":"corrigenda","atom":57}},{"Entity":{"atom":81}},{"Entity":{"atom":49}},{"Entity":{"atom":62}},{"Str":{"pattern":"-"}},{"Named":{"name":"dash","atom":61}},{"Entity":{"atom":49}},{"Entity":{"atom":76}},{"Str":{"pattern":"French"}},{"Str":{"pattern":"Russian"}},{"Str":{"pattern":"English"}},{"Str":{"pattern":"German"}},{"Str":{"pattern":"Spanish"}},{"Str":{"pattern":"Italian"}},{"Str":{"pattern":"Portuguese"}},{"Str":{"pattern":"Chinese"}},{"Str":{"pattern":"Japanese"}},{"Alternative":{"atoms":[66,67,68,69,70,71,72,73,74]}},{"Named":{"name":"language","atom":75}},{"Str":{"pattern":" Translated"}},{"Repetition":{"atom":77,"min":0,"max":null,"tag":"Repetition"}},{"Repetition":{"atom":78,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[65,79]}},{"Sequence":{"atoms":[60,63,64,80]}},{"Repetition":{"atom":59,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[0,1,15,22,39,45,46,82]}}],"root":83},"bindings":[{"capture":"number","path":"number","type":"string","card":null,"preprocess":null},{"capture":"part","path":"part","type":"string","card":null,"preprocess":null},{"capture":"type","path":"type","type":"string","card":null,"preprocess":null},{"capture":"edition","path":"edition","type":"string","card":null,"preprocess":null},{"capture":"suffix","path":"suffix","type":"string","card":null,"preprocess":null},{"capture":"cor_number","path":"corrigenda[].cor_number","type":"string","card":null,"preprocess":null},{"capture":"language","path":"language","type":"string","card":null,"preprocess":null}]}},"preprocess":{},"tables":{},"lint":{"order_warnings":[]},"default_entry":"identifier","render":{},"derive":{},"tests":[{"entry":"identifier","kind":"accept","input":"CCSDS 650.0-G-2","expect":{}},{"entry":"identifier","kind":"accept","input":"CCSDS 100.0-G-1","expect":{}},{"entry":"identifier","kind":"reject","input":"nonsense","expect":{}}],"docs":{},"source":"# Port of lib/pubid/ccsds/parser.rb:\n# CCSDS <number>[.part][-type][-edition][-suffix]{ Cor. n}[ - <language>]\n\ngrammar PubidCcsds version \"0.1.0\" edition 2 {\n alnum_char = %x41-5A / %x61-7A / %x30-39\n upper = %x41-5A\n digit_dot_char = %x30-39 / %x2E\n number = (1*alnum_char) as number\n part = \".\" (1*alnum_char) as part\n type = \"-\" upper as type\n edition = \"-\" (1*digit_dot_char [*1letter]) as edition\n suffix = \"-\" upper as suffix\n corrigendum = space \"Cor.\" space (1*digit) as cor_number\n corrigenda = (*corrigendum) as corrigenda\n language_metadata = space dash space (language_word [*\" Translated\"])\n language_word = (\"French\" / \"Russian\" / \"English\" / \"German\" / \"Spanish\" / \"Italian\" / \"Portuguese\" / \"Chinese\" / \"Japanese\") as language\n identifier = \"CCSDS \" number [part] [type] [edition] [suffix] corrigenda [language_metadata]\n dash = \"-\"\n space = \" \"\n digit = %x30-39\n letter = %x41-5A / %x61-7A\n entry identifier: identifier\n\n bindings identifier {\n number -> number (string)\n part -> part (string)\n type -> type (string)\n edition -> edition (string)\n suffix -> suffix (string)\n cor_number -> corrigenda[].cor_number (string)\n language -> language (string)\n }\n\n\n test {\n accept \"CCSDS 650.0-G-2\"\n accept \"CCSDS 100.0-G-1\"\n reject \"nonsense\"\n }\n}\n","source_hash":"914dd6987532d5870d4adc7abc5c3cc2d078577f42db045b6895c50ae4499ff4","unicode_tables":"onigmo (Ruby 3.4.8)","compiler_version":"1.3.114","edition":2,"checksum":"sha256:74cf70f10fa27d17dc49e5ff816c37ad49f2a15054336135b66625d7687009f9"}
|
data/data/parg/cen_cenelec.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"bindings":null,"version":"0.2.0","grammar":"PubidCenCenelec","shape":"parsanol-tree/v2","binding_version":1,"entries":{"identifier":{"root":"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 publisher: branches 1 and 2 are order-dependent (shared first bytes; ordered choice is decisive)","rule publisher: branches 1 and 3 are order-dependent (shared first bytes; ordered choice is decisive)","rule publisher: branches 2 and 3 are order-dependent (shared first bytes; ordered choice is decisive)","rule date: branches 1 and 2 are order-dependent (shared first bytes; ordered choice is decisive)","rule adopted_org_prefix: branches 1 and 2 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 fragment_identifier: branches 1 and 2 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":[{"entry":"identifier","kind":"accept","input":"EN 18216:2026","expect":{}},{"entry":"identifier","kind":"accept","input":"EN ISO 9001:2015","expect":{}},{"entry":"identifier","kind":"accept","input":"CEN/CLC TR 17161:2019","expect":{}},{"entry":"identifier","kind":"accept","input":"EN 196-1:2016+A1","expect":{}},{"entry":"identifier","kind":"accept","input":"CEN/CLC/ETSI/TR 101551:2026","expect":{}},{"entry":"identifier","kind":"accept","input":"EN 302 326-2:2026","expect":{}},{"entry":"identifier","kind":"accept","input":"EN 302 326-2 V2.2.1","expect":{}},{"entry":"identifier","kind":"accept","input":"EN 302 326 V2.2.1:2026","expect":{}},{"entry":"identifier","kind":"accept","input":"EN 302:2026","expect":{}},{"entry":"identifier","kind":"reject","input":"nonsense","expect":{}}],"docs":{},"source":"# Port of lib/pubid/cen_cenelec/parser.rb. Pre-parse normalization\n# (U+2011/AD dashes, comment stripping, CEN-CLC/GUIDE forms) stays\n# binder-side: the grammar sees normalized input.\n\ngrammar PubidCenCenelec version \"0.2.0\" {\n digit = %x30-39\n space = \" \"\n dash = \"-\"\n slash = \"/\"\n plus = \"+\"\n colon = \":\"\n publisher = ((\"CWA\" / \"HD\" / \"ES\" / \"CR\" / \"ENV\") as publisher) / ((\"EN\" / \"CEN\") as publisher [copublishers]) / (\"CLC\" as publisher [copublishers])\n copublishers = (1*copublisher) as copublishers\n copublisher = (slash (\"CLC\" / \"ETSI\") as copublisher)\n stage_prefix = (\"FprEN\" / \"prEN\") as type_with_stage\n type = (\"Guide\" / \"GUIDE\" / \"TR\" / \"TS\") as type\n number = ((1*digit) (*(space (1*digit)))) as number\n version = (space \"V\" (1*digit) \".\" (1*digit) \".\" (1*digit)) as version\n part = dash (1*(digit / dash)) as part\n parts = (*part) as parts\n month_digits = (\"01\" / \"02\" / \"03\" / \"04\" / \"05\" / \"06\" / \"07\" / \"08\" / \"09\" / \"10\" / \"11\" / \"12\") as month\n year = colon (4digit) as year\n year_with_month = colon (4digit) as year dash month_digits\n date = year_with_month / year\n amendment = (plus as amd_sep_plus / slash as amd_sep_slash) \"A\" (1*digit) as amd_number [(colon (4digit) as amd_year)]\n corrigendum = (plus as amd_sep_plus / slash as amd_sep_slash) \"AC\" [(digit (*digit)) as cor_number] [(year_with_month / (colon (4digit) as year))]\n supplement = (amendment / corrigendum) as supplement\n supplements = (*supplement) as supplements\n edition = space \"ED\" (1*digit) as edition\n adopted_org_prefix = \"ISO\" / \"IEC\" / \"CISPR\"\n adopted_string = (adopted_org_prefix *(!supplement !edition any_noln_char)) as adopted_string\n any_noln_char = %x01-09 / %x0B-10FFFF\n fragment_identifier = ((stage_prefix / publisher) space number parts space \"AMD\" (1*digit) as amendment_number space \"FRAG\" (1*digit) as fragment_number) / ((stage_prefix / publisher) space number parts [year] (plus / slash) \"A\" (1*digit) as amendment_number [(colon (4digit) as amendment_year)] space \"FRAG\" (1*digit) as fragment_number)\n identifier = fragment_identifier / ((stage_prefix / publisher) [(space adopted_string)] [(space type / slash type)] [(space number parts [version] [year])] supplements [edition])\n\n entry identifier: identifier\n\n test {\n accept \"EN 18216:2026\"\n accept \"EN ISO 9001:2015\"\n accept \"CEN/CLC TR 17161:2019\"\n accept \"EN 196-1:2016+A1\"\n accept \"CEN/CLC/ETSI/TR 101551:2026\"\n accept \"EN 302 326-2:2026\"\n accept \"EN 302 326-2 V2.2.1\"\n accept \"EN 302 326 V2.2.1:2026\"\n accept \"EN 302:2026\"\n reject \"nonsense\"\n }\n}\n","source_hash":"eec1427274986950746929b3728c070b9f3fb80141ecc3a1b90e6eebffeb56c5","compiler_version":"1.3.93","checksum":"sha256:f27285171cfe165a0174ed74c63f58e0c70f5fdadb35f62e7a0c9a0835004283"}
|
|
1
|
+
{"bindings":null,"version":"0.2.0","grammar":"PubidCenCenelec","shape":"parsanol-tree/v2","binding_version":1,"entries":{"identifier":{"root":"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":"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 publisher: branches 1 and 2 are order-dependent (shared first bytes; ordered choice is decisive)","rule publisher: branches 1 and 3 are order-dependent (shared first bytes; ordered choice is decisive)","rule publisher: branches 2 and 3 are order-dependent (shared first bytes; ordered choice is decisive)","rule date: branches 1 and 2 are order-dependent (shared first bytes; ordered choice is decisive)","rule fragment_identifier: branches 1 and 2 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":[{"entry":"identifier","kind":"accept","input":"EN 18216:2026","expect":{}},{"entry":"identifier","kind":"accept","input":"EN ISO 9001:2015","expect":{}},{"entry":"identifier","kind":"accept","input":"CEN/CLC TR 17161:2019","expect":{}},{"entry":"identifier","kind":"accept","input":"EN 196-1:2016+A1","expect":{}},{"entry":"identifier","kind":"accept","input":"CEN/CLC/ETSI/TR 101551:2026","expect":{}},{"entry":"identifier","kind":"accept","input":"EN 302 326-2:2026","expect":{}},{"entry":"identifier","kind":"accept","input":"EN 302 326-2 V2.2.1","expect":{}},{"entry":"identifier","kind":"accept","input":"EN 302 326 V2.2.1:2026","expect":{}},{"entry":"identifier","kind":"accept","input":"EN 302:2026","expect":{}},{"entry":"identifier","kind":"reject","input":"nonsense","expect":{}}],"docs":{},"source":"# Port of lib/pubid/cen_cenelec/parser.rb. Pre-parse normalization\n# (U+2011/AD dashes, comment stripping, CEN-CLC/GUIDE forms) stays\n# binder-side: the grammar sees normalized input.\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); references to rules\n# that themselves capture (copublisher, part, month_digits,\n# year_with_month, supplement) float their captures unchanged. The\n# repetition wrappers (copublishers, parts, supplements) keep the v1\n# tree shape and the bindings name the scalar leaves.\n\ngrammar PubidCenCenelec version \"0.2.0\" edition 2 {\n space = \" \"\n slash = \"/\"\n publisher = {\n (\"CWA\" / \"HD\" / \"ES\" / \"CR\" / \"ENV\") as publisher\n / ((\"EN\" / \"CEN\") as publisher [copublishers])\n / (\"CLC\" as publisher [copublishers])\n }\n copublishers = (1*copublisher) as copublishers\n copublisher = (\"/\" (\"CLC\" / \"ETSI\") as copublisher)\n stage_prefix = (\"FprEN\" / \"prEN\") as type_with_stage\n type = (\"Guide\" / \"GUIDE\" / \"TR\" / \"TS\") as type\n number = ((1*%x30-39) (*(\" \" (1*%x30-39)))) as number\n version = (\" \" \"V\" (1*%x30-39) \".\" (1*%x30-39) \".\" (1*%x30-39)) as version\n part = \"-\" (1*(%x30-39 / \"-\")) as part\n parts = (*part) as parts\n month_digits = {\n (\n \"01\" / \"02\" / \"03\" / \"04\" / \"05\" / \"06\"\n / \"07\" / \"08\" / \"09\" / \"10\" / \"11\" / \"12\"\n ) as month\n }\n year = \":\" (4*4%x30-39) as year\n year_with_month = \":\" (4*4%x30-39) as year \"-\" month_digits\n date = year_with_month / year\n amendment = {\n ((\"+\" as amd_sep_plus / \"/\" as amd_sep_slash) \"A\" (1*%x30-39) as amd_number\n [(\":\" (4*4%x30-39) as amd_year)])\n }\n corrigendum = {\n ((\"+\" as amd_sep_plus / \"/\" as amd_sep_slash) \"AC\"\n [(%x30-39 (*%x30-39)) as cor_number]\n [(year_with_month / (\":\" (4*4%x30-39) as year))])\n }\n supplement = (amendment / corrigendum) as supplement\n supplements = (*supplement) as supplements\n edition = \" \" \"ED\" (1*%x30-39) as edition\n adopted_string = {\n (\n (\"ISO\" / \"IEC\" / \"CISPR\")\n *((!(supplement) !(edition) (%x01-09 / %x0B-10FFFF)))\n ) as adopted_string\n }\n fragment_identifier = {\n (\n ( (stage_prefix / publisher) \" \" number parts \" \" \"AMD\"\n (1*%x30-39) as amendment_number\n \" \" \"FRAG\" (1*%x30-39) as fragment_number )\n /\n ( (stage_prefix / publisher) \" \" number parts [year] (\"+\" / \"/\") \"A\"\n (1*%x30-39) as amendment_number\n [(\":\" (4*4%x30-39) as amendment_year)]\n \" \" \"FRAG\" (1*%x30-39) as fragment_number )\n )\n }\n identifier = {\n fragment_identifier\n / (\n (stage_prefix / publisher)\n [(space adopted_string)]\n [(space type / slash type)]\n [(space number parts [version] [year])]\n supplements\n [edition]\n )\n }\n\n entry identifier: identifier\n\n test {\n accept \"EN 18216:2026\"\n accept \"EN ISO 9001:2015\"\n accept \"CEN/CLC TR 17161:2019\"\n accept \"EN 196-1:2016+A1\"\n accept \"CEN/CLC/ETSI/TR 101551:2026\"\n accept \"EN 302 326-2:2026\"\n accept \"EN 302 326-2 V2.2.1\"\n accept \"EN 302 326 V2.2.1:2026\"\n accept \"EN 302:2026\"\n reject \"nonsense\"\n }\n\n bindings identifier {\n # Shape-faithful to the v1 tree the builder reads: copublishers/parts\n # bind as one-level arrays (cast(:copublishers) maps member\n # [:copublisher], cast(:parts) reads member [:part]); the supplements\n # bind uncast as the [{supplement: {...}}] array extract_supplements and\n # build_standalone_supplement walk. The supplement-internal captures\n # (amd_sep_*, amd_number, amd_year, cor_number, the corrigendum year)\n # are reached only through that array — no flat bindings for them.\n publisher -> publisher (string)\n copublisher -> copublishers[].copublisher (string)\n type_with_stage -> type_with_stage (string)\n type -> type (string)\n number -> number (string)\n version -> version (string)\n part -> parts[].part (string)\n year -> year (string)\n adopted_string -> adopted_string (string)\n edition -> edition (string)\n amendment_number -> amendment_number (string)\n amendment_year -> amendment_year (string)\n fragment_number -> fragment_number (string)\n supplement -> supplements[].supplement (raw)\n }\n}\n","source_hash":"dfbbc53ab1cc3c16e9587310d098dc0d06e07f69e4cbce845432a403b9d96a6a","unicode_tables":"onigmo (Ruby 3.4.8)","compiler_version":"1.3.114","edition":2,"checksum":"sha256:ace0e594583f0be21680fa0dff0bf223602859854c074af4107760ab5f3c4e53"}
|