# parser/literal_parser library

## Classes

- BooleanParser
- Boolean Parser, it returns a FHIR Boolean value
- DateParser
- The Date type represents date and partial date values in the range @0001-01-01 to @9999-12-31 with a 1 day step size.
- DateTimeParser
- The DateTime type represents date/time and partial date/time values in the range @0001-01-01T00:00:00.000 to @9999-12-31T23:59:59.999 with a 1 millisecond step size. This range is defined based on a survey of datetime implementations and is based on the most useful lowest common denominator. Implementations can provide support for larger ranges and higher precision, but must provide at least the range and precision defined here.
- DecimalParser
- The Decimal type represents real values in the range (-10^28+1)/10^8 to (10^28-1)/10^8 with a step size of 10^-8. Again, this is FHIRPath's official definition, we use Dart's double, which I believe is the same range as int but with 15 decimal points. FHIRPath's range is defined based on a survey of decimal-value implementations and is based on the most useful lowest common denominator. Implementations can provide support for larger decimals and higher precision, but must provide at least the range and precision defined here. In addition, implementations should use fixed-precision decimal formats to ensure that decimal values are accurately represented
- DelimitedIdentifierParser
- Identifiers are used as labels to allow expressions to reference elements such as model types and properties. FHIRPath supports two types of identifiers, simple and delimited. A delimited identifier is any sequence of characters enclosed in backticks ( ` ): The use of backticks allows identifiers to contains spaces, commas, and other characters that would not be allowed within simple identifiers. This allows identifiers to be more descriptive, and also enables expressions to reference models that have property or type names that are not valid simple identifiers.
- EnvVariableParser
- This allows the passing of a variable from the environment into the evaluation.
- IdentifierParser
- Identifiers are used as labels to allow expressions to reference elements such as model types and properties. FHIRPath supports two types of identifiers, simple and delimited. A simple identifier is any alphabetical character or an underscore, followed by any number of alpha-numeric characters or underscores
- IntegerParser
- The Integer type represents whole numbers in the range -2^31 to 2^31-1 in the FHIRPath spec, although we follow Dart's int which is +/- 2^53
- QuantityParser
- The Quantity type represents quantities with a specified unit, where the value component is defined as a Decimal, and the unit element is represented as a String that is required to be either a valid Unified Code for Units of Measure (UCUM) unit or one of the calendar duration keywords, singular or plural.
- StringParser
- The String type represents string values up to 2^31-1 characters in length. String literals are surrounded by single-quotes and may use -escapes to escape quotes and represent Unicode characters.
- TimeParser
- The Time type represents time-of-day and partial time-of-day values in the range @T00:00:00.000 to @T23:59:59.999 with a step size of 1 millisecond. This range is defined based on a survey of time implementations and is based on the most useful lowest common denominator. Implementations can provide support for higher precision, but must provide at least the range and precision defined here. Time values in FHIRPath do not have a timezone or timezone offset.
- WhiteSpaceParser
- This includes all input that should be ignored, this includes pure white space, along with comments, it simply returns whatever has been passed to it