public class Parser extends Object
这个相当基本的解析器使用递归下降法,遵循以下语法规则,其中'*'实际上可以是'*'、'×'、'.'或'·','/'可以是'/'或'⁄','^'可以是'^'、"**"或隐式转换为上标,分数可以是像½或⅞这样的Unicode分数,也可以是十进制值0.5。特殊情况“n/a”返回一个空列表。它旨在管理特殊单位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 ')'
这正确解析单位,如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。
请注意,我们不接受在同一操作数上组合平方根和幂;km/√d³会被拒绝(但km/√(d³)会被接受)。我们还接受单个整数前缀,且仅在规范的开头。
Modifier and Type | Method and Description |
---|---|
static List<PowerTerm> |
buildTermsList(String unitsSpecification)
构建与单位规范对应的术语列表。
|
Copyright © 2002-2023 CS GROUP. All rights reserved.