Modula-2 Reloaded

A Modern Typesafe & Literate Programming Notation

Site Menu

Project

Specification

Implementation

Recommendations

Reference

Needs Updating

Work in Progress

Wastebasket

Wiki Manual

edit SideBar

Output Formats For Numeric Types Representing Integer Numbers

WiP.OutputFormatsForNumericTypesRepresentingIntegerNumbers History

Hide minor edits - Show changes to markup

2010-01-31 06:21 by benjk -
Changed lines 80-87 from:
    sign? fillChar* ( fixedFmtDecimal | expFmtDecimal ) suffix? ;

fixedFmtDecimal :

    integralPart ;

expFmtDecimal :

    fixedFmtDecimal exponent ;
to:
    base16CLiteralFmt | base16M2LiteralFmt | decimalFmt ;

base16CLiteralFmt :

    '0' 'x' ( decimalDigit | 'a' .. 'f' )+ ;

base16M2LiteralFmt :

    '0' ( decimalDigit | 'A' .. 'F' )+ 'H' ;

decimalFmt :

    sign? fillChar* integralPart suffix? ;
Deleted lines 101-109:

engIntegralPart :

    ( ( ( decimalDigit digitSeparator? )? decimalDigit )? decimalDigit )? decimalDigit ;

exponent :

    'E' '+' decimalDigit decimalDigit+ ;

engExponent :

    exponent ;
2010-01-29 15:58 by benjk -
Changed line 59 from:
Integerl Number Notation
to:
Integer Number Notation
Changed line 104 from:
    'E' ( '+' | '-' ) decimalDigit decimalDigit+ ;
to:
    'E' '+' decimalDigit decimalDigit+ ;
2010-01-29 12:49 by benjk -
Changed lines 83-84 from:
    integralPart ( decimalPoint | decimalComma ) fractionalPart ;
to:
    integralPart ;
Deleted lines 102-104:

fractionalPart :

    ( decimalDigit ( decimalDigit ( decimalDigit digitSeparator )? )? )* decimalDigit ;
Changed lines 110-117 from:
    decimalPointModeDigitSeparator | decimalCommaModeDigitSeparator ;

decimalPointModeDigitSeparator :

    whitespace | ',' ;

decimalCommaModeDigitSeparator :

    whitespace | '.' ;
to:
    whitespace | ',' | '.' ;
Deleted lines 114-119:

decimalPoint :

    '.' ;

decimalComma :

    ',' ;
Deleted lines 130-131:
  • in decimal point mode, decimalPoint is shown instead of decimalComma and decimalPointModeDigitSeparator is shown instead of decimalCommaModeDigitSeparator.
  • in decimal comma mode, decimalComma is shown instead of decimalPoint and decimalCommaModeDigitSeparator is shown instead of decimalPointModeDigitSeparator.
2010-01-28 17:08 by benjk -
Added lines 1-147:

Types

INTEGER, LONGINT

Syntax

The EBNF for the textual representation of values of types that represent integer numbers is

Values and Value Lists
intNumberValue :
    intNumberNotation ;

intNumberValueList :
    intNumberValue ( listSeparator intNumberValue )* ;

listSeparator :
    defaultListSeparator | userDefinedListSeparator | newline ;

defaultListSeparator :
    defaultListSeparatorForValuesWithCommas |
    defaultListSeparatorForValuesWithoutCommas ;

defaultListSeparatorForValuesWithCommas :
    ';' whitespace ;

defaultListSeparatorForValuesWithoutCommas :
    ',' whitespace ;

userDefinedListSeparator :
    character whitespace? ;
Arrays and Array Lists
intNumberArray :
     openingArrayDelimiter intNumberValueList closingArrayDelimiter ;

intNumberArrayList :
    intNumberArray ( listSeparator intNumberArray )* ;

openingArrayDelimiter :
    ( defaultOpeningArrayDelimiter | userDefinedOpeningArrayDelimiter ) whitespace ;

closingArrayDelimiter :
    whitespace ( defaultClosingArrayDelimiter | userDefinedOpeningArrayDelimiter ) ;

defaultOpeningArrayDelimiter :
    '{' ;

defaultClosingArrayDelimiter :
    '}' ;

userDefinedOpeningArrayDelimiter :
    '(' | '[' ;

userDefinedClosingArrayDelimiter :
    ')' | ']' ;
Integerl Number Notation
intNumberNotation :
    unpaddedIntNumberValue | leftPaddedIntNumberValue | rightPaddedIntNumberValue ;

leftPaddedIntNumberValue :
    whitespace+ unpaddedIntNumberValue ;

rightPaddedIntNumberValue :
    unpaddedIntNumberValue whitespace+ ;

whitespace :
    ' ' ;

unpaddedIntNumberValue :
    simpleFormat | otherFormats ;

simpleFormat :
    negativeSign? decimalDigit+ ;

otherFormats :
    sign? fillChar* ( fixedFmtDecimal | expFmtDecimal ) suffix? ;

fixedFmtDecimal :
    integralPart ( decimalPoint | decimalComma ) fractionalPart ;

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' ;

suffix :
    character* ;

character :
    <any printable ASCII character> ;

newline :
    <runtime host dependent ASCII control sequence for new line> ;

Static Semantics

  • all values in a list are shown in the same notation.
  • all values in a list are shown with identical formatting.
  • in decimal point mode, decimalPoint is shown instead of decimalComma and decimalPointModeDigitSeparator is shown instead of decimalCommaModeDigitSeparator.
  • in decimal comma mode, decimalComma is shown instead of decimalPoint and decimalCommaModeDigitSeparator is shown instead of decimalPointModeDigitSeparator.