COMPLEX
, LONGCOMPLEX
The EBNF for the textual representation of values of types that represent complex numbers is
complexNumberValue : compactNotation | expandedNotation | pairNotation ; complexNumberValueList : complexNumberValue ( listSeparator complexNumberValue )* ; listSeparator : defaultListSeparator | userDefinedListSeparator | newline ; defaultListSeparator : defaultListSeparatorForValuesWithCommas | defaultListSeparatorForValuesWithoutCommas ; defaultListSeparatorForValuesWithCommas : ';' whitespace ; defaultListSeparatorForValuesWithoutCommas : ',' whitespace ; userDefinedListSeparator : character whitespace? ;
complexNumberArray : openingArrayDelimiter complexNumberValueList closingArrayDelimiter ; complexNumberArrayList : complexNumberArray ( listSeparator complexNumberArray )* ; openingArrayDelimiter : ( defaultOpeningArrayDelimiter | userDefinedOpeningArrayDelimiter ) whitespace ; closingArrayDelimiter : whitespace ( defaultClosingArrayDelimiter | userDefinedOpeningArrayDelimiter ) ; defaultOpeningArrayDelimiter : '{' ; defaultClosingArrayDelimiter : '}' ; userDefinedOpeningArrayDelimiter : '(' | '[' ; userDefinedClosingArrayDelimiter : ')' | ']' ;
compactNotation : compactNotationAllPartsZero | compactNotationImaginaryPartZero | compactNotationRealPartZero | compactNotationAllPartsNonZero ; compactNotationAllPartsZero : '0' ; compactNotationImaginaryPartZero : compactRealPart ; compactNotationRealPartZero ; simpleSign? compactImaginaryPart ; compactNotationAllPartsNonZero : compactRealPart simpleSign compactImaginaryPart ; compactRealPart : simpleSign? simpleNonZeroDecimalRealNumber ; compactImaginaryPart : simpleNonZeroDecimalRealNumber imaginaryPartDesignator; simpleSign : '+' | '-' ; imaginaryPartDesignator : 'i' | 'j' ; simpleNonZeroDecimalRealNumber : decimalDigit+ ( decimalPoint | decimalComma ) decimalDigit+ ; expandedNotation : expandedRealPart simpleSign expandedImaginaryPart ; expandedRealPart : '0' | simpleNonZeroDecimalRealNumber ; expandedImaginaryPart : ( '0' | simpleNonZeroDecimalRealNumber ) imaginaryPartDesignator ;
pairNotation : unpaddedComplexPair | leftPaddedComplexPair | rightPaddedComplexPair ; leftPaddedComplexPair : whitespace+ unpaddedComplexPair ; rightPaddedComplexPair : unpaddedComplexPair whitespace+ ; whitespace : ' ' ; unpaddedComplexPair : '(' realPart partSeparator imaginaryPart ')' ; realPart : formattedRealNumber ; imaginaryPart : formattedRealNumber ; partSeparator : decimalPointModePartSeparator | decimalCommaModePartSeparator ; decimalPointModePartSeparator : ',' whitespace ; decimalCommaModePartSeparator : ';' whitespace ; formattedRealNumber : realNumberSimpleFormat | realNumberOtherFormats ; realNumberSimpleFormat : negativeSign? decimalDigit decimalPoint decimalDigit+ exponent ; realNumberOtherFormats : sign? fillChar* ( fixedFmtDecimal | engFmtDecimal | expFmtDecimal ) ; fixedFmtDecimal : integralPart ( decimalPoint | decimalComma ) fractionalPart ; engFmtDecimal : engIntegralPart ( decimalPoint | decimalComma ) fractionalPart engExponent ; expFmtDecimal : fixedFmtDecimal exponent ; sign : whitespace | '+' | '-' ; negativeSign : '-' ; fillChar : whitespace | '*' | '0' ; integralPart : decimalDigit decimalDigit? decimalDigit? ( digitSeparator? digitGroup )* ; engIntegralPart : ( ( ( decimalDigit digitSeparator? )? decimalDigit )? decimalDigit )? decimalDigit ; fractionalPart : ( decimalDigit ( decimalDigit ( decimalDigit digitSeparator )? )? )* decimalDigit ; exponent : 'E' ( '+' | '-' ) decimalDigit decimalDigit+ ; engExponent : exponent ; digitSeparator : decimalPointModeDigitSeparator | decimalCommaModeDigitSeparator ; decimalPointModeDigitSeparator : whitespace | ',' ; decimalCommaModeDigitSeparator : whitespace | '.' ; digitGroup : decimalDigit decimalDigit decimalDigit ; decimalPoint : '.' ; decimalComma : ',' ; decimalDigit : '0' .. '9' ; character : <any printable ASCII character> ; newline : <runtime host dependent ASCII control sequence for new line> ;
engExponent
is always divisible by three.
simpleNonZeroDecimalRealNumber
is never zero.
decimalPoint
is shown instead of decimalComma
, decimalPointModePartSeparator
is shown instead of decimalCommaModePartSeparator
and decimalPointModeDigitSeparator
is shown instead of decimalCommaModeDigitSeparator
.
decimalComma
is shown instead of decimalPoint
, decimalCommaModePartSeparator
is shown instead of decimalPointModePartSeparator
and decimalCommaModeDigitSeparator
is shown instead of decimalPointModeDigitSeparator
.