NumberFragment
FragmentA numeric literal. Leading signs and trailing unit suffixes are not part of a number; they are separate fragments, because neither can be classified without knowing the grammar.
Properties
Defect
Gets a description of what is wrong with this fragment, or null when no problem exists.
Fractional
#Gets the value of this literal. Always populated and always safe to read. A double carries 53 bits of mantissa, so for digit runs beyond sixteen digits this is the nearest representable value rather than the exact one; Integral is exact whenever IsIntegral is true.
IsFractional
#Gets whether this literal was written as something other than a plain digit run, and must therefore be read through Fractional.
IsIntegral
#Gets whether Integral is the complete truth of this literal. This is a question about how the number was written rather than about its value, so "4.0" is not integral even though four is a whole number.
inherited fromFragment
NextMeaningful
Gets the following fragment, skipping whitespace and single line comments. Line breaks and multi line comments are boundaries rather than trivia, and are returned rather than skipped.
inherited fromFragment
PrevMeaningful
Gets the preceding fragment, skipping whitespace and single line comments. Line breaks and multi line comments are boundaries rather than trivia, and are returned rather than skipped.
SignificantDecimals
#Gets the number of digits written between the decimal separator and the end of the mantissa. This is a purely lexical count, which is what makes "0.0" distinguishable from "0.000". Digit group underscores are not counted, and a literal without a separator has a scale of zero.
Start
Gets the index of the first character of this fragment within Fragments.Source. This index is absolute, and remains valid in every view derived from the original collection.
Methods
IsAdjacentTo
Gets whether this fragment is directly adjacent to the given one, with no intervening characters. Used to match multi character operators.
Parameters:
| other (Fragment) |
IsAll
Tests whether this fragment matches all of the provided filter kinds. Note: this fragment may have additional kinds not covered by the filter, if you want an exact match, just compare against Fragment.Kind.
Parameters:
| filter (params FragmentKind[]) |
IsAny
Tests whether this fragment is any of the provided filter kinds.
Parameters:
| filter (params FragmentKind[]) |
ToString
Gets a description of this fragment, for debugging purposes.
Overrides: Object.ToString