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

Lexical Entities

CoreLanguage.LexicalEntities History

Hide minor edits - Show changes to markup

2015-10-09 18:22 by trijezdci -
Changed line 9 from:

Reserved words are symbols that consist of a sequence of all-uppercase letters, are visible in any scope, have special meaning in the language and may not be redefined. There are 50 reserved words:

to:

Reserved words are symbols that consist of a sequence of all-uppercase letters, are visible in any scope, have special meaning in the language and may not be redefined. There are 49 reserved words:

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

Actual lexical parameters shall be provided as constants in standard library module LexParams.

to:

Actual lexical parameters shall be provided as constants in standard library module LexParams.

2015-09-22 12:32 by trijezdci -
Changed line 57 from:
 +   -   *   /   \   =   #   <   <=   >   >=   ==   ::   ^   &
to:
 +   -   *   /   \   =   #   <   <=   >   >=   ==   ::   &   ^
Deleted line 393:
2015-09-22 12:31 by trijezdci -
Changed line 57 from:
 +   -   *   *.   /   \   =   #   <   <=   >   >=   ==   ::   ^   &
to:
 +   -   *   /   \   =   #   <   <=   >   >=   ==   ::   ^   &
2015-09-22 12:29 by trijezdci -
Changed line 302 from:
Symbolic Inline AssemblerASSEMBLER ASM REG
to:
Symbolic Inline Assembler (Optional)ASSEMBLER ASM REG
2015-09-22 12:28 by trijezdci -
Changed lines 303-304 from:
Phase II DeliverablesACTOR PRIORITY
Possible Future Use** *.
to:
Actor Based Concurrency (Phase II Deliverables)ACTOR PRIORITY
Exponentiation and Dot Product Operators (Possible Future Use)** *.
2015-09-22 12:26 by trijezdci -
Changed lines 303-304 from:
Future Use (Phase II Deliverables)** *. ACTOR PRIORITY
to:
Phase II DeliverablesACTOR PRIORITY
Possible Future Use** *.
2015-09-22 12:24 by trijezdci -
Changed line 303 from:
Future Use (Phase II Deliverables)ACTOR PRIORITY
to:
Future Use (Phase II Deliverables)** *. ACTOR PRIORITY
2015-09-20 19:02 by trijezdci -
Changed line 369 from:

If an identifier or a pragma symbol exceeds the maximum length support by the implementation, it may be truncated to the maximum supported length. If it is, a soft compile time warning shall occur.

to:

If an identifier or a pragma symbol exceeds the maximum length supported by the implementation, it may be truncated to the maximum supported length. If it is, a soft compile time warning shall occur.

2015-09-20 19:01 by trijezdci -
Changed line 392 from:

Actual lexical parameters shall be provided as constants in standard library module Lex Params?.

to:

Actual lexical parameters shall be provided as constants in standard library module LexParams.

2015-09-20 19:00 by trijezdci -
Changed lines 344-393 from:

Any special symbols not specifically reserved shall be considered reserved for possible future use or taboo.

to:

Any special symbols not specifically reserved shall be considered reserved for possible future use or taboo.

1.9 Lexical Parameters

1.9.1 Length of Literals

The minimum lengths of literals a conforming implementation shall support are:

  • for string literals, 160 characters
  • for character code literals, 6 digits
  • for whole number literals, 24 digits
  • for real number literals, 64 digits

The fractional part of a real number literal may be truncated. If it is truncated, a soft compile time warning shall be emitted.

If a string literal, a character code literal, a whole number literal or the significand or exponent of a real number literal is longer than an implementation is able to process, a compile time error shall occur.

1.9.2 Length of Identifiers and Pragma Symbols

The minimum lengths of identifiers and pragma symbols a conforming implementation shall support are:

  • for identifiers, 32 characters
  • for pragma symbols, 32 characters

If an identifier or a pragma symbol exceeds the maximum length support by the implementation, it may be truncated to the maximum supported length. If it is, a soft compile time warning shall occur.

1.9.4 Length of Comments

An implementation that generates source code of another language may choose to preserve comments by copying them into the output. In this case, the implementation may limit the length of comments copied into the output. The minimum lengths of comments to be fully preserved that such an implementation shall support are:

  • for line comments, 250 characters
  • for block comments, 2000 characters

If a comment to be preserved exceeds the maximum length supported by the implementation, it may be truncated to the maximum supported length. If it is truncated, a soft compile time warning shall occur. If a nested block comment is truncated, an implementation shall insert all closing comment delimiters that would have been lost as a result of truncation.

1.9.4 Line and Column Counters

An implementation may limit the capacity of its internal line and column counters. The minimum values a conforming implementation shall support are:

  • for the line counter, 65000
  • for the column counter, 250

In the event that a source file being processed exceeds the supported counter limits, an implementation may either continue or abort compilation. A soft compile time warning shall occur if the implementation continues. A fatal compile time error shall be emitted if the implementation aborts.

1.9.5 Lexical Parameter Constants

Actual lexical parameters shall be provided as constants in standard library module Lex Params?.

2015-09-20 11:14 by trijezdci -
2015-09-20 11:11 by trijezdci -
Changed line 339 from:

/= +> (. .) (: :) (= =) ?/ ?< ?! ?- ?. ?= ?* ?: ?? ??? ?, ?,, ?> ?+ ?; ||

to:

/= +> (. .) (: :) (= =) ?/ ?< ?! ?- ?. ?= ?* ?: ?? ??? ?, ?,, ?> ?+ ?; ||

2015-09-20 11:05 by trijezdci -
Changed lines 338-339 from:
Character Set Transliterators/= +> (. .) (: :) (= =) ?/ ?< ?! ?- ?. ?= ?* ?: ?? ??? ?, ?,, ?> ?+ ?;
to:
Character Set Transliterators?/= +> (. .) (: :) (= =) ?/ ?< ?! ?- ?. ?= ?* ?: ?? ??? ?, ?,, ?> ?+ ?;
2015-09-20 11:04 by trijezdci -
Changed line 338 from:
Character Set Transliterators/= +> (. .) (: :) (= =) ?/ ?< ?! ?- ?. ?= ?* ?: ?? ?, ?> ?+ ?;
to:
Character Set Transliterators/= +> (. .) (: :) (= =) ?/ ?< ?! ?- ?. ?= ?* ?: ?? ??? ?, ?,, ?> ?+ ?;
2015-09-20 11:01 by trijezdci -
Changed line 338 from:
Character Set Transliterators/= +> /< ?> ?- ?! ?. ?= ?* ?: (. .) (: :) (= =)
to:
Character Set Transliterators/= +> (. .) (: :) (= =) ?/ ?< ?! ?- ?. ?= ?* ?: ?? ?, ?> ?+ ?;
2015-09-19 14:09 by trijezdci -
Changed line 338 from:
Character Set Transliterators/< /= +> ?! ?- ?> ?. ?= ?* ?: (. .) (: :) (= =)
to:
Character Set Transliterators/= +> /< ?> ?- ?! ?. ?= ?* ?: (. .) (: :) (= =)
2015-09-19 14:05 by trijezdci -
Changed lines 337-338 from:
Modula-2 Template Engine[@## @@ <# #> // /* */
Character Set Transliterators[@/< /= +> ?! ?- ?> ?. ?= ?* ?: (. .) (: :) (= =)
to:
Modula-2 Template Engine## @@ <# #> // /* */
Character Set Transliterators/< /= +> ?! ?- ?> ?. ?= ?* ?: (. .) (: :) (= =)
2015-09-19 14:05 by trijezdci -
Changed lines 337-338 from:
Modula-2 Template Engine## @@ <# #> // /* */
Character Set Transliterators/< /= +> .- ?! ?> ?- ?= ?* ?: (. .) (: @@ @@:) (= =)
to:
Modula-2 Template Engine[@## @@ <# #> // /* */
Character Set Transliterators[@/< /= +> ?! ?- ?> ?. ?= ?* ?: (. .) (: :) (= =)
2015-09-19 14:00 by trijezdci -
Changed line 338 from:
Character Set Transliterators/< /= +> .- ?! ?> ?- ?= ?. ?: (. .) (: @@ @@:) (= =)
to:
Character Set Transliterators/< /= +> .- ?! ?> ?- ?= ?* ?: (. .) (: @@ @@:) (= =)
2015-09-19 13:56 by trijezdci -
Changed line 338 from:
Character Set Transliterators/< /= +> .- (. .) (: @@ @@:) (= =) ?! ?> ?- ?= ?. ?:
to:
Character Set Transliterators/< /= +> .- ?! ?> ?- ?= ?. ?: (. .) (: @@ @@:) (= =)
2015-09-19 13:53 by trijezdci -
Changed line 338 from:
Character Set Transliterators/< /= +> ./ .- (. .) (: @@ @@:) (= =) ?> ?- ?= ?. ?:
to:
Character Set Transliterators/< /= +> .- (. .) (: @@ @@:) (= =) ?! ?> ?- ?= ?. ?:
2015-09-19 13:46 by trijezdci -
Changed line 338 from:
Character Set Transliterators/< /= => +> ./ .- (. .) (: @@ @@:) (= =) ?- ?= ?. ?:
to:
Character Set Transliterators/< /= +> ./ .- (. .) (: @@ @@:) (= =) ?> ?- ?= ?. ?:
2015-09-19 13:40 by trijezdci -
Changed lines 2-3 from:

1 Character Sets

to:

1.1 Character Sets

Changed lines 7-8 from:

2 Reserved Words

to:

1.2 Reserved Words

Changed lines 26-27 from:

3 Schrödinger's Tokens

to:

1.3 Schrödinger's Tokens

Changed lines 43-44 from:

4 Special Symbols

to:

1.4 Special Symbols

Changed lines 54-55 from:
4.1 Operators
to:
1.4.1 Operators
Changed lines 61-62 from:
4.2 Punctuation
to:
1.4.2 Punctuation
Changed lines 68-69 from:
4.3 Grouping Delimiters
to:
1.4.3 Grouping Delimiters
Changed lines 75-76 from:
4.4 Quoted Text Delimiters
to:
1.4.4 Quoted Text Delimiters
Changed lines 82-83 from:
4.5 Comment Delimiters
to:
1.4.5 Comment Delimiters
Changed lines 89-90 from:
4.6 Pragma Punctuation and Delimiters
to:
1.4.6 Pragma Punctuation and Delimiters
Changed lines 96-97 from:

5 Identifiers

to:

1.5 Identifiers

Changed lines 111-112 from:
5.1 Reserved Identifiers
to:
1.5.1 Reserved Identifiers
Changed lines 119-120 from:
5. 2 User-Definable Identifiers
to:
1.5. 2 User-Definable Identifiers
Changed lines 124-125 from:

6 Literals

to:

1.6 Literals

Changed lines 132-133 from:
6.1 Numeric literals
to:
1.6.1 Numeric literals
Changed lines 143-144 from:
6.1.1 Decimal Number Literals
to:
1.6.1.1 Decimal Number Literals
Changed lines 155-156 from:
6.1.2 Base-2 Number Literals
to:
1.6.1.2 Base-2 Number Literals
Changed lines 166-167 from:
6.1.3 Base-16 Number Literals
to:
1.6.1.3 Base-16 Number Literals
Changed lines 177-178 from:
6.1.4 Character Code Literals
to:
1.6.1.4 Character Code Literals
Changed lines 189-190 from:

6.2 String Literals

to:

1.6.2 String Literals

Changed lines 203-204 from:

6.3 Structured Literals

to:

1.6.3 Structured Literals

Changed lines 219-220 from:

7 Non-Semantic Symbols

to:

1.7 Non-Semantic Symbols

Changed lines 227-228 from:
7.1 Comments
to:
1.7.1 Comments
Changed lines 234-235 from:
7.1.1 Line Comments
to:
1.7.1.1 Line Comments
Changed lines 248-249 from:
7.1.2 Block Comments
to:
1.7.1.2 Block Comments
Changed lines 260-261 from:
7.2 Pragmas
to:
1.7.2 Pragmas
Changed lines 275-276 from:
7.3 Lexical Separators
to:
1.7.3 Lexical Separators
Changed lines 282-283 from:
7.3.1 Control Codes
to:
1.7.3.1 Control Codes
Changed lines 293-294 from:

8 Reserved Symbols

to:

1.8 Reserved Symbols

Changed lines 298-299 from:
8.1 Symbols Reserved for Optional and Future Use
to:
1.8.1 Symbols Reserved for Optional and Future Use
Changed lines 306-307 from:
8.2 Symbols Reserved for Coordinated Superset Use
to:
1.8.2 Symbols Reserved for Coordinated Superset Use
Changed lines 320-321 from:
8.3 Symbols Reserved for Uncoordinated Superset Use
to:
1.8.3 Symbols Reserved for Uncoordinated Superset Use
Changed lines 331-332 from:
8.4 Symbols Reserved for External Source Code Processors
to:
1.8.4 Symbols Reserved for External Source Code Processors
Changed line 341 from:
8.5 Other Symbols
to:
1.8.5 Other Symbols
2015-09-19 13:36 by trijezdci -
Changed lines 155-156 from:

6.1.2 Base-2 Number Literals

to:
6.1.2 Base-2 Number Literals
Changed lines 166-167 from:

6.1.3 Base-16 Number Literals

to:
6.1.3 Base-16 Number Literals
Changed lines 177-178 from:

6.1.4 Character Code Literals

to:
6.1.4 Character Code Literals
Changed lines 203-204 from:

6. 3 Structured Literals

to:

6.3 Structured Literals

Changed lines 275-276 from:

7.3 Lexical Separators

to:
7.3 Lexical Separators
Changed line 282 from:
Control Codes
to:
7.3.1 Control Codes
2015-09-19 13:33 by trijezdci -
Changed lines 2-3 from:

Character Sets

to:

1 Character Sets

Changed lines 7-8 from:

Reserved Words

to:

2 Reserved Words

Changed lines 26-27 from:

Schrödinger's Tokens

to:

3 Schrödinger's Tokens

Changed lines 43-44 from:

Special Symbols

to:

4 Special Symbols

Changed lines 54-55 from:
Operators
to:
4.1 Operators
Changed lines 61-62 from:
Punctuation
to:
4.2 Punctuation
Changed lines 68-69 from:
Grouping Delimiters
to:
4.3 Grouping Delimiters
Changed lines 75-76 from:
Quoted Text Delimiters
to:
4.4 Quoted Text Delimiters
Changed lines 82-83 from:
Comment Delimiters
to:
4.5 Comment Delimiters
Changed lines 89-90 from:
Pragma Punctuation and Delimiters
to:
4.6 Pragma Punctuation and Delimiters
Changed lines 96-97 from:

Identifiers

to:

5 Identifiers

Changed lines 111-112 from:
Reserved Identifiers
to:
5.1 Reserved Identifiers
Changed lines 119-120 from:
User-Definable Identifiers
to:
5. 2 User-Definable Identifiers
Changed lines 124-125 from:

Literals

to:

6 Literals

Changed lines 132-133 from:
Numeric literals
to:
6.1 Numeric literals
Changed lines 143-144 from:
Decimal Number Literals
to:
6.1.1 Decimal Number Literals
Changed lines 155-156 from:

Base-2 Number Literals

to:

6.1.2 Base-2 Number Literals

Changed lines 166-167 from:

Base-16 Number Literals

to:

6.1.3 Base-16 Number Literals

Changed lines 177-178 from:

Character Code Literals

to:

6.1.4 Character Code Literals

Changed lines 189-190 from:

String Literals

to:

6.2 String Literals

Changed lines 203-204 from:

Structured Literals

to:

6. 3 Structured Literals

Changed lines 219-220 from:

Non-Semantic Symbols

to:

7 Non-Semantic Symbols

Changed lines 227-228 from:
Comments
to:
7.1 Comments
Changed lines 234-235 from:
Line Comments
to:
7.1.1 Line Comments
Changed lines 248-249 from:
Block Comments
to:
7.1.2 Block Comments
Changed lines 260-261 from:
Pragmas
to:
7.2 Pragmas
Changed lines 275-276 from:

Lexical Separators

to:

7.3 Lexical Separators

Changed lines 293-294 from:

Reserved Symbols

to:

8 Reserved Symbols

Changed lines 298-299 from:
Symbols Reserved for Optional and Future Use
to:
8.1 Symbols Reserved for Optional and Future Use
Changed lines 306-307 from:
Symbols Reserved for Coordinated Superset Use
to:
8.2 Symbols Reserved for Coordinated Superset Use
Changed lines 320-321 from:
Symbols Reserved for Uncoordinated Superset Use
to:
8.3 Symbols Reserved for Uncoordinated Superset Use
Changed lines 331-332 from:
Symbols Reserved for External Source Code Processors
to:
8.4 Symbols Reserved for External Source Code Processors
Changed line 341 from:
Other Symbols
to:
8.5 Other Symbols
2015-09-19 12:08 by trijezdci -
Changed lines 322-323 from:

An uncoordinated language superset is a compliant language superset for which no reserved words, identifiers or pragmas are reserved. Such a superset may define additional reserved words and predefined identifiers as long as they start with a single @ character. Implementations that target the OpenVMS operating system may define platform specific reserved words and predefined identifiers as long as they contain at least one % character.

to:

An uncoordinated language superset is a compliant language superset for which no reserved words, identifiers or pragmas are reserved. Such a superset may define additional reserved words and predefined identifiers as long as they start with a single @ character. Implementations that target the OpenVMS operating system may define platform specific reserved words and predefined identifiers as long as they contain at least one % character.

Changed line 343 from:

Any special symbols not specifically reserved shall be considered reserved for possible future use or taboo.

to:

Any special symbols not specifically reserved shall be considered reserved for possible future use or taboo.

2015-09-19 12:08 by trijezdci -
Changed line 322 from:

An uncoordinated language superset is a compliant language superset for which no reserved words, identifiers or pragma symbols are reserved. Such a superset may define additional reserved words and predefined identifiers as long as they start with a single @ character. Implementations that target the OpenVMS operating system may define platform specific reserved words and predefined identifiers as long as they contain at least one % character.

to:

An uncoordinated language superset is a compliant language superset for which no reserved words, identifiers or pragmas are reserved. Such a superset may define additional reserved words and predefined identifiers as long as they start with a single @ character. Implementations that target the OpenVMS operating system may define platform specific reserved words and predefined identifiers as long as they contain at least one % character.

2015-09-19 12:06 by trijezdci -
Changed line 322 from:

An uncoordinated language superset is a compliant language superset for which no reserved words, identifiers or pragma symbols are reserved. Such a superset may define additional reserved words, predefined identifiers and language pragma symbols as long as they start with a single @ character. Implementations that target the OpenVMS operating system may define platform specific reserved words, predefined identifiers and language pragma symbols as long as they contain at least one % character.

to:

An uncoordinated language superset is a compliant language superset for which no reserved words, identifiers or pragma symbols are reserved. Such a superset may define additional reserved words and predefined identifiers as long as they start with a single @ character. Implementations that target the OpenVMS operating system may define platform specific reserved words and predefined identifiers as long as they contain at least one % character.

2015-09-19 10:41 by trijezdci -
Changed line 343 from:

Any special symbols not specifically reserved are either reserved for possible future use or taboo.

to:

Any special symbols not specifically reserved shall be considered reserved for possible future use or taboo.

2015-09-19 10:40 by trijezdci -
Changed line 343 from:

Any special symbols not already reserved are either reserved for possible future use or taboo.

to:

Any special symbols not specifically reserved are either reserved for possible future use or taboo.

2015-09-19 10:39 by trijezdci -
Changed lines 338-343 from:
Character Set Transliterators/< /= => +> ./ .- (. .) (: @@ @@:) (= =) ?- ?= ?. ?:
to:
Character Set Transliterators/< /= => +> ./ .- (. .) (: @@ @@:) (= =) ?- ?= ?. ?:

Other Symbols

Any special symbols not already reserved are either reserved for possible future use or taboo.

2015-09-19 09:45 by trijezdci -
Changed line 338 from:
Character Set Transliterators/< /= => +> ./ .- (. .) (: @@ @@:) ?- ?= ?. ?:
to:
Character Set Transliterators/< /= => +> ./ .- (. .) (: @@ @@:) (= =) ?- ?= ?. ?:
2015-09-19 09:32 by trijezdci -
Changed line 338 from:
Character Set Transliterators/< /= => +> ./ .- (. .) (: @@ @@:)
to:
Character Set Transliterators/< /= => +> ./ .- (. .) (: @@ @@:) ?- ?= ?. ?:
2015-09-19 09:30 by trijezdci -
Changed line 338 from:
Character Set Transliterators/< /= => +> ./ .- (. .) @@(: @@ @@:)
to:
Character Set Transliterators/< /= => +> ./ .- (. .) (: @@ @@:)
2015-09-19 09:29 by trijezdci -
Changed line 338 from:
Character Set Transliterators/= (. .) (: @@ @@:) and ?? trigraphs of ISO C
to:
Character Set Transliterators/< /= => +> ./ .- (. .) @@(: @@ @@:)
2015-09-19 07:25 by trijezdci -
Changed lines 337-338 from:
Modula-2 Template Engine## @@ <# #> // /* */
Character Set Transliterators/= (. .) (: @@ @@:) and ?? trigraphs of ISO C
to:
Modula-2 Template Engine## @@ <# #> // /* */
Character Set Transliterators/= (. .) (: @@ @@:) and ?? trigraphs of ISO C
2015-09-19 07:25 by trijezdci -
Changed line 338 from:
Character Set Transliterators/= (. .) (: @@ @@:) and ?? trigraphs of ISO C
to:
Character Set Transliterators/= (. .) (: @@ @@:) and ?? trigraphs of ISO C
2015-09-19 07:24 by trijezdci -
Changed lines 337-338 from:
Modula-2 Template Engine## @@ <# #> // /* */
Character Set Transliterators/= (. .) (: @@ @@:) and ?? trigraphs of ISO C
to:
Modula-2 Template Engine## @@ <# #> // /* */
Character Set Transliterators/= (. .) (: @@ @@:) and ?? trigraphs of ISO C
2015-09-19 07:22 by trijezdci -
Changed lines 337-342 from:
Modula-2 Template Engine## @@ <# #> // /* */
Character Set Transliterators/= (. .) and ?? trigraphs of ISO C
Single‑Pass
Compilers
PragmasFORWARD
to:
Modula-2 Template Engine## @@ <# #> // /* */
Character Set Transliterators/= (. .) (: @@ @@:) and ?? trigraphs of ISO C
2015-09-19 07:21 by trijezdci -
Added lines 330-338:

Symbols Reserved for External Source Code Processors

To assist source code processing prior to compilation, certain symbols are reserved for exclusive use by external source code processing utilities.

UtilityReserved Symbols
Modula-2 Template Engine## @@ <# #> // /* */
Character Set Transliterators/= (. .) and ?? trigraphs of ISO C
2015-09-19 07:00 by trijezdci -
Changed line 313 from:
Core Language` BYCOPY BYREF CLASS CONTINUE CRITICAL INOUT METHOD ON OPTIONAL OUT PRIVATE PROTECTED PROTOCOL PUBLIC TRY NO OBJECT YES
to:
Symbols` BYCOPY BYREF CLASS CONTINUE CRITICAL INOUT METHOD ON OPTIONAL OUT PRIVATE PROTECTED PROTOCOL PUBLIC TRY NO OBJECT YES
Changed line 316 from:
Core LanguageALL PARALLEL SYNC
to:
SymbolsALL PARALLEL SYNC
2015-09-19 06:50 by trijezdci -
Changed line 322 from:

An uncoordinated language superset is a compliant language superset for which no reserved words, identifiers or pragma symbols are reserved. Such a superset may define any additional reserved words, predefined identifiers and language pragma symbols as long as they start with a single @ character. Implementations that target the OpenVMS operating system may define platform specific reserved words, predefined identifiers and language pragma symbols as long as they contain at least one % character.

to:

An uncoordinated language superset is a compliant language superset for which no reserved words, identifiers or pragma symbols are reserved. Such a superset may define additional reserved words, predefined identifiers and language pragma symbols as long as they start with a single @ character. Implementations that target the OpenVMS operating system may define platform specific reserved words, predefined identifiers and language pragma symbols as long as they contain at least one % character.

2015-09-19 06:49 by trijezdci -
Changed line 322 from:

An uncoordinated language superset is a compliant language superset for which no reserved words, identifiers or pragma symbols are reserved. Such a superset may define any additional reserved words, predefined identifiers and language pragmas as long as they start with a single @ character. Implementations that target the OpenVMS operating system may define platform specific reserved words, predefined identifiers and pragmas as long as they contain at least one % character.

to:

An uncoordinated language superset is a compliant language superset for which no reserved words, identifiers or pragma symbols are reserved. Such a superset may define any additional reserved words, predefined identifiers and language pragma symbols as long as they start with a single @ character. Implementations that target the OpenVMS operating system may define platform specific reserved words, predefined identifiers and language pragma symbols as long as they contain at least one % character.

2015-09-19 06:48 by trijezdci -
Changed line 322 from:

An uncoordinated language superset is a compliant language superset for which no reserved words, identifiers or pragma symbols are reserved. Such a superset may define any additional reserved words, predefined identifiers and language pragmas as long as they start with a single @ character. Implementations that target the OpenVMS operating system, may use the % character anywhere within superset specific reserved words and predefined identifiers.

to:

An uncoordinated language superset is a compliant language superset for which no reserved words, identifiers or pragma symbols are reserved. Such a superset may define any additional reserved words, predefined identifiers and language pragmas as long as they start with a single @ character. Implementations that target the OpenVMS operating system may define platform specific reserved words, predefined identifiers and pragmas as long as they contain at least one % character.

2015-09-19 06:46 by trijezdci -
Changed line 322 from:

An uncoordinated language superset is a compliant language superset for which no reserved words, identifiers or pragma symbols are reserved. Such a superset may define any additional reserved words, predefined identifiers and language pragmas as long as they start with a single @ character. For implementations that target the OpenVMS operating system, the % character is reserved as a legal character of reserved words and predefined identifiers.

to:

An uncoordinated language superset is a compliant language superset for which no reserved words, identifiers or pragma symbols are reserved. Such a superset may define any additional reserved words, predefined identifiers and language pragmas as long as they start with a single @ character. Implementations that target the OpenVMS operating system, may use the % character anywhere within superset specific reserved words and predefined identifiers.

2015-09-19 06:43 by trijezdci -
Changed line 322 from:

An uncoordinated language superset is a compliant language superset for which no reserved words, identifiers or pragma symbols are reserved. Such a superset may define any additional reserved words, predefined identifiers and language pragmas as long as they start with a single @ character. For implementations that target the OpenVMS operating system, the % character is reserved as a legal character within reserved words and identifiers.

to:

An uncoordinated language superset is a compliant language superset for which no reserved words, identifiers or pragma symbols are reserved. Such a superset may define any additional reserved words, predefined identifiers and language pragmas as long as they start with a single @ character. For implementations that target the OpenVMS operating system, the % character is reserved as a legal character of reserved words and predefined identifiers.

2015-09-19 06:41 by trijezdci -
Changed lines 312-314 from:
Objective
Modula-2
Special Symbols`
Reserved Words and IdentifiersBYCOPY BYREF CLASS CONTINUE CRITICAL INOUT METHOD ON OPTIONAL OUT PRIVATE PROTECTED PROTOCOL PUBLIC TRY NO OBJECT YES
to:
Objective
Modula-2
Core Language` BYCOPY BYREF CLASS CONTINUE CRITICAL INOUT METHOD ON OPTIONAL OUT PRIVATE PROTECTED PROTOCOL PUBLIC TRY NO OBJECT YES
Changed line 316 from:
Reserved WordsALL PARALLEL SYNC
to:
Core LanguageALL PARALLEL SYNC
2015-09-19 06:36 by trijezdci -
Changed line 323 from:

An uncoordinated language superset is a compliant language superset for which no specific symbols are reserved. Such a superset may define any additional reserved words, predefined identifiers and language pragmas as long as they start with a single @ character. For implementations that target the OpenVMS operating system, the % character is reserved as a legal character within reserved words and identifiers.

to:

An uncoordinated language superset is a compliant language superset for which no reserved words, identifiers or pragma symbols are reserved. Such a superset may define any additional reserved words, predefined identifiers and language pragmas as long as they start with a single @ character. For implementations that target the OpenVMS operating system, the % character is reserved as a legal character within reserved words and identifiers.

2015-09-19 06:32 by trijezdci -
Changed lines 327-328 from:
 @TRY @CATCH (* universal superset specific reserved words *)
 %DESCR %IMMED (* OpenVMS superset specific reserved words *)
to:
 @TRY @CATCH (* possible reserved words of a language superset *)
 %DESCR %IMMED (* possible reserved words of an OpenVMS specific superset *)
2015-09-19 06:28 by trijezdci -
Changed lines 327-328 from:
 @@TRY @CATCH (* universal superset specific reserved words *)@
 @%DESCR %IMMED (* OpenVMS superset specific reserved words *)@@
to:
 @TRY @CATCH (* universal superset specific reserved words *)
 %DESCR %IMMED (* OpenVMS superset specific reserved words *)
2015-09-19 06:28 by trijezdci -
Changed line 328 from:
 @%DESCR %IMMED (* %Open VMS?% superset specific reserved words *)@@
to:
 @%DESCR %IMMED (* OpenVMS superset specific reserved words *)@@
2015-09-19 06:27 by trijezdci -
Changed lines 327-328 from:

@TRY @CATCH (* universal superset specific reserved words *) %DESCR %IMMED (* OpenVMS superset specific reserved words *)

to:
 @@TRY @CATCH (* universal superset specific reserved words *)@
 @%DESCR %IMMED (* %Open VMS?% superset specific reserved words *)@@
2015-09-19 06:26 by trijezdci -
Changed lines 327-328 from:
 @TRY @CATCH (* superset specific reserved words *)

%DESCR %IMMED (* superset specific reserved words for OpenVMS *)

to:

@TRY @CATCH (* universal superset specific reserved words *) %DESCR %IMMED (* OpenVMS superset specific reserved words *)

2015-09-19 06:24 by trijezdci -
Changed line 328 from:
 IMMED (* superset specific reserved words for Open VMS? *)
to:

%DESCR %IMMED (* superset specific reserved words for OpenVMS *)

2015-09-19 06:23 by trijezdci -
Changed lines 323-331 from:

An uncoordinated language superset is a compliant language superset for which no specific symbols are reserved. Such a superset may define any additional reserved words, predefined identifiers and language pragmas as long as they are prefixed with the @ mark.

to:

An uncoordinated language superset is a compliant language superset for which no specific symbols are reserved. Such a superset may define any additional reserved words, predefined identifiers and language pragmas as long as they start with a single @ character. For implementations that target the OpenVMS operating system, the % character is reserved as a legal character within reserved words and identifiers.

Examples:

 @TRY @CATCH (* superset specific reserved words *)
 IMMED (* superset specific reserved words for Open VMS? *)
2015-09-19 06:18 by trijezdci -
Added lines 319-324:

Symbols Reserved for Uncoordinated Superset Use

An uncoordinated language superset is a compliant language superset for which no specific symbols are reserved. Such a superset may define any additional reserved words, predefined identifiers and language pragmas as long as they are prefixed with the @ mark.

2015-09-19 05:54 by trijezdci -
Changed line 314 from:
Reserved Words
and Identifiers
BYCOPY BYREF CLASS CONTINUE CRITICAL INOUT METHOD ON OPTIONAL OUT PRIVATE PROTECTED PROTOCOL PUBLIC TRY NO OBJECT YES
to:
Reserved Words and IdentifiersBYCOPY BYREF CLASS CONTINUE CRITICAL INOUT METHOD ON OPTIONAL OUT PRIVATE PROTECTED PROTOCOL PUBLIC TRY NO OBJECT YES
2015-09-19 05:53 by trijezdci -
Changed line 314 from:
Reserved Words and IdentifiersBYCOPY BYREF CLASS CONTINUE CRITICAL INOUT METHOD ON OPTIONAL OUT PRIVATE PROTECTED PROTOCOL PUBLIC TRY NO OBJECT YES
to:
Reserved Words
and Identifiers
BYCOPY BYREF CLASS CONTINUE CRITICAL INOUT METHOD ON OPTIONAL OUT PRIVATE PROTECTED PROTOCOL PUBLIC TRY NO OBJECT YES
2015-09-19 05:52 by trijezdci -
Changed line 312 from:
to:
2015-09-19 05:52 by trijezdci -
Changed lines 314-315 from:
Reserved WordsBYCOPY BYREF CLASS CONTINUE CRITICAL INOUT METHOD ON OPTIONAL OUT PRIVATE PROTECTED PROTOCOL PUBLIC TRY
Predefined IdentifiersNO OBJECT YES
to:
Reserved Words and IdentifiersBYCOPY BYREF CLASS CONTINUE CRITICAL INOUT METHOD ON OPTIONAL OUT PRIVATE PROTECTED PROTOCOL PUBLIC TRY NO OBJECT YES
2015-09-19 05:40 by trijezdci -
Changed line 301 from:
FacilitySymbols Reserved for Use by Facility
to:
FacilityReserved Symbols
Changed line 311 from:
SupersetSymbols Reserved for Use by Superset
to:
SupersetReserved Symbols
2015-09-19 04:58 by trijezdci -
Changed lines 301-304 from:
FacilitySymbols Reserved for Use by Facility
Symbolic Inline AssemblerASSEMBLER ASM REG
Future Use (Phase II Deliverables)ACTOR PRIORITY
to:
FacilitySymbols Reserved for Use by Facility
Symbolic Inline AssemblerASSEMBLER ASM REG
Future Use (Phase II Deliverables)ACTOR PRIORITY
Changed line 321 from:
Single‑Pass
Compilers
PragmasFORWARD
to:
Single‑Pass
Compilers
PragmasFORWARD
2015-09-19 04:50 by trijezdci -
Changed lines 306-307 from:
Symbols Reserved for Use by Coordinated Language Supersets
to:
Symbols Reserved for Coordinated Superset Use
Added line 320:
2015-09-19 04:46 by trijezdci -
Changed line 293 from:

Symbols Reserved for Language Extensions and Utilities

to:

Reserved Symbols

2015-09-19 04:46 by trijezdci -
Changed line 295 from:

Certain symbols are reserved for use by optional language facilities, language extensions and external source code processing utilities. Others are taboo or reserved for future use.

to:

Certain symbols are reserved for use by optional language facilities, language extensions and external source code processing utilities. Some are specifically reserved for future use.

2015-09-19 04:45 by trijezdci -
Changed line 295 from:

Although not part of the language itself, certain symbols are reserved for use by language extensions and external source code processing utilities. Others are taboo or reserved for possible future use.

to:

Certain symbols are reserved for use by optional language facilities, language extensions and external source code processing utilities. Others are taboo or reserved for future use.

2015-09-19 04:41 by trijezdci -
Changed line 298 from:
Symbols Reserved for Optional and Future Language Facilities
to:
Symbols Reserved for Optional and Future Use
2015-09-19 04:38 by trijezdci -
Changed line 298 from:
Symbols Reserved for Optional Language Facilities
to:
Symbols Reserved for Optional and Future Language Facilities
2015-09-19 04:37 by trijezdci -
Changed line 303 from:
Phase II DeliverablesACTOR PRIORITY
to:
Future Use (Phase II Deliverables)ACTOR PRIORITY
2015-09-19 04:34 by trijezdci -
Changed line 302 from:
Pseudo-Module ASSEMBLERASSEMBLER ASM REG
to:
Symbolic Inline AssemblerASSEMBLER ASM REG
2015-09-19 04:31 by trijezdci -
Changed lines 297-305 from:

to:

Symbols Reserved for Optional Language Facilities
FacilitySymbols Reserved for Use by Facility
Pseudo-Module ASSEMBLERASSEMBLER ASM REG
Phase II DeliverablesACTOR PRIORITY

2015-09-19 04:08 by trijezdci -
Changed lines 312-313 from:
Single-Pass
Compilers
PragmasFORWARD
to:
Single‑Pass
Compilers
PragmasFORWARD
2015-09-19 04:06 by trijezdci -
Changed line 304 from:
to:
Changed line 309 from:
to:
Changed line 312 from:
Single Pass CompilersPragmasFORWARD
to:
Single-Pass
Compilers
PragmasFORWARD
2015-09-19 04:04 by trijezdci -
Added lines 309-312:
Parallel Modula-2Reserved WordsALL PARALLEL SYNC
PragmasLOCAL SPREAD CYCLE SBLOCK CBLOCK
Single Pass CompilersPragmasFORWARD
2015-09-19 04:01 by trijezdci -
Changed line 306 from:
Reserved WordsBYCOPY BYREF CLASS CONTINUE CRITICAL INOUT METHOD ON OPTIONAL OUT PRIVATE PROTECTED PROTOCOL PUBLIC TRY@@
to:
Reserved WordsBYCOPY BYREF CLASS CONTINUE CRITICAL INOUT METHOD ON OPTIONAL OUT PRIVATE PROTECTED PROTOCOL PUBLIC TRY
2015-09-19 04:01 by trijezdci -
Changed lines 306-308 from:
Reserved WordsBYCOPY BYREF CLASS CONTINUE CRITICAL INOUT METHOD ON OPTIONAL OUT PRIVATE PROTECTED PROTOCOL PUBLIC TRY
Predefined IdentifiersNO OBJECT YES
PragmasACTION FRAMEWORK OUTLET QUALIFIED
to:
Reserved WordsBYCOPY BYREF CLASS CONTINUE CRITICAL INOUT METHOD ON OPTIONAL OUT PRIVATE PROTECTED PROTOCOL PUBLIC TRY@@
Predefined IdentifiersNO OBJECT YES
PragmasACTION FRAMEWORK OUTLET QUALIFIED
2015-09-19 03:58 by trijezdci -
Changed lines 303-304 from:
SupersetSymbols Reserved for Use by Superset
to:
SupersetSymbols Reserved for Use by Superset
2015-09-19 03:57 by trijezdci -
Added line 281:

Changed lines 290-309 from:

Any other control codes within a source file shall cause a compile time error. An unrecognised BOM shall cause a fatal compile time error. Encoding support other than ASCII and UTF8 is implementation defined.

to:

Any other control codes within a source file shall cause a compile time error. An unrecognised BOM shall cause a fatal compile time error. Encoding support other than ASCII and UTF8 is implementation defined.

Symbols Reserved for Language Extensions and Utilities

Although not part of the language itself, certain symbols are reserved for use by language extensions and external source code processing utilities. Others are taboo or reserved for possible future use.

Symbols Reserved for Use by Coordinated Language Supersets

A coordinated language superset is a compliant language superset for whose exclusive use certain symbols are reserved. The reserved symbols of coordinated language supersets are listed below:

SupersetSymbols Reserved for Use by Superset
I Objective? Modula-2Special Symbols`
Reserved WordsBYCOPY BYREF CLASS CONTINUE CRITICAL INOUT METHOD ON OPTIONAL OUT PRIVATE PROTECTED PROTOCOL PUBLIC TRY
Predefined IdentifiersNO OBJECT YES
PragmasACTION FRAMEWORK OUTLET QUALIFIED
2015-09-19 02:19 by trijezdci -
Changed line 207 from:
to:
2015-09-19 02:18 by trijezdci -
Added lines 140-141:
Added lines 193-194:
Added lines 207-208:
Added lines 238-239:
Added lines 252-253:
Added lines 265-266:
2015-09-19 02:11 by trijezdci -
Changed line 102 from:
to:
2015-09-19 02:11 by trijezdci -
Deleted line 97:
Added lines 101-102:
2015-09-19 02:10 by trijezdci -
Deleted line 98:
2015-09-19 02:09 by trijezdci -
Changed line 98 from:
to:
2015-09-19 02:07 by trijezdci -
Changed lines 96-97 from:

Identifiers   EBNF

to:

Identifiers

  EBNF | Syntax Diagram

2015-09-19 02:05 by trijezdci -
Changed lines 2-3 from:

Character Sets

to:

Character Sets

Changed lines 7-8 from:

Reserved Words

to:

Reserved Words

Changed lines 26-27 from:

Schrödinger's Tokens

to:

Schrödinger's Tokens

Changed lines 43-44 from:

Special Symbols

to:

Special Symbols

Changed lines 54-55 from:

Operators

to:
Operators
Changed lines 61-62 from:

Punctuation

to:
Punctuation
Changed lines 68-69 from:

Grouping Delimiters

to:
Grouping Delimiters
Changed lines 75-76 from:

Quoted Text Delimiters

to:
Quoted Text Delimiters
Changed lines 82-83 from:

Comment Delimiters

to:
Comment Delimiters
Changed lines 89-90 from:

Pragma Punctuation and Delimiters

to:
Pragma Punctuation and Delimiters
Changed line 96 from:

Identifiers \

to:

Identifiers \

Changed lines 110-111 from:

Reserved Identifiers

to:
Reserved Identifiers
Changed lines 118-119 from:

User-Definable Identifiers

to:
User-Definable Identifiers
Changed lines 123-124 from:

Literals

to:

Literals

Changed lines 131-132 from:

Numeric literals

to:
Numeric literals
Changed lines 140-141 from:

Decimal Number Literals

to:
Decimal Number Literals
Changed lines 152-153 from:

Base-2 Number Literals

to:

Base-2 Number Literals

Changed lines 163-164 from:

Base-16 Number Literals

to:

Base-16 Number Literals

Changed lines 174-175 from:

Character Code Literals

to:

Character Code Literals

Changed lines 186-187 from:

String Literals

to:

String Literals

Changed lines 198-199 from:

Structured Literals

to:

Structured Literals

Changed lines 212-213 from:

Non-Semantic Symbols

to:

Non-Semantic Symbols

Changed lines 220-221 from:

Comments

to:
Comments
Changed lines 227-228 from:

Line Comments

to:
Line Comments
Changed lines 239-240 from:

Block Comments

to:
Block Comments
Changed lines 249-250 from:

Pragmas

to:
Pragmas
Changed lines 262-263 from:

Lexical Separators

to:

Lexical Separators

Changed line 268 from:

Control Codes

to:
Control Codes
2015-09-19 02:01 by trijezdci -
Changed lines 96-97 from:

Identifiers

to:

Identifiers   EBNF

2015-09-18 23:03 by trijezdci -
Changed line 57 from:
 +   -   *   *.   /   \   =   #   >   >=   <   <=   ==   ::   &
to:
 +   -   *   *.   /   \   =   #   <   <=   >   >=   ==   ::   ^   &
Changed line 64 from:
 .   ,   :   ;   |   ^   ~   +   *   ..   :=   ++   --   ->   <>   ><   +/-
to:
 .   ,   :   ;   |   ~   +   *   <   >   ..   :=   ++   --   ->   <>   ><   +/-
2015-09-18 22:53 by trijezdci -
Changed lines 51-52 from:
to:
Changed line 89 from:

Pragma Affix and Delimiters

to:

Pragma Punctuation and Delimiters

2015-09-18 16:35 by trijezdci -
Changed line 98 from:

Identifiers are names for syntactic entities in a program. The start with a letter, low-line or dollar sign, followed by any number and combination of letters, low-lines, dollar signs and digits.

to:

Identifiers are names for syntactic entities in a program. They start with a letter, low-line or dollar sign, followed by any number and combination of letters, low-lines, dollar signs and digits.

2015-09-18 16:15 by trijezdci -
Changed lines 222-223 from:
  • line comments
  • block comments
to:
2015-09-18 16:13 by trijezdci -
Changed line 113 from:
to:
2015-09-18 16:12 by trijezdci -
Changed lines 28-29 from:

Schrödinger's tokens are symbols that may either be used as reserved words or as identifiers, depending on context. There are 32 Schrödinger's tokens:

to:

Schrödinger's tokens are symbols that may either be used as reserved words or as identifiers, depending on context. There are 32 Schrödinger's tokens:

Changed lines 46-52 from:
  • operators
  • punctuation
  • grouping delimiters
  • quoted text delimiters
  • comment delimiters
  • pragma affix and delimiters
to:
Changed line 113 from:
  • Schrödinger's tokens
to:
Changed lines 214-216 from:
  • comments
  • pragmas
  • lexical separators
to:
2015-09-18 16:05 by trijezdci -
Changed line 250 from:

Pragmas are in-source directives to control or influence the compilation process but they do not change the meaning of the program. They consist of a pragma body enclosed in opening <* and closing *> pragma delimiters.

to:

Pragmas are in-source compiler directives to control or influence the compilation process but they do not change the meaning of the program. They consist of a pragma body enclosed in opening <* and closing *> pragma delimiters.

2015-09-18 16:04 by trijezdci -
Changed line 228 from:

Line comments start with a ! symbol at the first column of a line and terminate at the end of the same line. They are intended for in-source documentation.

to:

Line comments start with a ! symbol at the first column of a line and terminate at the end of the same line. They are intended for in-source documentation, for example in combination with documentation generators.

2015-09-18 16:00 by trijezdci -
Changed line 57 from:
 +  -  *  *.  /  \  =  #  >  >=  <  <=  ==  ::  &
to:
 +   -   *   *.   /   \   =   #   >   >=   <   <=   ==   ::   &
Changed line 64 from:
 .  ,  :  ;  |  ^  ~  +  *  ..  :=  ++  --  ->  <>  ><  +/-
to:
 .   ,   :   ;   |   ^   ~   +   *   ..   :=   ++   --   ->   <>   ><   +/-
Changed line 71 from:
 (  )  [  ]  {  }
to:
 (  )   [  ]   {  }
Changed line 78 from:
 '  "  <<  >>
to:
 '   "   <<  >>
Changed line 85 from:
 !  (*  *)
to:
 !   (*  *)
Changed line 92 from:
 ?  <*  *>
to:
 ?   <*  *>
2015-09-18 15:58 by trijezdci -
Changed lines 54-55 from:

Operators

to:

Operators

Changed lines 61-62 from:

Punctuation

to:

Punctuation

Changed lines 68-69 from:

Grouping Delimiters

to:

Grouping Delimiters

Changed lines 75-76 from:

Quoted Text Delimiters

to:

Quoted Text Delimiters

Changed lines 82-83 from:

Comment Delimiters

to:

Comment Delimiters

Changed line 89 from:

Pragma Affix and Delimiters

to:

Pragma Affix and Delimiters

2015-09-18 15:57 by trijezdci -
Changed line 45 from:

Special symbols are symbols that consist of one, two or three non-alphanumeric quotable characters, are visible in any scope, have special meaning in the language and may not be redefined. They fall into four categories:

to:

Special symbols are symbols that consist of one, two or three non-alphanumeric quotable characters, are visible in any scope, have special meaning in the language and may not be redefined. They fall into six categories:

Added lines 50-51:
  • comment delimiters
  • pragma affix and delimiters
2015-09-18 15:56 by trijezdci -
Added lines 6-41:

Reserved Words

Reserved words are symbols that consist of a sequence of all-uppercase letters, are visible in any scope, have special meaning in the language and may not be redefined. There are 50 reserved words:

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

Schrödinger's Tokens

Schrödinger's tokens are symbols that may either be used as reserved words or as identifiers, depending on context. There are 32 Schrödinger's tokens:

 ABS             INSERT          STORE           TMAX            VAL
 ADDRESS         LENGTH          SUBSET          TMIN            VALUE
 APPEND          OCTET           SXF             TORDERED        WRITE
 CAST            READ            TDYN            TREFC           WRITEF
 COUNT           READNEW         TFLAGS          TSCALAR
 COROUTINE       REMOVE          TLIMIT          TSORTED
 EXISTS          SEEK            TLITERAL        UNSAFE
Changed lines 45-132 from:
CategorySymbolUsageLexical Scope
Intra-Literal \ Escape Prefix for LF and TABWithin Quoted Literals
' Digit SeparatorWithin Number Literals
. Decimal PointWithin Real Number Literals
+ - Exponent Sign
Special
Operators
:: Type ConversionWithin Expressions
== Identity TestWithin ADT Expressions
& Array, List and String ConcatenationWithin Array, List and String Expressions
Arithmetic
Operators
+ Unary Plus, AdditionWithin Arithmetic Expressions
- Unary Minus, Subtraction
* Multiplication
/ Real Division
*. Dot Product
Relational
Operators
= Equality TestWithin Arithmetic Expressions
# Inequality Test
> Greater-Than Test
>= Greater-Or-Equal Test
< Less-Than Test
<= Less-Or-Equal Test
Set
Operators
+ Set UnionWithin Set Expressions
\ Set Difference
* Set Intersection
/ Symmetric Set Difference
> Proper Superset Test
>= Superset Test
< Proper Subset Test
<= Subset Test
Special Syntax + Re-Export Suffix, Enumeration Extension Prefix 
* Wildcard Import Suffix, Restricted Export Prefix 
:= Assignment 
++ Increment Statement Suffix, FOR Loop Ascender 
-- Decrement Statement Suffix, FOR Loop Descender 
.. Subrange Constructor, Slice Range Specifier 
^ Pointer Dereferencing Suffix 
-> One-Way DependencyBlueprint
<> Mutual Dependency ConstraintBlueprint
>< Mutual Exclusion ConstraintBlueprint
+/- Unary Minus Binding SpecifierBlueprint
Punctuation . Name SeparatorWithin Qualified Identifier
Module TerminatorEnd of Module
, Item SeparatorWithin Item List
; List SeparatorWithin Declaration and Statement Sequences
: Head Body SeparatorWithin Declarations and Formal Parameters
| Case Label PrefixWithin Case Label List
Terminator PrefixWithin Formal Parameters
Delimiters ' " Quoted String Literal DelimitersWithin Expressions
( ) Expression Grouping, Parameter List DelimitersWithin Expressions, Procedure Headers
{ } Structured Value DelimitersWithin Expressions, Formal Parameters
[ ] Array Index, Subrange and Slice DelimitersWithin Expressions
<< >> Replacement Text DelimitersWithin Library Generation Directive
Comments ! Line Comment PrefixAt First Column of Any Line
(* *) Block Comment DelimitersAnywhere Before or After a Token
Pragmas ? Value Pragma Query PrefixWithin Message Pragma
<* *> Pragma DelimitersBefore or After Certain Tokens

Literals

There are three types of literals:

Numeric literals

Numeric literals represent a numeric compile time value. There are four types:

Decimal Number Literals

Decimal number literals represent decimal whole and real numbers. They are comprised of a mandatory integral part followed by an optional fractional part followed by an optional exponent. Integral and fractional part are separated by a decimal point. Fractional part and exponent are separated by the exponent prefix e followed by an optional sign. Integral part, fractional part and exponent are comprised of a non-empty sequence of decimal digits. Digits may be grouped using the single quote as a digit separator. A digit separator may only appear in between two digits.

to:

Special symbols are symbols that consist of one, two or three non-alphanumeric quotable characters, are visible in any scope, have special meaning in the language and may not be redefined. They fall into four categories:

  • operators
  • punctuation
  • grouping delimiters
  • quoted text delimiters

Operators

Changed lines 55-58 from:

Examples:

 0, 42, 12300, 32767 (* whole numbers *)
 0.0, 3.1415, 7.531e+12 (* real numbers *)
 1'234'500'000, 0.987'654'321e+99 (* with digit separators *)
to:
 +  -  *  *.  /  \  =  #  >  >=  <  <=  ==  ::  &
Changed lines 58-62 from:

Base-2 Number Literals

Base-2 number literals represent whole numbers in base-2 notation. They are comprised of base-2 number prefix 0b followed by a non-empty sequence of base-2 digits. Digits may be grouped using the single quote as a digit separator. A digit separator may only appear in between two digits.

to:

Punctuation

Changed lines 62-64 from:

Examples:

 0b0110 (* without digit separator *)
 0b1111'0000'0101'0011 (* with digit separators *)
to:
 .  ,  :  ;  |  ^  ~  +  *  ..  :=  ++  --  ->  <>  ><  +/-
Changed lines 65-69 from:

Base-16 Number Literals

Base-16 number literals represent whole numbers in base-16 notation. They are comprised of base-16 number prefix 0x followed by a non-empty sequence of base-16 digits. Digits may be grouped using the single quote as a digit separator. A digit separator may only appear in between two digits.

to:

Grouping Delimiters

Changed lines 69-71 from:

Examples:

 0x80, 0xFF, 0xCAFED00D (* without digit separator *)
 0x00'00'FF'FF, 0xDEAD'BEEF (* with digit separators *)
to:
 (  )  [  ]  {  }
Changed lines 72-76 from:

Character Code Literals

Character code literals represent Unicode code points in base-16 notation. They are comprised of Unicode prefix 0u followed by a non-empty sequence of base-16 digits. Digits may be grouped using the single quote as a digit separator. A digit separator may only appear in between two digits.

to:

Quoted Text Delimiters

Changed lines 76-79 from:

Examples:

 0u7F (* DEL *)
 0uA9 (* copyright *)
 0u20'AC (* Euro currency sign *)
to:
 '  "  <<  >>
Changed lines 79-83 from:

String Literals

String literals are sequences of quotable characters and optional escape sequences, enclosed in single quotes or double quotes. String literals may not contain any control code characters.

to:

Comment Delimiters

Changed lines 83-86 from:

Examples:

 "it's nine o'clock"
 'he said "Modula-2" and smiled'
 "this is the end of the line\n"
to:
 !  (*  *)
Changed lines 86-90 from:

Structured Literals

Structured literals are compound values consisting of zero or more terminal symbols, enclosed in braces. Structured literals may be nested.

to:

Pragma Affix and Delimiters

Changed lines 90-94 from:

Examples:

 { 1, 2, 3 }
 { "a", "b", "c" }
 { 1 .. 5 }   (* equivalent to: *)   { 1, 2, 3, 4, 5 }
 { 0 BY 5 }   (* equivalent to: *)   { 0, 0, 0, 0, 0 }
to:
 ?  <*  *>
Changed lines 93-97 from:

Reserved Words

Reserved words are symbols that consist of a sequence of all-uppercase letters, are visible in any scope, have special meaning in the language and may not be redefined. There are 50 reserved words:

to:

Identifiers

Identifiers are names for syntactic entities in a program. The start with a letter, low-line or dollar sign, followed by any number and combination of letters, low-lines, dollar signs and digits.

The use of the low-line and dollar sign within identifiers is permitted in support of environments and platforms where they are an integral part of the naming convention, for instance when writing components for or mapping to operating system APIs that use them. However, such an identifier must also contain at least one letter or digit. A non-conformant identifier shall cause a compile time error. The definition of an identifier in a foreign API style shall cause a soft compile time warning. However, the warning may be automatically silenced when FFI of module UNSAFE is imported into the scope of the compiling module.

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

Examples:

 (* Modula-2 style *)  Foo, setBar, getBaz, Str80, Matrix8x4, FOOBAR
 (* Foreign API styles *)  _foo, __bar, __baz__, foo_bar_123, $foo, sys$foo, SYS$BAR
Deleted lines 105-133:

Schrödinger's Tokens

Schrödinger's tokens are symbols that may either be used as reserved words or as identifiers, depending on context. There are 32 Schrödinger's tokens:

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

Identifiers

Identifiers are names for syntactic entities in a program. The start with a letter, low-line or dollar sign, followed by any number and combination of letters, low-lines, dollar signs and digits.

The use of the low-line and dollar sign within identifiers is permitted in support of environments and platforms where they are an integral part of the naming convention, for instance when writing components for or mapping to operating system APIs that use them. However, such an identifier must also contain at least one letter or digit. A non-conformant identifier shall cause a compile time error. The definition of an identifier in a foreign API style shall cause a soft compile time warning. However, the warning may be automatically silenced when FFI of module UNSAFE is imported into the scope of the compiling module.

Examples:

 (* Modula-2 style *)  Foo, setBar, getBaz, Str80, Matrix8x4, FOOBAR
 (* Foreign API styles *)  _foo, __bar, __baz__, foo_bar_123, $foo, sys$foo, SYS$BAR
Added lines 118-206:

Literals

There are three types of literals:

Numeric literals

Numeric literals represent a numeric compile time value. There are four types:

Decimal Number Literals

Decimal number literals represent decimal whole and real numbers. They are comprised of a mandatory integral part followed by an optional fractional part followed by an optional exponent. Integral and fractional part are separated by a decimal point. Fractional part and exponent are separated by the exponent prefix e followed by an optional sign. Integral part, fractional part and exponent are comprised of a non-empty sequence of decimal digits. Digits may be grouped using the single quote as a digit separator. A digit separator may only appear in between two digits.

Examples:

 0, 42, 12300, 32767 (* whole numbers *)
 0.0, 3.1415, 7.531e+12 (* real numbers *)
 1'234'500'000, 0.987'654'321e+99 (* with digit separators *)

Base-2 Number Literals

Base-2 number literals represent whole numbers in base-2 notation. They are comprised of base-2 number prefix 0b followed by a non-empty sequence of base-2 digits. Digits may be grouped using the single quote as a digit separator. A digit separator may only appear in between two digits.

Examples:

 0b0110 (* without digit separator *)
 0b1111'0000'0101'0011 (* with digit separators *)

Base-16 Number Literals

Base-16 number literals represent whole numbers in base-16 notation. They are comprised of base-16 number prefix 0x followed by a non-empty sequence of base-16 digits. Digits may be grouped using the single quote as a digit separator. A digit separator may only appear in between two digits.

Examples:

 0x80, 0xFF, 0xCAFED00D (* without digit separator *)
 0x00'00'FF'FF, 0xDEAD'BEEF (* with digit separators *)

Character Code Literals

Character code literals represent Unicode code points in base-16 notation. They are comprised of Unicode prefix 0u followed by a non-empty sequence of base-16 digits. Digits may be grouped using the single quote as a digit separator. A digit separator may only appear in between two digits.

Examples:

 0u7F (* DEL *)
 0uA9 (* copyright *)
 0u20'AC (* Euro currency sign *)

String Literals

String literals are sequences of quotable characters and optional escape sequences, enclosed in single quotes or double quotes. String literals may not contain any control code characters.

Examples:

 "it's nine o'clock"
 'he said "Modula-2" and smiled'
 "this is the end of the line\n"

Structured Literals

Structured literals are compound values consisting of zero or more terminal symbols, enclosed in braces. Structured literals may be nested.

Examples:

 { 1, 2, 3 }
 { "a", "b", "c" }
 { 1 .. 5 }   (* equivalent to: *)   { 1, 2, 3, 4, 5 }
 { 0 BY 5 }   (* equivalent to: *)   { 0, 0, 0, 0, 0 }
2015-09-18 15:24 by trijezdci -
Added line 167:
Added line 186:
2015-09-18 15:23 by trijezdci -
Changed line 182 from:

Schrödinger's tokens

to:

Schrödinger's Tokens

2015-09-18 15:21 by trijezdci -
Added lines 179-193:

Schrödinger's tokens

Schrödinger's tokens are symbols that may either be used as reserved words or as identifiers, depending on context. There are 32 Schrödinger's tokens:

 ABS             INSERT          STORE           TMAX            VAL
 ADDRESS         LENGTH          SUBSET          TMIN            VALUE
 APPEND          OCTET           SXF             TORDERED        WRITE
 CAST            READ            TDYN            TREFC           WRITEF
 COUNT           READNEW         TFLAGS          TSCALAR
 COROUTINE       REMOVE          TLIMIT          TSORTED
 EXISTS          SEEK            TLITERAL        UNSAFE
2015-09-18 15:07 by trijezdci -
Deleted line 166:
Deleted line 197:
Deleted line 210:
Deleted line 218:
Changed line 241 from:
 IF (* no match found *) this^.next = NIL THEN (* comment (* nested comment *) *)
to:
 IF (* no match found *) this^.next = NIL THEN (* comment (* nested comment *) *) ...
Deleted line 260:
Deleted line 266:
2015-09-18 15:03 by trijezdci -
Changed line 278 from:

Any other control codes within a source file shall cause a compile time error. An unrecognised BOM shall cause a fatal compile time error. Encoding support other than ASCII and UTF 8? is implementation defined.

to:

Any other control codes within a source file shall cause a compile time error. An unrecognised BOM shall cause a fatal compile time error. Encoding support other than ASCII and UTF8 is implementation defined.

2015-09-18 15:02 by trijezdci -
Changed line 276 from:
  • UTF 8?-BOM denoting code sequence { 9uEF, 0uBB, 0uBF } but permitted only at the very beginning of a file.
to:
  • UTF8-BOM denoting code sequence { 9uEF, 0uBB, 0uBF } but permitted only at the very beginning of a file.
2015-09-18 15:02 by trijezdci -
Added lines 261-278:

Lexical Separators

Lexical separators terminate a numeric literal, identifier, reserved word or a pragma symbol. There are two kinds.

  • Whitespace
  • Control Codes

Control Codes

The following control codes may appear within Modula-2 source text but not within string literals:

  • TAB denoting horizontal tabulator code 0u9
  • LF denoting line feed code 0uA
  • CR denoting carriage return code 0uD
  • UTF 8?-BOM denoting code sequence { 9uEF, 0uBB, 0uBF } but permitted only at the very beginning of a file.

Any other control codes within a source file shall cause a compile time error. An unrecognised BOM shall cause a fatal compile time error. Encoding support other than ASCII and UTF 8? is implementation defined.

2015-09-18 14:54 by trijezdci -
Changed line 258 from:
 <*G M2.Unroll Loops?=FALSE|WARN*> (* implementation defined pragma *)
to:
 <*GM2.UnrollLoops=FALSE|WARN*> (* implementation defined pragma *)
2015-09-18 14:54 by trijezdci -
Added lines 247-260:

Pragmas

Pragmas are in-source directives to control or influence the compilation process but they do not change the meaning of the program. They consist of a pragma body enclosed in opening <* and closing *> pragma delimiters.

A pragma body consists of a non-empty token sequence whose syntax is defined by the pragma grammar. Whitespace, tabulator and line breaks may occur between tokens within a pragma, but comments are not permitted. A comment delimiter within a pragma shall cause a compile time error. There are language defined and optional implementation defined pragmas.

Examples:

 <*ALIGN=TSIZE(LONGCARD)*> (* language defined pragma *)
 <*G M2.Unroll Loops?=FALSE|WARN*> (* implementation defined pragma *)
2015-09-18 14:44 by trijezdci -
Changed lines 229-230 from:

Line comments start with a ! symbol at the first column of a line and terminate at the end of the same line.

to:

Line comments start with a ! symbol at the first column of a line and terminate at the end of the same line. They are intended for in-source documentation.

Deleted lines 246-249:
2015-09-18 14:41 by trijezdci -
Changed line 245 from:
  IF (* no match found *) this^.next = NIL THEN (* comment (* nested comment *) *)
to:
 IF (* no match found *) this^.next = NIL THEN (* comment (* nested comment *) *)
2015-09-18 14:41 by trijezdci -
Added line 243:
2015-09-18 14:40 by trijezdci -
Changed lines 202-248 from:
  • all-uppercase identifiers of pseudo-modules including their module identifiers
to:
  • all-uppercase identifiers of standard pseudo-modules including their module identifiers

User-Definable Identifiers

Identifiers that do not coincide with reserved identifiers may be defined or redefined in any scope of a program or library module.

Non-Semantic Symbols

Non-semantic symbols are symbols that do not impact the meaning of a program. They may occur anywhere in a program before or after semantic symbols but not within them. There are three types:

  • comments
  • pragmas
  • lexical separators

Comments

Comments are ignored by a compiler but are for annotation and documentation. There are two kinds:

  • line comments
  • block comments

Line Comments

Line comments start with a ! symbol at the first column of a line and terminate at the end of the same line.

Examples:

 ! Special documentation tags for Doxygen:
 !! @brief Modula-2 Standard Library
 !! @authors B.Kowarsch & R.Sutcliffe

Block Comments

Block comments are delimited by opening (* and closing *) comment delimiters. They are intended for annotating source code. They may span multiple lines and they may be nested but in order to ensure portability of source code, a language defined arbitrary nesting limit of ten including the outermost comment is imposed. A compile time error shall occur if this limit is exceeded.

Examples:

  IF (* no match found *) this^.next = NIL THEN (* comment (* nested comment *) *)
2015-09-18 14:27 by trijezdci -
Changed lines 202-203 from:
  • module identifiers of pseudo-modules
to:
  • all-uppercase identifiers of pseudo-modules including their module identifiers
2015-09-18 14:15 by trijezdci -
Added lines 195-203:

Reserved Identifiers

Reserved identifiers are language defined identifiers that may not be redefined. Reserved are:

  • predefined identifiers
  • Schrödinger's tokens
  • module identifiers of pseudo-modules
2015-09-18 13:41 by trijezdci -
Changed line 187 from:

The use of the low-line and dollar sign within identifiers is permitted in support of environments and platforms where they are an integral part of the naming convention, for instance when writing components for or mapping to operating system APIs that use them. However, such an identifier must also contain at least one letter or digit. A non-conformant identifier shall cause a compile time error. The definition of an identifier in a foreign API style shall cause a soft compile time warning. The warning may be automatically silences when FFI of module UNSAFE is imported into the scope of the compiling module.

to:

The use of the low-line and dollar sign within identifiers is permitted in support of environments and platforms where they are an integral part of the naming convention, for instance when writing components for or mapping to operating system APIs that use them. However, such an identifier must also contain at least one letter or digit. A non-conformant identifier shall cause a compile time error. The definition of an identifier in a foreign API style shall cause a soft compile time warning. However, the warning may be automatically silenced when FFI of module UNSAFE is imported into the scope of the compiling module.

2015-09-18 13:40 by trijezdci -
Added lines 180-192:

Identifiers

Identifiers are names for syntactic entities in a program. The start with a letter, low-line or dollar sign, followed by any number and combination of letters, low-lines, dollar signs and digits.

The use of the low-line and dollar sign within identifiers is permitted in support of environments and platforms where they are an integral part of the naming convention, for instance when writing components for or mapping to operating system APIs that use them. However, such an identifier must also contain at least one letter or digit. A non-conformant identifier shall cause a compile time error. The definition of an identifier in a foreign API style shall cause a soft compile time warning. The warning may be automatically silences when FFI of module UNSAFE is imported into the scope of the compiling module.

Examples:

 (* Modula-2 style *)  Foo, setBar, getBaz, Str80, Matrix8x4, FOOBAR
 (* Foreign API styles *)  _foo, __bar, __baz__, foo_bar_123, $foo, sys$foo, SYS$BAR
2015-09-18 13:28 by trijezdci -
Changed line 172 from:
 ARGLIST         DO              IMPLEMENTATION   OPAQUE          SET
to:
 ARGLIST         DO              IMPLEMENTATION  OPAQUE          SET
2015-09-18 13:27 by trijezdci -
Changed lines 170-179 from:
 ALIAS            DEFINITION       GENLIB           NOT              RETAIN
 AND              DIV              IF               OF               RETURN
 ARGLIST          DO               IMPLEMENTATION   OPAQUE           SET
 ARRAY            ELSE             IMPORT           OR               THEN
 BEGIN            ELSIF            IN               POINTER          TO
 BLUEPRINT        END              LOOP             PROCEDURE        TYPE
 BY               ENUM             MOD              RECORD           UNTIL
 CASE             EXIT             MODULE           REFERENTIAL      VAR
 CONST            FOR              NEW              RELEASE          WHILE
 COPY             FROM             NONE             REPEAT           YIELD
to:
 ALIAS           DEFINITION      GENLIB          NOT             RETAIN
 AND             DIV             IF              OF              RETURN
 ARGLIST         DO              IMPLEMENTATION   OPAQUE          SET
 ARRAY           ELSE            IMPORT          OR              THEN
 BEGIN           ELSIF           IN              POINTER         TO
 BLUEPRINT       END             LOOP            PROCEDURE       TYPE
 BY              ENUM            MOD             RECORD          UNTIL
 CASE            EXIT            MODULE          REFERENTIAL     VAR
 CONST           FOR             NEW             RELEASE         WHILE
 COPY            FROM            NONE            REPEAT          YIELD
2015-09-18 13:26 by trijezdci -
Changed lines 170-179 from:
 ||ALIAS ||DEFINITION ||GENLIB ||NOT ||RETAIN ||
 ||AND ||DIV ||IF ||OF ||RETURN ||
ARGLISTDOIMPLEMENTATIONOPAQUESET
ARRAYELSEIMPORTORTHEN
BEGINELSIFINPOINTERTO
BLUEPRINTENDLOOPPROCEDURETYPE
BYENUMMODRECORDUNTIL
CASEEXITMODULEREFERENTIALVAR
CONSTFORNEWRELEASEWHILE
COPYFROMNONEREPEATYIELD
to:
 ALIAS            DEFINITION       GENLIB           NOT              RETAIN
 AND              DIV              IF               OF               RETURN
 ARGLIST          DO               IMPLEMENTATION   OPAQUE           SET
 ARRAY            ELSE             IMPORT           OR               THEN
 BEGIN            ELSIF            IN               POINTER          TO
 BLUEPRINT        END              LOOP             PROCEDURE        TYPE
 BY               ENUM             MOD              RECORD           UNTIL
 CASE             EXIT             MODULE           REFERENTIAL      VAR
 CONST            FOR              NEW              RELEASE          WHILE
 COPY             FROM             NONE             REPEAT           YIELD
2015-09-18 13:15 by trijezdci -
Changed lines 170-171 from:
ALIASDEFINITIONGENLIBNOTRETAIN
ANDDIVIFOFRETURN
to:
 ||ALIAS ||DEFINITION ||GENLIB ||NOT ||RETAIN ||
 ||AND ||DIV ||IF ||OF ||RETURN ||
2015-09-18 13:13 by trijezdci -
Changed lines 169-179 from:
ALIASDEFINITIONGENLIBNOTRETAIN
ANDDIVIFOFRETURN
ARGLISTDOIMPLEMENTATIONOPAQUESET
ARRAYELSEIMPORTORTHEN
BEGINELSIFINPOINTERTO
BLUEPRINTENDLOOPPROCEDURETYPE
BYENUMMODRECORDUNTIL
CASEEXITMODULEREFERENTIALVAR
CONSTFORNEWRELEASEWHILE
COPYFROMNONEREPEATYIELD
to:
ALIASDEFINITIONGENLIBNOTRETAIN
ANDDIVIFOFRETURN
ARGLISTDOIMPLEMENTATIONOPAQUESET
ARRAYELSEIMPORTORTHEN
BEGINELSIFINPOINTERTO
BLUEPRINTENDLOOPPROCEDURETYPE
BYENUMMODRECORDUNTIL
CASEEXITMODULEREFERENTIALVAR
CONSTFORNEWRELEASEWHILE
COPYFROMNONEREPEATYIELD
2015-09-18 13:09 by trijezdci -
Changed line 169 from:
to:
2015-09-18 13:08 by trijezdci -
Added lines 162-181:

Reserved Words

Reserved words are symbols that consist of a sequence of all-uppercase letters, are visible in any scope, have special meaning in the language and may not be redefined. There are 50 reserved words:

ALIASDEFINITIONGENLIBNOTRETAIN
ANDDIVIFOFRETURN
ARGLISTDOIMPLEMENTATIONOPAQUESET
ARRAYELSEIMPORTORTHEN
BEGINELSIFINPOINTERTO
BLUEPRINTENDLOOPPROCEDURETYPE
BYENUMMODRECORDUNTIL
CASEEXITMODULEREFERENTIALVAR
CONSTFORNEWRELEASEWHILE
COPYFROMNONEREPEATYIELD
2015-09-18 12:57 by trijezdci -
Changed lines 141-142 from:

String literals are sequences of quotable characters and optional escape sequences, enclosed in single quotes or double quotes. String literals may not contain any control code character.

to:

String literals are sequences of quotable characters and optional escape sequences, enclosed in single quotes or double quotes. String literals may not contain any control code characters.

Changed lines 151-161 from:

Structured Literals

to:

Structured Literals

Structured literals are compound values consisting of zero or more terminal symbols, enclosed in braces. Structured literals may be nested.

Examples:

 { 1, 2, 3 }
 { "a", "b", "c" }
 { 1 .. 5 }   (* equivalent to: *)   { 1, 2, 3, 4, 5 }
 { 0 BY 5 }   (* equivalent to: *)   { 0, 0, 0, 0, 0 }
2015-09-18 12:53 by trijezdci -
Changed lines 145-147 from:
 "it's nine o'clock" (* double quoted string containing single quotes *)
 'he said "Modula-2" and smiled' (* single quoted string containing double quotes *)
 "this is the end of the line\n" (* string containing the escape sequence for LF *)
to:
 "it's nine o'clock"
 'he said "Modula-2" and smiled'
 "this is the end of the line\n"
2015-09-18 12:52 by trijezdci -
Added lines 140-148:

String literals are sequences of quotable characters and optional escape sequences, enclosed in single quotes or double quotes. String literals may not contain any control code character.

Examples:

 "it's nine o'clock" (* double quoted string containing single quotes *)
 'he said "Modula-2" and smiled' (* single quoted string containing double quotes *)
 "this is the end of the line\n" (* string containing the escape sequence for LF *)
2015-09-18 12:48 by trijezdci -
Added lines 128-136:

Character code literals represent Unicode code points in base-16 notation. They are comprised of Unicode prefix 0u followed by a non-empty sequence of base-16 digits. Digits may be grouped using the single quote as a digit separator. A digit separator may only appear in between two digits.

Examples:

 0u7F (* DEL *)
 0uA9 (* copyright *)
 0u20'AC (* Euro currency sign *)
2015-09-18 12:45 by trijezdci -
Added lines 117-124:

Base-16 number literals represent whole numbers in base-16 notation. They are comprised of base-16 number prefix 0x followed by a non-empty sequence of base-16 digits. Digits may be grouped using the single quote as a digit separator. A digit separator may only appear in between two digits.

Examples:

 0x80, 0xFF, 0xCAFED00D (* without digit separator *)
 0x00'00'FF'FF, 0xDEAD'BEEF (* with digit separators *)
2015-09-18 12:42 by trijezdci -
Added lines 107-114:

Base-2 number literals represent whole numbers in base-2 notation. They are comprised of base-2 number prefix 0b followed by a non-empty sequence of base-2 digits. Digits may be grouped using the single quote as a digit separator. A digit separator may only appear in between two digits.

Examples:

 0b0110 (* without digit separator *)
 0b1111'0000'0101'0011 (* with digit separators *)
Changed lines 119-125 from:

Character Code Literals

to:

Character Code Literals

String Literals

Structured Literals

2015-09-18 12:38 by trijezdci -
Changed lines 79-81 from:
  • numeric literals
  • string literals
  • structured literals
to:
2015-09-18 12:36 by trijezdci -
Added line 75:

Added line 83:

Changed lines 87-91 from:
  • decimal number literals
  • base-2 number literals
  • base-16 number literals
  • character code literals
to:
Changed lines 102-111 from:
to:

Base-2 Number Literals

Base-16 Number Literals

Character Code Literals

2015-09-18 12:32 by trijezdci -
Changed lines 96-98 from:

0, 42, 12300, 32767 (* whole numbers *) 0.0, 3.1415, 7.531e+12 (* real numbers *) 1'234'500'000, 0.987'654'321e+99 (* with digit separators *)

to:
 0, 42, 12300, 32767 (* whole numbers *)
 0.0, 3.1415, 7.531e+12 (* real numbers *)
 1'234'500'000, 0.987'654'321e+99 (* with digit separators *)
2015-09-18 12:32 by trijezdci -
Changed lines 96-98 from:

0, 42, 12300, 32767 (* whole numbers *) 0.0, 3.1415, 7.531e+12 (* real numbers *) 1'234'500'000, 0.987'654'321e+99 (* with digit separators *)

to:

0, 42, 12300, 32767 (* whole numbers *) 0.0, 3.1415, 7.531e+12 (* real numbers *) 1'234'500'000, 0.987'654'321e+99 (* with digit separators *)

2015-09-18 12:31 by trijezdci -
Changed lines 75-81 from:
FooBarBaz
Bamcol2col3
col2col3
col2col3
Boocol2col3
col2col3
to:

Literals

There are three types of literals:

  • numeric literals
  • string literals
  • structured literals

Numeric literals

Numeric literals represent a numeric compile time value. There are four types:

  • decimal number literals
  • base-2 number literals
  • base-16 number literals
  • character code literals

Decimal Number Literals

Decimal number literals represent decimal whole and real numbers. They are comprised of a mandatory integral part followed by an optional fractional part followed by an optional exponent. Integral and fractional part are separated by a decimal point. Fractional part and exponent are separated by the exponent prefix e followed by an optional sign. Integral part, fractional part and exponent are comprised of a non-empty sequence of decimal digits. Digits may be grouped using the single quote as a digit separator. A digit separator may only appear in between two digits.

Examples: 0, 42, 12300, 32767 (* whole numbers *) 0.0, 3.1415, 7.531e+12 (* real numbers *) 1'234'500'000, 0.987'654'321e+99 (* with digit separators *)

2015-09-18 07:54 by trijezdci -
Added lines 42-53:
Special Syntax + Re-Export Suffix, Enumeration Extension Prefix 
* Wildcard Import Suffix, Restricted Export Prefix 
:= Assignment 
++ Increment Statement Suffix, FOR Loop Ascender 
-- Decrement Statement Suffix, FOR Loop Descender 
.. Subrange Constructor, Slice Range Specifier 
^ Pointer Dereferencing Suffix 
-> One-Way DependencyBlueprint
<> Mutual Dependency ConstraintBlueprint
>< Mutual Exclusion ConstraintBlueprint
+/- Unary Minus Binding SpecifierBlueprint
2015-09-18 07:29 by trijezdci -
Added lines 50-55:
Delimiters ' " Quoted String Literal DelimitersWithin Expressions
( ) Expression Grouping, Parameter List DelimitersWithin Expressions, Procedure Headers
{ } Structured Value DelimitersWithin Expressions, Formal Parameters
[ ] Array Index, Subrange and Slice DelimitersWithin Expressions
<< >> Replacement Text DelimitersWithin Library Generation Directive
2015-09-18 07:20 by trijezdci -
Added lines 53-55:
Pragmas ? Value Pragma Query PrefixWithin Message Pragma
<* *> Pragma DelimitersBefore or After Certain Tokens
2015-09-18 07:17 by trijezdci -
Added lines 50-52:
Comments ! Line Comment PrefixAt First Column of Any Line
(* *) Block Comment DelimitersAnywhere Before or After a Token
2015-09-18 07:10 by trijezdci -
Changed line 42 from:
to:
2015-09-18 07:08 by trijezdci -
Changed line 43 from:
. Name SeparatorWithin Qualified Identifier
to:
. Name SeparatorWithin Qualified Identifier
Changed lines 45-46 from:
, SeparatorWithin Item List
; SeparatorWithin Declaration and Statement Sequences
to:
, Item SeparatorWithin Item List
; List SeparatorWithin Declaration and Statement Sequences
Changed lines 48-49 from:
| Case Label PrefixWithin Case Label List
to:
| Case Label PrefixWithin Case Label List
Terminator PrefixWithin Formal Parameters
2015-09-18 07:05 by trijezdci -
Changed lines 44-45 from:
Module TerminatorEnd of Module
, I Separator?Within Item List
to:
Module TerminatorEnd of Module
, SeparatorWithin Item List
2015-09-18 07:04 by trijezdci -
Added lines 42-48:
Punctuation . Name SeparatorWithin Qualified Identifier
Module TerminatorEnd of Module
, I Separator?Within Item List
; SeparatorWithin Declaration and Statement Sequences
: Head Body SeparatorWithin Declarations and Formal Parameters
| Case Label PrefixWithin Case Label List
2015-09-18 06:51 by trijezdci -
Changed line 20 from:
to:
Changed line 26 from:
to:
Changed line 33 from:
to:
2015-09-18 06:51 by trijezdci -
Changed line 9 from:
to:
2015-09-18 06:50 by trijezdci -
Changed line 9 from:
to:
2015-09-18 06:50 by trijezdci -
Changed lines 21-25 from:
+ Unary Plus, AdditionWithin Arithmetic Expressions
- Unary Minus, SubtractionWithin Arithmetic Expressions
* MultiplicationWithin Arithmetic Expressions
/ Real DivisionWithin Arithmetic Expressions
*. Dot ProductWithin Arithmetic Expressions
to:
+ Unary Plus, AdditionWithin Arithmetic Expressions
- Unary Minus, Subtraction
* Multiplication
/ Real Division
*. Dot Product
Changed lines 27-32 from:
= Equality TestWithin Arithmetic Expressions
# Inequality TestWithin Arithmetic Expressions
> Greater-Than TestWithin Arithmetic Expressions
>= Greater-Or-Equal TestWithin Arithmetic Expressions
< Less-Than TestWithin Arithmetic Expressions
<= Less-Or-Equal TestWithin Arithmetic Expressions
to:
= Equality TestWithin Arithmetic Expressions
# Inequality Test
> Greater-Than Test
>= Greater-Or-Equal Test
< Less-Than Test
<= Less-Or-Equal Test
Changed lines 34-41 from:
+ Set UnionWithin Set Expressions
\ Set DifferenceWithin Set Expressions
* Set IntersectionWithin Set Expressions
/ Symmetric Set DifferenceWithin Set Expressions
> Proper Superset TestWithin Set Expressions
>= Superset TestWithin Set Expressions
< Proper Subset TestWithin Set Expressions
<= Subset TestWithin Set Expressions
to:
+ Set UnionWithin Set Expressions
\ Set Difference
* Set Intersection
/ Symmetric Set Difference
> Proper Superset Test
>= Superset Test
< Proper Subset Test
<= Subset Test
2015-09-18 06:47 by trijezdci -
Changed line 15 from:
+ - Exponent Sign^^
to:
+ - Exponent Sign
2015-09-18 06:47 by trijezdci -
Changed line 14 from:
. Decimal PointWithin Real Number Literals+
to:
. Decimal PointWithin Real Number Literals
2015-09-18 06:47 by trijezdci -
Changed lines 14-15 from:
. Decimal PointWithin Real Number Literals
+ - Exponent SignWithin Real Number Literals
to:
. Decimal PointWithin Real Number Literals+
+ - Exponent Sign^^
2015-09-18 06:42 by trijezdci -
Changed line 16 from:
to:
2015-09-18 06:41 by trijezdci -
Changed line 26 from:
to:
Changed line 33 from:
to:
2015-09-18 06:40 by trijezdci -
Changed line 11 from:
to:
Changed line 16 from:
to:
Changed line 20 from:
to:
Changed line 26 from:
to:
Changed line 33 from:
to:
2015-09-18 06:40 by trijezdci -
Changed lines 10-11 from:
SymbolUsageLexical Scope
Intra-Literal Symbols
to:
CategorySymbolUsageLexical Scope
Changed line 16 from:
Special Operators
to:
Changed line 20 from:
Arithmetic Operators
to:
Changed line 26 from:
Relational Operators
to:
Changed line 33 from:
Set Operators
to:
2015-09-18 06:04 by trijezdci -
Changed lines 46-47 from:
^^col2col3
^^col2col3
to:
col2col3
col2col3
Changed line 49 from:
^^col2col3
to:
col2col3
2015-09-18 06:03 by trijezdci -
Changed line 48 from:
Boo+col2col3
to:
Boocol2col3
2015-09-18 06:03 by trijezdci -
Changed lines 41-49 from:
<= Subset TestWithin Set Expressions
to:
<= Subset TestWithin Set Expressions
FooBarBaz
Bamcol2col3
^^col2col3
^^col2col3
Boo+col2col3
^^col2col3
2015-09-18 05:36 by trijezdci -
Changed lines 18-19 from:
& Array, List and String ConcatenationWithin Expressions
== Identity TestWithin Expressions
to:
== Identity TestWithin ADT Expressions
& Array, List and String ConcatenationWithin Array, List and String Expressions
Changed lines 21-25 from:
+ Unary Plus, AdditionWithin Expressions
- Unary Minus, SubtractionWithin Expressions
* MultiplicationWithin Expressions
/ Real DivisionWithin Expressions
*. Dot ProductWithin Expressions
to:
+ Unary Plus, AdditionWithin Arithmetic Expressions
- Unary Minus, SubtractionWithin Arithmetic Expressions
* MultiplicationWithin Arithmetic Expressions
/ Real DivisionWithin Arithmetic Expressions
*. Dot ProductWithin Arithmetic Expressions
Changed lines 27-32 from:
= Equality TestWithin Expressions
# Inequality TestWithin Expressions
> Greater-Than TestWithin Expressions
>= Greater-Or-Equal TestWithin Expressions
< Less-Than TestWithin Expressions
<= Less-Or-Equal TestWithin Expressions
to:
= Equality TestWithin Arithmetic Expressions
# Inequality TestWithin Arithmetic Expressions
> Greater-Than TestWithin Arithmetic Expressions
>= Greater-Or-Equal TestWithin Arithmetic Expressions
< Less-Than TestWithin Arithmetic Expressions
<= Less-Or-Equal TestWithin Arithmetic Expressions
Changed lines 34-41 from:
+ Set UnionWithin Expressions
\ Set DifferenceWithin Expressions
* Set IntersectionWithin Expressions
/ Symmetric Set DifferenceWithin Expressions
> Proper Superset TestWithin Expressions
>= Superset TestWithin Expressions
< Proper Subset TestWithin Expressions
<= Subset TestWithin Expressions
to:
+ Set UnionWithin Set Expressions
\ Set DifferenceWithin Set Expressions
* Set IntersectionWithin Set Expressions
/ Symmetric Set DifferenceWithin Set Expressions
> Proper Superset TestWithin Set Expressions
>= Superset TestWithin Set Expressions
< Proper Subset TestWithin Set Expressions
<= Subset TestWithin Set Expressions
2015-09-18 05:33 by trijezdci -
Added lines 26-32:
Relational Operators
= Equality TestWithin Expressions
# Inequality TestWithin Expressions
> Greater-Than TestWithin Expressions
>= Greater-Or-Equal TestWithin Expressions
< Less-Than TestWithin Expressions
<= Less-Or-Equal TestWithin Expressions
Deleted lines 41-47:
Relational Operators
= Equality TestWithin Expressions
# Inequality TestWithin Expressions
> Greater-Than TestWithin Expressions
>= Greater-Or-Equal TestWithin Expressions
< Less-Than TestWithin Expressions
<= Less-Or-Equal TestWithin Expressions
2015-09-18 05:27 by trijezdci -
Changed lines 19-20 from:
== Identity TestWithin ExpressionsArithmetic Operators
to:
== Identity TestWithin Expressions
Arithmetic Operators
2015-09-18 05:26 by trijezdci -
Changed lines 12-15 from:
  \ Escape Prefix for LF and TABWithin Quoted Literals
  ' Digit SeparatorWithin Number Literals
  . Decimal PointWithin Real Number Literals
  + - Exponent SignWithin Real Number Literals
to:
\ Escape Prefix for LF and TABWithin Quoted Literals
' Digit SeparatorWithin Number Literals
. Decimal PointWithin Real Number Literals
+ - Exponent SignWithin Real Number Literals
Changed lines 17-24 from:
  :: Type ConversionWithin Expressions
  & Array, List and String ConcatenationWithin Expressions
Arithmetic Operators
  + Unary Plus, AdditionWithin Expressions
  - Unary Minus, SubtractionWithin Expressions
  * MultiplicationWithin Expressions
  / Real DivisionWithin Expressions
  *. Dot ProductWithin Expressions
to:
:: Type ConversionWithin Expressions
& Array, List and String ConcatenationWithin Expressions
== Identity TestWithin ExpressionsArithmetic Operators
+ Unary Plus, AdditionWithin Expressions
- Unary Minus, SubtractionWithin Expressions
* MultiplicationWithin Expressions
/ Real DivisionWithin Expressions
*. Dot ProductWithin Expressions
Changed lines 26-33 from:
  + Set UnionWithin Expressions
  \ Set DifferenceWithin Expressions
  * Set IntersectionWithin Expressions
  / Symmetric Set DifferenceWithin Expressions
  > Proper Superset TestWithin Expressions
  >= Superset TestWithin Expressions
  < Proper Subset TestWithin Expressions
  <= Subset TestWithin Expressions
to:
+ Set UnionWithin Expressions
\ Set DifferenceWithin Expressions
* Set IntersectionWithin Expressions
/ Symmetric Set DifferenceWithin Expressions
> Proper Superset TestWithin Expressions
>= Superset TestWithin Expressions
< Proper Subset TestWithin Expressions
<= Subset TestWithin Expressions
Changed lines 35-41 from:
  = Equality TestWithin Expressions
  # Inequality TestWithin Expressions
  > Greater-Than TestWithin Expressions
  >= Greater-Or-Equal TestWithin Expressions
  < Less-Than TestWithin Expressions
  <= Less-Or-Equal TestWithin Expressions
  == Identity TestWithin Expressions
to:
= Equality TestWithin Expressions
# Inequality TestWithin Expressions
> Greater-Than TestWithin Expressions
>= Greater-Or-Equal TestWithin Expressions
< Less-Than TestWithin Expressions
<= Less-Or-Equal TestWithin Expressions
2015-09-18 05:14 by trijezdci -
Changed line 9 from:
to:
2015-09-18 05:11 by trijezdci -
Changed line 11 from:
Within Literals
to:
Intra-Literal Symbols
2015-09-18 05:10 by trijezdci -
Added line 10:
SymbolUsageLexical Scope
Deleted line 11:
SymbolUsageLexical Scope
Deleted line 16:
SymbolUsageLexical Scope
Deleted line 19:
SymbolUsageLexical Scope
Deleted line 25:
SymbolUsageLexical Scope
Deleted line 34:
SymbolUsageLexical Scope
2015-09-18 04:52 by trijezdci -
Changed line 9 from:
to:
Changed line 45 from:
  == Identity TestWithin Expressions
to:
  == Identity TestWithin Expressions
2015-09-18 04:24 by trijezdci -
Deleted lines 15-16:
Deleted lines 19-20:
Deleted lines 26-27:
Deleted lines 36-37:
2015-09-18 04:23 by trijezdci -
Changed lines 12-15 from:
  \ Escape Prefix for LF and TABWithin quoted literals
  ' Digit SeparatorWithin number literals
  . Decimal PointWithin real number literals
  + - Exponent SignWithin real number literals
to:
  \ Escape Prefix for LF and TABWithin Quoted Literals
  ' Digit SeparatorWithin Number Literals
  . Decimal PointWithin Real Number Literals
  + - Exponent SignWithin Real Number Literals
2015-09-18 04:22 by trijezdci -
Changed line 18 from:
Special Operators  
to:
Special Operators
Changed line 24 from:
Arithmetic Operators  
to:
Arithmetic Operators
Changed line 33 from:
Set Operators  
to:
Set Operators
Changed line 45 from:
Relational Operators  
to:
Relational Operators
2015-09-18 04:21 by trijezdci -
Changed line 10 from:
Within Literals  
to:
Within Literals
2015-09-18 04:21 by trijezdci -
Changed line 10 from:
Within Literals
to:
Within Literals  
Changed line 18 from:
Special Operators
to:
Special Operators  
Changed line 24 from:
Arithmetic Operators
to:
Arithmetic Operators  
Changed line 33 from:
Set Operators
to:
Set Operators  
Changed line 45 from:
Relational Operators
to:
Relational Operators  
2015-09-18 04:20 by trijezdci -
Changed line 10 from:
Within Literals
to:
Within Literals
2015-09-18 04:18 by trijezdci -
Changed line 26 from:
  + Unary Plus, Addition, Set UnionWithin Expressions
to:
  + Unary Plus, AdditionWithin Expressions
Changed lines 28-30 from:
  * Multiplication, Set IntersectionWithin Expressions
  / Real Division, Symmetric Set DifferenceWithin Expressions
  \ Set DifferenceWithin Expressions
to:
  * MultiplicationWithin Expressions
  / Real DivisionWithin Expressions
Changed line 35 from:
  + Unary Plus, Addition, Set UnionWithin Expressions
to:
  + Set UnionWithin Expressions
Changed lines 37-38 from:
  * Multiplication, Set IntersectionWithin Expressions
  / Real Division, Symmetric Set DifferenceWithin Expressions
to:
  * Set IntersectionWithin Expressions
  / Symmetric Set DifferenceWithin Expressions
2015-09-18 04:16 by trijezdci -
Added line 8:
Changed lines 10-16 from:
CategorySymbolUsageLexical Scope
In-Literal \ Escape Prefix for LF and TAB within Quoted LiteralsWithin Literal
  ' Digit Separator within Numeric Literals 
  . Decimal Point within Real Number Literals 
  + - Exponent Sign within Real Number Literals 
Non-Arithmetic Operators :: Type ConversionProgram Text
  & Concatenation 
to:
Within Literals
SymbolUsageLexical Scope
  \ Escape Prefix for LF and TABWithin quoted literals
  ' Digit SeparatorWithin number literals
  . Decimal PointWithin real number literals
  + - Exponent SignWithin real number literals
Special Operators
SymbolUsageLexical Scope
  :: Type ConversionWithin Expressions
  & Array, List and String ConcatenationWithin Expressions
Arithmetic Operators
SymbolUsageLexical Scope
  + Unary Plus, Addition, Set UnionWithin Expressions
  - Unary Minus, SubtractionWithin Expressions
  * Multiplication, Set IntersectionWithin Expressions
  / Real Division, Symmetric Set DifferenceWithin Expressions
  \ Set DifferenceWithin Expressions
  *. Dot ProductWithin Expressions
Set Operators
SymbolUsageLexical Scope
  + Unary Plus, Addition, Set UnionWithin Expressions
  \ Set DifferenceWithin Expressions
  * Multiplication, Set IntersectionWithin Expressions
  / Real Division, Symmetric Set DifferenceWithin Expressions
  > Proper Superset TestWithin Expressions
  >= Superset TestWithin Expressions
  < Proper Subset TestWithin Expressions
  <= Subset TestWithin Expressions
Relational Operators
SymbolUsageLexical Scope
  = Equality TestWithin Expressions
  # Inequality TestWithin Expressions
  > Greater-Than TestWithin Expressions
  >= Greater-Or-Equal TestWithin Expressions
  < Less-Than TestWithin Expressions
  <= Less-Or-Equal TestWithin Expressions
  == Identity TestWithin Expressions
2015-09-18 03:53 by trijezdci -
Changed lines 13-15 from:
  + - Exponent Sign within Real Number Literals 
to:
  + - Exponent Sign within Real Number Literals 
Non-Arithmetic Operators :: Type ConversionProgram Text
  & Concatenation 
2015-09-18 03:51 by trijezdci -
Changed lines 11-13 from:
  ' Digit Separator within Numeric Literals 
to:
  ' Digit Separator within Numeric Literals 
  . Decimal Point within Real Number Literals 
  + - Exponent Sign within Real Number Literals 
2015-09-18 03:49 by trijezdci -
Changed line 8 from:
to:
2015-09-18 03:49 by trijezdci -
Changed lines 10-11 from:
In-Literal\Escape Prefix for LF and TAB within Quoted LiteralsWithin Literal
 'Digit Separator within Numeric Literals 
to:
In-Literal \ Escape Prefix for LF and TAB within Quoted LiteralsWithin Literal
  ' Digit Separator within Numeric Literals 
2015-09-18 03:47 by trijezdci -
Changed line 8 from:
to:
2015-09-18 03:33 by trijezdci -
Added lines 1-11:

Character Sets

By default only the printable characters of the 7-bit ASCII character set, whitespace, tabulator and newline are legal within Modula-2 source text. Unicode characters may be permitted within quoted literals and comments, subject to recognition and verification of the encoding scheme used.

Special Symbols

CategorySymbolUsageLexical Scope
In-Literal\Escape Prefix for LF and TAB within Quoted LiteralsWithin Literal
 'Digit Separator within Numeric Literals