@pubid/pubid 0.1.31 → 0.1.32

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (61) hide show
  1. package/artifact/corpus.json.gz +0 -0
  2. package/dist/flavors/iec/index.js +12 -5
  3. package/dist/flavors/ieee/index.js +321 -113
  4. package/dist/flavors/ieee/model.d.ts +18 -0
  5. package/dist/flavors/ieee/model.js +62 -8
  6. package/dist/flavors/ieee/preprocessor.js +3 -0
  7. package/dist/flavors/ieee/update_codes.js +1 -1
  8. package/dist/flavors/iho/index.js +198 -35
  9. package/dist/flavors/jis/index.js +74 -2
  10. package/dist/flavors/nist/grammar.js +44 -16
  11. package/dist/flavors/nist/index.js +17 -2
  12. package/dist/urn/parsers.js +57 -20
  13. package/package.json +2 -2
  14. package/vendor/parg/adobe.json +1 -1
  15. package/vendor/parg/aiee.json +1 -1
  16. package/vendor/parg/amca.json +1 -1
  17. package/vendor/parg/ansi.json +1 -1
  18. package/vendor/parg/api.json +1 -1
  19. package/vendor/parg/ashrae.json +1 -1
  20. package/vendor/parg/asme.json +1 -1
  21. package/vendor/parg/astm.json +1 -1
  22. package/vendor/parg/bipm.json +1 -1
  23. package/vendor/parg/bsi.json +1 -1
  24. package/vendor/parg/calconnect.json +1 -1
  25. package/vendor/parg/ccsds.json +1 -1
  26. package/vendor/parg/cen_cenelec.json +1 -1
  27. package/vendor/parg/cie.json +1 -1
  28. package/vendor/parg/csa.json +1 -1
  29. package/vendor/parg/doi.json +1 -1
  30. package/vendor/parg/easc.json +1 -1
  31. package/vendor/parg/ecma.json +1 -1
  32. package/vendor/parg/etsi.json +1 -1
  33. package/vendor/parg/evs.json +1 -1
  34. package/vendor/parg/gb.json +1 -1
  35. package/vendor/parg/gost.json +1 -1
  36. package/vendor/parg/iala.json +1 -1
  37. package/vendor/parg/iana.json +1 -1
  38. package/vendor/parg/idf.json +1 -1
  39. package/vendor/parg/iec.json +1 -1
  40. package/vendor/parg/ieee.json +1 -29571
  41. package/vendor/parg/ietf.json +1 -1
  42. package/vendor/parg/iho.json +1 -0
  43. package/vendor/parg/ire.json +1 -1
  44. package/vendor/parg/isbn.json +1 -1
  45. package/vendor/parg/iso.json +1 -8510
  46. package/vendor/parg/itu.json +1 -1
  47. package/vendor/parg/jcgm.json +1 -1
  48. package/vendor/parg/jis.json +1 -1
  49. package/vendor/parg/nesc.json +1 -1
  50. package/vendor/parg/nist.json +1 -9588
  51. package/vendor/parg/oasis.json +1 -1
  52. package/vendor/parg/ogc.json +1 -1
  53. package/vendor/parg/oiml.json +1 -1
  54. package/vendor/parg/omg.json +1 -1
  55. package/vendor/parg/parg.json +1 -1
  56. package/vendor/parg/plateau.json +1 -1
  57. package/vendor/parg/sae.json +1 -1
  58. package/vendor/parg/tgpp.json +1 -1
  59. package/vendor/parg/un.json +1 -1
  60. package/vendor/parg/w3c.json +1 -1
  61. package/vendor/parg/xsf.json +1 -1
@@ -1 +1 @@
1
- {"bindings":null,"version":"0.1.0","grammar":"PubidCsa","shape":"parsanol-tree/v2","binding_version":1,"entries":{"identifier":{"root":"identifier","grammar":{"atoms":[{"Entity":{"atom":1}},{"Entity":{"atom":84}},{"Str":{"pattern":"CSA"}},{"Named":{"name":"adoption_pub","atom":2}},{"Entity":{"atom":70}},{"Str":{"pattern":"ISO/IEC"}},{"Named":{"name":"adoption_org","atom":5}},{"Entity":{"atom":8}},{"Str":{"pattern":" "}},{"Str":{"pattern":"TR"}},{"Str":{"pattern":"TS"}},{"Alternative":{"atoms":[9,10]}},{"Named":{"name":"iso_type","atom":11}},{"Entity":{"atom":8}},{"Entity":{"atom":18}},{"Entity":{"atom":16}},{"Re":{"pattern":"[\\x30-\\x39]"}},{"Str":{"pattern":"-"}},{"Alternative":{"atoms":[15,17]}},{"Repetition":{"atom":14,"min":1,"max":null,"tag":"Repetition"}},{"Named":{"name":"adoption_number","atom":19}},{"Sequence":{"atoms":[6,7,12,13,20]}},{"Str":{"pattern":"ISO/IEC"}},{"Named":{"name":"adoption_org_with_type","atom":22}},{"Entity":{"atom":8}},{"Entity":{"atom":18}},{"Repetition":{"atom":25,"min":1,"max":null,"tag":"Repetition"}},{"Named":{"name":"adoption_number","atom":26}},{"Sequence":{"atoms":[23,24,27]}},{"Str":{"pattern":"ISO"}},{"Str":{"pattern":"IEC"}},{"Str":{"pattern":"CEI/IEC"}},{"Str":{"pattern":"CISPR"}},{"Alternative":{"atoms":[29,30,31,32]}},{"Named":{"name":"adoption_org","atom":33}},{"Entity":{"atom":8}},{"Entity":{"atom":18}},{"Repetition":{"atom":36,"min":1,"max":null,"tag":"Repetition"}},{"Named":{"name":"adoption_number","atom":37}},{"Sequence":{"atoms":[34,35,38]}},{"Alternative":{"atoms":[21,28,39]}},{"Entity":{"atom":42}},{"Str":{"pattern":":"}},{"Entity":{"atom":44}},{"Str":{"pattern":"-"}},{"Alternative":{"atoms":[41,43]}},{"Named":{"name":"adoption_year_sep","atom":45}},{"Entity":{"atom":49}},{"Entity":{"atom":16}},{"Repetition":{"atom":48,"min":4,"max":null,"tag":"Repetition"}},{"Entity":{"atom":52}},{"Entity":{"atom":16}},{"Repetition":{"atom":51,"min":2,"max":null,"tag":"Repetition"}},{"Alternative":{"atoms":[47,50]}},{"Named":{"name":"adoption_year","atom":53}},{"Sequence":{"atoms":[46,54]}},{"Entity":{"atom":57}},{"Str":{"pattern":"/"}},{"Str":{"pattern":"A"}},{"Entity":{"atom":16}},{"Named":{"name":"adoption_amendment","atom":59}},{"Entity":{"atom":42}},{"Entity":{"atom":44}},{"Alternative":{"atoms":[61,62]}},{"Entity":{"atom":49}},{"Entity":{"atom":52}},{"Alternative":{"atoms":[64,65]}},{"Named":{"name":"adoption_amendment_year","atom":66}},{"Sequence":{"atoms":[56,58,60,63,67]}},{"Repetition":{"atom":68,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[40,55,69]}},{"Entity":{"atom":82}},{"Entity":{"atom":8}},{"Str":{"pattern":"(R"}},{"Entity":{"atom":16}},{"Repetition":{"atom":74,"min":4,"max":4,"tag":"Repetition"}},{"Named":{"name":"reaffirmation_4digit","atom":75}},{"Entity":{"atom":16}},{"Repetition":{"atom":77,"min":2,"max":2,"tag":"Repetition"}},{"Named":{"name":"reaffirmation_2digit","atom":78}},{"Alternative":{"atoms":[76,79]}},{"Str":{"pattern":")"}},{"Sequence":{"atoms":[72,73,80,81]}},{"Repetition":{"atom":71,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[3,4,83]}},{"Entity":{"atom":231}},{"Entity":{"atom":91}},{"Str":{"pattern":"CSA"}},{"Entity":{"atom":8}},{"Str":{"pattern":""}},{"Named":{"name":"has_publisher","atom":89}},{"Sequence":{"atoms":[87,88,90]}},{"Entity":{"atom":166}},{"Entity":{"atom":109}},{"Entity":{"atom":16}},{"Repetition":{"atom":94,"min":1,"max":null,"tag":"Repetition"}},{"Entity":{"atom":97}},{"Str":{"pattern":"."}},{"Entity":{"atom":16}},{"Repetition":{"atom":98,"min":1,"max":null,"tag":"Repetition"}},{"Entity":{"atom":44}},{"Entity":{"atom":16}},{"Repetition":{"atom":101,"min":1,"max":null,"tag":"Repetition"}},{"Sequence":{"atoms":[100,102]}},{"Repetition":{"atom":103,"min":0,"max":1,"tag":"Repetition"}},{"Entity":{"atom":106}},{"Re":{"pattern":"[\\x41-\\x5a]"}},{"Repetition":{"atom":105,"min":2,"max":6,"tag":"Repetition"}},{"Repetition":{"atom":107,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[95,96,99,104,108]}},{"Entity":{"atom":115}},{"Entity":{"atom":16}},{"Repetition":{"atom":111,"min":1,"max":null,"tag":"Repetition"}},{"Entity":{"atom":106}},{"Repetition":{"atom":113,"min":2,"max":6,"tag":"Repetition"}},{"Sequence":{"atoms":[112,114]}},{"Entity":{"atom":149}},{"Entity":{"atom":106}},{"Entity":{"atom":16}},{"Repetition":{"atom":118,"min":1,"max":null,"tag":"Repetition"}},{"Entity":{"atom":97}},{"Entity":{"atom":16}},{"Repetition":{"atom":121,"min":1,"max":null,"tag":"Repetition"}},{"Sequence":{"atoms":[120,122]}},{"Repetition":{"atom":123,"min":0,"max":null,"tag":"Repetition"}},{"Entity":{"atom":44}},{"Entity":{"atom":143}},{"Entity":{"atom":131}},{"Entity":{"atom":16}},{"Entity":{"atom":16}},{"Lookahead":{"atom":129,"positive":false}},{"Sequence":{"atoms":[128,130]}},{"Entity":{"atom":16}},{"Repetition":{"atom":132,"min":3,"max":null,"tag":"Repetition"}},{"Entity":{"atom":16}},{"Repetition":{"atom":134,"min":1,"max":null,"tag":"Repetition"}},{"Entity":{"atom":140}},{"Entity":{"atom":106}},{"Entity":{"atom":139}},{"Re":{"pattern":"[\\x61-\\x7a]"}},{"Alternative":{"atoms":[137,138]}},{"Repetition":{"atom":136,"min":1,"max":null,"tag":"Repetition"}},{"Sequence":{"atoms":[135,141]}},{"Alternative":{"atoms":[127,133,142]}},{"Sequence":{"atoms":[125,126]}},{"Repetition":{"atom":144,"min":0,"max":null,"tag":"Repetition"}},{"Entity":{"atom":106}},{"Repetition":{"atom":146,"min":2,"max":6,"tag":"Repetition"}},{"Repetition":{"atom":147,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[117,119,124,145,148]}},{"Entity":{"atom":159}},{"Entity":{"atom":106}},{"Entity":{"atom":16}},{"Repetition":{"atom":152,"min":1,"max":null,"tag":"Repetition"}},{"Entity":{"atom":97}},{"Entity":{"atom":16}},{"Repetition":{"atom":155,"min":1,"max":null,"tag":"Repetition"}},{"Sequence":{"atoms":[154,156]}},{"Repetition":{"atom":157,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[151,153,158]}},{"Entity":{"atom":164}},{"Entity":{"atom":106}},{"Entity":{"atom":16}},{"Repetition":{"atom":162,"min":2,"max":null,"tag":"Repetition"}},{"Sequence":{"atoms":[161,163]}},{"Alternative":{"atoms":[93,110,116,150,160]}},{"Named":{"name":"code","atom":165}},{"Entity":{"atom":106}},{"Entity":{"atom":16}},{"Repetition":{"atom":168,"min":2,"max":null,"tag":"Repetition"}},{"Sequence":{"atoms":[167,169]}},{"Named":{"name":"code","atom":170}},{"Entity":{"atom":16}},{"Repetition":{"atom":172,"min":1,"max":null,"tag":"Repetition"}},{"Entity":{"atom":97}},{"Entity":{"atom":16}},{"Repetition":{"atom":175,"min":1,"max":null,"tag":"Repetition"}},{"Sequence":{"atoms":[173,174,176]}},{"Named":{"name":"code","atom":177}},{"Alternative":{"atoms":[92,171,178]}},{"Entity":{"atom":8}},{"Entity":{"atom":184}},{"Entity":{"atom":106}},{"Repetition":{"atom":182,"min":2,"max":3,"tag":"Repetition"}},{"Named":{"name":"series_prefix","atom":183}},{"Entity":{"atom":8}},{"Sequence":{"atoms":[181,185]}},{"Repetition":{"atom":186,"min":0,"max":1,"tag":"Maybe"}},{"Str":{"pattern":"SERIES"}},{"Named":{"name":"series_type","atom":188}},{"Entity":{"atom":210}},{"Str":{"pattern":""}},{"Named":{"name":"colon_format","atom":191}},{"Entity":{"atom":42}},{"Entity":{"atom":199}},{"Str":{"pattern":"F"}},{"Str":{"pattern":"M"}},{"Alternative":{"atoms":[195,196]}},{"Repetition":{"atom":197,"min":0,"max":1,"tag":"Maybe"}},{"Named":{"name":"year_prefix","atom":198}},{"Entity":{"atom":49}},{"Entity":{"atom":52}},{"Alternative":{"atoms":[200,201]}},{"Named":{"name":"year","atom":202}},{"Sequence":{"atoms":[194,203]}},{"Entity":{"atom":49}},{"Entity":{"atom":52}},{"Alternative":{"atoms":[205,206]}},{"Named":{"name":"year","atom":207}},{"Alternative":{"atoms":[204,208]}},{"Sequence":{"atoms":[192,193,209]}},{"Entity":{"atom":226}},{"Str":{"pattern":""}},{"Named":{"name":"dash_format","atom":212}},{"Entity":{"atom":44}},{"Entity":{"atom":199}},{"Entity":{"atom":49}},{"Entity":{"atom":52}},{"Alternative":{"atoms":[216,217]}},{"Named":{"name":"year","atom":218}},{"Sequence":{"atoms":[215,219]}},{"Entity":{"atom":49}},{"Entity":{"atom":52}},{"Alternative":{"atoms":[221,222]}},{"Named":{"name":"year","atom":223}},{"Alternative":{"atoms":[220,224]}},{"Sequence":{"atoms":[213,214,225]}},{"Alternative":{"atoms":[190,211]}},{"Repetition":{"atom":227,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":82}},{"Repetition":{"atom":229,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[86,179,180,187,189,228,230]}},{"Entity":{"atom":290}},{"Entity":{"atom":91}},{"Entity":{"atom":239}},{"Str":{"pattern":"C22.2"}},{"Str":{"pattern":"C22.3"}},{"Str":{"pattern":"C22.4"}},{"Str":{"pattern":"C22.6"}},{"Alternative":{"atoms":[235,236,237,238]}},{"Named":{"name":"cec_part","atom":234}},{"Entity":{"atom":248}},{"Entity":{"atom":8}},{"Str":{"pattern":"NO."}},{"Str":{"pattern":"No."}},{"Alternative":{"atoms":[243,244]}},{"Named":{"name":"no_notation","atom":245}},{"Entity":{"atom":8}},{"Sequence":{"atoms":[242,246,247]}},{"Entity":{"atom":283}},{"Entity":{"atom":16}},{"Repetition":{"atom":250,"min":1,"max":null,"tag":"Repetition"}},{"Entity":{"atom":44}},{"Entity":{"atom":16}},{"Repetition":{"atom":253,"min":1,"max":null,"tag":"Repetition"}},{"Sequence":{"atoms":[252,254]}},{"Repetition":{"atom":255,"min":2,"max":10,"tag":"Repetition"}},{"Sequence":{"atoms":[251,256]}},{"Entity":{"atom":16}},{"Repetition":{"atom":258,"min":5,"max":null,"tag":"Repetition"}},{"Entity":{"atom":44}},{"Entity":{"atom":16}},{"Repetition":{"atom":261,"min":1,"max":null,"tag":"Repetition"}},{"Sequence":{"atoms":[259,260,262]}},{"Entity":{"atom":16}},{"Repetition":{"atom":264,"min":3,"max":4,"tag":"Repetition"}},{"Entity":{"atom":44}},{"Entity":{"atom":131}},{"Entity":{"atom":16}},{"Repetition":{"atom":268,"min":3,"max":null,"tag":"Repetition"}},{"Alternative":{"atoms":[267,269]}},{"Sequence":{"atoms":[265,266,270]}},{"Entity":{"atom":16}},{"Repetition":{"atom":272,"min":1,"max":null,"tag":"Repetition"}},{"Entity":{"atom":97}},{"Entity":{"atom":16}},{"Repetition":{"atom":275,"min":1,"max":null,"tag":"Repetition"}},{"Sequence":{"atoms":[274,276]}},{"Repetition":{"atom":277,"min":1,"max":3,"tag":"Repetition"}},{"Sequence":{"atoms":[273,278]}},{"Entity":{"atom":16}},{"Repetition":{"atom":280,"min":1,"max":null,"tag":"Repetition"}},{"Alternative":{"atoms":[257,263,271,279,281]}},{"Named":{"name":"no_number","atom":282}},{"Entity":{"atom":210}},{"Entity":{"atom":226}},{"Alternative":{"atoms":[284,285]}},{"Repetition":{"atom":286,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":82}},{"Repetition":{"atom":288,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[233,240,241,249,287,289]}},{"Entity":{"atom":366}},{"Entity":{"atom":340}},{"Entity":{"atom":91}},{"Entity":{"atom":166}},{"Entity":{"atom":321}},{"Entity":{"atom":248}},{"Entity":{"atom":283}},{"Entity":{"atom":210}},{"Entity":{"atom":226}},{"Alternative":{"atoms":[298,299]}},{"Sequence":{"atoms":[296,297,300]}},{"Entity":{"atom":8}},{"Entity":{"atom":184}},{"Entity":{"atom":8}},{"Str":{"pattern":"SERIES"}},{"Named":{"name":"series","atom":305}},{"Entity":{"atom":210}},{"Entity":{"atom":226}},{"Alternative":{"atoms":[307,308]}},{"Sequence":{"atoms":[302,303,304,306,309]}},{"Entity":{"atom":8}},{"Str":{"pattern":"SERIES"}},{"Named":{"name":"series","atom":312}},{"Entity":{"atom":210}},{"Entity":{"atom":226}},{"Alternative":{"atoms":[314,315]}},{"Sequence":{"atoms":[311,313,316]}},{"Entity":{"atom":210}},{"Entity":{"atom":226}},{"Alternative":{"atoms":[318,319]}},{"Alternative":{"atoms":[301,310,317,320]}},{"Repetition":{"atom":295,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":338}},{"Entity":{"atom":57}},{"Str":{"pattern":"Amd "}},{"Repetition":{"atom":325,"min":0,"max":1,"tag":"Maybe"}},{"Str":{"pattern":"A"}},{"Repetition":{"atom":327,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":16}},{"Repetition":{"atom":329,"min":1,"max":null,"tag":"Repetition"}},{"Named":{"name":"amendment_number","atom":330}},{"Entity":{"atom":42}},{"Entity":{"atom":16}},{"Repetition":{"atom":333,"min":2,"max":2,"tag":"Repetition"}},{"Named":{"name":"amendment_year","atom":334}},{"Sequence":{"atoms":[332,335]}},{"Repetition":{"atom":336,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[324,326,328,331,337]}},{"Repetition":{"atom":323,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[293,294,322,339]}},{"Named":{"name":"base","atom":292}},{"Str":{"pattern":" + "}},{"Entity":{"atom":357}},{"Entity":{"atom":166}},{"Entity":{"atom":248}},{"Entity":{"atom":283}},{"Entity":{"atom":210}},{"Entity":{"atom":226}},{"Alternative":{"atoms":[347,348]}},{"Repetition":{"atom":349,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[345,346,350]}},{"Entity":{"atom":210}},{"Entity":{"atom":226}},{"Alternative":{"atoms":[352,353]}},{"Repetition":{"atom":354,"min":0,"max":1,"tag":"Maybe"}},{"Alternative":{"atoms":[351,355]}},{"Sequence":{"atoms":[344,356]}},{"Named":{"name":"bundled_first","atom":343}},{"Str":{"pattern":" + "}},{"Entity":{"atom":357}},{"Sequence":{"atoms":[359,360]}},{"Repetition":{"atom":361,"min":0,"max":null,"tag":"Repetition"}},{"Named":{"name":"bundled_rest","atom":362}},{"Entity":{"atom":82}},{"Repetition":{"atom":364,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[341,342,358,363,365]}},{"Entity":{"atom":412}},{"Entity":{"atom":373}},{"Entity":{"atom":91}},{"Entity":{"atom":166}},{"Entity":{"atom":321}},{"Repetition":{"atom":371,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[369,370,372]}},{"Named":{"name":"first","atom":368}},{"Entity":{"atom":57}},{"Entity":{"atom":384}},{"Entity":{"atom":91}},{"Repetition":{"atom":377,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":166}},{"Entity":{"atom":321}},{"Repetition":{"atom":380,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":338}},{"Repetition":{"atom":382,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[378,379,381,383]}},{"Named":{"name":"second","atom":376}},{"Entity":{"atom":57}},{"Entity":{"atom":384}},{"Named":{"name":"third","atom":387}},{"Sequence":{"atoms":[386,388]}},{"Repetition":{"atom":389,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":82}},{"Repetition":{"atom":391,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":410}},{"Entity":{"atom":8}},{"Entity":{"atom":400}},{"Str":{"pattern":"Code"}},{"Str":{"pattern":"Handbook"}},{"Str":{"pattern":"Training Package"}},{"Str":{"pattern":"Package"}},{"Alternative":{"atoms":[396,397,398,399]}},{"Str":{"pattern":", "}},{"Entity":{"atom":400}},{"Sequence":{"atoms":[401,402]}},{"Entity":{"atom":8}},{"Str":{"pattern":"& "}},{"Entity":{"atom":400}},{"Sequence":{"atoms":[404,405,406]}},{"Alternative":{"atoms":[403,407]}},{"Repetition":{"atom":408,"min":0,"max":null,"tag":"Repetition"}},{"Sequence":{"atoms":[394,395,409]}},{"Repetition":{"atom":393,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[374,375,385,390,392,411]}},{"Entity":{"atom":433}},{"Entity":{"atom":340}},{"Named":{"name":"first","atom":414}},{"Entity":{"atom":417}},{"Str":{"pattern":","}},{"Str":{"pattern":""}},{"Named":{"name":"comma_separator","atom":418}},{"Entity":{"atom":8}},{"Entity":{"atom":340}},{"Named":{"name":"second","atom":421}},{"Entity":{"atom":82}},{"Repetition":{"atom":423,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":8}},{"Str":{"pattern":"& "}},{"Entity":{"atom":410}},{"Sequence":{"atoms":[425,426,427]}},{"Entity":{"atom":410}},{"Alternative":{"atoms":[428,429]}},{"Named":{"name":"package_portion","atom":430}},{"Repetition":{"atom":431,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[415,416,419,420,422,424,432]}},{"Entity":{"atom":441}},{"Entity":{"atom":340}},{"Entity":{"atom":82}},{"Repetition":{"atom":436,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":410}},{"Named":{"name":"package_portion","atom":438}},{"Repetition":{"atom":439,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[435,437,440]}},{"Entity":{"atom":469}},{"Entity":{"atom":166}},{"Entity":{"atom":8}},{"Entity":{"atom":184}},{"Entity":{"atom":8}},{"Str":{"pattern":"SERIES"}},{"Named":{"name":"series","atom":447}},{"Entity":{"atom":210}},{"Entity":{"atom":226}},{"Alternative":{"atoms":[449,450]}},{"Sequence":{"atoms":[444,445,446,448,451]}},{"Entity":{"atom":8}},{"Str":{"pattern":"SERIES"}},{"Named":{"name":"series","atom":454}},{"Entity":{"atom":210}},{"Entity":{"atom":226}},{"Alternative":{"atoms":[456,457]}},{"Sequence":{"atoms":[453,455,458]}},{"Entity":{"atom":210}},{"Entity":{"atom":226}},{"Alternative":{"atoms":[460,461]}},{"Alternative":{"atoms":[452,459,462]}},{"Entity":{"atom":8}},{"Str":{"pattern":"PACKAGE"}},{"Sequence":{"atoms":[464,465]}},{"Named":{"name":"package_portion","atom":466}},{"Repetition":{"atom":467,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[443,463,468]}},{"Alternative":{"atoms":[0,85,232,291,367,413,434,442]}}],"root":470},"bindings":[]}},"preprocess":{},"tables":{},"lint":{"order_warnings":["rule code_c_tail: branches 1 and 2 are order-dependent (shared first bytes; ordered choice is decisive)","rule code_c_tail: branches 1 and 3 are order-dependent (shared first bytes; ordered choice is decisive)","rule code_c_tail: branches 2 and 3 are order-dependent (shared first bytes; ordered choice is decisive)","rule cec_part: branches 1 and 2 are order-dependent (shared first bytes; ordered choice is decisive)","rule cec_part: branches 1 and 3 are order-dependent (shared first bytes; ordered choice is decisive)","rule cec_part: branches 1 and 4 are order-dependent (shared first bytes; ordered choice is decisive)","rule cec_part: branches 2 and 3 are order-dependent (shared first bytes; ordered choice is decisive)","rule cec_part: branches 2 and 4 are order-dependent (shared first bytes; ordered choice is decisive)","rule cec_part: branches 3 and 4 are order-dependent (shared first bytes; ordered choice is decisive)","rule trailing_block: branches 1 and 2 are order-dependent (shared first bytes; ordered choice is decisive)","rule trailing_block: branches 1 and 3 are order-dependent (shared first bytes; ordered choice is decisive)","rule trailing_block: branches 2 and 3 are order-dependent (shared first bytes; ordered choice is decisive)","rule identifier: branches 1 and 2 are order-dependent (shared first bytes; ordered choice is decisive)","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 2 and 3 are order-dependent (shared first bytes; ordered choice is decisive)","rule identifier: branches 2 and 4 are order-dependent (shared first bytes; ordered choice is decisive)","rule identifier: branches 2 and 5 are order-dependent (shared first bytes; ordered choice is decisive)","rule identifier: branches 2 and 6 are order-dependent (shared first bytes; ordered choice is decisive)","rule identifier: branches 2 and 7 are order-dependent (shared first bytes; ordered choice is decisive)","rule identifier: branches 2 and 8 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 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 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 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 7 and 8 are order-dependent (shared first bytes; ordered choice is decisive)"]},"default_entry":"identifier","render":{},"derive":{},"tests":[{"entry":"identifier","kind":"accept","input":"CSA Z259.1-05","expect":{}},{"entry":"identifier","kind":"accept","input":"CSA C22.2 NO. 60601-1","expect":{}},{"entry":"identifier","kind":"accept","input":"CSA Z195-02","expect":{}},{"entry":"identifier","kind":"reject","input":"nonsense","expect":{}}],"docs":{},"source":"# Port of lib/pubid/csa/parser.rb. Deviations:\n# - the parslet's empty-match markers (str(\"\").as(:has_publisher),\n# :colon_format, :dash_format) are unrepresentable in PG and were\n# dead captures in practice; the separator itself remains in the tree.\n# - the pre-parse normalization (CONSOLIDATED stripping, (Rnnn) spacing,\n# CEI→IEC, CAN/CSA prefix handling) stays binder-side.\n\ngrammar PubidCsa version \"0.1.0\" {\n upper = %x41-5A\n lower = %x61-7A\n digit = %x30-39\n letters = 1*upper\n space = \" \"\n\n publisher = \"CSA\" space (\"\" as has_publisher)\n\n # code_pattern: four alternatives, source order\n code_a = (1*digit dot 1*digit *1(dash 1*digit) [2*6upper])\n code_b = (1*digit 2*6upper)\n one_or_one_follow = (digit !digit)\n code_c_tail = ((one_or_one_follow / 3*digit / (1*digit 1*letter)))\n code_c = (upper 1*digit *(dot 1*digit) *(dash code_c_tail) [2*6upper])\n code_d = (upper 1*digit [dot 1*digit])\n code_e = (upper 2*digit)\n code_pattern = (code_a / code_b / code_c / code_d / code_e) as code\n\n no_notation = space (\"NO.\" / \"No.\") as no_notation space\n no_number = ((1*digit 2*10(dash 1*digit)) / (5*digit dash 1*digit) / (3*4digit dash (one_or_one_follow / 3*digit)) / (1*digit 1*3(dot 1*digit)) / 1*digit) as no_number\n year_prefix = [(\"F\" / \"M\")] as year_prefix\n year_2digit = 2*digit\n year_4digit = 4*digit\n colon_year = (\"\" as colon_format) colon ((year_prefix ((year_4digit / year_2digit) as year)) / ((year_4digit / year_2digit) as year))\n dash_year = (\"\" as dash_format) dash ((year_prefix ((year_4digit / year_2digit) as year)) / ((year_4digit / year_2digit) as year))\n reaffirmation = space \"(R\" ((4digit) as reaffirmation_4digit / (2digit) as reaffirmation_2digit) \")\"\n amendment_slash = slash [\"Amd \" ] [\"A\"] (1*digit) as amendment_number [(colon (2digit) as amendment_year)]\n package_keyword = \"Code\" / \"Handbook\" / \"Training Package\" / \"Package\"\n package_portion = space package_keyword *((\", \" package_keyword) / (space \"& \" package_keyword))\n series_prefix = (2*3upper) as series_prefix\n series_keyword = \"SERIES\"\n\n series_identifier = publisher (code_pattern / (upper 2*digit) as code / (1*digit dot 1*digit) as code) space [series_prefix space] \"SERIES\" as series_type [colon_year / dash_year] [reaffirmation]\n cec_part = \"C22.2\" / \"C22.3\" / \"C22.4\" / \"C22.6\"\n cec_identifier = publisher (cec_part as cec_part) no_notation no_number [colon_year / dash_year] [reaffirmation]\n adoption_identifier = (\"CSA\" as adoption_pub) adoption_body [reaffirmation]\n adoption_body = ((\"ISO/IEC\" as adoption_org space (\"TR\" / \"TS\") as iso_type space (1*numdash) as adoption_number) / (\"ISO/IEC\" as adoption_org_with_type space (1*numdash) as adoption_number) / ((\"ISO\" / \"IEC\" / \"CEI/IEC\" / \"CISPR\") as adoption_org space (1*numdash) as adoption_number)) ((colon / dash) as adoption_year_sep (year_4digit / year_2digit) as adoption_year) [(slash \"A\" digit as adoption_amendment (colon / dash) (year_4digit / year_2digit) as adoption_amendment_year)]\n numdash = digit / \"-\"\n iso_iec_adoption = adoption_identifier\n\n trailing_block = ((no_notation no_number (colon_year / dash_year)) / (space series_prefix space \"SERIES\" as series (colon_year / dash_year)) / (space \"SERIES\" as series (colon_year / dash_year)) / (colon_year / dash_year))\n csa_code = publisher code_pattern [trailing_block] [amendment_slash]\n base_csa_code = publisher code_pattern [trailing_block]\n continuation_code = [publisher] code_pattern [trailing_block] [amendment_slash]\n bundled_portion = code_pattern ((no_notation no_number [colon_year / dash_year]) / [colon_year / dash_year])\n bundled_identifier = (csa_code as base) \" + \" (bundled_portion as bundled_first) ((*(\" + \" bundled_portion)) as bundled_rest) [reaffirmation]\n combined_slash = ((base_csa_code as first) slash (continuation_code as second) [(slash continuation_code as third)] [reaffirmation] [package_portion])\n combined_comma = ((csa_code as first) comma (\"\" as comma_separator) space (csa_code as second) [reaffirmation] [(space \"& \" package_portion / package_portion) as package_portion])\n single_identifier = csa_code [reaffirmation] [package_portion as package_portion]\n code_only_identifier = code_pattern ((space series_prefix space \"SERIES\" as series (colon_year / dash_year)) / (space \"SERIES\" as series (colon_year / dash_year)) / (colon_year / dash_year)) [(space \"PACKAGE\") as package_portion]\n\n identifier = iso_iec_adoption / series_identifier / cec_identifier / bundled_identifier / combined_slash / combined_comma / single_identifier / code_only_identifier\n\n comma = \",\"\n dash = \"-\"\n slash = \"/\"\n colon = \":\"\n dot = \".\"\n ampersand = \"&\"\n letter = upper / lower\n entry identifier: identifier\n\n test {\n accept \"CSA Z259.1-05\"\n accept \"CSA C22.2 NO. 60601-1\"\n accept \"CSA Z195-02\"\n reject \"nonsense\"\n }\n}\n","source_hash":"2409827bab3bee9163f75b95e0b26444f70a1c9dfa65884aa33475bb9a72eab1","compiler_version":"1.3.93","checksum":"sha256:84bceb361d62ac6146bda139abe0c6406b2460f7d3cba40041881db7b4b62269"}
1
+ {"bindings":null,"version":"0.1.0","grammar":"PubidCsa","shape":"parsanol-tree/v2","binding_version":1,"entries":{"identifier":{"root":"identifier","grammar":{"atoms":[{"Entity":{"atom":1}},{"Entity":{"atom":85}},{"Str":{"pattern":"CSA"}},{"Named":{"name":"adoption_pub","atom":2}},{"Entity":{"atom":71}},{"Str":{"pattern":"ISO/IEC"}},{"Named":{"name":"adoption_org","atom":5}},{"Entity":{"atom":8}},{"Str":{"pattern":" "}},{"Str":{"pattern":"TR"}},{"Str":{"pattern":"TS"}},{"Alternative":{"atoms":[9,10]}},{"Named":{"name":"iso_type","atom":11}},{"Entity":{"atom":8}},{"Entity":{"atom":18}},{"Entity":{"atom":16}},{"Re":{"pattern":"[\\x30-\\x39]"}},{"Str":{"pattern":"-"}},{"Alternative":{"atoms":[15,17]}},{"Repetition":{"atom":14,"min":1,"max":null,"tag":"Repetition"}},{"Named":{"name":"adoption_number","atom":19}},{"Sequence":{"atoms":[6,7,12,13,20]}},{"Str":{"pattern":"ISO/IEC"}},{"Named":{"name":"adoption_org_with_type","atom":22}},{"Entity":{"atom":8}},{"Entity":{"atom":18}},{"Repetition":{"atom":25,"min":1,"max":null,"tag":"Repetition"}},{"Named":{"name":"adoption_number","atom":26}},{"Sequence":{"atoms":[23,24,27]}},{"Str":{"pattern":"ISO"}},{"Str":{"pattern":"IEC"}},{"Str":{"pattern":"CEI/IEC"}},{"Str":{"pattern":"CISPR"}},{"Alternative":{"atoms":[29,30,31,32]}},{"Named":{"name":"adoption_org","atom":33}},{"Entity":{"atom":8}},{"Entity":{"atom":18}},{"Repetition":{"atom":36,"min":1,"max":null,"tag":"Repetition"}},{"Named":{"name":"adoption_number","atom":37}},{"Sequence":{"atoms":[34,35,38]}},{"Alternative":{"atoms":[21,28,39]}},{"Entity":{"atom":42}},{"Str":{"pattern":":"}},{"Entity":{"atom":44}},{"Str":{"pattern":"-"}},{"Alternative":{"atoms":[41,43]}},{"Named":{"name":"adoption_year_sep","atom":45}},{"Entity":{"atom":49}},{"Entity":{"atom":16}},{"Repetition":{"atom":48,"min":4,"max":null,"tag":"Repetition"}},{"Entity":{"atom":52}},{"Entity":{"atom":16}},{"Repetition":{"atom":51,"min":2,"max":null,"tag":"Repetition"}},{"Alternative":{"atoms":[47,50]}},{"Named":{"name":"adoption_year","atom":53}},{"Sequence":{"atoms":[46,54]}},{"Entity":{"atom":57}},{"Str":{"pattern":"/"}},{"Named":{"name":"slash","atom":56}},{"Str":{"pattern":"A"}},{"Entity":{"atom":16}},{"Named":{"name":"adoption_amendment","atom":60}},{"Entity":{"atom":42}},{"Entity":{"atom":44}},{"Alternative":{"atoms":[62,63]}},{"Entity":{"atom":49}},{"Entity":{"atom":52}},{"Alternative":{"atoms":[65,66]}},{"Named":{"name":"adoption_amendment_year","atom":67}},{"Sequence":{"atoms":[58,59,61,64,68]}},{"Repetition":{"atom":69,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[40,55,70]}},{"Entity":{"atom":83}},{"Entity":{"atom":8}},{"Str":{"pattern":"(R"}},{"Entity":{"atom":16}},{"Repetition":{"atom":75,"min":4,"max":4,"tag":"Repetition"}},{"Named":{"name":"reaffirmation_4digit","atom":76}},{"Entity":{"atom":16}},{"Repetition":{"atom":78,"min":2,"max":2,"tag":"Repetition"}},{"Named":{"name":"reaffirmation_2digit","atom":79}},{"Alternative":{"atoms":[77,80]}},{"Str":{"pattern":")"}},{"Sequence":{"atoms":[73,74,81,82]}},{"Repetition":{"atom":72,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[3,4,84]}},{"Entity":{"atom":230}},{"Entity":{"atom":91}},{"Str":{"pattern":"CSA"}},{"Entity":{"atom":8}},{"Sequence":{"atoms":[88,89]}},{"Named":{"name":"has_publisher","atom":90}},{"Entity":{"atom":159}},{"Entity":{"atom":16}},{"Repetition":{"atom":93,"min":1,"max":null,"tag":"Repetition"}},{"Entity":{"atom":96}},{"Str":{"pattern":"."}},{"Entity":{"atom":16}},{"Repetition":{"atom":97,"min":1,"max":null,"tag":"Repetition"}},{"Entity":{"atom":44}},{"Entity":{"atom":16}},{"Repetition":{"atom":100,"min":1,"max":null,"tag":"Repetition"}},{"Sequence":{"atoms":[99,101]}},{"Repetition":{"atom":102,"min":0,"max":1,"tag":"Repetition"}},{"Entity":{"atom":105}},{"Re":{"pattern":"[\\x41-\\x5a]"}},{"Repetition":{"atom":104,"min":2,"max":6,"tag":"Repetition"}},{"Repetition":{"atom":106,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[94,95,98,103,107]}},{"Entity":{"atom":16}},{"Repetition":{"atom":109,"min":1,"max":null,"tag":"Repetition"}},{"Entity":{"atom":105}},{"Repetition":{"atom":111,"min":2,"max":6,"tag":"Repetition"}},{"Sequence":{"atoms":[110,112]}},{"Entity":{"atom":105}},{"Entity":{"atom":16}},{"Repetition":{"atom":115,"min":1,"max":null,"tag":"Repetition"}},{"Entity":{"atom":96}},{"Entity":{"atom":16}},{"Repetition":{"atom":118,"min":1,"max":null,"tag":"Repetition"}},{"Sequence":{"atoms":[117,119]}},{"Repetition":{"atom":120,"min":0,"max":null,"tag":"Repetition"}},{"Entity":{"atom":44}},{"Entity":{"atom":16}},{"Entity":{"atom":16}},{"Lookahead":{"atom":124,"positive":false}},{"Sequence":{"atoms":[123,125]}},{"Entity":{"atom":16}},{"Repetition":{"atom":127,"min":3,"max":null,"tag":"Repetition"}},{"Entity":{"atom":16}},{"Repetition":{"atom":129,"min":1,"max":null,"tag":"Repetition"}},{"Entity":{"atom":135}},{"Entity":{"atom":105}},{"Entity":{"atom":134}},{"Re":{"pattern":"[\\x61-\\x7a]"}},{"Alternative":{"atoms":[132,133]}},{"Repetition":{"atom":131,"min":1,"max":null,"tag":"Repetition"}},{"Sequence":{"atoms":[130,136]}},{"Alternative":{"atoms":[126,128,137]}},{"Sequence":{"atoms":[122,138]}},{"Repetition":{"atom":139,"min":0,"max":null,"tag":"Repetition"}},{"Entity":{"atom":105}},{"Repetition":{"atom":141,"min":2,"max":6,"tag":"Repetition"}},{"Repetition":{"atom":142,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[114,116,121,140,143]}},{"Entity":{"atom":105}},{"Entity":{"atom":16}},{"Repetition":{"atom":146,"min":1,"max":null,"tag":"Repetition"}},{"Entity":{"atom":96}},{"Entity":{"atom":16}},{"Repetition":{"atom":149,"min":1,"max":null,"tag":"Repetition"}},{"Sequence":{"atoms":[148,150]}},{"Repetition":{"atom":151,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[145,147,152]}},{"Entity":{"atom":105}},{"Entity":{"atom":16}},{"Repetition":{"atom":155,"min":2,"max":null,"tag":"Repetition"}},{"Sequence":{"atoms":[154,156]}},{"Alternative":{"atoms":[108,113,144,153,157]}},{"Named":{"name":"code","atom":158}},{"Entity":{"atom":105}},{"Entity":{"atom":16}},{"Repetition":{"atom":161,"min":2,"max":null,"tag":"Repetition"}},{"Sequence":{"atoms":[160,162]}},{"Named":{"name":"code","atom":163}},{"Entity":{"atom":16}},{"Repetition":{"atom":165,"min":1,"max":null,"tag":"Repetition"}},{"Entity":{"atom":96}},{"Entity":{"atom":16}},{"Repetition":{"atom":168,"min":1,"max":null,"tag":"Repetition"}},{"Sequence":{"atoms":[166,167,169]}},{"Named":{"name":"code","atom":170}},{"Alternative":{"atoms":[92,164,171]}},{"Entity":{"atom":8}},{"Entity":{"atom":177}},{"Entity":{"atom":105}},{"Repetition":{"atom":175,"min":2,"max":3,"tag":"Repetition"}},{"Named":{"name":"series_prefix","atom":176}},{"Entity":{"atom":8}},{"Sequence":{"atoms":[174,178]}},{"Repetition":{"atom":179,"min":0,"max":1,"tag":"Maybe"}},{"Str":{"pattern":"SERIES"}},{"Named":{"name":"series_type","atom":181}},{"Entity":{"atom":206}},{"Entity":{"atom":42}},{"Named":{"name":"colon_format","atom":184}},{"Entity":{"atom":191}},{"Str":{"pattern":"F"}},{"Str":{"pattern":"M"}},{"Alternative":{"atoms":[187,188]}},{"Named":{"name":"year_prefix","atom":189}},{"Repetition":{"atom":190,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":16}},{"Repetition":{"atom":192,"min":4,"max":4,"tag":"Repetition"}},{"Entity":{"atom":16}},{"Repetition":{"atom":194,"min":2,"max":2,"tag":"Repetition"}},{"Alternative":{"atoms":[193,195]}},{"Named":{"name":"year","atom":196}},{"Sequence":{"atoms":[186,197]}},{"Sequence":{"atoms":[185,198]}},{"Entity":{"atom":16}},{"Repetition":{"atom":200,"min":4,"max":4,"tag":"Repetition"}},{"Entity":{"atom":16}},{"Repetition":{"atom":202,"min":2,"max":2,"tag":"Repetition"}},{"Alternative":{"atoms":[201,203]}},{"Named":{"name":"year","atom":204}},{"Alternative":{"atoms":[199,205]}},{"Entity":{"atom":225}},{"Entity":{"atom":44}},{"Named":{"name":"dash_format","atom":208}},{"Entity":{"atom":191}},{"Entity":{"atom":16}},{"Repetition":{"atom":211,"min":4,"max":4,"tag":"Repetition"}},{"Entity":{"atom":16}},{"Repetition":{"atom":213,"min":2,"max":2,"tag":"Repetition"}},{"Alternative":{"atoms":[212,214]}},{"Named":{"name":"year","atom":215}},{"Sequence":{"atoms":[210,216]}},{"Sequence":{"atoms":[209,217]}},{"Entity":{"atom":16}},{"Repetition":{"atom":219,"min":4,"max":4,"tag":"Repetition"}},{"Entity":{"atom":16}},{"Repetition":{"atom":221,"min":2,"max":2,"tag":"Repetition"}},{"Alternative":{"atoms":[220,222]}},{"Named":{"name":"year","atom":223}},{"Alternative":{"atoms":[218,224]}},{"Alternative":{"atoms":[183,207]}},{"Repetition":{"atom":226,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":83}},{"Repetition":{"atom":228,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[87,172,173,180,182,227,229]}},{"Entity":{"atom":293}},{"Entity":{"atom":91}},{"Entity":{"atom":238}},{"Str":{"pattern":"C22.2"}},{"Str":{"pattern":"C22.3"}},{"Str":{"pattern":"C22.4"}},{"Str":{"pattern":"C22.6"}},{"Alternative":{"atoms":[234,235,236,237]}},{"Named":{"name":"cec_part","atom":233}},{"Entity":{"atom":247}},{"Entity":{"atom":8}},{"Str":{"pattern":"NO."}},{"Str":{"pattern":"No."}},{"Alternative":{"atoms":[242,243]}},{"Named":{"name":"no_notation","atom":244}},{"Entity":{"atom":8}},{"Sequence":{"atoms":[241,245,246]}},{"Entity":{"atom":286}},{"Entity":{"atom":16}},{"Repetition":{"atom":249,"min":1,"max":null,"tag":"Repetition"}},{"Entity":{"atom":44}},{"Entity":{"atom":16}},{"Repetition":{"atom":252,"min":1,"max":null,"tag":"Repetition"}},{"Sequence":{"atoms":[251,253]}},{"Repetition":{"atom":254,"min":2,"max":10,"tag":"Repetition"}},{"Sequence":{"atoms":[250,255]}},{"Entity":{"atom":16}},{"Repetition":{"atom":257,"min":5,"max":null,"tag":"Repetition"}},{"Entity":{"atom":44}},{"Entity":{"atom":16}},{"Repetition":{"atom":260,"min":1,"max":null,"tag":"Repetition"}},{"Sequence":{"atoms":[258,259,261]}},{"Entity":{"atom":16}},{"Repetition":{"atom":263,"min":3,"max":4,"tag":"Repetition"}},{"Entity":{"atom":44}},{"Entity":{"atom":270}},{"Entity":{"atom":16}},{"Entity":{"atom":16}},{"Lookahead":{"atom":268,"positive":false}},{"Sequence":{"atoms":[267,269]}},{"Entity":{"atom":16}},{"Repetition":{"atom":271,"min":3,"max":null,"tag":"Repetition"}},{"Alternative":{"atoms":[266,272]}},{"Sequence":{"atoms":[264,265,273]}},{"Entity":{"atom":16}},{"Repetition":{"atom":275,"min":1,"max":null,"tag":"Repetition"}},{"Entity":{"atom":96}},{"Entity":{"atom":16}},{"Repetition":{"atom":278,"min":1,"max":null,"tag":"Repetition"}},{"Sequence":{"atoms":[277,279]}},{"Repetition":{"atom":280,"min":1,"max":3,"tag":"Repetition"}},{"Sequence":{"atoms":[276,281]}},{"Entity":{"atom":16}},{"Repetition":{"atom":283,"min":1,"max":null,"tag":"Repetition"}},{"Alternative":{"atoms":[256,262,274,282,284]}},{"Named":{"name":"no_number","atom":285}},{"Entity":{"atom":206}},{"Entity":{"atom":225}},{"Alternative":{"atoms":[287,288]}},{"Repetition":{"atom":289,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":83}},{"Repetition":{"atom":291,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[232,239,240,248,290,292]}},{"Entity":{"atom":518}},{"Entity":{"atom":493}},{"Entity":{"atom":301}},{"Str":{"pattern":"CSA"}},{"Entity":{"atom":8}},{"Sequence":{"atoms":[297,298]}},{"Named":{"name":"part_has_publisher","atom":299}},{"Repetition":{"atom":300,"min":1,"max":null,"tag":"Repetition"}},{"Entity":{"atom":364}},{"Entity":{"atom":16}},{"Repetition":{"atom":303,"min":1,"max":null,"tag":"Repetition"}},{"Entity":{"atom":96}},{"Entity":{"atom":16}},{"Repetition":{"atom":306,"min":1,"max":null,"tag":"Repetition"}},{"Entity":{"atom":44}},{"Entity":{"atom":16}},{"Repetition":{"atom":309,"min":1,"max":null,"tag":"Repetition"}},{"Sequence":{"atoms":[308,310]}},{"Repetition":{"atom":311,"min":0,"max":1,"tag":"Repetition"}},{"Entity":{"atom":105}},{"Repetition":{"atom":313,"min":2,"max":6,"tag":"Repetition"}},{"Repetition":{"atom":314,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[304,305,307,312,315]}},{"Entity":{"atom":16}},{"Repetition":{"atom":317,"min":1,"max":null,"tag":"Repetition"}},{"Entity":{"atom":105}},{"Repetition":{"atom":319,"min":2,"max":6,"tag":"Repetition"}},{"Sequence":{"atoms":[318,320]}},{"Entity":{"atom":105}},{"Entity":{"atom":16}},{"Repetition":{"atom":323,"min":1,"max":null,"tag":"Repetition"}},{"Entity":{"atom":96}},{"Entity":{"atom":16}},{"Repetition":{"atom":326,"min":1,"max":null,"tag":"Repetition"}},{"Sequence":{"atoms":[325,327]}},{"Repetition":{"atom":328,"min":0,"max":null,"tag":"Repetition"}},{"Entity":{"atom":44}},{"Entity":{"atom":16}},{"Entity":{"atom":16}},{"Lookahead":{"atom":332,"positive":false}},{"Sequence":{"atoms":[331,333]}},{"Entity":{"atom":16}},{"Repetition":{"atom":335,"min":3,"max":null,"tag":"Repetition"}},{"Entity":{"atom":16}},{"Repetition":{"atom":337,"min":1,"max":null,"tag":"Repetition"}},{"Entity":{"atom":135}},{"Repetition":{"atom":339,"min":1,"max":null,"tag":"Repetition"}},{"Sequence":{"atoms":[338,340]}},{"Alternative":{"atoms":[334,336,341]}},{"Sequence":{"atoms":[330,342]}},{"Repetition":{"atom":343,"min":0,"max":null,"tag":"Repetition"}},{"Entity":{"atom":105}},{"Repetition":{"atom":345,"min":2,"max":6,"tag":"Repetition"}},{"Repetition":{"atom":346,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[322,324,329,344,347]}},{"Entity":{"atom":105}},{"Entity":{"atom":16}},{"Repetition":{"atom":350,"min":1,"max":null,"tag":"Repetition"}},{"Entity":{"atom":96}},{"Entity":{"atom":16}},{"Repetition":{"atom":353,"min":1,"max":null,"tag":"Repetition"}},{"Sequence":{"atoms":[352,354]}},{"Repetition":{"atom":355,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[349,351,356]}},{"Entity":{"atom":105}},{"Entity":{"atom":16}},{"Repetition":{"atom":359,"min":2,"max":null,"tag":"Repetition"}},{"Sequence":{"atoms":[358,360]}},{"Alternative":{"atoms":[316,321,348,357,361]}},{"Repetition":{"atom":362,"min":1,"max":null,"tag":"Repetition"}},{"Named":{"name":"part_code","atom":363}},{"Repetition":{"atom":302,"min":1,"max":null,"tag":"Repetition"}},{"Entity":{"atom":491}},{"Entity":{"atom":375}},{"Entity":{"atom":8}},{"Str":{"pattern":"NO."}},{"Str":{"pattern":"No."}},{"Alternative":{"atoms":[369,370]}},{"Named":{"name":"part_no_notation","atom":371}},{"Repetition":{"atom":372,"min":1,"max":null,"tag":"Repetition"}},{"Entity":{"atom":8}},{"Sequence":{"atoms":[368,373,374]}},{"Entity":{"atom":414}},{"Entity":{"atom":16}},{"Repetition":{"atom":377,"min":1,"max":null,"tag":"Repetition"}},{"Entity":{"atom":44}},{"Entity":{"atom":16}},{"Repetition":{"atom":380,"min":1,"max":null,"tag":"Repetition"}},{"Sequence":{"atoms":[379,381]}},{"Repetition":{"atom":382,"min":2,"max":10,"tag":"Repetition"}},{"Sequence":{"atoms":[378,383]}},{"Entity":{"atom":16}},{"Repetition":{"atom":385,"min":5,"max":null,"tag":"Repetition"}},{"Entity":{"atom":44}},{"Entity":{"atom":16}},{"Repetition":{"atom":388,"min":1,"max":null,"tag":"Repetition"}},{"Sequence":{"atoms":[386,387,389]}},{"Entity":{"atom":16}},{"Repetition":{"atom":391,"min":3,"max":4,"tag":"Repetition"}},{"Entity":{"atom":44}},{"Entity":{"atom":16}},{"Entity":{"atom":16}},{"Lookahead":{"atom":395,"positive":false}},{"Sequence":{"atoms":[394,396]}},{"Entity":{"atom":16}},{"Repetition":{"atom":398,"min":3,"max":null,"tag":"Repetition"}},{"Alternative":{"atoms":[397,399]}},{"Sequence":{"atoms":[392,393,400]}},{"Entity":{"atom":16}},{"Repetition":{"atom":402,"min":1,"max":null,"tag":"Repetition"}},{"Entity":{"atom":96}},{"Entity":{"atom":16}},{"Repetition":{"atom":405,"min":1,"max":null,"tag":"Repetition"}},{"Sequence":{"atoms":[404,406]}},{"Repetition":{"atom":407,"min":1,"max":3,"tag":"Repetition"}},{"Sequence":{"atoms":[403,408]}},{"Entity":{"atom":16}},{"Repetition":{"atom":410,"min":1,"max":null,"tag":"Repetition"}},{"Alternative":{"atoms":[384,390,401,409,411]}},{"Repetition":{"atom":412,"min":1,"max":null,"tag":"Repetition"}},{"Named":{"name":"part_no_number","atom":413}},{"Entity":{"atom":441}},{"Entity":{"atom":42}},{"Repetition":{"atom":416,"min":1,"max":null,"tag":"Repetition"}},{"Named":{"name":"part_colon_format","atom":417}},{"Entity":{"atom":424}},{"Str":{"pattern":"F"}},{"Str":{"pattern":"M"}},{"Alternative":{"atoms":[420,421]}},{"Named":{"name":"part_year_prefix","atom":422}},{"Repetition":{"atom":423,"min":1,"max":null,"tag":"Repetition"}},{"Entity":{"atom":16}},{"Repetition":{"atom":425,"min":4,"max":4,"tag":"Repetition"}},{"Named":{"name":"part_year","atom":426}},{"Sequence":{"atoms":[419,427]}},{"Entity":{"atom":424}},{"Entity":{"atom":16}},{"Repetition":{"atom":430,"min":2,"max":2,"tag":"Repetition"}},{"Named":{"name":"part_year","atom":431}},{"Sequence":{"atoms":[429,432]}},{"Entity":{"atom":16}},{"Repetition":{"atom":434,"min":4,"max":4,"tag":"Repetition"}},{"Named":{"name":"part_year","atom":435}},{"Entity":{"atom":16}},{"Repetition":{"atom":437,"min":2,"max":2,"tag":"Repetition"}},{"Named":{"name":"part_year","atom":438}},{"Alternative":{"atoms":[428,433,436,439]}},{"Sequence":{"atoms":[418,440]}},{"Entity":{"atom":463}},{"Entity":{"atom":44}},{"Repetition":{"atom":443,"min":1,"max":null,"tag":"Repetition"}},{"Named":{"name":"part_dash_format","atom":444}},{"Entity":{"atom":424}},{"Entity":{"atom":16}},{"Repetition":{"atom":447,"min":4,"max":4,"tag":"Repetition"}},{"Named":{"name":"part_year","atom":448}},{"Sequence":{"atoms":[446,449]}},{"Entity":{"atom":424}},{"Entity":{"atom":16}},{"Repetition":{"atom":452,"min":2,"max":2,"tag":"Repetition"}},{"Named":{"name":"part_year","atom":453}},{"Sequence":{"atoms":[451,454]}},{"Entity":{"atom":16}},{"Repetition":{"atom":456,"min":4,"max":4,"tag":"Repetition"}},{"Named":{"name":"part_year","atom":457}},{"Entity":{"atom":16}},{"Repetition":{"atom":459,"min":2,"max":2,"tag":"Repetition"}},{"Named":{"name":"part_year","atom":460}},{"Alternative":{"atoms":[450,455,458,461]}},{"Sequence":{"atoms":[445,462]}},{"Alternative":{"atoms":[415,442]}},{"Sequence":{"atoms":[367,376,464]}},{"Entity":{"atom":8}},{"Entity":{"atom":471}},{"Entity":{"atom":105}},{"Repetition":{"atom":468,"min":2,"max":6,"tag":"Repetition"}},{"Named":{"name":"part_series_prefix","atom":469}},{"Repetition":{"atom":470,"min":1,"max":null,"tag":"Repetition"}},{"Entity":{"atom":8}},{"Str":{"pattern":"SERIES"}},{"Named":{"name":"part_series","atom":473}},{"Repetition":{"atom":474,"min":1,"max":null,"tag":"Repetition"}},{"Entity":{"atom":441}},{"Entity":{"atom":463}},{"Alternative":{"atoms":[476,477]}},{"Sequence":{"atoms":[466,467,472,475,478]}},{"Entity":{"atom":8}},{"Str":{"pattern":"SERIES"}},{"Named":{"name":"part_series","atom":481}},{"Repetition":{"atom":482,"min":1,"max":null,"tag":"Repetition"}},{"Entity":{"atom":441}},{"Entity":{"atom":463}},{"Alternative":{"atoms":[484,485]}},{"Sequence":{"atoms":[480,483,486]}},{"Entity":{"atom":441}},{"Entity":{"atom":463}},{"Alternative":{"atoms":[488,489]}},{"Alternative":{"atoms":[465,479,487,490]}},{"Repetition":{"atom":366,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[296,365,492]}},{"Str":{"pattern":" + "}},{"Named":{"name":"plus_separator","atom":494}},{"Entity":{"atom":511}},{"Entity":{"atom":364}},{"Repetition":{"atom":497,"min":1,"max":null,"tag":"Repetition"}},{"Entity":{"atom":375}},{"Entity":{"atom":414}},{"Entity":{"atom":441}},{"Entity":{"atom":463}},{"Alternative":{"atoms":[501,502]}},{"Repetition":{"atom":503,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[499,500,504]}},{"Entity":{"atom":441}},{"Entity":{"atom":463}},{"Alternative":{"atoms":[506,507]}},{"Repetition":{"atom":508,"min":0,"max":1,"tag":"Maybe"}},{"Alternative":{"atoms":[505,509]}},{"Sequence":{"atoms":[498,510]}},{"Str":{"pattern":" + "}},{"Entity":{"atom":511}},{"Sequence":{"atoms":[512,513]}},{"Repetition":{"atom":514,"min":0,"max":null,"tag":"Repetition"}},{"Entity":{"atom":83}},{"Repetition":{"atom":516,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[295,495,496,515,517]}},{"Entity":{"atom":580}},{"Entity":{"atom":493}},{"Entity":{"atom":57}},{"Named":{"name":"slash","atom":521}},{"Entity":{"atom":548}},{"Entity":{"atom":301}},{"Repetition":{"atom":524,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":364}},{"Repetition":{"atom":526,"min":1,"max":null,"tag":"Repetition"}},{"Entity":{"atom":491}},{"Repetition":{"atom":528,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":546}},{"Entity":{"atom":57}},{"Named":{"name":"slash","atom":531}},{"Str":{"pattern":"Amd "}},{"Repetition":{"atom":533,"min":0,"max":1,"tag":"Maybe"}},{"Str":{"pattern":"A"}},{"Repetition":{"atom":535,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":16}},{"Repetition":{"atom":537,"min":1,"max":null,"tag":"Repetition"}},{"Named":{"name":"amendment_number","atom":538}},{"Entity":{"atom":42}},{"Entity":{"atom":16}},{"Repetition":{"atom":541,"min":2,"max":2,"tag":"Repetition"}},{"Named":{"name":"amendment_year","atom":542}},{"Sequence":{"atoms":[540,543]}},{"Repetition":{"atom":544,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[532,534,536,539,545]}},{"Repetition":{"atom":530,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[525,527,529,547]}},{"Sequence":{"atoms":[522,523]}},{"Repetition":{"atom":549,"min":1,"max":null,"tag":"Repetition"}},{"Entity":{"atom":83}},{"Repetition":{"atom":551,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":577}},{"Entity":{"atom":8}},{"Str":{"pattern":"Code"}},{"Str":{"pattern":"Handbook"}},{"Str":{"pattern":"Training Package"}},{"Str":{"pattern":"Package"}},{"Alternative":{"atoms":[555,556,557,558]}},{"Str":{"pattern":", "}},{"Str":{"pattern":"Code"}},{"Str":{"pattern":"Handbook"}},{"Str":{"pattern":"Training Package"}},{"Str":{"pattern":"Package"}},{"Alternative":{"atoms":[561,562,563,564]}},{"Sequence":{"atoms":[560,565]}},{"Entity":{"atom":8}},{"Str":{"pattern":"& "}},{"Str":{"pattern":"Code"}},{"Str":{"pattern":"Handbook"}},{"Str":{"pattern":"Training Package"}},{"Str":{"pattern":"Package"}},{"Alternative":{"atoms":[569,570,571,572]}},{"Sequence":{"atoms":[567,568,573]}},{"Alternative":{"atoms":[566,574]}},{"Repetition":{"atom":575,"min":0,"max":null,"tag":"Repetition"}},{"Sequence":{"atoms":[554,559,576]}},{"Named":{"name":"package_portion","atom":553}},{"Repetition":{"atom":578,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[520,550,552,579]}},{"Entity":{"atom":642}},{"Entity":{"atom":493}},{"Str":{"pattern":","}},{"Named":{"name":"comma_separator","atom":583}},{"Entity":{"atom":8}},{"Entity":{"atom":548}},{"Entity":{"atom":83}},{"Repetition":{"atom":587,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":8}},{"Str":{"pattern":"& "}},{"Entity":{"atom":8}},{"Str":{"pattern":"Code"}},{"Str":{"pattern":"Handbook"}},{"Str":{"pattern":"Training Package"}},{"Str":{"pattern":"Package"}},{"Alternative":{"atoms":[592,593,594,595]}},{"Str":{"pattern":", "}},{"Str":{"pattern":"Code"}},{"Str":{"pattern":"Handbook"}},{"Str":{"pattern":"Training Package"}},{"Str":{"pattern":"Package"}},{"Alternative":{"atoms":[598,599,600,601]}},{"Sequence":{"atoms":[597,602]}},{"Entity":{"atom":8}},{"Str":{"pattern":"& "}},{"Str":{"pattern":"Code"}},{"Str":{"pattern":"Handbook"}},{"Str":{"pattern":"Training Package"}},{"Str":{"pattern":"Package"}},{"Alternative":{"atoms":[606,607,608,609]}},{"Sequence":{"atoms":[604,605,610]}},{"Alternative":{"atoms":[603,611]}},{"Repetition":{"atom":612,"min":0,"max":null,"tag":"Repetition"}},{"Sequence":{"atoms":[589,590,591,596,613]}},{"Entity":{"atom":8}},{"Str":{"pattern":"Code"}},{"Str":{"pattern":"Handbook"}},{"Str":{"pattern":"Training Package"}},{"Str":{"pattern":"Package"}},{"Alternative":{"atoms":[616,617,618,619]}},{"Str":{"pattern":", "}},{"Str":{"pattern":"Code"}},{"Str":{"pattern":"Handbook"}},{"Str":{"pattern":"Training Package"}},{"Str":{"pattern":"Package"}},{"Alternative":{"atoms":[622,623,624,625]}},{"Sequence":{"atoms":[621,626]}},{"Entity":{"atom":8}},{"Str":{"pattern":"& "}},{"Str":{"pattern":"Code"}},{"Str":{"pattern":"Handbook"}},{"Str":{"pattern":"Training Package"}},{"Str":{"pattern":"Package"}},{"Alternative":{"atoms":[630,631,632,633]}},{"Sequence":{"atoms":[628,629,634]}},{"Alternative":{"atoms":[627,635]}},{"Repetition":{"atom":636,"min":0,"max":null,"tag":"Repetition"}},{"Sequence":{"atoms":[615,620,637]}},{"Alternative":{"atoms":[614,638]}},{"Named":{"name":"package_portion","atom":639}},{"Repetition":{"atom":640,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[582,584,585,586,588,641]}},{"Entity":{"atom":706}},{"Entity":{"atom":677}},{"Entity":{"atom":91}},{"Entity":{"atom":159}},{"Entity":{"atom":673}},{"Entity":{"atom":247}},{"Entity":{"atom":286}},{"Entity":{"atom":206}},{"Entity":{"atom":225}},{"Alternative":{"atoms":[650,651]}},{"Sequence":{"atoms":[648,649,652]}},{"Entity":{"atom":8}},{"Entity":{"atom":177}},{"Entity":{"atom":8}},{"Str":{"pattern":"SERIES"}},{"Named":{"name":"series","atom":657}},{"Entity":{"atom":206}},{"Entity":{"atom":225}},{"Alternative":{"atoms":[659,660]}},{"Sequence":{"atoms":[654,655,656,658,661]}},{"Entity":{"atom":8}},{"Str":{"pattern":"SERIES"}},{"Named":{"name":"series","atom":664}},{"Entity":{"atom":206}},{"Entity":{"atom":225}},{"Alternative":{"atoms":[666,667]}},{"Sequence":{"atoms":[663,665,668]}},{"Entity":{"atom":206}},{"Entity":{"atom":225}},{"Alternative":{"atoms":[670,671]}},{"Alternative":{"atoms":[653,662,669,672]}},{"Repetition":{"atom":647,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":546}},{"Repetition":{"atom":675,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[645,646,674,676]}},{"Entity":{"atom":83}},{"Repetition":{"atom":678,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":8}},{"Str":{"pattern":"Code"}},{"Str":{"pattern":"Handbook"}},{"Str":{"pattern":"Training Package"}},{"Str":{"pattern":"Package"}},{"Alternative":{"atoms":[681,682,683,684]}},{"Str":{"pattern":", "}},{"Str":{"pattern":"Code"}},{"Str":{"pattern":"Handbook"}},{"Str":{"pattern":"Training Package"}},{"Str":{"pattern":"Package"}},{"Alternative":{"atoms":[687,688,689,690]}},{"Sequence":{"atoms":[686,691]}},{"Entity":{"atom":8}},{"Str":{"pattern":"& "}},{"Str":{"pattern":"Code"}},{"Str":{"pattern":"Handbook"}},{"Str":{"pattern":"Training Package"}},{"Str":{"pattern":"Package"}},{"Alternative":{"atoms":[695,696,697,698]}},{"Sequence":{"atoms":[693,694,699]}},{"Alternative":{"atoms":[692,700]}},{"Repetition":{"atom":701,"min":0,"max":null,"tag":"Repetition"}},{"Named":{"name":"package_portion","atom":702}},{"Sequence":{"atoms":[680,685,703]}},{"Repetition":{"atom":704,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[644,679,705]}},{"Entity":{"atom":734}},{"Entity":{"atom":159}},{"Entity":{"atom":8}},{"Entity":{"atom":177}},{"Entity":{"atom":8}},{"Str":{"pattern":"SERIES"}},{"Named":{"name":"series","atom":712}},{"Entity":{"atom":206}},{"Entity":{"atom":225}},{"Alternative":{"atoms":[714,715]}},{"Sequence":{"atoms":[709,710,711,713,716]}},{"Entity":{"atom":8}},{"Str":{"pattern":"SERIES"}},{"Named":{"name":"series","atom":719}},{"Entity":{"atom":206}},{"Entity":{"atom":225}},{"Alternative":{"atoms":[721,722]}},{"Sequence":{"atoms":[718,720,723]}},{"Entity":{"atom":206}},{"Entity":{"atom":225}},{"Alternative":{"atoms":[725,726]}},{"Alternative":{"atoms":[717,724,727]}},{"Entity":{"atom":8}},{"Str":{"pattern":"PACKAGE"}},{"Sequence":{"atoms":[729,730]}},{"Named":{"name":"package_portion","atom":731}},{"Repetition":{"atom":732,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[708,728,733]}},{"Alternative":{"atoms":[0,86,231,294,519,581,643,707]}}],"root":735},"bindings":[{"capture":"has_publisher","path":"has_publisher","type":"string","card":null,"preprocess":null},{"capture":"code","path":"code","type":"string","card":null,"preprocess":null},{"capture":"no_notation","path":"no_notation","type":"string","card":null,"preprocess":null},{"capture":"no_number","path":"no_number","type":"string","card":null,"preprocess":null},{"capture":"year_prefix","path":"year_prefix","type":"string","card":null,"preprocess":null},{"capture":"colon_format","path":"colon_format","type":"string","card":null,"preprocess":null},{"capture":"year","path":"year","type":"string","card":null,"preprocess":null},{"capture":"dash_format","path":"dash_format","type":"string","card":null,"preprocess":null},{"capture":"amendment_number","path":"amendment_number","type":"string","card":null,"preprocess":null},{"capture":"amendment_year","path":"amendment_year","type":"string","card":null,"preprocess":null},{"capture":"series_prefix","path":"series_prefix","type":"string","card":null,"preprocess":null},{"capture":"series_type","path":"series_type","type":"string","card":null,"preprocess":null},{"capture":"cec_part","path":"cec_part","type":"string","card":null,"preprocess":null},{"capture":"adoption_pub","path":"adoption_pub","type":"string","card":null,"preprocess":null},{"capture":"adoption_org","path":"adoption_org","type":"string","card":null,"preprocess":null},{"capture":"iso_type","path":"iso_type","type":"string","card":null,"preprocess":null},{"capture":"adoption_number","path":"adoption_number","type":"string","card":null,"preprocess":null},{"capture":"adoption_org_with_type","path":"adoption_org_with_type","type":"string","card":null,"preprocess":null},{"capture":"adoption_year_sep","path":"adoption_year_sep","type":"string","card":null,"preprocess":null},{"capture":"adoption_year","path":"adoption_year","type":"string","card":null,"preprocess":null},{"capture":"adoption_amendment","path":"adoption_amendment","type":"string","card":null,"preprocess":null},{"capture":"adoption_amendment_year","path":"adoption_amendment_year","type":"string","card":null,"preprocess":null},{"capture":"series","path":"series","type":"string","card":null,"preprocess":null},{"capture":"plus_separator","path":"plus_separator","type":"string","card":null,"preprocess":null},{"capture":"reaffirmation_4digit","path":"reaffirmation_4digit","type":"string","card":null,"preprocess":null},{"capture":"reaffirmation_2digit","path":"reaffirmation_2digit","type":"string","card":null,"preprocess":null},{"capture":"comma_separator","path":"comma_separator","type":"string","card":null,"preprocess":null},{"capture":"package_portion","path":"package_portion","type":"string","card":null,"preprocess":null},{"capture":"part_code","path":"csa_code_part[].part_code","type":"string","card":null,"preprocess":null},{"capture":"part_year","path":"csa_code_part[].part_year","type":"string","card":null,"preprocess":null},{"capture":"part_colon_format","path":"csa_code_part[].part_colon_format","type":"string","card":null,"preprocess":null},{"capture":"part_dash_format","path":"csa_code_part[].part_dash_format","type":"string","card":null,"preprocess":null},{"capture":"part_year_prefix","path":"csa_code_part[].part_year_prefix","type":"string","card":null,"preprocess":null},{"capture":"part_no_notation","path":"csa_code_part[].part_no_notation","type":"string","card":null,"preprocess":null},{"capture":"part_no_number","path":"csa_code_part[].part_no_number","type":"string","card":null,"preprocess":null},{"capture":"part_series","path":"part_series","type":"string","card":null,"preprocess":null},{"capture":"part_series_prefix","path":"part_series_prefix","type":"string","card":null,"preprocess":null},{"capture":"part_has_publisher","path":"csa_code_part[].part_has_publisher","type":"string","card":null,"preprocess":null}]}},"preprocess":{},"tables":{},"lint":{"order_warnings":["rule code_c_tail: branches 1 and 2 are order-dependent (shared first bytes; ordered choice is decisive)","rule code_c_tail: branches 1 and 3 are order-dependent (shared first bytes; ordered choice is decisive)","rule code_c_tail: branches 2 and 3 are order-dependent (shared first bytes; ordered choice is decisive)","rule cec_part: branches 1 and 2 are order-dependent (shared first bytes; ordered choice is decisive)","rule cec_part: branches 1 and 3 are order-dependent (shared first bytes; ordered choice is decisive)","rule cec_part: branches 1 and 4 are order-dependent (shared first bytes; ordered choice is decisive)","rule cec_part: branches 2 and 3 are order-dependent (shared first bytes; ordered choice is decisive)","rule cec_part: branches 2 and 4 are order-dependent (shared first bytes; ordered choice is decisive)","rule cec_part: branches 3 and 4 are order-dependent (shared first bytes; ordered choice is decisive)","rule trailing_block: branches 1 and 2 are order-dependent (shared first bytes; ordered choice is decisive)","rule trailing_block: branches 1 and 3 are order-dependent (shared first bytes; ordered choice is decisive)","rule trailing_block: branches 2 and 3 are order-dependent (shared first bytes; ordered choice is decisive)","rule trailing_block_part: branches 1 and 2 are order-dependent (shared first bytes; ordered choice is decisive)","rule trailing_block_part: branches 1 and 3 are order-dependent (shared first bytes; ordered choice is decisive)","rule trailing_block_part: branches 2 and 3 are order-dependent (shared first bytes; ordered choice is decisive)","rule identifier: branches 1 and 2 are order-dependent (shared first bytes; ordered choice is decisive)","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 2 and 3 are order-dependent (shared first bytes; ordered choice is decisive)","rule identifier: branches 2 and 4 are order-dependent (shared first bytes; ordered choice is decisive)","rule identifier: branches 2 and 5 are order-dependent (shared first bytes; ordered choice is decisive)","rule identifier: branches 2 and 6 are order-dependent (shared first bytes; ordered choice is decisive)","rule identifier: branches 2 and 7 are order-dependent (shared first bytes; ordered choice is decisive)","rule identifier: branches 2 and 8 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 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 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 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 7 and 8 are order-dependent (shared first bytes; ordered choice is decisive)"]},"default_entry":"identifier","render":{},"derive":{},"tests":[{"entry":"identifier","kind":"accept","input":"CSA Z259.1-05","expect":{}},{"entry":"identifier","kind":"accept","input":"CSA C22.2 NO. 60601-1","expect":{}},{"entry":"identifier","kind":"accept","input":"CSA Z195-02","expect":{}},{"entry":"identifier","kind":"reject","input":"nonsense","expect":{}}],"docs":{},"source":"# Port of lib/pubid/csa/parser.rb. Deviations:\n# - the parslet's empty-match markers (str(\"\").as(:has_publisher),\n# :colon_format, :dash_format) are unrepresentable in PG and were\n# dead captures in practice; the separator itself remains in the tree.\n# - the pre-parse normalization (CONSOLIDATED stripping, (Rnnn) spacing,\n# CEI→IEC, CAN/CSA prefix handling) stays binder-side.\n\ngrammar PubidCsa version \"0.1.0\" edition 2 {\n upper = %x41-5A\n lower = %x61-7A\n digit = %x30-39\n letters = 1*upper\n space = \" \"\n\n publisher = (\"CSA\" space) as has_publisher\n\n # code_pattern: four alternatives, source order\n code_a = (1*digit dot 1*digit *1(dash 1*digit) [2*6upper])\n code_b = (1*digit 2*6upper)\n one_or_one_follow = (digit !digit)\n code_c_tail = ((one_or_one_follow / 3*digit / (1*digit 1*letter)))\n code_c = (upper 1*digit *(dot 1*digit) *(dash code_c_tail) [2*6upper])\n code_d = (upper 1*digit [dot 1*digit])\n code_e = (upper 2*digit)\n code_pattern = {\n (\n (1*digit dot 1*digit *1(dash 1*digit) [2*6upper])\n / (1*digit 2*6upper)\n / (upper 1*digit *(dot 1*digit) *(dash ((digit !digit) / 3*digit / (1*digit 1*letter))) [2*6upper])\n / (upper 1*digit [dot 1*digit])\n / (upper 2*digit)\n ) as code\n }\n\n no_notation = space (\"NO.\" / \"No.\") as no_notation space\n no_number = ((1*digit 2*10(dash 1*digit)) / (5*digit dash 1*digit) / (3*4digit dash (one_or_one_follow / 3*digit)) / (1*digit 1*3(dot 1*digit)) / 1*digit) as no_number\n year_prefix = [(\"F\" / \"M\") as year_prefix]\n year_2digit = 2*digit\n year_4digit = 4*digit\n colon_year = colon as colon_format ((year_prefix ((4digit) / (2digit)) as year)) / (((4digit) / (2digit)) as year)\n dash_year = dash as dash_format ((year_prefix ((4digit) / (2digit)) as year)) / (((4digit) / (2digit)) as year)\n reaffirmation = space \"(R\" ((4digit) as reaffirmation_4digit / (2digit) as reaffirmation_2digit) \")\"\n amendment_slash = slash [\"Amd \" ] [\"A\"] (1*digit) as amendment_number [(colon (2digit) as amendment_year)]\n package_keyword = \"Code\" / \"Handbook\" / \"Training Package\" / \"Package\"\n package_portion = {\n space\n (\"Code\" / \"Handbook\" / \"Training Package\" / \"Package\")\n *(\n (\", \" (\"Code\" / \"Handbook\" / \"Training Package\" / \"Package\"))\n / (space \"& \" (\"Code\" / \"Handbook\" / \"Training Package\" / \"Package\"))\n )\n }\n series_prefix = (2*3upper) as series_prefix\n series_keyword = \"SERIES\"\n\n series_identifier = publisher (code_pattern / (upper 2*digit) as code / (1*digit dot 1*digit) as code) space [series_prefix space] \"SERIES\" as series_type [colon_year / dash_year] [reaffirmation]\n cec_part = \"C22.2\" / \"C22.3\" / \"C22.4\" / \"C22.6\"\n cec_identifier = publisher (cec_part as cec_part) no_notation no_number [colon_year / dash_year] [reaffirmation]\n adoption_identifier = (\"CSA\" as adoption_pub) adoption_body [reaffirmation]\n adoption_body = {\n (\n (\"ISO/IEC\" as adoption_org space (\"TR\" / \"TS\") as iso_type space (1*numdash) as adoption_number)\n / (\"ISO/IEC\" as adoption_org_with_type space (1*numdash) as adoption_number)\n / ((\"ISO\" / \"IEC\" / \"CEI/IEC\" / \"CISPR\") as adoption_org space (1*numdash) as adoption_number)\n )\n ((colon / dash) as adoption_year_sep (year_4digit / year_2digit) as adoption_year)\n [\n (slash \"A\" digit as adoption_amendment (colon / dash) (year_4digit / year_2digit) as adoption_amendment_year)\n ]\n }\n numdash = digit / \"-\"\n iso_iec_adoption = adoption_identifier\n\n trailing_block = {\n (\n (no_notation no_number (colon_year / dash_year))\n / (space series_prefix space \"SERIES\" as series (colon_year / dash_year))\n / (space \"SERIES\" as series (colon_year / dash_year))\n / (colon_year / dash_year)\n )\n }\n csa_code = publisher code_pattern [trailing_block] [amendment_slash]\n base_csa_code = publisher code_pattern [trailing_block]\n continuation_code = [publisher] code_pattern [trailing_block] [amendment_slash]\n bundled_portion = code_pattern ((no_notation no_number [colon_year / dash_year]) / [colon_year / dash_year])\n bundled_identifier = csa_code_first (\" + \") as plus_separator bundled_portion_first (*(\" + \" bundled_portion_first)) [reaffirmation]\n combined_slash = csa_code_first 1*(slash csa_code_part) [reaffirmation] [package_portion]\n combined_comma = {\n csa_code_first\n (\",\" as comma_separator)\n space\n csa_code_part\n [reaffirmation]\n [\n (\n space \"& \" space (\"Code\" / \"Handbook\" / \"Training Package\" / \"Package\")\n *((\", \" (\"Code\" / \"Handbook\" / \"Training Package\" / \"Package\"))\n / (space \"& \" (\"Code\" / \"Handbook\" / \"Training Package\" / \"Package\")))\n / space (\"Code\" / \"Handbook\" / \"Training Package\" / \"Package\")\n *((\", \" (\"Code\" / \"Handbook\" / \"Training Package\" / \"Package\"))\n / (space \"& \" (\"Code\" / \"Handbook\" / \"Training Package\" / \"Package\")))\n ) as package_portion\n ]\n }\n single_identifier = {\n csa_code\n [reaffirmation]\n [\n space (\"Code\" / \"Handbook\" / \"Training Package\" / \"Package\")\n *((\", \" (\"Code\" / \"Handbook\" / \"Training Package\" / \"Package\"))\n / (space \"& \" (\"Code\" / \"Handbook\" / \"Training Package\" / \"Package\"))) as package_portion\n ]\n }\n code_only_identifier = {\n code_pattern\n (\n (space series_prefix space \"SERIES\" as series (colon_year / dash_year))\n / (space \"SERIES\" as series (colon_year / dash_year))\n / (colon_year / dash_year)\n )\n [(space \"PACKAGE\") as package_portion]\n }\n\n # Combined and bundled identifiers: every position captures the same\n # part_* fields, so one csa_code_part[] array group pairs them by\n # occurrence index; the builder dispatches on plus_separator /\n # comma_separator. Each part_ capture wraps a kept 1* repetition so\n # the binding-path validator sees it repeated.\n csa_code_first = publisher_first 1*(code_pattern_part) [trailing_block_part]\n csa_code_part = [publisher_first] 1*(code_pattern_part) [trailing_block_part] [amendment_slash]\n publisher_first = 1*((\"CSA\" space) as part_has_publisher)\n code_pattern_part = {\n 1*(\n (1*digit dot 1*digit *1(dash 1*digit) [2*6upper])\n / (1*digit 2*6upper)\n / (upper 1*digit *(dot 1*digit) *(dash ((digit !digit) / 3*digit / (1*digit 1*letter))) [2*6upper])\n / (upper 1*digit [dot 1*digit])\n / (upper 2*digit)\n ) as part_code\n }\n trailing_block_part = {\n (\n (part_no_notation part_no_number (part_colon_year / part_dash_year))\n / (space part_series_prefix space 1*(\"SERIES\" as part_series) (part_colon_year / part_dash_year))\n / (space 1*(\"SERIES\" as part_series) (part_colon_year / part_dash_year))\n / (part_colon_year / part_dash_year)\n )\n }\n part_no_notation = space 1*((\"NO.\" / \"No.\") as part_no_notation) space\n part_no_number = 1*((1*digit 2*10(dash 1*digit)) / (5*digit dash 1*digit) / (3*4digit dash ((digit !digit) / 3*digit)) / (1*digit 1*3(dot 1*digit)) / 1*digit) as part_no_number\n part_series_prefix = 1*((2*6upper) as part_series_prefix)\n part_colon_year = 1*(colon) as part_colon_format ((part_year_prefix (4digit) as part_year) / (part_year_prefix (2digit) as part_year) / (4digit) as part_year / (2digit) as part_year)\n part_dash_year = 1*(dash) as part_dash_format ((part_year_prefix (4digit) as part_year) / (part_year_prefix (2digit) as part_year) / (4digit) as part_year / (2digit) as part_year)\n part_year_prefix = 1*((\"F\" / \"M\") as part_year_prefix)\n bundled_portion_first = 1*(code_pattern_part) ((part_no_notation part_no_number [(part_colon_year / part_dash_year)]) / [(part_colon_year / part_dash_year)])\n\n identifier = iso_iec_adoption / series_identifier / cec_identifier / bundled_identifier / combined_slash / combined_comma / single_identifier / code_only_identifier\n\n comma = \",\"\n dash = \"-\"\n slash = \"/\"\n colon = \":\"\n dot = \".\"\n ampersand = \"&\"\n letter = upper / lower\n entry identifier: identifier\n\n bindings identifier {\n has_publisher -> has_publisher (string)\n code -> code (string)\n no_notation -> no_notation (string)\n no_number -> no_number (string)\n year_prefix -> year_prefix (string)\n colon_format -> colon_format (string)\n year -> year (string)\n dash_format -> dash_format (string)\n amendment_number -> amendment_number (string)\n amendment_year -> amendment_year (string)\n series_prefix -> series_prefix (string)\n series_type -> series_type (string)\n cec_part -> cec_part (string)\n adoption_pub -> adoption_pub (string)\n adoption_org -> adoption_org (string)\n iso_type -> iso_type (string)\n adoption_number -> adoption_number (string)\n adoption_org_with_type -> adoption_org_with_type (string)\n adoption_year_sep -> adoption_year_sep (string)\n adoption_year -> adoption_year (string)\n adoption_amendment -> adoption_amendment (string)\n adoption_amendment_year -> adoption_amendment_year (string)\n series -> series (string)\n plus_separator -> plus_separator (string)\n reaffirmation_4digit -> reaffirmation_4digit (string)\n reaffirmation_2digit -> reaffirmation_2digit (string)\n comma_separator -> comma_separator (string)\n package_portion -> package_portion (string)\n part_code -> csa_code_part[].part_code (string)\n part_year -> csa_code_part[].part_year (string)\n part_colon_format -> csa_code_part[].part_colon_format (string)\n part_dash_format -> csa_code_part[].part_dash_format (string)\n part_year_prefix -> csa_code_part[].part_year_prefix (string)\n part_no_notation -> csa_code_part[].part_no_notation (string)\n part_no_number -> csa_code_part[].part_no_number (string)\n part_series -> part_series (string)\n part_series_prefix -> part_series_prefix (string)\n part_has_publisher -> csa_code_part[].part_has_publisher (string)\n }\n\n\n test {\n accept \"CSA Z259.1-05\"\n accept \"CSA C22.2 NO. 60601-1\"\n accept \"CSA Z195-02\"\n reject \"nonsense\"\n }\n}\n","source_hash":"34c316c642076e1d45ebe5cca7462303856c43bf1b4c0c50b748800fc4b25720","unicode_tables":"onigmo (Ruby 3.4.8)","compiler_version":"1.3.121","edition":2,"semantics_hash":"sha256:0511567323d698d389528fca7e857e4b16e699ee78f39aa531ad927fdf6abad8","checksum":"sha256:4267ce66d45b0d674c81ee95d6e556dd63e24d27ab43403346e41d4fb277ce1b"}
@@ -1 +1 @@
1
- {"bindings":null,"version":"0.1.0","grammar":"PubidDoi","shape":"parsanol-tree/v2","binding_version":1,"entries":{"identifier":{"root":"identifier","grammar":{"atoms":[{"Entity":{"atom":8}},{"Str":{"pattern":"https://"}},{"Str":{"pattern":"http://"}},{"Alternative":{"atoms":[1,2]}},{"Repetition":{"atom":3,"min":0,"max":1,"tag":"Maybe"}},{"Str":{"pattern":"doi.org"}},{"Repetition":{"atom":5,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[4,6]}},{"Repetition":{"atom":7,"min":0,"max":1,"tag":"Maybe"}},{"Repetition":{"atom":0,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":15}},{"Str":{"pattern":"doi:"}},{"Str":{"pattern":"DOI:"}},{"Str":{"pattern":"Doi:"}},{"Alternative":{"atoms":[11,12,13]}},{"Repetition":{"atom":14,"min":0,"max":1,"tag":"Maybe"}},{"Repetition":{"atom":10,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":18}},{"Str":{"pattern":"/"}},{"Repetition":{"atom":17,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":27}},{"Str":{"pattern":"10"}},{"Str":{"pattern":"."}},{"Entity":{"atom":24}},{"Re":{"pattern":"[\\x30-\\x39]"}},{"Repetition":{"atom":23,"min":2,"max":null,"tag":"Repetition"}},{"Named":{"name":"prefix","atom":25}},{"Sequence":{"atoms":[21,22,26]}},{"Entity":{"atom":18}},{"Entity":{"atom":42}},{"Entity":{"atom":40}},{"Re":{"pattern":"[\\x30-\\x39]"}},{"Re":{"pattern":"[\\x41-\\x5a]"}},{"Re":{"pattern":"[\\x61-\\x7a]"}},{"Re":{"pattern":"[.]"}},{"Re":{"pattern":"[_]"}},{"Re":{"pattern":"[\\-]"}},{"Re":{"pattern":"[/]"}},{"Re":{"pattern":"[(]"}},{"Re":{"pattern":"[)]"}},{"Alternative":{"atoms":[31,32,33,34,35,36,37,38,39]}},{"Repetition":{"atom":30,"min":1,"max":null,"tag":"Repetition"}},{"Named":{"name":"suffix","atom":41}},{"Sequence":{"atoms":[9,16,19,20,28,29]}}],"root":43},"bindings":[]}},"preprocess":{},"tables":{},"lint":{"order_warnings":[]},"default_entry":"identifier","render":{},"derive":{},"tests":[{"entry":"identifier","kind":"accept","input":"10.1000/182","expect":{}},{"entry":"identifier","kind":"accept","input":"doi:10.1000/182","expect":{}},{"entry":"identifier","kind":"accept","input":"https://doi.org/10.1000/182","expect":{}},{"entry":"identifier","kind":"reject","input":"nonsense","expect":{}}],"docs":{},"source":"# Port of lib/pubid/doi/parser.rb: [doi:|DOI:|URL]10.{registrar}/{suffix}\n# per ISO 26324. Suffix is printable non-whitespace minus the DOI-reserved\n# exclusions, per the parslet class.\n\ngrammar PubidDoi version \"0.1.0\" {\n digit = %x30-39\n suffix_char = %x30-39 / %x41-5A / %x61-7A / %x2E / %x5F / %x2D / %x2F / %x28 / %x29\n doi_prefix = \"10\" \".\" (2*digit) as prefix\n doi_suffix = (1*suffix_char) as suffix\n url_prefix = [[\"https://\" / \"http://\"] [\"doi.org\"]]\n scheme_prefix = [\"doi:\" / \"DOI:\" / \"Doi:\"]\n identifier = [url_prefix] [scheme_prefix] [slash] doi_prefix slash doi_suffix\n slash = \"/\"\n entry identifier: identifier\n\n test {\n accept \"10.1000/182\"\n accept \"doi:10.1000/182\"\n accept \"https://doi.org/10.1000/182\"\n reject \"nonsense\"\n }\n}\n","source_hash":"3da5e11fe135ee42ce8a134926ef269a6fc5d00e0dc661cf7f5c6c737041819b","compiler_version":"1.3.93","checksum":"sha256:be582c44eebdcaa179207f73f188f30f526164636ecae26170220afd8a3adcf1"}
1
+ {"bindings":null,"version":"0.1.0","grammar":"PubidDoi","shape":"parsanol-tree/v2","binding_version":1,"entries":{"identifier":{"root":"identifier","grammar":{"atoms":[{"Entity":{"atom":8}},{"Str":{"pattern":"https://"}},{"Str":{"pattern":"http://"}},{"Alternative":{"atoms":[1,2]}},{"Repetition":{"atom":3,"min":0,"max":1,"tag":"Maybe"}},{"Str":{"pattern":"doi.org"}},{"Repetition":{"atom":5,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[4,6]}},{"Repetition":{"atom":7,"min":0,"max":1,"tag":"Maybe"}},{"Named":{"name":"url_prefix","atom":0}},{"Repetition":{"atom":9,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":16}},{"Str":{"pattern":"doi:"}},{"Str":{"pattern":"DOI:"}},{"Str":{"pattern":"Doi:"}},{"Alternative":{"atoms":[12,13,14]}},{"Repetition":{"atom":15,"min":0,"max":1,"tag":"Maybe"}},{"Named":{"name":"scheme_prefix","atom":11}},{"Repetition":{"atom":17,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":20}},{"Str":{"pattern":"/"}},{"Named":{"name":"slash","atom":19}},{"Repetition":{"atom":21,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":30}},{"Str":{"pattern":"10"}},{"Str":{"pattern":"."}},{"Entity":{"atom":27}},{"Re":{"pattern":"[\\x30-\\x39]"}},{"Repetition":{"atom":26,"min":2,"max":null,"tag":"Repetition"}},{"Named":{"name":"prefix","atom":28}},{"Sequence":{"atoms":[24,25,29]}},{"Entity":{"atom":20}},{"Named":{"name":"slash","atom":31}},{"Entity":{"atom":46}},{"Entity":{"atom":44}},{"Re":{"pattern":"[\\x30-\\x39]"}},{"Re":{"pattern":"[\\x41-\\x5a]"}},{"Re":{"pattern":"[\\x61-\\x7a]"}},{"Re":{"pattern":"[.]"}},{"Re":{"pattern":"[_]"}},{"Re":{"pattern":"[\\-]"}},{"Re":{"pattern":"[/]"}},{"Re":{"pattern":"[(]"}},{"Re":{"pattern":"[)]"}},{"Alternative":{"atoms":[35,36,37,38,39,40,41,42,43]}},{"Repetition":{"atom":34,"min":1,"max":null,"tag":"Repetition"}},{"Named":{"name":"suffix","atom":45}},{"Sequence":{"atoms":[10,18,22,23,32,33]}}],"root":47},"bindings":[{"capture":"prefix","path":"prefix","type":"string","card":null,"preprocess":null},{"capture":"suffix","path":"suffix","type":"string","card":null,"preprocess":null}]}},"preprocess":{},"tables":{},"lint":{"order_warnings":[]},"default_entry":"identifier","render":{},"derive":{},"tests":[{"entry":"identifier","kind":"accept","input":"10.1000/182","expect":{}},{"entry":"identifier","kind":"accept","input":"doi:10.1000/182","expect":{}},{"entry":"identifier","kind":"accept","input":"https://doi.org/10.1000/182","expect":{}},{"entry":"identifier","kind":"reject","input":"nonsense","expect":{}}],"docs":{},"source":"# Port of lib/pubid/doi/parser.rb: [doi:|DOI:|URL]10.{registrar}/{suffix}\n# per ISO 26324. Suffix is printable non-whitespace minus the DOI-reserved\n# exclusions, per the parslet class.\n\ngrammar PubidDoi version \"0.1.0\" edition 2 {\n digit = %x30-39\n suffix_char = %x30-39 / %x41-5A / %x61-7A / %x2E / %x5F / %x2D / %x2F / %x28 / %x29\n doi_prefix = \"10\" \".\" (2*digit) as prefix\n doi_suffix = (1*suffix_char) as suffix\n url_prefix = [[\"https://\" / \"http://\"] [\"doi.org\"]]\n scheme_prefix = [\"doi:\" / \"DOI:\" / \"Doi:\"]\n identifier = [url_prefix] [scheme_prefix] [slash] doi_prefix slash doi_suffix\n slash = \"/\"\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 prefix -> prefix (string)\n suffix -> suffix (string)\n }\n\n\n test {\n accept \"10.1000/182\"\n accept \"doi:10.1000/182\"\n accept \"https://doi.org/10.1000/182\"\n reject \"nonsense\"\n }\n}\n","source_hash":"2dcec2cb79a4c6364080a573d3aa748a4464bbd38ace020ced13418cd33290a8","unicode_tables":"onigmo (Ruby 3.4.8)","compiler_version":"1.3.121","edition":2,"semantics_hash":"sha256:25a7347099d4ba9bac70a6550d1ea1afc864b2ca4d49e704d4a4735a7167a8de","checksum":"sha256:083a4df7711856aa6381ea2345d3e084e2e3ac8d92b5dcb595c637a2a766b1c3"}
@@ -1 +1 @@
1
- {"bindings":null,"version":"0.1.0","grammar":"PubidEasc","shape":"parsanol-tree/v2","binding_version":1,"entries":{"identifier":{"root":"identifier","grammar":{"atoms":[{"Entity":{"atom":9}},{"Str":{"pattern":"ПМГ"}},{"Str":{"pattern":"РМГ"}},{"Str":{"pattern":"PMG"}},{"Str":{"pattern":"RMG"}},{"Alternative":{"atoms":[1,2,3,4]}},{"Named":{"name":"series","atom":5}},{"Entity":{"atom":8}},{"Str":{"pattern":" "}},{"Sequence":{"atoms":[6,7]}},{"Entity":{"atom":16}},{"Str":{"pattern":"В"}},{"Str":{"pattern":"V"}},{"Alternative":{"atoms":[11,12]}},{"Named":{"name":"variant","atom":13}},{"Entity":{"atom":8}},{"Sequence":{"atoms":[14,15]}},{"Repetition":{"atom":10,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":29}},{"Entity":{"atom":20}},{"Re":{"pattern":"[\\x30-\\x39]"}},{"Repetition":{"atom":19,"min":1,"max":null,"tag":"Repetition"}},{"Entity":{"atom":23}},{"Str":{"pattern":"."}},{"Entity":{"atom":20}},{"Repetition":{"atom":24,"min":1,"max":null,"tag":"Repetition"}},{"Sequence":{"atoms":[22,25]}},{"Repetition":{"atom":26,"min":0,"max":null,"tag":"Repetition"}},{"Sequence":{"atoms":[21,27]}},{"Named":{"name":"number","atom":28}},{"Entity":{"atom":39}},{"Entity":{"atom":8}},{"Repetition":{"atom":31,"min":0,"max":1,"tag":"Maybe"}},{"Str":{"pattern":"-"}},{"Str":{"pattern":"—"}},{"Str":{"pattern":"–"}},{"Alternative":{"atoms":[33,34,35]}},{"Entity":{"atom":8}},{"Repetition":{"atom":37,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[32,36,38]}},{"Entity":{"atom":46}},{"Entity":{"atom":20}},{"Repetition":{"atom":41,"min":4,"max":4,"tag":"Repetition"}},{"Entity":{"atom":20}},{"Repetition":{"atom":43,"min":2,"max":2,"tag":"Repetition"}},{"Alternative":{"atoms":[42,44]}},{"Named":{"name":"year","atom":45}},{"Sequence":{"atoms":[30,40]}},{"Repetition":{"atom":47,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[0,17,18,48]}}],"root":49},"bindings":[]}},"preprocess":{},"tables":{},"lint":{"order_warnings":[]},"default_entry":"identifier","render":{},"derive":{},"tests":[{"entry":"identifier","kind":"accept","input":"ПМГ 4-96","expect":{}},{"entry":"identifier","kind":"accept","input":"RMG 76","expect":{}},{"entry":"identifier","kind":"accept","input":"РМГ 29-2013","expect":{}},{"entry":"identifier","kind":"reject","input":"nonsense","expect":{}}],"docs":{},"source":"# Port of lib/pubid/easc/parser.rb — EASC identifiers in Cyrillic and\n# Latin forms: ПМГ/РМГ (PMG/RMG) [В|V] NNN[.N]-YYYY with dash, em-dash\n# or en-dash year separators.\n\ngrammar PubidEasc version \"0.1.0\" {\n series_word = (\"ПМГ\" / \"РМГ\" / \"PMG\" / \"RMG\") as series space\n variant_word = (\"В\" / \"V\") as variant space\n number = (1*digit *(dot 1*digit)) as number\n year = (4digit / 2digit) as year\n year_sep = [space] (\"-\" / \"—\" / \"–\") [space]\n identifier = series_word [variant_word] number [(year_sep year)]\n digit = %x30-39\n dot = \".\"\n space = \" \"\n entry identifier: identifier\n\n test {\n accept \"ПМГ 4-96\"\n accept \"RMG 76\"\n accept \"РМГ 29-2013\"\n reject \"nonsense\"\n }\n}\n","source_hash":"d119619567312606ba9baf338cef7be531b6e1db3bc8671a0a779257715da953","compiler_version":"1.3.93","checksum":"sha256:197247b93d0af7b1cee9c1d812741138b11e787bfd89520294f35747165eb145"}
1
+ {"bindings":null,"version":"0.1.0","grammar":"PubidEasc","shape":"parsanol-tree/v2","binding_version":1,"entries":{"identifier":{"root":"identifier","grammar":{"atoms":[{"Entity":{"atom":9}},{"Str":{"pattern":"ПМГ"}},{"Str":{"pattern":"РМГ"}},{"Str":{"pattern":"PMG"}},{"Str":{"pattern":"RMG"}},{"Alternative":{"atoms":[1,2,3,4]}},{"Named":{"name":"series","atom":5}},{"Entity":{"atom":8}},{"Str":{"pattern":" "}},{"Sequence":{"atoms":[6,7]}},{"Entity":{"atom":16}},{"Str":{"pattern":"В"}},{"Str":{"pattern":"V"}},{"Alternative":{"atoms":[11,12]}},{"Named":{"name":"variant","atom":13}},{"Entity":{"atom":8}},{"Sequence":{"atoms":[14,15]}},{"Repetition":{"atom":10,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":29}},{"Entity":{"atom":20}},{"Re":{"pattern":"[\\x30-\\x39]"}},{"Repetition":{"atom":19,"min":1,"max":null,"tag":"Repetition"}},{"Entity":{"atom":23}},{"Str":{"pattern":"."}},{"Entity":{"atom":20}},{"Repetition":{"atom":24,"min":1,"max":null,"tag":"Repetition"}},{"Sequence":{"atoms":[22,25]}},{"Repetition":{"atom":26,"min":0,"max":null,"tag":"Repetition"}},{"Sequence":{"atoms":[21,27]}},{"Named":{"name":"number","atom":28}},{"Entity":{"atom":39}},{"Entity":{"atom":8}},{"Repetition":{"atom":31,"min":0,"max":1,"tag":"Maybe"}},{"Str":{"pattern":"-"}},{"Str":{"pattern":"—"}},{"Str":{"pattern":"–"}},{"Alternative":{"atoms":[33,34,35]}},{"Entity":{"atom":8}},{"Repetition":{"atom":37,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[32,36,38]}},{"Named":{"name":"year_sep","atom":30}},{"Entity":{"atom":47}},{"Entity":{"atom":20}},{"Repetition":{"atom":42,"min":4,"max":4,"tag":"Repetition"}},{"Entity":{"atom":20}},{"Repetition":{"atom":44,"min":2,"max":2,"tag":"Repetition"}},{"Alternative":{"atoms":[43,45]}},{"Named":{"name":"year","atom":46}},{"Sequence":{"atoms":[40,41]}},{"Repetition":{"atom":48,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[0,17,18,49]}}],"root":50},"bindings":[{"capture":"series","path":"series","type":"string","card":null,"preprocess":null},{"capture":"variant","path":"variant","type":"string","card":null,"preprocess":null},{"capture":"number","path":"number","type":"string","card":null,"preprocess":null},{"capture":"year","path":"year","type":"string","card":null,"preprocess":null}]}},"preprocess":{},"tables":{},"lint":{"order_warnings":[]},"default_entry":"identifier","render":{},"derive":{},"tests":[{"entry":"identifier","kind":"accept","input":"ПМГ 4-96","expect":{}},{"entry":"identifier","kind":"accept","input":"RMG 76","expect":{}},{"entry":"identifier","kind":"accept","input":"РМГ 29-2013","expect":{}},{"entry":"identifier","kind":"reject","input":"nonsense","expect":{}}],"docs":{},"source":"# Port of lib/pubid/easc/parser.rb — EASC identifiers in Cyrillic and\n# Latin forms: ПМГ/РМГ (PMG/RMG) [В|V] NNN[.N]-YYYY with dash, em-dash\n# or en-dash year separators.\n\ngrammar PubidEasc version \"0.1.0\" edition 2 {\n series_word = (\"ПМГ\" / \"РМГ\" / \"PMG\" / \"RMG\") as series space\n variant_word = (\"В\" / \"V\") as variant space\n number = (1*digit *(dot 1*digit)) as number\n year = (4digit / 2digit) as year\n year_sep = [space] (\"-\" / \"—\" / \"–\") [space]\n identifier = series_word [variant_word] number [(year_sep year)]\n digit = %x30-39\n dot = \".\"\n space = \" \"\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 series -> series (string)\n variant -> variant (string)\n number -> number (string)\n year -> year (string)\n }\n\n\n test {\n accept \"ПМГ 4-96\"\n accept \"RMG 76\"\n accept \"РМГ 29-2013\"\n reject \"nonsense\"\n }\n}\n","source_hash":"270fd4785bdc485b82a76abb6738fd88ac770fe5907dfa499b271638af245bc2","unicode_tables":"onigmo (Ruby 3.4.8)","compiler_version":"1.3.121","edition":2,"semantics_hash":"sha256:b630568fdfe5baf67cdfdc961de9d67ab0d29efd49c2836e72bfa41fbd6ad04b","checksum":"sha256:2e01277c032415b5d79d167c4be20d8f5c7b2326b70fc5c0dfa08b953066e1dd"}
@@ -1 +1 @@
1
- {"bindings":null,"version":"0.1.0","grammar":"PubidEcma","shape":"parsanol-tree/v2","binding_version":1,"entries":{"identifier":{"root":"identifier","grammar":{"atoms":[{"Str":{"pattern":"ECMA"}},{"Entity":{"atom":7}},{"Str":{"pattern":" TR/"}},{"Entity":{"atom":4}},{"Re":{"pattern":"[\\x30-\\x39]"}},{"Repetition":{"atom":3,"min":1,"max":null,"tag":"Repetition"}},{"Named":{"name":"tr_number","atom":5}},{"Sequence":{"atoms":[2,6]}},{"Entity":{"atom":13}},{"Str":{"pattern":" MEM/"}},{"Entity":{"atom":4}},{"Repetition":{"atom":10,"min":1,"max":null,"tag":"Repetition"}},{"Named":{"name":"mem_number","atom":11}},{"Sequence":{"atoms":[9,12]}},{"Entity":{"atom":27}},{"Str":{"pattern":"-"}},{"Str":{"pattern":" "}},{"Alternative":{"atoms":[15,16]}},{"Entity":{"atom":4}},{"Repetition":{"atom":18,"min":1,"max":null,"tag":"Repetition"}},{"Named":{"name":"number","atom":19}},{"Str":{"pattern":"-"}},{"Entity":{"atom":4}},{"Repetition":{"atom":22,"min":1,"max":null,"tag":"Repetition"}},{"Named":{"name":"part","atom":23}},{"Sequence":{"atoms":[21,24]}},{"Repetition":{"atom":25,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[17,20,26]}},{"Alternative":{"atoms":[1,8,14]}},{"Entity":{"atom":42}},{"Str":{"pattern":" ed"}},{"Entity":{"atom":40}},{"Entity":{"atom":4}},{"Repetition":{"atom":32,"min":1,"max":null,"tag":"Repetition"}},{"Entity":{"atom":35}},{"Str":{"pattern":"."}},{"Entity":{"atom":4}},{"Repetition":{"atom":36,"min":1,"max":null,"tag":"Repetition"}},{"Sequence":{"atoms":[34,37]}},{"Repetition":{"atom":38,"min":0,"max":null,"tag":"Repetition"}},{"Sequence":{"atoms":[33,39]}},{"Named":{"name":"edition","atom":31}},{"Sequence":{"atoms":[30,41]}},{"Repetition":{"atom":29,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":49}},{"Str":{"pattern":" vol"}},{"Entity":{"atom":4}},{"Repetition":{"atom":46,"min":1,"max":null,"tag":"Repetition"}},{"Named":{"name":"volume","atom":47}},{"Sequence":{"atoms":[45,48]}},{"Repetition":{"atom":44,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[0,28,43,50]}}],"root":51},"bindings":[]}},"preprocess":{},"tables":{},"lint":{"order_warnings":[]},"default_entry":"identifier","render":{},"derive":{},"tests":[{"entry":"identifier","kind":"accept","input":"ECMA-262","expect":{}},{"entry":"identifier","kind":"accept","input":"ECMA TR/104","expect":{}},{"entry":"identifier","kind":"accept","input":"ECMA-262 ed3","expect":{}},{"entry":"identifier","kind":"reject","input":"nonsense","expect":{}}],"docs":{},"source":"# Port of lib/pubid/ecma/parser.rb: ECMA-NNN[-part], ECMA TR/NNN,\n# ECMA MEM/NNN, each with optional \" edX[.Y]\" and \" volN\". The TR/MEM\n# vs standard alternation relies on the disjoint first character after\n# the prefix (T/M are not digits), as in the source.\n\ngrammar PubidEcma version \"0.1.0\" {\n tr = \" TR/\" (1*digit) as tr_number\n mem = \" MEM/\" (1*digit) as mem_number\n standard = (\"-\" / \" \") (1*digit) as number [(\"-\" (1*digit) as part)]\n edition_number = 1*digit *(dot 1*digit)\n edition = \" ed\" edition_number as edition\n volume = \" vol\" (1*digit) as volume\n identifier = \"ECMA\" (tr / mem / standard) [edition] [volume]\n digit = %x30-39\n dot = \".\"\n entry identifier: identifier\n\n test {\n accept \"ECMA-262\"\n accept \"ECMA TR/104\"\n accept \"ECMA-262 ed3\"\n reject \"nonsense\"\n }\n}\n","source_hash":"20eaee3d8ad10c49ebc0a78c24e791d164fe892d6e325b8a500b83b50233a800","compiler_version":"1.3.93","checksum":"sha256:3e2f7b18e5e87e94b2fc1225504cd00d4ec6339c241f62c46b514c230bb9315c"}
1
+ {"bindings":null,"version":"0.1.0","grammar":"PubidEcma","shape":"parsanol-tree/v2","binding_version":1,"entries":{"identifier":{"root":"identifier","grammar":{"atoms":[{"Str":{"pattern":"ECMA"}},{"Entity":{"atom":7}},{"Str":{"pattern":" TR/"}},{"Entity":{"atom":4}},{"Re":{"pattern":"[\\x30-\\x39]"}},{"Repetition":{"atom":3,"min":1,"max":null,"tag":"Repetition"}},{"Named":{"name":"tr_number","atom":5}},{"Sequence":{"atoms":[2,6]}},{"Entity":{"atom":13}},{"Str":{"pattern":" MEM/"}},{"Entity":{"atom":4}},{"Repetition":{"atom":10,"min":1,"max":null,"tag":"Repetition"}},{"Named":{"name":"mem_number","atom":11}},{"Sequence":{"atoms":[9,12]}},{"Entity":{"atom":27}},{"Str":{"pattern":"-"}},{"Str":{"pattern":" "}},{"Alternative":{"atoms":[15,16]}},{"Entity":{"atom":4}},{"Repetition":{"atom":18,"min":1,"max":null,"tag":"Repetition"}},{"Named":{"name":"number","atom":19}},{"Str":{"pattern":"-"}},{"Entity":{"atom":4}},{"Repetition":{"atom":22,"min":1,"max":null,"tag":"Repetition"}},{"Named":{"name":"part","atom":23}},{"Sequence":{"atoms":[21,24]}},{"Repetition":{"atom":25,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[17,20,26]}},{"Alternative":{"atoms":[1,8,14]}},{"Entity":{"atom":41}},{"Str":{"pattern":" ed"}},{"Entity":{"atom":4}},{"Repetition":{"atom":31,"min":1,"max":null,"tag":"Repetition"}},{"Entity":{"atom":34}},{"Str":{"pattern":"."}},{"Entity":{"atom":4}},{"Repetition":{"atom":35,"min":1,"max":null,"tag":"Repetition"}},{"Sequence":{"atoms":[33,36]}},{"Repetition":{"atom":37,"min":0,"max":null,"tag":"Repetition"}},{"Sequence":{"atoms":[32,38]}},{"Named":{"name":"edition","atom":39}},{"Sequence":{"atoms":[30,40]}},{"Repetition":{"atom":29,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":48}},{"Str":{"pattern":" vol"}},{"Entity":{"atom":4}},{"Repetition":{"atom":45,"min":1,"max":null,"tag":"Repetition"}},{"Named":{"name":"volume","atom":46}},{"Sequence":{"atoms":[44,47]}},{"Repetition":{"atom":43,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[0,28,42,49]}}],"root":50},"bindings":[{"capture":"tr_number","path":"tr_number","type":"string","card":null,"preprocess":null},{"capture":"mem_number","path":"mem_number","type":"string","card":null,"preprocess":null},{"capture":"number","path":"number","type":"string","card":null,"preprocess":null},{"capture":"part","path":"part","type":"string","card":null,"preprocess":null},{"capture":"edition","path":"edition","type":"string","card":null,"preprocess":null},{"capture":"volume","path":"volume","type":"string","card":null,"preprocess":null}]}},"preprocess":{},"tables":{},"lint":{"order_warnings":[]},"default_entry":"identifier","render":{},"derive":{},"tests":[{"entry":"identifier","kind":"accept","input":"ECMA-262","expect":{}},{"entry":"identifier","kind":"accept","input":"ECMA TR/104","expect":{}},{"entry":"identifier","kind":"accept","input":"ECMA-262 ed3","expect":{}},{"entry":"identifier","kind":"reject","input":"nonsense","expect":{}}],"docs":{},"source":"# Port of lib/pubid/ecma/parser.rb: ECMA-NNN[-part], ECMA TR/NNN,\n# ECMA MEM/NNN, each with optional \" edX[.Y]\" and \" volN\". The TR/MEM\n# vs standard alternation relies on the disjoint first character after\n# the prefix (T/M are not digits), as in the source.\n\ngrammar PubidEcma version \"0.1.0\" edition 2 {\n tr = \" TR/\" (1*digit) as tr_number\n mem = \" MEM/\" (1*digit) as mem_number\n standard = (\"-\" / \" \") (1*digit) as number [(\"-\" (1*digit) as part)]\n edition_number = 1*digit *(dot 1*digit)\n edition = \" ed\" (1*digit *(dot 1*digit)) as edition\n volume = \" vol\" (1*digit) as volume\n identifier = \"ECMA\" (tr / mem / standard) [edition] [volume]\n digit = %x30-39\n dot = \".\"\n entry identifier: identifier\n\n bindings identifier {\n tr_number -> tr_number (string)\n mem_number -> mem_number (string)\n number -> number (string)\n part -> part (string)\n edition -> edition (string)\n volume -> volume (string)\n }\n\n\n test {\n accept \"ECMA-262\"\n accept \"ECMA TR/104\"\n accept \"ECMA-262 ed3\"\n reject \"nonsense\"\n }\n}\n","source_hash":"1cfa0626a6a2c339b2f7fae3eb80aabb1c19700525fd246dc04c880ab4212d59","unicode_tables":"onigmo (Ruby 3.4.8)","compiler_version":"1.3.121","edition":2,"semantics_hash":"sha256:3b58c3e0daba2eb5f1668becbbe4246b4892714580f488a45d4efcccd74d614a","checksum":"sha256:507e3b3fe262048d93911f86aa7cc0ba847d34275ac4f2ad6af99c6230728d59"}
@@ -1 +1 @@
1
- {"bindings":null,"version":"0.1.0","grammar":"PubidEtsi","shape":"parsanol-tree/v2","binding_version":1,"entries":{"identifier":{"root":"identifier","grammar":{"atoms":[{"Str":{"pattern":"ETSI "}},{"Entity":{"atom":18}},{"Str":{"pattern":"I-ETS"}},{"Str":{"pattern":"TCRTR"}},{"Str":{"pattern":"GTS"}},{"Str":{"pattern":"ETR"}},{"Str":{"pattern":"ETS"}},{"Str":{"pattern":"TBR"}},{"Str":{"pattern":"NET"}},{"Str":{"pattern":"EN"}},{"Str":{"pattern":"ES"}},{"Str":{"pattern":"EG"}},{"Str":{"pattern":"TS"}},{"Str":{"pattern":"GR"}},{"Str":{"pattern":"GS"}},{"Str":{"pattern":"SR"}},{"Str":{"pattern":"TR"}},{"Alternative":{"atoms":[2,3,4,5,6,7,8,9,10,11,12,13,14,15,16]}},{"Named":{"name":"type","atom":17}},{"Entity":{"atom":20}},{"Str":{"pattern":" "}},{"Entity":{"atom":61}},{"Entity":{"atom":32}},{"Str":{"pattern":"GSM"}},{"Entity":{"atom":20}},{"Entity":{"atom":26}},{"Re":{"pattern":"[\\x30-\\x39]"}},{"Repetition":{"atom":25,"min":1,"max":null,"tag":"Repetition"}},{"Entity":{"atom":29}},{"Str":{"pattern":"."}},{"Entity":{"atom":26}},{"Repetition":{"atom":30,"min":1,"max":null,"tag":"Repetition"}},{"Sequence":{"atoms":[23,24,27,28,31]}},{"Entity":{"atom":39}},{"Entity":{"atom":26}},{"Repetition":{"atom":34,"min":1,"max":null,"tag":"Repetition"}},{"Entity":{"atom":29}},{"Entity":{"atom":26}},{"Repetition":{"atom":37,"min":1,"max":null,"tag":"Repetition"}},{"Sequence":{"atoms":[35,36,38]}},{"Entity":{"atom":56}},{"Entity":{"atom":45}},{"Re":{"pattern":"[\\x41-\\x5a]"}},{"Re":{"pattern":"[\\x61-\\x7a]"}},{"Re":{"pattern":"[\\x30-\\x39]"}},{"Alternative":{"atoms":[42,43,44]}},{"Repetition":{"atom":41,"min":1,"max":null,"tag":"Repetition"}},{"Entity":{"atom":48}},{"Str":{"pattern":"-"}},{"Entity":{"atom":45}},{"Repetition":{"atom":49,"min":1,"max":null,"tag":"Repetition"}},{"Sequence":{"atoms":[47,50]}},{"Repetition":{"atom":51,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":20}},{"Entity":{"atom":26}},{"Repetition":{"atom":54,"min":1,"max":null,"tag":"Repetition"}},{"Sequence":{"atoms":[46,52,53,55]}},{"Entity":{"atom":59}},{"Entity":{"atom":26}},{"Repetition":{"atom":58,"min":1,"max":null,"tag":"Repetition"}},{"Alternative":{"atoms":[22,33,40,57]}},{"Named":{"name":"number","atom":60}},{"Entity":{"atom":67}},{"Entity":{"atom":20}},{"Entity":{"atom":26}},{"Repetition":{"atom":64,"min":1,"max":null,"tag":"Repetition"}},{"Named":{"name":"minor","atom":65}},{"Sequence":{"atoms":[63,66]}},{"Repetition":{"atom":62,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":77}},{"Entity":{"atom":75}},{"Entity":{"atom":48}},{"Entity":{"atom":45}},{"Repetition":{"atom":72,"min":1,"max":null,"tag":"Repetition"}},{"Named":{"name":"part","atom":73}},{"Sequence":{"atoms":[71,74]}},{"Repetition":{"atom":70,"min":0,"max":null,"tag":"Repetition"}},{"Named":{"name":"parts","atom":76}},{"Repetition":{"atom":69,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":95}},{"Entity":{"atom":93}},{"Str":{"pattern":"/A"}},{"Entity":{"atom":26}},{"Repetition":{"atom":82,"min":1,"max":null,"tag":"Repetition"}},{"Named":{"name":"number","atom":83}},{"Sequence":{"atoms":[81,84]}},{"Named":{"name":"amendment","atom":85}},{"Str":{"pattern":"/C"}},{"Entity":{"atom":26}},{"Repetition":{"atom":88,"min":1,"max":null,"tag":"Repetition"}},{"Named":{"name":"number","atom":89}},{"Sequence":{"atoms":[87,90]}},{"Named":{"name":"corrigendum","atom":91}},{"Alternative":{"atoms":[86,92]}},{"Repetition":{"atom":80,"min":1,"max":null,"tag":"Repetition"}},{"Named":{"name":"supplements","atom":94}},{"Repetition":{"atom":79,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":20}},{"Entity":{"atom":114}},{"Entity":{"atom":107}},{"Str":{"pattern":"V"}},{"Entity":{"atom":104}},{"Re":{"pattern":"[\\x30-\\x39]"}},{"Re":{"pattern":"[.]"}},{"Alternative":{"atoms":[102,103]}},{"Repetition":{"atom":101,"min":1,"max":null,"tag":"Repetition"}},{"Named":{"name":"version","atom":105}},{"Sequence":{"atoms":[100,106]}},{"Entity":{"atom":113}},{"Str":{"pattern":"ed."}},{"Entity":{"atom":26}},{"Repetition":{"atom":110,"min":1,"max":null,"tag":"Repetition"}},{"Named":{"name":"edition","atom":111}},{"Sequence":{"atoms":[109,112]}},{"Alternative":{"atoms":[99,108]}},{"Sequence":{"atoms":[97,98]}},{"Repetition":{"atom":115,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":20}},{"Entity":{"atom":128}},{"Str":{"pattern":"("}},{"Entity":{"atom":26}},{"Repetition":{"atom":120,"min":4,"max":4,"tag":"Repetition"}},{"Named":{"name":"year","atom":121}},{"Entity":{"atom":48}},{"Entity":{"atom":26}},{"Repetition":{"atom":124,"min":2,"max":2,"tag":"Repetition"}},{"Named":{"name":"month","atom":125}},{"Str":{"pattern":")"}},{"Sequence":{"atoms":[119,122,123,126,127]}},{"Sequence":{"atoms":[117,118]}},{"Repetition":{"atom":129,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[0,1,19,21,68,78,96,116,130]}}],"root":131},"bindings":[]}},"preprocess":{},"tables":{},"lint":{"order_warnings":["rule single_supplement: 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":"ETSI EN 300 175","expect":{}},{"entry":"identifier","kind":"accept","input":"ETSI TR 101 999","expect":{}},{"entry":"identifier","kind":"reject","input":"nonsense","expect":{}}],"docs":{},"source":"# Port of lib/pubid/etsi/parser.rb: ETSI <one of 15 types> <number>\n# [minor][-parts][/A..|/C..][ V<version> | ed.N] [(YYYY-MM)].\n\ngrammar PubidEtsi version \"0.1.0\" {\n type = (\"I-ETS\" / \"TCRTR\" / \"GTS\" / \"ETR\" / \"ETS\" / \"TBR\" / \"NET\" / \"EN\" / \"ES\" / \"EG\" / \"TS\" / \"GR\" / \"GS\" / \"SR\" / \"TR\") as type\n # The monorepo's number is a single flat string (\"300 058\", \"298\") —\n # the inner pieces are structural only, never surfaced as captures.\n gsm_with_space_number = \"GSM\" space 1*digit dot 1*digit\n dotted_number = 1*digit dot 1*digit\n complex_number = 1*alnum_char [(dash 1*alnum_char)] space 1*digit\n simple_number = 1*digit\n number = (gsm_with_space_number / dotted_number / complex_number / simple_number) as number\n minor = space (1*digit) as minor\n part = dash (1*alnum_char) as part\n parts = (*part) as parts\n version = \"V\" (1*version_char) as version\n edition = \"ed.\" (1*digit) as edition\n version_or_edition = version / edition\n date_part = \"(\" (4digit) as year dash (2digit) as month \")\"\n single_supplement = ((\"/A\" (1*digit) as number) as amendment / (\"/C\" (1*digit) as number) as corrigendum)\n supplements = (1*single_supplement) as supplements\n identifier = \"ETSI \" type space number [minor] [parts] [supplements] [(space version_or_edition)] [(space date_part)]\n alnum_char = %x41-5A / %x61-7A / %x30-39\n version_char = %x30-39 / %x2E\n digit = %x30-39\n dash = \"-\"\n dot = \".\"\n space = \" \"\n entry identifier: identifier\n\n test {\n accept \"ETSI EN 300 175\"\n accept \"ETSI TR 101 999\"\n reject \"nonsense\"\n }\n}\n","source_hash":"ec499dcff68778e22d0ac6ad29c010bf278a5bde599da0b8e2c1aa28ee59efed","compiler_version":"1.3.93","checksum":"sha256:d57557c42cbbcff863fa709a2b6c043ed752ceb474f5cd8efd6f287c369c812f"}
1
+ {"bindings":null,"version":"0.1.0","grammar":"PubidEtsi","shape":"parsanol-tree/v2","binding_version":1,"entries":{"identifier":{"root":"identifier","grammar":{"atoms":[{"Str":{"pattern":"ETSI "}},{"Entity":{"atom":18}},{"Str":{"pattern":"I-ETS"}},{"Str":{"pattern":"TCRTR"}},{"Str":{"pattern":"GTS"}},{"Str":{"pattern":"ETR"}},{"Str":{"pattern":"ETS"}},{"Str":{"pattern":"TBR"}},{"Str":{"pattern":"NET"}},{"Str":{"pattern":"EN"}},{"Str":{"pattern":"ES"}},{"Str":{"pattern":"EG"}},{"Str":{"pattern":"TS"}},{"Str":{"pattern":"GR"}},{"Str":{"pattern":"GS"}},{"Str":{"pattern":"SR"}},{"Str":{"pattern":"TR"}},{"Alternative":{"atoms":[2,3,4,5,6,7,8,9,10,11,12,13,14,15,16]}},{"Named":{"name":"type","atom":17}},{"Entity":{"atom":20}},{"Str":{"pattern":" "}},{"Entity":{"atom":57}},{"Str":{"pattern":"GSM"}},{"Entity":{"atom":20}},{"Entity":{"atom":25}},{"Re":{"pattern":"[\\x30-\\x39]"}},{"Repetition":{"atom":24,"min":1,"max":null,"tag":"Repetition"}},{"Entity":{"atom":28}},{"Str":{"pattern":"."}},{"Entity":{"atom":25}},{"Repetition":{"atom":29,"min":1,"max":null,"tag":"Repetition"}},{"Sequence":{"atoms":[22,23,26,27,30]}},{"Entity":{"atom":25}},{"Repetition":{"atom":32,"min":1,"max":null,"tag":"Repetition"}},{"Entity":{"atom":28}},{"Entity":{"atom":25}},{"Repetition":{"atom":35,"min":1,"max":null,"tag":"Repetition"}},{"Sequence":{"atoms":[33,34,36]}},{"Entity":{"atom":42}},{"Re":{"pattern":"[\\x41-\\x5a]"}},{"Re":{"pattern":"[\\x61-\\x7a]"}},{"Re":{"pattern":"[\\x30-\\x39]"}},{"Alternative":{"atoms":[39,40,41]}},{"Repetition":{"atom":38,"min":1,"max":null,"tag":"Repetition"}},{"Entity":{"atom":45}},{"Str":{"pattern":"-"}},{"Entity":{"atom":42}},{"Repetition":{"atom":46,"min":1,"max":null,"tag":"Repetition"}},{"Sequence":{"atoms":[44,47]}},{"Repetition":{"atom":48,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":20}},{"Entity":{"atom":25}},{"Repetition":{"atom":51,"min":1,"max":null,"tag":"Repetition"}},{"Sequence":{"atoms":[43,49,50,52]}},{"Entity":{"atom":25}},{"Repetition":{"atom":54,"min":1,"max":null,"tag":"Repetition"}},{"Alternative":{"atoms":[31,37,53,55]}},{"Named":{"name":"number","atom":56}},{"Entity":{"atom":63}},{"Entity":{"atom":20}},{"Entity":{"atom":25}},{"Repetition":{"atom":60,"min":1,"max":null,"tag":"Repetition"}},{"Named":{"name":"minor","atom":61}},{"Sequence":{"atoms":[59,62]}},{"Repetition":{"atom":58,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":73}},{"Entity":{"atom":71}},{"Entity":{"atom":45}},{"Entity":{"atom":42}},{"Repetition":{"atom":68,"min":1,"max":null,"tag":"Repetition"}},{"Named":{"name":"part","atom":69}},{"Sequence":{"atoms":[67,70]}},{"Repetition":{"atom":66,"min":0,"max":null,"tag":"Repetition"}},{"Named":{"name":"parts","atom":72}},{"Repetition":{"atom":65,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":85}},{"Entity":{"atom":84}},{"Str":{"pattern":"/A"}},{"Str":{"pattern":"/C"}},{"Alternative":{"atoms":[77,78]}},{"Named":{"name":"supplement_kind","atom":79}},{"Entity":{"atom":25}},{"Repetition":{"atom":81,"min":1,"max":null,"tag":"Repetition"}},{"Named":{"name":"supplement_number","atom":82}},{"Sequence":{"atoms":[80,83]}},{"Repetition":{"atom":76,"min":1,"max":null,"tag":"Repetition"}},{"Repetition":{"atom":75,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":20}},{"Entity":{"atom":104}},{"Entity":{"atom":97}},{"Str":{"pattern":"V"}},{"Entity":{"atom":94}},{"Re":{"pattern":"[\\x30-\\x39]"}},{"Re":{"pattern":"[.]"}},{"Alternative":{"atoms":[92,93]}},{"Repetition":{"atom":91,"min":1,"max":null,"tag":"Repetition"}},{"Named":{"name":"version","atom":95}},{"Sequence":{"atoms":[90,96]}},{"Entity":{"atom":103}},{"Str":{"pattern":"ed."}},{"Entity":{"atom":25}},{"Repetition":{"atom":100,"min":1,"max":null,"tag":"Repetition"}},{"Named":{"name":"edition","atom":101}},{"Sequence":{"atoms":[99,102]}},{"Alternative":{"atoms":[89,98]}},{"Sequence":{"atoms":[87,88]}},{"Repetition":{"atom":105,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":20}},{"Entity":{"atom":118}},{"Str":{"pattern":"("}},{"Entity":{"atom":25}},{"Repetition":{"atom":110,"min":4,"max":4,"tag":"Repetition"}},{"Named":{"name":"year","atom":111}},{"Entity":{"atom":45}},{"Entity":{"atom":25}},{"Repetition":{"atom":114,"min":2,"max":2,"tag":"Repetition"}},{"Named":{"name":"month","atom":115}},{"Str":{"pattern":")"}},{"Sequence":{"atoms":[109,112,113,116,117]}},{"Sequence":{"atoms":[107,108]}},{"Repetition":{"atom":119,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[0,1,19,21,64,74,86,106,120]}}],"root":121},"bindings":[{"capture":"type","path":"type","type":"string","card":null,"preprocess":null},{"capture":"number","path":"number","type":"string","card":null,"preprocess":null},{"capture":"minor","path":"minor","type":"string","card":null,"preprocess":null},{"capture":"part","path":"parts[].part","type":"string","card":null,"preprocess":null},{"capture":"version","path":"version","type":"string","card":null,"preprocess":null},{"capture":"edition","path":"edition","type":"string","card":null,"preprocess":null},{"capture":"year","path":"year","type":"string","card":null,"preprocess":null},{"capture":"month","path":"month","type":"string","card":null,"preprocess":null},{"capture":"supplement_kind","path":"supplements[].supplement_kind","type":"string","card":null,"preprocess":null},{"capture":"supplement_number","path":"supplements[].supplement_number","type":"string","card":null,"preprocess":null}]}},"preprocess":{},"tables":{},"lint":{"order_warnings":[]},"default_entry":"identifier","render":{},"derive":{},"tests":[{"entry":"identifier","kind":"accept","input":"ETSI EN 300 175","expect":{}},{"entry":"identifier","kind":"accept","input":"ETSI TR 101 999","expect":{}},{"entry":"identifier","kind":"reject","input":"nonsense","expect":{}}],"docs":{},"source":"# Port of lib/pubid/etsi/parser.rb: ETSI <one of 15 types> <number>\n# [minor][-parts][/A..|/C..][ V<version> | ed.N] [(YYYY-MM)].\n\ngrammar PubidEtsi version \"0.1.0\" edition 2 {\n type = (\"I-ETS\" / \"TCRTR\" / \"GTS\" / \"ETR\" / \"ETS\" / \"TBR\" / \"NET\" / \"EN\" / \"ES\" / \"EG\" / \"TS\" / \"GR\" / \"GS\" / \"SR\" / \"TR\") as type\n # The monorepo's number is a single flat string (\"300 058\", \"298\") —\n # the inner pieces are structural only, never surfaced as captures.\n gsm_with_space_number = \"GSM\" space 1*digit dot 1*digit\n dotted_number = 1*digit dot 1*digit\n complex_number = 1*alnum_char [(dash 1*alnum_char)] space 1*digit\n simple_number = 1*digit\n number = ((\"GSM\" space 1*digit dot 1*digit) / (1*digit dot 1*digit) / (1*alnum_char [(dash 1*alnum_char)] space 1*digit) / (1*digit)) as number\n minor = space (1*digit) as minor\n part = dash (1*alnum_char) as part\n parts = (*part) as parts\n version = \"V\" (1*version_char) as version\n edition = \"ed.\" (1*digit) as edition\n version_or_edition = version / edition\n date_part = \"(\" (4digit) as year dash (2digit) as month \")\"\n single_supplement = ((\"/A\" / \"/C\") as supplement_kind (1*digit) as supplement_number)\n supplements = 1*single_supplement\n identifier = \"ETSI \" type space number [minor] [parts] [supplements] [(space version_or_edition)] [(space date_part)]\n alnum_char = %x41-5A / %x61-7A / %x30-39\n version_char = %x30-39 / %x2E\n digit = %x30-39\n dash = \"-\"\n dot = \".\"\n space = \" \"\n entry identifier: identifier\n\n # Typed model bindings: repeated parts collect under parts[].part and\n # the supplements pair kind with number by occurrence index.\n bindings identifier {\n type -> type (string)\n number -> number (string)\n minor -> minor (string)\n part -> parts[].part (string)\n version -> version (string)\n edition -> edition (string)\n year -> year (string)\n month -> month (string)\n supplement_kind -> supplements[].supplement_kind (string)\n supplement_number -> supplements[].supplement_number (string)\n }\n\n \n test {\n accept \"ETSI EN 300 175\"\n accept \"ETSI TR 101 999\"\n reject \"nonsense\"\n }\n}\n","source_hash":"fcd65f026fe04cb23ccdd6420b18ad5548bc05206afa3cf6e4d2e7e0757e6a1b","unicode_tables":"onigmo (Ruby 3.4.8)","compiler_version":"1.3.121","edition":2,"semantics_hash":"sha256:e85bacb7677aeef000d06f85b6dec0b27e1ac4aef512eb74ff60a4c7cbcf645a","checksum":"sha256:fac58c9dfec9e9a0fb0eae0f6b47fd7ad9c87917b1cf37f5ff1e7373c9b73b8f"}