Modula-2 Reloaded

A Modern Typesafe & Literate Programming Notation

Site Menu

Project

Specification

Implementation

Recommendations

Reference

Needs Updating

Work in Progress

Wastebasket

Wiki Manual

edit SideBar

Terminals

EBNF.Terminals History

Hide minor edits - Show changes to output

2015-10-09 18:13 by trijezdci -
Changed lines 8-11 from:
  DEFINITION | DIV | DO | ELSE | ELSIF | END | ENUM | EXIT | FOR | FROM | GENLIB |
  IF | IMPLEMENTATION | IMPORT | IN | LOOP | MOD | MODULE | NEW | NONE | NOT |
  OF | OPAQUE | OR | POINTER | PROCEDURE | RECORD | REFERENTIAL | RELEASE |
  REPEAT | RETAIN | RETURN | SET | THEN | TO | TYPE | UNTIL | VAR | WHILE | YIELD
to:
  DEFINITION | DIV | DO | ELSE | ELSIF | END | EXIT | FOR | FROM | GENLIB | IF |
  IMPLEMENTATION | IMPORT | IN | LOOP | MOD | MODULE | NEW | NONE | NOT | OF |
  OPAQUE | OR | POINTER | PROCEDURE | RECORD | REFERENTIAL | RELEASE | REPEAT |
  RETAIN | RETURN | SET | THEN | TO | TYPE | UNTIL | VAR | WHILE | YIELD
2015-09-22 12:55 by trijezdci -
Changed lines 30-31 from:
  '.' | ',' | ':' | ';' | '|' | '^' | '~' | '..' | ':=' | '++' | '--' |
  '::' | '+' | '-' | '*' | '*.' | '/' | '\' | '&' |
to:
  '.' | ',' | ':' | ';' | '|' | '~' | '..' | ':=' | '++' | '--' |
  '::' | '+' | '-' | '*' | '/' | '\' | '&' | '^' |
Changed line 281 from:
@]
to:
@]
2015-09-19 13:28 by trijezdci -
Changed line 50 from:
!!!!!#3.3 Template Language Symbols
to:
!!!!!#3.4 Template Language Symbols
2015-09-19 13:24 by trijezdci -
Changed line 46 from:
!!!!!#3.3 Pragma Affix and Delimiters
to:
!!!!!#3.3 Pragma Punctuation and Delimiters
2015-09-17 18:20 by trijezdci -
Changed line 6 from:
ResWord :
to:
ResWord :=
Changed line 18 from:
DualUseIdent :
to:
DualUseIdent :=
2015-09-17 18:20 by trijezdci -
Changed line 29 from:
SpecialSymbol :
to:
SpecialSymbol :=
Changed line 64 from:
Ident :
to:
Ident :=
Changed line 73 from:
StdLibIdent :
to:
StdLibIdent :=
Changed line 82 from:
LetterOrDigit :
to:
LetterOrDigit :=
Changed line 91 from:
ForeignIdentChar :
to:
ForeignIdentChar :=
Changed line 100 from:
IdentTailChar :
to:
IdentTailChar :=
Changed line 109 from:
NumberLiteral :
to:
NumberLiteral :=
Changed line 130 from:
DecimalNumberTail :
to:
DecimalNumberTail :=
Changed line 139 from:
RealNumberTail :
to:
RealNumberTail :=
Changed line 148 from:
DigitSeq :
to:
DigitSeq :=
Changed line 157 from:
Base16DigitSeq :
to:
Base16DigitSeq :=
Changed line 166 from:
Base2DigitSeq :
to:
Base2DigitSeq :=
Changed line 175 from:
Digit :
to:
Digit :=
Changed line 184 from:
Base16Digit :
to:
Base16Digit :=
Changed line 193 from:
Base2Digit :
to:
Base2Digit :=
Changed line 201 from:
DigitSep : "'" ;
to:
DigitSep := "'" ;
Changed line 208 from:
StringLiteral :
to:
StringLiteral :=
Changed line 217 from:
SingleQuotedString :
to:
SingleQuotedString :=
Changed line 226 from:
DoubleQuotedString :
to:
DoubleQuotedString :=
Changed line 235 from:
QuotableCharacter :
to:
QuotableCharacter :=
Changed line 244 from:
Letter :
to:
Letter :=
Changed line 252 from:
Space : ' ' ;
to:
Space := ' ' ;
Changed line 259 from:
NonAlphaNumQuotable :
to:
NonAlphaNumQuotable :=
Changed line 269 from:
EscapedCharacter :
to:
EscapedCharacter :=
Changed line 278 from:
ChevronText :
to:
ChevronText :=
Changed line 281 from:
@]
to:
@]
2015-09-16 02:37 by trijezdci -
Added lines 1-2:
%silver%'''[-[[EBNF.NonTerminals|<< Non Terminals]] | [[EBNF.IgnoreSymbols|Ignore Symbols >>]]-]'''%%
Changed line 281 from:
@]
to:
@]
2015-09-15 17:37 by trijezdci -
Changed lines 59-60 from:
!!!!!#4 Identifier
to:
!!!!!#4 Identifier \
%silver% &nbsp; [-[[SyntaxDiagrams.Terminals#Ident|syntax diagram]]%%-]
Changed lines 68-69 from:
!!!!!#4.1 Standard Library Identifier
to:
!!!!!#4.1 Standard Library Identifier \
%silver% &nbsp; [-[[SyntaxDiagrams.Terminals#StdLibIdent|syntax diagram]]%%-]
Changed lines 77-78 from:
!!!!!#4.2 Letter Or Digit
to:
!!!!!#4.2 Letter Or Digit \
%silver% &nbsp; [-[[SyntaxDiagrams.Terminals#LetterOrDigit|syntax diagram]]%%-]
Changed lines 86-87 from:
!!!!!#4.3 Foreign Identifier Character
to:
!!!!!#4.3 Foreign Identifier Character \
%silver% &nbsp; [-[[SyntaxDiagrams.Terminals#ForeignIdentChar|syntax diagram]]%%-]
Changed lines 95-96 from:
!!!!!#4.4 Identifier Tail Character
to:
!!!!!#4.4 Identifier Tail Character \
%silver% &nbsp; [-[[SyntaxDiagrams.Terminals#IdentTailChar|syntax diagram]]%%-]
Changed lines 104-105 from:
!!!!!#5 Number Literal
to:
!!!!!#5 Number Literal \
%silver% &nbsp; [-[[SyntaxDiagrams.Terminals#NumberLiteral|syntax diagram]]%%-]
Changed lines 125-126 from:
!!!!!#5.1 Decimal Number Tail
to:
!!!!!#5.1 Decimal Number Tail \
%silver% &nbsp; [-[[SyntaxDiagrams.Terminals#DecimalNumberTail|syntax diagram]]%%-]
Changed lines 134-135 from:
!!!!!#5.2 Real Number Tail
to:
!!!!!#5.2 Real Number Tail \
%silver% &nbsp; [-[[SyntaxDiagrams.Terminals#RealNumberTail|syntax diagram]]%%-]
Changed lines 143-144 from:
!!!!!#5.3 Digit Sequence
to:
!!!!!#5.3 Digit Sequence \
%silver% &nbsp; [-[[SyntaxDiagrams.Terminals#DigitSeq|syntax diagram]]%%-]
Changed lines 152-153 from:
!!!!!#5.4 Base-16 Digit Sequence
to:
!!!!!#5.4 Base-16 Digit Sequence \
%silver% &nbsp; [-[[SyntaxDiagrams.Terminals#Base16DigitSeq|syntax diagram]]%%-]
Changed lines 161-162 from:
!!!!!#5.5 Base-2 Digit Sequence
to:
!!!!!#5.5 Base-2 Digit Sequence \
%silver% &nbsp; [-[[SyntaxDiagrams.Terminals#Base2DigitSeq|syntax diagram]]%%-]
Changed lines 170-171 from:
!!!!!#5.6 Digit
to:
!!!!!#5.6 Digit \
%silver% &nbsp; [-[[SyntaxDiagrams.Terminals#Digit|syntax diagram]]%%-]
Changed lines 179-180 from:
!!!!!#5.7 Base-16 Digit
to:
!!!!!#5.7 Base-16 Digit \
%silver% &nbsp; [-[[SyntaxDiagrams.Terminals#Base16Digit|syntax diagram]]%%-]
Changed lines 188-189 from:
!!!!!#5.8 Base-2 Digit
to:
!!!!!#5.8 Base-2 Digit \
%silver% &nbsp; [-[[SyntaxDiagrams.Terminals#Base2Digit|syntax diagram]]%%-]
Changed lines 203-204 from:
!!!!!#6 String Literal
to:
!!!!!#6 String Literal \
%silver% &nbsp; [-[[SyntaxDiagrams.Terminals#StringLiteral|syntax diagram]]%%-]
Changed lines 212-213 from:
!!!!!#6.1 Single Quoted String
to:
!!!!!#6.1 Single Quoted String \
%silver% &nbsp; [-[[SyntaxDiagrams.Terminals#SingleQuotedString|syntax diagram]]%%-]
Changed lines 221-222 from:
!!!!!#6.2 Double Quoted String
to:
!!!!!#6.2 Double Quoted String \
%silver% &nbsp; [-[[SyntaxDiagrams.Terminals#DoubleQuotedString|syntax diagram]]%%-]
Changed lines 230-231 from:
!!!!!#6.3 Quotable Character
to:
!!!!!#6.3 Quotable Character \
%silver% &nbsp; [-[[SyntaxDiagrams.Terminals#QuotableCharacter|syntax diagram]]%%-]
Changed lines 239-240 from:
!!!!!#6.4 Letter
to:
!!!!!#6.4 Letter \
%silver% &nbsp; [-[[SyntaxDiagrams.Terminals#Letter|syntax diagram]]%%-]
Changed lines 254-255 from:
!!!!!#6.6 Non-Alphanumeric Quotable
to:
!!!!!#6.6 Non-Alphanumeric Quotable \
%silver% &nbsp; [-[[SyntaxDiagrams.Terminals#NonAlphaNumQuotable|syntax diagram]]%%-]
Changed lines 264-265 from:
!!!!!#6.7 Escaped Character
to:
!!!!!#6.7 Escaped Character \
%silver% &nbsp; [-[[SyntaxDiagrams.Terminals#EscapedCharacter|syntax diagram]]%%-]
Changed lines 273-274 from:
!!!!!#7 Chevron Text
to:
!!!!!#7 Chevron Text \
%silver% &nbsp; [-[[SyntaxDiagrams.Terminals#ChevronText|syntax diagram]]%%-]
2015-09-15 17:31 by trijezdci -
Changed line 14 from:
!!!!!#2 Dual-Use Identifiers (Schrödinger's Tokens)
to:
!!!!!#2 Dual-Use Identifiers [[<<]] (Schrödinger's Tokens)
2015-09-15 09:42 by trijezdci - anchoring
Added line 1:
[[#ResWord]]
Added line 13:
[[#DualUseIdent]]
Added line 24:
[[#SpecialSymbol]]
Changed line 27 from:
SpecialSymbols :
to:
SpecialSymbol :
Added line 58:
[[#Ident]]
Added line 66:
[[#StdLibIdent]]
Added line 74:
[[#LetterOrDigit]]
Added line 82:
[[#ForeignIdentChar]]
Added line 90:
[[#IdentTailChar]]
Added line 98:
[[#NumberLiteral]]
Added line 118:
[[#DecimalNumberTail]]
Added line 126:
[[#RealNumberTail]]
Added line 134:
[[#DigitSeq]]
Added line 142:
[[#Base16DigitSeq]]
Added line 150:
[[#Base2DigitSeq]]
Added line 158:
[[#Digit]]
Added line 166:
[[#Base16Digit]]
Added line 174:
[[#Base2Digit]]
Added line 182:
[[#DigitSep]]
Added line 188:
[[#StringLiteral]]
Added line 196:
[[#SingleQuotedString]]
Added line 204:
[[#DoubleQuotedString]]
Added line 212:
[[#QuotableCharacter]]
Added line 220:
[[#Letter]]
Added line 228:
[[#Space]]
Added line 234:
[[#NonAlphaNumQuotable]]
Added line 243:
[[#EscapedCharacter]]
Added line 251:
[[#ChevronText]]
2015-09-15 02:19 by trijezdci - formatting options for WORD/ADDRESS
Changed lines 26-27 from:
  '::' | '+' | '-' | '*' | '*.' | '/' | '\' | '=' | '#' | '>' | '>=' | '<' | '<=' | '==' | '&' |
  '->' | '<>' | '><' | '+/-' | '(' | ')' | '[' | ']' | '{' | '}'
to:
  '::' | '+' | '-' | '*' | '*.' | '/' | '\' | '&' |
  '=' | '#' | '>' | '>=' | '<' | '<=' | '==' |
  '->' | '<>' | '><' | '+/-' |
 
'(' | ')' | '[' | ']' | '{' | '}'
2015-09-15 02:17 by trijezdci -
Changed line 25 from:
  '.' | ',' | ':' | ';' | '|' | '^' | '~' | '..' | ':=' | '++' | '--" |
to:
  '.' | ',' | ':' | ';' | '|' | '^' | '~' | '..' | ':=' | '++' | '--' |
2015-09-15 02:15 by trijezdci - reformatted
Changed lines 25-27 from:
  '.' | ',' | ':' | ';' | '|' | '^' | '~' | '..' | ':=' | '++' | '--" | '::' | '+' | '-' | '*' | '*.' | '/' | '\' |
  '=' | '#' | '>' | '>=' | '<' | '<=' | '==' | '&' | '->' | '<>' | '><' | '+/-' |
 
'(' | ')' | '[' | ']' | '{' | '}'
to:
  '.' | ',' | ':' | ';' | '|' | '^' | '~' | '..' | ':=' | '++' | '--" |
  '::' | '+' | '-' | '*' | '*.' | '/' | '\' | '=' | '#' | '>' | '>=' | '<' | '<=' | '==' | '&' |
  '->' | '<>' | '><' | '+/-' | '(' | ')' | '[' | ']' | '{' | '}'
2015-09-15 02:14 by trijezdci - changed reserced words, dual use identifiers and symbols to proper EBNF notation
Changed lines 2-11 from:

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

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

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

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

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

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

!!!!!#3 Special Symbols

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

!!!!!#3.1 Quoted Text Delimiters

[@'@] &nbsp; [@"@] &nbsp; [@<<@] &nbsp; [@>>@] &nbsp;

!!!!!#3.2 Comment Delimiters

[@!@] &nbsp; [@(*@] &nbsp; [@*)@] &nbsp;

!!!!!#3.3 Pragma Affix and Delimiters

[@?@] &nbsp; [@<*@] &nbsp; [@*>@] &nbsp;

!!!!!#3.3 Template Language Symbols

[@##@] &nbsp; [@<#@] &nbsp; [@#>@] &nbsp; [@@@@] &nbsp; [@//@] &nbsp; [@/*@] &nbsp;  [@*/@] &nbsp;

!!!!!#3.5 Reserved Symbols

[@`@] &nbsp; for use as a token by Objective Modula-2 [[<<]]
[@@@] &nbsp; for use as a lead character in identifiers and reserved words by language supersets [[<<]]
[@%@] &nbsp; for use as a character in identifiers and reserved words by implementations targeting[=OpenVMS=]

!!!!!#4 Identifier
[@
Ident :
  ( Letter | ForeignIdentChar+ LetterOrDigit+ ) IdentTailChar*
  ;
@]

!!!!!#4.1 Standard Library Identifier
[@
StdLibIdent :
  Letter LetterOrDigit*
  ;
@]

!!!!!#4.2 Letter Or Digit
[@
LetterOrDigit :
  Letter | Digit
  ;
@]

!!!!!#4.3 Foreign Identifier Character
[@
ForeignIdentChar :
  '_' | '$'
  ;
@]

!!!!!#4.4 Identifier Tail Character
[@
IdentTailChar :
  LetterOrDigit | ForeignIdentChar
  ;
@]

!!!!!#5 Number Literal
[@
NumberLiteral :
  /* number literals starting with digit 0 ... */
  '0' (
    /* without prefix are real numbers */
    RealNumberTail |
    /* with prefix 0b are base-2 numbers */
    'b' Base2DigitSeq |
    /* with prefix 0x are base-16 numbers */
    'x' Base16DigitSeq |
    /* with prefix 0u are unicode code points */
    'u' Base16DigitSeq
  )?
  /* number literals starting with digits 1 to 9 ... */
  | '1'..'9' DecimalNumberTail? /* are always decimal numbers */
  ;
@]

!!!!!#5.1 Decimal Number Tail
[@
DecimalNumberTail :
  DigitSep? DigitSeq RealNumberTail? | RealNumberTail
  ;
@]

!!!!!#5.2 Real Number Tail
[@
RealNumberTail :
  '.' DigitSeq ( 'e' ( '+' | '-' )? DigitSeq )?
  ;
@]

!!!!!#5.3 Digit Sequence
[@
DigitSeq :
  Digit+ ( DigitSep Digit+ )*
  ;
@]

!!!!!#5.4 Base-16 Digit Sequence
[@
Base16DigitSeq :
    Base16Digit+ ( DigitSep Base16Digit+ )*
    ;
@]

!!!!!#5.5 Base-2 Digit Sequence
[@
Base2DigitSeq :
  Base2Digit+ ( DigitSep Base2Digit+ )*
  ;
@]

!!!!!#5.6 Digit
[@
Digit :
  Base2Digit | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9'
  ;
@]

!!!!!#5.7 Base-16 Digit
[@
Base16Digit :
  Digit | 'A' | 'B' | 'C' | 'D' | 'E' | 'F'
  ;
@]

!!!!!#5.8 Base-2 Digit
[@
Base2Digit :
  '0' | '1'
  ;
@]

!!!!!#5.9 Digit Separator
[@
DigitSep : "'" ;
@]

!!!!!#6 String Literal
[@
StringLiteral :
  SingleQuotedString | DoubleQuotedString
  ;
@]

!!!!!#6.1 Single Quoted String
[@
SingleQuotedString :
  "'" ( QuotableCharacter | '"' )* "'"
  ;
@]

!!!!!#6.2 Double Quoted String
[@
DoubleQuotedString :
  '"' ( QuotableCharacter | "'" )* '"'
  ;
@]

!!!!!#6.3 Quotable Character
[@
QuotableCharacter :
  Digit | Letter | Space | NonAlphaNumQuotable | EscapedCharacter
  ;
@]

!!!!!#6.4 Letter
[@
Letter :
  'A' .. 'Z' | 'a' .. 'z'
  ;
@]

!!!!!#6.5 Space
[@
Space : ' ' ;
@]

!!!!!#6.6 Non-Alphanumeric Quotable
[@
NonAlphaNumQuotable :
  '!' | '#' | '$' | '%' | '&' | '(' | ')' | '*' | '+' | ',' |
  '-' | '.' | '/' | ':' | ';' | '<' | '=' | '>' | '?' | '@' |
  '[' | ']' | '^' | '_' | '`' | '{' | '|' | '}' | '~'
@]

!!!!!#6.7 Escaped Character
[@
EscapedCharacter :
  '\' ( 'n' | 't' | '\' )
  ;
@]

!!!!!#7 Chevron Text
[@
ChevronText :
  '<<' ( QuotableCharacter | "'" | '"' )* '>>'
  ;
@]