Class Parser
- java.lang.Object
-
- org.orekit.utils.units.Parser
-
public class Parser extends Object
Parser for units.This fairly basic parser uses recursive descent with the following grammar, where '*' can in fact be either '*', '×', '.', or '·', '/' can be either '/' or '⁄' and '^' can be either '^', "**" or implicit with switch to superscripts, and fraction are either unicode fractions like ½ or ⅞ or the decimal value 0.5. The special cases "n/a" returns a null list. It is intended to manage the special unit
Unit.NONE
.unit ::= "n/a" | chain chain ::= operand { ('*' | '/') operand } operand ::= integer | integer term | term term ::= '√' base | base power power ::= '^' exponent | ε exponent ::= 'fraction' | integer | '(' integer denominator ')' denominator ::= '/' integer | ε base ::= identifier | '(' chain ')'
This parses correctly units like MHz, km/√d, kg.m.s⁻¹, µas^⅖/(h**(2)×m)³, km/√(kg.s), √kg*km** (3/2) /(µs^2*Ω⁻⁷), km**0.5/s, #/y, 2rev/d², 1/s.
Note that we don't accept combining square roots and power on the same operand; km/√d³ is refused (but km/√(d³) is accepted). We also accept a single integer prefix and only at the start of the specification.
- Since:
- 11.0
- Author:
- Luc Maisonobe
-
-
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method Description static List<PowerTerm>
buildTermsList(String unitsSpecification)
Build the list of terms corresponding to a units specification.
-