public class EBNFUnitFormat extends AbstractUnitFormat
This class represents the local neutral format.
Note that the grammar has been left-factored to be suitable for use by a top-down parser generator such as JavaCC
Lexical Entities: | ||
---|---|---|
<sign> | := | "+" | "-" |
<digit> | := | "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" |
<superscript_digit> | := | "⁰" | "¹" | "²" | "³" | "⁴" | "⁵" | "⁶" | "⁷" | "⁸" | "⁹" |
<integer> | := | (<digit>)+ |
<number> | := | (<sign>)? (<digit>)* (".")? (<digit>)+ (("e" | "E") (<sign>)? (<digit>)+)? |
<exponent> | := | ( "^" ( <sign> )? <integer> ) | ( "^(" (<sign>)? <integer> ( "/" (<sign>)? <integer> )? ")" ) | ( <superscript_digit> )+ |
<initial_char> | := | ? Any Unicode character excluding the following: ASCII control & whitespace (\u0000 - \u0020), decimal digits '0'-'9', '(' (\u0028), ')' (\u0029), '*' (\u002A), '+' (\u002B), '-' (\u002D), '.' (\u002E), '/' (\u005C), ':' (\u003A), '^' (\u005E), '²' (\u00B2), '³' (\u00B3), '·' (\u00B7), '¹' (\u00B9), '⁰' (\u2070), '⁴' (\u2074), '⁵' (\u2075), '⁶' (\u2076), '⁷' (\u2077), '⁸' (\u2078), '⁹' (\u2079) ? |
<unit_identifier> | := | <initial_char> ( <initial_char> | <digit> )* |
Non-Terminals: | ||
<unit_expr> | := | <compound_expr> |
<compound_expr> | := | <add_expr> ( ":" <add_expr> )* |
<add_expr> | := | ( <number> <sign> )? <mul_expr> ( <sign> <number> )? |
<mul_expr> | := | <exponent_expr> ( ( ( "*" | "·" ) <exponent_expr> ) | ( "/" <exponent_expr> ) )* |
<exponent_expr> | := | ( <atomic_expr> ( <exponent> )? ) | (<integer> "^" <atomic_expr>) | ( ( "log" ( <integer> )? ) | "ln" ) "(" <add_expr> ")" ) |
<atomic_expr> | := | <number> | <unit_identifier> | ( "(" <add_expr> ")" ) |
Modifier and Type | Method and Description |
---|---|
Appendable |
format(javax.measure.Unit<?> unit,
Appendable appendable)
Formats the specified unit.
|
static EBNFUnitFormat |
getInstance()
Returns the instance for the current default locale (non-ascii characters are allowed)
|
static EBNFUnitFormat |
getInstance(SymbolMap symbols)
Returns an instance for the given symbol map.
|
protected SymbolMap |
getSymbols()
Get the symbol map used by this instance to map between
Unit s and String s, etc... |
boolean |
isLocaleSensitive() |
javax.measure.Unit<?> |
parse(CharSequence csq) |
protected javax.measure.Unit<?> |
parse(CharSequence csq,
int index)
Parses a portion of the specified
CharSequence from the specified position to produce a unit. |
protected javax.measure.Unit<?> |
parse(CharSequence csq,
ParsePosition cursor)
Parses a portion of the specified
CharSequence from the specified position to produce a unit. |
format, label
public static EBNFUnitFormat getInstance()
public static EBNFUnitFormat getInstance(SymbolMap symbols)
protected SymbolMap getSymbols()
Unit
s and String
s, etc...getSymbols
in class AbstractUnitFormat
public Appendable format(javax.measure.Unit<?> unit, Appendable appendable) throws IOException
AbstractUnitFormat
format
in interface javax.measure.format.UnitFormat
format
in class AbstractUnitFormat
unit
- the unit to format.appendable
- the appendable destination.appendable
, with formatted text appended.IOException
- if an error occurs.public boolean isLocaleSensitive()
protected javax.measure.Unit<?> parse(CharSequence csq, int index) throws IllegalArgumentException
AbstractUnitFormat
CharSequence
from the specified position to produce a unit. If there is no unit to parse
AbstractUnit.ONE
is returned.parse
in class AbstractUnitFormat
csq
- the CharSequence
to parse.index
- the current parsing index.IllegalArgumentException
- if any problem occurs while parsing the specified character sequence (e.g. illegal syntax).public javax.measure.Unit<?> parse(CharSequence csq) throws javax.measure.format.ParserException
javax.measure.format.ParserException
protected javax.measure.Unit<?> parse(CharSequence csq, ParsePosition cursor) throws IllegalArgumentException
AbstractUnitFormat
CharSequence
from the specified position to produce a unit. If there is no unit to parse
AbstractUnit.ONE
is returned.parse
in class AbstractUnitFormat
csq
- the CharSequence
to parse.cursor
- the cursor holding the current parsing index.IllegalArgumentException
- if any problem occurs while parsing the specified character sequence (e.g. illegal syntax).Copyright © 2005–2017 Units of Measurement project. All rights reserved.