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

Pragmas

EBNF.Pragmas History

Hide minor edits - Show changes to markup

2015-10-09 19:01 by trijezdci -
Changed line 334 from:
  ( '+' | '-' )? inPragmaTerm ( inPragmaOperL2 inPragmaTerm )*
to:
  inPragmaTerm ( inPragmaOperL2 inPragmaTerm )* | '-' inPragmaFactor
2015-09-17 18:26 by trijezdci -
Changed lines 57-58 from:
    String Literal? | constQualident | '?' valuePragma
    ;
to:
  String Literal? | constQualident | '?' valuePragma
  ;
Changed lines 72-73 from:
    ALIGN | ENCODING | valuePragmaSymbol
    ; 
to:
  ALIGN | ENCODING | valuePragmaSymbol
  ; 
2015-09-17 18:24 by trijezdci -
Changed line 7 from:

pragma :

to:

pragma :=

Changed line 16 from:

pragmaBody :

to:

pragmaBody :=

Changed line 29 from:

ctMsgPragma :

to:

ctMsgPragma :=

Changed line 38 from:

ctMsgMode :

to:

ctMsgMode :=

Changed line 47 from:

ctMsgComponentList :

to:

ctMsgComponentList :=

Changed line 56 from:

ctMsgComponent :

to:

ctMsgComponent :=

Changed line 64 from:

constQualident : qualident ;

to:

constQualident := qualident ;

Changed line 71 from:

valuePragma :

to:

valuePragma :=

Changed line 80 from:

valuePragmaSymbol : Pragma Symbol? ;

to:

valuePragmaSymbol := Pragma Symbol? ;

Changed line 87 from:
to:
Changed line 96 from:

condCompPragma :

to:

condCompPragma :=

Changed line 105 from:

procDeclAttrPragma :

to:

procDeclAttrPragma :=

Changed line 114 from:

promiseToWritePragma :

to:

promiseToWritePragma :=

Changed line 123 from:

forwardDeclPragma :

to:

forwardDeclPragma :=

Changed line 132 from:

charEncodingPragma :

to:

charEncodingPragma :=

Changed line 142 from:

codePointSampleList :

to:

codePointSampleList :=

Changed line 149 from:

codePointSample :

to:

codePointSample :=

Changed line 158 from:

quotedCharacter : String Literal? ; /* single character only */

to:

quotedCharacter := String Literal? ; /* single character only */

Changed line 165 from:

charCodeLiteral : Number Literal? ; /* whole number only */

to:

charCodeLiteral := Number Literal? ; /* whole number only */

Changed line 172 from:

memAlignmentPragma :

to:

memAlignmentPragma :=

Changed line 181 from:

bitPaddingPragma :

to:

bitPaddingPragma :=

Changed line 190 from:

purityAttrPragma :

to:

purityAttrPragma :=

Changed line 199 from:

varDeclAttrPragma :

to:

varDeclAttrPragma :=

Changed line 208 from:

deprecationPragma :

to:

deprecationPragma :=

Changed line 217 from:

genTimestampPragma :

to:

genTimestampPragma :=

Changed line 226 from:

datestamp :

to:

datestamp :=

Changed line 235 from:

timestamp :

to:

timestamp :=

Changed lines 244-254 from:

year : wholeNumber ;

month : wholeNumber ;

day : wholeNumber ;

hours : wholeNumber ;

minutes : wholeNumber ;

seconds : wholeNumber ;

to:

year := wholeNumber ;

month := wholeNumber ;

day := wholeNumber ;

hours := wholeNumber ;

minutes := wholeNumber ;

seconds := wholeNumber ;

Changed line 261 from:

utcOffset :

to:

utcOffset :=

Changed line 270 from:

memMappingPragma :

to:

memMappingPragma :=

Changed line 279 from:

ffiPragma :

to:

ffiPragma :=

Changed line 288 from:

ffidentPragma :

to:

ffidentPragma :=

Changed line 297 from:

implDefinedPragma :

to:

implDefinedPragma :=

Changed line 306 from:

implPrefix :

to:

implPrefix :=

Changed line 315 from:

inPragmaExpr :

to:

inPragmaExpr :=

Changed line 324 from:

inPragmaOperL1 :

to:

inPragmaOperL1 :=

Changed line 333 from:

inPragmaSimpleExpr :

to:

inPragmaSimpleExpr :=

Changed line 342 from:

inPragmaOperL2 :

to:

inPragmaOperL2 :=

Changed line 351 from:

inPragmaTerm :

to:

inPragmaTerm :=

Changed line 360 from:

inPragmaOperL3 :

to:

inPragmaOperL3 :=

Changed line 369 from:

inPragmaSimpleTerm :

to:

inPragmaSimpleTerm :=

Changed line 378 from:

inPragmaFactor :

to:

inPragmaFactor :=

Changed line 389 from:

inPragmaCtFunctionCall :

to:

inPragmaCtFunctionCall :=

2015-09-16 02:40 by trijezdci -
Added lines 1-2:
2015-09-15 17:15 by trijezdci -
Changed line 378 from:
  /* constQualident is covered by inPragmaCompileTimeFunctionCall */
to:
  /* constQualident is covered by inPragmaCtFunctionCall */
2015-09-15 17:14 by trijezdci -
Changed line 313 from:

inPragmaExpression :

to:

inPragmaExpr :

2015-09-15 17:08 by trijezdci -
Changed lines 15-19 from:
  pragmaMSG | pragmaIF | procDeclAttrPragma | pragmaOUT | pragmaFORWARD |
  pragmaENCODING | pragmaALIGN | pragmaPADBITS | pragmaPURITY |
  varDeclAttrPragma | pragmaDEPRECATED | pragmaGENERATED |
  pragmaADDR | pragmaFFI | pragmaFFIDENT | implDefinedPragma
 ;
to:
  ctMsgPragma | condCompPragma | procDeclAttrPragma | promiseToWritePragma |
  forwardDeclPragma | charEncodingPragma | memAlignmentPragma |
  bitPaddingPragma | purityAttrPragma | varDeclAttrPragma | deprecationPragma |
  genTimestampPragma | memMappingPragma | ffiPragma | ffidentPragma |
  implDefinedPragma
  ;
Changed line 23 from:

to:

Changed line 25 from:
to:
Changed line 27 from:

pragmaMSG :

to:

ctMsgPragma :

Changed line 90 from:

to:

Changed line 92 from:
to:
Changed line 94 from:

pragmaIF :

to:

condCompPragma :

Changed line 108 from:

to:

Changed line 110 from:
to:
Changed line 112 from:

pragmaOUT :

to:

promiseToWritePragma :

Changed line 117 from:

to:

Changed line 119 from:
to:
Changed line 121 from:

pragmaFORWARD :

to:

forwardDeclPragma :

Changed line 126 from:

to:

Changed line 128 from:
to:
Changed line 130 from:

pragmaENCODING :

to:

charEncodingPragma :

Changed line 166 from:

to:

Changed line 168 from:
to:
Changed lines 170-171 from:

pragmaALIGN :

  ALIGN '=' inPragmaExpression
to:

memAlignmentPragma :

  ALIGN '=' inPragmaExpr
Changed line 175 from:

to:

Changed line 177 from:
to:
Changed lines 179-180 from:

pragmaPADBITS :

  PADBITS '=' inPragmaExpression
to:

bitPaddingPragma :

  PADBITS '=' inPragmaExpr
Changed line 184 from:

to:

Changed line 186 from:
to:
Changed lines 188-189 from:

pragmaPURITY :

  PURITY '=' inPragmaExpression /* values 0 .. 3 */
to:

purityAttrPragma :

  PURITY '=' inPragmaExpr /* values 0 .. 3 */
Changed line 202 from:

to:

Changed line 204 from:
to:
Changed line 206 from:

pragmaDEPRECATED :

to:

deprecationPragma :

Changed line 211 from:

to:

Changed line 213 from:
to:
Changed line 215 from:

pragmaGENERATED :

to:

genTimestampPragma :

Changed line 234 from:
  hours ':' minutes ':' seconds ( '+' | '-' ) timezone
to:
  hours ':' minutes ':' seconds utcOffset?
Changed lines 238-239 from:

#13.3 Year, Month, Day, Hours, Minutes, Seconds, Timezone \
to:

#13.3 Year, Month, Day, Hours, Minutes, Seconds \
Deleted lines 252-253:

timezone : wholeNumber ;

Changed lines 255-257 from:

#14 Body Of Memory Mapping Pragma   syntax diagram
to:

#13.4 UTC Offset   syntax diagram
Changed lines 259-260 from:

pragmaADDR :

  ADDR '=' inPragmaExpression
to:

utcOffset :

  ( '+' | '-' ) wholeNumber
Changed lines 264-266 from:

#15 Body Of Foreign Function Interface Pragma   syntax diagram
to:

#14 Body Of Memory Mapping Pragma   syntax diagram
Changed lines 268-269 from:

pragmaFFI :

  FFI '=' String Literal? /* "C", "Fortran", "CLR" or "JVM" */
to:

memMappingPragma :

  ADDR '=' inPragmaExpr
Changed lines 273-275 from:

#16 Body Of Foreign Function Identifier Mapping Pragma   syntax diagram
to:

#15 Body Of Foreign Function Interface Pragma   syntax diagram
Changed lines 277-278 from:

pragmaFFIDENT :

  FFIDENT '=' String Literal? /* foreign library identifier */
to:

ffiPragma :

  FFI '=' String Literal? /* "C", "Fortran", "CLR" or "JVM" */
Changed lines 282-284 from:

#17 Body Of Implementation Defined Pragma   syntax diagram
to:

#16 Body Of Foreign Function Identifier Mapping Pragma   syntax diagram
Changed lines 286-287 from:

implDefinedPragma :

  ( implPrefix '.' )? Pragma Symbol? ( '=' inPragmaExpression )? '|' ctMsgMode
to:

ffidentPragma :

  FFIDENT '=' String Literal? /* foreign library identifier */
Changed lines 291-293 from:

#17.1 Implementation Prefix   syntax diagram
to:

#17 Body Of Implementation Defined Pragma   syntax diagram
Changed lines 295-296 from:

implPrefix :

  Letter Letter Or Digit?+
to:

implDefinedPragma :

  ( implPrefix '.' )? Pragma Symbol? ( '=' inPragmaExpr )? '|' ctMsgMode
Changed lines 300-302 from:

#18 In-Pragma Expression   syntax diagram
to:

#17.1 Implementation Prefix   syntax diagram
Changed lines 304-305 from:

inPragmaExpression :

  inPragmaSimpleExpr ( inPragmaOperL1 inPragmaSimpleExpr )?
to:

implPrefix :

  Letter Letter Or Digit?+
Changed lines 309-311 from:

#18.1 In-Pragma Level-1 Operator   syntax diagram
to:

#18 In-Pragma Expression   syntax diagram
Changed lines 313-314 from:

inPragmaOperL1 :

  '=' | '#' | '<' | '<=' | '>' | '>='
to:

inPragmaExpression :

  inPragmaSimpleExpr ( inPragmaOperL1 inPragmaSimpleExpr )?
Changed lines 318-320 from:

#19 In-Pragma Simple Expression   syntax diagram
to:

#18.1 In-Pragma Level-1 Operator   syntax diagram
Changed lines 322-323 from:

inPragmaSimpleExpr :

  ( '+' | '-' )? inPragmaTerm ( inPragmaOperL2 inPragmaTerm )*
to:

inPragmaOperL1 :

  '=' | '#' | '<' | '<=' | '>' | '>='
Changed lines 327-329 from:

#19.1 In-Pragma Level-2 Operator   syntax diagram
to:

#19 In-Pragma Simple Expression   syntax diagram
Changed lines 331-332 from:

inPragmaOperL2 :

  '+' | '-' | OR
to:

inPragmaSimpleExpr :

  ( '+' | '-' )? inPragmaTerm ( inPragmaOperL2 inPragmaTerm )*
Changed lines 336-338 from:

#20 In-Pragma Term   syntax diagram
to:

#19.1 In-Pragma Level-2 Operator   syntax diagram
Changed lines 340-341 from:

inPragmaTerm :

  inPragmaSimpleTerm ( inPragmaOperL3 inPragmaSimpleTerm )*
to:

inPragmaOperL2 :

  '+' | '-' | OR
Changed lines 345-347 from:

#20.1 In-Pragma Level-3 Operator   syntax diagram
to:

#20 In-Pragma Term   syntax diagram
Changed lines 349-350 from:

inPragmaOperL3 :

  '*' | DIV | MOD | AND
to:

inPragmaTerm :

  inPragmaSimpleTerm ( inPragmaOperL3 inPragmaSimpleTerm )*
Changed lines 354-356 from:

#21 In-Pragma Simple Term   syntax diagram
to:

#20.1 In-Pragma Level-3 Operator   syntax diagram
Changed lines 358-359 from:

inPragmaSimpleTerm :

  NOT? inPragmaFactor
to:

inPragmaOperL3 :

  '*' | DIV | MOD | AND
Changed lines 363-365 from:

#22 In-Pragma Factor   syntax diagram
to:

#21 In-Pragma Simple Term   syntax diagram
Changed lines 367-370 from:

inPragmaFactor :

  Whole Number? |
  /* constQualident is covered by inPragmaCompileTimeFunctionCall */
  '(' inPragmaExpression ')' | inPragmaCompileTimeFunctionCall
to:

inPragmaSimpleTerm :

  NOT? inPragmaFactor
Changed lines 372-374 from:

#23 In-Pragma Compile Time Function Call   syntax diagram
to:

#22 In-Pragma Factor   syntax diagram
Changed lines 376-377 from:

inPragmaCompileTimeFunctionCall :

  qualident ( '(' inPragmaExpression ( ',' inPragmaExpression )* ')' )?
to:

inPragmaFactor :

  Whole Number? |
  /* constQualident is covered by inPragmaCompileTimeFunctionCall */
  '(' inPragmaExpr ')' | inPragmaCtFunctionCall
  ;

@]

#23 In-Pragma Compile Time Function Call   syntax diagram

[@ inPragmaCtFunctionCall :

  qualident ( '(' inPragmaExpr ( ',' inPragmaExpr )* ')' )?
2015-09-15 14:57 by trijezdci -
Added line 1:

Added line 10:

Added line 22:

Added line 31:

Added line 40:

Added line 49:

Added line 64:

Added line 73:

Added line 80:

Added line 89:

Added line 98:

Added line 107:

Added line 116:

Added line 125:

Added line 135:

Added line 151:

Added line 158:

Added line 165:

Added line 174:

Added line 183:

Added line 192:

Added line 201:

Added line 210:

Added line 219:

Added line 228:

Added line 237:

Added line 256:

Added line 265:

Added line 274:

Added line 283:

Added line 292:

Added line 301:

Added line 310:

Added line 319:

Added line 328:

Added line 337:

Added line 346:

Added line 355:

Added line 364:

Added line 375:

Changed line 382 from:

@]

to:

@]

2015-09-15 14:38 by trijezdci -
Changed line 274 from:
  inPragmaSimpleExpression ( inPragmaOperL1 inPragmaSimpleExpression )?
to:
  inPragmaSimpleExpr ( inPragmaOperL1 inPragmaSimpleExpr )?
Changed line 287 from:
to:
Changed line 289 from:

inPragmaSimpleExpression :

to:

inPragmaSimpleExpr :

2015-09-15 14:35 by trijezdci -
Changed line 132 from:
  quotedCharacterLiteral '=' characterCodeLiteral
to:
  quotedCharacter '=' charCodeLiteral
Changed lines 136-137 from:
#7.2 Quoted Character Literal   syntax diagram
to:
#7.2 Quoted Character   syntax diagram
Changed line 139 from:

quotedCharacterLiteral : String Literal? ; /* single character only */

to:

quotedCharacter : String Literal? ; /* single character only */

Changed line 143 from:
to:
Changed line 145 from:

characterCodeLiteral : Number Literal? ; /* whole number only */

to:

charCodeLiteral : Number Literal? ; /* whole number only */

2015-09-15 14:31 by trijezdci -
Changed line 45 from:
to:
Changed line 47 from:

compileTimeMsgComponent :

to:

ctMsgComponent :

2015-09-15 14:30 by trijezdci - anchoring
Changed lines 1-2 from:
#1 Pragma
to:
#1 Pragma   syntax diagram
Changed lines 9-10 from:
#1.1 Pragma Body
to:
#1.1 Pragma Body   syntax diagram
Changed lines 20-21 from:
#2 Body Of Compile Time Message Pragma
to:
#2 Body Of Compile Time Message Pragma   syntax diagram
Changed lines 28-29 from:
#2.1 Message Mode
to:
#2.1 Message Mode   syntax diagram
Changed lines 36-37 from:
#2.2 Message Component List
to:
#2.2 Message Component List   syntax diagram
Changed lines 44-45 from:
#2.3 Message Component
to:
#2.3 Message Component   syntax diagram
Changed lines 52-53 from:
#2.4 Constant Qualified Identifier
to:
#2.4 Constant Qualified Identifier   syntax diagram
Changed lines 58-59 from:
#2.5 Value Pragma
to:
#2.5 Value Pragma   syntax diagram
Changed lines 66-67 from:
#2.6 Value Pragma Symbol
to:
#2.6 Value Pragma Symbol   syntax diagram
Changed lines 72-73 from:
#2.7 Pragma Symbol
to:
#2.7 Pragma Symbol   syntax diagram
Changed lines 80-81 from:
#3 Body Of Conditional Compilation Pragma
to:
#3 Body Of Conditional Compilation Pragma   syntax diagram
Changed lines 88-89 from:
#4 Body Of Procedure Declaration Attribute Pragma
to:
#4 Body Of Procedure Declaration Attribute Pragma   syntax diagram
Changed lines 96-97 from:
#5 Body Of Promise-To-Write Pragma
to:
#5 Body Of Promise-To-Write Pragma   syntax diagram
Changed lines 104-105 from:
#6 Body Of Forward Declaration Pragma
to:
#6 Body Of Forward Declaration Pragma   syntax diagram
Changed lines 112-113 from:
#7 Body Of Character Encoding Pragma
to:
#7 Body Of Character Encoding Pragma   syntax diagram
Changed lines 121-122 from:
#7.1a Code Point Sample List
to:
#7.1a Code Point Sample List   syntax diagram
Changed lines 136-137 from:
#7.2 Quoted Character Literal
to:
#7.2 Quoted Character Literal   syntax diagram
Changed lines 142-143 from:
#7.3 Character Code Literal
to:
#7.3 Character Code Literal   syntax diagram
Changed lines 148-149 from:
#8 Body Of Memory Alignment Pragma
to:
#8 Body Of Memory Alignment Pragma   syntax diagram
Changed lines 156-157 from:
#9 Body Of Bit Padding Pragma
to:
#9 Body Of Bit Padding Pragma   syntax diagram
Changed lines 164-165 from:
#10 Body Of Purity Attribute Pragma
to:
#10 Body Of Purity Attribute Pragma   syntax diagram
Changed lines 172-173 from:
#11 Body Of Variable Declaration Attribute Pragma
to:
#11 Body Of Variable Declaration Attribute Pragma   syntax diagram
Changed lines 180-181 from:
#12 Body Of Deprecation Pragma
to:
#12 Body Of Deprecation Pragma   syntax diagram
Changed lines 188-189 from:
#13 Body Of Library Generation Timestamp Pragma
to:
#13 Body Of Library Generation Timestamp Pragma   syntax diagram
Changed lines 196-197 from:
#13.1 Datestamp
to:
#13.1 Datestamp   syntax diagram
Changed lines 204-205 from:
#13.2 Timestamp
to:
#13.2 Timestamp   syntax diagram
Changed lines 212-213 from:
#13.3 Year, Month, Day, Hours, Minutes, Seconds, Timezone
to:
#13.3 Year, Month, Day, Hours, Minutes, Seconds, Timezone   syntax diagram
Changed lines 230-231 from:
#14 Body Of Memory Mapping Pragma
to:
#14 Body Of Memory Mapping Pragma   syntax diagram
Changed lines 238-239 from:
#15 Body Of Foreign Function Interface Pragma
to:
#15 Body Of Foreign Function Interface Pragma   syntax diagram
Changed lines 246-247 from:
#16 Body Of Foreign Function Identifier Mapping Pragma
to:
#16 Body Of Foreign Function Identifier Mapping Pragma   syntax diagram
Changed lines 254-255 from:
#17 Body Of Implementation Defined Pragma
to:
#17 Body Of Implementation Defined Pragma   syntax diagram
Changed lines 262-263 from:
#17.1 Implementation Prefix
to:
#17.1 Implementation Prefix   syntax diagram
Changed lines 270-271 from:
#18 In-Pragma Expression
to:
#18 In-Pragma Expression   syntax diagram
Changed lines 278-279 from:
#18.1 In-Pragma Level-1 Operator
to:
#18.1 In-Pragma Level-1 Operator   syntax diagram
Changed lines 286-287 from:
#19 In-Pragma Simple Expression
to:
#19 In-Pragma Simple Expression   syntax diagram
Changed lines 294-295 from:
#19.1 In-Pragma Level-2 Operator
to:
#19.1 In-Pragma Level-2 Operator   syntax diagram
Changed lines 302-303 from:
#20 In-Pragma Term
to:
#20 In-Pragma Term   syntax diagram
Changed lines 310-311 from:
#20.1 In-Pragma Level-3 Operator
to:
#20.1 In-Pragma Level-3 Operator   syntax diagram
Changed lines 318-319 from:
#21 In-Pragma Simple Term
to:
#21 In-Pragma Simple Term   syntax diagram
Changed lines 326-327 from:
#22 In-Pragma Factor
to:
#22 In-Pragma Factor   syntax diagram
Changed lines 336-337 from:
#23 In-Pragma Compile Time Function Call
to:
#23 In-Pragma Compile Time Function Call   syntax diagram
2015-09-15 14:19 by trijezdci -
Changed line 269 from:
  inPragmaFactorOrNegation ( inPragmaOperL3 inPragmaFactorOrNegation )*
to:
  inPragmaSimpleTerm ( inPragmaOperL3 inPragmaSimpleTerm )*
Changed line 280 from:
#21 In-Pragma Factor Or Negation
to:
#21 In-Pragma Simple Term
Changed line 282 from:

inPragmaFactorOrNegation :

to:

inPragmaSimpleTerm :

2015-09-15 14:18 by trijezdci -
Changed line 182 from:
  hours ':' minutes ':' seconds '+' timezone
to:
  hours ':' minutes ':' seconds ( '+' | '-' ) timezone
Changed line 234 from:
to:
2015-09-14 12:52 by trijezdci - moved pragmas to separate page
Added lines 1-301:
#1 Pragma
pragma :	
  '<*' pragmaBody '*>'
  ;
#1.1 Pragma Body
pragmaBody :
  pragmaMSG | pragmaIF | procDeclAttrPragma | pragmaOUT | pragmaFORWARD |
  pragmaENCODING | pragmaALIGN | pragmaPADBITS | pragmaPURITY |
  varDeclAttrPragma | pragmaDEPRECATED | pragmaGENERATED |
  pragmaADDR | pragmaFFI | pragmaFFIDENT | implDefinedPragma
 ;
#2 Body Of Compile Time Message Pragma
pragmaMSG :
  MSG '=' ctMsgMode ':' ctMsgComponentList
  ;
#2.1 Message Mode
ctMsgMode :
  INFO | WARN | ERROR | FATAL
  ;
#2.2 Message Component List
ctMsgComponentList :
  ctMsgComponent ( ',' ctMsgComponent )*
  ;
#2.3 Message Component
compileTimeMsgComponent :
    StringLiteral | constQualident | '?' valuePragma
    ;
#2.4 Constant Qualified Identifier
constQualident : qualident ;
#2.5 Value Pragma
valuePragma :
    ALIGN | ENCODING | valuePragmaSymbol
    ; 
#2.6 Value Pragma Symbol
valuePragmaSymbol : PragmaSymbol ;
#2.7 Pragma Symbol
PragmaSymbol :
  Letter+
  ;
#3 Body Of Conditional Compilation Pragma
pragmaIF :
  ( IF | ELSIF ) inPragmaExpression | ELSE | END
  ;
#4 Body Of Procedure Declaration Attribute Pragma
procDeclAttrPragma :
  INLINE | NOINLINE | BLOCKING | NORETURN
  ;
#5 Body Of Promise-To-Write Pragma
pragmaOUT :
  OUT
  ;
#6 Body Of Forward Declaration Pragma
pragmaFORWARD :
  FORWARD ( TYPE identList | procedureHeader )
  ;
#7 Body Of Character Encoding Pragma
pragmaENCODING : 
  ENCODING '=' StringLiteral /* "ASCII" or "UTF8" */
  ( ':' codePointSampleList )?
  ;
#7.1a Code Point Sample List
codePointSampleList :
  codePointSample ( ',' codePointSample )*
  ;
#7.1b Code Point Sample
codePointSample :
  quotedCharacterLiteral '=' characterCodeLiteral
  ;
#7.2 Quoted Character Literal
quotedCharacterLiteral : StringLiteral ; /* single character only */
#7.3 Character Code Literal
characterCodeLiteral : NumberLiteral ; /* whole number only */
#8 Body Of Memory Alignment Pragma
pragmaALIGN :
  ALIGN '=' inPragmaExpression
  ;
#9 Body Of Bit Padding Pragma
pragmaPADBITS :
  PADBITS '=' inPragmaExpression
  ;
#10 Body Of Purity Attribute Pragma
pragmaPURITY :
  PURITY '=' inPragmaExpression /* values 0 .. 3 */
  ;
#11 Body Of Variable Declaration Attribute Pragma
varDeclAttrPragma :
  SINGLEASSIGN | LOWLATENCY | VOLATILE
  ;
#12 Body Of Deprecation Pragma
pragmaDEPRECATED :
  DEPRECATED
  ;
#13 Body Of Library Generation Timestamp Pragma
pragmaGENERATED :
  GENERATED template ',' datestamp ',' timestamp
  ;
#13.1 Datestamp
datestamp :
  year '-' month '-' day
  ;
#13.2 Timestamp
timestamp :
  hours ':' minutes ':' seconds '+' timezone
  ;
#13.3 Year, Month, Day, Hours, Minutes, Seconds, Timezone
year : wholeNumber ;

month : wholeNumber ;

day : wholeNumber ;

hours : wholeNumber ;

minutes : wholeNumber ;

seconds : wholeNumber ;

timezone : wholeNumber ;
#14 Body Of Memory Mapping Pragma
pragmaADDR :
  ADDR '=' inPragmaExpression
  ;
#15 Body Of Foreign Function Interface Pragma
pragmaFFI :
  FFI '=' StringLiteral /* "C", "Fortran", "CLR" or "JVM" */
  ;
#16 Body Of Foreign Function Identifier Mapping Pragma
pragmaFFIDENT :
  FFIDENT '=' StringLiteral /* foreign library identifier */
  ;
#17 Body Of Implementation Defined Pragma
implDefinedPragma :
  ( implPrefix '.' )? PragmaSymbol ( '=' inPragmaExpression )? '|' ctMsgMode
  ;
#17.1 Implementation Prefix
implPrefix :
  Letter LetterOrDigit*
  ;
#18 In-Pragma Expression
inPragmaExpression :
  inPragmaSimpleExpression ( inPragmaOperL1 inPragmaSimpleExpression )?
  ;
#18.1 In-Pragma Level-1 Operator
inPragmaOperL1 :
  '=' | '#' | '<' | '<=' | '>' | '>='
  ;
#19 In-Pragma Simple Expression
inPragmaSimpleExpression :
  ( '+' | '-' )? inPragmaTerm ( inPragmaOperL2 inPragmaTerm )*
  ;
#19.1 In-Pragma Level-2 Operator
inPragmaOperL2 :
  '+' | '-' | OR
  ;
#20 In-Pragma Term
inPragmaTerm :
  inPragmaFactorOrNegation ( inPragmaOperL3 inPragmaFactorOrNegation )*
  ;
#20.1 In-Pragma Level-3 Operator
inPragmaOperL3 :
  '*' | DIV | MOD | AND
  ;
#21 In-Pragma Factor Or Negation
inPragmaFactorOrNegation :
  NOT? inPragmaFactor
  ;
#22 In-Pragma Factor
inPragmaFactor :
  WholeNumber |
  /* constQualident is covered by inPragmaCompileTimeFunctionCall */
  '(' inPragmaExpression ')' | inPragmaCompileTimeFunctionCall
  ;
#23 In-Pragma Compile Time Function Call
inPragmaCompileTimeFunctionCall :
  qualident ( '(' inPragmaExpression ( ',' inPragmaExpression )* ')' )?
  ;