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

Terminals

EBNF.Terminals History

Hide minor edits - Show changes to markup

2015-10-09 18:13 by trijezdci -
Changed lines 8-11 from:
  DEFINITION | DIV | DO | ELSE | ELSIF | END | ENUM | EXIT | FOR | FROM | GENLIB |
  IF | IMPLEMENTATION | IMPORT | IN | LOOP | MOD | MODULE | NEW | NONE | NOT |
  OF | OPAQUE | OR | POINTER | PROCEDURE | RECORD | REFERENTIAL | RELEASE |
  REPEAT | RETAIN | RETURN | SET | THEN | TO | TYPE | UNTIL | VAR | WHILE | YIELD
to:
  DEFINITION | DIV | DO | ELSE | ELSIF | END | EXIT | FOR | FROM | GENLIB | IF |
  IMPLEMENTATION | IMPORT | IN | LOOP | MOD | MODULE | NEW | NONE | NOT | OF |
  OPAQUE | OR | POINTER | PROCEDURE | RECORD | REFERENTIAL | RELEASE | REPEAT |
  RETAIN | RETURN | SET | THEN | TO | TYPE | UNTIL | VAR | WHILE | YIELD
2015-09-22 12:55 by trijezdci -
Changed lines 30-31 from:
  '.' | ',' | ':' | ';' | '|' | '^' | '~' | '..' | ':=' |  |  |
  '::' | '+' | '-' | '*' | '*.' | '/' | '\' | '&' |
to:
  '.' | ',' | ':' | ';' | '|' | '~' | '..' | ':=' |  |  |
  '::' | '+' | '-' | '*' | '/' | '\' | '&' | '^' |
Changed line 281 from:

@]

to:

@]

2015-09-19 13:28 by trijezdci -
Changed line 50 from:
#3.3 Template Language Symbols
to:
#3.4 Template Language Symbols
2015-09-19 13:24 by trijezdci -
Changed line 46 from:
#3.3 Pragma Affix and Delimiters
to:
#3.3 Pragma Punctuation and Delimiters
2015-09-17 18:20 by trijezdci -
Changed line 6 from:
to:
Changed line 18 from:
to:
2015-09-17 18:20 by trijezdci -
Changed line 29 from:
to:
Changed line 64 from:

Ident :

to:

Ident :=

Changed line 73 from:
to:
Changed line 82 from:
to:
Changed line 91 from:
to:
Changed line 100 from:
to:
Changed line 109 from:
to:
Changed line 130 from:
to:
Changed line 139 from:
to:
Changed line 148 from:
to:
Changed line 157 from:
to:
Changed line 166 from:
to:
Changed line 175 from:

Digit :

to:

Digit :=

Changed line 184 from:
to:
Changed line 193 from:
to:
Changed line 201 from:

Digit Sep? : "'" ;

to:

Digit Sep? := "'" ;

Changed line 208 from:
to:
Changed line 217 from:
to:
Changed line 226 from:
to:
Changed line 235 from:
to:
Changed line 244 from:

Letter :

to:

Letter :=

Changed line 252 from:

Space : ' ' ;

to:

Space := ' ' ;

Changed line 259 from:
to:
Changed line 269 from:
to:
Changed line 278 from:
to:
Changed line 281 from:

@]

to:

@]

2015-09-16 02:37 by trijezdci -
Added lines 1-2:
Changed line 281 from:

@]

to:

@]

2015-09-15 17:37 by trijezdci -
Changed lines 59-60 from:
#4 Identifier
to:
#4 Identifier   syntax diagram
Changed lines 68-69 from:
#4.1 Standard Library Identifier
to:
#4.1 Standard Library Identifier   syntax diagram
Changed lines 77-78 from:
#4.2 Letter Or Digit
to:
#4.2 Letter Or Digit   syntax diagram
Changed lines 86-87 from:
#4.3 Foreign Identifier Character
to:
#4.3 Foreign Identifier Character   syntax diagram
Changed lines 95-96 from:
#4.4 Identifier Tail Character
to:
#4.4 Identifier Tail Character   syntax diagram
Changed lines 104-105 from:
#5 Number Literal
to:
#5 Number Literal   syntax diagram
Changed lines 125-126 from:
#5.1 Decimal Number Tail
to:
#5.1 Decimal Number Tail   syntax diagram
Changed lines 134-135 from:
#5.2 Real Number Tail
to:
#5.2 Real Number Tail   syntax diagram
Changed lines 143-144 from:
#5.3 Digit Sequence
to:
#5.3 Digit Sequence   syntax diagram
Changed lines 152-153 from:
#5.4 Base-16 Digit Sequence
to:
#5.4 Base-16 Digit Sequence   syntax diagram
Changed lines 161-162 from:
#5.5 Base-2 Digit Sequence
to:
#5.5 Base-2 Digit Sequence   syntax diagram
Changed lines 170-171 from:
#5.6 Digit
to:
#5.6 Digit   syntax diagram
Changed lines 179-180 from:
#5.7 Base-16 Digit
to:
#5.7 Base-16 Digit   syntax diagram
Changed lines 188-189 from:
#5.8 Base-2 Digit
to:
#5.8 Base-2 Digit   syntax diagram
Changed lines 203-204 from:
#6 String Literal
to:
#6 String Literal   syntax diagram
Changed lines 212-213 from:
#6.1 Single Quoted String
to:
#6.1 Single Quoted String   syntax diagram
Changed lines 221-222 from:
#6.2 Double Quoted String
to:
#6.2 Double Quoted String   syntax diagram
Changed lines 230-231 from:
#6.3 Quotable Character
to:
#6.3 Quotable Character   syntax diagram
Changed lines 239-240 from:
#6.4 Letter
to:
#6.4 Letter   syntax diagram
Changed lines 254-255 from:
#6.6 Non-Alphanumeric Quotable
to:
#6.6 Non-Alphanumeric Quotable   syntax diagram
Changed lines 264-265 from:
#6.7 Escaped Character
to:
#6.7 Escaped Character   syntax diagram
Changed lines 273-274 from:
#7 Chevron Text
to:
#7 Chevron Text   syntax diagram
2015-09-15 17:31 by trijezdci -
Changed line 14 from:
#2 Dual-Use Identifiers (Schrödinger's Tokens)
to:
#2 Dual-Use Identifiers
(Schrödinger's Tokens)
2015-09-15 09:42 by trijezdci - anchoring
Added line 1:

Added line 13:

Added line 24:

Changed line 27 from:
to:
Added line 58:

Added line 66:

Added line 74:

Added line 82:

Added line 90:

Added line 98:

Added line 118:

Added line 126:

Added line 134:

Added line 142:

Added line 150:

Added line 158:

Added line 166:

Added line 174:

Added line 182:

Added line 188:

Added line 196:

Added line 204:

Added line 212:

Added line 220:

Added line 228:

Added line 234:

Added line 243:

Added line 251:

2015-09-15 02:19 by trijezdci - formatting options for WORD/ADDRESS
Changed lines 26-27 from:
  '::' | '+' | '-' | '*' | '*.' | '/' | '\' | '=' | '#' | '>' | '>=' | '<' | '<=' | '==' | '&' |
  >' | '<>' | '><' | '+/ | '(' | ')' | '[' | ']' | '{' | '}'
to:
  '::' | '+' | '-' | '*' | '*.' | '/' | '\' | '&' |
  '=' | '#' | '>' | '>=' | '<' | '<=' | '==' |
  >' | '<>' | '><' | '+/ |
  '(' | ')' | '[' | ']' | '{' | '}'
2015-09-15 02:17 by trijezdci -
Changed line 25 from:
  '.' | ',' | ':' | ';' | '|' | '^' | '~' | '..' | ':=' |  | '--" |
to:
  '.' | ',' | ':' | ';' | '|' | '^' | '~' | '..' | ':=' |  |  |
2015-09-15 02:15 by trijezdci - reformatted
Changed lines 25-27 from:
  '.' | ',' | ':' | ';' | '|' | '^' | '~' | '..' | ':=' |  | -" | '::' | '+' | ' | '*' | '*.' | '/' | '\' |
  '=' | '#' | '>' | '>=' | '<' | '<=' | '==' | '&' | >' | '<>' | '><' | '+/ |
  '(' | ')' | '[' | ']' | '{' | '}'
to:
  '.' | ',' | ':' | ';' | '|' | '^' | '~' | '..' | ':=' |  | '--" |
  '::' | '+' | '-' | '*' | '*.' | '/' | '\' | '=' | '#' | '>' | '>=' | '<' | '<=' | '==' | '&' |
  >' | '<>' | '><' | '+/ | '(' | ')' | '[' | ']' | '{' | '}'
2015-09-15 02:14 by trijezdci - changed reserced words, dual use identifiers and symbols to proper EBNF notation
Changed lines 2-11 from:

ALIAS, AND, ARGLIST, ARRAY, BEGIN, BLUEPRINT, BY,CASE, CONST, COPY, DEFINITION, DIV, DO, ELSE, ELSIF, END, ENUM, EXIT, FOR, FROM, IF, IMPLEMENTATION, IMPORT, IN, LOOP, MOD, MODULE, NEW, NONE, NOT, OF, OPAQUE, OR, POINTER, PROCEDURE, RECORD, REFERENTIAL, RELEASE, REPEAT, RETAIN, RETURN, SET, THEN, TO, TYPE, UNTIL, VAR, WHILE, YIELD

to:
ResWord :
  ALIAS | AND | ARGLIST | ARRAY | BEGIN | BLUEPRINT | BY | CASE | CONST | COPY |
  DEFINITION | DIV | DO | ELSE | ELSIF | END | ENUM | EXIT | FOR | FROM | GENLIB |
  IF | IMPLEMENTATION | IMPORT | IN | LOOP | MOD | MODULE | NEW | NONE | NOT |
  OF | OPAQUE | OR | POINTER | PROCEDURE | RECORD | REFERENTIAL | RELEASE |
  REPEAT | RETAIN | RETURN | SET | THEN | TO | TYPE | UNTIL | VAR | WHILE | YIELD
  ;
Changed lines 13-20 from:

ABS, ADDRESS, APPEND, CAST, COUNT, COROUTINE, EXISTS, INSERT, LENGTH, OCTET, READ, READNEW, REMOVE, SEEK, STORE, SUBSET, SXF, TDYN, TFLAGS, TLIMIT, TLITERAL, TMAX, TMIN, TORDERED, TREFC, TSCALAR, TSORTED, UNSAFE, VAL, VALUE, WRITE, WRITEF

to:
DualUseIdent :
  ABS | ADDRESS | APPEND | CAST | COUNT | COROUTINE | EXISTS | INSERT |
  LENGTH | OCTET | READ | READNEW | REMOVE | SEEK | STORE | SUBSET | SXF |
  TDYN | TFLAGS | TLIMIT | TLITERAL | TMAX | TMIN | TORDERED | TREFC |
  TSCALAR | TSORTED | UNSAFE | VAL | VALUE | WRITE | WRITEF
  ;
Changed lines 23-29 from:

.   ,   :   ;   |   ^   ~   ..   :=   ++   --   ::   +   -   *   *.   /   \   =   #   >   >=   <   <=   ==   &   ->   <>   ><   +/-   (   )   [   ]   {   }  

to:
SpecialSymbols :
  '.' | ',' | ':' | ';' | '|' | '^' | '~' | '..' | ':=' | '++' | '--" | '::' | '+' | '-' | '*' | '*.' | '/' | '\' |
  '=' | '#' | '>' | '>=' | '<' | '<=' | '==' | '&' | '->' | '<>' | '><' | '+/-' |
  '(' | ')' | '[' | ']' | '{' | '}'
  ;
2015-09-14 12:50 by trijezdci - moved terminals to separate page
Added lines 1-227:
#1 Reserved Words

ALIAS, AND, ARGLIST, ARRAY, BEGIN, BLUEPRINT, BY,CASE, CONST, COPY, DEFINITION, DIV, DO, ELSE, ELSIF, END, ENUM, EXIT, FOR, FROM, IF, IMPLEMENTATION, IMPORT, IN, LOOP, MOD, MODULE, NEW, NONE, NOT, OF, OPAQUE, OR, POINTER, PROCEDURE, RECORD, REFERENTIAL, RELEASE, REPEAT, RETAIN, RETURN, SET, THEN, TO, TYPE, UNTIL, VAR, WHILE, YIELD

#2 Dual-Use Identifiers (Schrödinger's Tokens)

ABS, ADDRESS, APPEND, CAST, COUNT, COROUTINE, EXISTS, INSERT, LENGTH, OCTET, READ, READNEW, REMOVE, SEEK, STORE, SUBSET, SXF, TDYN, TFLAGS, TLIMIT, TLITERAL, TMAX, TMIN, TORDERED, TREFC, TSCALAR, TSORTED, UNSAFE, VAL, VALUE, WRITE, WRITEF

#3 Special Symbols

.   ,   :   ;   |   ^   ~   ..   :=   ++   --   ::   +   -   *   *.   /   \   =   #   >   >=   <   <=   ==   &   ->   <>   ><   +/-   (   )   [   ]   {   }  

#3.1 Quoted Text Delimiters

'   "   <<   >>  

#3.2 Comment Delimiters

!   (*   *)  

#3.3 Pragma Affix and Delimiters

?   <*   *>  

#3.3 Template Language Symbols

##   <#   #>   @@   //   /*   */  

#3.5 Reserved Symbols

`   for use as a token by Objective Modula-2
@   for use as a lead character in identifiers and reserved words by language supersets
%   for use as a character in identifiers and reserved words by implementations targetingOpenVMS

#4 Identifier
Ident :
  ( Letter | ForeignIdentChar+ LetterOrDigit+ ) IdentTailChar*
  ;
#4.1 Standard Library Identifier
StdLibIdent :
  Letter LetterOrDigit*
  ;
#4.2 Letter Or Digit
LetterOrDigit :
  Letter | Digit
  ;
#4.3 Foreign Identifier Character
ForeignIdentChar :
  '_' | '$'
  ;
#4.4 Identifier Tail Character
IdentTailChar :
  LetterOrDigit | ForeignIdentChar
  ;
#5 Number Literal
NumberLiteral :
  /* number literals starting with digit 0 ... */
  '0' (
    /* without prefix are real numbers */
    RealNumberTail |
    /* with prefix 0b are base-2 numbers */
    'b' Base2DigitSeq |
    /* with prefix 0x are base-16 numbers */
    'x' Base16DigitSeq |
    /* with prefix 0u are unicode code points */
    'u' Base16DigitSeq
  )?
  /* number literals starting with digits 1 to 9 ... */
  | '1'..'9' DecimalNumberTail? /* are always decimal numbers */
  ;
#5.1 Decimal Number Tail
DecimalNumberTail :
  DigitSep? DigitSeq RealNumberTail? | RealNumberTail
  ;
#5.2 Real Number Tail
RealNumberTail :
  '.' DigitSeq ( 'e' ( '+' | '-' )? DigitSeq )?
  ;
#5.3 Digit Sequence
DigitSeq :
  Digit+ ( DigitSep Digit+ )*
  ;
#5.4 Base-16 Digit Sequence
Base16DigitSeq :
    Base16Digit+ ( DigitSep Base16Digit+ )*
    ;
#5.5 Base-2 Digit Sequence
Base2DigitSeq :
  Base2Digit+ ( DigitSep Base2Digit+ )*
  ;
#5.6 Digit
Digit :
  Base2Digit | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9'
  ;
#5.7 Base-16 Digit
Base16Digit :
  Digit | 'A' | 'B' | 'C' | 'D' | 'E' | 'F'
  ;
#5.8 Base-2 Digit
Base2Digit :
  '0' | '1'
  ;
#5.9 Digit Separator
DigitSep : "'" ;
#6 String Literal
StringLiteral :
  SingleQuotedString | DoubleQuotedString
  ;
#6.1 Single Quoted String
SingleQuotedString :
  "'" ( QuotableCharacter | '"' )* "'"
  ;
#6.2 Double Quoted String
DoubleQuotedString :
  '"' ( QuotableCharacter | "'" )* '"'
  ;
#6.3 Quotable Character
QuotableCharacter :
  Digit | Letter | Space | NonAlphaNumQuotable | EscapedCharacter
  ;
#6.4 Letter
Letter :
  'A' .. 'Z' | 'a' .. 'z'
  ;
#6.5 Space
Space : ' ' ;
#6.6 Non-Alphanumeric Quotable
NonAlphaNumQuotable :
  '!' | '#' | '$' | '%' | '&' | '(' | ')' | '*' | '+' | ',' |
  '-' | '.' | '/' | ':' | ';' | '<' | '=' | '>' | '?' | '@' |
  '[' | ']' | '^' | '_' | '`' | '{' | '|' | '}' | '~'
#6.7 Escaped Character
EscapedCharacter :
  '\' ( 'n' | 't' | '\' )
  ;
#7 Chevron Text
ChevronText :
  '<<' ( QuotableCharacter | "'" | '"' )* '>>'
  ;