Skip to content

Commit

Permalink
Clearer names of atoms in grammar
Browse files Browse the repository at this point in the history
  • Loading branch information
dalito committed Jan 12, 2024
1 parent b4e363e commit 9a3b619
Show file tree
Hide file tree
Showing 2 changed files with 66 additions and 58 deletions.
20 changes: 12 additions & 8 deletions src/ucumvert/parser.py
Original file line number Diff line number Diff line change
Expand Up @@ -94,20 +94,24 @@
| "(" main_term ")"
| "(" term ")"
| "(" component ")"
simple_unit: METRIC
| SHORT_PREFIX METRIC
| LONG_PREFIX METRIC
| NON_METRIC
simple_unit: UNIT_METRIC
| PREFIX_SHORT UNIT_METRIC
| PREFIX_LONG UNIT_METRIC
| UNIT_NON_METRIC
| FACTOR
ANNOTATION: "{{" STRING "}}"
STRING: /[!-z|~]*/ # ASCII chars 33-126 without curly braces
OPERATOR: "." | DIVIDE
DIVIDE: "/"
SHORT_PREFIX: {short_prefix_atoms}
LONG_PREFIX: {long_prefix_atoms}
METRIC: {metric_atoms}
NON_METRIC: {non_metric_atoms}
PREFIX_SHORT: {short_prefix_atoms}
PREFIX_LONG: {long_prefix_atoms}
UNIT_METRIC: {metric_atoms}
UNIT_NON_METRIC: {non_metric_atoms}
EXPONENT : ["+"|"-"] NON_ZERO_DIGITS
FACTOR: NON_ZERO_DIGITS
NON_ZERO_DIGITS : /[1-9][0-9]*/ # positive integers > 0
Expand Down
104 changes: 54 additions & 50 deletions src/ucumvert/ucum_grammar.lark
Original file line number Diff line number Diff line change
Expand Up @@ -15,63 +15,67 @@ main_term: DIVIDE term
| "(" main_term ")"
| "(" term ")"
| "(" component ")"
simple_unit: METRIC
| SHORT_PREFIX METRIC
| LONG_PREFIX METRIC
| NON_METRIC
simple_unit: UNIT_METRIC
| PREFIX_SHORT UNIT_METRIC
| PREFIX_LONG UNIT_METRIC
| UNIT_NON_METRIC
| FACTOR

ANNOTATION: "{" STRING "}"
STRING: /[!-z|~]*/ # ASCII chars 33-126 without curly braces

OPERATOR: "." | DIVIDE
DIVIDE: "/"
SHORT_PREFIX: "Y" |"Z" |"E" |"P" |"T" |"G" |"M" |"k" |"h" |"d" |"c" |"m" |"u"

PREFIX_SHORT: "Y" |"Z" |"E" |"P" |"T" |"G" |"M" |"k" |"h" |"d" |"c" |"m" |"u"
|"n" |"p" |"f" |"a" |"z" |"y"
LONG_PREFIX: "da" |"Ki" |"Mi" |"Gi" |"Ti"
METRIC: "m" |"s" |"g" |"rad" |"K" |"C" |"cd" |"mol" |"sr" |"Hz" |"N" |"Pa"
|"J" |"W" |"A" |"V" |"F" |"Ohm" |"S" |"Wb" |"Cel" |"T" |"H" |"lm"
|"lx" |"Bq" |"Gy" |"Sv" |"l" |"L" |"ar" |"t" |"bar" |"u" |"eV" |"pc"
|"[c]" |"[h]" |"[k]" |"[eps_0]" |"[mu_0]" |"[e]" |"[m_e]" |"[m_p]"
|"[G]" |"[g]" |"[ly]" |"gf" |"Ky" |"Gal" |"dyn" |"erg" |"P" |"Bi"
|"St" |"Mx" |"G" |"Oe" |"Gb" |"sb" |"Lmb" |"ph" |"Ci" |"R" |"RAD"
|"REM" |"cal_[15]" |"cal_[20]" |"cal_m" |"cal_IT" |"cal_th" |"cal"
|"tex" |"m[H2O]" |"m[Hg]" |"eq" |"osm" |"g%" |"kat" |"U" |"[iU]"
|"[IU]" |"Np" |"B" |"B[SPL]" |"B[V]" |"B[mV]" |"B[uV]" |"B[10.nV]"
|"B[W]" |"B[kW]" |"st" |"mho" |"bit" |"By" |"Bd"
NON_METRIC: "10*" |"10^" |"[pi]" |"%" |"[ppth]" |"[ppm]" |"[ppb]" |"[pptr]"
|"gon" |"deg" |"'" |"''" |"min" |"h" |"d" |"a_t" |"a_j" |"a_g" |"a"
|"wk" |"mo_s" |"mo_j" |"mo_g" |"mo" |"AU" |"atm" |"[lbf_av]" |"[in_i]"
|"[ft_i]" |"[yd_i]" |"[mi_i]" |"[fth_i]" |"[nmi_i]" |"[kn_i]"
|"[sin_i]" |"[sft_i]" |"[syd_i]" |"[cin_i]" |"[cft_i]" |"[cyd_i]"
|"[bf_i]" |"[cr_i]" |"[mil_i]" |"[cml_i]" |"[hd_i]" |"[ft_us]"
|"[yd_us]" |"[in_us]" |"[rd_us]" |"[ch_us]" |"[lk_us]" |"[rch_us]"
|"[rlk_us]" |"[fth_us]" |"[fur_us]" |"[mi_us]" |"[acr_us]" |"[srd_us]"
|"[smi_us]" |"[sct]" |"[twp]" |"[mil_us]" |"[in_br]" |"[ft_br]"
|"[rd_br]" |"[ch_br]" |"[lk_br]" |"[fth_br]" |"[pc_br]" |"[yd_br]"
|"[mi_br]" |"[nmi_br]" |"[kn_br]" |"[acr_br]" |"[gal_us]" |"[bbl_us]"
|"[qt_us]" |"[pt_us]" |"[gil_us]" |"[foz_us]" |"[fdr_us]" |"[min_us]"
|"[crd_us]" |"[bu_us]" |"[gal_wi]" |"[pk_us]" |"[dqt_us]" |"[dpt_us]"
|"[tbs_us]" |"[tsp_us]" |"[cup_us]" |"[foz_m]" |"[cup_m]" |"[tsp_m]"
|"[tbs_m]" |"[gal_br]" |"[pk_br]" |"[bu_br]" |"[qt_br]" |"[pt_br]"
|"[gil_br]" |"[foz_br]" |"[fdr_br]" |"[min_br]" |"[gr]" |"[lb_av]"
|"[oz_av]" |"[dr_av]" |"[scwt_av]" |"[lcwt_av]" |"[ston_av]"
|"[lton_av]" |"[stone_av]" |"[pwt_tr]" |"[oz_tr]" |"[lb_tr]"
|"[sc_ap]" |"[dr_ap]" |"[oz_ap]" |"[lb_ap]" |"[oz_m]" |"[lne]"
|"[pnt]" |"[pca]" |"[pnt_pr]" |"[pca_pr]" |"[pied]" |"[pouce]"
|"[ligne]" |"[didot]" |"[cicero]" |"[degF]" |"[degR]" |"[degRe]"
|"[Cal]" |"[Btu_39]" |"[Btu_59]" |"[Btu_60]" |"[Btu_m]" |"[Btu_IT]"
|"[Btu_th]" |"[Btu]" |"[HP]" |"[den]" |"[in_i'H2O]" |"[in_i'Hg]"
|"[PRU]" |"[wood'U]" |"[diop]" |"[p'diop]" |"%[slope]" |"[mesh_i]"
|"[Ch]" |"[drp]" |"[hnsf'U]" |"[MET]" |"[hp'_X]" |"[hp'_C]" |"[hp'_M]"
|"[hp'_Q]" |"[hp_X]" |"[hp_C]" |"[hp_M]" |"[hp_Q]" |"[kp_X]" |"[kp_C]"
|"[kp_M]" |"[kp_Q]" |"[pH]" |"[S]" |"[HPF]" |"[LPF]" |"[arb'U]"
|"[USP'U]" |"[GPL'U]" |"[MPL'U]" |"[APL'U]" |"[beth'U]" |"[anti'Xa'U]"
|"[todd'U]" |"[dye'U]" |"[smgy'U]" |"[bdsk'U]" |"[ka'U]" |"[knk'U]"
|"[mclg'U]" |"[tb'U]" |"[CCID_50]" |"[TCID_50]" |"[EID_50]" |"[PFU]"
|"[FFU]" |"[CFU]" |"[IR]" |"[BAU]" |"[AU]" |"[Amb'a'1'U]" |"[PNU]"
|"[Lf]" |"[D'ag'U]" |"[FEU]" |"[ELU]" |"[EU]" |"Ao" |"b" |"att"
|"[psi]" |"circ" |"sph" |"[car_m]" |"[car_Au]" |"[smoot]"
|"[m/s2/Hz^(1/2)]" |"bit_s"
PREFIX_LONG: "da" |"Ki" |"Mi" |"Gi" |"Ti"

UNIT_METRIC: "m" |"s" |"g" |"rad" |"K" |"C" |"cd" |"mol" |"sr" |"Hz" |"N"
|"Pa" |"J" |"W" |"A" |"V" |"F" |"Ohm" |"S" |"Wb" |"Cel" |"T" |"H"
|"lm" |"lx" |"Bq" |"Gy" |"Sv" |"l" |"L" |"ar" |"t" |"bar" |"u" |"eV"
|"pc" |"[c]" |"[h]" |"[k]" |"[eps_0]" |"[mu_0]" |"[e]" |"[m_e]"
|"[m_p]" |"[G]" |"[g]" |"[ly]" |"gf" |"Ky" |"Gal" |"dyn" |"erg" |"P"
|"Bi" |"St" |"Mx" |"G" |"Oe" |"Gb" |"sb" |"Lmb" |"ph" |"Ci" |"R"
|"RAD" |"REM" |"cal_[15]" |"cal_[20]" |"cal_m" |"cal_IT" |"cal_th"
|"cal" |"tex" |"m[H2O]" |"m[Hg]" |"eq" |"osm" |"g%" |"kat" |"U"
|"[iU]" |"[IU]" |"Np" |"B" |"B[SPL]" |"B[V]" |"B[mV]" |"B[uV]"
|"B[10.nV]" |"B[W]" |"B[kW]" |"st" |"mho" |"bit" |"By" |"Bd"
UNIT_NON_METRIC: "10*" |"10^" |"[pi]" |"%" |"[ppth]" |"[ppm]" |"[ppb]"
|"[pptr]" |"gon" |"deg" |"'" |"''" |"min" |"h" |"d" |"a_t" |"a_j"
|"a_g" |"a" |"wk" |"mo_s" |"mo_j" |"mo_g" |"mo" |"AU" |"atm"
|"[lbf_av]" |"[in_i]" |"[ft_i]" |"[yd_i]" |"[mi_i]" |"[fth_i]"
|"[nmi_i]" |"[kn_i]" |"[sin_i]" |"[sft_i]" |"[syd_i]" |"[cin_i]"
|"[cft_i]" |"[cyd_i]" |"[bf_i]" |"[cr_i]" |"[mil_i]" |"[cml_i]"
|"[hd_i]" |"[ft_us]" |"[yd_us]" |"[in_us]" |"[rd_us]" |"[ch_us]"
|"[lk_us]" |"[rch_us]" |"[rlk_us]" |"[fth_us]" |"[fur_us]" |"[mi_us]"
|"[acr_us]" |"[srd_us]" |"[smi_us]" |"[sct]" |"[twp]" |"[mil_us]"
|"[in_br]" |"[ft_br]" |"[rd_br]" |"[ch_br]" |"[lk_br]" |"[fth_br]"
|"[pc_br]" |"[yd_br]" |"[mi_br]" |"[nmi_br]" |"[kn_br]" |"[acr_br]"
|"[gal_us]" |"[bbl_us]" |"[qt_us]" |"[pt_us]" |"[gil_us]" |"[foz_us]"
|"[fdr_us]" |"[min_us]" |"[crd_us]" |"[bu_us]" |"[gal_wi]" |"[pk_us]"
|"[dqt_us]" |"[dpt_us]" |"[tbs_us]" |"[tsp_us]" |"[cup_us]" |"[foz_m]"
|"[cup_m]" |"[tsp_m]" |"[tbs_m]" |"[gal_br]" |"[pk_br]" |"[bu_br]"
|"[qt_br]" |"[pt_br]" |"[gil_br]" |"[foz_br]" |"[fdr_br]" |"[min_br]"
|"[gr]" |"[lb_av]" |"[oz_av]" |"[dr_av]" |"[scwt_av]" |"[lcwt_av]"
|"[ston_av]" |"[lton_av]" |"[stone_av]" |"[pwt_tr]" |"[oz_tr]"
|"[lb_tr]" |"[sc_ap]" |"[dr_ap]" |"[oz_ap]" |"[lb_ap]" |"[oz_m]"
|"[lne]" |"[pnt]" |"[pca]" |"[pnt_pr]" |"[pca_pr]" |"[pied]"
|"[pouce]" |"[ligne]" |"[didot]" |"[cicero]" |"[degF]" |"[degR]"
|"[degRe]" |"[Cal]" |"[Btu_39]" |"[Btu_59]" |"[Btu_60]" |"[Btu_m]"
|"[Btu_IT]" |"[Btu_th]" |"[Btu]" |"[HP]" |"[den]" |"[in_i'H2O]"
|"[in_i'Hg]" |"[PRU]" |"[wood'U]" |"[diop]" |"[p'diop]" |"%[slope]"
|"[mesh_i]" |"[Ch]" |"[drp]" |"[hnsf'U]" |"[MET]" |"[hp'_X]"
|"[hp'_C]" |"[hp'_M]" |"[hp'_Q]" |"[hp_X]" |"[hp_C]" |"[hp_M]"
|"[hp_Q]" |"[kp_X]" |"[kp_C]" |"[kp_M]" |"[kp_Q]" |"[pH]" |"[S]"
|"[HPF]" |"[LPF]" |"[arb'U]" |"[USP'U]" |"[GPL'U]" |"[MPL'U]"
|"[APL'U]" |"[beth'U]" |"[anti'Xa'U]" |"[todd'U]" |"[dye'U]"
|"[smgy'U]" |"[bdsk'U]" |"[ka'U]" |"[knk'U]" |"[mclg'U]" |"[tb'U]"
|"[CCID_50]" |"[TCID_50]" |"[EID_50]" |"[PFU]" |"[FFU]" |"[CFU]"
|"[IR]" |"[BAU]" |"[AU]" |"[Amb'a'1'U]" |"[PNU]" |"[Lf]" |"[D'ag'U]"
|"[FEU]" |"[ELU]" |"[EU]" |"Ao" |"b" |"att" |"[psi]" |"circ" |"sph"
|"[car_m]" |"[car_Au]" |"[smoot]" |"[m/s2/Hz^(1/2)]" |"bit_s"

EXPONENT : ["+"|"-"] NON_ZERO_DIGITS
FACTOR: NON_ZERO_DIGITS
NON_ZERO_DIGITS : /[1-9][0-9]*/ # positive integers > 0

0 comments on commit 9a3b619

Please sign in to comment.