The inherent type is the bottom-up type.
The inherent type is the bottom-up type. That is, the type that is determined by examining the expression, or in attribute-grammar speak, the synthetic type.
For "foo" it is string, for 5.0 it is double, and for 5 it is integer. For an identifier such as b in /a/b, it is the simple type of the element declaration for b.
The inherent type can be a complex type, as in the foo in /foo/bar. That is why this is not the same system of type-kind values as the xsdTargetType
Override where we traverse/access elements.
Override where we traverse/access elements.
Convert to regular types from the pessimistic BigInt and BigDecimal that come in from the parser.
TODO: get more precise line and column information for pointing at sub-regions of large DPath expressions
TODO: get more precise line and column information for pointing at sub-regions of large DPath expressions
We're parsing them, so we should have access to specific locations within the expression.
The target type is defined for simple types.
The target type is defined for simple types. It gives the type that the expression must return. It is the type that the context is expecting or in attribute-grammar terms, the inherited type.
For inputValueCalc, this is the type of the element carrying that property.
For setVariable and newVariableInstance, it is the type of the variable.
For dfdl:length and dfdl:occursCount it is UnsignedInt
For the test properties of assert/discriminator it is Boolean
For the following properties, when their value is an expression the xsdTargetType is NonEmptyString byteOrder, encoding, outputNewLine, escapeCharacter, escapeEscapeCharacter, initiator, terminator, separator, textStandardDecimalSeparator, textStandardGroupingSeparator, textStandardExponentRep, binaryFloatRep, textBooleanFalseRep, textBooleanTrueRep