Class EBNFUnitFormat
java.lang.Object
tech.units.indriya.format.AbstractUnitFormat
tech.units.indriya.format.EBNFUnitFormat
- All Implemented Interfaces:
javax.measure.format.UnitFormat
This class represents the local neutral format.
Here is the grammar for Units in Extended Backus-Naur Form (EBNF)
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 invalid input: '&' 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> ")" ) |
- Since:
- 1.0
- Version:
- 1.1, $Date: 2018-04-05 $
- Author:
- Eric Russell, Werner Keil
-
Method Summary
Modifier and TypeMethodDescriptionformat(javax.measure.Unit<?> unit, Appendable appendable) Formats the specified unit.static EBNFUnitFormatReturns the instance for the current default locale (non-ascii characters are allowed)static EBNFUnitFormatgetInstance(SymbolMap symbols) Returns an instance for the given symbol map.protected SymbolMapGet the symbol map used by this instance to map betweens andinvalid reference
UnitStrings, etc...booleanjavax.measure.Unit<?> parse(CharSequence csq) protected javax.measure.Unit<?> parse(CharSequence csq, int index) Parses a portion of the specifiedCharSequencefrom the specified position to produce a unit.protected javax.measure.Unit<? extends javax.measure.Quantity<?>> parse(CharSequence csq, ParsePosition cursor) Parses a portion of the specifiedCharSequencefrom the specified position to produce a unit.Methods inherited from class AbstractUnitFormat
format, label
-
Method Details
-
getInstance
Returns the instance for the current default locale (non-ascii characters are allowed) -
getInstance
Returns an instance for the given symbol map. -
getSymbols
Get the symbol map used by this instance to map betweens andinvalid reference
UnitStrings, etc...- Specified by:
getSymbolsin classAbstractUnitFormat- Returns:
- SymbolMap the current symbol map
-
format
Description copied from class:AbstractUnitFormatFormats the specified unit.- Specified by:
formatin interfacejavax.measure.format.UnitFormat- Specified by:
formatin classAbstractUnitFormat- Parameters:
unit- the unit to format.appendable- the appendable destination.- Returns:
- The appendable destination passed in as
appendable, with formatted text appended. - Throws:
IOException- if an error occurs.
-
parse
protected javax.measure.Unit<? extends javax.measure.Quantity<?>> parse(CharSequence csq, ParsePosition cursor) throws javax.measure.format.ParserException Description copied from class:AbstractUnitFormatParses a portion of the specifiedCharSequencefrom the specified position to produce a unit. If there is no unit to parseAbstractUnit.ONEis returned.- Specified by:
parsein classAbstractUnitFormat- Parameters:
csq- theCharSequenceto parse.cursor- the cursor holding the current parsing index.- Returns:
- the unit parsed from the specified character sub-sequence.
- Throws:
javax.measure.format.ParserException
-
parse
Description copied from class:AbstractUnitFormatParses a portion of the specifiedCharSequencefrom the specified position to produce a unit. If there is no unit to parseAbstractUnit.ONEis returned.- Specified by:
parsein classAbstractUnitFormat- Parameters:
csq- theCharSequenceto parse.index- the current parsing index.- Returns:
- the unit parsed from the specified character sub-sequence.
- Throws:
IllegalArgumentException- if any problem occurs while parsing the specified character sequence (e.g. illegal syntax).
-
parse
- Throws:
javax.measure.format.ParserException
-
isLocaleSensitive
-