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 SYSTEM Types

WiP.OutputFormatsForSYSTEMTypes History

Hide minor edits - Show changes to output

2010-02-02 09:24 by benjk -
Changed lines 76-77 from:
   '0' 'x' base16DigitLowercase base16DigitLowercase ;
to:
   '0' 'x' base16DigitLowercase+ ;
Changed lines 79-80 from:
   '0' base16DigitUppercase base16DigitUppercase 'H' ;
to:
   '0' base16DigitUppercase+ 'H' ;
Added line 100:
* the number of digits shown is always the maximum required for the type
2010-02-02 09:20 by benjk -
Changed line 91 from:
   whitespace | ',' | ':' ;
to:
   whitespace | '.' | ':' ;
2010-02-02 09:18 by benjk -
Added lines 1-99:
!!!Types
@@BYTE@@, @@WORD@@, @@ADDRESS@@, @@MACHINEBYTE@@, @@MACHINEADDRESS@@

!!!Syntax
The EBNF for the textual representation of values of system types is

!!!!!Values and Value Lists
[@
systemUnitValue :
    systemUnitNotation;

systemUnitValueList :
    systemUnitValue ( listSeparator systemUnitValue )* ;

listSeparator :
    defaultListSeparator | userDefinedListSeparator | newline ;

defaultListSeparator :
    ',' whitespace ;

userDefinedListSeparator :
    character whitespace? ;
@]

!!!!!Arrays and Array Lists
[@
systemUnitArray :
    openingArrayDelimiter systemUnitValueList closingArrayDelimiter ;

systemUnitArrayList :
    systemUnitArray ( listSeparator systemUnitArray )* ;

openingArrayDelimiter :
    ( defaultOpeningArrayDelimiter | userDefinedOpeningArrayDelimiter ) whitespace ;

closingArrayDelimiter :
    whitespace ( defaultClosingArrayDelimiter | userDefinedOpeningArrayDelimiter ) ;

defaultOpeningArrayDelimiter :
    '{' ;

defaultClosingArrayDelimiter :
    '}' ;

userDefinedOpeningArrayDelimiter :
    '(' | '[' ;

userDefinedClosingArrayDelimiter :
    ')' | ']' ;
@]

!!!!!System Unit Notation
[@
systemUnitNotation :
    unpaddedSystemUnitValue | leftPaddedSystemUnitValue | rightPaddedSystemUnitValue ;

leftPaddedSystemUnitValue :
    whitespace+ unpaddedSystemUnitValue ;

rightPaddedSystemUnitValue :
    unpaddedSystemUnitValue whitespace+ ;

whitespace :
    ' ' ;

unpaddedSystemUnitValue :
    simpleFormat | otherFormats ;

simpleFormat :
    digitGroup ( digitGroupSeparator digitGroup )* ;

otherFormats :
    base16CLiteralFmt | base16M2LiteralFmt ;

base16CLiteralFmt :
    '0' 'x' base16DigitLowercase base16DigitLowercase ;

base16M2LiteralFmt :
    '0' base16DigitUppercase base16DigitUppercase 'H' ;

base16DigitLowercase :
    '0' .. '9' | 'a' .. 'f' ;

base16DigitUppercase :
    '0' .. '9' | 'A' .. 'F' ;

digitGroup :
    base16DigitUppercase+ ;

digitGroupSeparator :
    whitespace | ',' | ':' ;

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.