@pubid/pubid 0.1.31 → 0.1.33
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.
- package/artifact/corpus.json.gz +0 -0
- package/dist/conformance/implementation.d.ts +4 -0
- package/dist/flavors/iec/index.js +12 -5
- package/dist/flavors/ieee/index.js +321 -113
- package/dist/flavors/ieee/model.d.ts +18 -0
- package/dist/flavors/ieee/model.js +62 -8
- package/dist/flavors/ieee/preprocessor.js +3 -0
- package/dist/flavors/ieee/update_codes.js +1 -1
- package/dist/flavors/iho/index.js +198 -35
- package/dist/flavors/jis/index.js +74 -2
- package/dist/flavors/nist/grammar.js +44 -16
- package/dist/flavors/nist/index.js +17 -2
- package/dist/implementations/corpus-mode.d.ts +3 -0
- package/dist/implementations/corpus-mode.js +7 -0
- package/dist/model/identifier.d.ts +3 -0
- package/dist/model/identifier.js +5 -0
- package/dist/urn/parsers.js +57 -20
- package/package.json +2 -2
- package/vendor/parg/adobe.json +1 -1
- package/vendor/parg/aiee.json +1 -1
- package/vendor/parg/amca.json +1 -1
- package/vendor/parg/ansi.json +1 -1
- package/vendor/parg/api.json +1 -1
- package/vendor/parg/ashrae.json +1 -1
- package/vendor/parg/asme.json +1 -1
- package/vendor/parg/astm.json +1 -1
- package/vendor/parg/bipm.json +1 -1
- package/vendor/parg/bsi.json +1 -1
- package/vendor/parg/calconnect.json +1 -1
- package/vendor/parg/ccsds.json +1 -1
- package/vendor/parg/cen_cenelec.json +1 -1
- package/vendor/parg/cie.json +1 -1
- package/vendor/parg/csa.json +1 -1
- package/vendor/parg/doi.json +1 -1
- package/vendor/parg/easc.json +1 -1
- package/vendor/parg/ecma.json +1 -1
- package/vendor/parg/etsi.json +1 -1
- package/vendor/parg/evs.json +1 -1
- package/vendor/parg/gb.json +1 -1
- package/vendor/parg/gost.json +1 -1
- package/vendor/parg/iala.json +1 -1
- package/vendor/parg/iana.json +1 -1
- package/vendor/parg/idf.json +1 -1
- package/vendor/parg/iec.json +1 -1
- package/vendor/parg/ieee.json +1 -29571
- package/vendor/parg/ietf.json +1 -1
- package/vendor/parg/iho.json +1 -0
- package/vendor/parg/ire.json +1 -1
- package/vendor/parg/isbn.json +1 -1
- package/vendor/parg/iso.json +1 -8510
- package/vendor/parg/itu.json +1 -1
- package/vendor/parg/jcgm.json +1 -1
- package/vendor/parg/jis.json +1 -1
- package/vendor/parg/nesc.json +1 -1
- package/vendor/parg/nist.json +1 -9588
- package/vendor/parg/oasis.json +1 -1
- package/vendor/parg/ogc.json +1 -1
- package/vendor/parg/oiml.json +1 -1
- package/vendor/parg/omg.json +1 -1
- package/vendor/parg/parg.json +1 -1
- package/vendor/parg/plateau.json +1 -1
- package/vendor/parg/sae.json +1 -1
- package/vendor/parg/tgpp.json +1 -1
- package/vendor/parg/un.json +1 -1
- package/vendor/parg/w3c.json +1 -1
- package/vendor/parg/xsf.json +1 -1
package/vendor/parg/oasis.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"bindings":null,"version":"0.1.0","grammar":"PubidOasis","shape":"parsanol-tree/v2","binding_version":1,"entries":{"identifier":{"root":"identifier","grammar":{"atoms":[{"Str":{"pattern":"OASIS "}},{"Entity":{"atom":5}},{"Entity":{"atom":3}},{"Re":{"pattern":"[\\x01-\\u{10ffff}]"}},{"Repetition":{"atom":2,"min":1,"max":null,"tag":"Repetition"}},{"Named":{"name":"original","atom":4}},{"Sequence":{"atoms":[0,1]}}],"root":6},"bindings":[]}},"preprocess":{},"tables":{},"lint":{"order_warnings":[]},"default_entry":"identifier","render":{},"derive":{},"tests":[{"entry":"identifier","kind":"accept","input":"OASIS saml-core-2.0-os","expect":{}},{"entry":"identifier","kind":"reject","input":"nonsense","expect":{}}],"docs":{},"source":"# Port of lib/pubid/oasis/parser.rb: the \"OASIS \" prefix is stripped and\n# the slug captured verbatim; decomposition is builder-side by design.\n# parslet `any` is approximated byte-wise (%x01-10FFFF; excludes NUL only).\n\ngrammar PubidOasis version \"0.1.0\" {\n any_char = %x01-10FFFF\n slug = (1*any_char) as original\n identifier = \"OASIS \" slug\n entry identifier: identifier\n\n test {\n accept \"OASIS saml-core-2.0-os\"\n reject \"nonsense\"\n }\n}\n","source_hash":"
|
|
1
|
+
{"bindings":null,"version":"0.1.0","grammar":"PubidOasis","shape":"parsanol-tree/v2","binding_version":1,"entries":{"identifier":{"root":"identifier","grammar":{"atoms":[{"Str":{"pattern":"OASIS "}},{"Entity":{"atom":5}},{"Entity":{"atom":3}},{"Re":{"pattern":"[\\x01-\\u{10ffff}]"}},{"Repetition":{"atom":2,"min":1,"max":null,"tag":"Repetition"}},{"Named":{"name":"original","atom":4}},{"Sequence":{"atoms":[0,1]}}],"root":6},"bindings":[{"capture":"original","path":"original","type":"string","card":null,"preprocess":null}]}},"preprocess":{},"tables":{},"lint":{"order_warnings":[]},"default_entry":"identifier","render":{},"derive":{},"tests":[{"entry":"identifier","kind":"accept","input":"OASIS saml-core-2.0-os","expect":{}},{"entry":"identifier","kind":"reject","input":"nonsense","expect":{}}],"docs":{},"source":"# Port of lib/pubid/oasis/parser.rb: the \"OASIS \" prefix is stripped and\n# the slug captured verbatim; decomposition is builder-side by design.\n# parslet `any` is approximated byte-wise (%x01-10FFFF; excludes NUL only).\n\ngrammar PubidOasis version \"0.1.0\" edition 2 {\n any_char = %x01-10FFFF\n slug = (1*any_char) as original\n identifier = \"OASIS \" slug\n entry identifier: identifier\n\n # Typed model bindings: every bound capture lands on the\n # consumer model's field of the same name.\n bindings identifier {\n original -> original (string)\n }\n\n\n test {\n accept \"OASIS saml-core-2.0-os\"\n reject \"nonsense\"\n }\n}\n","source_hash":"6aca7fcee46be2e8f4602b554ebdca7aefd88e34f8eed427e1b03382c64eded4","unicode_tables":"onigmo (Ruby 3.4.8)","compiler_version":"1.3.121","edition":2,"semantics_hash":"sha256:767333bb7a1394b6c542eba1589a3bed6733a6632910f53f2653fe2398a22361","checksum":"sha256:01b01d9433f8a2422676f6b7d4cacc3128766167679f3ded826d09501c601196"}
|
package/vendor/parg/ogc.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"bindings":null,"version":"0.1.0","grammar":"PubidOgc","shape":"parsanol-tree/v2","binding_version":1,"entries":{"identifier":{"root":"identifier","grammar":{"atoms":[{"Str":{"pattern":"OGC"}},{"Entity":{"atom":6}},{"Entity":{"atom":5}},{"Re":{"pattern":"[\\x09-\\x0d]"}},{"Re":{"pattern":"[ ]"}},{"Alternative":{"atoms":[3,4]}},{"Repetition":{"atom":2,"min":1,"max":null,"tag":"Repetition"}},{"Sequence":{"atoms":[0,1]}},{"Repetition":{"atom":7,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":10}},{"Re":{"pattern":"[\\x30-\\x39]"}},{"Repetition":{"atom":9,"min":1,"max":null,"tag":"Repetition"}},{"Named":{"name":"year","atom":11}},{"Str":{"pattern":"-"}},{"Entity":{"atom":10}},{"Repetition":{"atom":14,"min":1,"max":null,"tag":"Repetition"}},{"Named":{"name":"number","atom":15}},{"Entity":{"atom":24}},{"Entity":{"atom":22}},{"Re":{"pattern":"[\\x41-\\x5a]"}},{"Re":{"pattern":"[\\x61-\\x7a]"}},{"Re":{"pattern":"[\\x30-\\x39]"}},{"Alternative":{"atoms":[19,20,21]}},{"Repetition":{"atom":18,"min":1,"max":null,"tag":"Repetition"}},{"Named":{"name":"revision","atom":23}},{"Repetition":{"atom":17,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":5}},{"Repetition":{"atom":26,"min":0,"max":null,"tag":"Repetition"}},{"Repetition":{"atom":27,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[8,12,13,16,25,28]}}],"root":29},"bindings":[]}},"preprocess":{},"tables":{},"lint":{"order_warnings":[]},"default_entry":"identifier","render":{},"derive":{},"tests":[{"entry":"identifier","kind":"accept","input":"OGC 06-121r9","expect":{}},{"entry":"identifier","kind":"accept","input":"20-024","expect":{}},{"entry":"identifier","kind":"reject","input":"nonsense","expect":{}}],"docs":{},"source":"# Port of lib/pubid/ogc/parser.rb: \"<yy>-<nnn>[<revision>]\" with an\n# optional lenient \"OGC \" prefix. \\s = %x09-0D / %x20.\n\ngrammar PubidOgc version \"0.1.0\" {\n ws_char = %x09-0D / %x20\n space = 1*ws_char\n digit = %x30-39\n alnum_char = %x41-5A / %x61-7A / %x30-39\n revision = (1*alnum_char) as revision\n identifier = [\"OGC\" space] (1*digit) as year \"-\" (1*digit) as number [revision] [*ws_char]\n entry identifier: identifier\n\n test {\n accept \"OGC 06-121r9\"\n accept \"20-024\"\n reject \"nonsense\"\n }\n}\n","source_hash":"
|
|
1
|
+
{"bindings":null,"version":"0.1.0","grammar":"PubidOgc","shape":"parsanol-tree/v2","binding_version":1,"entries":{"identifier":{"root":"identifier","grammar":{"atoms":[{"Str":{"pattern":"OGC"}},{"Entity":{"atom":6}},{"Entity":{"atom":5}},{"Re":{"pattern":"[\\x09-\\x0d]"}},{"Re":{"pattern":"[ ]"}},{"Alternative":{"atoms":[3,4]}},{"Repetition":{"atom":2,"min":1,"max":null,"tag":"Repetition"}},{"Sequence":{"atoms":[0,1]}},{"Repetition":{"atom":7,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":10}},{"Re":{"pattern":"[\\x30-\\x39]"}},{"Repetition":{"atom":9,"min":1,"max":null,"tag":"Repetition"}},{"Named":{"name":"year","atom":11}},{"Str":{"pattern":"-"}},{"Entity":{"atom":10}},{"Repetition":{"atom":14,"min":1,"max":null,"tag":"Repetition"}},{"Named":{"name":"number","atom":15}},{"Entity":{"atom":24}},{"Entity":{"atom":22}},{"Re":{"pattern":"[\\x41-\\x5a]"}},{"Re":{"pattern":"[\\x61-\\x7a]"}},{"Re":{"pattern":"[\\x30-\\x39]"}},{"Alternative":{"atoms":[19,20,21]}},{"Repetition":{"atom":18,"min":1,"max":null,"tag":"Repetition"}},{"Named":{"name":"revision","atom":23}},{"Repetition":{"atom":17,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":5}},{"Repetition":{"atom":26,"min":0,"max":null,"tag":"Repetition"}},{"Repetition":{"atom":27,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[8,12,13,16,25,28]}}],"root":29},"bindings":[{"capture":"revision","path":"revision","type":"string","card":null,"preprocess":null},{"capture":"year","path":"year","type":"string","card":null,"preprocess":null},{"capture":"number","path":"number","type":"string","card":null,"preprocess":null}]}},"preprocess":{},"tables":{},"lint":{"order_warnings":[]},"default_entry":"identifier","render":{},"derive":{},"tests":[{"entry":"identifier","kind":"accept","input":"OGC 06-121r9","expect":{}},{"entry":"identifier","kind":"accept","input":"20-024","expect":{}},{"entry":"identifier","kind":"reject","input":"nonsense","expect":{}}],"docs":{},"source":"# Port of lib/pubid/ogc/parser.rb: \"<yy>-<nnn>[<revision>]\" with an\n# optional lenient \"OGC \" prefix. \\s = %x09-0D / %x20.\n\ngrammar PubidOgc version \"0.1.0\" edition 2 {\n ws_char = %x09-0D / %x20\n space = 1*ws_char\n digit = %x30-39\n alnum_char = %x41-5A / %x61-7A / %x30-39\n revision = (1*alnum_char) as revision\n identifier = [\"OGC\" space] (1*digit) as year \"-\" (1*digit) as number [revision] [*ws_char]\n entry identifier: identifier\n\n # Typed model bindings: every bound capture lands on the\n # consumer model's field of the same name.\n bindings identifier {\n revision -> revision (string)\n year -> year (string)\n number -> number (string)\n }\n\n\n test {\n accept \"OGC 06-121r9\"\n accept \"20-024\"\n reject \"nonsense\"\n }\n}\n","source_hash":"6b50117ba5001d4f9b43acc6a0b86de4e6b98be60188bd02a57e8ec094401f84","unicode_tables":"onigmo (Ruby 3.4.8)","compiler_version":"1.3.121","edition":2,"semantics_hash":"sha256:46b99736e2a46bfcba812d8e0b6fd1aaba794cff3689b4fab465de4ff4816c0d","checksum":"sha256:c0a8cf8df5a5d60ffb5c78eff72c63cfce375ae15a1e665c038fae4941eec191"}
|
package/vendor/parg/oiml.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"bindings":null,"version":"0.1.0","grammar":"PubidOiml","shape":"parsanol-tree/v2","binding_version":1,"entries":{"identifier":{"root":"identifier","grammar":{"atoms":[{"Entity":{"atom":42}},{"Str":{"pattern":"OIML"}},{"Named":{"name":"publisher","atom":1}},{"Entity":{"atom":4}},{"Str":{"pattern":"-"}},{"Entity":{"atom":6}},{"Str":{"pattern":" "}},{"Alternative":{"atoms":[3,5]}},{"Str":{"pattern":"CS"}},{"Named":{"name":"cs_series","atom":8}},{"Entity":{"atom":6}},{"Str":{"pattern":"PD"}},{"Str":{"pattern":"OD"}},{"Str":{"pattern":"CID"}},{"Alternative":{"atoms":[11,12,13]}},{"Named":{"name":"cs_family","atom":14}},{"Entity":{"atom":4}},{"Entity":{"atom":6}},{"Alternative":{"atoms":[16,17]}},{"Named":{"name":"cs_separator","atom":18}},{"Entity":{"atom":21}},{"Re":{"pattern":"[\\x30-\\x39]"}},{"Repetition":{"atom":20,"min":1,"max":null,"tag":"Repetition"}},{"Named":{"name":"number","atom":22}},{"Entity":{"atom":6}},{"Str":{"pattern":"Edition"}},{"Entity":{"atom":6}},{"Entity":{"atom":21}},{"Repetition":{"atom":27,"min":1,"max":null,"tag":"Repetition"}},{"Named":{"name":"edition","atom":28}},{"Entity":{"atom":6}},{"Entity":{"atom":32}},{"Str":{"pattern":"("}},{"Str":{"pattern":"Amendment"}},{"Entity":{"atom":6}},{"Entity":{"atom":21}},{"Repetition":{"atom":35,"min":1,"max":null,"tag":"Repetition"}},{"Named":{"name":"cs_amendment","atom":36}},{"Entity":{"atom":39}},{"Str":{"pattern":")"}},{"Sequence":{"atoms":[30,31,33,34,37,38]}},{"Repetition":{"atom":40,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[2,7,9,10,15,19,23,24,25,26,29,41]}},{"Entity":{"atom":267}},{"Str":{"pattern":"Amendment"}},{"Entity":{"atom":6}},{"Entity":{"atom":32}},{"Entity":{"atom":56}},{"Entity":{"atom":51}},{"Str":{"pattern":"19"}},{"Str":{"pattern":"20"}},{"Alternative":{"atoms":[49,50]}},{"Entity":{"atom":21}},{"Repetition":{"atom":52,"min":2,"max":null,"tag":"Repetition"}},{"Entity":{"atom":21}},{"Lookahead":{"atom":54,"positive":false}},{"Sequence":{"atoms":[48,53,55]}},{"Named":{"name":"year","atom":47}},{"Entity":{"atom":39}},{"Entity":{"atom":6}},{"Str":{"pattern":"to"}},{"Entity":{"atom":6}},{"Entity":{"atom":216}},{"Entity":{"atom":67}},{"Str":{"pattern":"OIML"}},{"Named":{"name":"publisher","atom":64}},{"Entity":{"atom":6}},{"Sequence":{"atoms":[65,66]}},{"Entity":{"atom":80}},{"Entity":{"atom":77}},{"Re":{"pattern":"[B]"}},{"Re":{"pattern":"[D]"}},{"Re":{"pattern":"[E]"}},{"Re":{"pattern":"[G]"}},{"Re":{"pattern":"[R]"}},{"Re":{"pattern":"[S]"}},{"Re":{"pattern":"[V]"}},{"Alternative":{"atoms":[70,71,72,73,74,75,76]}},{"Named":{"name":"type","atom":69}},{"Entity":{"atom":6}},{"Sequence":{"atoms":[78,79]}},{"Entity":{"atom":144}},{"Entity":{"atom":86}},{"Entity":{"atom":85}},{"Entity":{"atom":21}},{"Repetition":{"atom":84,"min":1,"max":null,"tag":"Repetition"}},{"Named":{"name":"number","atom":83}},{"Entity":{"atom":98}},{"Entity":{"atom":4}},{"Entity":{"atom":85}},{"Entity":{"atom":91}},{"Str":{"pattern":"/"}},{"Entity":{"atom":4}},{"Entity":{"atom":85}},{"Sequence":{"atoms":[90,92,93]}},{"Repetition":{"atom":94,"min":0,"max":null,"tag":"Repetition"}},{"Sequence":{"atoms":[89,95]}},{"Named":{"name":"part","atom":96}},{"Sequence":{"atoms":[88,97]}},{"Entity":{"atom":103}},{"Entity":{"atom":4}},{"Entity":{"atom":85}},{"Named":{"name":"subpart","atom":101}},{"Sequence":{"atoms":[100,102]}},{"Entity":{"atom":132}},{"Entity":{"atom":124}},{"Entity":{"atom":4}},{"Str":{"pattern":"GUM"}},{"Entity":{"atom":6}},{"Entity":{"atom":85}},{"Sequence":{"atoms":[107,108,109]}},{"Entity":{"atom":114}},{"Re":{"pattern":"[\\x41-\\x5a]"}},{"Re":{"pattern":"[\\x61-\\x7a]"}},{"Alternative":{"atoms":[112,113]}},{"Repetition":{"atom":111,"min":1,"max":null,"tag":"Repetition"}},{"Str":{"pattern":"_"}},{"Repetition":{"atom":116,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":85}},{"Sequence":{"atoms":[117,118]}},{"Repetition":{"atom":119,"min":0,"max":null,"tag":"Repetition"}},{"Sequence":{"atoms":[115,120]}},{"Alternative":{"atoms":[110,121]}},{"Named":{"name":"code_suffix","atom":122}},{"Sequence":{"atoms":[106,123]}},{"Entity":{"atom":131}},{"Entity":{"atom":6}},{"Str":{"pattern":"Brochure"}},{"Named":{"name":"code_suffix","atom":127}},{"Str":{"pattern":""}},{"Named":{"name":"space_suffix","atom":129}},{"Sequence":{"atoms":[126,128,130]}},{"Alternative":{"atoms":[105,125]}},{"Repetition":{"atom":104,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[82,87,99,133]}},{"Entity":{"atom":86}},{"Entity":{"atom":98}},{"Entity":{"atom":132}},{"Repetition":{"atom":137,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[135,136,138]}},{"Entity":{"atom":86}},{"Entity":{"atom":132}},{"Repetition":{"atom":141,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[140,142]}},{"Alternative":{"atoms":[134,139,143]}},{"Entity":{"atom":195}},{"Entity":{"atom":178}},{"Str":{"pattern":", "}},{"Entity":{"atom":6}},{"Alternative":{"atoms":[147,148]}},{"Entity":{"atom":165}},{"Str":{"pattern":"6th"}},{"Str":{"pattern":"5th"}},{"Str":{"pattern":"4th"}},{"Str":{"pattern":"3rd"}},{"Str":{"pattern":"2nd"}},{"Str":{"pattern":"1st"}},{"Entity":{"atom":85}},{"Str":{"pattern":"th"}},{"Str":{"pattern":"nd"}},{"Str":{"pattern":"rd"}},{"Str":{"pattern":"st"}},{"Alternative":{"atoms":[158,159,160,161]}},{"Sequence":{"atoms":[157,162]}},{"Alternative":{"atoms":[151,152,153,154,155,156,163]}},{"Named":{"name":"edition","atom":164}},{"Repetition":{"atom":150,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":6}},{"Repetition":{"atom":167,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":172}},{"Str":{"pattern":"Edition"}},{"Str":{"pattern":"edition"}},{"Alternative":{"atoms":[170,171]}},{"Entity":{"atom":6}},{"Repetition":{"atom":173,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":56}},{"Named":{"name":"year","atom":175}},{"Sequence":{"atoms":[149,166,168,169,174,176]}},{"Named":{"name":"edition_format","atom":177}},{"Entity":{"atom":6}},{"Repetition":{"atom":179,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":182}},{"Str":{"pattern":":"}},{"Entity":{"atom":6}},{"Repetition":{"atom":183,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":56}},{"Named":{"name":"year","atom":185}},{"Sequence":{"atoms":[180,181,184,186]}},{"Entity":{"atom":6}},{"Repetition":{"atom":188,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":32}},{"Entity":{"atom":56}},{"Named":{"name":"year","atom":191}},{"Entity":{"atom":39}},{"Sequence":{"atoms":[189,190,192,193]}},{"Alternative":{"atoms":[146,187,194]}},{"Repetition":{"atom":145,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":214}},{"Entity":{"atom":6}},{"Entity":{"atom":207}},{"Entity":{"atom":85}},{"Entity":{"atom":202}},{"Str":{"pattern":"."}},{"Entity":{"atom":85}},{"Sequence":{"atoms":[200,201,203]}},{"Entity":{"atom":85}},{"Alternative":{"atoms":[204,205]}},{"Named":{"name":"iteration","atom":206}},{"Repetition":{"atom":199,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":213}},{"Str":{"pattern":"WD"}},{"Str":{"pattern":"CD"}},{"Alternative":{"atoms":[210,211]}},{"Named":{"name":"stage","atom":212}},{"Sequence":{"atoms":[198,208,209]}},{"Repetition":{"atom":197,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[63,68,81,196,215]}},{"Named":{"name":"base","atom":62}},{"Entity":{"atom":264}},{"Entity":{"atom":258}},{"Entity":{"atom":6}},{"Entity":{"atom":32}},{"Entity":{"atom":254}},{"Entity":{"atom":233}},{"Re":{"pattern":"[E]"}},{"Re":{"pattern":"[F]"}},{"Re":{"pattern":"[R]"}},{"Re":{"pattern":"[X]"}},{"Re":{"pattern":"[D]"}},{"Re":{"pattern":"[S]"}},{"Re":{"pattern":"[C]"}},{"Re":{"pattern":"[A]"}},{"Re":{"pattern":"[U]"}},{"Alternative":{"atoms":[224,225,226,227,228,229,230,231,232]}},{"Entity":{"atom":91}},{"Entity":{"atom":233}},{"Sequence":{"atoms":[223,234,235]}},{"Entity":{"atom":242}},{"Str":{"pattern":"PO"}},{"Str":{"pattern":"PT"}},{"Str":{"pattern":"PE"}},{"Str":{"pattern":"SR"}},{"Alternative":{"atoms":[238,239,240,241]}},{"Entity":{"atom":244}},{"Re":{"pattern":"[\\x41-\\x5a]"}},{"Entity":{"atom":246}},{"Re":{"pattern":"[\\x61-\\x7a]"}},{"Repetition":{"atom":245,"min":2,"max":2,"tag":"Repetition"}},{"Sequence":{"atoms":[243,247]}},{"Entity":{"atom":233}},{"Entity":{"atom":252}},{"Entity":{"atom":246}},{"Repetition":{"atom":251,"min":2,"max":2,"tag":"Repetition"}},{"Alternative":{"atoms":[236,237,248,249,250]}},{"Named":{"name":"language","atom":253}},{"Entity":{"atom":39}},{"Str":{"pattern":""}},{"Named":{"name":"space_before_lang","atom":256}},{"Sequence":{"atoms":[220,221,222,255,257]}},{"Entity":{"atom":263}},{"Entity":{"atom":32}},{"Entity":{"atom":254}},{"Entity":{"atom":39}},{"Sequence":{"atoms":[260,261,262]}},{"Alternative":{"atoms":[219,259]}},{"Named":{"name":"language","atom":218}},{"Repetition":{"atom":265,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[44,45,46,57,58,59,60,61,217,266]}},{"Entity":{"atom":294}},{"Entity":{"atom":67}},{"Entity":{"atom":80}},{"Entity":{"atom":144}},{"Named":{"name":"base_code","atom":271}},{"Entity":{"atom":6}},{"Str":{"pattern":"Amendment"}},{"Named":{"name":"amd_marker","atom":274}},{"Entity":{"atom":6}},{"Entity":{"atom":172}},{"Entity":{"atom":6}},{"Repetition":{"atom":278,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":56}},{"Named":{"name":"year","atom":280}},{"Sequence":{"atoms":[276,277,279,281]}},{"Named":{"name":"edition_format","atom":282}},{"Entity":{"atom":182}},{"Entity":{"atom":6}},{"Repetition":{"atom":285,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":56}},{"Named":{"name":"year","atom":287}},{"Sequence":{"atoms":[284,286,288]}},{"Alternative":{"atoms":[283,289]}},{"Entity":{"atom":264}},{"Named":{"name":"language","atom":291}},{"Repetition":{"atom":292,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[269,270,272,273,275,290,293]}},{"Entity":{"atom":324}},{"Entity":{"atom":216}},{"Named":{"name":"base","atom":296}},{"Entity":{"atom":6}},{"Str":{"pattern":"Annex"}},{"Entity":{"atom":6}},{"Entity":{"atom":308}},{"Entity":{"atom":244}},{"Entity":{"atom":4}},{"Entity":{"atom":244}},{"Sequence":{"atoms":[303,304]}},{"Repetition":{"atom":305,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[302,306]}},{"Named":{"name":"annex_letter","atom":307}},{"Entity":{"atom":6}},{"Entity":{"atom":172}},{"Entity":{"atom":6}},{"Entity":{"atom":56}},{"Named":{"name":"year","atom":312}},{"Sequence":{"atoms":[309,310,311,313]}},{"Entity":{"atom":182}},{"Entity":{"atom":56}},{"Named":{"name":"year","atom":316}},{"Sequence":{"atoms":[315,317]}},{"Alternative":{"atoms":[314,318]}},{"Repetition":{"atom":319,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":264}},{"Named":{"name":"language","atom":321}},{"Repetition":{"atom":322,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[297,298,299,300,301,320,323]}},{"Entity":{"atom":347}},{"Entity":{"atom":216}},{"Named":{"name":"base","atom":326}},{"Entity":{"atom":6}},{"Str":{"pattern":"Annexes"}},{"Named":{"name":"annex_marker","atom":329}},{"Entity":{"atom":6}},{"Entity":{"atom":172}},{"Entity":{"atom":6}},{"Entity":{"atom":56}},{"Named":{"name":"year","atom":334}},{"Sequence":{"atoms":[331,332,333,335]}},{"Named":{"name":"edition_format","atom":336}},{"Entity":{"atom":182}},{"Entity":{"atom":56}},{"Named":{"name":"year","atom":339}},{"Sequence":{"atoms":[338,340]}},{"Alternative":{"atoms":[337,341]}},{"Repetition":{"atom":342,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":264}},{"Named":{"name":"language","atom":344}},{"Repetition":{"atom":345,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[327,328,330,343,346]}},{"Entity":{"atom":365}},{"Entity":{"atom":216}},{"Named":{"name":"base","atom":349}},{"Entity":{"atom":352}},{"Str":{"pattern":"+"}},{"Str":{"pattern":"Amendment"}},{"Str":{"pattern":"Errata"}},{"Alternative":{"atoms":[353,354]}},{"Named":{"name":"plus_marker","atom":355}},{"Entity":{"atom":182}},{"Entity":{"atom":56}},{"Named":{"name":"year","atom":358}},{"Sequence":{"atoms":[357,359]}},{"Repetition":{"atom":360,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":264}},{"Named":{"name":"language","atom":362}},{"Repetition":{"atom":363,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[350,351,356,361,364]}},{"Entity":{"atom":383}},{"Entity":{"atom":216}},{"Named":{"name":"base","atom":367}},{"Entity":{"atom":6}},{"Str":{"pattern":"Amendment"}},{"Str":{"pattern":"Errata"}},{"Alternative":{"atoms":[370,371]}},{"Named":{"name":"trailing_marker","atom":372}},{"Entity":{"atom":6}},{"Entity":{"atom":21}},{"Repetition":{"atom":375,"min":1,"max":null,"tag":"Repetition"}},{"Named":{"name":"number","atom":376}},{"Sequence":{"atoms":[374,377]}},{"Repetition":{"atom":378,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":264}},{"Named":{"name":"language","atom":380}},{"Repetition":{"atom":381,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[368,369,373,379,382]}},{"Entity":{"atom":435}},{"Str":{"pattern":"OIML"}},{"Named":{"name":"publisher","atom":385}},{"Entity":{"atom":6}},{"Str":{"pattern":"Bulletin"}},{"Named":{"name":"type","atom":388}},{"Entity":{"atom":412}},{"Entity":{"atom":6}},{"Entity":{"atom":402}},{"Re":{"pattern":"[I]"}},{"Re":{"pattern":"[V]"}},{"Re":{"pattern":"[X]"}},{"Re":{"pattern":"[L]"}},{"Re":{"pattern":"[C]"}},{"Re":{"pattern":"[D]"}},{"Re":{"pattern":"[M]"}},{"Alternative":{"atoms":[393,394,395,396,397,398,399]}},{"Repetition":{"atom":400,"min":1,"max":null,"tag":"Repetition"}},{"Named":{"name":"volume_roman","atom":401}},{"Entity":{"atom":32}},{"Entity":{"atom":21}},{"Repetition":{"atom":404,"min":1,"max":null,"tag":"Repetition"}},{"Named":{"name":"issue_arabic","atom":405}},{"Entity":{"atom":39}},{"Entity":{"atom":6}},{"Entity":{"atom":21}},{"Repetition":{"atom":409,"min":8,"max":8,"tag":"Repetition"}},{"Named":{"name":"article_id","atom":410}},{"Sequence":{"atoms":[391,392,403,406,407,408,411]}},{"Entity":{"atom":429}},{"Entity":{"atom":6}},{"Entity":{"atom":56}},{"Named":{"name":"year","atom":415}},{"Entity":{"atom":4}},{"Entity":{"atom":420}},{"Entity":{"atom":21}},{"Repetition":{"atom":419,"min":2,"max":null,"tag":"Repetition"}},{"Named":{"name":"issue","atom":418}},{"Sequence":{"atoms":[417,421]}},{"Repetition":{"atom":422,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":4}},{"Entity":{"atom":420}},{"Named":{"name":"sequence","atom":425}},{"Sequence":{"atoms":[424,426]}},{"Repetition":{"atom":427,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[414,416,423,428]}},{"Alternative":{"atoms":[390,413]}},{"Repetition":{"atom":430,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":264}},{"Named":{"name":"language","atom":432}},{"Repetition":{"atom":433,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[386,387,389,431,434]}},{"Entity":{"atom":446}},{"Entity":{"atom":67}},{"Entity":{"atom":80}},{"Entity":{"atom":144}},{"Entity":{"atom":195}},{"Repetition":{"atom":440,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":214}},{"Repetition":{"atom":442,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":264}},{"Repetition":{"atom":444,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[437,438,439,441,443,445]}},{"Alternative":{"atoms":[0,43,268,295,325,348,366,384,436]}}],"root":447},"bindings":[]}},"preprocess":{},"tables":{},"lint":{"order_warnings":["rule roman_numeral: branches 1 and 2 are order-dependent (shared first bytes; ordered choice is decisive)","rule full_number: branches 1 and 2 are order-dependent (shared first bytes; ordered choice is decisive)","rule full_number: branches 1 and 3 are order-dependent (shared first bytes; ordered choice is decisive)","rule full_number: 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 date: branches 1 and 3 are order-dependent (shared first bytes; ordered choice is decisive)","rule date: branches 2 and 3 are order-dependent (shared first bytes; ordered choice is decisive)","rule lang_multi_oiml: branches 1 and 2 are order-dependent (shared first bytes; ordered choice is decisive)","rule lang_multi_oiml: branches 1 and 3 are order-dependent (shared first bytes; ordered choice is decisive)","rule lang_multi_oiml: branches 2 and 3 are order-dependent (shared first bytes; ordered choice is decisive)","rule identifier: branches 1 and 3 are order-dependent (shared first bytes; ordered choice is decisive)","rule identifier: branches 1 and 4 are order-dependent (shared first bytes; ordered choice is decisive)","rule identifier: branches 1 and 5 are order-dependent (shared first bytes; ordered choice is decisive)","rule identifier: branches 1 and 6 are order-dependent (shared first bytes; ordered choice is decisive)","rule identifier: branches 1 and 7 are order-dependent (shared first bytes; ordered choice is decisive)","rule identifier: branches 1 and 8 are order-dependent (shared first bytes; ordered choice is decisive)","rule identifier: branches 1 and 9 are order-dependent (shared first bytes; ordered choice is decisive)","rule identifier: branches 3 and 4 are order-dependent (shared first bytes; ordered choice is decisive)","rule identifier: branches 3 and 5 are order-dependent (shared first bytes; ordered choice is decisive)","rule identifier: branches 3 and 6 are order-dependent (shared first bytes; ordered choice is decisive)","rule identifier: branches 3 and 7 are order-dependent (shared first bytes; ordered choice is decisive)","rule identifier: branches 3 and 8 are order-dependent (shared first bytes; ordered choice is decisive)","rule identifier: branches 3 and 9 are order-dependent (shared first bytes; ordered choice is decisive)","rule identifier: branches 4 and 5 are order-dependent (shared first bytes; ordered choice is decisive)","rule identifier: branches 4 and 6 are order-dependent (shared first bytes; ordered choice is decisive)","rule identifier: branches 4 and 7 are order-dependent (shared first bytes; ordered choice is decisive)","rule identifier: branches 4 and 8 are order-dependent (shared first bytes; ordered choice is decisive)","rule identifier: branches 4 and 9 are order-dependent (shared first bytes; ordered choice is decisive)","rule identifier: branches 5 and 6 are order-dependent (shared first bytes; ordered choice is decisive)","rule identifier: branches 5 and 7 are order-dependent (shared first bytes; ordered choice is decisive)","rule identifier: branches 5 and 8 are order-dependent (shared first bytes; ordered choice is decisive)","rule identifier: branches 5 and 9 are order-dependent (shared first bytes; ordered choice is decisive)","rule identifier: branches 6 and 7 are order-dependent (shared first bytes; ordered choice is decisive)","rule identifier: branches 6 and 8 are order-dependent (shared first bytes; ordered choice is decisive)","rule identifier: branches 6 and 9 are order-dependent (shared first bytes; ordered choice is decisive)","rule identifier: branches 7 and 8 are order-dependent (shared first bytes; ordered choice is decisive)","rule identifier: branches 7 and 9 are order-dependent (shared first bytes; ordered choice is decisive)","rule identifier: branches 8 and 9 are order-dependent (shared first bytes; ordered choice is decisive)"]},"default_entry":"identifier","render":{},"derive":{},"tests":[{"entry":"identifier","kind":"accept","input":"OIML V 2 Edition 2007","expect":{}},{"entry":"identifier","kind":"accept","input":"OIML R 137-1:2012","expect":{}},{"entry":"identifier","kind":"accept","input":"OIML D 11","expect":{}},{"entry":"identifier","kind":"reject","input":"nonsense","expect":{}}],"docs":{},"source":"# Port of lib/pubid/oiml/parser.rb — OIML identifiers: the base form,\n# drafts, amendments (full/short/+/trailing), annexes, bulletins.\n\ngrammar PubidOiml version \"0.1.0\" {\n # The monorepo's doc_type is [BDEGRSV] — X is deliberately absent\n # (\"OIML X 99\" must be rejected).\n letter_bdegrsvx = %x42 / %x44 / %x45 / %x47 / %x52 / %x53 / %x56\n digit = %x30-39\n letter = %x41-5A / %x61-7A\n digits = 1*digit\n two_digits = 2*digit\n space = \" \"\n dash = \"-\"\n colon = \":\"\n slash = \"/\"\n lparen = \"(\"\n rparen = \")\"\n dot = \".\"\n plus = \"+\"\n century = \"19\" / \"20\"\n year_digits = century 2*digit !digit\n\n publisher = \"OIML\" as publisher space\n doc_type = letter_bdegrsvx as type space\n two_digits_c = two_digits\n\n bulletin_date = space year_digits as year [(dash two_digits as issue)] [(dash two_digits as sequence)]\n roman_numeral = 1*%x49 / 1*(%x49 / %x56 / %x58 / %x4C / %x43 / %x44 / %x4D)\n roman = (1*(%x49 / %x56 / %x58 / %x4C / %x43 / %x44 / %x4D)) as volume_roman\n bulletin_citation = space roman lparen (1*digit) as issue_arabic rparen space (8digit) as article_id\n bulletin_identifier = \"OIML\" as publisher space \"Bulletin\" as type [bulletin_citation / bulletin_date] [language_portion as language]\n\n number_only = digits as number\n part_number = dash (digits *(slash dash digits)) as part\n subpart_number = dash digits as subpart\n named_suffix_gum = dash (\"GUM\" space digits / (1*letter *(([\"_\"] digits)))) as code_suffix\n named_suffix_brochure = space \"Brochure\" as code_suffix (\"\" as space_suffix)\n named_suffix = named_suffix_gum / named_suffix_brochure\n full_number = (number_only part_number subpart_number [named_suffix]) / (number_only part_number [named_suffix]) / (number_only [named_suffix])\n\n edition_number = (\"6th\" / \"5th\" / \"4th\" / \"3rd\" / \"2nd\" / \"1st\" / (digits (\"th\" / \"nd\" / \"rd\" / \"st\"))) as edition\n edition_text = \"Edition\" / \"edition\"\n edition_portion = ((\", \" / space) [edition_number] [space] edition_text [space] year_digits as year) as edition_format\n date = edition_portion / ([space] colon [space] year_digits as year) / ([space] lparen year_digits as year rparen)\n stage_iteration = ((digits dot digits) / digits) as iteration\n stage_abbr = (\"WD\" / \"CD\") as stage\n draft_stage = space [stage_iteration] stage_abbr\n\n lang_single = %x45 / %x46 / %x52 / %x58 / %x44 / %x53 / %x43 / %x41 / %x55\n lang_multi_oiml = \"PO\" / \"PT\" / \"PE\" / \"SR\"\n lang_multi = 2*2lower\n lower = %x61-7A\n language_code = ((lang_single slash lang_single) / lang_multi_oiml / (upper 2*2lower) / lang_single / lang_multi) as language\n language_with_space = space lparen language_code rparen (\"\" as space_before_lang)\n language_without_space = lparen language_code rparen\n language_portion = language_with_space / language_without_space\n\n amendment_identifier = \"Amendment\" space lparen year_digits as year rparen space \"to\" space (base_without_language as base) [language_portion as language]\n amendment_short = publisher doc_type (full_number as base_code) space \"Amendment\" as amd_marker ((space edition_text [space] year_digits as year) as edition_format / (colon [space] year_digits as year)) [language_portion as language]\n trailing_supplement_identifier = (base_without_language as base) space (\"Amendment\" / \"Errata\") as trailing_marker [space ((1*digit)) as number] [language_portion as language]\n plus_supplement_identifier = (base_without_language as base) plus (\"Amendment\" / \"Errata\") as plus_marker [(colon year_digits as year)] [language_portion as language]\n annex_identifier = (base_without_language as base) space \"Annexes\" as annex_marker [((space edition_text space year_digits as year) as edition_format / (colon year_digits as year))] [language_portion as language]\n annex_letter_value = (upper [(dash upper)]) as annex_letter\n annex_letter_identifier = (base_without_language as base) space \"Annex\" space annex_letter_value [((space edition_text space year_digits as year) / (colon year_digits as year))] [language_portion as language]\n base_without_language = publisher doc_type full_number [date] [draft_stage]\n base = publisher doc_type full_number [date] [draft_stage] [language_portion]\n\n cs_identifier = (\"OIML\" as publisher (dash / space) \"CS\" as cs_series space (\"PD\" / \"OD\" / \"CID\") as cs_family (dash / space) as cs_separator (1*digit) as number space \"Edition\" space (1*digit) as edition [(space lparen \"Amendment\" space (1*digit) as cs_amendment rparen)])\n identifier = cs_identifier / amendment_identifier / amendment_short / annex_letter_identifier / annex_identifier / plus_supplement_identifier / trailing_supplement_identifier / bulletin_identifier / base\n\n upper = %x41-5A\n entry identifier: identifier\n\n test {\n accept \"OIML V 2 Edition 2007\"\n accept \"OIML R 137-1:2012\"\n accept \"OIML D 11\"\n reject \"nonsense\"\n }\n}\n","source_hash":"df21b7eded640f7f5df02e1e3e283f7d2a949fa9cc919485021041a9ad8964d3","compiler_version":"1.3.93","checksum":"sha256:9e6ccf869b05a85386ddd8835b16f32fe35970b33e069960014768382ccee6e5"}
|
|
1
|
+
{"bindings":null,"version":"0.1.0","grammar":"PubidOiml","shape":"parsanol-tree/v2","binding_version":1,"entries":{"identifier":{"root":"identifier","grammar":{"atoms":[{"Entity":{"atom":42}},{"Str":{"pattern":"OIML"}},{"Named":{"name":"publisher","atom":1}},{"Entity":{"atom":4}},{"Str":{"pattern":"-"}},{"Entity":{"atom":6}},{"Str":{"pattern":" "}},{"Alternative":{"atoms":[3,5]}},{"Str":{"pattern":"CS"}},{"Named":{"name":"cs_series","atom":8}},{"Entity":{"atom":6}},{"Str":{"pattern":"PD"}},{"Str":{"pattern":"OD"}},{"Str":{"pattern":"CID"}},{"Alternative":{"atoms":[11,12,13]}},{"Named":{"name":"cs_family","atom":14}},{"Entity":{"atom":4}},{"Entity":{"atom":6}},{"Alternative":{"atoms":[16,17]}},{"Named":{"name":"cs_separator","atom":18}},{"Entity":{"atom":21}},{"Re":{"pattern":"[\\x30-\\x39]"}},{"Repetition":{"atom":20,"min":1,"max":null,"tag":"Repetition"}},{"Named":{"name":"doc_number","atom":22}},{"Entity":{"atom":6}},{"Str":{"pattern":"Edition"}},{"Entity":{"atom":6}},{"Entity":{"atom":21}},{"Repetition":{"atom":27,"min":1,"max":null,"tag":"Repetition"}},{"Named":{"name":"edition","atom":28}},{"Entity":{"atom":6}},{"Entity":{"atom":32}},{"Str":{"pattern":"("}},{"Str":{"pattern":"Amendment"}},{"Entity":{"atom":6}},{"Entity":{"atom":21}},{"Repetition":{"atom":35,"min":1,"max":null,"tag":"Repetition"}},{"Named":{"name":"cs_amendment","atom":36}},{"Entity":{"atom":39}},{"Str":{"pattern":")"}},{"Sequence":{"atoms":[30,31,33,34,37,38]}},{"Repetition":{"atom":40,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[2,7,9,10,15,19,23,24,25,26,29,41]}},{"Entity":{"atom":285}},{"Str":{"pattern":"Amendment"}},{"Entity":{"atom":6}},{"Entity":{"atom":32}},{"Entity":{"atom":50}},{"Str":{"pattern":"19"}},{"Str":{"pattern":"20"}},{"Alternative":{"atoms":[48,49]}},{"Entity":{"atom":21}},{"Repetition":{"atom":51,"min":2,"max":null,"tag":"Repetition"}},{"Entity":{"atom":21}},{"Lookahead":{"atom":53,"positive":false}},{"Sequence":{"atoms":[47,52,54]}},{"Named":{"name":"supplement_year","atom":55}},{"Entity":{"atom":39}},{"Entity":{"atom":6}},{"Str":{"pattern":"to"}},{"Entity":{"atom":6}},{"Entity":{"atom":237}},{"Entity":{"atom":66}},{"Str":{"pattern":"OIML"}},{"Named":{"name":"publisher","atom":63}},{"Entity":{"atom":6}},{"Sequence":{"atoms":[64,65]}},{"Entity":{"atom":79}},{"Entity":{"atom":76}},{"Re":{"pattern":"[B]"}},{"Re":{"pattern":"[D]"}},{"Re":{"pattern":"[E]"}},{"Re":{"pattern":"[G]"}},{"Re":{"pattern":"[R]"}},{"Re":{"pattern":"[S]"}},{"Re":{"pattern":"[V]"}},{"Alternative":{"atoms":[69,70,71,72,73,74,75]}},{"Named":{"name":"type","atom":68}},{"Entity":{"atom":6}},{"Sequence":{"atoms":[77,78]}},{"Entity":{"atom":146}},{"Entity":{"atom":84}},{"Entity":{"atom":21}},{"Repetition":{"atom":82,"min":1,"max":null,"tag":"Repetition"}},{"Named":{"name":"number","atom":83}},{"Entity":{"atom":98}},{"Entity":{"atom":4}},{"Entity":{"atom":21}},{"Repetition":{"atom":87,"min":1,"max":null,"tag":"Repetition"}},{"Entity":{"atom":90}},{"Str":{"pattern":"/"}},{"Entity":{"atom":4}},{"Entity":{"atom":21}},{"Repetition":{"atom":92,"min":1,"max":null,"tag":"Repetition"}},{"Sequence":{"atoms":[89,91,93]}},{"Repetition":{"atom":94,"min":0,"max":null,"tag":"Repetition"}},{"Sequence":{"atoms":[88,95]}},{"Named":{"name":"part","atom":96}},{"Sequence":{"atoms":[86,97]}},{"Entity":{"atom":104}},{"Entity":{"atom":4}},{"Entity":{"atom":21}},{"Repetition":{"atom":101,"min":1,"max":null,"tag":"Repetition"}},{"Named":{"name":"subpart","atom":102}},{"Sequence":{"atoms":[100,103]}},{"Entity":{"atom":134}},{"Entity":{"atom":127}},{"Entity":{"atom":4}},{"Str":{"pattern":"GUM"}},{"Entity":{"atom":6}},{"Entity":{"atom":21}},{"Repetition":{"atom":110,"min":1,"max":null,"tag":"Repetition"}},{"Sequence":{"atoms":[108,109,111]}},{"Entity":{"atom":116}},{"Re":{"pattern":"[\\x41-\\x5a]"}},{"Re":{"pattern":"[\\x61-\\x7a]"}},{"Alternative":{"atoms":[114,115]}},{"Repetition":{"atom":113,"min":1,"max":null,"tag":"Repetition"}},{"Str":{"pattern":"_"}},{"Repetition":{"atom":118,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":21}},{"Repetition":{"atom":120,"min":1,"max":null,"tag":"Repetition"}},{"Sequence":{"atoms":[119,121]}},{"Repetition":{"atom":122,"min":0,"max":null,"tag":"Repetition"}},{"Sequence":{"atoms":[117,123]}},{"Alternative":{"atoms":[112,124]}},{"Named":{"name":"code_suffix","atom":125}},{"Sequence":{"atoms":[107,126]}},{"Entity":{"atom":133}},{"Entity":{"atom":6}},{"Named":{"name":"space_suffix","atom":129}},{"Str":{"pattern":"Brochure"}},{"Named":{"name":"code_suffix","atom":131}},{"Sequence":{"atoms":[130,132]}},{"Alternative":{"atoms":[106,128]}},{"Repetition":{"atom":105,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[81,85,99,135]}},{"Entity":{"atom":84}},{"Entity":{"atom":98}},{"Entity":{"atom":134}},{"Repetition":{"atom":139,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[137,138,140]}},{"Entity":{"atom":84}},{"Entity":{"atom":134}},{"Repetition":{"atom":143,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[142,144]}},{"Alternative":{"atoms":[136,141,145]}},{"Entity":{"atom":213}},{"Entity":{"atom":186}},{"Str":{"pattern":", "}},{"Entity":{"atom":6}},{"Alternative":{"atoms":[149,150]}},{"Entity":{"atom":168}},{"Str":{"pattern":"6th"}},{"Str":{"pattern":"5th"}},{"Str":{"pattern":"4th"}},{"Str":{"pattern":"3rd"}},{"Str":{"pattern":"2nd"}},{"Str":{"pattern":"1st"}},{"Entity":{"atom":21}},{"Repetition":{"atom":159,"min":1,"max":null,"tag":"Repetition"}},{"Str":{"pattern":"th"}},{"Str":{"pattern":"nd"}},{"Str":{"pattern":"rd"}},{"Str":{"pattern":"st"}},{"Alternative":{"atoms":[161,162,163,164]}},{"Sequence":{"atoms":[160,165]}},{"Alternative":{"atoms":[153,154,155,156,157,158,166]}},{"Named":{"name":"edition","atom":167}},{"Repetition":{"atom":152,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":6}},{"Repetition":{"atom":170,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":175}},{"Str":{"pattern":"Edition"}},{"Str":{"pattern":"edition"}},{"Alternative":{"atoms":[173,174]}},{"Named":{"name":"edition_format","atom":172}},{"Entity":{"atom":6}},{"Repetition":{"atom":177,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":50}},{"Entity":{"atom":21}},{"Repetition":{"atom":180,"min":2,"max":null,"tag":"Repetition"}},{"Entity":{"atom":21}},{"Lookahead":{"atom":182,"positive":false}},{"Sequence":{"atoms":[179,181,183]}},{"Named":{"name":"year","atom":184}},{"Sequence":{"atoms":[151,169,171,176,178,185]}},{"Entity":{"atom":6}},{"Repetition":{"atom":187,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":190}},{"Str":{"pattern":":"}},{"Entity":{"atom":6}},{"Repetition":{"atom":191,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":50}},{"Entity":{"atom":21}},{"Repetition":{"atom":194,"min":2,"max":null,"tag":"Repetition"}},{"Entity":{"atom":21}},{"Lookahead":{"atom":196,"positive":false}},{"Sequence":{"atoms":[193,195,197]}},{"Named":{"name":"year","atom":198}},{"Sequence":{"atoms":[188,189,192,199]}},{"Entity":{"atom":6}},{"Repetition":{"atom":201,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":32}},{"Entity":{"atom":50}},{"Entity":{"atom":21}},{"Repetition":{"atom":205,"min":2,"max":null,"tag":"Repetition"}},{"Entity":{"atom":21}},{"Lookahead":{"atom":207,"positive":false}},{"Sequence":{"atoms":[204,206,208]}},{"Named":{"name":"year","atom":209}},{"Entity":{"atom":39}},{"Sequence":{"atoms":[202,203,210,211]}},{"Alternative":{"atoms":[148,200,212]}},{"Repetition":{"atom":147,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":235}},{"Entity":{"atom":6}},{"Entity":{"atom":228}},{"Entity":{"atom":21}},{"Repetition":{"atom":218,"min":1,"max":null,"tag":"Repetition"}},{"Entity":{"atom":221}},{"Str":{"pattern":"."}},{"Entity":{"atom":21}},{"Repetition":{"atom":222,"min":1,"max":null,"tag":"Repetition"}},{"Sequence":{"atoms":[219,220,223]}},{"Entity":{"atom":21}},{"Repetition":{"atom":225,"min":1,"max":null,"tag":"Repetition"}},{"Alternative":{"atoms":[224,226]}},{"Named":{"name":"iteration","atom":227}},{"Repetition":{"atom":217,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":234}},{"Str":{"pattern":"WD"}},{"Str":{"pattern":"CD"}},{"Alternative":{"atoms":[231,232]}},{"Named":{"name":"stage","atom":233}},{"Sequence":{"atoms":[216,229,230]}},{"Repetition":{"atom":215,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[62,67,80,214,236]}},{"Named":{"name":"base","atom":61}},{"Entity":{"atom":283}},{"Entity":{"atom":277}},{"Entity":{"atom":6}},{"Named":{"name":"space_before_lang","atom":241}},{"Entity":{"atom":32}},{"Entity":{"atom":275}},{"Entity":{"atom":255}},{"Re":{"pattern":"[E]"}},{"Re":{"pattern":"[F]"}},{"Re":{"pattern":"[R]"}},{"Re":{"pattern":"[X]"}},{"Re":{"pattern":"[D]"}},{"Re":{"pattern":"[S]"}},{"Re":{"pattern":"[C]"}},{"Re":{"pattern":"[A]"}},{"Re":{"pattern":"[U]"}},{"Alternative":{"atoms":[246,247,248,249,250,251,252,253,254]}},{"Entity":{"atom":90}},{"Entity":{"atom":255}},{"Sequence":{"atoms":[245,256,257]}},{"Entity":{"atom":264}},{"Str":{"pattern":"PO"}},{"Str":{"pattern":"PT"}},{"Str":{"pattern":"PE"}},{"Str":{"pattern":"SR"}},{"Alternative":{"atoms":[260,261,262,263]}},{"Entity":{"atom":266}},{"Re":{"pattern":"[\\x41-\\x5a]"}},{"Entity":{"atom":268}},{"Re":{"pattern":"[\\x61-\\x7a]"}},{"Repetition":{"atom":267,"min":2,"max":2,"tag":"Repetition"}},{"Sequence":{"atoms":[265,269]}},{"Entity":{"atom":255}},{"Entity":{"atom":268}},{"Repetition":{"atom":272,"min":2,"max":2,"tag":"Repetition"}},{"Alternative":{"atoms":[258,259,270,271,273]}},{"Named":{"name":"language","atom":274}},{"Entity":{"atom":39}},{"Sequence":{"atoms":[242,243,244,276]}},{"Entity":{"atom":282}},{"Entity":{"atom":32}},{"Entity":{"atom":275}},{"Entity":{"atom":39}},{"Sequence":{"atoms":[279,280,281]}},{"Alternative":{"atoms":[240,278]}},{"Repetition":{"atom":239,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[44,45,46,56,57,58,59,60,238,284]}},{"Entity":{"atom":321}},{"Entity":{"atom":66}},{"Entity":{"atom":79}},{"Entity":{"atom":146}},{"Named":{"name":"base_code","atom":289}},{"Entity":{"atom":6}},{"Str":{"pattern":"Amendment"}},{"Named":{"name":"amd_marker","atom":292}},{"Entity":{"atom":6}},{"Entity":{"atom":175}},{"Named":{"name":"supplement_edition_format","atom":295}},{"Entity":{"atom":6}},{"Repetition":{"atom":297,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":50}},{"Entity":{"atom":21}},{"Repetition":{"atom":300,"min":2,"max":null,"tag":"Repetition"}},{"Entity":{"atom":21}},{"Lookahead":{"atom":302,"positive":false}},{"Sequence":{"atoms":[299,301,303]}},{"Named":{"name":"supplement_year","atom":304}},{"Sequence":{"atoms":[294,296,298,305]}},{"Entity":{"atom":190}},{"Entity":{"atom":6}},{"Repetition":{"atom":308,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":50}},{"Entity":{"atom":21}},{"Repetition":{"atom":311,"min":2,"max":null,"tag":"Repetition"}},{"Entity":{"atom":21}},{"Lookahead":{"atom":313,"positive":false}},{"Sequence":{"atoms":[310,312,314]}},{"Named":{"name":"supplement_year","atom":315}},{"Sequence":{"atoms":[307,309,316]}},{"Alternative":{"atoms":[306,317]}},{"Entity":{"atom":283}},{"Repetition":{"atom":319,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[287,288,290,291,293,318,320]}},{"Entity":{"atom":360}},{"Entity":{"atom":237}},{"Named":{"name":"base","atom":323}},{"Entity":{"atom":6}},{"Str":{"pattern":"Annex"}},{"Entity":{"atom":6}},{"Entity":{"atom":335}},{"Entity":{"atom":266}},{"Entity":{"atom":4}},{"Entity":{"atom":266}},{"Sequence":{"atoms":[330,331]}},{"Repetition":{"atom":332,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[329,333]}},{"Named":{"name":"annex_letter","atom":334}},{"Entity":{"atom":6}},{"Entity":{"atom":175}},{"Entity":{"atom":6}},{"Entity":{"atom":50}},{"Entity":{"atom":21}},{"Repetition":{"atom":340,"min":2,"max":null,"tag":"Repetition"}},{"Entity":{"atom":21}},{"Lookahead":{"atom":342,"positive":false}},{"Sequence":{"atoms":[339,341,343]}},{"Named":{"name":"supplement_year","atom":344}},{"Sequence":{"atoms":[336,337,338,345]}},{"Entity":{"atom":190}},{"Entity":{"atom":50}},{"Entity":{"atom":21}},{"Repetition":{"atom":349,"min":2,"max":null,"tag":"Repetition"}},{"Entity":{"atom":21}},{"Lookahead":{"atom":351,"positive":false}},{"Sequence":{"atoms":[348,350,352]}},{"Named":{"name":"supplement_year","atom":353}},{"Sequence":{"atoms":[347,354]}},{"Alternative":{"atoms":[346,355]}},{"Repetition":{"atom":356,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":283}},{"Repetition":{"atom":358,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[324,325,326,327,328,357,359]}},{"Entity":{"atom":392}},{"Entity":{"atom":237}},{"Named":{"name":"base","atom":362}},{"Entity":{"atom":6}},{"Str":{"pattern":"Annexes"}},{"Named":{"name":"annex_marker","atom":365}},{"Entity":{"atom":6}},{"Entity":{"atom":175}},{"Named":{"name":"supplement_edition_format","atom":368}},{"Entity":{"atom":6}},{"Entity":{"atom":50}},{"Entity":{"atom":21}},{"Repetition":{"atom":372,"min":2,"max":null,"tag":"Repetition"}},{"Entity":{"atom":21}},{"Lookahead":{"atom":374,"positive":false}},{"Sequence":{"atoms":[371,373,375]}},{"Named":{"name":"supplement_year","atom":376}},{"Sequence":{"atoms":[367,369,370,377]}},{"Entity":{"atom":190}},{"Entity":{"atom":50}},{"Entity":{"atom":21}},{"Repetition":{"atom":381,"min":2,"max":null,"tag":"Repetition"}},{"Entity":{"atom":21}},{"Lookahead":{"atom":383,"positive":false}},{"Sequence":{"atoms":[380,382,384]}},{"Named":{"name":"supplement_year","atom":385}},{"Sequence":{"atoms":[379,386]}},{"Alternative":{"atoms":[378,387]}},{"Repetition":{"atom":388,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":283}},{"Repetition":{"atom":390,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[363,364,366,389,391]}},{"Entity":{"atom":415}},{"Entity":{"atom":237}},{"Named":{"name":"base","atom":394}},{"Entity":{"atom":397}},{"Str":{"pattern":"+"}},{"Named":{"name":"plus","atom":396}},{"Str":{"pattern":"Amendment"}},{"Str":{"pattern":"Errata"}},{"Alternative":{"atoms":[399,400]}},{"Named":{"name":"plus_marker","atom":401}},{"Entity":{"atom":190}},{"Entity":{"atom":50}},{"Entity":{"atom":21}},{"Repetition":{"atom":405,"min":2,"max":null,"tag":"Repetition"}},{"Entity":{"atom":21}},{"Lookahead":{"atom":407,"positive":false}},{"Sequence":{"atoms":[404,406,408]}},{"Named":{"name":"supplement_year","atom":409}},{"Sequence":{"atoms":[403,410]}},{"Repetition":{"atom":411,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":283}},{"Repetition":{"atom":413,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[395,398,402,412,414]}},{"Entity":{"atom":432}},{"Entity":{"atom":237}},{"Named":{"name":"base","atom":417}},{"Entity":{"atom":6}},{"Str":{"pattern":"Amendment"}},{"Str":{"pattern":"Errata"}},{"Alternative":{"atoms":[420,421]}},{"Named":{"name":"trailing_marker","atom":422}},{"Entity":{"atom":6}},{"Entity":{"atom":21}},{"Repetition":{"atom":425,"min":1,"max":null,"tag":"Repetition"}},{"Named":{"name":"supplement_number","atom":426}},{"Sequence":{"atoms":[424,427]}},{"Repetition":{"atom":428,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":283}},{"Repetition":{"atom":430,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[418,419,423,429,431]}},{"Entity":{"atom":488}},{"Str":{"pattern":"OIML"}},{"Named":{"name":"publisher","atom":434}},{"Entity":{"atom":6}},{"Str":{"pattern":"Bulletin"}},{"Named":{"name":"type","atom":437}},{"Entity":{"atom":461}},{"Entity":{"atom":6}},{"Entity":{"atom":451}},{"Re":{"pattern":"[I]"}},{"Re":{"pattern":"[V]"}},{"Re":{"pattern":"[X]"}},{"Re":{"pattern":"[L]"}},{"Re":{"pattern":"[C]"}},{"Re":{"pattern":"[D]"}},{"Re":{"pattern":"[M]"}},{"Alternative":{"atoms":[442,443,444,445,446,447,448]}},{"Repetition":{"atom":449,"min":1,"max":null,"tag":"Repetition"}},{"Named":{"name":"volume_roman","atom":450}},{"Entity":{"atom":32}},{"Entity":{"atom":21}},{"Repetition":{"atom":453,"min":1,"max":null,"tag":"Repetition"}},{"Named":{"name":"issue_arabic","atom":454}},{"Entity":{"atom":39}},{"Entity":{"atom":6}},{"Entity":{"atom":21}},{"Repetition":{"atom":458,"min":8,"max":null,"tag":"Repetition"}},{"Named":{"name":"article_id","atom":459}},{"Sequence":{"atoms":[440,441,452,455,456,457,460]}},{"Entity":{"atom":483}},{"Entity":{"atom":6}},{"Entity":{"atom":50}},{"Entity":{"atom":21}},{"Repetition":{"atom":465,"min":2,"max":null,"tag":"Repetition"}},{"Entity":{"atom":21}},{"Lookahead":{"atom":467,"positive":false}},{"Sequence":{"atoms":[464,466,468]}},{"Named":{"name":"doc_year","atom":469}},{"Entity":{"atom":4}},{"Entity":{"atom":21}},{"Repetition":{"atom":472,"min":2,"max":null,"tag":"Repetition"}},{"Named":{"name":"issue","atom":473}},{"Sequence":{"atoms":[471,474]}},{"Repetition":{"atom":475,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":4}},{"Entity":{"atom":21}},{"Repetition":{"atom":478,"min":2,"max":null,"tag":"Repetition"}},{"Named":{"name":"sequence","atom":479}},{"Sequence":{"atoms":[477,480]}},{"Repetition":{"atom":481,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[463,470,476,482]}},{"Alternative":{"atoms":[439,462]}},{"Repetition":{"atom":484,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":283}},{"Repetition":{"atom":486,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[435,436,438,485,487]}},{"Entity":{"atom":564}},{"Entity":{"atom":66}},{"Entity":{"atom":79}},{"Entity":{"atom":511}},{"Entity":{"atom":496}},{"Entity":{"atom":21}},{"Repetition":{"atom":494,"min":1,"max":null,"tag":"Repetition"}},{"Named":{"name":"doc_number","atom":495}},{"Entity":{"atom":98}},{"Entity":{"atom":104}},{"Entity":{"atom":134}},{"Repetition":{"atom":499,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[493,497,498,500]}},{"Entity":{"atom":496}},{"Entity":{"atom":98}},{"Entity":{"atom":134}},{"Repetition":{"atom":504,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[502,503,505]}},{"Entity":{"atom":496}},{"Entity":{"atom":134}},{"Repetition":{"atom":508,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[507,509]}},{"Alternative":{"atoms":[501,506,510]}},{"Entity":{"atom":558}},{"Entity":{"atom":532}},{"Str":{"pattern":", "}},{"Entity":{"atom":6}},{"Alternative":{"atoms":[514,515]}},{"Entity":{"atom":168}},{"Repetition":{"atom":517,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":6}},{"Repetition":{"atom":519,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":175}},{"Named":{"name":"doc_edition_format","atom":521}},{"Entity":{"atom":6}},{"Repetition":{"atom":523,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":50}},{"Entity":{"atom":21}},{"Repetition":{"atom":526,"min":2,"max":null,"tag":"Repetition"}},{"Entity":{"atom":21}},{"Lookahead":{"atom":528,"positive":false}},{"Sequence":{"atoms":[525,527,529]}},{"Named":{"name":"doc_year","atom":530}},{"Sequence":{"atoms":[516,518,520,522,524,531]}},{"Entity":{"atom":6}},{"Repetition":{"atom":533,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":190}},{"Entity":{"atom":6}},{"Repetition":{"atom":536,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":50}},{"Entity":{"atom":21}},{"Repetition":{"atom":539,"min":2,"max":null,"tag":"Repetition"}},{"Entity":{"atom":21}},{"Lookahead":{"atom":541,"positive":false}},{"Sequence":{"atoms":[538,540,542]}},{"Named":{"name":"doc_year","atom":543}},{"Sequence":{"atoms":[534,535,537,544]}},{"Entity":{"atom":6}},{"Repetition":{"atom":546,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":32}},{"Entity":{"atom":50}},{"Entity":{"atom":21}},{"Repetition":{"atom":550,"min":2,"max":null,"tag":"Repetition"}},{"Entity":{"atom":21}},{"Lookahead":{"atom":552,"positive":false}},{"Sequence":{"atoms":[549,551,553]}},{"Named":{"name":"doc_year","atom":554}},{"Entity":{"atom":39}},{"Sequence":{"atoms":[547,548,555,556]}},{"Alternative":{"atoms":[513,545,557]}},{"Repetition":{"atom":512,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":235}},{"Repetition":{"atom":560,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":283}},{"Repetition":{"atom":562,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[490,491,492,559,561,563]}},{"Alternative":{"atoms":[0,43,286,322,361,393,416,433,489]}}],"root":565},"bindings":[{"capture":"base","path":"base","type":"raw","card":null,"preprocess":null},{"capture":"base_code","path":"base_code","type":"raw","card":null,"preprocess":null},{"capture":"doc_number","path":"number","type":"string","card":null,"preprocess":null},{"capture":"supplement_number","path":"number","type":"string","card":null,"preprocess":null},{"capture":"part","path":"part","type":"string","card":null,"preprocess":null},{"capture":"subpart","path":"subpart","type":"string","card":null,"preprocess":null},{"capture":"code_suffix","path":"code_suffix","type":"string","card":null,"preprocess":null},{"capture":"space_suffix","path":"space_suffix","type":"string","card":null,"preprocess":null},{"capture":"publisher","path":"publisher","type":"string","card":null,"preprocess":null},{"capture":"type","path":"type","type":"string","card":null,"preprocess":null},{"capture":"doc_year","path":"year","type":"string","card":null,"preprocess":null},{"capture":"supplement_year","path":"year","type":"string","card":null,"preprocess":null},{"capture":"issue","path":"issue","type":"string","card":null,"preprocess":null},{"capture":"sequence","path":"sequence","type":"string","card":null,"preprocess":null},{"capture":"volume_roman","path":"volume_roman","type":"string","card":null,"preprocess":null},{"capture":"issue_arabic","path":"issue_arabic","type":"string","card":null,"preprocess":null},{"capture":"article_id","path":"article_id","type":"string","card":null,"preprocess":null},{"capture":"language","path":"language","type":"string","card":null,"preprocess":null},{"capture":"space_before_lang","path":"space_before_lang","type":"string","card":null,"preprocess":null},{"capture":"edition","path":"edition","type":"string","card":null,"preprocess":null},{"capture":"iteration","path":"iteration","type":"string","card":null,"preprocess":null},{"capture":"stage","path":"stage","type":"string","card":null,"preprocess":null},{"capture":"amd_marker","path":"amd_marker","type":"string","card":null,"preprocess":null},{"capture":"doc_edition_format","path":"edition_format","type":"string","card":null,"preprocess":null},{"capture":"supplement_edition_format","path":"edition_format","type":"string","card":null,"preprocess":null},{"capture":"trailing_marker","path":"trailing_marker","type":"string","card":null,"preprocess":null},{"capture":"plus_marker","path":"plus_marker","type":"string","card":null,"preprocess":null},{"capture":"annex_marker","path":"annex_marker","type":"string","card":null,"preprocess":null},{"capture":"annex_letter","path":"annex_letter","type":"string","card":null,"preprocess":null},{"capture":"cs_series","path":"cs_series","type":"string","card":null,"preprocess":null},{"capture":"cs_family","path":"cs_family","type":"string","card":null,"preprocess":null},{"capture":"cs_separator","path":"cs_separator","type":"string","card":null,"preprocess":null},{"capture":"cs_amendment","path":"cs_amendment","type":"string","card":null,"preprocess":null}]}},"preprocess":{},"tables":{},"lint":{"order_warnings":["rule roman_numeral: branches 1 and 2 are order-dependent (shared first bytes; ordered choice is decisive)","rule full_number: branches 1 and 2 are order-dependent (shared first bytes; ordered choice is decisive)","rule full_number: branches 1 and 3 are order-dependent (shared first bytes; ordered choice is decisive)","rule full_number: branches 2 and 3 are order-dependent (shared first bytes; ordered choice is decisive)","rule full_number_plain: branches 1 and 2 are order-dependent (shared first bytes; ordered choice is decisive)","rule full_number_plain: branches 1 and 3 are order-dependent (shared first bytes; ordered choice is decisive)","rule full_number_plain: 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 date: branches 1 and 3 are order-dependent (shared first bytes; ordered choice is decisive)","rule date: branches 2 and 3 are order-dependent (shared first bytes; ordered choice is decisive)","rule date_plain: branches 1 and 2 are order-dependent (shared first bytes; ordered choice is decisive)","rule date_plain: branches 1 and 3 are order-dependent (shared first bytes; ordered choice is decisive)","rule date_plain: branches 2 and 3 are order-dependent (shared first bytes; ordered choice is decisive)","rule lang_multi_oiml: branches 1 and 2 are order-dependent (shared first bytes; ordered choice is decisive)","rule lang_multi_oiml: branches 1 and 3 are order-dependent (shared first bytes; ordered choice is decisive)","rule lang_multi_oiml: branches 2 and 3 are order-dependent (shared first bytes; ordered choice is decisive)","rule identifier: branches 1 and 3 are order-dependent (shared first bytes; ordered choice is decisive)","rule identifier: branches 1 and 4 are order-dependent (shared first bytes; ordered choice is decisive)","rule identifier: branches 1 and 5 are order-dependent (shared first bytes; ordered choice is decisive)","rule identifier: branches 1 and 6 are order-dependent (shared first bytes; ordered choice is decisive)","rule identifier: branches 1 and 7 are order-dependent (shared first bytes; ordered choice is decisive)","rule identifier: branches 1 and 8 are order-dependent (shared first bytes; ordered choice is decisive)","rule identifier: branches 1 and 9 are order-dependent (shared first bytes; ordered choice is decisive)","rule identifier: branches 3 and 4 are order-dependent (shared first bytes; ordered choice is decisive)","rule identifier: branches 3 and 5 are order-dependent (shared first bytes; ordered choice is decisive)","rule identifier: branches 3 and 6 are order-dependent (shared first bytes; ordered choice is decisive)","rule identifier: branches 3 and 7 are order-dependent (shared first bytes; ordered choice is decisive)","rule identifier: branches 3 and 8 are order-dependent (shared first bytes; ordered choice is decisive)","rule identifier: branches 3 and 9 are order-dependent (shared first bytes; ordered choice is decisive)","rule identifier: branches 4 and 5 are order-dependent (shared first bytes; ordered choice is decisive)","rule identifier: branches 4 and 6 are order-dependent (shared first bytes; ordered choice is decisive)","rule identifier: branches 4 and 7 are order-dependent (shared first bytes; ordered choice is decisive)","rule identifier: branches 4 and 8 are order-dependent (shared first bytes; ordered choice is decisive)","rule identifier: branches 4 and 9 are order-dependent (shared first bytes; ordered choice is decisive)","rule identifier: branches 5 and 6 are order-dependent (shared first bytes; ordered choice is decisive)","rule identifier: branches 5 and 7 are order-dependent (shared first bytes; ordered choice is decisive)","rule identifier: branches 5 and 8 are order-dependent (shared first bytes; ordered choice is decisive)","rule identifier: branches 5 and 9 are order-dependent (shared first bytes; ordered choice is decisive)","rule identifier: branches 6 and 7 are order-dependent (shared first bytes; ordered choice is decisive)","rule identifier: branches 6 and 8 are order-dependent (shared first bytes; ordered choice is decisive)","rule identifier: branches 6 and 9 are order-dependent (shared first bytes; ordered choice is decisive)","rule identifier: branches 7 and 8 are order-dependent (shared first bytes; ordered choice is decisive)","rule identifier: branches 7 and 9 are order-dependent (shared first bytes; ordered choice is decisive)","rule identifier: branches 8 and 9 are order-dependent (shared first bytes; ordered choice is decisive)"]},"default_entry":"identifier","render":{},"derive":{},"tests":[{"entry":"identifier","kind":"accept","input":"OIML V 2 Edition 2007","expect":{}},{"entry":"identifier","kind":"accept","input":"OIML R 137-1:2012","expect":{}},{"entry":"identifier","kind":"accept","input":"OIML D 11","expect":{}},{"entry":"identifier","kind":"accept","input":"OIML D 11 Brochure","expect":{}},{"entry":"identifier","kind":"accept","input":"OIML R 126:2015 Errata (E)","expect":{}},{"entry":"identifier","kind":"accept","input":"OIML B 20 Annexes","expect":{}},{"entry":"identifier","kind":"accept","input":"OIML V 2 (E)","expect":{}},{"entry":"identifier","kind":"accept","input":"OIML-CS PD-05 Edition 6 (Amendment 1)","expect":{}},{"entry":"identifier","kind":"accept","input":"OIML R 138:2009 Amendment 1","expect":{}},{"entry":"identifier","kind":"reject","input":"nonsense","expect":{}}],"docs":{},"source":"# Port of lib/pubid/oiml/parser.rb — OIML identifiers: the base form,\n# drafts, amendments (full/short/+/trailing), annexes, bulletins.\n#\n# Edition-2 conversion. The builder dispatches on the supplement\n# wrappers (parsed_hash[:base] -> build_supplement recursing into the\n# nested hash; parsed_hash[:base_code] on the short amendment), so both\n# keep their v1 shape and bind uncast with (raw). Because the flat\n# binding layer is global by capture name, the base's number (nested\n# key :number, read by the recursive build) is a different capture from\n# the two spellings the TOP-LEVEL :number must carry: the plain\n# document's number (doc_number) and the trailing supplement's own\n# ordinal (supplement_number) — both bind to the output key :number,\n# and the branches are disjoint so they never collide. Zero-width\n# markers: (\"\" as space_suffix) is re-spelled as a real-token capture\n# of the space it flagged (`space as space_suffix` — the key stays\n# present exactly when the \"Brochure\" suffix matched, so the builder's\n# .key? check and the space-separated rendering are unchanged);\n# (\"\" as space_before_lang) likewise becomes `space as space_before_lang`.\n# The composite edition_format wrapper becomes a real-token capture of\n# the \"Edition\"/\"edition\" word (truthiness and the long-format flag are\n# preserved; the builder re-reads year/edition flat). Pure-raw rule\n# bodies are inlined at capture sites (digits, alnum, lang_multi,\n# year_digits) so every capture binds one span.\n\ngrammar PubidOiml version \"0.1.0\" edition 2 {\n # The monorepo's doc_type is [BDEGRSV] — X is deliberately absent\n # (\"OIML X 99\" must be rejected).\n letter_bdegrsvx = %x42 / %x44 / %x45 / %x47 / %x52 / %x53 / %x56\n digit = %x30-39\n letter = %x41-5A / %x61-7A\n upper = %x41-5A\n lower = %x61-7A\n space = \" \"\n dash = \"-\"\n colon = \":\"\n slash = \"/\"\n lparen = \"(\"\n rparen = \")\"\n dot = \".\"\n plus = \"+\"\n century = \"19\" / \"20\"\n year_digits = century 2*digit !digit\n\n publisher = \"OIML\" as publisher space\n doc_type = letter_bdegrsvx as type space\n\n bulletin_date = {\n space\n (century 2*digit !digit) as doc_year\n [(dash (2*digit) as issue)]\n [(dash (2*digit) as sequence)]\n }\n roman_numeral = 1*%x49 / 1*(%x49 / %x56 / %x58 / %x4C / %x43 / %x44 / %x4D)\n roman = (1*(%x49 / %x56 / %x58 / %x4C / %x43 / %x44 / %x4D)) as volume_roman\n bulletin_citation = {\n space\n roman\n lparen\n ((1*digit)) as issue_arabic\n rparen\n space\n ((8*digit)) as article_id\n }\n bulletin_identifier = {\n \"OIML\" as publisher\n space\n \"Bulletin\" as type\n [bulletin_citation / bulletin_date]\n [language_portion]\n }\n\n number_only = ((1*digit)) as number\n part_number = dash (((1*digit) *((slash dash (1*digit)))) as part)\n subpart_number = dash ((1*digit)) as subpart\n named_suffix_gum = dash (\"GUM\" space (1*digit) / ((1*letter) *(([\"_\"] (1*digit))))) as code_suffix\n named_suffix_brochure = (space) as space_suffix \"Brochure\" as code_suffix\n named_suffix = named_suffix_gum / named_suffix_brochure\n full_number = {\n (\n ((number_only) part_number subpart_number [named_suffix])\n / ((number_only) part_number [named_suffix])\n / ((number_only) [named_suffix])\n )\n }\n doc_number_only = ((1*digit)) as doc_number\n full_number_plain = {\n (\n ((doc_number_only) part_number subpart_number [named_suffix])\n / ((doc_number_only) part_number [named_suffix])\n / ((doc_number_only) [named_suffix])\n )\n }\n\n edition_number = {\n (\n \"6th\"\n / \"5th\"\n / \"4th\"\n / \"3rd\"\n / \"2nd\"\n / \"1st\"\n / ((1*digit) (\"th\" / \"nd\" / \"rd\" / \"st\"))\n ) as edition\n }\n edition_text = \"Edition\" / \"edition\"\n edition_portion = {\n (\n (\", \" / space)\n [(edition_number)]\n [space]\n (edition_text) as edition_format\n [space]\n (century 2*digit !digit) as year\n )\n }\n date = {\n edition_portion\n / ([space] colon [space] (century 2*digit !digit) as year)\n / ([space] lparen (century 2*digit !digit) as year rparen)\n }\n edition_portion_plain = {\n (\n (\", \" / space)\n [(edition_number)]\n [space]\n (edition_text) as doc_edition_format\n [space]\n (century 2*digit !digit) as doc_year\n )\n }\n date_plain = {\n edition_portion_plain\n / ([space] colon [space] (century 2*digit !digit) as doc_year)\n / ([space] lparen (century 2*digit !digit) as doc_year rparen)\n }\n stage_iteration = ((((1*digit) dot (1*digit))) / (1*digit)) as iteration\n stage_abbr = (\"WD\" / \"CD\") as stage\n draft_stage = space [stage_iteration] stage_abbr\n\n lang_single = %x45 / %x46 / %x52 / %x58 / %x44 / %x53 / %x43 / %x41 / %x55\n lang_multi_oiml = \"PO\" / \"PT\" / \"PE\" / \"SR\"\n language_code = {\n (\n (\n ((lang_single) slash (lang_single))\n / lang_multi_oiml\n / ((upper) 2*2lower)\n / (lang_single)\n / (2*2lower)\n ) as language\n )\n }\n language_with_space = (space) as space_before_lang lparen language_code rparen\n language_without_space = lparen language_code rparen\n language_portion = language_with_space / language_without_space\n\n amendment_identifier = {\n \"Amendment\"\n space\n lparen\n (century 2*digit !digit) as supplement_year\n rparen\n space\n \"to\"\n space\n ((base_without_language)) as base\n [language_portion]\n }\n amendment_short = {\n publisher\n doc_type\n ((full_number)) as base_code\n space\n \"Amendment\" as amd_marker\n (\n (\n (\n space (edition_text) as supplement_edition_format\n [space]\n (century 2*digit !digit) as supplement_year\n )\n )\n / (colon [space] (century 2*digit !digit) as supplement_year)\n )\n [language_portion]\n }\n trailing_supplement_identifier = {\n ((base_without_language)) as base\n space\n (\"Amendment\" / \"Errata\") as trailing_marker\n [space ((1*digit)) as supplement_number]\n [language_portion]\n }\n plus_supplement_identifier = {\n ((base_without_language)) as base\n plus\n (\"Amendment\" / \"Errata\") as plus_marker\n [(colon (century 2*digit !digit) as supplement_year)]\n [language_portion]\n }\n annex_identifier = {\n ((base_without_language)) as base\n space\n \"Annexes\" as annex_marker\n [\n (\n (\n (\n space (edition_text) as supplement_edition_format\n space\n (century 2*digit !digit) as supplement_year\n )\n )\n / (colon (century 2*digit !digit) as supplement_year)\n )\n ]\n [language_portion]\n }\n annex_letter_value = (((upper) [(dash upper)])) as annex_letter\n annex_letter_identifier = {\n ((base_without_language)) as base\n space\n \"Annex\"\n space\n annex_letter_value\n [\n (\n (\n (\n space\n edition_text\n space\n (century 2*digit !digit) as supplement_year\n )\n )\n / (colon (century 2*digit !digit) as supplement_year)\n )\n ]\n [language_portion]\n }\n base_without_language = publisher doc_type full_number [date] [draft_stage]\n base = publisher doc_type full_number_plain [date_plain] [draft_stage] [language_portion]\n\n cs_identifier = {\n (\n \"OIML\" as publisher\n (dash / space)\n \"CS\" as cs_series\n space\n (\"PD\" / \"OD\" / \"CID\") as cs_family\n (dash / space) as cs_separator\n ((1*digit)) as doc_number\n space\n \"Edition\"\n space\n ((1*digit)) as edition\n [(space lparen \"Amendment\" space ((1*digit)) as cs_amendment rparen)]\n )\n }\n identifier = {\n cs_identifier\n / amendment_identifier\n / amendment_short\n / annex_letter_identifier\n / annex_identifier\n / plus_supplement_identifier\n / trailing_supplement_identifier\n / bulletin_identifier\n / base\n }\n\n entry identifier: identifier\n\n bindings identifier {\n base -> base (raw)\n base_code -> base_code (raw)\n doc_number -> number (string)\n supplement_number -> number (string)\n part -> part (string)\n subpart -> subpart (string)\n code_suffix -> code_suffix (string)\n space_suffix -> space_suffix (string)\n publisher -> publisher (string)\n type -> type (string)\n doc_year -> year (string)\n supplement_year -> year (string)\n issue -> issue (string)\n sequence -> sequence (string)\n volume_roman -> volume_roman (string)\n issue_arabic -> issue_arabic (string)\n article_id -> article_id (string)\n language -> language (string)\n space_before_lang -> space_before_lang (string)\n edition -> edition (string)\n iteration -> iteration (string)\n stage -> stage (string)\n amd_marker -> amd_marker (string)\n doc_edition_format -> edition_format (string)\n supplement_edition_format -> edition_format (string)\n trailing_marker -> trailing_marker (string)\n plus_marker -> plus_marker (string)\n annex_marker -> annex_marker (string)\n annex_letter -> annex_letter (string)\n cs_series -> cs_series (string)\n cs_family -> cs_family (string)\n cs_separator -> cs_separator (string)\n cs_amendment -> cs_amendment (string)\n }\n\n test {\n accept \"OIML V 2 Edition 2007\"\n accept \"OIML R 137-1:2012\"\n accept \"OIML D 11\"\n accept \"OIML D 11 Brochure\"\n accept \"OIML R 126:2015 Errata (E)\"\n accept \"OIML B 20 Annexes\"\n accept \"OIML V 2 (E)\"\n accept \"OIML-CS PD-05 Edition 6 (Amendment 1)\"\n accept \"OIML R 138:2009 Amendment 1\"\n reject \"nonsense\"\n }\n}\n","source_hash":"f0e077831923b3f664d772c035f33738a1d4d564611947cdd9b0295f7583f6c4","unicode_tables":"onigmo (Ruby 3.4.8)","compiler_version":"1.3.121","edition":2,"semantics_hash":"sha256:916208bb98324b5fc783021a6bcfdec0da7e0052a18e116649cd0005a3ffe8d1","checksum":"sha256:d4c1de7329b6653069ac8bfd5bd7fd464abb270fc71a02b8354f5c6556baf680"}
|
package/vendor/parg/omg.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"bindings":null,"version":"0.1.0","grammar":"PubidOmg","shape":"parsanol-tree/v2","binding_version":1,"entries":{"identifier":{"root":"identifier","grammar":{"atoms":[{"Str":{"pattern":"OMG"}},{"Entity":{"atom":2}},{"Str":{"pattern":" "}},{"Entity":{"atom":24}},{"Entity":{"atom":7}},{"Re":{"pattern":"[\\x41-\\x5a]"}},{"Re":{"pattern":"[\\x61-\\x7a]"}},{"Alternative":{"atoms":[5,6]}},{"Entity":{"atom":13}},{"Re":{"pattern":"[\\x41-\\x5a]"}},{"Re":{"pattern":"[\\x61-\\x7a]"}},{"Re":{"pattern":"[\\x30-\\x39]"}},{"Re":{"pattern":"[+]"}},{"Alternative":{"atoms":[9,10,11,12]}},{"Repetition":{"atom":8,"min":1,"max":null,"tag":"Repetition"}},{"Entity":{"atom":18}},{"Re":{"pattern":"[\\-]"}},{"Re":{"pattern":"[/]"}},{"Alternative":{"atoms":[16,17]}},{"Entity":{"atom":13}},{"Repetition":{"atom":19,"min":1,"max":null,"tag":"Repetition"}},{"Sequence":{"atoms":[15,20]}},{"Repetition":{"atom":21,"min":0,"max":null,"tag":"Repetition"}},{"Sequence":{"atoms":[4,14,22]}},{"Named":{"name":"acronym","atom":23}},{"Entity":{"atom":2}},{"Entity":{"atom":
|
|
1
|
+
{"bindings":null,"version":"0.1.0","grammar":"PubidOmg","shape":"parsanol-tree/v2","binding_version":1,"entries":{"identifier":{"root":"identifier","grammar":{"atoms":[{"Str":{"pattern":"OMG"}},{"Entity":{"atom":2}},{"Str":{"pattern":" "}},{"Entity":{"atom":24}},{"Entity":{"atom":7}},{"Re":{"pattern":"[\\x41-\\x5a]"}},{"Re":{"pattern":"[\\x61-\\x7a]"}},{"Alternative":{"atoms":[5,6]}},{"Entity":{"atom":13}},{"Re":{"pattern":"[\\x41-\\x5a]"}},{"Re":{"pattern":"[\\x61-\\x7a]"}},{"Re":{"pattern":"[\\x30-\\x39]"}},{"Re":{"pattern":"[+]"}},{"Alternative":{"atoms":[9,10,11,12]}},{"Repetition":{"atom":8,"min":1,"max":null,"tag":"Repetition"}},{"Entity":{"atom":18}},{"Re":{"pattern":"[\\-]"}},{"Re":{"pattern":"[/]"}},{"Alternative":{"atoms":[16,17]}},{"Entity":{"atom":13}},{"Repetition":{"atom":19,"min":1,"max":null,"tag":"Repetition"}},{"Sequence":{"atoms":[15,20]}},{"Repetition":{"atom":21,"min":0,"max":null,"tag":"Repetition"}},{"Sequence":{"atoms":[4,14,22]}},{"Named":{"name":"acronym","atom":23}},{"Entity":{"atom":2}},{"Entity":{"atom":62}},{"Entity":{"atom":28}},{"Re":{"pattern":"[\\x30-\\x39]"}},{"Repetition":{"atom":27,"min":1,"max":null,"tag":"Repetition"}},{"Entity":{"atom":31}},{"Str":{"pattern":"."}},{"Entity":{"atom":28}},{"Repetition":{"atom":32,"min":1,"max":null,"tag":"Repetition"}},{"Sequence":{"atoms":[30,33]}},{"Repetition":{"atom":34,"min":0,"max":null,"tag":"Repetition"}},{"Str":{"pattern":" beta"}},{"Entity":{"atom":41}},{"Re":{"pattern":"[\\x41-\\x5a]"}},{"Re":{"pattern":"[\\x61-\\x7a]"}},{"Re":{"pattern":"[\\x30-\\x39]"}},{"Alternative":{"atoms":[38,39,40]}},{"Lookahead":{"atom":37,"positive":false}},{"Entity":{"atom":2}},{"Entity":{"atom":28}},{"Repetition":{"atom":44,"min":1,"max":null,"tag":"Repetition"}},{"Entity":{"atom":41}},{"Lookahead":{"atom":46,"positive":false}},{"Sequence":{"atoms":[43,45,47]}},{"Repetition":{"atom":48,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[36,42,49]}},{"Entity":{"atom":2}},{"Str":{"pattern":"Beta"}},{"Entity":{"atom":28}},{"Repetition":{"atom":53,"min":1,"max":null,"tag":"Repetition"}},{"Repetition":{"atom":54,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":41}},{"Lookahead":{"atom":56,"positive":false}},{"Sequence":{"atoms":[51,52,55,57]}},{"Alternative":{"atoms":[50,58]}},{"Repetition":{"atom":59,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[29,35,60]}},{"Named":{"name":"version","atom":61}},{"Entity":{"atom":68}},{"Entity":{"atom":2}},{"Entity":{"atom":66}},{"Str":{"pattern":"/"}},{"Named":{"name":"slash","atom":65}},{"Alternative":{"atoms":[64,67]}},{"Entity":{"atom":72}},{"Entity":{"atom":41}},{"Repetition":{"atom":70,"min":1,"max":null,"tag":"Repetition"}},{"Named":{"name":"part","atom":71}},{"Sequence":{"atoms":[63,69]}},{"Repetition":{"atom":73,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[25,26,74]}},{"Entity":{"atom":2}},{"Entity":{"atom":72}},{"Sequence":{"atoms":[76,77]}},{"Alternative":{"atoms":[75,78]}},{"Repetition":{"atom":79,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[0,1,3,80]}}],"root":81},"bindings":[{"capture":"acronym","path":"acronym","type":"string","card":null,"preprocess":null},{"capture":"version","path":"version","type":"string","card":null,"preprocess":null},{"capture":"part","path":"part","type":"string","card":null,"preprocess":null}]}},"preprocess":{},"tables":{},"lint":{"order_warnings":["rule beta: 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":"OMG IDL 4.2","expect":{}},{"entry":"identifier","kind":"accept","input":"OMG UML 2.5.1","expect":{}},{"entry":"identifier","kind":"reject","input":"nonsense","expect":{}}],"docs":{},"source":"# Port of lib/pubid/omg/parser.rb: OMG <acronym>[ <version>[<sep><part>]]\n# with the beta-label word-boundary guards (a bare \"beta\" must not be\n# swallowed by the part rule). The GLUED CATALOGUE label (\"Beta1\" --\n# capitalized, the /spec/ALMAS/1.5/Beta1 URL segment) classifies into\n# the version (the 2026-10-19 pubid#548 ruling); the LOWERCASE glued\n# form (\"beta2\") stays a document part (the DDS ruling, spec-pinned). A\n# /spec/ALMAS/1.5/Beta1 URL segment) classifies into the version (the\n# 2026-10-19 pubid#548 ruling); a Beta-prefixed part without digits\n# (\"BetaWave\") still lexes as the part — the boundary guard keeps it.\n grammar PubidOmg version \"0.1.0\" edition 2 {\n digit = %x30-39\n acronym_char = %x41-5A / %x61-7A / %x30-39 / %x2B\n acronym_join = %x2D / %x2F\n acronym = (letter 1*acronym_char *(acronym_join 1*acronym_char)) as acronym\n word_boundary = !alnum_char\n beta = (\" beta\" !alnum_char ([space 1*digit !alnum_char]) / (space \"Beta\" [1*digit] !alnum_char))\n version = (1*digit *(dot 1*digit) [(\" beta\" !alnum_char ([space 1*digit !alnum_char]) / (space \"Beta\" [1*digit] !alnum_char))]) as version\n part_separator = space / slash\n part = (1*alnum_char) as part\n identifier = \"OMG\" space acronym [((space version [part_separator part]) / (space part))]\n alnum_char = %x41-5A / %x61-7A / %x30-39\n letter = %x41-5A / %x61-7A\n dot = \".\"\n slash = \"/\"\n space = \" \"\n entry identifier: identifier\n\n bindings identifier {\n acronym -> acronym (string)\n version -> version (string)\n part -> part (string)\n }\n\n\n test {\n accept \"OMG IDL 4.2\"\n accept \"OMG UML 2.5.1\"\n reject \"nonsense\"\n }\n}\n","source_hash":"52d7a874221297d0f1ad18a19ef557046f62d2bed13cc27884080dbf5fb7fa97","unicode_tables":"onigmo (Ruby 3.4.8)","compiler_version":"1.3.121","edition":2,"semantics_hash":"sha256:27ca8d41fa5df4971f42a131d86ef72731fcb382b206a91c5eb9909783cd791e","checksum":"sha256:05fcecde599fab8b145c0b888c1cd22030f4aa169a90a0df0a185cc557f4b732"}
|
package/vendor/parg/parg.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"bindings":null,"version":"1.0.0","grammar":"PgMeta","shape":"parsanol-tree/v2","binding_version":1,"entries":{"file":{"root":"pg_file","grammar":{"atoms":[{"Entity":{"atom":5}},{"Entity":{"atom":4}},{"Re":{"pattern":"[ ]"}},{"Re":{"pattern":"[\\x09]"}},{"Alternative":{"atoms":[2,3]}},{"Repetition":{"atom":1,"min":0,"max":null,"tag":"Repetition"}},{"Entity":{"atom":457}},{"Entity":{"atom":21}},{"Str":{"pattern":"use"}},{"Entity":{"atom":5}},{"Entity":{"atom":20}},{"Entity":{"atom":19}},{"Entity":{"atom":15}},{"Re":{"pattern":"[\\x41-\\x5a]"}},{"Re":{"pattern":"[\\x61-\\x7a]"}},{"Alternative":{"atoms":[13,14]}},{"Entity":{"atom":17}},{"Re":{"pattern":"[\\x30-\\x39]"}},{"Re":{"pattern":"[_]"}},{"Alternative":{"atoms":[12,16,18]}},{"Repetition":{"atom":11,"min":1,"max":null,"tag":"Repetition"}},{"Sequence":{"atoms":[8,9,10]}},{"Entity":{"atom":29}},{"Str":{"pattern":"##"}},{"Entity":{"atom":27}},{"Re":{"pattern":"[\\x01-\\x09]"}},{"Re":{"pattern":"[\\x0b-\\u{10ffff}]"}},{"Alternative":{"atoms":[25,26]}},{"Repetition":{"atom":24,"min":0,"max":null,"tag":"Repetition"}},{"Sequence":{"atoms":[23,28]}},{"Entity":{"atom":34}},{"Str":{"pattern":"#"}},{"Entity":{"atom":27}},{"Repetition":{"atom":32,"min":0,"max":null,"tag":"Repetition"}},{"Sequence":{"atoms":[31,33]}},{"Entity":{"atom":456}},{"Entity":{"atom":406}},{"Str":{"pattern":"grammar"}},{"Entity":{"atom":5}},{"Entity":{"atom":20}},{"Entity":{"atom":5}},{"Str":{"pattern":"version"}},{"Entity":{"atom":5}},{"Entity":{"atom":56}},{"Str":{"pattern":"\""}},{"Str":{"pattern":"\\"}},{"Entity":{"atom":27}},{"Sequence":{"atoms":[45,46]}},{"Entity":{"atom":52}},{"Re":{"pattern":"[\\x01-\\x09]"}},{"Re":{"pattern":"[\\x0b-\\x21]"}},{"Re":{"pattern":"[\\x23-\\u{10ffff}]"}},{"Alternative":{"atoms":[49,50,51]}},{"Alternative":{"atoms":[47,48]}},{"Repetition":{"atom":53,"min":0,"max":null,"tag":"Repetition"}},{"Str":{"pattern":"\""}},{"Sequence":{"atoms":[44,54,55]}},{"Entity":{"atom":5}},{"Str":{"pattern":"{"}},{"Entity":{"atom":64}},{"Entity":{"atom":4}},{"Entity":{"atom":62}},{"Re":{"pattern":"[\\x0a]"}},{"Alternative":{"atoms":[60,61]}},{"Repetition":{"atom":63,"min":1,"max":null,"tag":"Repetition"}},{"Entity":{"atom":400}},{"Entity":{"atom":244}},{"Entity":{"atom":20}},{"Entity":{"atom":5}},{"Str":{"pattern":"="}},{"Entity":{"atom":5}},{"Entity":{"atom":243}},{"Entity":{"atom":242}},{"Entity":{"atom":241}},{"Entity":{"atom":5}},{"Entity":{"atom":89}},{"Entity":{"atom":78}},{"Entity":{"atom":17}},{"Repetition":{"atom":77,"min":1,"max":null,"tag":"Repetition"}},{"Str":{"pattern":"*"}},{"Entity":{"atom":78}},{"Repetition":{"atom":80,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[79,81]}},{"Repetition":{"atom":82,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[76,83]}},{"Str":{"pattern":"*"}},{"Entity":{"atom":78}},{"Repetition":{"atom":86,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[85,87]}},{"Alternative":{"atoms":[84,88]}},{"Entity":{"atom":5}},{"Entity":{"atom":236}},{"Str":{"pattern":"!"}},{"Str":{"pattern":"&"}},{"Alternative":{"atoms":[92,93]}},{"Entity":{"atom":235}},{"Entity":{"atom":234}},{"Entity":{"atom":126}},{"Entity":{"atom":116}},{"Str":{"pattern":"%x"}},{"Entity":{"atom":106}},{"Entity":{"atom":105}},{"Re":{"pattern":"[\\x30-\\x39]"}},{"Re":{"pattern":"[\\x41-\\x46]"}},{"Re":{"pattern":"[\\x61-\\x66]"}},{"Alternative":{"atoms":[102,103,104]}},{"Repetition":{"atom":101,"min":2,"max":6,"tag":"Repetition"}},{"Str":{"pattern":"-"}},{"Entity":{"atom":106}},{"Sequence":{"atoms":[107,108]}},{"Str":{"pattern":"."}},{"Entity":{"atom":106}},{"Sequence":{"atoms":[110,111]}},{"Repetition":{"atom":112,"min":1,"max":null,"tag":"Repetition"}},{"Alternative":{"atoms":[109,113]}},{"Repetition":{"atom":114,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[99,100,115]}},{"Entity":{"atom":120}},{"Str":{"pattern":"%i"}},{"Entity":{"atom":56}},{"Sequence":{"atoms":[118,119]}},{"Entity":{"atom":124}},{"Str":{"pattern":"%s"}},{"Entity":{"atom":56}},{"Sequence":{"atoms":[122,123]}},{"Entity":{"atom":56}},{"Alternative":{"atoms":[98,117,121,125]}},{"Str":{"pattern":"("}},{"Entity":{"atom":5}},{"Repetition":{"atom":128,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":158}},{"Entity":{"atom":5}},{"Str":{"pattern":"/"}},{"Entity":{"atom":5}},{"Entity":{"atom":155}},{"Entity":{"atom":5}},{"Entity":{"atom":152}},{"Entity":{"atom":144}},{"Entity":{"atom":5}},{"Str":{"pattern":"as"}},{"Entity":{"atom":5}},{"Entity":{"atom":20}},{"Sequence":{"atoms":[138,139,140,141]}},{"Repetition":{"atom":142,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[96,143]}},{"Alternative":{"atoms":[91,137]}},{"Repetition":{"atom":145,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[75,90,146]}},{"Entity":{"atom":149}},{"Sequence":{"atoms":[94,95]}},{"Entity":{"atom":144}},{"Alternative":{"atoms":[147,148,150]}},{"Sequence":{"atoms":[74,151]}},{"Sequence":{"atoms":[135,136]}},{"Repetition":{"atom":153,"min":0,"max":null,"tag":"Repetition"}},{"Sequence":{"atoms":[73,154]}},{"Sequence":{"atoms":[131,132,133,134]}},{"Repetition":{"atom":156,"min":0,"max":null,"tag":"Repetition"}},{"Sequence":{"atoms":[72,157]}},{"Entity":{"atom":5}},{"Repetition":{"atom":159,"min":0,"max":1,"tag":"Maybe"}},{"Str":{"pattern":")"}},{"Sequence":{"atoms":[127,129,130,160,161]}},{"Str":{"pattern":"["}},{"Entity":{"atom":5}},{"Repetition":{"atom":164,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":158}},{"Entity":{"atom":5}},{"Repetition":{"atom":167,"min":0,"max":1,"tag":"Maybe"}},{"Str":{"pattern":"]"}},{"Sequence":{"atoms":[163,165,166,168,169]}},{"Entity":{"atom":181}},{"Str":{"pattern":"alt"}},{"Entity":{"atom":5}},{"Str":{"pattern":"from_table"}},{"Entity":{"atom":5}},{"Entity":{"atom":56}},{"Entity":{"atom":5}},{"Str":{"pattern":"column"}},{"Entity":{"atom":5}},{"Entity":{"atom":56}},{"Sequence":{"atoms":[172,173,174,175,176,177,178,179,180]}},{"Entity":{"atom":199}},{"Str":{"pattern":"set"}},{"Entity":{"atom":5}},{"Entity":{"atom":20}},{"Entity":{"atom":5}},{"Str":{"pattern":"="}},{"Entity":{"atom":5}},{"Entity":{"atom":56}},{"Str":{"pattern":"("}},{"Entity":{"atom":5}},{"Repetition":{"atom":191,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":158}},{"Entity":{"atom":5}},{"Repetition":{"atom":194,"min":0,"max":1,"tag":"Maybe"}},{"Str":{"pattern":")"}},{"Sequence":{"atoms":[190,192,193,195,196]}},{"Alternative":{"atoms":[189,197]}},{"Sequence":{"atoms":[183,184,185,186,187,188,198]}},{"Entity":{"atom":232}},{"Str":{"pattern":"switch"}},{"Entity":{"atom":5}},{"Entity":{"atom":20}},{"Entity":{"atom":5}},{"Str":{"pattern":"{"}},{"Entity":{"atom":64}},{"Repetition":{"atom":206,"min":0,"max":null,"tag":"Repetition"}},{"Entity":{"atom":222}},{"Entity":{"atom":56}},{"Str":{"pattern":"_"}},{"Alternative":{"atoms":[209,210]}},{"Entity":{"atom":5}},{"Str":{"pattern":"->"}},{"Entity":{"atom":5}},{"Entity":{"atom":221}},{"Entity":{"atom":20}},{"Str":{"pattern":"."}},{"Entity":{"atom":20}},{"Sequence":{"atoms":[217,218]}},{"Repetition":{"atom":219,"min":0,"max":null,"tag":"Repetition"}},{"Sequence":{"atoms":[216,220]}},{"Sequence":{"atoms":[211,212,213,214,215]}},{"Entity":{"atom":64}},{"Entity":{"atom":222}},{"Sequence":{"atoms":[223,224]}},{"Repetition":{"atom":225,"min":0,"max":null,"tag":"Repetition"}},{"Sequence":{"atoms":[208,226]}},{"Repetition":{"atom":227,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":64}},{"Repetition":{"atom":229,"min":0,"max":null,"tag":"Repetition"}},{"Str":{"pattern":"}"}},{"Sequence":{"atoms":[201,202,203,204,205,207,228,230,231]}},{"Entity":{"atom":221}},{"Alternative":{"atoms":[97,162,170,171,182,200,233]}},{"Sequence":{"atoms":[96,143]}},{"Sequence":{"atoms":[94,95]}},{"Alternative":{"atoms":[91,137]}},{"Repetition":{"atom":237,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[75,90,238]}},{"Alternative":{"atoms":[239,148,150]}},{"Sequence":{"atoms":[74,240]}},{"Sequence":{"atoms":[73,154]}},{"Sequence":{"atoms":[72,157]}},{"Sequence":{"atoms":[67,68,69,70,71]}},{"Entity":{"atom":252}},{"Str":{"pattern":"entry"}},{"Entity":{"atom":5}},{"Entity":{"atom":20}},{"Str":{"pattern":":"}},{"Entity":{"atom":5}},{"Entity":{"atom":20}},{"Sequence":{"atoms":[246,247,248,249,250,251]}},{"Entity":{"atom":310}},{"Str":{"pattern":"bindings"}},{"Entity":{"atom":5}},{"Entity":{"atom":20}},{"Entity":{"atom":64}},{"Str":{"pattern":"{"}},{"Entity":{"atom":64}},{"Repetition":{"atom":259,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":300}},{"Entity":{"atom":20}},{"Entity":{"atom":5}},{"Str":{"pattern":"->"}},{"Entity":{"atom":5}},{"Entity":{"atom":276}},{"Entity":{"atom":20}},{"Str":{"pattern":"["}},{"Str":{"pattern":"]"}},{"Sequence":{"atoms":[268,269]}},{"Str":{"pattern":"."}},{"Entity":{"atom":20}},{"Sequence":{"atoms":[271,272]}},{"Alternative":{"atoms":[270,273]}},{"Repetition":{"atom":274,"min":0,"max":null,"tag":"Repetition"}},{"Sequence":{"atoms":[267,275]}},{"Entity":{"atom":5}},{"Str":{"pattern":"("}},{"Entity":{"atom":20}},{"Str":{"pattern":","}},{"Entity":{"atom":5}},{"Entity":{"atom":287}},{"Entity":{"atom":17}},{"Str":{"pattern":"."}},{"Str":{"pattern":"*"}},{"Alternative":{"atoms":[283,284,285]}},{"Repetition":{"atom":286,"min":1,"max":null,"tag":"Repetition"}},{"Sequence":{"atoms":[280,281,282]}},{"Repetition":{"atom":288,"min":0,"max":1,"tag":"Maybe"}},{"Str":{"pattern":")"}},{"Sequence":{"atoms":[277,278,279,289,290]}},{"Repetition":{"atom":291,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":5}},{"Str":{"pattern":"preprocess"}},{"Str":{"pattern":":"}},{"Entity":{"atom":5}},{"Entity":{"atom":20}},{"Sequence":{"atoms":[293,294,295,296,297]}},{"Repetition":{"atom":298,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[262,263,264,265,266,292,299]}},{"Entity":{"atom":64}},{"Entity":{"atom":300}},{"Sequence":{"atoms":[301,302]}},{"Repetition":{"atom":303,"min":0,"max":null,"tag":"Repetition"}},{"Sequence":{"atoms":[261,304]}},{"Repetition":{"atom":305,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":64}},{"Repetition":{"atom":307,"min":0,"max":1,"tag":"Maybe"}},{"Str":{"pattern":"}"}},{"Sequence":{"atoms":[254,255,256,257,258,260,306,308,309]}},{"Entity":{"atom":332}},{"Str":{"pattern":"preprocess"}},{"Entity":{"atom":5}},{"Entity":{"atom":20}},{"Entity":{"atom":64}},{"Str":{"pattern":"{"}},{"Entity":{"atom":64}},{"Repetition":{"atom":317,"min":0,"max":null,"tag":"Repetition"}},{"Entity":{"atom":329}},{"Str":{"pattern":"table_lookup"}},{"Entity":{"atom":5}},{"Entity":{"atom":20}},{"Entity":{"atom":5}},{"Entity":{"atom":20}},{"Entity":{"atom":5}},{"Str":{"pattern":"->"}},{"Entity":{"atom":5}},{"Entity":{"atom":20}},{"Sequence":{"atoms":[320,321,322,323,324,325,326,327,328]}},{"Entity":{"atom":64}},{"Str":{"pattern":"}"}},{"Sequence":{"atoms":[312,313,314,315,316,318,319,330,331]}},{"Entity":{"atom":379}},{"Str":{"pattern":"test"}},{"Entity":{"atom":5}},{"Entity":{"atom":20}},{"Sequence":{"atoms":[335,336]}},{"Repetition":{"atom":337,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":64}},{"Str":{"pattern":"{"}},{"Entity":{"atom":64}},{"Repetition":{"atom":341,"min":0,"max":null,"tag":"Repetition"}},{"Entity":{"atom":370}},{"Str":{"pattern":"accept"}},{"Str":{"pattern":"reject"}},{"Str":{"pattern":"example"}},{"Alternative":{"atoms":[344,345,346]}},{"Entity":{"atom":5}},{"Entity":{"atom":56}},{"Entity":{"atom":5}},{"Str":{"pattern":"{"}},{"Entity":{"atom":64}},{"Repetition":{"atom":352,"min":0,"max":null,"tag":"Repetition"}},{"Entity":{"atom":364}},{"Entity":{"atom":20}},{"Str":{"pattern":":"}},{"Entity":{"atom":5}},{"Entity":{"atom":56}},{"Entity":{"atom":78}},{"Str":{"pattern":"true"}},{"Str":{"pattern":"false"}},{"Alternative":{"atoms":[360,361]}},{"Alternative":{"atoms":[358,359,362]}},{"Sequence":{"atoms":[355,356,357,363]}},{"Entity":{"atom":64}},{"Repetition":{"atom":365,"min":0,"max":null,"tag":"Repetition"}},{"Str":{"pattern":"}"}},{"Sequence":{"atoms":[350,351,353,354,366,367]}},{"Repetition":{"atom":368,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[347,348,349,369]}},{"Entity":{"atom":64}},{"Entity":{"atom":370}},{"Sequence":{"atoms":[371,372]}},{"Repetition":{"atom":373,"min":0,"max":null,"tag":"Repetition"}},{"Sequence":{"atoms":[343,374]}},{"Repetition":{"atom":375,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":64}},{"Str":{"pattern":"}"}},{"Sequence":{"atoms":[334,338,339,340,342,376,377,378]}},{"Entity":{"atom":388}},{"Str":{"pattern":"custom"}},{"Entity":{"atom":5}},{"Entity":{"atom":20}},{"Entity":{"atom":5}},{"Str":{"pattern":"="}},{"Entity":{"atom":5}},{"Entity":{"atom":56}},{"Sequence":{"atoms":[381,382,383,384,385,386,387]}},{"Entity":{"atom":397}},{"Str":{"pattern":"state"}},{"Entity":{"atom":5}},{"Entity":{"atom":20}},{"Entity":{"atom":5}},{"Str":{"pattern":":"}},{"Entity":{"atom":5}},{"Entity":{"atom":20}},{"Sequence":{"atoms":[390,391,392,393,394,395,396]}},{"Entity":{"atom":29}},{"Entity":{"atom":34}},{"Alternative":{"atoms":[66,245,253,311,333,380,389,398,399]}},{"Sequence":{"atoms":[59,65]}},{"Repetition":{"atom":401,"min":0,"max":null,"tag":"Repetition"}},{"Entity":{"atom":64}},{"Repetition":{"atom":403,"min":0,"max":null,"tag":"Repetition"}},{"Str":{"pattern":"}"}},{"Sequence":{"atoms":[37,38,39,40,41,42,43,57,58,402,404,405]}},{"Entity":{"atom":252}},{"Entity":{"atom":310}},{"Entity":{"atom":332}},{"Entity":{"atom":379}},{"Entity":{"atom":448}},{"Str":{"pattern":"render"}},{"Entity":{"atom":5}},{"Entity":{"atom":20}},{"Entity":{"atom":64}},{"Str":{"pattern":"{"}},{"Entity":{"atom":64}},{"Entity":{"atom":443}},{"Str":{"pattern":"field"}},{"Entity":{"atom":5}},{"Entity":{"atom":20}},{"Sequence":{"atoms":[419,420,421]}},{"Str":{"pattern":"literal"}},{"Entity":{"atom":5}},{"Entity":{"atom":56}},{"Sequence":{"atoms":[423,424,425]}},{"Str":{"pattern":"cond"}},{"Entity":{"atom":5}},{"Entity":{"atom":20}},{"Entity":{"atom":64}},{"Str":{"pattern":"{"}},{"Entity":{"atom":64}},{"Entity":{"atom":439}},{"Sequence":{"atoms":[432,433]}},{"Repetition":{"atom":434,"min":0,"max":null,"tag":"Repetition"}},{"Entity":{"atom":64}},{"Str":{"pattern":"}"}},{"Sequence":{"atoms":[427,428,429,430,431,435,436,437]}},{"Alternative":{"atoms":[422,426,438]}},{"Sequence":{"atoms":[432,433]}},{"Repetition":{"atom":440,"min":0,"max":null,"tag":"Repetition"}},{"Sequence":{"atoms":[427,428,429,430,431,441,436,437]}},{"Alternative":{"atoms":[422,426,442]}},{"Sequence":{"atoms":[417,418]}},{"Repetition":{"atom":444,"min":0,"max":null,"tag":"Repetition"}},{"Entity":{"atom":64}},{"Str":{"pattern":"}"}},{"Sequence":{"atoms":[412,413,414,415,416,445,446,447]}},{"Entity":{"atom":455}},{"Str":{"pattern":"derive"}},{"Entity":{"atom":5}},{"Entity":{"atom":20}},{"Entity":{"atom":5}},{"Entity":{"atom":56}},{"Sequence":{"atoms":[450,451,452,453,454]}},{"Alternative":{"atoms":[36,407,408,409,410,411,449]}},{"Alternative":{"atoms":[7,22,30,35]}},{"Entity":{"atom":64}},{"Repetition":{"atom":458,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[6,459]}},{"Repetition":{"atom":460,"min":0,"max":null,"tag":"Repetition"}},{"Entity":{"atom":5}},{"Sequence":{"atoms":[0,461,462]}}],"root":463},"bindings":[]}},"preprocess":{},"tables":{},"lint":{"order_warnings":["rule nonl: branches 1 and 2 are order-dependent (first set not statically known)","rule str_body_char: branches 1 and 3 are order-dependent (first set not statically known)","rule str_body_char: branches 2 and 3 are order-dependent (first set not statically known)","rule hex: branches 1 and 2 are order-dependent (shared first bytes; ordered choice is decisive)","rule hex: branches 1 and 3 are order-dependent (shared first bytes; ordered choice is decisive)","rule hex: branches 2 and 3 are order-dependent (shared first bytes; ordered choice is decisive)","rule primary: branches 4 and 7 are order-dependent (shared first bytes; ordered choice is decisive)","rule primary: branches 5 and 6 are order-dependent (shared first bytes; ordered choice is decisive)","rule primary: branches 5 and 7 are order-dependent (shared first bytes; ordered choice is decisive)","rule primary: branches 6 and 7 are order-dependent (shared first bytes; ordered choice is decisive)","rule rule_line: branches 1 and 2 are order-dependent (shared first bytes; ordered choice is decisive)","rule rule_line: branches 1 and 3 are order-dependent (shared first bytes; ordered choice is decisive)","rule rule_line: branches 1 and 4 are order-dependent (shared first bytes; ordered choice is decisive)","rule rule_line: branches 1 and 5 are order-dependent (shared first bytes; ordered choice is decisive)","rule rule_line: branches 1 and 6 are order-dependent (shared first bytes; ordered choice is decisive)","rule rule_line: branches 1 and 7 are order-dependent (shared first bytes; ordered choice is decisive)","rule rule_line: branches 8 and 9 are order-dependent (shared first bytes; ordered choice is decisive)","rule top_item: branches 2 and 3 are order-dependent (shared first bytes; ordered choice is decisive)"]},"default_entry":"file","render":{},"derive":{},"tests":[{"entry":"file","kind":"accept","input":"grammar T version \"1\" { x = %x30-39 }","expect":{}},{"entry":"file","kind":"accept","input":"grammar T version \"1\" { a = b / c as d }","expect":{}},{"entry":"file","kind":"accept","input":"grammar T version \"1\" { g = [x] 3*y !z &w (p / q) }","expect":{}},{"entry":"file","kind":"accept","input":"grammar T version \"1\" { k = 1*3(e / f) !(g h) }","expect":{}},{"entry":"file","kind":"accept","input":"grammar T version \"1\" { custom lookback = \"ParsanolAtoms::Lookbehind\" a = %x30-39 }","expect":{}},{"entry":"file","kind":"accept","input":"grammar T version \"1\" { state block_kind: symbol a = %x30-39 }","expect":{}},{"entry":"file","kind":"accept","input":"grammar T version \"1\" { a = (set block_kind = \"quote\") %x30-39 }","expect":{}},{"entry":"file","kind":"accept","input":"grammar T version \"1\" { a = (switch block_kind { \"quote\" -> q _ -> never }) }","expect":{}},{"entry":"file","kind":"accept","input":"grammar T version \"1\" { a = (set d = (3*4(%x2D)) %x0A) }","expect":{}},{"entry":"file","kind":"accept","input":"grammar T version \"1\" { a = (!(state d) %x61-7A) }","expect":{}},{"entry":"file","kind":"reject","input":"nonsense","expect":{}},{"entry":"file","kind":"reject","input":"grammar T version \"1\" { = }","expect":{}}],"docs":{},"source":"# PG described in PG — the self-description grammar (F10, phase 1).\n# It recognizes the language this file is written in, over raw text:\n# whitespace is threaded explicitly (pq = potential whitespace within a\n# line, nlws = line-breaking whitespace). The reference compiler remains\n# parsanol-ruby (SSOT, TODO 11); this artifact is the validator.\n\ngrammar PgMeta version \"1.0.0\" {\n\n # ---- lexical ----\n digit = %x30-39\n hexdig = %x30-39 / %x41-46 / %x61-66\n letter = %x41-5A / %x61-7A\n ident_char = letter / digit / %x5F\n ident = 1*ident_char\n newline = %x0A\n nonl = %x01-09 / %x0B-10FFFF\n comment = \"#\" *nonl\n doc_marker = \"##\" *nonl\n ws = %x20 / %x09\n nlws = 1*(ws / newline)\n pq = *ws\n\n # ---- terminals ----\n str_body_char = %x01-09 / %x0B-21 / %x23-10FFFF\n dstring = \"\\\"\" *(\"\\\\\" nonl / str_body_char) \"\\\"\"\n istring = \"%i\" dstring\n sstring = \"%s\" dstring\n hexdigits = 2*6hexdig\n hexlit = \"%x\" hexdigits [(\"-\" hexdigits) / 1*(\".\" hexdigits)]\n hex = hexlit / istring / sstring / dstring\n\n # ---- expressions (pq-threaded) ----\n choice = seq *(pq \"/\" pq seq)\n seq = element *(pq element)\n element = pq (rep_prefix pq [pred / postfixed] / pred / postfixed)\n rep_prefix = num [\"*\" [num]] / \"*\" [num]\n num = 1*digit\n pred = (\"!\" / \"&\") postfixed\n postfixed = primary [pq \"as\" pq ident]\n table_alt = \"alt\" pq \"from_table\" pq dstring pq \"column\" pq dstring\n set_expr = \"set\" pq ident pq \"=\" pq (dstring / \"(\" [pq] choice [pq] \")\")\n switch_arm = (dstring / \"_\") pq \"->\" pq dotted_ident\n switch_expr = \"switch\" pq ident pq \"{\" *nlws [switch_arm *(nlws switch_arm)] *nlws \"}\"\n custom_line = \"custom\" pq ident pq \"=\" pq dstring\n state_line = \"state\" pq ident pq \":\" pq ident\n dotted_ident = ident *(\".\" ident)\n primary = hex / \"(\" [pq] choice [pq] \")\" / \"[\" [pq] choice [pq] \"]\" / table_alt / set_expr / switch_expr / dotted_ident\n\n # ---- rules and sections ----\n rule = ident pq \"=\" pq choice\n entry_section = \"entry\" pq ident \":\" pq ident\n path = ident *((\"[\" \"]\") / (\".\" ident))\n cardinality = 1*(digit / \".\" / \"*\")\n binding = ident pq \"->\" pq path [pq \"(\" ident [\",\" pq cardinality] \")\"] [pq \"preprocess\" \":\" pq ident]\n bindings_section = \"bindings\" pq ident nlws \"{\" [nlws] [binding *(nlws binding)] [nlws] \"}\"\n step = \"table_lookup\" pq ident pq ident pq \"->\" pq ident\n preprocess_section = \"preprocess\" pq ident nlws \"{\" *nlws step nlws \"}\"\n test_line = (\"accept\" / \"reject\" / \"example\") pq dstring [pq \"{\" *nlws test_pair *nlws \"}\"]\n test_pair = ident \":\" pq (dstring / num / (\"true\" / \"false\"))\n test_section = \"test\" [pq ident] nlws \"{\" *nlws [test_line *(nlws test_line)] nlws \"}\"\n rule_line = rule / entry_section / bindings_section / preprocess_section / test_section / custom_line / state_line / doc_marker / comment\n grammar_block = \"grammar\" pq ident pq \"version\" pq dstring pq \"{\" *(nlws rule_line) *nlws \"}\"\n render_section = \"render\" pq ident nlws \"{\" *(nlws render_seg) nlws \"}\"\n render_seg = (\"field\" pq ident) / (\"literal\" pq dstring) / (\"cond\" pq ident nlws \"{\" *(nlws render_seg) nlws \"}\")\n derive_section = \"derive\" pq ident pq dstring\n top = grammar_block / entry_section / bindings_section / preprocess_section / test_section / render_section / derive_section\n use_line = \"use\" pq ident\n top_item = use_line / doc_marker / comment / top\n\n pg_file = pq *(top_item [nlws]) pq\n\n entry file: pg_file\n\n test {\n accept \"grammar T version \\\"1\\\" { x = %x30-39 }\"\n accept \"grammar T version \\\"1\\\" { a = b / c as d }\"\n accept \"grammar T version \\\"1\\\" { g = [x] 3*y !z &w (p / q) }\"\n accept \"grammar T version \\\"1\\\" { k = 1*3(e / f) !(g h) }\"\n accept \"grammar T version \\\"1\\\" { custom lookback = \\\"ParsanolAtoms::Lookbehind\\\" a = %x30-39 }\"\n accept \"grammar T version \\\"1\\\" { state block_kind: symbol a = %x30-39 }\"\n accept \"grammar T version \\\"1\\\" { a = (set block_kind = \\\"quote\\\") %x30-39 }\"\n accept \"grammar T version \\\"1\\\" { a = (switch block_kind { \\\"quote\\\" -> q _ -> never }) }\"\n accept \"grammar T version \\\"1\\\" { a = (set d = (3*4(%x2D)) %x0A) }\"\n accept \"grammar T version \\\"1\\\" { a = (!(state d) %x61-7A) }\"\n reject \"nonsense\"\n reject \"grammar T version \\\"1\\\" { = }\"\n }\n}\n","source_hash":"5b5848eae1e2588df61186c85d1952c069a938dfa4fc8109ccad56a4b84eed85","compiler_version":"1.3.93","checksum":"sha256:449d12e4071bb8536452206fd4add6a54c27fa3d5ea5e4f174e1c90c20d2f3f0"}
|
|
1
|
+
{"bindings":null,"version":"1.0.0","grammar":"PgMeta","shape":"parsanol-tree/v2","binding_version":1,"entries":{"file":{"root":"pg_file","grammar":{"atoms":[{"Entity":{"atom":5}},{"Entity":{"atom":4}},{"Re":{"pattern":"[ ]"}},{"Re":{"pattern":"[\\x09]"}},{"Alternative":{"atoms":[2,3]}},{"Repetition":{"atom":1,"min":0,"max":null,"tag":"Repetition"}},{"Entity":{"atom":591}},{"Entity":{"atom":23}},{"Str":{"pattern":"use"}},{"Entity":{"atom":5}},{"Entity":{"atom":22}},{"Entity":{"atom":21}},{"Entity":{"atom":15}},{"Re":{"pattern":"[\\x41-\\x5a]"}},{"Re":{"pattern":"[\\x61-\\x7a]"}},{"Alternative":{"atoms":[13,14]}},{"Named":{"name":"letter","atom":12}},{"Entity":{"atom":18}},{"Re":{"pattern":"[\\x30-\\x39]"}},{"Named":{"name":"digit","atom":17}},{"Re":{"pattern":"[_]"}},{"Alternative":{"atoms":[16,19,20]}},{"Repetition":{"atom":11,"min":1,"max":null,"tag":"Repetition"}},{"Sequence":{"atoms":[8,9,10]}},{"Entity":{"atom":32}},{"Str":{"pattern":"##"}},{"Entity":{"atom":29}},{"Re":{"pattern":"[\\x01-\\x09]"}},{"Re":{"pattern":"[\\x0b-\\u{10ffff}]"}},{"Alternative":{"atoms":[27,28]}},{"Named":{"name":"nonl","atom":26}},{"Repetition":{"atom":30,"min":0,"max":null,"tag":"Repetition"}},{"Sequence":{"atoms":[25,31]}},{"Entity":{"atom":38}},{"Str":{"pattern":"#"}},{"Entity":{"atom":29}},{"Named":{"name":"nonl","atom":35}},{"Repetition":{"atom":36,"min":0,"max":null,"tag":"Repetition"}},{"Sequence":{"atoms":[34,37]}},{"Entity":{"atom":590}},{"Entity":{"atom":538}},{"Str":{"pattern":"grammar"}},{"Entity":{"atom":5}},{"Entity":{"atom":22}},{"Entity":{"atom":5}},{"Str":{"pattern":"version"}},{"Entity":{"atom":5}},{"Entity":{"atom":62}},{"Str":{"pattern":"\""}},{"Str":{"pattern":"\\"}},{"Entity":{"atom":29}},{"Named":{"name":"nonl","atom":50}},{"Sequence":{"atoms":[49,51]}},{"Entity":{"atom":57}},{"Re":{"pattern":"[\\x01-\\x09]"}},{"Re":{"pattern":"[\\x0b-\\x21]"}},{"Re":{"pattern":"[\\x23-\\u{10ffff}]"}},{"Alternative":{"atoms":[54,55,56]}},{"Named":{"name":"str_body_char","atom":53}},{"Alternative":{"atoms":[52,58]}},{"Repetition":{"atom":59,"min":0,"max":null,"tag":"Repetition"}},{"Str":{"pattern":"\""}},{"Sequence":{"atoms":[48,60,61]}},{"Entity":{"atom":5}},{"Entity":{"atom":78}},{"Str":{"pattern":"mode"}},{"Entity":{"atom":5}},{"Entity":{"atom":62}},{"Sequence":{"atoms":[65,66,67]}},{"Str":{"pattern":"edition"}},{"Entity":{"atom":5}},{"Entity":{"atom":74}},{"Entity":{"atom":18}},{"Named":{"name":"digit","atom":72}},{"Repetition":{"atom":73,"min":1,"max":null,"tag":"Repetition"}},{"Entity":{"atom":62}},{"Alternative":{"atoms":[71,75]}},{"Sequence":{"atoms":[69,70,76]}},{"Alternative":{"atoms":[68,77]}},{"Sequence":{"atoms":[63,64]}},{"Repetition":{"atom":79,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":5}},{"Str":{"pattern":"{"}},{"Entity":{"atom":88}},{"Entity":{"atom":4}},{"Entity":{"atom":86}},{"Re":{"pattern":"[\\x0a]"}},{"Alternative":{"atoms":[84,85]}},{"Repetition":{"atom":87,"min":1,"max":null,"tag":"Repetition"}},{"Entity":{"atom":532}},{"Entity":{"atom":271}},{"Entity":{"atom":22}},{"Entity":{"atom":5}},{"Str":{"pattern":"="}},{"Entity":{"atom":5}},{"Entity":{"atom":270}},{"Entity":{"atom":267}},{"Entity":{"atom":264}},{"Entity":{"atom":5}},{"Entity":{"atom":111}},{"Entity":{"atom":74}},{"Str":{"pattern":"*"}},{"Entity":{"atom":74}},{"Repetition":{"atom":102,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[101,103]}},{"Repetition":{"atom":104,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[100,105]}},{"Str":{"pattern":"*"}},{"Entity":{"atom":74}},{"Repetition":{"atom":108,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[107,109]}},{"Alternative":{"atoms":[106,110]}},{"Entity":{"atom":5}},{"Entity":{"atom":259}},{"Str":{"pattern":"!"}},{"Str":{"pattern":"&"}},{"Alternative":{"atoms":[114,115]}},{"Entity":{"atom":258}},{"Entity":{"atom":257}},{"Entity":{"atom":149}},{"Entity":{"atom":139}},{"Str":{"pattern":"%x"}},{"Entity":{"atom":129}},{"Entity":{"atom":127}},{"Re":{"pattern":"[\\x30-\\x39]"}},{"Re":{"pattern":"[\\x41-\\x46]"}},{"Re":{"pattern":"[\\x61-\\x66]"}},{"Alternative":{"atoms":[124,125,126]}},{"Named":{"name":"hexdig","atom":123}},{"Repetition":{"atom":128,"min":2,"max":6,"tag":"Repetition"}},{"Str":{"pattern":"-"}},{"Entity":{"atom":129}},{"Sequence":{"atoms":[130,131]}},{"Str":{"pattern":"."}},{"Entity":{"atom":129}},{"Sequence":{"atoms":[133,134]}},{"Repetition":{"atom":135,"min":1,"max":null,"tag":"Repetition"}},{"Alternative":{"atoms":[132,136]}},{"Repetition":{"atom":137,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[121,122,138]}},{"Entity":{"atom":143}},{"Str":{"pattern":"%i"}},{"Entity":{"atom":62}},{"Sequence":{"atoms":[141,142]}},{"Entity":{"atom":147}},{"Str":{"pattern":"%s"}},{"Entity":{"atom":62}},{"Sequence":{"atoms":[145,146]}},{"Entity":{"atom":62}},{"Alternative":{"atoms":[120,140,144,148]}},{"Str":{"pattern":"("}},{"Entity":{"atom":5}},{"Repetition":{"atom":151,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":181}},{"Entity":{"atom":5}},{"Str":{"pattern":"/"}},{"Entity":{"atom":5}},{"Entity":{"atom":178}},{"Entity":{"atom":5}},{"Entity":{"atom":175}},{"Entity":{"atom":167}},{"Entity":{"atom":5}},{"Str":{"pattern":"as"}},{"Entity":{"atom":5}},{"Entity":{"atom":22}},{"Sequence":{"atoms":[161,162,163,164]}},{"Repetition":{"atom":165,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[118,166]}},{"Alternative":{"atoms":[113,160]}},{"Repetition":{"atom":168,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[99,112,169]}},{"Entity":{"atom":172}},{"Sequence":{"atoms":[116,117]}},{"Entity":{"atom":167}},{"Alternative":{"atoms":[170,171,173]}},{"Sequence":{"atoms":[98,174]}},{"Sequence":{"atoms":[158,159]}},{"Repetition":{"atom":176,"min":0,"max":null,"tag":"Repetition"}},{"Sequence":{"atoms":[97,177]}},{"Sequence":{"atoms":[154,155,156,157]}},{"Repetition":{"atom":179,"min":0,"max":null,"tag":"Repetition"}},{"Sequence":{"atoms":[96,180]}},{"Entity":{"atom":5}},{"Repetition":{"atom":182,"min":0,"max":1,"tag":"Maybe"}},{"Str":{"pattern":")"}},{"Sequence":{"atoms":[150,152,153,183,184]}},{"Str":{"pattern":"["}},{"Entity":{"atom":5}},{"Repetition":{"atom":187,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":181}},{"Entity":{"atom":5}},{"Repetition":{"atom":190,"min":0,"max":1,"tag":"Maybe"}},{"Str":{"pattern":"]"}},{"Sequence":{"atoms":[186,188,189,191,192]}},{"Entity":{"atom":204}},{"Str":{"pattern":"alt"}},{"Entity":{"atom":5}},{"Str":{"pattern":"from_table"}},{"Entity":{"atom":5}},{"Entity":{"atom":62}},{"Entity":{"atom":5}},{"Str":{"pattern":"column"}},{"Entity":{"atom":5}},{"Entity":{"atom":62}},{"Sequence":{"atoms":[195,196,197,198,199,200,201,202,203]}},{"Entity":{"atom":222}},{"Str":{"pattern":"set"}},{"Entity":{"atom":5}},{"Entity":{"atom":22}},{"Entity":{"atom":5}},{"Str":{"pattern":"="}},{"Entity":{"atom":5}},{"Entity":{"atom":62}},{"Str":{"pattern":"("}},{"Entity":{"atom":5}},{"Repetition":{"atom":214,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":181}},{"Entity":{"atom":5}},{"Repetition":{"atom":217,"min":0,"max":1,"tag":"Maybe"}},{"Str":{"pattern":")"}},{"Sequence":{"atoms":[213,215,216,218,219]}},{"Alternative":{"atoms":[212,220]}},{"Sequence":{"atoms":[206,207,208,209,210,211,221]}},{"Entity":{"atom":255}},{"Str":{"pattern":"switch"}},{"Entity":{"atom":5}},{"Entity":{"atom":22}},{"Entity":{"atom":5}},{"Str":{"pattern":"{"}},{"Entity":{"atom":88}},{"Repetition":{"atom":229,"min":0,"max":null,"tag":"Repetition"}},{"Entity":{"atom":245}},{"Entity":{"atom":62}},{"Str":{"pattern":"_"}},{"Alternative":{"atoms":[232,233]}},{"Entity":{"atom":5}},{"Str":{"pattern":"->"}},{"Entity":{"atom":5}},{"Entity":{"atom":244}},{"Entity":{"atom":22}},{"Str":{"pattern":"."}},{"Entity":{"atom":22}},{"Sequence":{"atoms":[240,241]}},{"Repetition":{"atom":242,"min":0,"max":null,"tag":"Repetition"}},{"Sequence":{"atoms":[239,243]}},{"Sequence":{"atoms":[234,235,236,237,238]}},{"Entity":{"atom":88}},{"Entity":{"atom":245}},{"Sequence":{"atoms":[246,247]}},{"Repetition":{"atom":248,"min":0,"max":null,"tag":"Repetition"}},{"Sequence":{"atoms":[231,249]}},{"Repetition":{"atom":250,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":88}},{"Repetition":{"atom":252,"min":0,"max":null,"tag":"Repetition"}},{"Str":{"pattern":"}"}},{"Sequence":{"atoms":[224,225,226,227,228,230,251,253,254]}},{"Entity":{"atom":244}},{"Alternative":{"atoms":[119,185,193,194,205,223,256]}},{"Sequence":{"atoms":[118,166]}},{"Sequence":{"atoms":[116,117]}},{"Alternative":{"atoms":[113,160]}},{"Repetition":{"atom":260,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[99,112,261]}},{"Alternative":{"atoms":[262,171,173]}},{"Sequence":{"atoms":[98,263]}},{"Sequence":{"atoms":[158,159]}},{"Repetition":{"atom":265,"min":0,"max":null,"tag":"Repetition"}},{"Sequence":{"atoms":[97,266]}},{"Sequence":{"atoms":[154,155,156,157]}},{"Repetition":{"atom":268,"min":0,"max":null,"tag":"Repetition"}},{"Sequence":{"atoms":[96,269]}},{"Sequence":{"atoms":[91,92,93,94,95]}},{"Entity":{"atom":363}},{"Entity":{"atom":22}},{"Entity":{"atom":5}},{"Str":{"pattern":"="}},{"Entity":{"atom":4}},{"Entity":{"atom":86}},{"Alternative":{"atoms":[276,277]}},{"Repetition":{"atom":278,"min":0,"max":null,"tag":"Repetition"}},{"Re":{"pattern":"[{]"}},{"Entity":{"atom":360}},{"Entity":{"atom":357}},{"Entity":{"atom":354}},{"Entity":{"atom":289}},{"Entity":{"atom":4}},{"Entity":{"atom":86}},{"Entity":{"atom":38}},{"Alternative":{"atoms":[285,286,287]}},{"Repetition":{"atom":288,"min":0,"max":null,"tag":"Repetition"}},{"Entity":{"atom":111}},{"Entity":{"atom":289}},{"Entity":{"atom":349}},{"Str":{"pattern":"!"}},{"Str":{"pattern":"&"}},{"Alternative":{"atoms":[293,294]}},{"Entity":{"atom":348}},{"Entity":{"atom":347}},{"Entity":{"atom":149}},{"Str":{"pattern":"("}},{"Entity":{"atom":289}},{"Repetition":{"atom":300,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":330}},{"Entity":{"atom":289}},{"Str":{"pattern":"/"}},{"Entity":{"atom":289}},{"Entity":{"atom":327}},{"Entity":{"atom":289}},{"Entity":{"atom":324}},{"Entity":{"atom":316}},{"Entity":{"atom":289}},{"Str":{"pattern":"as"}},{"Entity":{"atom":289}},{"Entity":{"atom":22}},{"Sequence":{"atoms":[310,311,312,313]}},{"Repetition":{"atom":314,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[297,315]}},{"Alternative":{"atoms":[292,309]}},{"Repetition":{"atom":317,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[290,291,318]}},{"Entity":{"atom":321}},{"Sequence":{"atoms":[295,296]}},{"Entity":{"atom":316}},{"Alternative":{"atoms":[319,320,322]}},{"Sequence":{"atoms":[284,323]}},{"Sequence":{"atoms":[307,308]}},{"Repetition":{"atom":325,"min":0,"max":null,"tag":"Repetition"}},{"Sequence":{"atoms":[283,326]}},{"Sequence":{"atoms":[303,304,305,306]}},{"Repetition":{"atom":328,"min":0,"max":null,"tag":"Repetition"}},{"Sequence":{"atoms":[282,329]}},{"Entity":{"atom":289}},{"Repetition":{"atom":331,"min":0,"max":1,"tag":"Maybe"}},{"Str":{"pattern":")"}},{"Sequence":{"atoms":[299,301,302,332,333]}},{"Str":{"pattern":"["}},{"Entity":{"atom":289}},{"Repetition":{"atom":336,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":330}},{"Entity":{"atom":289}},{"Repetition":{"atom":339,"min":0,"max":1,"tag":"Maybe"}},{"Str":{"pattern":"]"}},{"Sequence":{"atoms":[335,337,338,340,341]}},{"Entity":{"atom":204}},{"Entity":{"atom":222}},{"Entity":{"atom":255}},{"Entity":{"atom":244}},{"Alternative":{"atoms":[298,334,342,343,344,345,346]}},{"Sequence":{"atoms":[297,315]}},{"Sequence":{"atoms":[295,296]}},{"Alternative":{"atoms":[292,309]}},{"Repetition":{"atom":350,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[290,291,351]}},{"Alternative":{"atoms":[352,320,322]}},{"Sequence":{"atoms":[284,353]}},{"Sequence":{"atoms":[307,308]}},{"Repetition":{"atom":355,"min":0,"max":null,"tag":"Repetition"}},{"Sequence":{"atoms":[283,356]}},{"Sequence":{"atoms":[303,304,305,306]}},{"Repetition":{"atom":358,"min":0,"max":null,"tag":"Repetition"}},{"Sequence":{"atoms":[282,359]}},{"Entity":{"atom":289}},{"Re":{"pattern":"[}]"}},{"Sequence":{"atoms":[273,274,275,279,280,281,361,362]}},{"Entity":{"atom":371}},{"Str":{"pattern":"entry"}},{"Entity":{"atom":5}},{"Entity":{"atom":22}},{"Str":{"pattern":":"}},{"Entity":{"atom":5}},{"Entity":{"atom":22}},{"Sequence":{"atoms":[365,366,367,368,369,370]}},{"Entity":{"atom":430}},{"Str":{"pattern":"bindings"}},{"Entity":{"atom":5}},{"Entity":{"atom":22}},{"Entity":{"atom":88}},{"Str":{"pattern":"{"}},{"Entity":{"atom":88}},{"Repetition":{"atom":378,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":420}},{"Entity":{"atom":22}},{"Entity":{"atom":5}},{"Str":{"pattern":"->"}},{"Entity":{"atom":5}},{"Entity":{"atom":395}},{"Entity":{"atom":22}},{"Str":{"pattern":"["}},{"Str":{"pattern":"]"}},{"Sequence":{"atoms":[387,388]}},{"Str":{"pattern":"."}},{"Entity":{"atom":22}},{"Sequence":{"atoms":[390,391]}},{"Alternative":{"atoms":[389,392]}},{"Repetition":{"atom":393,"min":0,"max":null,"tag":"Repetition"}},{"Sequence":{"atoms":[386,394]}},{"Entity":{"atom":5}},{"Str":{"pattern":"("}},{"Entity":{"atom":22}},{"Str":{"pattern":","}},{"Entity":{"atom":5}},{"Entity":{"atom":407}},{"Entity":{"atom":18}},{"Named":{"name":"digit","atom":402}},{"Str":{"pattern":"."}},{"Str":{"pattern":"*"}},{"Alternative":{"atoms":[403,404,405]}},{"Repetition":{"atom":406,"min":1,"max":null,"tag":"Repetition"}},{"Sequence":{"atoms":[399,400,401]}},{"Repetition":{"atom":408,"min":0,"max":1,"tag":"Maybe"}},{"Str":{"pattern":")"}},{"Sequence":{"atoms":[396,397,398,409,410]}},{"Repetition":{"atom":411,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":5}},{"Str":{"pattern":"preprocess"}},{"Str":{"pattern":":"}},{"Entity":{"atom":5}},{"Entity":{"atom":22}},{"Sequence":{"atoms":[413,414,415,416,417]}},{"Repetition":{"atom":418,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[381,382,383,384,385,412,419]}},{"Entity":{"atom":88}},{"Entity":{"atom":420}},{"Sequence":{"atoms":[421,422]}},{"Repetition":{"atom":423,"min":0,"max":null,"tag":"Repetition"}},{"Sequence":{"atoms":[380,424]}},{"Repetition":{"atom":425,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":88}},{"Repetition":{"atom":427,"min":0,"max":1,"tag":"Maybe"}},{"Str":{"pattern":"}"}},{"Sequence":{"atoms":[373,374,375,376,377,379,426,428,429]}},{"Entity":{"atom":452}},{"Str":{"pattern":"preprocess"}},{"Entity":{"atom":5}},{"Entity":{"atom":22}},{"Entity":{"atom":88}},{"Str":{"pattern":"{"}},{"Entity":{"atom":88}},{"Repetition":{"atom":437,"min":0,"max":null,"tag":"Repetition"}},{"Entity":{"atom":449}},{"Str":{"pattern":"table_lookup"}},{"Entity":{"atom":5}},{"Entity":{"atom":22}},{"Entity":{"atom":5}},{"Entity":{"atom":22}},{"Entity":{"atom":5}},{"Str":{"pattern":"->"}},{"Entity":{"atom":5}},{"Entity":{"atom":22}},{"Sequence":{"atoms":[440,441,442,443,444,445,446,447,448]}},{"Entity":{"atom":88}},{"Str":{"pattern":"}"}},{"Sequence":{"atoms":[432,433,434,435,436,438,439,450,451]}},{"Entity":{"atom":502}},{"Str":{"pattern":"test"}},{"Entity":{"atom":5}},{"Entity":{"atom":22}},{"Sequence":{"atoms":[455,456]}},{"Repetition":{"atom":457,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":88}},{"Str":{"pattern":"{"}},{"Entity":{"atom":88}},{"Repetition":{"atom":461,"min":0,"max":null,"tag":"Repetition"}},{"Entity":{"atom":493}},{"Str":{"pattern":"accept"}},{"Str":{"pattern":"reject"}},{"Str":{"pattern":"example"}},{"Alternative":{"atoms":[464,465,466]}},{"Entity":{"atom":5}},{"Entity":{"atom":62}},{"Entity":{"atom":5}},{"Str":{"pattern":"{"}},{"Entity":{"atom":88}},{"Repetition":{"atom":472,"min":0,"max":null,"tag":"Repetition"}},{"Entity":{"atom":484}},{"Entity":{"atom":22}},{"Str":{"pattern":":"}},{"Entity":{"atom":5}},{"Entity":{"atom":62}},{"Entity":{"atom":74}},{"Str":{"pattern":"true"}},{"Str":{"pattern":"false"}},{"Alternative":{"atoms":[480,481]}},{"Alternative":{"atoms":[478,479,482]}},{"Sequence":{"atoms":[475,476,477,483]}},{"Entity":{"atom":88}},{"Repetition":{"atom":485,"min":0,"max":null,"tag":"Repetition"}},{"Str":{"pattern":"}"}},{"Sequence":{"atoms":[470,471,473,474,486,487]}},{"Repetition":{"atom":488,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[467,468,469,489]}},{"Entity":{"atom":38}},{"Entity":{"atom":32}},{"Alternative":{"atoms":[490,491,492]}},{"Entity":{"atom":88}},{"Entity":{"atom":493}},{"Sequence":{"atoms":[494,495]}},{"Repetition":{"atom":496,"min":0,"max":null,"tag":"Repetition"}},{"Sequence":{"atoms":[463,497]}},{"Repetition":{"atom":498,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":88}},{"Str":{"pattern":"}"}},{"Sequence":{"atoms":[454,458,459,460,462,499,500,501]}},{"Entity":{"atom":511}},{"Str":{"pattern":"custom"}},{"Entity":{"atom":5}},{"Entity":{"atom":22}},{"Entity":{"atom":5}},{"Str":{"pattern":"="}},{"Entity":{"atom":5}},{"Entity":{"atom":62}},{"Sequence":{"atoms":[504,505,506,507,508,509,510]}},{"Entity":{"atom":520}},{"Str":{"pattern":"state"}},{"Entity":{"atom":5}},{"Entity":{"atom":22}},{"Entity":{"atom":5}},{"Str":{"pattern":":"}},{"Entity":{"atom":5}},{"Entity":{"atom":22}},{"Sequence":{"atoms":[513,514,515,516,517,518,519]}},{"Entity":{"atom":529}},{"Str":{"pattern":"glue"}},{"Entity":{"atom":5}},{"Entity":{"atom":22}},{"Entity":{"atom":5}},{"Entity":{"atom":22}},{"Sequence":{"atoms":[525,526]}},{"Repetition":{"atom":527,"min":0,"max":null,"tag":"Repetition"}},{"Sequence":{"atoms":[522,523,524,528]}},{"Entity":{"atom":32}},{"Entity":{"atom":38}},{"Alternative":{"atoms":[90,272,364,372,431,453,503,512,521,530,531]}},{"Sequence":{"atoms":[83,89]}},{"Repetition":{"atom":533,"min":0,"max":null,"tag":"Repetition"}},{"Entity":{"atom":88}},{"Repetition":{"atom":535,"min":0,"max":null,"tag":"Repetition"}},{"Str":{"pattern":"}"}},{"Sequence":{"atoms":[41,42,43,44,45,46,47,80,81,82,534,536,537]}},{"Entity":{"atom":371}},{"Entity":{"atom":430}},{"Entity":{"atom":452}},{"Entity":{"atom":502}},{"Entity":{"atom":582}},{"Str":{"pattern":"render"}},{"Entity":{"atom":5}},{"Entity":{"atom":22}},{"Entity":{"atom":88}},{"Str":{"pattern":"{"}},{"Entity":{"atom":88}},{"Entity":{"atom":577}},{"Str":{"pattern":"field"}},{"Entity":{"atom":5}},{"Entity":{"atom":22}},{"Sequence":{"atoms":[551,552,553]}},{"Str":{"pattern":"literal"}},{"Entity":{"atom":5}},{"Entity":{"atom":62}},{"Sequence":{"atoms":[555,556,557]}},{"Str":{"pattern":"cond"}},{"Entity":{"atom":5}},{"Entity":{"atom":22}},{"Entity":{"atom":88}},{"Str":{"pattern":"{"}},{"Entity":{"atom":88}},{"Entity":{"atom":573}},{"Sequence":{"atoms":[551,552,553]}},{"Sequence":{"atoms":[555,556,557]}},{"Sequence":{"atoms":[564,565]}},{"Repetition":{"atom":568,"min":0,"max":null,"tag":"Repetition"}},{"Entity":{"atom":88}},{"Str":{"pattern":"}"}},{"Sequence":{"atoms":[559,560,561,562,563,569,570,571]}},{"Alternative":{"atoms":[566,567,572]}},{"Sequence":{"atoms":[564,565]}},{"Repetition":{"atom":574,"min":0,"max":null,"tag":"Repetition"}},{"Sequence":{"atoms":[559,560,561,562,563,575,570,571]}},{"Alternative":{"atoms":[554,558,576]}},{"Sequence":{"atoms":[549,550]}},{"Repetition":{"atom":578,"min":0,"max":null,"tag":"Repetition"}},{"Entity":{"atom":88}},{"Str":{"pattern":"}"}},{"Sequence":{"atoms":[544,545,546,547,548,579,580,581]}},{"Entity":{"atom":589}},{"Str":{"pattern":"derive"}},{"Entity":{"atom":5}},{"Entity":{"atom":22}},{"Entity":{"atom":5}},{"Entity":{"atom":62}},{"Sequence":{"atoms":[584,585,586,587,588]}},{"Alternative":{"atoms":[40,539,540,541,542,543,583]}},{"Alternative":{"atoms":[7,24,33,39]}},{"Entity":{"atom":88}},{"Repetition":{"atom":592,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[6,593]}},{"Repetition":{"atom":594,"min":0,"max":null,"tag":"Repetition"}},{"Entity":{"atom":5}},{"Sequence":{"atoms":[0,595,596]}}],"root":597},"bindings":[]}},"preprocess":{},"tables":{},"lint":{"order_warnings":["rule nonl: branches 1 and 2 are order-dependent (first set not statically known)","rule str_body_char: branches 1 and 3 are order-dependent (first set not statically known)","rule str_body_char: branches 2 and 3 are order-dependent (first set not statically known)","rule hex: branches 1 and 2 are order-dependent (shared first bytes; ordered choice is decisive)","rule hex: branches 1 and 3 are order-dependent (shared first bytes; ordered choice is decisive)","rule hex: branches 2 and 3 are order-dependent (shared first bytes; ordered choice is decisive)","rule primary: branches 4 and 7 are order-dependent (shared first bytes; ordered choice is decisive)","rule primary: branches 5 and 6 are order-dependent (shared first bytes; ordered choice is decisive)","rule primary: branches 5 and 7 are order-dependent (shared first bytes; ordered choice is decisive)","rule primary: branches 6 and 7 are order-dependent (shared first bytes; ordered choice is decisive)","rule bprimary: branches 4 and 7 are order-dependent (shared first bytes; ordered choice is decisive)","rule bprimary: branches 5 and 6 are order-dependent (shared first bytes; ordered choice is decisive)","rule bprimary: branches 5 and 7 are order-dependent (shared first bytes; ordered choice is decisive)","rule bprimary: branches 6 and 7 are order-dependent (shared first bytes; ordered choice is decisive)","rule test_line: branches 2 and 3 are order-dependent (shared first bytes; ordered choice is decisive)","rule rule_line: branches 1 and 2 are order-dependent (shared first bytes; ordered choice is decisive)","rule rule_line: branches 1 and 3 are order-dependent (shared first bytes; ordered choice is decisive)","rule rule_line: branches 1 and 4 are order-dependent (shared first bytes; ordered choice is decisive)","rule rule_line: branches 1 and 5 are order-dependent (shared first bytes; ordered choice is decisive)","rule rule_line: branches 1 and 6 are order-dependent (shared first bytes; ordered choice is decisive)","rule rule_line: branches 1 and 7 are order-dependent (shared first bytes; ordered choice is decisive)","rule rule_line: branches 1 and 8 are order-dependent (shared first bytes; ordered choice is decisive)","rule rule_line: branches 1 and 9 are order-dependent (shared first bytes; ordered choice is decisive)","rule rule_line: branches 2 and 3 are order-dependent (shared first bytes; ordered choice is decisive)","rule rule_line: branches 2 and 4 are order-dependent (shared first bytes; ordered choice is decisive)","rule rule_line: branches 2 and 5 are order-dependent (shared first bytes; ordered choice is decisive)","rule rule_line: branches 2 and 6 are order-dependent (shared first bytes; ordered choice is decisive)","rule rule_line: branches 2 and 7 are order-dependent (shared first bytes; ordered choice is decisive)","rule rule_line: branches 2 and 8 are order-dependent (shared first bytes; ordered choice is decisive)","rule rule_line: branches 2 and 9 are order-dependent (shared first bytes; ordered choice is decisive)","rule rule_line: branches 10 and 11 are order-dependent (shared first bytes; ordered choice is decisive)","rule top_item: branches 2 and 3 are order-dependent (shared first bytes; ordered choice is decisive)"]},"default_entry":"file","render":{},"derive":{},"tests":[{"entry":"file","kind":"accept","input":"grammar T version \"1\" { x = %x30-39 }","expect":{}},{"entry":"file","kind":"accept","input":"grammar T version \"1\" { a = b / c as d }","expect":{}},{"entry":"file","kind":"accept","input":"grammar T version \"1\" { g = [x] 3*y !z &w (p / q) }","expect":{}},{"entry":"file","kind":"accept","input":"grammar T version \"1\" { k = 1*3(e / f) !(g h) }","expect":{}},{"entry":"file","kind":"accept","input":"grammar T version \"1\" { custom lookback = \"ParsanolAtoms::Lookbehind\" a = %x30-39 }","expect":{}},{"entry":"file","kind":"accept","input":"grammar T version \"1\" { state block_kind: symbol a = %x30-39 }","expect":{}},{"entry":"file","kind":"accept","input":"grammar T version \"1\" { a = (set block_kind = \"quote\") %x30-39 }","expect":{}},{"entry":"file","kind":"accept","input":"grammar T version \"1\" { a = (switch block_kind { \"quote\" -> q _ -> never }) }","expect":{}},{"entry":"file","kind":"accept","input":"grammar T version \"1\" { a = (set d = (3*4(%x2D)) %x0A) }","expect":{}},{"entry":"file","kind":"accept","input":"grammar T version \"1\" { a = (!(state d) %x61-7A) }","expect":{}},{"entry":"file","kind":"accept","input":"grammar T version \"1\" {\n p = {\n %i\"iso\" / %i\"ieee\"\n }\n}","expect":{}},{"entry":"file","kind":"accept","input":"grammar T version \"1\" { q = { a b } }","expect":{}},{"entry":"file","kind":"accept","input":"grammar T version \"1\" {\n r =\n {\n x as y\n }\n}","expect":{}},{"entry":"file","kind":"accept","input":"grammar T version \"1\" {\n s = {\n # a comment is body whitespace\n !(t / u) 2*v\n }\n}","expect":{}},{"entry":"file","kind":"accept","input":"grammar T version \"1\" mode \"v1\" { x = %x30-39 }","expect":{}},{"entry":"file","kind":"accept","input":"grammar T version \"1\" mode \"v2\" { x = %x30-39 }","expect":{}},{"entry":"file","kind":"accept","input":"grammar T version \"1\" edition 1 { x = %x30-39 }","expect":{}},{"entry":"file","kind":"accept","input":"grammar T version \"1\" edition 2 { x = %x30-39 }","expect":{}},{"entry":"file","kind":"accept","input":"grammar T version \"1\" edition \"v2\" { x = %x30-39 }","expect":{}},{"entry":"file","kind":"accept","input":"grammar T version \"1\" edition 2 {\n glue ws comment\n ws = 1*( %x20 )\n comment = \"#\" *nonl\n main = \"a\" ws \"b\"\n}","expect":{}},{"entry":"file","kind":"reject","input":"grammar T version \"1\" { q = { a }","expect":{}},{"entry":"file","kind":"reject","input":"grammar T version \"1\" { q = { } }","expect":{}},{"entry":"file","kind":"reject","input":"nonsense","expect":{}},{"entry":"file","kind":"reject","input":"grammar T version \"1\" { = }","expect":{}}],"docs":{},"source":"# PG described in PG — the self-description grammar (F10, phase 1).\n# It recognizes the language this file is written in, over raw text:\n# whitespace is threaded explicitly (pq = potential whitespace within a\n# line, nlws = line-breaking whitespace, bw = brace-body whitespace: the\n# b* rules thread it so brace-form rule bodies span lines). The\n# reference compiler remains parsanol-ruby (SSOT, TODO 11); this\n# artifact is the validator — and brace_rule below is itself written in\n# the brace form it recognizes.\n\ngrammar PgMeta version \"1.0.0\" edition 2 {\n\n # ---- lexical ----\n digit = %x30-39\n hexdig = %x30-39 / %x41-46 / %x61-66\n letter = %x41-5A / %x61-7A\n ident_char = letter / digit / %x5F\n ident = 1*ident_char\n newline = %x0A\n nonl = %x01-09 / %x0B-10FFFF\n comment = \"#\" *nonl\n doc_marker = \"##\" *nonl\n ws = %x20 / %x09\n nlws = 1*(ws / newline)\n pq = *ws\n\n # ---- terminals ----\n str_body_char = %x01-09 / %x0B-21 / %x23-10FFFF\n dstring = \"\\\"\" *(\"\\\\\" nonl / str_body_char) \"\\\"\"\n istring = \"%i\" dstring\n sstring = \"%s\" dstring\n hexdigits = 2*6hexdig\n hexlit = \"%x\" hexdigits [(\"-\" hexdigits) / 1*(\".\" hexdigits)]\n hex = hexlit / istring / sstring / dstring\n\n # ---- expressions (pq-threaded) ----\n choice = seq *(pq \"/\" pq seq)\n seq = element *(pq element)\n element = pq (rep_prefix pq [pred / postfixed] / pred / postfixed)\n rep_prefix = num [\"*\" [num]] / \"*\" [num]\n num = 1*digit\n pred = (\"!\" / \"&\") postfixed\n postfixed = primary [pq \"as\" pq ident]\n table_alt = \"alt\" pq \"from_table\" pq dstring pq \"column\" pq dstring\n set_expr = \"set\" pq ident pq \"=\" pq (dstring / \"(\" [pq] choice [pq] \")\")\n switch_arm = (dstring / \"_\") pq \"->\" pq dotted_ident\n switch_expr = \"switch\" pq ident pq \"{\" *nlws [switch_arm *(nlws switch_arm)] *nlws \"}\"\n custom_line = \"custom\" pq ident pq \"=\" pq dstring\n state_line = \"state\" pq ident pq \":\" pq ident\n dotted_ident = ident *(\".\" ident)\n primary = hex / \"(\" [pq] choice [pq] \")\" / \"[\" [pq] choice [pq] \"]\" / table_alt / set_expr / switch_expr / dotted_ident\n\n # ---- brace-body expressions (bw-threaded: newlines are whitespace) ----\n bw = *(ws / newline / comment)\n bchoice = bseq *(bw \"/\" bw bseq)\n bseq = belement *(bw belement)\n belement = bw (rep_prefix bw [bpred / bpostfixed] / bpred / bpostfixed)\n bpred = (\"!\" / \"&\") bpostfixed\n bprimary = hex / \"(\" [bw] bchoice [bw] \")\" / \"[\" [bw] bchoice [bw] \"]\" / table_alt / set_expr / switch_expr / dotted_ident\n bpostfixed = bprimary [bw \"as\" bw ident]\n\n # ---- rules and sections ----\n rule = ident pq \"=\" pq choice\n brace_rule = {\n ident pq \"=\" *(ws / newline) %x7B\n bchoice bw %x7D\n }\n entry_section = \"entry\" pq ident \":\" pq ident\n path = ident *((\"[\" \"]\") / (\".\" ident))\n cardinality = 1*(digit / \".\" / \"*\")\n binding = ident pq \"->\" pq path [pq \"(\" ident [\",\" pq cardinality] \")\"] [pq \"preprocess\" \":\" pq ident]\n bindings_section = \"bindings\" pq ident nlws \"{\" [nlws] [binding *(nlws binding)] [nlws] \"}\"\n step = \"table_lookup\" pq ident pq ident pq \"->\" pq ident\n preprocess_section = \"preprocess\" pq ident nlws \"{\" *nlws step nlws \"}\"\n test_line = (\"accept\" / \"reject\" / \"example\") pq dstring [pq \"{\" *nlws test_pair *nlws \"}\"] / comment / doc_marker\n test_pair = ident \":\" pq (dstring / num / (\"true\" / \"false\"))\n test_section = \"test\" [pq ident] nlws \"{\" *nlws [test_line *(nlws test_line)] nlws \"}\"\n rule_line = rule / brace_rule / entry_section / bindings_section / preprocess_section / test_section / custom_line / state_line / glue_line / doc_marker / comment\n edition_decl = \"mode\" pq dstring / \"edition\" pq (num / dstring)\n glue_line = \"glue\" pq ident *(pq ident)\n grammar_block = \"grammar\" pq ident pq \"version\" pq dstring [pq edition_decl] pq \"{\" *(nlws rule_line) *nlws \"}\"\n render_section = \"render\" pq ident nlws \"{\" *(nlws render_seg) nlws \"}\"\n render_seg = (\"field\" pq ident) / (\"literal\" pq dstring) / (\"cond\" pq ident nlws \"{\" *(nlws render_seg) nlws \"}\")\n derive_section = \"derive\" pq ident pq dstring\n top = grammar_block / entry_section / bindings_section / preprocess_section / test_section / render_section / derive_section\n use_line = \"use\" pq ident\n top_item = use_line / doc_marker / comment / top\n\n pg_file = pq *(top_item [nlws]) pq\n\n entry file: pg_file\n\n test {\n accept \"grammar T version \\\"1\\\" { x = %x30-39 }\"\n accept \"grammar T version \\\"1\\\" { a = b / c as d }\"\n accept \"grammar T version \\\"1\\\" { g = [x] 3*y !z &w (p / q) }\"\n accept \"grammar T version \\\"1\\\" { k = 1*3(e / f) !(g h) }\"\n accept \"grammar T version \\\"1\\\" { custom lookback = \\\"ParsanolAtoms::Lookbehind\\\" a = %x30-39 }\"\n accept \"grammar T version \\\"1\\\" { state block_kind: symbol a = %x30-39 }\"\n accept \"grammar T version \\\"1\\\" { a = (set block_kind = \\\"quote\\\") %x30-39 }\"\n accept \"grammar T version \\\"1\\\" { a = (switch block_kind { \\\"quote\\\" -> q _ -> never }) }\"\n accept \"grammar T version \\\"1\\\" { a = (set d = (3*4(%x2D)) %x0A) }\"\n accept \"grammar T version \\\"1\\\" { a = (!(state d) %x61-7A) }\"\n accept \"grammar T version \\\"1\\\" {\\n p = {\\n %i\\\"iso\\\" / %i\\\"ieee\\\"\\n }\\n}\"\n accept \"grammar T version \\\"1\\\" { q = { a b } }\"\n accept \"grammar T version \\\"1\\\" {\\n r =\\n {\\n x as y\\n }\\n}\"\n accept \"grammar T version \\\"1\\\" {\\n s = {\\n # a comment is body whitespace\\n !(t / u) 2*v\\n }\\n}\"\n accept \"grammar T version \\\"1\\\" mode \\\"v1\\\" { x = %x30-39 }\"\n accept \"grammar T version \\\"1\\\" mode \\\"v2\\\" { x = %x30-39 }\"\n accept \"grammar T version \\\"1\\\" edition 1 { x = %x30-39 }\"\n accept \"grammar T version \\\"1\\\" edition 2 { x = %x30-39 }\"\n accept \"grammar T version \\\"1\\\" edition \\\"v2\\\" { x = %x30-39 }\"\n accept \"grammar T version \\\"1\\\" edition 2 {\\n glue ws comment\\n ws = 1*( %x20 )\\n comment = \\\"#\\\" *nonl\\n main = \\\"a\\\" ws \\\"b\\\"\\n}\"\n reject \"grammar T version \\\"1\\\" { q = { a }\"\n reject \"grammar T version \\\"1\\\" { q = { } }\"\n reject \"nonsense\"\n reject \"grammar T version \\\"1\\\" { = }\"\n }\n}\n","source_hash":"4ff02e95155a1784f722f413ff98913800d571622ddeff37b56fc53c51188644","unicode_tables":"onigmo (Ruby 3.4.8)","compiler_version":"1.3.126","edition":2,"semantics_hash":"sha256:0d41b8456d396150de6c860f2b0fd53ed8dc7299ca30a62910c8e8565905709f","checksum":"sha256:acd4d7e293d3879091d30bc8a0d987b4b0e99baac82d68af3f95ee68e8420848"}
|
package/vendor/parg/plateau.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"bindings":null,"version":"0.1.0","grammar":"PubidPlateau","shape":"parsanol-tree/v2","binding_version":1,"entries":{"identifier":{"root":"identifier","grammar":{"atoms":[{"Entity":{"atom":
|
|
1
|
+
{"bindings":null,"version":"0.1.0","grammar":"PubidPlateau","shape":"parsanol-tree/v2","binding_version":1,"entries":{"identifier":{"root":"identifier","grammar":{"atoms":[{"Entity":{"atom":69}},{"Entity":{"atom":49}},{"Str":{"pattern":"PLATEAU"}},{"Str":{"pattern":" "}},{"Entity":{"atom":8}},{"Str":{"pattern":"Handbook"}},{"Str":{"pattern":"Technical Report"}},{"Alternative":{"atoms":[5,6]}},{"Named":{"name":"type","atom":7}},{"Str":{"pattern":" "}},{"Entity":{"atom":15}},{"Str":{"pattern":"#"}},{"Re":{"pattern":"[\\x30-\\x39]"}},{"Repetition":{"atom":12,"min":1,"max":null,"tag":"Repetition"}},{"Named":{"name":"number","atom":13}},{"Sequence":{"atoms":[11,14]}},{"Entity":{"atom":23}},{"Str":{"pattern":"-"}},{"Str":{"pattern":"_"}},{"Alternative":{"atoms":[17,18]}},{"Re":{"pattern":"[\\x30-\\x39]"}},{"Repetition":{"atom":20,"min":1,"max":null,"tag":"Repetition"}},{"Named":{"name":"annex","atom":21}},{"Sequence":{"atoms":[19,22]}},{"Repetition":{"atom":16,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":47}},{"Str":{"pattern":" "}},{"Entity":{"atom":37}},{"Str":{"pattern":"第"}},{"Re":{"pattern":"[\\x30-\\x39]"}},{"Repetition":{"atom":29,"min":1,"max":null,"tag":"Repetition"}},{"Str":{"pattern":"."}},{"Re":{"pattern":"[\\x30-\\x39]"}},{"Repetition":{"atom":32,"min":1,"max":null,"tag":"Repetition"}},{"Sequence":{"atoms":[30,31,33]}},{"Named":{"name":"edition","atom":34}},{"Str":{"pattern":"版"}},{"Sequence":{"atoms":[28,35,36]}},{"Entity":{"atom":45}},{"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":[40,41,43]}},{"Named":{"name":"edition","atom":44}},{"Alternative":{"atoms":[27,38]}},{"Sequence":{"atoms":[26,46]}},{"Repetition":{"atom":25,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[2,3,4,9,10,24,48]}},{"Entity":{"atom":58}},{"Str":{"pattern":"PLATEAU"}},{"Str":{"pattern":" "}},{"Entity":{"atom":8}},{"Str":{"pattern":" "}},{"Entity":{"atom":15}},{"Entity":{"atom":23}},{"Repetition":{"atom":56,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[51,52,53,54,55,57]}},{"Alternative":{"atoms":[1,50]}},{"Named":{"name":"base","atom":59}},{"Entity":{"atom":68}},{"Str":{"pattern":" "}},{"Str":{"pattern":"Annex"}},{"Str":{"pattern":" "}},{"Entity":{"atom":67}},{"Re":{"pattern":"[\\x41-\\x5a]"}},{"Named":{"name":"annex_letter","atom":66}},{"Sequence":{"atoms":[62,63,64,65]}},{"Sequence":{"atoms":[60,61]}},{"Entity":{"atom":49}},{"Entity":{"atom":58}},{"Alternative":{"atoms":[0,70,71]}}],"root":72},"bindings":[{"capture":"base","path":"base","type":"raw","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":"annex","path":"annex","type":"string","card":null,"preprocess":null},{"capture":"edition","path":"edition","type":"string","card":null,"preprocess":null},{"capture":"annex_letter","path":"annex_letter","type":"string","card":null,"preprocess":null}]}},"preprocess":{},"tables":{},"lint":{"order_warnings":["rule identifier: branches 1 and 2 are order-dependent (shared first bytes; ordered choice is decisive)","rule identifier: branches 1 and 3 are order-dependent (shared first bytes; ordered choice is decisive)","rule identifier: branches 2 and 3 are order-dependent (shared first bytes; ordered choice is decisive)"]},"default_entry":"identifier","render":{},"derive":{},"tests":[{"entry":"identifier","kind":"accept","input":"PLATEAU Handbook #3","expect":{}},{"entry":"identifier","kind":"accept","input":"PLATEAU Technical Report #1","expect":{}},{"entry":"identifier","kind":"reject","input":"nonsense","expect":{}}],"docs":{},"source":"# Port of lib/pubid/plateau/parser.rb: PLATEAU Handbook/Technical Report\n# #NN[-annex][ edition], plus Annex supplements. Japanese canonical\n# edition (第X.Y版) and legacy Latin X.Y both capture the same atom.\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 base wrapper\n# keeps the v1 tree shape and the bindings name the scalar leaves.\n\ngrammar PubidPlateau version \"0.1.0\" edition 2 {\n doc_type = (\"Handbook\" / \"Technical Report\") as type\n number = \"#\" (1*%x30-39) as number\n annex = (\"-\" / \"_\") (1*%x30-39) as annex\n edition_part = \"第\" (1*%x30-39 \".\" 1*%x30-39) as edition \"版\"\n edition_latin = (1*%x30-39 \".\" 1*%x30-39) as edition\n edition = \" \" (edition_part / edition_latin)\n annex_letter = (%x41-5A) as annex_letter\n annex_supplement = \" \" \"Annex\" \" \" annex_letter\n handbook = \"PLATEAU\" \" \" doc_type \" \" number [annex] [edition]\n technical_report = \"PLATEAU\" \" \" doc_type \" \" number [annex]\n annex_identifier = (handbook / technical_report) as base annex_supplement\n identifier = annex_identifier / handbook / technical_report\n\n entry identifier: identifier\n\n test {\n accept \"PLATEAU Handbook #3\"\n accept \"PLATEAU Technical Report #1\"\n reject \"nonsense\"\n }\n\n bindings identifier {\n # The builder dispatches on base && annex_letter and RE-parses the base\n # subtree recursively (build_annex calls build(parsed[:base])), so base\n # binds uncast — the nested {type, number, annex, edition} hash.\n base -> base (raw)\n type -> type (string)\n number -> number (string)\n annex -> annex (string)\n edition -> edition (string)\n annex_letter -> annex_letter (string)\n }\n}\n","source_hash":"c794ad3672c17b5cacdfa398ef912bc11fa61559a5dec42e38e83f85ea5a03ae","unicode_tables":"onigmo (Ruby 3.4.8)","compiler_version":"1.3.121","edition":2,"semantics_hash":"sha256:8835f409e7891c67a3cd55b5944711947be1d3ed74a1fa7796273fd5605f52c5","checksum":"sha256:313c53473c88408fee327a64989e5da9a034607a8c4774a84284cfcda06bec3e"}
|