asciiunits 0.1.0 → 0.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.adoc +7 -5
- data/artifacts/unitsml.json +1 -1
- data/corpora/unitsml/corpus.json +473 -58
- data/corpora/unitsml/expected-kinds.json +78 -2
- data/corpora/unitsml/inputs.txt +21 -2
- data/grammars/unitsml.parg +11 -4
- data/lib/asciiunits/version.rb +1 -1
- data/suites/unitsml.pgtest +6 -0
- data/tables/prefixed_units.yaml +12 -0
- metadata +2 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 1e5bf019bfab4a229cec30d95a1ece65641b6628f05a4d75765a191d71956022
|
|
4
|
+
data.tar.gz: 2d00ceb487e5cf3cf5ec5417d7811e87ab1ad2a5411f482688cc897b781faad4
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 4fd491057a3b448bf8da4f7a088a839c3c7619c3179628d0d278aee673660953ff3e6031fdb495d9f2277401b6378dbbc6daaaeb6d753892423451b97f46269b
|
|
7
|
+
data.tar.gz: ce8361be57a8b18faf3aa08587cbb123017597b9c4f76c19a2116edb97798282a1c72b8281e748a954a5d42f4661c19c0cff544c0e5f26a3cf74f8725a089009
|
data/README.adoc
CHANGED
|
@@ -35,6 +35,8 @@ load-bearing):
|
|
|
35
35
|
|
|
36
36
|
* unit tokens from UnitsDB (`m`, `Hz`, `cal_th`, `ton-force (2000 lb)`, …),
|
|
37
37
|
prefixed units (`mm`, `mmol`), the literal `1`
|
|
38
|
+
* registered prefixed symbols (`dB`, `mbar`, `kgf`, `cSt`, …) tried after
|
|
39
|
+
normal composition — decibel parses as an atom (`bel_B`), not deci-bel
|
|
38
40
|
* exponents: `^2`, `^-2`, `^(1/2)` — a single power per unit, no chained powers
|
|
39
41
|
* multiplication/division: `*`, `/`, `//`, implicit multiplication by
|
|
40
42
|
whitespace (`m s`), and direct fence/sqrt adjacency (`(m)(s)`, `sqrt(m)s`)
|
|
@@ -42,8 +44,7 @@ load-bearing):
|
|
|
42
44
|
* fencing `(…)` — powers do not attach to fenced or sqrt forms (`(cm)^3` is rejected)
|
|
43
45
|
* prefix-only forms at top level (`k-`)
|
|
44
46
|
* dimension expressions (`dim_L*dim_M^2`) with the same operators
|
|
45
|
-
*
|
|
46
|
-
the original — the oracle corpus pins them
|
|
47
|
+
* every other quirk of the original — the oracle corpus pins them
|
|
47
48
|
|
|
48
49
|
== Artifact tree contract
|
|
49
50
|
|
|
@@ -126,10 +127,11 @@ vendored artifact.
|
|
|
126
127
|
|
|
127
128
|
== Verification status
|
|
128
129
|
|
|
129
|
-
* Oracle: unitsml
|
|
130
|
+
* Oracle: the unitsml-ruby Parslet parser (parg-parser branch, including
|
|
131
|
+
the registered prefixed-symbol support), frozen in
|
|
130
132
|
`corpora/unitsml/expected-kinds.json`
|
|
131
|
-
* Corpus:
|
|
132
|
-
* Differential
|
|
133
|
+
* Corpus: 143 inputs (80 accept / 63 reject), kind parity green
|
|
134
|
+
* Differential probes at authoring time: 572 + 172 generated inputs, 0
|
|
133
135
|
accept/reject disagreements against the oracle
|
|
134
136
|
* Engines: native (Rust) and `mode: :ruby` trees verified identical
|
|
135
137
|
* Compile: byte-identical across recompiles (`rake artifact:compile`)
|
data/artifacts/unitsml.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"bindings":null,"version":"0.1.0","grammar":"UnitsmlAscii","shape":"parsanol-tree/v2","binding_version":1,"entries":{"expression":{"root":"expression","grammar":{"atoms":[{"Entity":{"atom":574}},{"Entity":{"atom":571}},{"Entity":{"atom":568}},{"Entity":{"atom":566}},{"Str":{"pattern":"sqrt"}},{"Entity":{"atom":6}},{"Str":{"pattern":"("}},{"Entity":{"atom":563}},{"Named":{"name":"implicit_extended","atom":1}},{"Entity":{"atom":18}},{"Entity":{"atom":17}},{"Re":{"pattern":"[\\x09]"}},{"Re":{"pattern":"[\\x0a]"}},{"Re":{"pattern":"[\\x0b]"}},{"Re":{"pattern":"[\\x0c]"}},{"Re":{"pattern":"[\\x0d]"}},{"Re":{"pattern":"[ ]"}},{"Alternative":{"atoms":[11,12,13,14,15,16]}},{"Repetition":{"atom":10,"min":1,"max":null,"tag":"Repetition"}},{"Repetition":{"atom":9,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":559}},{"Named":{"name":"sequence","atom":20}},{"Repetition":{"atom":21,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[8,19,22]}},{"Entity":{"atom":556}},{"Named":{"name":"first_set","atom":2}},{"Entity":{"atom":18}},{"Named":{"name":"extender","atom":26}},{"Entity":{"atom":532}},{"Entity":{"atom":529}},{"Entity":{"atom":38}},{"Entity":{"atom":34}},{"Str":{"pattern":"//"}},{"Str":{"pattern":"/"}},{"Alternative":{"atoms":[32,33]}},{"Entity":{"atom":36}},{"Str":{"pattern":"*"}},{"Alternative":{"atoms":[31,35]}},{"Named":{"name":"extender","atom":37}},{"Entity":{"atom":18}},{"Repetition":{"atom":39,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":527}},{"Named":{"name":"implicit_extended","atom":24}},{"Entity":{"atom":18}},{"Repetition":{"atom":43,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":38}},{"Entity":{"atom":18}},{"Repetition":{"atom":46,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":523}},{"Named":{"name":"sequence","atom":48}},{"Repetition":{"atom":49,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[42,44,45,47,50]}},{"Entity":{"atom":521}},{"Entity":{"atom":6}},{"Entity":{"atom":18}},{"Repetition":{"atom":54,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":519}},{"Entity":{"atom":511}},{"Entity":{"atom":6}},{"Named":{"name":"open_paren","atom":58}},{"Entity":{"atom":18}},{"Repetition":{"atom":60,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":505}},{"Entity":{"atom":69}},{"Named":{"name":"int_exp","atom":56}},{"Entity":{"atom":18}},{"Repetition":{"atom":65,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":68}},{"Str":{"pattern":")"}},{"Sequence":{"atoms":[53,55,64,66,67]}},{"Entity":{"atom":504}},{"Entity":{"atom":18}},{"Repetition":{"atom":71,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":38}},{"Entity":{"atom":18}},{"Repetition":{"atom":74,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":500}},{"Named":{"name":"sequence","atom":76}},{"Repetition":{"atom":77,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[52,72,73,75,78]}},{"Entity":{"atom":468}},{"Repetition":{"atom":29,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[3,81]}},{"Str":{"pattern":"1"}},{"Named":{"name":"unit","atom":83}},{"Entity":{"atom":87}},{"Named":{"name":"sequence","atom":41}},{"Sequence":{"atoms":[30,40,86]}},{"Repetition":{"atom":85,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[84,88]}},{"Entity":{"atom":402}},{"Entity":{"atom":366}},{"Str":{"pattern":"ton-force (2000 lb)"}},{"Str":{"pattern":"ton_refrigeration"}},{"Str":{"pattern":"dprime_Hg_32degF"}},{"Str":{"pattern":"dprime_Hg_60degF"}},{"Str":{"pattern":"fl oz (US label)"}},{"Str":{"pattern":"a_sidereal_year"}},{"Str":{"pattern":"a_tropical_year"}},{"Str":{"pattern":"aW (Cardelli)"}},{"Str":{"pattern":"ftH_2O_39degF"}},{"Str":{"pattern":"inH_2O_39degF"}},{"Str":{"pattern":"inH_2O_60degF"}},{"Str":{"pattern":"liq pint (US)"}},{"Str":{"pattern":"oz (US label)"}},{"Str":{"pattern":"pica_computer"}},{"Str":{"pattern":"rad_radiation"}},{"Str":{"pattern":"cmH_2O_4degC"}},{"Str":{"pattern":"ft_US_survey"}},{"Str":{"pattern":"h-bar_atomic"}},{"Str":{"pattern":"in_US_survey"}},{"Str":{"pattern":"lambda-bar_C"}},{"Str":{"pattern":"mi_US_survey"}},{"Str":{"pattern":"min_sidereal"}},{"Str":{"pattern":"pica_printer"}},{"Str":{"pattern":"yd_US_survey"}},{"Str":{"pattern":"dry pt (US)"}},{"Str":{"pattern":"dry qt (US)"}},{"Str":{"pattern":"gi_imperial"}},{"Str":{"pattern":"hp_electric"}},{"Str":{"pattern":"inHg_32degF"}},{"Str":{"pattern":"inHg_60degF"}},{"Str":{"pattern":"liq qt (US)"}},{"Str":{"pattern":"pt_computer"}},{"Str":{"pattern":"statcoulomb"}},{"Str":{"pattern":"\"Hg_32degF"}},{"Str":{"pattern":"\"Hg_60degF"}},{"Str":{"pattern":"Btu_39degF"}},{"Str":{"pattern":"Btu_59degF"}},{"Str":{"pattern":"Btu_60degF"}},{"Str":{"pattern":"cmHg_0degC"}},{"Str":{"pattern":"d_sidereal"}},{"Str":{"pattern":"dwt (troy)"}},{"Str":{"pattern":"fl oz (UK)"}},{"Str":{"pattern":"fl oz (US)"}},{"Str":{"pattern":"h-bar_eV_s"}},{"Str":{"pattern":"h_sidereal"}},{"Str":{"pattern":"m_e_atomic"}},{"Str":{"pattern":"pt_printer"}},{"Str":{"pattern":"rh_percent"}},{"Str":{"pattern":"s_sidereal"}},{"Str":{"pattern":"tbsp_label"}},{"Str":{"pattern":"cup_label"}},{"Str":{"pattern":"dprime_Hg"}},{"Str":{"pattern":"dprime_in"}},{"Str":{"pattern":"dr (avdp)"}},{"Str":{"pattern":"hp_boiler"}},{"Str":{"pattern":"hp_metric"}},{"Str":{"pattern":"prime_min"}},{"Str":{"pattern":"scr (ap.)"}},{"Str":{"pattern":"ton_short"}},{"Str":{"pattern":"tsp_label"}},{"Str":{"pattern":"Btu_mean"}},{"Str":{"pattern":"E_erlang"}},{"Str":{"pattern":"bbl (US)"}},{"Str":{"pattern":"cwt (UK)"}},{"Str":{"pattern":"cwt (US)"}},{"Str":{"pattern":"dprime_s"}},{"Str":{"pattern":"gal (UK)"}},{"Str":{"pattern":"gal (US)"}},{"Str":{"pattern":"hp_water"}},{"Str":{"pattern":"mil_nato"}},{"Str":{"pattern":"prime_Hg"}},{"Str":{"pattern":"prime_ft"}},{"Str":{"pattern":"statwatt"}},{"Str":{"pattern":"thm (EC)"}},{"Str":{"pattern":"thm (US)"}},{"Str":{"pattern":"ton_long"}},{"Str":{"pattern":"Lambert"}},{"Str":{"pattern":"bu (US)"}},{"Str":{"pattern":"lb_troy"}},{"Str":{"pattern":"oz_troy"}},{"Str":{"pattern":"pt (UK)"}},{"Str":{"pattern":"qt (UK)"}},{"Str":{"pattern":"statmho"}},{"Str":{"pattern":"statohm"}},{"Str":{"pattern":"ton_TNT"}},{"Str":{"pattern":"Btu_th"}},{"Str":{"pattern":"a_year"}},{"Str":{"pattern":"byte_B"}},{"Str":{"pattern":"cal_IT"}},{"Str":{"pattern":"cal_th"}},{"Str":{"pattern":"cmH_2O"}},{"Str":{"pattern":"dprime"}},{"Str":{"pattern":"ftH_2O"}},{"Str":{"pattern":"inH_2O"}},{"Str":{"pattern":"kayser"}},{"Str":{"pattern":"micron"}},{"Str":{"pattern":"mmH_2O"}},{"Str":{"pattern":"statWb"}},{"Str":{"pattern":"'_min"}},{"Str":{"pattern":"Aring"}},{"Str":{"pattern":"Darcy"}},{"Str":{"pattern":"abohm"}},{"Str":{"pattern":"barye"}},{"Str":{"pattern":"bel_B"}},{"Str":{"pattern":"dB_mW"}},{"Str":{"pattern":"darcy"}},{"Str":{"pattern":"fermi"}},{"Str":{"pattern":"fl dr"}},{"Str":{"pattern":"gamma"}},{"Str":{"pattern":"h-bar"}},{"Str":{"pattern":"hp_UK"}},{"Str":{"pattern":"lbmol"}},{"Str":{"pattern":"minim"}},{"Str":{"pattern":"prime"}},{"Str":{"pattern":"shake"}},{"Str":{"pattern":"statA"}},{"Str":{"pattern":"statF"}},{"Str":{"pattern":"statH"}},{"Str":{"pattern":"statT"}},{"Str":{"pattern":"statV"}},{"Str":{"pattern":"\"_in"}},{"Str":{"pattern":"'_ft"}},{"Str":{"pattern":"Hart"}},{"Str":{"pattern":"Torr"}},{"Str":{"pattern":"barn"}},{"Str":{"pattern":"cmHg"}},{"Str":{"pattern":"cmil"}},{"Str":{"pattern":"degC"}},{"Str":{"pattern":"degF"}},{"Str":{"pattern":"degK"}},{"Str":{"pattern":"degR"}},{"Str":{"pattern":"fath"}},{"Str":{"pattern":"ft.L"}},{"Str":{"pattern":"ft.c"}},{"Str":{"pattern":"ftHg"}},{"Str":{"pattern":"inHg"}},{"Str":{"pattern":"l.h."}},{"Str":{"pattern":"l.m."}},{"Str":{"pattern":"l.s."}},{"Str":{"pattern":"l.w."}},{"Str":{"pattern":"l.y."}},{"Str":{"pattern":"mmHg"}},{"Str":{"pattern":"slug"}},{"Str":{"pattern":"tbsp"}},{"Str":{"pattern":"thou"}},{"Str":{"pattern":"\"Hg"}},{"Str":{"pattern":"\"_s"}},{"Str":{"pattern":"'Hg"}},{"Str":{"pattern":"Btu"}},{"Str":{"pattern":"E_h"}},{"Str":{"pattern":"Gal"}},{"Str":{"pattern":"Ohm"}},{"Str":{"pattern":"a_0"}},{"Str":{"pattern":"abA"}},{"Str":{"pattern":"abC"}},{"Str":{"pattern":"abF"}},{"Str":{"pattern":"abH"}},{"Str":{"pattern":"abS"}},{"Str":{"pattern":"abV"}},{"Str":{"pattern":"atm"}},{"Str":{"pattern":"bar"}},{"Str":{"pattern":"bit"}},{"Str":{"pattern":"c_0"}},{"Str":{"pattern":"cal"}},{"Str":{"pattern":"cup"}},{"Str":{"pattern":"dBm"}},{"Str":{"pattern":"dec"}},{"Str":{"pattern":"deg"}},{"Str":{"pattern":"den"}},{"Str":{"pattern":"dyn"}},{"Str":{"pattern":"erg"}},{"Str":{"pattern":"fur"}},{"Str":{"pattern":"gon"}},{"Str":{"pattern":"gpm"}},{"Str":{"pattern":"kat"}},{"Str":{"pattern":"kip"}},{"Str":{"pattern":"lbf"}},{"Str":{"pattern":"lnk"}},{"Str":{"pattern":"m_e"}},{"Str":{"pattern":"mil"}},{"Str":{"pattern":"min"}},{"Str":{"pattern":"mol"}},{"Str":{"pattern":"mpg"}},{"Str":{"pattern":"oct"}},{"Str":{"pattern":"pdl"}},{"Str":{"pattern":"ppm"}},{"Str":{"pattern":"psi"}},{"Str":{"pattern":"rad"}},{"Str":{"pattern":"rem"}},{"Str":{"pattern":"rhe"}},{"Str":{"pattern":"tex"}},{"Str":{"pattern":"tsp"}},{"Str":{"pattern":"var"}},{"Str":{"pattern":"Bd"}},{"Str":{"pattern":"Bi"}},{"Str":{"pattern":"Bq"}},{"Str":{"pattern":"Ci"}},{"Str":{"pattern":"Da"}},{"Str":{"pattern":"Gi"}},{"Str":{"pattern":"Gs"}},{"Str":{"pattern":"Gy"}},{"Str":{"pattern":"Hz"}},{"Str":{"pattern":"Mx"}},{"Str":{"pattern":"Np"}},{"Str":{"pattern":"Oe"}},{"Str":{"pattern":"Pa"}},{"Str":{"pattern":"Sh"}},{"Str":{"pattern":"St"}},{"Str":{"pattern":"Sv"}},{"Str":{"pattern":"Wb"}},{"Str":{"pattern":"ac"}},{"Str":{"pattern":"as"}},{"Str":{"pattern":"at"}},{"Str":{"pattern":"cd"}},{"Str":{"pattern":"ch"}},{"Str":{"pattern":"ct"}},{"Str":{"pattern":"dr"}},{"Str":{"pattern":"eV"}},{"Str":{"pattern":"ft"}},{"Str":{"pattern":"gf"}},{"Str":{"pattern":"gi"}},{"Str":{"pattern":"gr"}},{"Str":{"pattern":"ha"}},{"Str":{"pattern":"hp"}},{"Str":{"pattern":"in"}},{"Str":{"pattern":"kn"}},{"Str":{"pattern":"kp"}},{"Str":{"pattern":"lb"}},{"Str":{"pattern":"lm"}},{"Str":{"pattern":"lx"}},{"Str":{"pattern":"mi"}},{"Str":{"pattern":"oz"}},{"Str":{"pattern":"pH"}},{"Str":{"pattern":"pc"}},{"Str":{"pattern":"ph"}},{"Str":{"pattern":"pk"}},{"Str":{"pattern":"rd"}},{"Str":{"pattern":"rh"}},{"Str":{"pattern":"sb"}},{"Str":{"pattern":"sr"}},{"Str":{"pattern":"st"}},{"Str":{"pattern":"ua"}},{"Str":{"pattern":"yd"}},{"Str":{"pattern":"\""}},{"Str":{"pattern":"'"}},{"Str":{"pattern":"A"}},{"Str":{"pattern":"C"}},{"Str":{"pattern":"D"}},{"Str":{"pattern":"F"}},{"Str":{"pattern":"G"}},{"Str":{"pattern":"H"}},{"Str":{"pattern":"J"}},{"Str":{"pattern":"K"}},{"Str":{"pattern":"L"}},{"Str":{"pattern":"M"}},{"Str":{"pattern":"N"}},{"Str":{"pattern":"P"}},{"Str":{"pattern":"R"}},{"Str":{"pattern":"S"}},{"Str":{"pattern":"T"}},{"Str":{"pattern":"V"}},{"Str":{"pattern":"W"}},{"Str":{"pattern":"a"}},{"Str":{"pattern":"c"}},{"Str":{"pattern":"d"}},{"Str":{"pattern":"e"}},{"Str":{"pattern":"g"}},{"Str":{"pattern":"h"}},{"Str":{"pattern":"l"}},{"Str":{"pattern":"m"}},{"Str":{"pattern":"s"}},{"Str":{"pattern":"t"}},{"Str":{"pattern":"u"}},{"Alternative":{"atoms":[92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364]}},{"Named":{"name":"unit","atom":365}},{"Entity":{"atom":400}},{"Str":{"pattern":"^"}},{"Entity":{"atom":398}},{"Entity":{"atom":383}},{"Entity":{"atom":377}},{"Str":{"pattern":"-"}},{"Repetition":{"atom":372,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":375}},{"Re":{"pattern":"[\\x30-\\x39]"}},{"Repetition":{"atom":374,"min":1,"max":null,"tag":"Repetition"}},{"Sequence":{"atoms":[373,376]}},{"Entity":{"atom":34}},{"Entity":{"atom":377}},{"Sequence":{"atoms":[378,379]}},{"Repetition":{"atom":380,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[371,381]}},{"Named":{"name":"integer","atom":382}},{"Entity":{"atom":6}},{"Entity":{"atom":395}},{"Entity":{"atom":6}},{"Entity":{"atom":391}},{"Named":{"name":"int_exp","atom":385}},{"Entity":{"atom":68}},{"Sequence":{"atoms":[384,388,389]}},{"Alternative":{"atoms":[370,390]}},{"Entity":{"atom":68}},{"Sequence":{"atoms":[386,387,392]}},{"Entity":{"atom":391}},{"Alternative":{"atoms":[393,394]}},{"Named":{"name":"int_exp","atom":385}},{"Sequence":{"atoms":[384,396,389]}},{"Alternative":{"atoms":[370,397]}},{"Named":{"name":"power_numerator","atom":369}},{"Sequence":{"atoms":[368,399]}},{"Repetition":{"atom":367,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[91,401]}},{"Entity":{"atom":87}},{"Sequence":{"atoms":[90,403]}},{"Entity":{"atom":402}},{"Entity":{"atom":415}},{"Re":{"pattern":"[\\x00-\\u{10ffff}]"}},{"Lookahead":{"atom":407,"positive":false}},{"Entity":{"atom":38}},{"Entity":{"atom":6}},{"Entity":{"atom":68}},{"Entity":{"atom":18}},{"Alternative":{"atoms":[409,410,411,412]}},{"Lookahead":{"atom":413,"positive":true}},{"Alternative":{"atoms":[408,414]}},{"Sequence":{"atoms":[405,406]}},{"Entity":{"atom":428}},{"Str":{"pattern":"Ei"}},{"Str":{"pattern":"Gi"}},{"Str":{"pattern":"Ki"}},{"Str":{"pattern":"Mi"}},{"Str":{"pattern":"Pi"}},{"Str":{"pattern":"Ti"}},{"Str":{"pattern":"Yi"}},{"Str":{"pattern":"Zi"}},{"Str":{"pattern":"da"}},{"Alternative":{"atoms":[418,419,420,421,422,423,424,425,426]}},{"Named":{"name":"prefix","atom":427}},{"Entity":{"atom":402}},{"Entity":{"atom":87}},{"Sequence":{"atoms":[417,429,430]}},{"Entity":{"atom":428}},{"Entity":{"atom":402}},{"Sequence":{"atoms":[432,433]}},{"Entity":{"atom":461}},{"Str":{"pattern":"1"}},{"Str":{"pattern":"E"}},{"Str":{"pattern":"G"}},{"Str":{"pattern":"M"}},{"Str":{"pattern":"P"}},{"Str":{"pattern":"Q"}},{"Str":{"pattern":"R"}},{"Str":{"pattern":"T"}},{"Str":{"pattern":"Y"}},{"Str":{"pattern":"Z"}},{"Str":{"pattern":"a"}},{"Str":{"pattern":"c"}},{"Str":{"pattern":"d"}},{"Str":{"pattern":"f"}},{"Str":{"pattern":"h"}},{"Str":{"pattern":"k"}},{"Str":{"pattern":"m"}},{"Str":{"pattern":"n"}},{"Str":{"pattern":"p"}},{"Str":{"pattern":"q"}},{"Str":{"pattern":"r"}},{"Str":{"pattern":"u"}},{"Str":{"pattern":"y"}},{"Str":{"pattern":"z"}},{"Alternative":{"atoms":[436,437,438,439,440,441,442,443,444,445,446,447,448,449,450,451,452,453,454,455,456,457,458,459]}},{"Named":{"name":"prefix","atom":460}},{"Entity":{"atom":402}},{"Entity":{"atom":87}},{"Sequence":{"atoms":[435,462,463]}},{"Entity":{"atom":461}},{"Entity":{"atom":402}},{"Sequence":{"atoms":[465,466]}},{"Alternative":{"atoms":[82,89,404,416,431,434,464,467]}},{"Entity":{"atom":18}},{"Repetition":{"atom":469,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":38}},{"Entity":{"atom":18}},{"Repetition":{"atom":472,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":496}},{"Named":{"name":"sequence","atom":474}},{"Repetition":{"atom":475,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[80,470,471,473,476]}},{"Entity":{"atom":69}},{"Entity":{"atom":492}},{"Named":{"name":"sequence","atom":479}},{"Repetition":{"atom":480,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[478,481]}},{"Entity":{"atom":468}},{"Entity":{"atom":488}},{"Named":{"name":"sequence","atom":484}},{"Repetition":{"atom":485,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[483,486]}},{"Alternative":{"atoms":[23,51,79,477,482,487]}},{"Named":{"name":"sequence","atom":484}},{"Repetition":{"atom":489,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[483,490]}},{"Alternative":{"atoms":[23,51,79,477,482,491]}},{"Named":{"name":"sequence","atom":479}},{"Repetition":{"atom":493,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[478,494]}},{"Alternative":{"atoms":[23,51,79,477,495,491]}},{"Named":{"name":"sequence","atom":474}},{"Repetition":{"atom":497,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[80,470,471,473,498]}},{"Alternative":{"atoms":[23,51,79,499,495,491]}},{"Named":{"name":"sequence","atom":76}},{"Repetition":{"atom":501,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[52,72,73,75,502]}},{"Alternative":{"atoms":[23,51,503,499,495,491]}},{"Alternative":{"atoms":[63,70]}},{"Named":{"name":"int_exp","atom":62}},{"Entity":{"atom":18}},{"Repetition":{"atom":507,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":68}},{"Named":{"name":"close_paren","atom":509}},{"Sequence":{"atoms":[59,61,506,508,510]}},{"Named":{"name":"int_exp","atom":57}},{"Entity":{"atom":504}},{"Entity":{"atom":87}},{"Alternative":{"atoms":[513,514]}},{"Repetition":{"atom":515,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[512,516]}},{"Entity":{"atom":504}},{"Alternative":{"atoms":[517,518]}},{"Named":{"name":"int_exp","atom":56}},{"Sequence":{"atoms":[53,55,520,66,67]}},{"Sequence":{"atoms":[52,72,73,75,502]}},{"Alternative":{"atoms":[23,51,522,499,495,491]}},{"Named":{"name":"sequence","atom":48}},{"Repetition":{"atom":524,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[42,44,45,47,525]}},{"Alternative":{"atoms":[23,526,522,499,495,491]}},{"Named":{"name":"sequence","atom":41}},{"Sequence":{"atoms":[30,40,528]}},{"Repetition":{"atom":29,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[3,530]}},{"Alternative":{"atoms":[531,89,404,416,431,434,464,467]}},{"Named":{"name":"second_set","atom":28}},{"Sequence":{"atoms":[25,27,533]}},{"Entity":{"atom":521}},{"Named":{"name":"first_int_exp_set","atom":535}},{"Entity":{"atom":18}},{"Repetition":{"atom":537,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":521}},{"Named":{"name":"second_int_exp_set","atom":539}},{"Sequence":{"atoms":[536,538,540]}},{"Entity":{"atom":532}},{"Named":{"name":"first_set","atom":542}},{"Entity":{"atom":18}},{"Repetition":{"atom":544,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":521}},{"Named":{"name":"second_int_exp_set","atom":546}},{"Sequence":{"atoms":[543,545,547]}},{"Entity":{"atom":521}},{"Named":{"name":"first_int_exp_set","atom":549}},{"Entity":{"atom":18}},{"Repetition":{"atom":551,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":532}},{"Named":{"name":"second_set","atom":553}},{"Sequence":{"atoms":[550,552,554]}},{"Alternative":{"atoms":[534,541,548,555]}},{"Named":{"name":"implicit_extended","atom":24}},{"Sequence":{"atoms":[557,44,45,47,525]}},{"Alternative":{"atoms":[23,558,522,499,495,491]}},{"Named":{"name":"sequence","atom":20}},{"Repetition":{"atom":560,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[8,19,561]}},{"Alternative":{"atoms":[562,558,522,499,495,491]}},{"Named":{"name":"sqrt","atom":7}},{"Entity":{"atom":68}},{"Sequence":{"atoms":[4,5,564,565]}},{"Sequence":{"atoms":[3,530]}},{"Alternative":{"atoms":[567,89,404,416,431,434,464,467]}},{"Named":{"name":"first_set","atom":2}},{"Sequence":{"atoms":[569,27,533]}},{"Alternative":{"atoms":[570,541,548,555]}},{"Named":{"name":"implicit_extended","atom":1}},{"Sequence":{"atoms":[572,19,561]}},{"Alternative":{"atoms":[573,558,522,499,495,491]}},{"Entity":{"atom":701}},{"Entity":{"atom":698}},{"Entity":{"atom":696}},{"Str":{"pattern":"sqrt"}},{"Entity":{"atom":6}},{"Entity":{"atom":693}},{"Named":{"name":"first_set","atom":576}},{"Entity":{"atom":18}},{"Named":{"name":"extender","atom":582}},{"Entity":{"atom":690}},{"Entity":{"atom":599}},{"Entity":{"atom":596}},{"Str":{"pattern":"dim_Theta"}},{"Str":{"pattern":"dim_phi"}},{"Str":{"pattern":"dim_I"}},{"Str":{"pattern":"dim_J"}},{"Str":{"pattern":"dim_L"}},{"Str":{"pattern":"dim_M"}},{"Str":{"pattern":"dim_N"}},{"Str":{"pattern":"dim_T"}},{"Alternative":{"atoms":[587,588,589,590,591,592,593,594]}},{"Named":{"name":"dimension","atom":595}},{"Entity":{"atom":400}},{"Repetition":{"atom":597,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[586,598]}},{"Alternative":{"atoms":[577,585]}},{"Entity":{"atom":688}},{"Entity":{"atom":18}},{"Repetition":{"atom":602,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":38}},{"Entity":{"atom":18}},{"Repetition":{"atom":605,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":686}},{"Named":{"name":"second_set","atom":584}},{"Entity":{"atom":683}},{"Repetition":{"atom":609,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[581,583,608,610]}},{"Entity":{"atom":614}},{"Repetition":{"atom":601,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[600,613]}},{"Named":{"name":"first_set","atom":612}},{"Entity":{"atom":18}},{"Repetition":{"atom":616,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":680}},{"Entity":{"atom":6}},{"Entity":{"atom":678}},{"Entity":{"atom":6}},{"Named":{"name":"open_paren","atom":621}},{"Entity":{"atom":664}},{"Named":{"name":"second_int_exp_set","atom":618}},{"Entity":{"atom":661}},{"Repetition":{"atom":625,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[615,617,624,626]}},{"Entity":{"atom":635}},{"Named":{"name":"int_exp","atom":620}},{"Entity":{"atom":68}},{"Entity":{"atom":633}},{"Named":{"name":"sequence","atom":607}},{"Sequence":{"atoms":[603,604,606,632]}},{"Repetition":{"atom":631,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[619,629,630,634]}},{"Named":{"name":"first_int_exp_set","atom":628}},{"Entity":{"atom":18}},{"Repetition":{"atom":637,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":614}},{"Named":{"name":"second_set","atom":639}},{"Entity":{"atom":658}},{"Repetition":{"atom":641,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[636,638,640,642]}},{"Entity":{"atom":635}},{"Named":{"name":"first_int_exp_set","atom":644}},{"Entity":{"atom":18}},{"Repetition":{"atom":646,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":635}},{"Named":{"name":"second_int_exp_set","atom":648}},{"Entity":{"atom":655}},{"Repetition":{"atom":650,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[645,647,649,651]}},{"Entity":{"atom":635}},{"Entity":{"atom":614}},{"Alternative":{"atoms":[611,627,643,652,653,654]}},{"Repetition":{"atom":650,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[645,647,649,656]}},{"Alternative":{"atoms":[611,627,643,657,653,654]}},{"Repetition":{"atom":641,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[636,638,640,659]}},{"Alternative":{"atoms":[611,627,660,657,653,654]}},{"Repetition":{"atom":625,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[615,617,624,662]}},{"Alternative":{"atoms":[611,663,660,657,653,654]}},{"Named":{"name":"int_exp","atom":623}},{"Entity":{"atom":68}},{"Named":{"name":"close_paren","atom":666}},{"Sequence":{"atoms":[622,665,667]}},{"Named":{"name":"int_exp","atom":668}},{"Entity":{"atom":18}},{"Repetition":{"atom":670,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":664}},{"Entity":{"atom":633}},{"Alternative":{"atoms":[672,673]}},{"Named":{"name":"sequence","atom":674}},{"Sequence":{"atoms":[669,671,675]}},{"Entity":{"atom":664}},{"Alternative":{"atoms":[676,677]}},{"Named":{"name":"int_exp","atom":620}},{"Sequence":{"atoms":[619,679,630,634]}},{"Named":{"name":"second_int_exp_set","atom":618}},{"Sequence":{"atoms":[615,617,681,662]}},{"Alternative":{"atoms":[611,682,660,657,653,654]}},{"Repetition":{"atom":609,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[581,583,608,684]}},{"Alternative":{"atoms":[685,682,660,657,653,654]}},{"Named":{"name":"sequence","atom":607}},{"Sequence":{"atoms":[603,604,606,687]}},{"Repetition":{"atom":601,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[600,689]}},{"Named":{"name":"second_set","atom":584}},{"Sequence":{"atoms":[581,583,691,684]}},{"Alternative":{"atoms":[692,682,660,657,653,654]}},{"Named":{"name":"sqrt","atom":580}},{"Entity":{"atom":68}},{"Sequence":{"atoms":[578,579,694,695]}},{"Alternative":{"atoms":[577,585]}},{"Sequence":{"atoms":[697,689]}},{"Named":{"name":"first_set","atom":576}},{"Sequence":{"atoms":[699,583,691,684]}},{"Alternative":{"atoms":[700,682,660,657,653,654]}},{"Entity":{"atom":461}},{"Entity":{"atom":704}},{"Str":{"pattern":"-"}},{"Sequence":{"atoms":[702,703]}},{"Entity":{"atom":428}},{"Entity":{"atom":704}},{"Sequence":{"atoms":[706,707]}},{"Alternative":{"atoms":[0,575,705,708]}}],"root":709},"bindings":[]}},"preprocess":{},"tables":{"units":{"file":"units.yaml","rows":[{"name":"ton-force (2000 lb)"},{"name":"ton_refrigeration"},{"name":"dprime_Hg_32degF"},{"name":"dprime_Hg_60degF"},{"name":"fl oz (US label)"},{"name":"a_sidereal_year"},{"name":"a_tropical_year"},{"name":"aW (Cardelli)"},{"name":"ftH_2O_39degF"},{"name":"inH_2O_39degF"},{"name":"inH_2O_60degF"},{"name":"liq pint (US)"},{"name":"oz (US label)"},{"name":"pica_computer"},{"name":"rad_radiation"},{"name":"cmH_2O_4degC"},{"name":"ft_US_survey"},{"name":"h-bar_atomic"},{"name":"in_US_survey"},{"name":"lambda-bar_C"},{"name":"mi_US_survey"},{"name":"min_sidereal"},{"name":"pica_printer"},{"name":"yd_US_survey"},{"name":"dry pt (US)"},{"name":"dry qt (US)"},{"name":"gi_imperial"},{"name":"hp_electric"},{"name":"inHg_32degF"},{"name":"inHg_60degF"},{"name":"liq qt (US)"},{"name":"pt_computer"},{"name":"statcoulomb"},{"name":"\"Hg_32degF"},{"name":"\"Hg_60degF"},{"name":"Btu_39degF"},{"name":"Btu_59degF"},{"name":"Btu_60degF"},{"name":"cmHg_0degC"},{"name":"d_sidereal"},{"name":"dwt (troy)"},{"name":"fl oz (UK)"},{"name":"fl oz (US)"},{"name":"h-bar_eV_s"},{"name":"h_sidereal"},{"name":"m_e_atomic"},{"name":"pt_printer"},{"name":"rh_percent"},{"name":"s_sidereal"},{"name":"tbsp_label"},{"name":"cup_label"},{"name":"dprime_Hg"},{"name":"dprime_in"},{"name":"dr (avdp)"},{"name":"hp_boiler"},{"name":"hp_metric"},{"name":"prime_min"},{"name":"scr (ap.)"},{"name":"ton_short"},{"name":"tsp_label"},{"name":"Btu_mean"},{"name":"E_erlang"},{"name":"bbl (US)"},{"name":"cwt (UK)"},{"name":"cwt (US)"},{"name":"dprime_s"},{"name":"gal (UK)"},{"name":"gal (US)"},{"name":"hp_water"},{"name":"mil_nato"},{"name":"prime_Hg"},{"name":"prime_ft"},{"name":"statwatt"},{"name":"thm (EC)"},{"name":"thm (US)"},{"name":"ton_long"},{"name":"Lambert"},{"name":"bu (US)"},{"name":"lb_troy"},{"name":"oz_troy"},{"name":"pt (UK)"},{"name":"qt (UK)"},{"name":"statmho"},{"name":"statohm"},{"name":"ton_TNT"},{"name":"Btu_th"},{"name":"a_year"},{"name":"byte_B"},{"name":"cal_IT"},{"name":"cal_th"},{"name":"cmH_2O"},{"name":"dprime"},{"name":"ftH_2O"},{"name":"inH_2O"},{"name":"kayser"},{"name":"micron"},{"name":"mmH_2O"},{"name":"statWb"},{"name":"'_min"},{"name":"Aring"},{"name":"Darcy"},{"name":"abohm"},{"name":"barye"},{"name":"bel_B"},{"name":"dB_mW"},{"name":"darcy"},{"name":"fermi"},{"name":"fl dr"},{"name":"gamma"},{"name":"h-bar"},{"name":"hp_UK"},{"name":"lbmol"},{"name":"minim"},{"name":"prime"},{"name":"shake"},{"name":"statA"},{"name":"statF"},{"name":"statH"},{"name":"statT"},{"name":"statV"},{"name":"\"_in"},{"name":"'_ft"},{"name":"Hart"},{"name":"Torr"},{"name":"barn"},{"name":"cmHg"},{"name":"cmil"},{"name":"degC"},{"name":"degF"},{"name":"degK"},{"name":"degR"},{"name":"fath"},{"name":"ft.L"},{"name":"ft.c"},{"name":"ftHg"},{"name":"inHg"},{"name":"l.h."},{"name":"l.m."},{"name":"l.s."},{"name":"l.w."},{"name":"l.y."},{"name":"mmHg"},{"name":"slug"},{"name":"tbsp"},{"name":"thou"},{"name":"\"Hg"},{"name":"\"_s"},{"name":"'Hg"},{"name":"Btu"},{"name":"E_h"},{"name":"Gal"},{"name":"Ohm"},{"name":"a_0"},{"name":"abA"},{"name":"abC"},{"name":"abF"},{"name":"abH"},{"name":"abS"},{"name":"abV"},{"name":"atm"},{"name":"bar"},{"name":"bit"},{"name":"c_0"},{"name":"cal"},{"name":"cup"},{"name":"dBm"},{"name":"dec"},{"name":"deg"},{"name":"den"},{"name":"dyn"},{"name":"erg"},{"name":"fur"},{"name":"gon"},{"name":"gpm"},{"name":"kat"},{"name":"kip"},{"name":"lbf"},{"name":"lnk"},{"name":"m_e"},{"name":"mil"},{"name":"min"},{"name":"mol"},{"name":"mpg"},{"name":"oct"},{"name":"pdl"},{"name":"ppm"},{"name":"psi"},{"name":"rad"},{"name":"rem"},{"name":"rhe"},{"name":"tex"},{"name":"tsp"},{"name":"var"},{"name":"Bd"},{"name":"Bi"},{"name":"Bq"},{"name":"Ci"},{"name":"Da"},{"name":"Gi"},{"name":"Gs"},{"name":"Gy"},{"name":"Hz"},{"name":"Mx"},{"name":"Np"},{"name":"Oe"},{"name":"Pa"},{"name":"Sh"},{"name":"St"},{"name":"Sv"},{"name":"Wb"},{"name":"ac"},{"name":"as"},{"name":"at"},{"name":"cd"},{"name":"ch"},{"name":"ct"},{"name":"dr"},{"name":"eV"},{"name":"ft"},{"name":"gf"},{"name":"gi"},{"name":"gr"},{"name":"ha"},{"name":"hp"},{"name":"in"},{"name":"kn"},{"name":"kp"},{"name":"lb"},{"name":"lm"},{"name":"lx"},{"name":"mi"},{"name":"oz"},{"name":"pH"},{"name":"pc"},{"name":"ph"},{"name":"pk"},{"name":"rd"},{"name":"rh"},{"name":"sb"},{"name":"sr"},{"name":"st"},{"name":"ua"},{"name":"yd"},{"name":"\""},{"name":"'"},{"name":"A"},{"name":"C"},{"name":"D"},{"name":"F"},{"name":"G"},{"name":"H"},{"name":"J"},{"name":"K"},{"name":"L"},{"name":"M"},{"name":"N"},{"name":"P"},{"name":"R"},{"name":"S"},{"name":"T"},{"name":"V"},{"name":"W"},{"name":"a"},{"name":"c"},{"name":"d"},{"name":"e"},{"name":"g"},{"name":"h"},{"name":"l"},{"name":"m"},{"name":"s"},{"name":"t"},{"name":"u"}]},"dimensions":{"file":"dimensions.yaml","rows":[{"name":"dim_Theta"},{"name":"dim_phi"},{"name":"dim_I"},{"name":"dim_J"},{"name":"dim_L"},{"name":"dim_M"},{"name":"dim_N"},{"name":"dim_T"}]},"prefixes_double":{"file":"prefixes_double.yaml","rows":[{"name":"Ei"},{"name":"Gi"},{"name":"Ki"},{"name":"Mi"},{"name":"Pi"},{"name":"Ti"},{"name":"Yi"},{"name":"Zi"},{"name":"da"}]},"prefixes_single":{"file":"prefixes_single.yaml","rows":[{"name":"1"},{"name":"E"},{"name":"G"},{"name":"M"},{"name":"P"},{"name":"Q"},{"name":"R"},{"name":"T"},{"name":"Y"},{"name":"Z"},{"name":"a"},{"name":"c"},{"name":"d"},{"name":"f"},{"name":"h"},{"name":"k"},{"name":"m"},{"name":"n"},{"name":"p"},{"name":"q"},{"name":"r"},{"name":"u"},{"name":"y"},{"name":"z"}]}},"lint":{"order_warnings":["rule forward_slashes: branches 1 and 2 are order-dependent (shared first bytes; ordered choice is decisive)","rule end_guard: branches 1 and 2 are order-dependent (first set not statically known)","rule slashed_number_named_int_exp: branches 1 and 2 are order-dependent (shared first bytes; ordered choice is decisive)","rule prefixes_units: branches 1 and 3 are order-dependent (shared first bytes; ordered choice is decisive)","rule prefixes_units: branches 1 and 4 are order-dependent (shared first bytes; ordered choice is decisive)","rule prefixes_units: branches 2 and 7 are order-dependent (shared first bytes; ordered choice is decisive)","rule prefixes_units: branches 2 and 8 are order-dependent (shared first bytes; ordered choice is decisive)","rule prefixes_units: branches 3 and 4 are order-dependent (shared first bytes; ordered choice is decisive)","rule prefixes_units: branches 3 and 5 are order-dependent (shared first bytes; ordered choice is decisive)","rule prefixes_units: branches 3 and 6 are order-dependent (shared first bytes; ordered choice is decisive)","rule prefixes_units: branches 3 and 7 are order-dependent (shared first bytes; ordered choice is decisive)","rule prefixes_units: branches 3 and 8 are order-dependent (shared first bytes; ordered choice is decisive)","rule prefixes_units: branches 4 and 5 are order-dependent (shared first bytes; ordered choice is decisive)","rule prefixes_units: branches 4 and 6 are order-dependent (shared first bytes; ordered choice is decisive)","rule prefixes_units: branches 4 and 7 are order-dependent (shared first bytes; ordered choice is decisive)","rule prefixes_units: branches 4 and 8 are order-dependent (shared first bytes; ordered choice is decisive)","rule prefixes_units: branches 5 and 6 are order-dependent (shared first bytes; ordered choice is decisive)","rule prefixes_units: branches 5 and 7 are order-dependent (shared first bytes; ordered choice is decisive)","rule prefixes_units: branches 5 and 8 are order-dependent (shared first bytes; ordered choice is decisive)","rule prefixes_units: branches 6 and 7 are order-dependent (shared first bytes; ordered choice is decisive)","rule prefixes_units: branches 6 and 8 are order-dependent (shared first bytes; ordered choice is decisive)","rule prefixes_units: branches 7 and 8 are order-dependent (shared first bytes; ordered choice is decisive)","rule wrapper_prefixes_units_value: branches 1 and 2 are order-dependent (shared first bytes; ordered choice is decisive)","rule named_int_exp_prefixes_units: branches 1 and 2 are order-dependent (shared first bytes; ordered choice is decisive)","rule implicit_extended: branches 1 and 3 are order-dependent (shared first bytes; ordered choice is decisive)","rule implicit_extended: branches 2 and 4 are order-dependent (shared first bytes; ordered choice is decisive)","rule prefixes_units_int_exp: branches 1 and 2 are order-dependent (shared first bytes; ordered choice is decisive)","rule prefixes_units_int_exp: branches 1 and 3 are order-dependent (shared first bytes; ordered choice is decisive)","rule prefixes_units_int_exp: branches 1 and 4 are order-dependent (shared first bytes; ordered choice is decisive)","rule prefixes_units_int_exp: branches 1 and 5 are order-dependent (shared first bytes; ordered choice is decisive)","rule prefixes_units_int_exp: branches 1 and 6 are order-dependent (shared first bytes; ordered choice is decisive)","rule prefixes_units_int_exp: branches 2 and 3 are order-dependent (shared first bytes; ordered choice is decisive)","rule prefixes_units_int_exp: branches 2 and 4 are order-dependent (shared first bytes; ordered choice is decisive)","rule prefixes_units_int_exp: branches 2 and 5 are order-dependent (shared first bytes; ordered choice is decisive)","rule prefixes_units_int_exp: branches 2 and 6 are order-dependent (shared first bytes; ordered choice is decisive)","rule prefixes_units_int_exp: branches 3 and 5 are order-dependent (shared first bytes; ordered choice is decisive)","rule prefixes_units_int_exp: branches 4 and 6 are order-dependent (shared first bytes; ordered choice is decisive)","rule dimension_rules_named_exp: branches 1 and 2 are order-dependent (shared first bytes; ordered choice is decisive)","rule dimension_rules_int_exp: branches 1 and 2 are order-dependent (shared first bytes; ordered choice is decisive)","rule dimension_rules_int_exp: branches 1 and 6 are order-dependent (shared first bytes; ordered choice is decisive)","rule dimension_rules_int_exp: branches 2 and 6 are order-dependent (shared first bytes; ordered choice is decisive)","rule dimension_rules_int_exp: branches 3 and 4 are order-dependent (shared first bytes; ordered choice is decisive)","rule dimension_rules_int_exp: branches 3 and 5 are order-dependent (shared first bytes; ordered choice is decisive)","rule dimension_rules_int_exp: branches 4 and 5 are order-dependent (shared first bytes; ordered choice is decisive)","rule expression: branches 1 and 2 are order-dependent (shared first bytes; ordered choice is decisive)","rule expression: branches 1 and 3 are order-dependent (shared first bytes; ordered choice is decisive)","rule expression: branches 1 and 4 are order-dependent (shared first bytes; ordered choice is decisive)","rule expression: branches 2 and 3 are order-dependent (shared first bytes; ordered choice is decisive)","rule expression: branches 2 and 4 are order-dependent (shared first bytes; ordered choice is decisive)","rule expression: branches 3 and 4 are order-dependent (shared first bytes; ordered choice is decisive)"]},"default_entry":"expression","render":{},"derive":{},"tests":[{"entry":"expression","kind":"accept","input":"mm*s^-2","expect":{}},{"entry":"expression","kind":"accept","input":"sqrt(Hz)","expect":{}},{"entry":"expression","kind":"accept","input":"K/(kg*m)","expect":{}},{"entry":"expression","kind":"accept","input":"p-","expect":{}},{"entry":"expression","kind":"accept","input":"(m)(s)","expect":{}},{"entry":"expression","kind":"accept","input":"mm*","expect":{}},{"entry":"expression","kind":"accept","input":"sqrt(sqrt(m))","expect":{}},{"entry":"expression","kind":"reject","input":"que?","expect":{}},{"entry":"expression","kind":"reject","input":"m2","expect":{}},{"entry":"expression","kind":"reject","input":"dim_Ldim_M","expect":{}}],"docs":{},"source":"# UnitsML AsciiUnits expression grammar.\n#\n# 1:1 transcription of unitsml-ruby lib/unitsml/parse.rb +\n# lib/unitsml/intermediate_exp_rules.rb (Parslet), rule for rule, in the\n# same alternative order — PEG ordered choice makes order decisive, and the\n# quirks (trailing-extender acceptance, guard fall-through to prefixed\n# units, no power after fenced/sqrt forms) are load-bearing.\n#\n# Terminal tables are generated from UnitsDB via scripts/gen_tables.rb and\n# embedded in the artifact at compile time.\n#\n# Capture names (unit, prefix, dimension, integer, power_numerator, extender,\n# sqrt, int_exp, sequence, first_set, second_set, open_paren, close_paren)\n# mirror the Parslet .as() names so consumers can map them 1:1.\n\ngrammar UnitsmlAscii version \"0.1.0\" {\n\n ws = %x09 / %x0A / %x0B / %x0C / %x0D / %x20\n spaces = 1*ws\n lparen = \"(\"\n rparen = \")\"\n hyphen = \"-\"\n star = \"*\"\n digit = %x30-39\n forward_slashes = \"//\" / \"/\"\n extender = (forward_slashes / star) as extender\n number = [\"-\"] 1*digit\n slashed_number = (number [forward_slashes number]) as integer\n end_guard = !ANY / &(extender / lparen / rparen / spaces)\n\n unit = alt from_table \"units\" column \"name\" as unit\n single_letter_prefixes = alt from_table \"prefixes_single\" column \"name\" as prefix\n double_letter_prefixes = alt from_table \"prefixes_double\" column \"name\" as prefix\n dimensions = alt from_table \"dimensions\" column \"name\" as dimension\n\n power = \"^\" slashed_number_int_exp as power_numerator\n slashed_number_int_exp = slashed_number / (lparen slashed_number_named_int_exp as int_exp rparen)\n slashed_number_named_int_exp = (lparen slashed_number_int_exp rparen) / slashed_number_int_exp\n unit_and_power = unit [power]\n sqrt_sequence = \"sqrt\" lparen prefixes_units_int_exp as sqrt rparen\n sqrt_dimensions = \"sqrt\" lparen dimension_rules_int_exp as sqrt rparen\n extended_prefixed_units = extender [spaces] prefixes_units_int_exp as sequence\n powered_dimensions = dimensions [power]\n\n prefixes_units = (sqrt_sequence [extended_prefixed_units]) / (\"1\" as unit [extended_prefixed_units]) / (unit_and_power extended_prefixed_units) / (unit_and_power end_guard) / (double_letter_prefixes unit_and_power extended_prefixed_units) / (double_letter_prefixes unit_and_power) / (single_letter_prefixes unit_and_power extended_prefixed_units) / (single_letter_prefixes unit_and_power)\n\n wrapper_prefixes_units_value = int_exp_prefixes_units / prefixes_units_int_exp\n int_exp_prefixes_units = lparen [spaces] named_int_exp_prefixes_units as int_exp [spaces] rparen\n prefixes_units_named_int_exp = (lparen as open_paren [spaces] wrapper_prefixes_units_value as int_exp [spaces] rparen as close_paren)\n named_int_exp_prefixes_units = (prefixes_units_named_int_exp as int_exp [(prefixes_units_int_exp / extended_prefixed_units)]) / prefixes_units_int_exp\n\n implicit_extended = (prefixes_units as first_set spaces as extender prefixes_units as second_set) / (int_exp_prefixes_units as first_int_exp_set [spaces] int_exp_prefixes_units as second_int_exp_set) / (prefixes_units as first_set [spaces] int_exp_prefixes_units as second_int_exp_set) / (int_exp_prefixes_units as first_int_exp_set [spaces] prefixes_units as second_set)\n\n prefixes_units_int_exp = (implicit_extended as implicit_extended [spaces] [prefixes_units_int_exp as sequence]) / (implicit_extended as implicit_extended [spaces] extender [spaces] [prefixes_units_int_exp as sequence]) / (int_exp_prefixes_units [spaces] extender [spaces] [prefixes_units_int_exp as sequence]) / (prefixes_units [spaces] extender [spaces] [prefixes_units_int_exp as sequence]) / (int_exp_prefixes_units [prefixes_units_int_exp as sequence]) / (prefixes_units [prefixes_units_int_exp as sequence])\n\n dimension_rules = (sqrt_dimensions / powered_dimensions) [extended_dimension_rules]\n extended_dimension_rules = [spaces] extender [spaces] dimension_rules_int_exp as sequence\n int_exp_dimension_rules = lparen dimension_rules_named_exp as int_exp rparen [extended_dimension_rules]\n dimension_rules_named_exp = ((lparen as open_paren dimension_rules_int_exp as int_exp rparen as close_paren) as int_exp [spaces] (dimension_rules_int_exp / extended_dimension_rules) as sequence) / dimension_rules_int_exp\n\n dimension_rules_int_exp = (dimension_rules as first_set spaces as extender dimension_rules as second_set [dimension_rules_int_exp]) / (dimension_rules as first_set [spaces] int_exp_dimension_rules as second_int_exp_set [dimension_rules_int_exp]) / (int_exp_dimension_rules as first_int_exp_set [spaces] dimension_rules as second_set [dimension_rules_int_exp]) / (int_exp_dimension_rules as first_int_exp_set [spaces] int_exp_dimension_rules as second_int_exp_set [dimension_rules_int_exp]) / int_exp_dimension_rules / dimension_rules\n\n expression = prefixes_units_int_exp / dimension_rules_int_exp / (single_letter_prefixes hyphen) / (double_letter_prefixes hyphen)\n\n entry expression: expression\n\n test expression {\n accept \"mm*s^-2\"\n accept \"sqrt(Hz)\"\n accept \"K/(kg*m)\"\n accept \"p-\"\n accept \"(m)(s)\"\n accept \"mm*\"\n accept \"sqrt(sqrt(m))\"\n reject \"que?\"\n reject \"m2\"\n reject \"dim_Ldim_M\"\n }\n}\n","source_hash":"3fb5a2ab7d214410c5659cdef1c0b1251eb99c7d57496610f43b4fb23b5cd020","compiler_version":"1.3.108","checksum":"sha256:b1497bdaff9a9bdf5bd92e7a0354200a8dfa54f91c9cdf3c254537e95ed883cf"}
|
|
1
|
+
{"bindings":null,"version":"0.1.0","grammar":"UnitsmlAscii","shape":"parsanol-tree/v2","binding_version":1,"entries":{"expression":{"root":"expression","grammar":{"atoms":[{"Entity":{"atom":588}},{"Entity":{"atom":585}},{"Entity":{"atom":582}},{"Entity":{"atom":580}},{"Str":{"pattern":"sqrt"}},{"Entity":{"atom":6}},{"Str":{"pattern":"("}},{"Entity":{"atom":577}},{"Named":{"name":"implicit_extended","atom":1}},{"Entity":{"atom":18}},{"Entity":{"atom":17}},{"Re":{"pattern":"[\\x09]"}},{"Re":{"pattern":"[\\x0a]"}},{"Re":{"pattern":"[\\x0b]"}},{"Re":{"pattern":"[\\x0c]"}},{"Re":{"pattern":"[\\x0d]"}},{"Re":{"pattern":"[ ]"}},{"Alternative":{"atoms":[11,12,13,14,15,16]}},{"Repetition":{"atom":10,"min":1,"max":null,"tag":"Repetition"}},{"Repetition":{"atom":9,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":573}},{"Named":{"name":"sequence","atom":20}},{"Repetition":{"atom":21,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[8,19,22]}},{"Entity":{"atom":570}},{"Named":{"name":"first_set","atom":2}},{"Entity":{"atom":18}},{"Named":{"name":"extender","atom":26}},{"Entity":{"atom":546}},{"Entity":{"atom":543}},{"Entity":{"atom":38}},{"Entity":{"atom":34}},{"Str":{"pattern":"//"}},{"Str":{"pattern":"/"}},{"Alternative":{"atoms":[32,33]}},{"Entity":{"atom":36}},{"Str":{"pattern":"*"}},{"Alternative":{"atoms":[31,35]}},{"Named":{"name":"extender","atom":37}},{"Entity":{"atom":18}},{"Repetition":{"atom":39,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":541}},{"Named":{"name":"implicit_extended","atom":24}},{"Entity":{"atom":18}},{"Repetition":{"atom":43,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":38}},{"Entity":{"atom":18}},{"Repetition":{"atom":46,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":538}},{"Named":{"name":"sequence","atom":48}},{"Sequence":{"atoms":[42,44,45,47,49]}},{"Entity":{"atom":536}},{"Entity":{"atom":6}},{"Entity":{"atom":18}},{"Repetition":{"atom":53,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":534}},{"Entity":{"atom":526}},{"Entity":{"atom":6}},{"Named":{"name":"open_paren","atom":57}},{"Entity":{"atom":18}},{"Repetition":{"atom":59,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":520}},{"Entity":{"atom":68}},{"Named":{"name":"int_exp","atom":55}},{"Entity":{"atom":18}},{"Repetition":{"atom":64,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":67}},{"Str":{"pattern":")"}},{"Sequence":{"atoms":[52,54,63,65,66]}},{"Entity":{"atom":519}},{"Entity":{"atom":18}},{"Repetition":{"atom":70,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":38}},{"Entity":{"atom":18}},{"Repetition":{"atom":73,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":516}},{"Named":{"name":"sequence","atom":75}},{"Sequence":{"atoms":[51,71,72,74,76]}},{"Entity":{"atom":486}},{"Repetition":{"atom":29,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[3,79]}},{"Str":{"pattern":"1"}},{"Named":{"name":"unit","atom":81}},{"Entity":{"atom":85}},{"Named":{"name":"sequence","atom":41}},{"Sequence":{"atoms":[30,40,84]}},{"Repetition":{"atom":83,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[82,86]}},{"Entity":{"atom":402}},{"Entity":{"atom":364}},{"Str":{"pattern":"ton-force (2000 lb)"}},{"Str":{"pattern":"ton_refrigeration"}},{"Str":{"pattern":"dprime_Hg_32degF"}},{"Str":{"pattern":"dprime_Hg_60degF"}},{"Str":{"pattern":"fl oz (US label)"}},{"Str":{"pattern":"a_sidereal_year"}},{"Str":{"pattern":"a_tropical_year"}},{"Str":{"pattern":"aW (Cardelli)"}},{"Str":{"pattern":"ftH_2O_39degF"}},{"Str":{"pattern":"inH_2O_39degF"}},{"Str":{"pattern":"inH_2O_60degF"}},{"Str":{"pattern":"liq pint (US)"}},{"Str":{"pattern":"oz (US label)"}},{"Str":{"pattern":"pica_computer"}},{"Str":{"pattern":"rad_radiation"}},{"Str":{"pattern":"cmH_2O_4degC"}},{"Str":{"pattern":"ft_US_survey"}},{"Str":{"pattern":"h-bar_atomic"}},{"Str":{"pattern":"in_US_survey"}},{"Str":{"pattern":"lambda-bar_C"}},{"Str":{"pattern":"mi_US_survey"}},{"Str":{"pattern":"min_sidereal"}},{"Str":{"pattern":"pica_printer"}},{"Str":{"pattern":"yd_US_survey"}},{"Str":{"pattern":"dry pt (US)"}},{"Str":{"pattern":"dry qt (US)"}},{"Str":{"pattern":"gi_imperial"}},{"Str":{"pattern":"hp_electric"}},{"Str":{"pattern":"inHg_32degF"}},{"Str":{"pattern":"inHg_60degF"}},{"Str":{"pattern":"liq qt (US)"}},{"Str":{"pattern":"pt_computer"}},{"Str":{"pattern":"statcoulomb"}},{"Str":{"pattern":"\"Hg_32degF"}},{"Str":{"pattern":"\"Hg_60degF"}},{"Str":{"pattern":"Btu_39degF"}},{"Str":{"pattern":"Btu_59degF"}},{"Str":{"pattern":"Btu_60degF"}},{"Str":{"pattern":"cmHg_0degC"}},{"Str":{"pattern":"d_sidereal"}},{"Str":{"pattern":"dwt (troy)"}},{"Str":{"pattern":"fl oz (UK)"}},{"Str":{"pattern":"fl oz (US)"}},{"Str":{"pattern":"h-bar_eV_s"}},{"Str":{"pattern":"h_sidereal"}},{"Str":{"pattern":"m_e_atomic"}},{"Str":{"pattern":"pt_printer"}},{"Str":{"pattern":"rh_percent"}},{"Str":{"pattern":"s_sidereal"}},{"Str":{"pattern":"tbsp_label"}},{"Str":{"pattern":"cup_label"}},{"Str":{"pattern":"dprime_Hg"}},{"Str":{"pattern":"dprime_in"}},{"Str":{"pattern":"dr (avdp)"}},{"Str":{"pattern":"hp_boiler"}},{"Str":{"pattern":"hp_metric"}},{"Str":{"pattern":"prime_min"}},{"Str":{"pattern":"scr (ap.)"}},{"Str":{"pattern":"ton_short"}},{"Str":{"pattern":"tsp_label"}},{"Str":{"pattern":"Btu_mean"}},{"Str":{"pattern":"E_erlang"}},{"Str":{"pattern":"bbl (US)"}},{"Str":{"pattern":"cwt (UK)"}},{"Str":{"pattern":"cwt (US)"}},{"Str":{"pattern":"dprime_s"}},{"Str":{"pattern":"gal (UK)"}},{"Str":{"pattern":"gal (US)"}},{"Str":{"pattern":"hp_water"}},{"Str":{"pattern":"mil_nato"}},{"Str":{"pattern":"prime_Hg"}},{"Str":{"pattern":"prime_ft"}},{"Str":{"pattern":"statwatt"}},{"Str":{"pattern":"thm (EC)"}},{"Str":{"pattern":"thm (US)"}},{"Str":{"pattern":"ton_long"}},{"Str":{"pattern":"Lambert"}},{"Str":{"pattern":"bu (US)"}},{"Str":{"pattern":"lb_troy"}},{"Str":{"pattern":"oz_troy"}},{"Str":{"pattern":"pt (UK)"}},{"Str":{"pattern":"qt (UK)"}},{"Str":{"pattern":"statmho"}},{"Str":{"pattern":"statohm"}},{"Str":{"pattern":"ton_TNT"}},{"Str":{"pattern":"Btu_th"}},{"Str":{"pattern":"a_year"}},{"Str":{"pattern":"byte_B"}},{"Str":{"pattern":"cal_IT"}},{"Str":{"pattern":"cal_th"}},{"Str":{"pattern":"cmH_2O"}},{"Str":{"pattern":"dprime"}},{"Str":{"pattern":"ftH_2O"}},{"Str":{"pattern":"inH_2O"}},{"Str":{"pattern":"kayser"}},{"Str":{"pattern":"micron"}},{"Str":{"pattern":"mmH_2O"}},{"Str":{"pattern":"statWb"}},{"Str":{"pattern":"'_min"}},{"Str":{"pattern":"Aring"}},{"Str":{"pattern":"Darcy"}},{"Str":{"pattern":"abohm"}},{"Str":{"pattern":"barye"}},{"Str":{"pattern":"bel_B"}},{"Str":{"pattern":"dB_mW"}},{"Str":{"pattern":"darcy"}},{"Str":{"pattern":"fermi"}},{"Str":{"pattern":"fl dr"}},{"Str":{"pattern":"gamma"}},{"Str":{"pattern":"h-bar"}},{"Str":{"pattern":"hp_UK"}},{"Str":{"pattern":"lbmol"}},{"Str":{"pattern":"minim"}},{"Str":{"pattern":"prime"}},{"Str":{"pattern":"shake"}},{"Str":{"pattern":"statA"}},{"Str":{"pattern":"statF"}},{"Str":{"pattern":"statH"}},{"Str":{"pattern":"statT"}},{"Str":{"pattern":"statV"}},{"Str":{"pattern":"\"_in"}},{"Str":{"pattern":"'_ft"}},{"Str":{"pattern":"Hart"}},{"Str":{"pattern":"Torr"}},{"Str":{"pattern":"barn"}},{"Str":{"pattern":"cmHg"}},{"Str":{"pattern":"cmil"}},{"Str":{"pattern":"degC"}},{"Str":{"pattern":"degF"}},{"Str":{"pattern":"degK"}},{"Str":{"pattern":"degR"}},{"Str":{"pattern":"fath"}},{"Str":{"pattern":"ft.L"}},{"Str":{"pattern":"ft.c"}},{"Str":{"pattern":"ftHg"}},{"Str":{"pattern":"inHg"}},{"Str":{"pattern":"l.h."}},{"Str":{"pattern":"l.m."}},{"Str":{"pattern":"l.s."}},{"Str":{"pattern":"l.w."}},{"Str":{"pattern":"l.y."}},{"Str":{"pattern":"mmHg"}},{"Str":{"pattern":"slug"}},{"Str":{"pattern":"tbsp"}},{"Str":{"pattern":"thou"}},{"Str":{"pattern":"\"Hg"}},{"Str":{"pattern":"\"_s"}},{"Str":{"pattern":"'Hg"}},{"Str":{"pattern":"Btu"}},{"Str":{"pattern":"E_h"}},{"Str":{"pattern":"Gal"}},{"Str":{"pattern":"Ohm"}},{"Str":{"pattern":"a_0"}},{"Str":{"pattern":"abA"}},{"Str":{"pattern":"abC"}},{"Str":{"pattern":"abF"}},{"Str":{"pattern":"abH"}},{"Str":{"pattern":"abS"}},{"Str":{"pattern":"abV"}},{"Str":{"pattern":"atm"}},{"Str":{"pattern":"bar"}},{"Str":{"pattern":"bit"}},{"Str":{"pattern":"c_0"}},{"Str":{"pattern":"cal"}},{"Str":{"pattern":"cup"}},{"Str":{"pattern":"dBm"}},{"Str":{"pattern":"dec"}},{"Str":{"pattern":"deg"}},{"Str":{"pattern":"den"}},{"Str":{"pattern":"dyn"}},{"Str":{"pattern":"erg"}},{"Str":{"pattern":"fur"}},{"Str":{"pattern":"gon"}},{"Str":{"pattern":"gpm"}},{"Str":{"pattern":"kat"}},{"Str":{"pattern":"kip"}},{"Str":{"pattern":"lbf"}},{"Str":{"pattern":"lnk"}},{"Str":{"pattern":"m_e"}},{"Str":{"pattern":"mil"}},{"Str":{"pattern":"min"}},{"Str":{"pattern":"mol"}},{"Str":{"pattern":"mpg"}},{"Str":{"pattern":"oct"}},{"Str":{"pattern":"pdl"}},{"Str":{"pattern":"ppm"}},{"Str":{"pattern":"psi"}},{"Str":{"pattern":"rad"}},{"Str":{"pattern":"rem"}},{"Str":{"pattern":"rhe"}},{"Str":{"pattern":"tex"}},{"Str":{"pattern":"tsp"}},{"Str":{"pattern":"var"}},{"Str":{"pattern":"Bd"}},{"Str":{"pattern":"Bi"}},{"Str":{"pattern":"Bq"}},{"Str":{"pattern":"Ci"}},{"Str":{"pattern":"Da"}},{"Str":{"pattern":"Gi"}},{"Str":{"pattern":"Gs"}},{"Str":{"pattern":"Gy"}},{"Str":{"pattern":"Hz"}},{"Str":{"pattern":"Mx"}},{"Str":{"pattern":"Np"}},{"Str":{"pattern":"Oe"}},{"Str":{"pattern":"Pa"}},{"Str":{"pattern":"Sh"}},{"Str":{"pattern":"St"}},{"Str":{"pattern":"Sv"}},{"Str":{"pattern":"Wb"}},{"Str":{"pattern":"ac"}},{"Str":{"pattern":"as"}},{"Str":{"pattern":"at"}},{"Str":{"pattern":"cd"}},{"Str":{"pattern":"ch"}},{"Str":{"pattern":"ct"}},{"Str":{"pattern":"dr"}},{"Str":{"pattern":"eV"}},{"Str":{"pattern":"ft"}},{"Str":{"pattern":"gf"}},{"Str":{"pattern":"gi"}},{"Str":{"pattern":"gr"}},{"Str":{"pattern":"ha"}},{"Str":{"pattern":"hp"}},{"Str":{"pattern":"in"}},{"Str":{"pattern":"kn"}},{"Str":{"pattern":"kp"}},{"Str":{"pattern":"lb"}},{"Str":{"pattern":"lm"}},{"Str":{"pattern":"lx"}},{"Str":{"pattern":"mi"}},{"Str":{"pattern":"oz"}},{"Str":{"pattern":"pH"}},{"Str":{"pattern":"pc"}},{"Str":{"pattern":"ph"}},{"Str":{"pattern":"pk"}},{"Str":{"pattern":"rd"}},{"Str":{"pattern":"rh"}},{"Str":{"pattern":"sb"}},{"Str":{"pattern":"sr"}},{"Str":{"pattern":"st"}},{"Str":{"pattern":"ua"}},{"Str":{"pattern":"yd"}},{"Str":{"pattern":"\""}},{"Str":{"pattern":"'"}},{"Str":{"pattern":"A"}},{"Str":{"pattern":"C"}},{"Str":{"pattern":"D"}},{"Str":{"pattern":"F"}},{"Str":{"pattern":"G"}},{"Str":{"pattern":"H"}},{"Str":{"pattern":"J"}},{"Str":{"pattern":"K"}},{"Str":{"pattern":"L"}},{"Str":{"pattern":"M"}},{"Str":{"pattern":"N"}},{"Str":{"pattern":"P"}},{"Str":{"pattern":"R"}},{"Str":{"pattern":"S"}},{"Str":{"pattern":"T"}},{"Str":{"pattern":"V"}},{"Str":{"pattern":"W"}},{"Str":{"pattern":"a"}},{"Str":{"pattern":"c"}},{"Str":{"pattern":"d"}},{"Str":{"pattern":"e"}},{"Str":{"pattern":"g"}},{"Str":{"pattern":"h"}},{"Str":{"pattern":"l"}},{"Str":{"pattern":"m"}},{"Str":{"pattern":"s"}},{"Str":{"pattern":"t"}},{"Str":{"pattern":"u"}},{"Alternative":{"atoms":[90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362]}},{"Named":{"name":"unit","atom":363}},{"Entity":{"atom":400}},{"Str":{"pattern":"^"}},{"Entity":{"atom":398}},{"Entity":{"atom":381}},{"Entity":{"atom":375}},{"Str":{"pattern":"-"}},{"Repetition":{"atom":370,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":373}},{"Re":{"pattern":"[\\x30-\\x39]"}},{"Repetition":{"atom":372,"min":1,"max":null,"tag":"Repetition"}},{"Sequence":{"atoms":[371,374]}},{"Entity":{"atom":34}},{"Entity":{"atom":375}},{"Sequence":{"atoms":[376,377]}},{"Repetition":{"atom":378,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[369,379]}},{"Named":{"name":"integer","atom":380}},{"Entity":{"atom":6}},{"Entity":{"atom":395}},{"Entity":{"atom":6}},{"Named":{"name":"open_paren","atom":384}},{"Entity":{"atom":390}},{"Named":{"name":"int_exp","atom":383}},{"Entity":{"atom":67}},{"Sequence":{"atoms":[382,387,388]}},{"Alternative":{"atoms":[368,389]}},{"Entity":{"atom":67}},{"Named":{"name":"close_paren","atom":391}},{"Sequence":{"atoms":[385,386,392]}},{"Entity":{"atom":390}},{"Alternative":{"atoms":[393,394]}},{"Named":{"name":"int_exp","atom":383}},{"Sequence":{"atoms":[382,396,388]}},{"Alternative":{"atoms":[368,397]}},{"Named":{"name":"power_numerator","atom":367}},{"Sequence":{"atoms":[366,399]}},{"Repetition":{"atom":365,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[89,401]}},{"Entity":{"atom":85}},{"Sequence":{"atoms":[88,403]}},{"Entity":{"atom":402}},{"Entity":{"atom":415}},{"Re":{"pattern":"[\\x00-\\u{10ffff}]"}},{"Lookahead":{"atom":407,"positive":false}},{"Entity":{"atom":38}},{"Entity":{"atom":6}},{"Entity":{"atom":67}},{"Entity":{"atom":18}},{"Alternative":{"atoms":[409,410,411,412]}},{"Lookahead":{"atom":413,"positive":true}},{"Alternative":{"atoms":[408,414]}},{"Sequence":{"atoms":[405,406]}},{"Entity":{"atom":428}},{"Str":{"pattern":"Ei"}},{"Str":{"pattern":"Gi"}},{"Str":{"pattern":"Ki"}},{"Str":{"pattern":"Mi"}},{"Str":{"pattern":"Pi"}},{"Str":{"pattern":"Ti"}},{"Str":{"pattern":"Yi"}},{"Str":{"pattern":"Zi"}},{"Str":{"pattern":"da"}},{"Alternative":{"atoms":[418,419,420,421,422,423,424,425,426]}},{"Named":{"name":"prefix","atom":427}},{"Entity":{"atom":402}},{"Entity":{"atom":85}},{"Sequence":{"atoms":[417,429,430]}},{"Entity":{"atom":428}},{"Entity":{"atom":402}},{"Sequence":{"atoms":[432,433]}},{"Entity":{"atom":461}},{"Str":{"pattern":"1"}},{"Str":{"pattern":"E"}},{"Str":{"pattern":"G"}},{"Str":{"pattern":"M"}},{"Str":{"pattern":"P"}},{"Str":{"pattern":"Q"}},{"Str":{"pattern":"R"}},{"Str":{"pattern":"T"}},{"Str":{"pattern":"Y"}},{"Str":{"pattern":"Z"}},{"Str":{"pattern":"a"}},{"Str":{"pattern":"c"}},{"Str":{"pattern":"d"}},{"Str":{"pattern":"f"}},{"Str":{"pattern":"h"}},{"Str":{"pattern":"k"}},{"Str":{"pattern":"m"}},{"Str":{"pattern":"n"}},{"Str":{"pattern":"p"}},{"Str":{"pattern":"q"}},{"Str":{"pattern":"r"}},{"Str":{"pattern":"u"}},{"Str":{"pattern":"y"}},{"Str":{"pattern":"z"}},{"Alternative":{"atoms":[436,437,438,439,440,441,442,443,444,445,446,447,448,449,450,451,452,453,454,455,456,457,458,459]}},{"Named":{"name":"prefix","atom":460}},{"Entity":{"atom":402}},{"Entity":{"atom":85}},{"Sequence":{"atoms":[435,462,463]}},{"Entity":{"atom":461}},{"Entity":{"atom":402}},{"Sequence":{"atoms":[465,466]}},{"Entity":{"atom":481}},{"Str":{"pattern":"kcal_IT"}},{"Str":{"pattern":"kcal_th"}},{"Str":{"pattern":"mbar"}},{"Str":{"pattern":"cSt"}},{"Str":{"pattern":"kgf"}},{"Str":{"pattern":"uin"}},{"Str":{"pattern":"cP"}},{"Str":{"pattern":"dB"}},{"Str":{"pattern":"kg"}},{"Str":{"pattern":"mL"}},{"Str":{"pattern":"ml"}},{"Alternative":{"atoms":[469,470,471,472,473,474,475,476,477,478,479]}},{"Named":{"name":"unit","atom":480}},{"Entity":{"atom":400}},{"Repetition":{"atom":482,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":415}},{"Sequence":{"atoms":[468,483,484]}},{"Alternative":{"atoms":[80,87,404,416,431,434,464,467,485]}},{"Entity":{"atom":18}},{"Repetition":{"atom":487,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":38}},{"Entity":{"atom":18}},{"Repetition":{"atom":490,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":513}},{"Named":{"name":"sequence","atom":492}},{"Sequence":{"atoms":[78,488,489,491,493]}},{"Entity":{"atom":68}},{"Entity":{"atom":509}},{"Named":{"name":"sequence","atom":496}},{"Repetition":{"atom":497,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[495,498]}},{"Entity":{"atom":486}},{"Entity":{"atom":505}},{"Named":{"name":"sequence","atom":501}},{"Repetition":{"atom":502,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[500,503]}},{"Alternative":{"atoms":[23,50,77,494,499,504]}},{"Named":{"name":"sequence","atom":501}},{"Repetition":{"atom":506,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[500,507]}},{"Alternative":{"atoms":[23,50,77,494,499,508]}},{"Named":{"name":"sequence","atom":496}},{"Repetition":{"atom":510,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[495,511]}},{"Alternative":{"atoms":[23,50,77,494,512,508]}},{"Named":{"name":"sequence","atom":492}},{"Sequence":{"atoms":[78,488,489,491,514]}},{"Alternative":{"atoms":[23,50,77,515,512,508]}},{"Named":{"name":"sequence","atom":75}},{"Sequence":{"atoms":[51,71,72,74,517]}},{"Alternative":{"atoms":[23,50,518,515,512,508]}},{"Alternative":{"atoms":[62,69]}},{"Named":{"name":"int_exp","atom":61}},{"Entity":{"atom":18}},{"Repetition":{"atom":522,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":67}},{"Named":{"name":"close_paren","atom":524}},{"Sequence":{"atoms":[58,60,521,523,525]}},{"Named":{"name":"int_exp","atom":56}},{"Entity":{"atom":519}},{"Entity":{"atom":85}},{"Alternative":{"atoms":[528,529]}},{"Repetition":{"atom":530,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[527,531]}},{"Entity":{"atom":519}},{"Alternative":{"atoms":[532,533]}},{"Named":{"name":"int_exp","atom":55}},{"Sequence":{"atoms":[52,54,535,65,66]}},{"Sequence":{"atoms":[51,71,72,74,517]}},{"Alternative":{"atoms":[23,50,537,515,512,508]}},{"Named":{"name":"sequence","atom":48}},{"Sequence":{"atoms":[42,44,45,47,539]}},{"Alternative":{"atoms":[23,540,537,515,512,508]}},{"Named":{"name":"sequence","atom":41}},{"Sequence":{"atoms":[30,40,542]}},{"Repetition":{"atom":29,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[3,544]}},{"Alternative":{"atoms":[545,87,404,416,431,434,464,467,485]}},{"Named":{"name":"second_set","atom":28}},{"Sequence":{"atoms":[25,27,547]}},{"Entity":{"atom":536}},{"Named":{"name":"first_int_exp_set","atom":549}},{"Entity":{"atom":18}},{"Repetition":{"atom":551,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":536}},{"Named":{"name":"second_int_exp_set","atom":553}},{"Sequence":{"atoms":[550,552,554]}},{"Entity":{"atom":546}},{"Named":{"name":"first_set","atom":556}},{"Entity":{"atom":18}},{"Repetition":{"atom":558,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":536}},{"Named":{"name":"second_int_exp_set","atom":560}},{"Sequence":{"atoms":[557,559,561]}},{"Entity":{"atom":536}},{"Named":{"name":"first_int_exp_set","atom":563}},{"Entity":{"atom":18}},{"Repetition":{"atom":565,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":546}},{"Named":{"name":"second_set","atom":567}},{"Sequence":{"atoms":[564,566,568]}},{"Alternative":{"atoms":[548,555,562,569]}},{"Named":{"name":"implicit_extended","atom":24}},{"Sequence":{"atoms":[571,44,45,47,539]}},{"Alternative":{"atoms":[23,572,537,515,512,508]}},{"Named":{"name":"sequence","atom":20}},{"Repetition":{"atom":574,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[8,19,575]}},{"Alternative":{"atoms":[576,572,537,515,512,508]}},{"Named":{"name":"sqrt","atom":7}},{"Entity":{"atom":67}},{"Sequence":{"atoms":[4,5,578,579]}},{"Sequence":{"atoms":[3,544]}},{"Alternative":{"atoms":[581,87,404,416,431,434,464,467,485]}},{"Named":{"name":"first_set","atom":2}},{"Sequence":{"atoms":[583,27,547]}},{"Alternative":{"atoms":[584,555,562,569]}},{"Named":{"name":"implicit_extended","atom":1}},{"Sequence":{"atoms":[586,19,575]}},{"Alternative":{"atoms":[587,572,537,515,512,508]}},{"Entity":{"atom":715}},{"Entity":{"atom":712}},{"Entity":{"atom":710}},{"Str":{"pattern":"sqrt"}},{"Entity":{"atom":6}},{"Entity":{"atom":707}},{"Named":{"name":"first_set","atom":590}},{"Entity":{"atom":18}},{"Named":{"name":"extender","atom":596}},{"Entity":{"atom":704}},{"Entity":{"atom":613}},{"Entity":{"atom":610}},{"Str":{"pattern":"dim_Theta"}},{"Str":{"pattern":"dim_phi"}},{"Str":{"pattern":"dim_I"}},{"Str":{"pattern":"dim_J"}},{"Str":{"pattern":"dim_L"}},{"Str":{"pattern":"dim_M"}},{"Str":{"pattern":"dim_N"}},{"Str":{"pattern":"dim_T"}},{"Alternative":{"atoms":[601,602,603,604,605,606,607,608]}},{"Named":{"name":"dimension","atom":609}},{"Entity":{"atom":400}},{"Repetition":{"atom":611,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[600,612]}},{"Alternative":{"atoms":[591,599]}},{"Entity":{"atom":702}},{"Entity":{"atom":18}},{"Repetition":{"atom":616,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":38}},{"Entity":{"atom":18}},{"Repetition":{"atom":619,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":700}},{"Named":{"name":"second_set","atom":598}},{"Entity":{"atom":697}},{"Repetition":{"atom":623,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[595,597,622,624]}},{"Entity":{"atom":628}},{"Repetition":{"atom":615,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[614,627]}},{"Named":{"name":"first_set","atom":626}},{"Entity":{"atom":18}},{"Repetition":{"atom":630,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":694}},{"Entity":{"atom":6}},{"Entity":{"atom":692}},{"Entity":{"atom":6}},{"Named":{"name":"open_paren","atom":635}},{"Entity":{"atom":678}},{"Named":{"name":"second_int_exp_set","atom":632}},{"Entity":{"atom":675}},{"Repetition":{"atom":639,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[629,631,638,640]}},{"Entity":{"atom":649}},{"Named":{"name":"int_exp","atom":634}},{"Entity":{"atom":67}},{"Entity":{"atom":647}},{"Named":{"name":"sequence","atom":621}},{"Sequence":{"atoms":[617,618,620,646]}},{"Repetition":{"atom":645,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[633,643,644,648]}},{"Named":{"name":"first_int_exp_set","atom":642}},{"Entity":{"atom":18}},{"Repetition":{"atom":651,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":628}},{"Named":{"name":"second_set","atom":653}},{"Entity":{"atom":672}},{"Repetition":{"atom":655,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[650,652,654,656]}},{"Entity":{"atom":649}},{"Named":{"name":"first_int_exp_set","atom":658}},{"Entity":{"atom":18}},{"Repetition":{"atom":660,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":649}},{"Named":{"name":"second_int_exp_set","atom":662}},{"Entity":{"atom":669}},{"Repetition":{"atom":664,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[659,661,663,665]}},{"Entity":{"atom":649}},{"Entity":{"atom":628}},{"Alternative":{"atoms":[625,641,657,666,667,668]}},{"Repetition":{"atom":664,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[659,661,663,670]}},{"Alternative":{"atoms":[625,641,657,671,667,668]}},{"Repetition":{"atom":655,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[650,652,654,673]}},{"Alternative":{"atoms":[625,641,674,671,667,668]}},{"Repetition":{"atom":639,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[629,631,638,676]}},{"Alternative":{"atoms":[625,677,674,671,667,668]}},{"Named":{"name":"int_exp","atom":637}},{"Entity":{"atom":67}},{"Named":{"name":"close_paren","atom":680}},{"Sequence":{"atoms":[636,679,681]}},{"Named":{"name":"int_exp","atom":682}},{"Entity":{"atom":18}},{"Repetition":{"atom":684,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":678}},{"Entity":{"atom":647}},{"Alternative":{"atoms":[686,687]}},{"Named":{"name":"sequence","atom":688}},{"Sequence":{"atoms":[683,685,689]}},{"Entity":{"atom":678}},{"Alternative":{"atoms":[690,691]}},{"Named":{"name":"int_exp","atom":634}},{"Sequence":{"atoms":[633,693,644,648]}},{"Named":{"name":"second_int_exp_set","atom":632}},{"Sequence":{"atoms":[629,631,695,676]}},{"Alternative":{"atoms":[625,696,674,671,667,668]}},{"Repetition":{"atom":623,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[595,597,622,698]}},{"Alternative":{"atoms":[699,696,674,671,667,668]}},{"Named":{"name":"sequence","atom":621}},{"Sequence":{"atoms":[617,618,620,701]}},{"Repetition":{"atom":615,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[614,703]}},{"Named":{"name":"second_set","atom":598}},{"Sequence":{"atoms":[595,597,705,698]}},{"Alternative":{"atoms":[706,696,674,671,667,668]}},{"Named":{"name":"sqrt","atom":594}},{"Entity":{"atom":67}},{"Sequence":{"atoms":[592,593,708,709]}},{"Alternative":{"atoms":[591,599]}},{"Sequence":{"atoms":[711,703]}},{"Named":{"name":"first_set","atom":590}},{"Sequence":{"atoms":[713,597,705,698]}},{"Alternative":{"atoms":[714,696,674,671,667,668]}},{"Entity":{"atom":461}},{"Entity":{"atom":718}},{"Str":{"pattern":"-"}},{"Sequence":{"atoms":[716,717]}},{"Entity":{"atom":428}},{"Entity":{"atom":718}},{"Sequence":{"atoms":[720,721]}},{"Alternative":{"atoms":[0,589,719,722]}}],"root":723},"bindings":[]}},"preprocess":{},"tables":{"units":{"file":"units.yaml","rows":[{"name":"ton-force (2000 lb)"},{"name":"ton_refrigeration"},{"name":"dprime_Hg_32degF"},{"name":"dprime_Hg_60degF"},{"name":"fl oz (US label)"},{"name":"a_sidereal_year"},{"name":"a_tropical_year"},{"name":"aW (Cardelli)"},{"name":"ftH_2O_39degF"},{"name":"inH_2O_39degF"},{"name":"inH_2O_60degF"},{"name":"liq pint (US)"},{"name":"oz (US label)"},{"name":"pica_computer"},{"name":"rad_radiation"},{"name":"cmH_2O_4degC"},{"name":"ft_US_survey"},{"name":"h-bar_atomic"},{"name":"in_US_survey"},{"name":"lambda-bar_C"},{"name":"mi_US_survey"},{"name":"min_sidereal"},{"name":"pica_printer"},{"name":"yd_US_survey"},{"name":"dry pt (US)"},{"name":"dry qt (US)"},{"name":"gi_imperial"},{"name":"hp_electric"},{"name":"inHg_32degF"},{"name":"inHg_60degF"},{"name":"liq qt (US)"},{"name":"pt_computer"},{"name":"statcoulomb"},{"name":"\"Hg_32degF"},{"name":"\"Hg_60degF"},{"name":"Btu_39degF"},{"name":"Btu_59degF"},{"name":"Btu_60degF"},{"name":"cmHg_0degC"},{"name":"d_sidereal"},{"name":"dwt (troy)"},{"name":"fl oz (UK)"},{"name":"fl oz (US)"},{"name":"h-bar_eV_s"},{"name":"h_sidereal"},{"name":"m_e_atomic"},{"name":"pt_printer"},{"name":"rh_percent"},{"name":"s_sidereal"},{"name":"tbsp_label"},{"name":"cup_label"},{"name":"dprime_Hg"},{"name":"dprime_in"},{"name":"dr (avdp)"},{"name":"hp_boiler"},{"name":"hp_metric"},{"name":"prime_min"},{"name":"scr (ap.)"},{"name":"ton_short"},{"name":"tsp_label"},{"name":"Btu_mean"},{"name":"E_erlang"},{"name":"bbl (US)"},{"name":"cwt (UK)"},{"name":"cwt (US)"},{"name":"dprime_s"},{"name":"gal (UK)"},{"name":"gal (US)"},{"name":"hp_water"},{"name":"mil_nato"},{"name":"prime_Hg"},{"name":"prime_ft"},{"name":"statwatt"},{"name":"thm (EC)"},{"name":"thm (US)"},{"name":"ton_long"},{"name":"Lambert"},{"name":"bu (US)"},{"name":"lb_troy"},{"name":"oz_troy"},{"name":"pt (UK)"},{"name":"qt (UK)"},{"name":"statmho"},{"name":"statohm"},{"name":"ton_TNT"},{"name":"Btu_th"},{"name":"a_year"},{"name":"byte_B"},{"name":"cal_IT"},{"name":"cal_th"},{"name":"cmH_2O"},{"name":"dprime"},{"name":"ftH_2O"},{"name":"inH_2O"},{"name":"kayser"},{"name":"micron"},{"name":"mmH_2O"},{"name":"statWb"},{"name":"'_min"},{"name":"Aring"},{"name":"Darcy"},{"name":"abohm"},{"name":"barye"},{"name":"bel_B"},{"name":"dB_mW"},{"name":"darcy"},{"name":"fermi"},{"name":"fl dr"},{"name":"gamma"},{"name":"h-bar"},{"name":"hp_UK"},{"name":"lbmol"},{"name":"minim"},{"name":"prime"},{"name":"shake"},{"name":"statA"},{"name":"statF"},{"name":"statH"},{"name":"statT"},{"name":"statV"},{"name":"\"_in"},{"name":"'_ft"},{"name":"Hart"},{"name":"Torr"},{"name":"barn"},{"name":"cmHg"},{"name":"cmil"},{"name":"degC"},{"name":"degF"},{"name":"degK"},{"name":"degR"},{"name":"fath"},{"name":"ft.L"},{"name":"ft.c"},{"name":"ftHg"},{"name":"inHg"},{"name":"l.h."},{"name":"l.m."},{"name":"l.s."},{"name":"l.w."},{"name":"l.y."},{"name":"mmHg"},{"name":"slug"},{"name":"tbsp"},{"name":"thou"},{"name":"\"Hg"},{"name":"\"_s"},{"name":"'Hg"},{"name":"Btu"},{"name":"E_h"},{"name":"Gal"},{"name":"Ohm"},{"name":"a_0"},{"name":"abA"},{"name":"abC"},{"name":"abF"},{"name":"abH"},{"name":"abS"},{"name":"abV"},{"name":"atm"},{"name":"bar"},{"name":"bit"},{"name":"c_0"},{"name":"cal"},{"name":"cup"},{"name":"dBm"},{"name":"dec"},{"name":"deg"},{"name":"den"},{"name":"dyn"},{"name":"erg"},{"name":"fur"},{"name":"gon"},{"name":"gpm"},{"name":"kat"},{"name":"kip"},{"name":"lbf"},{"name":"lnk"},{"name":"m_e"},{"name":"mil"},{"name":"min"},{"name":"mol"},{"name":"mpg"},{"name":"oct"},{"name":"pdl"},{"name":"ppm"},{"name":"psi"},{"name":"rad"},{"name":"rem"},{"name":"rhe"},{"name":"tex"},{"name":"tsp"},{"name":"var"},{"name":"Bd"},{"name":"Bi"},{"name":"Bq"},{"name":"Ci"},{"name":"Da"},{"name":"Gi"},{"name":"Gs"},{"name":"Gy"},{"name":"Hz"},{"name":"Mx"},{"name":"Np"},{"name":"Oe"},{"name":"Pa"},{"name":"Sh"},{"name":"St"},{"name":"Sv"},{"name":"Wb"},{"name":"ac"},{"name":"as"},{"name":"at"},{"name":"cd"},{"name":"ch"},{"name":"ct"},{"name":"dr"},{"name":"eV"},{"name":"ft"},{"name":"gf"},{"name":"gi"},{"name":"gr"},{"name":"ha"},{"name":"hp"},{"name":"in"},{"name":"kn"},{"name":"kp"},{"name":"lb"},{"name":"lm"},{"name":"lx"},{"name":"mi"},{"name":"oz"},{"name":"pH"},{"name":"pc"},{"name":"ph"},{"name":"pk"},{"name":"rd"},{"name":"rh"},{"name":"sb"},{"name":"sr"},{"name":"st"},{"name":"ua"},{"name":"yd"},{"name":"\""},{"name":"'"},{"name":"A"},{"name":"C"},{"name":"D"},{"name":"F"},{"name":"G"},{"name":"H"},{"name":"J"},{"name":"K"},{"name":"L"},{"name":"M"},{"name":"N"},{"name":"P"},{"name":"R"},{"name":"S"},{"name":"T"},{"name":"V"},{"name":"W"},{"name":"a"},{"name":"c"},{"name":"d"},{"name":"e"},{"name":"g"},{"name":"h"},{"name":"l"},{"name":"m"},{"name":"s"},{"name":"t"},{"name":"u"}]},"dimensions":{"file":"dimensions.yaml","rows":[{"name":"dim_Theta"},{"name":"dim_phi"},{"name":"dim_I"},{"name":"dim_J"},{"name":"dim_L"},{"name":"dim_M"},{"name":"dim_N"},{"name":"dim_T"}]},"prefixes_double":{"file":"prefixes_double.yaml","rows":[{"name":"Ei"},{"name":"Gi"},{"name":"Ki"},{"name":"Mi"},{"name":"Pi"},{"name":"Ti"},{"name":"Yi"},{"name":"Zi"},{"name":"da"}]},"prefixes_single":{"file":"prefixes_single.yaml","rows":[{"name":"1"},{"name":"E"},{"name":"G"},{"name":"M"},{"name":"P"},{"name":"Q"},{"name":"R"},{"name":"T"},{"name":"Y"},{"name":"Z"},{"name":"a"},{"name":"c"},{"name":"d"},{"name":"f"},{"name":"h"},{"name":"k"},{"name":"m"},{"name":"n"},{"name":"p"},{"name":"q"},{"name":"r"},{"name":"u"},{"name":"y"},{"name":"z"}]},"prefixed_units":{"file":"prefixed_units.yaml","rows":[{"name":"kcal_IT"},{"name":"kcal_th"},{"name":"mbar"},{"name":"cSt"},{"name":"kgf"},{"name":"uin"},{"name":"cP"},{"name":"dB"},{"name":"kg"},{"name":"mL"},{"name":"ml"}]}},"lint":{"order_warnings":["rule forward_slashes: branches 1 and 2 are order-dependent (shared first bytes; ordered choice is decisive)","rule end_guard: branches 1 and 2 are order-dependent (first set not statically known)","rule slashed_number_named_int_exp: branches 1 and 2 are order-dependent (shared first bytes; ordered choice is decisive)","rule prefixes_units: branches 1 and 3 are order-dependent (shared first bytes; ordered choice is decisive)","rule prefixes_units: branches 1 and 4 are order-dependent (shared first bytes; ordered choice is decisive)","rule prefixes_units: branches 2 and 7 are order-dependent (shared first bytes; ordered choice is decisive)","rule prefixes_units: branches 2 and 8 are order-dependent (shared first bytes; ordered choice is decisive)","rule prefixes_units: branches 3 and 4 are order-dependent (shared first bytes; ordered choice is decisive)","rule prefixes_units: branches 3 and 5 are order-dependent (shared first bytes; ordered choice is decisive)","rule prefixes_units: branches 3 and 6 are order-dependent (shared first bytes; ordered choice is decisive)","rule prefixes_units: branches 3 and 7 are order-dependent (shared first bytes; ordered choice is decisive)","rule prefixes_units: branches 3 and 8 are order-dependent (shared first bytes; ordered choice is decisive)","rule prefixes_units: branches 3 and 9 are order-dependent (shared first bytes; ordered choice is decisive)","rule prefixes_units: branches 4 and 5 are order-dependent (shared first bytes; ordered choice is decisive)","rule prefixes_units: branches 4 and 6 are order-dependent (shared first bytes; ordered choice is decisive)","rule prefixes_units: branches 4 and 7 are order-dependent (shared first bytes; ordered choice is decisive)","rule prefixes_units: branches 4 and 8 are order-dependent (shared first bytes; ordered choice is decisive)","rule prefixes_units: branches 4 and 9 are order-dependent (shared first bytes; ordered choice is decisive)","rule prefixes_units: branches 5 and 6 are order-dependent (shared first bytes; ordered choice is decisive)","rule prefixes_units: branches 5 and 7 are order-dependent (shared first bytes; ordered choice is decisive)","rule prefixes_units: branches 5 and 8 are order-dependent (shared first bytes; ordered choice is decisive)","rule prefixes_units: branches 5 and 9 are order-dependent (shared first bytes; ordered choice is decisive)","rule prefixes_units: branches 6 and 7 are order-dependent (shared first bytes; ordered choice is decisive)","rule prefixes_units: branches 6 and 8 are order-dependent (shared first bytes; ordered choice is decisive)","rule prefixes_units: branches 6 and 9 are order-dependent (shared first bytes; ordered choice is decisive)","rule prefixes_units: branches 7 and 8 are order-dependent (shared first bytes; ordered choice is decisive)","rule prefixes_units: branches 7 and 9 are order-dependent (shared first bytes; ordered choice is decisive)","rule prefixes_units: branches 8 and 9 are order-dependent (shared first bytes; ordered choice is decisive)","rule wrapper_prefixes_units_value: branches 1 and 2 are order-dependent (shared first bytes; ordered choice is decisive)","rule named_int_exp_prefixes_units: branches 1 and 2 are order-dependent (shared first bytes; ordered choice is decisive)","rule implicit_extended: branches 1 and 3 are order-dependent (shared first bytes; ordered choice is decisive)","rule implicit_extended: branches 2 and 4 are order-dependent (shared first bytes; ordered choice is decisive)","rule prefixes_units_int_exp: branches 1 and 2 are order-dependent (shared first bytes; ordered choice is decisive)","rule prefixes_units_int_exp: branches 1 and 3 are order-dependent (shared first bytes; ordered choice is decisive)","rule prefixes_units_int_exp: branches 1 and 4 are order-dependent (shared first bytes; ordered choice is decisive)","rule prefixes_units_int_exp: branches 1 and 5 are order-dependent (shared first bytes; ordered choice is decisive)","rule prefixes_units_int_exp: branches 1 and 6 are order-dependent (shared first bytes; ordered choice is decisive)","rule prefixes_units_int_exp: branches 2 and 3 are order-dependent (shared first bytes; ordered choice is decisive)","rule prefixes_units_int_exp: branches 2 and 4 are order-dependent (shared first bytes; ordered choice is decisive)","rule prefixes_units_int_exp: branches 2 and 5 are order-dependent (shared first bytes; ordered choice is decisive)","rule prefixes_units_int_exp: branches 2 and 6 are order-dependent (shared first bytes; ordered choice is decisive)","rule prefixes_units_int_exp: branches 3 and 5 are order-dependent (shared first bytes; ordered choice is decisive)","rule prefixes_units_int_exp: branches 4 and 6 are order-dependent (shared first bytes; ordered choice is decisive)","rule dimension_rules_named_exp: branches 1 and 2 are order-dependent (shared first bytes; ordered choice is decisive)","rule dimension_rules_int_exp: branches 1 and 2 are order-dependent (shared first bytes; ordered choice is decisive)","rule dimension_rules_int_exp: branches 1 and 6 are order-dependent (shared first bytes; ordered choice is decisive)","rule dimension_rules_int_exp: branches 2 and 6 are order-dependent (shared first bytes; ordered choice is decisive)","rule dimension_rules_int_exp: branches 3 and 4 are order-dependent (shared first bytes; ordered choice is decisive)","rule dimension_rules_int_exp: branches 3 and 5 are order-dependent (shared first bytes; ordered choice is decisive)","rule dimension_rules_int_exp: branches 4 and 5 are order-dependent (shared first bytes; ordered choice is decisive)","rule expression: branches 1 and 2 are order-dependent (shared first bytes; ordered choice is decisive)","rule expression: branches 1 and 3 are order-dependent (shared first bytes; ordered choice is decisive)","rule expression: branches 1 and 4 are order-dependent (shared first bytes; ordered choice is decisive)","rule expression: branches 2 and 3 are order-dependent (shared first bytes; ordered choice is decisive)","rule expression: branches 2 and 4 are order-dependent (shared first bytes; ordered choice is decisive)","rule expression: branches 3 and 4 are order-dependent (shared first bytes; ordered choice is decisive)"]},"default_entry":"expression","render":{},"derive":{},"tests":[{"entry":"expression","kind":"accept","input":"mm*s^-2","expect":{}},{"entry":"expression","kind":"accept","input":"sqrt(Hz)","expect":{}},{"entry":"expression","kind":"accept","input":"K/(kg*m)","expect":{}},{"entry":"expression","kind":"accept","input":"p-","expect":{}},{"entry":"expression","kind":"accept","input":"(m)(s)","expect":{}},{"entry":"expression","kind":"accept","input":"dB","expect":{}},{"entry":"expression","kind":"accept","input":"dB^2","expect":{}},{"entry":"expression","kind":"accept","input":"mbar*s^-2","expect":{}},{"entry":"expression","kind":"accept","input":"kgf","expect":{}},{"entry":"expression","kind":"accept","input":"sqrt(sqrt(m))","expect":{}},{"entry":"expression","kind":"reject","input":"que?","expect":{}},{"entry":"expression","kind":"reject","input":"m2","expect":{}},{"entry":"expression","kind":"reject","input":"dim_Ldim_M","expect":{}},{"entry":"expression","kind":"reject","input":"mm*","expect":{}},{"entry":"expression","kind":"reject","input":"m*s/","expect":{}},{"entry":"expression","kind":"reject","input":"sqrt(m)^2","expect":{}}],"docs":{},"source":"# UnitsML AsciiUnits expression grammar.\n#\n# 1:1 transcription of unitsml-ruby lib/unitsml/parse.rb +\n# lib/unitsml/intermediate_exp_rules.rb (Parslet), rule for rule, in the\n# same alternative order — PEG ordered choice makes order decisive, and the\n# quirks (trailing-extender acceptance, guard fall-through to prefixed\n# units, no power after fenced/sqrt forms) are load-bearing.\n#\n# Terminal tables are generated from UnitsDB via scripts/gen_tables.rb and\n# embedded in the artifact at compile time.\n#\n# Capture names (unit, prefix, dimension, integer, power_numerator, extender,\n# sqrt, int_exp, sequence, first_set, second_set, open_paren, close_paren)\n# mirror the Parslet .as() names so consumers can map them 1:1.\n\ngrammar UnitsmlAscii version \"0.1.0\" {\n\n ws = %x09 / %x0A / %x0B / %x0C / %x0D / %x20\n spaces = 1*ws\n lparen = \"(\"\n rparen = \")\"\n hyphen = \"-\"\n star = \"*\"\n digit = %x30-39\n forward_slashes = \"//\" / \"/\"\n extender = (forward_slashes / star) as extender\n number = [\"-\"] 1*digit\n slashed_number = (number [forward_slashes number]) as integer\n end_guard = !ANY / &(extender / lparen / rparen / spaces)\n\n unit = alt from_table \"units\" column \"name\" as unit\n prefixed_units = alt from_table \"prefixed_units\" column \"name\" as unit\n single_letter_prefixes = alt from_table \"prefixes_single\" column \"name\" as prefix\n double_letter_prefixes = alt from_table \"prefixes_double\" column \"name\" as prefix\n dimensions = alt from_table \"dimensions\" column \"name\" as dimension\n\n power = \"^\" slashed_number_int_exp as power_numerator\n slashed_number_int_exp = slashed_number / (lparen slashed_number_named_int_exp as int_exp rparen)\n slashed_number_named_int_exp = (lparen as open_paren slashed_number_int_exp rparen as close_paren) / slashed_number_int_exp\n unit_and_power = unit [power]\n sqrt_sequence = \"sqrt\" lparen prefixes_units_int_exp as sqrt rparen\n sqrt_dimensions = \"sqrt\" lparen dimension_rules_int_exp as sqrt rparen\n extended_prefixed_units = extender [spaces] prefixes_units_int_exp as sequence\n powered_dimensions = dimensions [power]\n\n prefixes_units = (sqrt_sequence [extended_prefixed_units]) / (\"1\" as unit [extended_prefixed_units]) / (unit_and_power extended_prefixed_units) / (unit_and_power end_guard) / (double_letter_prefixes unit_and_power extended_prefixed_units) / (double_letter_prefixes unit_and_power) / (single_letter_prefixes unit_and_power extended_prefixed_units) / (single_letter_prefixes unit_and_power) / (prefixed_units [power] end_guard)\n\n wrapper_prefixes_units_value = int_exp_prefixes_units / prefixes_units_int_exp\n int_exp_prefixes_units = lparen [spaces] named_int_exp_prefixes_units as int_exp [spaces] rparen\n prefixes_units_named_int_exp = (lparen as open_paren [spaces] wrapper_prefixes_units_value as int_exp [spaces] rparen as close_paren)\n named_int_exp_prefixes_units = (prefixes_units_named_int_exp as int_exp [(prefixes_units_int_exp / extended_prefixed_units)]) / prefixes_units_int_exp\n\n implicit_extended = (prefixes_units as first_set spaces as extender prefixes_units as second_set) / (int_exp_prefixes_units as first_int_exp_set [spaces] int_exp_prefixes_units as second_int_exp_set) / (prefixes_units as first_set [spaces] int_exp_prefixes_units as second_int_exp_set) / (int_exp_prefixes_units as first_int_exp_set [spaces] prefixes_units as second_set)\n\n prefixes_units_int_exp = (implicit_extended as implicit_extended [spaces] [prefixes_units_int_exp as sequence]) / (implicit_extended as implicit_extended [spaces] extender [spaces] prefixes_units_int_exp as sequence) / (int_exp_prefixes_units [spaces] extender [spaces] prefixes_units_int_exp as sequence) / (prefixes_units [spaces] extender [spaces] prefixes_units_int_exp as sequence) / (int_exp_prefixes_units [prefixes_units_int_exp as sequence]) / (prefixes_units [prefixes_units_int_exp as sequence])\n\n dimension_rules = (sqrt_dimensions / powered_dimensions) [extended_dimension_rules]\n extended_dimension_rules = [spaces] extender [spaces] dimension_rules_int_exp as sequence\n int_exp_dimension_rules = lparen dimension_rules_named_exp as int_exp rparen [extended_dimension_rules]\n dimension_rules_named_exp = ((lparen as open_paren dimension_rules_int_exp as int_exp rparen as close_paren) as int_exp [spaces] (dimension_rules_int_exp / extended_dimension_rules) as sequence) / dimension_rules_int_exp\n\n dimension_rules_int_exp = (dimension_rules as first_set spaces as extender dimension_rules as second_set [dimension_rules_int_exp]) / (dimension_rules as first_set [spaces] int_exp_dimension_rules as second_int_exp_set [dimension_rules_int_exp]) / (int_exp_dimension_rules as first_int_exp_set [spaces] dimension_rules as second_set [dimension_rules_int_exp]) / (int_exp_dimension_rules as first_int_exp_set [spaces] int_exp_dimension_rules as second_int_exp_set [dimension_rules_int_exp]) / int_exp_dimension_rules / dimension_rules\n\n expression = prefixes_units_int_exp / dimension_rules_int_exp / (single_letter_prefixes hyphen) / (double_letter_prefixes hyphen)\n\n entry expression: expression\n\n test expression {\n accept \"mm*s^-2\"\n accept \"sqrt(Hz)\"\n accept \"K/(kg*m)\"\n accept \"p-\"\n accept \"(m)(s)\"\n accept \"dB\"\n accept \"dB^2\"\n accept \"mbar*s^-2\"\n accept \"kgf\"\n accept \"sqrt(sqrt(m))\"\n reject \"que?\"\n reject \"m2\"\n reject \"dim_Ldim_M\"\n reject \"mm*\"\n reject \"m*s/\"\n reject \"sqrt(m)^2\"\n }\n}\n","source_hash":"e9d24c02137568f4bd665c3e8769b583402b1da2e8dbd10941e801fea4f6b210","compiler_version":"1.3.108","checksum":"sha256:da65d7cb155970ca2b2492dfc464ad5407d4a3b1c951c3c60a7d2177dcaa06d9"}
|
data/corpora/unitsml/corpus.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"grammar": "unitsml",
|
|
3
|
-
"artifact_checksum": "sha256:
|
|
3
|
+
"artifact_checksum": "sha256:da65d7cb155970ca2b2492dfc464ad5407d4a3b1c951c3c60a7d2177dcaa06d9",
|
|
4
4
|
"cases": [
|
|
5
5
|
{
|
|
6
6
|
"input": "m",
|
|
@@ -1501,30 +1501,7 @@
|
|
|
1501
1501
|
},
|
|
1502
1502
|
{
|
|
1503
1503
|
"input": "mm*",
|
|
1504
|
-
"kind": "
|
|
1505
|
-
"parsanol_tree": {
|
|
1506
|
-
"prefix": {
|
|
1507
|
-
"value": "m",
|
|
1508
|
-
"offset": 0,
|
|
1509
|
-
"length": 1,
|
|
1510
|
-
"line": 1,
|
|
1511
|
-
"column": 1
|
|
1512
|
-
},
|
|
1513
|
-
"unit": {
|
|
1514
|
-
"value": "m",
|
|
1515
|
-
"offset": 1,
|
|
1516
|
-
"length": 1,
|
|
1517
|
-
"line": 1,
|
|
1518
|
-
"column": 2
|
|
1519
|
-
},
|
|
1520
|
-
"extender": {
|
|
1521
|
-
"value": "*",
|
|
1522
|
-
"offset": 2,
|
|
1523
|
-
"length": 1,
|
|
1524
|
-
"line": 1,
|
|
1525
|
-
"column": 3
|
|
1526
|
-
}
|
|
1527
|
-
}
|
|
1504
|
+
"kind": "reject"
|
|
1528
1505
|
},
|
|
1529
1506
|
{
|
|
1530
1507
|
"input": "k-",
|
|
@@ -2168,39 +2145,7 @@
|
|
|
2168
2145
|
},
|
|
2169
2146
|
{
|
|
2170
2147
|
"input": "m*s/",
|
|
2171
|
-
"kind": "
|
|
2172
|
-
"parsanol_tree": {
|
|
2173
|
-
"unit": {
|
|
2174
|
-
"value": "m",
|
|
2175
|
-
"offset": 0,
|
|
2176
|
-
"length": 1,
|
|
2177
|
-
"line": 1,
|
|
2178
|
-
"column": 1
|
|
2179
|
-
},
|
|
2180
|
-
"extender": {
|
|
2181
|
-
"value": "*",
|
|
2182
|
-
"offset": 1,
|
|
2183
|
-
"length": 1,
|
|
2184
|
-
"line": 1,
|
|
2185
|
-
"column": 2
|
|
2186
|
-
},
|
|
2187
|
-
"sequence": {
|
|
2188
|
-
"unit": {
|
|
2189
|
-
"value": "s",
|
|
2190
|
-
"offset": 2,
|
|
2191
|
-
"length": 1,
|
|
2192
|
-
"line": 1,
|
|
2193
|
-
"column": 3
|
|
2194
|
-
},
|
|
2195
|
-
"extender": {
|
|
2196
|
-
"value": "/",
|
|
2197
|
-
"offset": 3,
|
|
2198
|
-
"length": 1,
|
|
2199
|
-
"line": 1,
|
|
2200
|
-
"column": 4
|
|
2201
|
-
}
|
|
2202
|
-
}
|
|
2203
|
-
}
|
|
2148
|
+
"kind": "reject"
|
|
2204
2149
|
},
|
|
2205
2150
|
{
|
|
2206
2151
|
"input": "sqrt(sqrt(m))",
|
|
@@ -2666,6 +2611,476 @@
|
|
|
2666
2611
|
{
|
|
2667
2612
|
"input": "Sqrt(m)",
|
|
2668
2613
|
"kind": "reject"
|
|
2614
|
+
},
|
|
2615
|
+
{
|
|
2616
|
+
"input": "dB",
|
|
2617
|
+
"kind": "accept",
|
|
2618
|
+
"parsanol_tree": {
|
|
2619
|
+
"unit": {
|
|
2620
|
+
"value": "dB",
|
|
2621
|
+
"offset": 0,
|
|
2622
|
+
"length": 2,
|
|
2623
|
+
"line": 1,
|
|
2624
|
+
"column": 1
|
|
2625
|
+
}
|
|
2626
|
+
}
|
|
2627
|
+
},
|
|
2628
|
+
{
|
|
2629
|
+
"input": "dB^2",
|
|
2630
|
+
"kind": "accept",
|
|
2631
|
+
"parsanol_tree": {
|
|
2632
|
+
"unit": {
|
|
2633
|
+
"value": "dB",
|
|
2634
|
+
"offset": 0,
|
|
2635
|
+
"length": 2,
|
|
2636
|
+
"line": 1,
|
|
2637
|
+
"column": 1
|
|
2638
|
+
},
|
|
2639
|
+
"power_numerator": {
|
|
2640
|
+
"integer": {
|
|
2641
|
+
"value": "2",
|
|
2642
|
+
"offset": 3,
|
|
2643
|
+
"length": 1,
|
|
2644
|
+
"line": 1,
|
|
2645
|
+
"column": 4
|
|
2646
|
+
}
|
|
2647
|
+
}
|
|
2648
|
+
}
|
|
2649
|
+
},
|
|
2650
|
+
{
|
|
2651
|
+
"input": "dB*m",
|
|
2652
|
+
"kind": "accept",
|
|
2653
|
+
"parsanol_tree": {
|
|
2654
|
+
"unit": {
|
|
2655
|
+
"value": "dB",
|
|
2656
|
+
"offset": 0,
|
|
2657
|
+
"length": 2,
|
|
2658
|
+
"line": 1,
|
|
2659
|
+
"column": 1
|
|
2660
|
+
},
|
|
2661
|
+
"extender": {
|
|
2662
|
+
"value": "*",
|
|
2663
|
+
"offset": 2,
|
|
2664
|
+
"length": 1,
|
|
2665
|
+
"line": 1,
|
|
2666
|
+
"column": 3
|
|
2667
|
+
},
|
|
2668
|
+
"sequence": {
|
|
2669
|
+
"unit": {
|
|
2670
|
+
"value": "m",
|
|
2671
|
+
"offset": 3,
|
|
2672
|
+
"length": 1,
|
|
2673
|
+
"line": 1,
|
|
2674
|
+
"column": 4
|
|
2675
|
+
}
|
|
2676
|
+
}
|
|
2677
|
+
}
|
|
2678
|
+
},
|
|
2679
|
+
{
|
|
2680
|
+
"input": "mbar*s^-2",
|
|
2681
|
+
"kind": "accept",
|
|
2682
|
+
"parsanol_tree": {
|
|
2683
|
+
"prefix": {
|
|
2684
|
+
"value": "m",
|
|
2685
|
+
"offset": 0,
|
|
2686
|
+
"length": 1,
|
|
2687
|
+
"line": 1,
|
|
2688
|
+
"column": 1
|
|
2689
|
+
},
|
|
2690
|
+
"unit": {
|
|
2691
|
+
"value": "bar",
|
|
2692
|
+
"offset": 1,
|
|
2693
|
+
"length": 3,
|
|
2694
|
+
"line": 1,
|
|
2695
|
+
"column": 2
|
|
2696
|
+
},
|
|
2697
|
+
"extender": {
|
|
2698
|
+
"value": "*",
|
|
2699
|
+
"offset": 4,
|
|
2700
|
+
"length": 1,
|
|
2701
|
+
"line": 1,
|
|
2702
|
+
"column": 5
|
|
2703
|
+
},
|
|
2704
|
+
"sequence": {
|
|
2705
|
+
"unit": {
|
|
2706
|
+
"value": "s",
|
|
2707
|
+
"offset": 5,
|
|
2708
|
+
"length": 1,
|
|
2709
|
+
"line": 1,
|
|
2710
|
+
"column": 6
|
|
2711
|
+
},
|
|
2712
|
+
"power_numerator": {
|
|
2713
|
+
"integer": {
|
|
2714
|
+
"value": "-2",
|
|
2715
|
+
"offset": 7,
|
|
2716
|
+
"length": 2,
|
|
2717
|
+
"line": 1,
|
|
2718
|
+
"column": 8
|
|
2719
|
+
}
|
|
2720
|
+
}
|
|
2721
|
+
}
|
|
2722
|
+
}
|
|
2723
|
+
},
|
|
2724
|
+
{
|
|
2725
|
+
"input": "kgf",
|
|
2726
|
+
"kind": "accept",
|
|
2727
|
+
"parsanol_tree": {
|
|
2728
|
+
"prefix": {
|
|
2729
|
+
"value": "k",
|
|
2730
|
+
"offset": 0,
|
|
2731
|
+
"length": 1,
|
|
2732
|
+
"line": 1,
|
|
2733
|
+
"column": 1
|
|
2734
|
+
},
|
|
2735
|
+
"unit": {
|
|
2736
|
+
"value": "gf",
|
|
2737
|
+
"offset": 1,
|
|
2738
|
+
"length": 2,
|
|
2739
|
+
"line": 1,
|
|
2740
|
+
"column": 2
|
|
2741
|
+
}
|
|
2742
|
+
}
|
|
2743
|
+
},
|
|
2744
|
+
{
|
|
2745
|
+
"input": "kgf*m/s^2",
|
|
2746
|
+
"kind": "accept",
|
|
2747
|
+
"parsanol_tree": {
|
|
2748
|
+
"prefix": {
|
|
2749
|
+
"value": "k",
|
|
2750
|
+
"offset": 0,
|
|
2751
|
+
"length": 1,
|
|
2752
|
+
"line": 1,
|
|
2753
|
+
"column": 1
|
|
2754
|
+
},
|
|
2755
|
+
"unit": {
|
|
2756
|
+
"value": "gf",
|
|
2757
|
+
"offset": 1,
|
|
2758
|
+
"length": 2,
|
|
2759
|
+
"line": 1,
|
|
2760
|
+
"column": 2
|
|
2761
|
+
},
|
|
2762
|
+
"extender": {
|
|
2763
|
+
"value": "*",
|
|
2764
|
+
"offset": 3,
|
|
2765
|
+
"length": 1,
|
|
2766
|
+
"line": 1,
|
|
2767
|
+
"column": 4
|
|
2768
|
+
},
|
|
2769
|
+
"sequence": {
|
|
2770
|
+
"unit": {
|
|
2771
|
+
"value": "m",
|
|
2772
|
+
"offset": 4,
|
|
2773
|
+
"length": 1,
|
|
2774
|
+
"line": 1,
|
|
2775
|
+
"column": 5
|
|
2776
|
+
},
|
|
2777
|
+
"extender": {
|
|
2778
|
+
"value": "/",
|
|
2779
|
+
"offset": 5,
|
|
2780
|
+
"length": 1,
|
|
2781
|
+
"line": 1,
|
|
2782
|
+
"column": 6
|
|
2783
|
+
},
|
|
2784
|
+
"sequence": {
|
|
2785
|
+
"unit": {
|
|
2786
|
+
"value": "s",
|
|
2787
|
+
"offset": 6,
|
|
2788
|
+
"length": 1,
|
|
2789
|
+
"line": 1,
|
|
2790
|
+
"column": 7
|
|
2791
|
+
},
|
|
2792
|
+
"power_numerator": {
|
|
2793
|
+
"integer": {
|
|
2794
|
+
"value": "2",
|
|
2795
|
+
"offset": 8,
|
|
2796
|
+
"length": 1,
|
|
2797
|
+
"line": 1,
|
|
2798
|
+
"column": 9
|
|
2799
|
+
}
|
|
2800
|
+
}
|
|
2801
|
+
}
|
|
2802
|
+
}
|
|
2803
|
+
}
|
|
2804
|
+
},
|
|
2805
|
+
{
|
|
2806
|
+
"input": "mbar",
|
|
2807
|
+
"kind": "accept",
|
|
2808
|
+
"parsanol_tree": {
|
|
2809
|
+
"prefix": {
|
|
2810
|
+
"value": "m",
|
|
2811
|
+
"offset": 0,
|
|
2812
|
+
"length": 1,
|
|
2813
|
+
"line": 1,
|
|
2814
|
+
"column": 1
|
|
2815
|
+
},
|
|
2816
|
+
"unit": {
|
|
2817
|
+
"value": "bar",
|
|
2818
|
+
"offset": 1,
|
|
2819
|
+
"length": 3,
|
|
2820
|
+
"line": 1,
|
|
2821
|
+
"column": 2
|
|
2822
|
+
}
|
|
2823
|
+
}
|
|
2824
|
+
},
|
|
2825
|
+
{
|
|
2826
|
+
"input": "cSt",
|
|
2827
|
+
"kind": "accept",
|
|
2828
|
+
"parsanol_tree": {
|
|
2829
|
+
"prefix": {
|
|
2830
|
+
"value": "c",
|
|
2831
|
+
"offset": 0,
|
|
2832
|
+
"length": 1,
|
|
2833
|
+
"line": 1,
|
|
2834
|
+
"column": 1
|
|
2835
|
+
},
|
|
2836
|
+
"unit": {
|
|
2837
|
+
"value": "St",
|
|
2838
|
+
"offset": 1,
|
|
2839
|
+
"length": 2,
|
|
2840
|
+
"line": 1,
|
|
2841
|
+
"column": 2
|
|
2842
|
+
}
|
|
2843
|
+
}
|
|
2844
|
+
},
|
|
2845
|
+
{
|
|
2846
|
+
"input": "uin",
|
|
2847
|
+
"kind": "accept",
|
|
2848
|
+
"parsanol_tree": {
|
|
2849
|
+
"prefix": {
|
|
2850
|
+
"value": "u",
|
|
2851
|
+
"offset": 0,
|
|
2852
|
+
"length": 1,
|
|
2853
|
+
"line": 1,
|
|
2854
|
+
"column": 1
|
|
2855
|
+
},
|
|
2856
|
+
"unit": {
|
|
2857
|
+
"value": "in",
|
|
2858
|
+
"offset": 1,
|
|
2859
|
+
"length": 2,
|
|
2860
|
+
"line": 1,
|
|
2861
|
+
"column": 2
|
|
2862
|
+
}
|
|
2863
|
+
}
|
|
2864
|
+
},
|
|
2865
|
+
{
|
|
2866
|
+
"input": "mL",
|
|
2867
|
+
"kind": "accept",
|
|
2868
|
+
"parsanol_tree": {
|
|
2869
|
+
"prefix": {
|
|
2870
|
+
"value": "m",
|
|
2871
|
+
"offset": 0,
|
|
2872
|
+
"length": 1,
|
|
2873
|
+
"line": 1,
|
|
2874
|
+
"column": 1
|
|
2875
|
+
},
|
|
2876
|
+
"unit": {
|
|
2877
|
+
"value": "L",
|
|
2878
|
+
"offset": 1,
|
|
2879
|
+
"length": 1,
|
|
2880
|
+
"line": 1,
|
|
2881
|
+
"column": 2
|
|
2882
|
+
}
|
|
2883
|
+
}
|
|
2884
|
+
},
|
|
2885
|
+
{
|
|
2886
|
+
"input": "ml",
|
|
2887
|
+
"kind": "accept",
|
|
2888
|
+
"parsanol_tree": {
|
|
2889
|
+
"prefix": {
|
|
2890
|
+
"value": "m",
|
|
2891
|
+
"offset": 0,
|
|
2892
|
+
"length": 1,
|
|
2893
|
+
"line": 1,
|
|
2894
|
+
"column": 1
|
|
2895
|
+
},
|
|
2896
|
+
"unit": {
|
|
2897
|
+
"value": "l",
|
|
2898
|
+
"offset": 1,
|
|
2899
|
+
"length": 1,
|
|
2900
|
+
"line": 1,
|
|
2901
|
+
"column": 2
|
|
2902
|
+
}
|
|
2903
|
+
}
|
|
2904
|
+
},
|
|
2905
|
+
{
|
|
2906
|
+
"input": "kcal_th/cm^2",
|
|
2907
|
+
"kind": "accept",
|
|
2908
|
+
"parsanol_tree": {
|
|
2909
|
+
"prefix": {
|
|
2910
|
+
"value": "k",
|
|
2911
|
+
"offset": 0,
|
|
2912
|
+
"length": 1,
|
|
2913
|
+
"line": 1,
|
|
2914
|
+
"column": 1
|
|
2915
|
+
},
|
|
2916
|
+
"unit": {
|
|
2917
|
+
"value": "cal_th",
|
|
2918
|
+
"offset": 1,
|
|
2919
|
+
"length": 6,
|
|
2920
|
+
"line": 1,
|
|
2921
|
+
"column": 2
|
|
2922
|
+
},
|
|
2923
|
+
"extender": {
|
|
2924
|
+
"value": "/",
|
|
2925
|
+
"offset": 7,
|
|
2926
|
+
"length": 1,
|
|
2927
|
+
"line": 1,
|
|
2928
|
+
"column": 8
|
|
2929
|
+
},
|
|
2930
|
+
"sequence": {
|
|
2931
|
+
"prefix": {
|
|
2932
|
+
"value": "c",
|
|
2933
|
+
"offset": 8,
|
|
2934
|
+
"length": 1,
|
|
2935
|
+
"line": 1,
|
|
2936
|
+
"column": 9
|
|
2937
|
+
},
|
|
2938
|
+
"unit": {
|
|
2939
|
+
"value": "m",
|
|
2940
|
+
"offset": 9,
|
|
2941
|
+
"length": 1,
|
|
2942
|
+
"line": 1,
|
|
2943
|
+
"column": 10
|
|
2944
|
+
},
|
|
2945
|
+
"power_numerator": {
|
|
2946
|
+
"integer": {
|
|
2947
|
+
"value": "2",
|
|
2948
|
+
"offset": 11,
|
|
2949
|
+
"length": 1,
|
|
2950
|
+
"line": 1,
|
|
2951
|
+
"column": 12
|
|
2952
|
+
}
|
|
2953
|
+
}
|
|
2954
|
+
}
|
|
2955
|
+
}
|
|
2956
|
+
},
|
|
2957
|
+
{
|
|
2958
|
+
"input": "kcal_IT",
|
|
2959
|
+
"kind": "accept",
|
|
2960
|
+
"parsanol_tree": {
|
|
2961
|
+
"prefix": {
|
|
2962
|
+
"value": "k",
|
|
2963
|
+
"offset": 0,
|
|
2964
|
+
"length": 1,
|
|
2965
|
+
"line": 1,
|
|
2966
|
+
"column": 1
|
|
2967
|
+
},
|
|
2968
|
+
"unit": {
|
|
2969
|
+
"value": "cal_IT",
|
|
2970
|
+
"offset": 1,
|
|
2971
|
+
"length": 6,
|
|
2972
|
+
"line": 1,
|
|
2973
|
+
"column": 2
|
|
2974
|
+
}
|
|
2975
|
+
}
|
|
2976
|
+
},
|
|
2977
|
+
{
|
|
2978
|
+
"input": "cP*s^-1",
|
|
2979
|
+
"kind": "accept",
|
|
2980
|
+
"parsanol_tree": {
|
|
2981
|
+
"prefix": {
|
|
2982
|
+
"value": "c",
|
|
2983
|
+
"offset": 0,
|
|
2984
|
+
"length": 1,
|
|
2985
|
+
"line": 1,
|
|
2986
|
+
"column": 1
|
|
2987
|
+
},
|
|
2988
|
+
"unit": {
|
|
2989
|
+
"value": "P",
|
|
2990
|
+
"offset": 1,
|
|
2991
|
+
"length": 1,
|
|
2992
|
+
"line": 1,
|
|
2993
|
+
"column": 2
|
|
2994
|
+
},
|
|
2995
|
+
"extender": {
|
|
2996
|
+
"value": "*",
|
|
2997
|
+
"offset": 2,
|
|
2998
|
+
"length": 1,
|
|
2999
|
+
"line": 1,
|
|
3000
|
+
"column": 3
|
|
3001
|
+
},
|
|
3002
|
+
"sequence": {
|
|
3003
|
+
"unit": {
|
|
3004
|
+
"value": "s",
|
|
3005
|
+
"offset": 3,
|
|
3006
|
+
"length": 1,
|
|
3007
|
+
"line": 1,
|
|
3008
|
+
"column": 4
|
|
3009
|
+
},
|
|
3010
|
+
"power_numerator": {
|
|
3011
|
+
"integer": {
|
|
3012
|
+
"value": "-1",
|
|
3013
|
+
"offset": 5,
|
|
3014
|
+
"length": 2,
|
|
3015
|
+
"line": 1,
|
|
3016
|
+
"column": 6
|
|
3017
|
+
}
|
|
3018
|
+
}
|
|
3019
|
+
}
|
|
3020
|
+
}
|
|
3021
|
+
},
|
|
3022
|
+
{
|
|
3023
|
+
"input": "kg*m^(-2)",
|
|
3024
|
+
"kind": "accept",
|
|
3025
|
+
"parsanol_tree": {
|
|
3026
|
+
"prefix": {
|
|
3027
|
+
"value": "k",
|
|
3028
|
+
"offset": 0,
|
|
3029
|
+
"length": 1,
|
|
3030
|
+
"line": 1,
|
|
3031
|
+
"column": 1
|
|
3032
|
+
},
|
|
3033
|
+
"unit": {
|
|
3034
|
+
"value": "g",
|
|
3035
|
+
"offset": 1,
|
|
3036
|
+
"length": 1,
|
|
3037
|
+
"line": 1,
|
|
3038
|
+
"column": 2
|
|
3039
|
+
},
|
|
3040
|
+
"extender": {
|
|
3041
|
+
"value": "*",
|
|
3042
|
+
"offset": 2,
|
|
3043
|
+
"length": 1,
|
|
3044
|
+
"line": 1,
|
|
3045
|
+
"column": 3
|
|
3046
|
+
},
|
|
3047
|
+
"sequence": {
|
|
3048
|
+
"unit": {
|
|
3049
|
+
"value": "m",
|
|
3050
|
+
"offset": 3,
|
|
3051
|
+
"length": 1,
|
|
3052
|
+
"line": 1,
|
|
3053
|
+
"column": 4
|
|
3054
|
+
},
|
|
3055
|
+
"power_numerator": {
|
|
3056
|
+
"int_exp": {
|
|
3057
|
+
"integer": {
|
|
3058
|
+
"value": "-2",
|
|
3059
|
+
"offset": 6,
|
|
3060
|
+
"length": 2,
|
|
3061
|
+
"line": 1,
|
|
3062
|
+
"column": 7
|
|
3063
|
+
}
|
|
3064
|
+
}
|
|
3065
|
+
}
|
|
3066
|
+
}
|
|
3067
|
+
}
|
|
3068
|
+
},
|
|
3069
|
+
{
|
|
3070
|
+
"input": "dB-",
|
|
3071
|
+
"kind": "reject"
|
|
3072
|
+
},
|
|
3073
|
+
{
|
|
3074
|
+
"input": "dB/",
|
|
3075
|
+
"kind": "reject"
|
|
3076
|
+
},
|
|
3077
|
+
{
|
|
3078
|
+
"input": "db",
|
|
3079
|
+
"kind": "reject"
|
|
3080
|
+
},
|
|
3081
|
+
{
|
|
3082
|
+
"input": "Db",
|
|
3083
|
+
"kind": "reject"
|
|
2669
3084
|
}
|
|
2670
3085
|
]
|
|
2671
3086
|
}
|
|
@@ -200,7 +200,7 @@
|
|
|
200
200
|
},
|
|
201
201
|
{
|
|
202
202
|
"input": "mm*",
|
|
203
|
-
"kind": "
|
|
203
|
+
"kind": "reject"
|
|
204
204
|
},
|
|
205
205
|
{
|
|
206
206
|
"input": "k-",
|
|
@@ -280,7 +280,7 @@
|
|
|
280
280
|
},
|
|
281
281
|
{
|
|
282
282
|
"input": "m*s/",
|
|
283
|
-
"kind": "
|
|
283
|
+
"kind": "reject"
|
|
284
284
|
},
|
|
285
285
|
{
|
|
286
286
|
"input": "sqrt(sqrt(m))",
|
|
@@ -497,6 +497,82 @@
|
|
|
497
497
|
{
|
|
498
498
|
"input": "Sqrt(m)",
|
|
499
499
|
"kind": "reject"
|
|
500
|
+
},
|
|
501
|
+
{
|
|
502
|
+
"input": "dB",
|
|
503
|
+
"kind": "accept"
|
|
504
|
+
},
|
|
505
|
+
{
|
|
506
|
+
"input": "dB^2",
|
|
507
|
+
"kind": "accept"
|
|
508
|
+
},
|
|
509
|
+
{
|
|
510
|
+
"input": "dB*m",
|
|
511
|
+
"kind": "accept"
|
|
512
|
+
},
|
|
513
|
+
{
|
|
514
|
+
"input": "mbar*s^-2",
|
|
515
|
+
"kind": "accept"
|
|
516
|
+
},
|
|
517
|
+
{
|
|
518
|
+
"input": "kgf",
|
|
519
|
+
"kind": "accept"
|
|
520
|
+
},
|
|
521
|
+
{
|
|
522
|
+
"input": "kgf*m/s^2",
|
|
523
|
+
"kind": "accept"
|
|
524
|
+
},
|
|
525
|
+
{
|
|
526
|
+
"input": "mbar",
|
|
527
|
+
"kind": "accept"
|
|
528
|
+
},
|
|
529
|
+
{
|
|
530
|
+
"input": "cSt",
|
|
531
|
+
"kind": "accept"
|
|
532
|
+
},
|
|
533
|
+
{
|
|
534
|
+
"input": "uin",
|
|
535
|
+
"kind": "accept"
|
|
536
|
+
},
|
|
537
|
+
{
|
|
538
|
+
"input": "mL",
|
|
539
|
+
"kind": "accept"
|
|
540
|
+
},
|
|
541
|
+
{
|
|
542
|
+
"input": "ml",
|
|
543
|
+
"kind": "accept"
|
|
544
|
+
},
|
|
545
|
+
{
|
|
546
|
+
"input": "kcal_th/cm^2",
|
|
547
|
+
"kind": "accept"
|
|
548
|
+
},
|
|
549
|
+
{
|
|
550
|
+
"input": "kcal_IT",
|
|
551
|
+
"kind": "accept"
|
|
552
|
+
},
|
|
553
|
+
{
|
|
554
|
+
"input": "cP*s^-1",
|
|
555
|
+
"kind": "accept"
|
|
556
|
+
},
|
|
557
|
+
{
|
|
558
|
+
"input": "kg*m^(-2)",
|
|
559
|
+
"kind": "accept"
|
|
560
|
+
},
|
|
561
|
+
{
|
|
562
|
+
"input": "dB-",
|
|
563
|
+
"kind": "reject"
|
|
564
|
+
},
|
|
565
|
+
{
|
|
566
|
+
"input": "dB/",
|
|
567
|
+
"kind": "reject"
|
|
568
|
+
},
|
|
569
|
+
{
|
|
570
|
+
"input": "db",
|
|
571
|
+
"kind": "reject"
|
|
572
|
+
},
|
|
573
|
+
{
|
|
574
|
+
"input": "Db",
|
|
575
|
+
"kind": "reject"
|
|
500
576
|
}
|
|
501
577
|
]
|
|
502
578
|
}
|
data/corpora/unitsml/inputs.txt
CHANGED
|
@@ -52,7 +52,7 @@ ACCEPT ((m))
|
|
|
52
52
|
ACCEPT dim_L dim_M
|
|
53
53
|
ACCEPT (dim_L)(dim_M)
|
|
54
54
|
ACCEPT (dim_L)*dim_M
|
|
55
|
-
|
|
55
|
+
REJECT mm*
|
|
56
56
|
ACCEPT k-
|
|
57
57
|
ACCEPT da-
|
|
58
58
|
ACCEPT M-
|
|
@@ -72,7 +72,7 @@ ACCEPT sqrt(m*s^-1)
|
|
|
72
72
|
ACCEPT cm^(3)
|
|
73
73
|
ACCEPT cal_th/cm^2 h
|
|
74
74
|
ACCEPT (a_year*s^-1)
|
|
75
|
-
|
|
75
|
+
REJECT m*s/
|
|
76
76
|
ACCEPT sqrt(sqrt(m))
|
|
77
77
|
ACCEPT ton-force (2000 lb)
|
|
78
78
|
ACCEPT ton-force (2000 lb)*m
|
|
@@ -127,3 +127,22 @@ REJECT k
|
|
|
127
127
|
REJECT TON
|
|
128
128
|
REJECT SQRT(m)
|
|
129
129
|
REJECT Sqrt(m)
|
|
130
|
+
ACCEPT dB
|
|
131
|
+
ACCEPT dB^2
|
|
132
|
+
ACCEPT dB*m
|
|
133
|
+
ACCEPT mbar*s^-2
|
|
134
|
+
ACCEPT kgf
|
|
135
|
+
ACCEPT kgf*m/s^2
|
|
136
|
+
ACCEPT mbar
|
|
137
|
+
ACCEPT cSt
|
|
138
|
+
ACCEPT uin
|
|
139
|
+
ACCEPT mL
|
|
140
|
+
ACCEPT ml
|
|
141
|
+
ACCEPT kcal_th/cm^2
|
|
142
|
+
ACCEPT kcal_IT
|
|
143
|
+
ACCEPT cP*s^-1
|
|
144
|
+
ACCEPT kg*m^(-2)
|
|
145
|
+
REJECT dB-
|
|
146
|
+
REJECT dB/
|
|
147
|
+
REJECT db
|
|
148
|
+
REJECT Db
|
data/grammars/unitsml.parg
CHANGED
|
@@ -29,20 +29,21 @@ grammar UnitsmlAscii version "0.1.0" {
|
|
|
29
29
|
end_guard = !ANY / &(extender / lparen / rparen / spaces)
|
|
30
30
|
|
|
31
31
|
unit = alt from_table "units" column "name" as unit
|
|
32
|
+
prefixed_units = alt from_table "prefixed_units" column "name" as unit
|
|
32
33
|
single_letter_prefixes = alt from_table "prefixes_single" column "name" as prefix
|
|
33
34
|
double_letter_prefixes = alt from_table "prefixes_double" column "name" as prefix
|
|
34
35
|
dimensions = alt from_table "dimensions" column "name" as dimension
|
|
35
36
|
|
|
36
37
|
power = "^" slashed_number_int_exp as power_numerator
|
|
37
38
|
slashed_number_int_exp = slashed_number / (lparen slashed_number_named_int_exp as int_exp rparen)
|
|
38
|
-
slashed_number_named_int_exp = (lparen slashed_number_int_exp rparen) / slashed_number_int_exp
|
|
39
|
+
slashed_number_named_int_exp = (lparen as open_paren slashed_number_int_exp rparen as close_paren) / slashed_number_int_exp
|
|
39
40
|
unit_and_power = unit [power]
|
|
40
41
|
sqrt_sequence = "sqrt" lparen prefixes_units_int_exp as sqrt rparen
|
|
41
42
|
sqrt_dimensions = "sqrt" lparen dimension_rules_int_exp as sqrt rparen
|
|
42
43
|
extended_prefixed_units = extender [spaces] prefixes_units_int_exp as sequence
|
|
43
44
|
powered_dimensions = dimensions [power]
|
|
44
45
|
|
|
45
|
-
prefixes_units = (sqrt_sequence [extended_prefixed_units]) / ("1" as unit [extended_prefixed_units]) / (unit_and_power extended_prefixed_units) / (unit_and_power end_guard) / (double_letter_prefixes unit_and_power extended_prefixed_units) / (double_letter_prefixes unit_and_power) / (single_letter_prefixes unit_and_power extended_prefixed_units) / (single_letter_prefixes unit_and_power)
|
|
46
|
+
prefixes_units = (sqrt_sequence [extended_prefixed_units]) / ("1" as unit [extended_prefixed_units]) / (unit_and_power extended_prefixed_units) / (unit_and_power end_guard) / (double_letter_prefixes unit_and_power extended_prefixed_units) / (double_letter_prefixes unit_and_power) / (single_letter_prefixes unit_and_power extended_prefixed_units) / (single_letter_prefixes unit_and_power) / (prefixed_units [power] end_guard)
|
|
46
47
|
|
|
47
48
|
wrapper_prefixes_units_value = int_exp_prefixes_units / prefixes_units_int_exp
|
|
48
49
|
int_exp_prefixes_units = lparen [spaces] named_int_exp_prefixes_units as int_exp [spaces] rparen
|
|
@@ -51,7 +52,7 @@ grammar UnitsmlAscii version "0.1.0" {
|
|
|
51
52
|
|
|
52
53
|
implicit_extended = (prefixes_units as first_set spaces as extender prefixes_units as second_set) / (int_exp_prefixes_units as first_int_exp_set [spaces] int_exp_prefixes_units as second_int_exp_set) / (prefixes_units as first_set [spaces] int_exp_prefixes_units as second_int_exp_set) / (int_exp_prefixes_units as first_int_exp_set [spaces] prefixes_units as second_set)
|
|
53
54
|
|
|
54
|
-
prefixes_units_int_exp = (implicit_extended as implicit_extended [spaces] [prefixes_units_int_exp as sequence]) / (implicit_extended as implicit_extended [spaces] extender [spaces]
|
|
55
|
+
prefixes_units_int_exp = (implicit_extended as implicit_extended [spaces] [prefixes_units_int_exp as sequence]) / (implicit_extended as implicit_extended [spaces] extender [spaces] prefixes_units_int_exp as sequence) / (int_exp_prefixes_units [spaces] extender [spaces] prefixes_units_int_exp as sequence) / (prefixes_units [spaces] extender [spaces] prefixes_units_int_exp as sequence) / (int_exp_prefixes_units [prefixes_units_int_exp as sequence]) / (prefixes_units [prefixes_units_int_exp as sequence])
|
|
55
56
|
|
|
56
57
|
dimension_rules = (sqrt_dimensions / powered_dimensions) [extended_dimension_rules]
|
|
57
58
|
extended_dimension_rules = [spaces] extender [spaces] dimension_rules_int_exp as sequence
|
|
@@ -70,10 +71,16 @@ grammar UnitsmlAscii version "0.1.0" {
|
|
|
70
71
|
accept "K/(kg*m)"
|
|
71
72
|
accept "p-"
|
|
72
73
|
accept "(m)(s)"
|
|
73
|
-
accept "
|
|
74
|
+
accept "dB"
|
|
75
|
+
accept "dB^2"
|
|
76
|
+
accept "mbar*s^-2"
|
|
77
|
+
accept "kgf"
|
|
74
78
|
accept "sqrt(sqrt(m))"
|
|
75
79
|
reject "que?"
|
|
76
80
|
reject "m2"
|
|
77
81
|
reject "dim_Ldim_M"
|
|
82
|
+
reject "mm*"
|
|
83
|
+
reject "m*s/"
|
|
84
|
+
reject "sqrt(m)^2"
|
|
78
85
|
}
|
|
79
86
|
}
|
data/lib/asciiunits/version.rb
CHANGED
data/suites/unitsml.pgtest
CHANGED
|
@@ -16,9 +16,15 @@ suite smoke for entry expression {
|
|
|
16
16
|
accept "sqrt(sqrt(m))"
|
|
17
17
|
accept "ton-force (2000 lb)"
|
|
18
18
|
accept "dim_Theta*dim_L^2"
|
|
19
|
+
accept "dB"
|
|
20
|
+
accept "dB^2"
|
|
21
|
+
accept "mbar*s^-2"
|
|
22
|
+
accept "kgf"
|
|
19
23
|
reject "que?"
|
|
20
24
|
reject "m2"
|
|
21
25
|
reject "dim_Ldim_M"
|
|
22
26
|
reject "(cm)^3"
|
|
23
27
|
reject "sqrt(m)^2"
|
|
28
|
+
reject "mm*"
|
|
29
|
+
reject "m*s/"
|
|
24
30
|
}
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: asciiunits
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.1.
|
|
4
|
+
version: 0.1.2
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Ribose Inc.
|
|
@@ -45,6 +45,7 @@ files:
|
|
|
45
45
|
- lib/asciiunits/version.rb
|
|
46
46
|
- suites/unitsml.pgtest
|
|
47
47
|
- tables/dimensions.yaml
|
|
48
|
+
- tables/prefixed_units.yaml
|
|
48
49
|
- tables/prefixes_double.yaml
|
|
49
50
|
- tables/prefixes_single.yaml
|
|
50
51
|
- tables/units.yaml
|