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

Non Terminals

EBNF.NonTerminals History

Hide minor edits - Show changes to markup

2015-10-09 18:57 by trijezdci -
Changed line 1396 from:
  ABS | LENGTH | EXISTS | SEEK | SUBSET | READ | READNEW | WRITE | WRITEF |
to:
  ABS | LENGTH | EXISTS | SUBSET | READ | READNEW | WRITE | WRITEF |
Changed line 1406 from:
  ( COUNT | VALUE ) bindingDifferentiator1?
to:
  ( COUNT | VALUE | SEEK ) bindingDifferentiator1?
2015-10-09 18:54 by trijezdci -
Changed line 599 from:

localAliases := identList | '*' ;

to:

localAliases := privateAliases ;

2015-10-09 18:51 by trijezdci -
Changed line 72 from:
#3.2 M Ore? Import/Re-Export Libraries \
to:
#3.2 More Import/Re-Export Libraries \
Changed lines 543-545 from:

#32 Block   syntax diagram
to:

#31 Private Import   syntax diagram
Changed lines 547-548 from:

block :=

  declaration* ( BEGIN statementSequence )? END
to:

privateImport :=

  IMPORT importLib ( ',' moreImportLibs | ALIAS privateAliases )?
Changed lines 552-554 from:

#33 Declaration   syntax diagram
to:

#31.1 Import Library   syntax diagram
Changed lines 556-561 from:

declaration :=

  CONST ( Ident '=' constExpression ';' )+ |
  TYPE ( typeDeclaration ';' )+ |
  VAR ( variableDeclaration ';' )+ |
  procedureHeader ';' block Ident ';'
  ;
to:

importLib := Ident ; @]

#31.2 More Import Libraries   syntax diagram
moreImportLibs := identList ;

#31.3 Private Aliases   syntax diagram
privateAliases := identList | '*' ;

#32 Block   syntax diagram
block :=
  declaration* ( BEGIN statementSequence )? END
  ;

#33 Declaration   syntax diagram
declaration :=
  CONST ( Ident '=' constExpression ';' )+ |
  TYPE ( typeDeclaration ';' )+ |
  VAR ( variableDeclaration ';' )+ |
  ALIAS localAliases FOR origin ';'
  procedureHeader ';' block Ident ';'
  ;

#33.1 Local Aliases   syntax diagram
localAliases := identList | '*' ;

#33.2 Origin   syntax diagram

[@ origin := ( Ident '.' )+ '*' ;

2015-10-09 18:42 by trijezdci -
Changed line 29 from:
  ( importList ';' )* definition*
to:
  ( import ';' )* definition*
Changed lines 52-54 from:

#3 Import List   syntax diagram
to:

#3 Import   syntax diagram
Changed lines 56-57 from:

importList :=

  libGenDirective | importDirective
to:

import :=

  IMPORT impexLib ( ',' moreImpexLibs | ALIAS unqualifiedAliases )? |
  libGenDirective
Changed lines 62-64 from:

#4 Library Generation Directive   syntax diagram
to:

#3.1 Import/Re-Export Library   syntax diagram
Changed lines 66-67 from:

libGenDirective :=

  GENLIB libIdent FROM template FOR templateParamList END
to:

impexLib :=

  Ident reExport?
Changed lines 71-73 from:

#4.1 Library Identifier, Template, Placeholder   syntax diagram
to:

#3.2 M Ore? Import/Re-Export Libraries   syntax diagram
Changed lines 75-79 from:

libIdent := Ident ;

template := Ident ;

placeholder := Ident ;

to:

moreImpexLibs :=

  impexLib ( ',' impexLib )*
  ;
Changed lines 80-82 from:

#4.2 Replacement   syntax diagram
to:

#3.3 Re-Export Tag   syntax diagram
Changed lines 84-86 from:
to:

reExport := '+' ;

Changed lines 87-89 from:

#5 Import Directive   syntax diagram
to:

#3.4 Unqualified Aliases   syntax diagram
Changed lines 91-95 from:

importDirective :=

  FROM ( moduleIdent | ENUM enumTypeIdent )
    IMPORT ( identifiersToImport | importAll ) |
  IMPORT modulesToImport
  ;
to:

unqualifiedAliases := identList ;

Changed lines 94-96 from:

#5.1 Enumeration Type Identifier   syntax diagram
to:

#4 Library Generation Directive   syntax diagram
Changed lines 98-100 from:

enumTypeIdent := typeIdent ;

to:

libGenDirective :=

  GENLIB libIdent FROM template FOR templateParamList END
  ;
Changed lines 103-105 from:

#5.2 Type Identifier   syntax diagram
to:

#4.1 Library Identifier, Template, Placeholder   syntax diagram
Changed lines 107-111 from:

typeIdent := qualident ;

to:

libIdent := Ident ;

template := Ident ;

placeholder := Ident ;

Changed lines 114-116 from:

#5.3 Identifiers To Import, Modules To Import   syntax diagram
to:

#4.2 Replacement   syntax diagram
Changed lines 118-119 from:

identifiersToImport :=

  Ident reExport? ( ',' Ident reExport? )*
to:
Deleted lines 120-121:

modulesToImport := identifiersToImport ;

Changed lines 123-125 from:

#5.4 Re-Export   syntax diagram
to:

#5 Identifier List   syntax diagram
Changed lines 127-129 from:

reExport := '+' ;

to:

identList :=

    Ident ( ',' Ident )*
    ;
Changed lines 132-134 from:

#5.5 Import All   syntax diagram
to:

#6 Definition   syntax diagram
Changed lines 136-141 from:

importAll := '*' ;

to:

definition :=

  CONST ( constDefinition ';' )+ |
  TYPE ( typeDefinition ';' )+ |
  VAR ( identList '=' typeIdent ';' )+ |
  procedureHeader ';'
  ;
Changed lines 144-146 from:

#6 Qualified Identifier   syntax diagram
to:

#6.1 Type Identifier   syntax diagram
Changed lines 148-150 from:

qualident :=

  Ident ( '.' Ident )*
  ;
to:

typeIdent := qualident ;

Changed lines 151-153 from:

#7 Definition   syntax diagram
to:

#7 Constant Definition   syntax diagram
Changed lines 155-159 from:

definition :=

  CONST ( constDefinition ';' )+ |
  TYPE ( typeDefinition ';' )+ |
  VAR ( identList '=' typeIdent ';' )+ |
  procedureHeader ';'
to:

constDefinition :=

  ( '[' propertyToBindTo ']' | restrictedExport )?
  Ident '=' constExpression
Changed lines 161-163 from:

#8 Constant Definition   syntax diagram
to:

#7.1 Constant Expression   syntax diagram
Changed lines 165-168 from:

constDefinition :=

  ( '[' propertyToBindTo ']' | restrictedExport )?
  Ident '=' constExpression
  ;
to:

constExpression := expression ;

Changed lines 168-170 from:

#8.1 Constant Expression   syntax diagram
to:

#7.2 Restricted Export   syntax diagram
Changed line 172 from:

constExpression := expression ;

to:

restrictedExport := '*' ;

Changed lines 175-177 from:

#8.2 Restricted Export   syntax diagram
to:

#8 Type Definition   syntax diagram
Changed lines 179-181 from:

restrictedExport := '*' ;

to:

typeDefinition :=

  restrictedExport? Ident '=' ( type | OPAQUE )
  ;
Changed lines 184-186 from:

#9 Type Definition   syntax diagram
to:

#9 Qualified Identifier   syntax diagram
Changed lines 188-189 from:

typeDefinition :=

  restrictedExport? Ident '=' ( OPAQUE | type )
to:

qualident :=

  Ident ( '.' Ident )*
Changed lines 193-195 from:

#10 Identifier List   syntax diagram
to:

#10 Type   syntax diagram
Changed lines 197-199 from:

identList :=

    Ident ( ',' Ident )*
    ;
to:

type :=

  derivedType | equivType | subrangeType | enumType | setType |
  arrayType | recordType | pointerType | coroutineType | procedureType
  ;
Changed lines 203-205 from:

#11 Type   syntax diagram
to:

#10.1 Derived Type   syntax diagram
Changed lines 207-210 from:

type :=

  derivedType | equivType | subrangeType | enumType | setType |
  arrayType | recordType | pointerType | coroutineType | procedureType
  ;
to:

derivedType := typeIdent ;

Changed lines 210-212 from:

#11.1 Derived Type   syntax diagram
to:

#10.2 Equivalence Type   syntax diagram
Changed lines 214-216 from:

derivedType := typeIdent ;

to:

equivType :=

  ALIAS OF typeIdent | CONST dynamicTypeIdent
  ;
Changed lines 219-221 from:

#11.2 Equivalence Type   syntax diagram
to:

#10.3 Dynamic Type Identifier   syntax diagram
Changed lines 223-225 from:

equivType :=

  ALIAS OF typeIdent | CONST dynamicTypeIdent
  ;
to:

dynamicTypeIdent := typeIdent ;

Changed lines 226-228 from:

#11.3 Dynamic Type Identifier   syntax diagram
to:

#11 Subrange Type   syntax diagram
Changed lines 230-232 from:

dynamicTypeIdent := typeIdent ;

to:

subrangeType :=

  range OF ordinalOrScalarType
  ;
Changed lines 235-237 from:

#12 Subrange Type   syntax diagram
to:

#11.1 Range   syntax diagram
Changed lines 239-240 from:

subrangeType :=

  range OF ordinalOrScalarType
to:

range :=

  '[' greaterThan? constExpression '..' lessThan? constExpression ']'
Changed lines 244-246 from:

#12.1 Range   syntax diagram
to:

#11.2 Greater Than   syntax diagram
Changed lines 248-250 from:

range :=

  '[' greaterThan? constExpression '..' lessThan? constExpression ']'
  ;
to:

greaterThan := '>' ;

Changed lines 251-253 from:

#12.2 Greater Than   syntax diagram
to:

#11.3 Less Than   syntax diagram
Changed line 255 from:

greaterThan := '>' ;

to:

lessThan := '<' ;

Changed lines 258-260 from:

#12.3 Less Than   syntax diagram
to:

#11.4 Ordinal Or Scalar Type   syntax diagram
Changed line 262 from:

lessThan := '<' ;

to:

ordinalOrScalarType := typeIdent ;

Changed lines 265-267 from:

#12.4 Ordinal Or Scalar Type   syntax diagram
to:

#12 Enumeration Type   syntax diagram
Changed lines 269-271 from:

ordinalOrScalarType := typeIdent ;

to:

enumType :=

  '(' ( '+' enumTypeToExtend )? identList ')'
  ;
Changed lines 274-276 from:

#13 Enumeration Type   syntax diagram
to:

#12.1 Enumeration Type To Extend   syntax diagram
Changed lines 278-280 from:

enumType :=

  '(' ( '+' enumTypeToExtend )? identList ')'
  ;
to:

enumTypeToExtend := typeIdent ;

Changed lines 281-283 from:

#13.1 Enumeration Type To Extend   syntax diagram
to:

#12.2 Enumeration Type Identifier   syntax diagram
Changed line 285 from:

enumTypeToExtend := typeIdent ;

to:

enumTypeIdent := typeIdent ;

Changed line 289 from:
#14 Set Type \
to:
#13 Set Type \
Changed line 298 from:
#15 Array Type \
to:
#14 Array Type \
Changed line 307 from:
#15.1 Value Count \
to:
#14.1 Value Count \
Changed line 314 from:
#16 Record Type \
to:
#15 Record Type \
Changed line 323 from:
#16.1 Field List \
to:
#15.1 Field List \
Changed line 332 from:
#16.2 Record Type To Extend \
to:
#15.2 Record Type To Extend \
Changed line 339 from:
#17 Pointer Type \
to:
#16 Pointer Type \
Changed line 348 from:
#18 Coroutine Type \
to:
#17 Coroutine Type \
Changed line 357 from:
#18.1 Associated Procedure Type \
to:
#17.1 Associated Procedure Type \
Changed line 364 from:
#19 Procedure Type \
to:
#18 Procedure Type \
Changed line 373 from:
#19.1 Formal Type \
to:
#18.1 Formal Type \
Changed line 382 from:
#20 Simple Formal Type \
to:
#19 Simple Formal Type \
Changed line 391 from:
#20.1 Casting Formal Type \
to:
#19.1 Casting Formal Type \
Changed line 400 from:
#20.2 Address Type Identifier \
to:
#19.2 Address Type Identifier \
Changed line 409 from:
#21 Attributed Formal Type \
to:
#20 Attributed Formal Type \
Changed line 418 from:
#22 Simple Variadic Formal Type \
to:
#21 Simple Variadic Formal Type \
Changed line 427 from:
#22.1 Required Number Of Arguments \
to:
#21.1 Required Number Of Arguments \
Changed line 436 from:
#22.2 Argument List Terminator \
to:
#21.2 Argument List Terminator \
Changed line 445 from:
#22.3 Constant Qualified Identifier \
to:
#21.3 Constant Qualified Identifier \
Changed line 452 from:
#23 Variadic Formal Type \
to:
#22 Variadic Formal Type \
Changed line 463 from:
#24 Non-Variadic Formal Type \
to:
#23 Non-Variadic Formal Type \
Changed line 472 from:
#25 Procedure Header \
to:
#24 Procedure Header \
Changed line 482 from:
#26 Procedure Signature \
to:
#25 Procedure Signature \
Changed line 491 from:
#27 Formal Parameters \
to:
#26 Formal Parameters \
Changed line 501 from:
#28 Attributed Formal Parameters \
to:
#27 Attributed Formal Parameters \
Changed line 511 from:
#29 Variadic Formal Parameters \
to:
#28 Variadic Formal Parameters \
Changed line 522 from:
#30 Non-Variadic Formal Parameters \
to:
#29 Non-Variadic Formal Parameters \
Changed line 534 from:
#31 Implementation Or Program Module \
to:
#30 Implementation Or Program Module \
Changed line 539 from:
  ( importList ';' )* block moduleIdent '.'
to:
  ( privateImport ';' )* block moduleIdent '.'
2015-10-04 05:47 by trijezdci -
Changed line 29 from:
  (importList ';')* definition*
to:
  ( importList ';' )* definition*
2015-10-04 05:46 by trijezdci -
Changed line 156 from:
  VAR ( variableDeclaration ';' )+ |
to:
  VAR ( identList '=' typeIdent ';' )+ |
Changed lines 194-196 from:

#10 Variable Declaration   syntax diagram
to:

#10 Identifier List   syntax diagram
Changed lines 198-200 from:

variableDeclaration :=

  identList ':' ( range OF )? typeIdent
  ;
to:

identList :=

    Ident ( ',' Ident )*
    ;
Changed lines 203-205 from:

#11 Identifier List   syntax diagram
to:

#11 Type   syntax diagram
Changed lines 207-209 from:

identList :=

    Ident ( ',' Ident )*
    ;
to:

type :=

  derivedType | equivType | subrangeType | enumType | setType |
  arrayType | recordType | pointerType | coroutineType | procedureType
  ;
Changed lines 213-215 from:

#12 Range   syntax diagram
to:

#11.1 Derived Type   syntax diagram
Changed lines 217-219 from:

range :=

  '[' greaterThan? constExpression '..' lessThan? constExpression ']'
  ;
to:

derivedType := typeIdent ;

Changed lines 220-222 from:

#12.1 Greater Than   syntax diagram
to:

#11.2 Equivalence Type   syntax diagram
Changed lines 224-226 from:

greaterThan := '>' ;

to:

equivType :=

  ALIAS OF typeIdent | CONST dynamicTypeIdent
  ;
Changed lines 229-231 from:

#12.2 Less Than   syntax diagram
to:

#11.3 Dynamic Type Identifier   syntax diagram
Changed line 233 from:

lessThan := '<' ;

to:

dynamicTypeIdent := typeIdent ;

Changed lines 236-238 from:

#13 Type   syntax diagram
to:

#12 Subrange Type   syntax diagram
Changed lines 240-242 from:

type :=

  derivedType | equivType | subrangeType | enumType | setType |
  arrayType | recordType | pointerType | coroutineType | procedureType
to:

subrangeType :=

  range OF ordinalOrScalarType
Changed lines 245-247 from:

#13.1 Derived Type   syntax diagram
to:

#12.1 Range   syntax diagram
Changed lines 249-251 from:

derivedType := typeIdent ;

to:

range :=

  '[' greaterThan? constExpression '..' lessThan? constExpression ']'
  ;
Changed lines 254-256 from:

#13.2 Equivalence Type   syntax diagram
to:

#12.2 Greater Than   syntax diagram
Changed lines 258-260 from:

equivType :=

  ALIAS OF typeIdent | CONST dynamicTypeIdent
  ;
to:

greaterThan := '>' ;

Changed lines 261-263 from:

#13.3 Subrange Type   syntax diagram
to:

#12.3 Less Than   syntax diagram
Changed lines 265-267 from:

subrangeType :=

  range OF ordinalOrScalarType
  ;
to:

lessThan := '<' ;

Changed lines 268-269 from:

#13.4 Dynamic Type Identifier, Ordinal Or Scalar Type \
to:

#12.4 Ordinal Or Scalar Type \
Deleted lines 271-272:

dynamicTypeIdent := typeIdent ;

Changed line 276 from:
#14 Enumeration Type \
to:
#13 Enumeration Type \
Changed line 285 from:
#14.1 Enumeration Type To Extend \
to:
#13.1 Enumeration Type To Extend \
Changed line 292 from:
#15 Set Type \
to:
#14 Set Type \
Changed line 301 from:
#16 Array Type \
to:
#15 Array Type \
Changed line 310 from:
#16.1 Value Count \
to:
#15.1 Value Count \
Changed line 317 from:
#17 Record Type \
to:
#16 Record Type \
Changed line 326 from:
#17.1 Field List \
to:
#16.1 Field List \
Changed line 335 from:
#17.2 Record Type To Extend \
to:
#16.2 Record Type To Extend \
Changed line 342 from:
#18 Pointer Type \
to:
#17 Pointer Type \
Changed line 351 from:
#19 Coroutine Type \
to:
#18 Coroutine Type \
Changed line 360 from:
#19.1 Associated Procedure Type \
to:
#18.1 Associated Procedure Type \
Changed line 367 from:
#20 Procedure Type \
to:
#19 Procedure Type \
Changed line 376 from:
#20.1 Formal Type \
to:
#19.1 Formal Type \
Changed line 385 from:
#21 Simple Formal Type \
to:
#20 Simple Formal Type \
Changed line 394 from:
#21.1 Casting Formal Type \
to:
#20.1 Casting Formal Type \
Changed line 403 from:
#21.2 Address Type Identifier \
to:
#20.2 Address Type Identifier \
Changed line 412 from:
#22 Attributed Formal Type \
to:
#21 Attributed Formal Type \
Changed line 421 from:
#23 Simple Variadic Formal Type \
to:
#22 Simple Variadic Formal Type \
Changed line 430 from:
#23.1 Required Number Of Arguments \
to:
#22.1 Required Number Of Arguments \
Changed line 439 from:
#23.2 Argument List Terminator \
to:
#22.2 Argument List Terminator \
Changed line 448 from:
#23.3 Constant Qualified Identifier \
to:
#22.3 Constant Qualified Identifier \
Changed line 455 from:
#24 Variadic Formal Type \
to:
#23 Variadic Formal Type \
Changed line 466 from:
#25 Non-Variadic Formal Type \
to:
#24 Non-Variadic Formal Type \
Changed line 475 from:
#26 Procedure Header \
to:
#25 Procedure Header \
Changed line 485 from:
#27 Procedure Signature \
to:
#26 Procedure Signature \
Changed line 494 from:
#28 Formal Parameters \
to:
#27 Formal Parameters \
Changed line 504 from:
#29 Attributed Formal Parameters \
to:
#28 Attributed Formal Parameters \
Changed line 514 from:
#30 Variadic Formal Parameters \
to:
#29 Variadic Formal Parameters \
Changed line 525 from:
#31 Non-Variadic Formal Parameters \
to:
#30 Non-Variadic Formal Parameters \
Changed line 537 from:
#32 Implementation Or Program Module \
to:
#31 Implementation Or Program Module \
Changed line 547 from:
#33 Block \
to:
#32 Block \
Changed line 556 from:
#34 Declaration \
to:
#33 Declaration \
Changed line 568 from:
#35 Type Declaration \
to:
#34 Type Declaration \
Changed line 577 from:
#35.1 Indeterminate Record Type \
to:
#34.1 Indeterminate Record Type \
Changed line 586 from:
#35.2 Indeterminate Field \
to:
#34.2 Indeterminate Field \
Changed line 595 from:
#35.3 Discriminant Field Identifier \
to:
#34.3 Discriminant Field Identifier \
Added lines 599-607:

@]

#35 Variable Declaration   syntax diagram

[@ variableDeclaration :=

  identList ':' ( ( ARRAY valueCount OF )? typeIdent | subrangeType )
  ;
2015-10-04 05:34 by trijezdci -
Changed lines 937-938 from:
  Number Literal? | String Literal? | structuredValue | designatorOrFuncCall | '(' expression ')'
to:
  Number Literal? | String Literal? | structuredValue |
  designatorOrFuncCall | '(' expression ')'
Changed line 947 from:
  designator '(' expressionList? ')'
to:
  designator ( '(' expressionList? ')' )?
2015-10-04 05:33 by trijezdci -
Changed line 937 from:
  Number Literal? | String Literal? | structuredValue | functionCall | '(' expression ')'
to:
  Number Literal? | String Literal? | structuredValue | designatorOrFuncCall | '(' expression ')'
Changed lines 941-943 from:

#54.1 Function Call   syntax diagram
to:

#54.1 Designator Or Function Call   syntax diagram
Changed line 945 from:

functionCall :=

to:

designatorOrFuncCall :=

2015-10-04 05:20 by trijezdci -
Changed line 862 from:
  ( '+' | '-' )? term ( operL2 term )*
to:
  term ( operL2 term )* | '-' simpleFactor
2015-09-28 07:22 by trijezdci -
Changed lines 257-258 from:
  ALIAS OF typeIdent |
  CONST dynamicTypeIdent
to:
  ALIAS OF typeIdent | CONST dynamicTypeIdent
2015-09-28 07:21 by trijezdci -
Changed lines 240-241 from:
  typeIdent | subType | enumType | setType | arrayType |
  recordType | pointerType | coroutineType | procedureType
to:
  derivedType | equivType | subrangeType | enumType | setType |
  arrayType | recordType | pointerType | coroutineType | procedureType
Changed lines 245-247 from:

#13.1 Sub-Type   syntax diagram
to:

#13.1 Derived Type   syntax diagram
Changed lines 249-253 from:

subType :=

  ALIAS OF typeIdent |
  CONST dynamicTypeIdent |
  range OF ordinalOrScalarType
  ;
to:

derivedType := typeIdent ;

Changed lines 252-254 from:

#13.2 Dynamic Type Identifier, Ordinal Or Scalar Type   syntax diagram
to:

#13.2 Equivalence Type   syntax diagram
Changed lines 256-258 from:

dynamicTypeIdent := typeIdent ;

ordinalOrScalarType := typeIdent ;

to:

equivType :=

  ALIAS OF typeIdent |
  CONST dynamicTypeIdent
  ;
Changed lines 262-264 from:

#14 Enumeration Type   syntax diagram
to:

#13.3 Subrange Type   syntax diagram
Changed lines 266-267 from:

enumType :=

  '(' ( '+' enumTypeToExtend )? identList ')'
to:

subrangeType :=

  range OF ordinalOrScalarType
Changed lines 271-273 from:

#14.1 Enumeration Type To Extend   syntax diagram
to:

#13.4 Dynamic Type Identifier, Ordinal Or Scalar Type   syntax diagram
Changed lines 275-277 from:

enumTypeToExtend := typeIdent ;

to:

dynamicTypeIdent := typeIdent ;

ordinalOrScalarType := typeIdent ;

Changed lines 280-282 from:

#15 Set Type   syntax diagram
to:

#14 Enumeration Type   syntax diagram
Changed lines 284-285 from:

setType :=

  SET OF enumTypeIdent
to:

enumType :=

  '(' ( '+' enumTypeToExtend )? identList ')'
Changed lines 289-291 from:

#16 Array Type   syntax diagram
to:

#14.1 Enumeration Type To Extend   syntax diagram
Changed lines 293-295 from:

arrayType :=

  ARRAY lessThan? valueCount ( ',' valueCount )* OF typeIdent
  ;
to:

enumTypeToExtend := typeIdent ;

Changed lines 296-298 from:

#16.1 Value Count   syntax diagram
to:

#15 Set Type   syntax diagram
Changed lines 300-302 from:

valueCount := constExpression ;

to:

setType :=

  SET OF enumTypeIdent
  ;
Changed lines 305-307 from:

#17 Record Type   syntax diagram
to:

#16 Array Type   syntax diagram
Changed lines 309-310 from:

recordType :=

  RECORD ( '(' recTypeToExtend ')' )? fieldList ( ';' fieldList )* )
to:

arrayType :=

  ARRAY lessThan? valueCount ( ',' valueCount )* OF typeIdent
Changed lines 314-316 from:

#17.1 Field List   syntax diagram
to:

#16.1 Value Count   syntax diagram
Changed lines 318-320 from:

fieldList :

  restrictedExport? variableDeclaration ( '=' constExpression )?
  ;
to:

valueCount := constExpression ;

Changed lines 321-323 from:

#17.2 Record Type To Extend   syntax diagram
to:

#17 Record Type   syntax diagram
Changed lines 325-327 from:

recTypeToExtend := typeIdent ;

to:

recordType :=

  RECORD ( '(' recTypeToExtend ')' )? fieldList ( ';' fieldList )* )
  ;
Changed lines 330-332 from:

#18 Pointer Type   syntax diagram
to:

#17.1 Field List   syntax diagram
Changed lines 334-335 from:

pointerType :=

  POINTER TO CONST? typeIdent
to:

fieldList :

  restrictedExport? variableDeclaration ( '=' constExpression )?
Changed lines 339-341 from:

#19 Coroutine Type   syntax diagram
to:

#17.2 Record Type To Extend   syntax diagram
Changed lines 343-345 from:

coroutineType :=

  COROUTINE '(' assocProcType ')'
  ;
to:

recTypeToExtend := typeIdent ;

Changed lines 346-348 from:

#19.1 Associated Procedure Type   syntax diagram
to:

#18 Pointer Type   syntax diagram
Changed lines 350-352 from:

assocProcType : typeIdent ;

to:

pointerType :=

  POINTER TO CONST? typeIdent
  ;
Changed lines 355-357 from:

#20 Procedure Type   syntax diagram
to:

#19 Coroutine Type   syntax diagram
Changed lines 359-360 from:

procedureType :=

  PROCEDURE ( formalType ( ',' formalType )* )? ( ':' returnedType )?
to:

coroutineType :=

  COROUTINE '(' assocProcType ')'
Changed lines 364-366 from:

#20.1 Formal Type   syntax diagram
to:

#19.1 Associated Procedure Type   syntax diagram
Changed lines 368-370 from:

formalType :=

  simpleFormalType | attributedFormalType | variadicFormalType
  ;
to:

assocProcType : typeIdent ;

Changed lines 371-373 from:

#21 Simple Formal Type   syntax diagram
to:

#20 Procedure Type   syntax diagram
Changed lines 375-376 from:

simpleFormalType :=

  ( ARRAY OF )? typeIdent | castingFormalType
to:

procedureType :=

  PROCEDURE ( formalType ( ',' formalType )* )? ( ':' returnedType )?
Changed lines 380-382 from:

#21.1 Casting Formal Type   syntax diagram
to:

#20.1 Formal Type   syntax diagram
Changed lines 384-385 from:

castingFormalType :=

  CAST ( ARRAY OF OCTET | addressTypeIdent )
to:

formalType :=

  simpleFormalType | attributedFormalType | variadicFormalType
Changed lines 389-391 from:

#21.2 Address Type Identifier   syntax diagram
to:

#21 Simple Formal Type   syntax diagram
Changed lines 393-394 from:

addressTypeIdent :=

  ( UNSAFE '.' )? ADDRESS
to:

simpleFormalType :=

  ( ARRAY OF )? typeIdent | castingFormalType
Changed lines 398-400 from:

#22 Attributed Formal Type   syntax diagram
to:

#21.1 Casting Formal Type   syntax diagram
Changed lines 402-403 from:

attributedFormalType :=

  ( CONST | NEW | VAR ) ( simpleFormalType | simpleVariadicFormalType )
to:

castingFormalType :=

  CAST ( ARRAY OF OCTET | addressTypeIdent )
Changed lines 407-409 from:

#23 Simple Variadic Formal Type   syntax diagram
to:

#21.2 Address Type Identifier   syntax diagram
Changed lines 411-412 from:

simpleVariadicFormalType :=

  ARGLIST reqNumOfArgs? OF simpleFormalType terminator?
to:

addressTypeIdent :=

  ( UNSAFE '.' )? ADDRESS
Changed lines 416-418 from:

#23.1 Required Number Of Arguments   syntax diagram
to:

#22 Attributed Formal Type   syntax diagram
Changed lines 420-421 from:

reqNumOfArgs :=

  greaterThan? constExpression
to:

attributedFormalType :=

  ( CONST | NEW | VAR ) ( simpleFormalType | simpleVariadicFormalType )
Changed lines 425-427 from:

#23.2 Argument List Terminator   syntax diagram
to:

#23 Simple Variadic Formal Type   syntax diagram
Changed lines 429-430 from:

terminator :=

  '|' constQualident
to:

simpleVariadicFormalType :=

  ARGLIST reqNumOfArgs? OF simpleFormalType terminator?
Changed lines 434-436 from:

#23.3 Constant Qualified Identifier   syntax diagram
to:

#23.1 Required Number Of Arguments   syntax diagram
Changed lines 438-440 from:

constQualident := qualident ;

to:

reqNumOfArgs :=

  greaterThan? constExpression
  ;
Changed lines 443-445 from:

#24 Variadic Formal Type   syntax diagram
to:

#23.2 Argument List Terminator   syntax diagram
Changed lines 447-450 from:

variadicFormalType :=

  ARGLIST reqNumOfArgs? OF
    ( '{' nonVariadicFormalType ( ';' nonVariadicFormalType )* '}' |
      simpleFormalType ) terminator?
to:

terminator :=

  '|' constQualident
Changed lines 452-454 from:

#25 Non-Variadic Formal Type   syntax diagram
to:

#23.3 Constant Qualified Identifier   syntax diagram
Changed lines 456-458 from:

nonVariadicFormalType :=

  ( CONST | NEW | VAR )? simpleFormalType
  ;
to:

constQualident := qualident ;

Changed lines 459-461 from:

#26 Procedure Header   syntax diagram
to:

#24 Variadic Formal Type   syntax diagram
Changed lines 463-465 from:

procedureHeader :=

  PROCEDURE ( '[' ( entityToBindTo | COROUTINE ) ']' | restrictedExport )?
  procedureSignature
to:

variadicFormalType :=

  ARGLIST reqNumOfArgs? OF
    ( '{' nonVariadicFormalType ( ';' nonVariadicFormalType )* '}' |
      simpleFormalType ) terminator?
Changed lines 470-472 from:

#27 Procedure Signature   syntax diagram
to:

#25 Non-Variadic Formal Type   syntax diagram
Changed lines 474-475 from:

procedureSignature :=

  Ident ( '(' formalParams ( ';' formalParams )* ')' )? ( ':' returnedType )?
to:

nonVariadicFormalType :=

  ( CONST | NEW | VAR )? simpleFormalType
Changed lines 479-481 from:

#28 Formal Parameters   syntax diagram
to:

#26 Procedure Header   syntax diagram
Changed lines 483-485 from:

formalParams :=

  identList ':' ( simpleFormalType | variadicFormalParams ) |
  attributedFormalParams
to:

procedureHeader :=

  PROCEDURE ( '[' ( entityToBindTo | COROUTINE ) ']' | restrictedExport )?
  procedureSignature
Changed lines 489-491 from:

#29 Attributed Formal Parameters   syntax diagram
to:

#27 Procedure Signature   syntax diagram
Changed lines 493-495 from:

attributedFormalParams :=

  ( CONST | NEW | VAR ) identList ':'
  ( simpleFormalType | simpleVariadicFormalType )
to:

procedureSignature :=

  Ident ( '(' formalParams ( ';' formalParams )* ')' )? ( ':' returnedType )?
Changed lines 498-500 from:

#30 Variadic Formal Parameters   syntax diagram
to:

#28 Formal Parameters   syntax diagram
Changed lines 502-505 from:

variadicFormalParams :=

  ARGLIST reqNumOfArgs? OF
    ( ( '{' nonVariadicFormalParams ( ';' nonVariadicFormalParams )* '}') |
      simpleFormalType ) terminator?
to:

formalParams :=

  identList ':' ( simpleFormalType | variadicFormalParams ) |
  attributedFormalParams
Changed lines 508-510 from:

#31 Non-Variadic Formal Parameters   syntax diagram
to:

#29 Attributed Formal Parameters   syntax diagram
Changed lines 512-513 from:

nonVariadicFormalParams :=

  ( CONST | NEW | VAR )? identList ':' simpleFormalType
to:

attributedFormalParams :=

  ( CONST | NEW | VAR ) identList ':'
  ( simpleFormalType | simpleVariadicFormalType )
Changed lines 518-523 from:

Implementation And Program Module Syntax

#32 Implementation Or Program Module   syntax diagram
to:

#30 Variadic Formal Parameters   syntax diagram
Changed lines 522-524 from:

implOrPrgmModule :=

  IMPLEMENTATION? MODULE moduleIdent ';'
  ( importList ';' )* block moduleIdent '.'
to:

variadicFormalParams :=

  ARGLIST reqNumOfArgs? OF
    ( ( '{' nonVariadicFormalParams ( ';' nonVariadicFormalParams )* '}') |
      simpleFormalType ) terminator?
Changed lines 529-531 from:

#33 Block   syntax diagram
to:

#31 Non-Variadic Formal Parameters   syntax diagram
Changed lines 533-534 from:

block :=

  declaration* ( BEGIN statementSequence )? END
to:

nonVariadicFormalParams :=

  ( CONST | NEW | VAR )? identList ':' simpleFormalType
Changed lines 538-540 from:

#34 Declaration   syntax diagram
to:

Implementation And Program Module Syntax

#32 Implementation Or Program Module   syntax diagram
Changed lines 545-549 from:

declaration :=

  CONST ( Ident '=' constExpression ';' )+ |
  TYPE ( typeDeclaration ';' )+ |
  VAR ( variableDeclaration ';' )+ |
  procedureHeader ';' block Ident ';'
to:

implOrPrgmModule :=

  IMPLEMENTATION? MODULE moduleIdent ';'
  ( importList ';' )* block moduleIdent '.'
Changed lines 551-553 from:

#35 Type Declaration   syntax diagram
to:

#33 Block   syntax diagram
Changed lines 555-556 from:

typeDeclaration :=

  Ident '=' ( type | indeterminateRecType )
to:

block :=

  declaration* ( BEGIN statementSequence )? END
Changed lines 560-562 from:

#35.1 Indeterminate Record Type   syntax diagram
to:

#34 Declaration   syntax diagram
Changed lines 564-565 from:

indeterminateRecType :=

  '~' RECORD ( variableDeclaration ';' )+ indeterminateField END
to:

declaration :=

  CONST ( Ident '=' constExpression ';' )+ |
  TYPE ( typeDeclaration ';' )+ |
  VAR ( variableDeclaration ';' )+ |
  procedureHeader ';' block Ident ';'
Changed lines 572-574 from:

#35.2 Indeterminate Field   syntax diagram
to:

#35 Type Declaration   syntax diagram
Changed lines 576-577 from:

indeterminateRecType :=

  ' Ident ':' ARRAY ' discriminantFieldIdent OF typeIdent END
to:

typeDeclaration :=

  Ident '=' ( type | indeterminateRecType )
Changed lines 581-583 from:

#35.3 Discriminant Field Identifier   syntax diagram
to:

#35.1 Indeterminate Record Type   syntax diagram
Changed lines 585-587 from:

discriminantFieldIdent := Ident ;

to:

indeterminateRecType :=

  '~' RECORD ( variableDeclaration ';' )+ indeterminateField END
  ;
Changed lines 590-592 from:

#36 Statement Sequence   syntax diagram
to:

#35.2 Indeterminate Field   syntax diagram
Changed lines 594-595 from:

statementSequence :=

  statement ( ';' statement )*
to:

indeterminateRecType :=

  ' Ident ':' ARRAY ' discriminantFieldIdent OF typeIdent END
Changed lines 599-601 from:

#37 Statement   syntax diagram
to:

#35.3 Discriminant Field Identifier   syntax diagram
Changed lines 603-606 from:

statement :=

  memMgtOperation | updateOrProcCall | ifStatement | caseStatement |
  loopStatement | whileStatement | repeatStatement | forStatement | EXIT
  ;
to:

discriminantFieldIdent := Ident ;

Changed lines 606-608 from:

#38 Memory Management Operation   syntax diagram
to:

#36 Statement Sequence   syntax diagram
Changed lines 610-613 from:

memMgtOperation :=

  NEW designator ( OF initSize | := initValue )? |
  RETAIN designator |
  RELEASE designator
to:

statementSequence :=

  statement ( ';' statement )*
Changed lines 615-617 from:

#38.1 Initialisation Size, Initialisation Value   syntax diagram
to:

#37 Statement   syntax diagram
Changed lines 619-621 from:

initSize := expression ;

initValue := expression ;

to:

statement :=

  memMgtOperation | updateOrProcCall | ifStatement | caseStatement |
  loopStatement | whileStatement | repeatStatement | forStatement | EXIT
  ;
Changed lines 625-627 from:

#39 Update Or Procedure Call   syntax diagram
to:

#38 Memory Management Operation   syntax diagram
Changed lines 629-631 from:

updateOrProcCall :=

  designator ( incOrDecSuffix | ':=' expression | '(' expressionList ')' )? |
  COPY designator ':=' expression
to:

memMgtOperation :=

  NEW designator ( OF initSize | := initValue )? |
  RETAIN designator |
  RELEASE designator
Changed lines 636-638 from:

#39.1 Increment Or Decrement Suffix   syntax diagram
to:

#38.1 Initialisation Size, Initialisation Value   syntax diagram
Changed lines 640-642 from:

incOrDecSuffix :=

   | 
  ;
to:

initSize := expression ;

initValue := expression ;

Changed lines 645-647 from:

#40 Return Or Yield Statement   syntax diagram
to:

#39 Update Or Procedure Call   syntax diagram
Changed lines 649-650 from:

returnStatement :=

  ( RETURN | YIELD ) expression?
to:

updateOrProcCall :=

  designator ( incOrDecSuffix | ':=' expression | '(' expressionList ')' )? |
  COPY designator ':=' expression
Changed lines 655-657 from:

#41 IF Statement   syntax diagram
to:

#39.1 Increment Or Decrement Suffix   syntax diagram
Changed lines 659-663 from:

ifStatement :=

  IF boolExpression THEN statementSequence
  ( ELSIF boolExpression THEN statementSequence )?
  ( ELSE statementSequence )?
  END
to:

incOrDecSuffix :=

   | 
Changed lines 664-666 from:

#41.1 Boolean Expression   syntax diagram
to:

#40 Return Or Yield Statement   syntax diagram
Changed lines 668-670 from:

boolExpression := expression ;

to:

returnStatement :=

  ( RETURN | YIELD ) expression?
  ;
Changed lines 673-675 from:

#42 CASE Statement   syntax diagram
to:

#41 IF Statement   syntax diagram
Changed lines 677-678 from:

caseStatement :=

  CASE expression OF ( '|' case  )+ ( ELSE statementSequence )? END
to:

ifStatement :=

  IF boolExpression THEN statementSequence
  ( ELSIF boolExpression THEN statementSequence )?
  ( ELSE statementSequence )?
  END
Changed lines 685-687 from:

#42.1 Case   syntax diagram
to:

#41.1 Boolean Expression   syntax diagram
Changed lines 689-691 from:

case :=

  caseLabels ( ',' caseLabels )* ':' statementSequence
  ;
to:

boolExpression := expression ;

Changed lines 692-694 from:

#42.2 Case Labels   syntax diagram
to:

#42 CASE Statement   syntax diagram
Changed lines 696-697 from:

caseLabels :=

  constExpression ( '..' constExpression )?
to:

caseStatement :=

  CASE expression OF ( '|' case  )+ ( ELSE statementSequence )? END
Changed lines 701-703 from:

#43 LOOP Statement   syntax diagram
to:

#42.1 Case   syntax diagram
Changed lines 705-706 from:

loopStatement :=

  LOOP statementSequence END
to:

case :=

  caseLabels ( ',' caseLabels )* ':' statementSequence
Changed lines 710-712 from:

#44 WHILE Statement   syntax diagram
to:

#42.2 Case Labels   syntax diagram
Changed lines 714-715 from:

whileStatement :=

  WHILE boolExpression DO statementSequence END
to:

caseLabels :=

  constExpression ( '..' constExpression )?
Changed lines 719-721 from:

#45 REPEAT Statement   syntax diagram
to:

#43 LOOP Statement   syntax diagram
Changed lines 723-724 from:

repeatStatement :=

  REPEAT statementSequence UNTIL boolExpression
to:

loopStatement :=

  LOOP statementSequence END
Changed lines 728-730 from:

#46 FOR Statement   syntax diagram
to:

#44 WHILE Statement   syntax diagram
Changed lines 732-733 from:

forStatement :=

  FOR forLoopVariants IN iterableEntity DO statementSequence END
to:

whileStatement :=

  WHILE boolExpression DO statementSequence END
Changed lines 737-739 from:

#46.1 FOR Loop Variants   syntax diagram
to:

#45 REPEAT Statement   syntax diagram
Changed lines 741-743 from:

forLoopVariants :=

  accessor ascOrDesc? ( ',' value )? |
  VALUE value ascOrDesc?
to:

repeatStatement :=

  REPEAT statementSequence UNTIL boolExpression
Changed lines 746-748 from:

#46.2 Accessor, Value   syntax diagram
to:

#46 FOR Statement   syntax diagram
Changed lines 750-752 from:

accessor := Ident ;

value := Ident ;

to:

forStatement :=

  FOR forLoopVariants IN iterableExpr DO statementSequence END
  ;
Changed lines 755-757 from:

#46.3 Iterable Entity   syntax diagram
to:

#46.1 FOR Loop Variants   syntax diagram
Changed lines 759-760 from:

iterableEntity :=

  designator | range OF ordinalType
to:

forLoopVariants :=

  accessor ascOrDesc? ( ',' value )? |
  VALUE value ascOrDesc?
  ;

@]

#46.2 Accessor, Value   syntax diagram
accessor := Ident ;

value := Ident ;

#46.3 Iterable Expression   syntax diagram

[@ iterableExpr :=

  designator | '[' expression '..' expression ']' OF ordinalType
2015-09-28 03:31 by trijezdci -
Changed line 257 from:
#13.2 Ordinal Or Scalar Type, Dynamic Type Identifier \
to:
#13.2 Dynamic Type Identifier, Ordinal Or Scalar Type \
2015-09-28 03:30 by trijezdci -
Changed line 249 from:

derivedSubType :=

to:

subType :=

Changed line 256 from:

to:

2015-09-28 03:29 by trijezdci -
Changed line 240 from:
  typeIdent | derivedSubType | enumType | setType | arrayType |
to:
  typeIdent | subType | enumType | setType | arrayType |
Changed lines 245-247 from:

#13.1 Derived Sub-Type   syntax diagram
to:

#13.1 Sub-Type   syntax diagram
Changed lines 251-252 from:
  range OF ordinalOrScalarType |
  CONST dynamicTypeIdent
to:
  CONST dynamicTypeIdent |
  range OF ordinalOrScalarType
Added lines 260-261:

dynamicTypeIdent := typeIdent ;

Deleted lines 262-263:

dynamicTypeIdent := typeIdent ;

2015-09-27 15:50 by trijezdci -
Changed lines 606-607 from:
  loopStatement | whileStatement | repeatStatement | forStatement |
  ( RETURN | YIELD ) expression? | EXIT
to:
  loopStatement | whileStatement | repeatStatement | forStatement | EXIT
Changed lines 649-651 from:

#40 IF Statement   syntax diagram
to:

#40 Return Or Yield Statement   syntax diagram
Changed lines 653-657 from:

ifStatement :=

  IF boolExpression THEN statementSequence
  ( ELSIF boolExpression THEN statementSequence )?
  ( ELSE statementSequence )?
  END
to:

returnStatement :=

  ( RETURN | YIELD ) expression?
Changed lines 658-660 from:

#40.1 Boolean Expression   syntax diagram
to:

#41 IF Statement   syntax diagram
Changed lines 662-667 from:

boolExpression := expression ;

to:

ifStatement :=

  IF boolExpression THEN statementSequence
  ( ELSIF boolExpression THEN statementSequence )?
  ( ELSE statementSequence )?
  END
  ;
Changed lines 670-672 from:

#41 CASE Statement   syntax diagram
to:

#41.1 Boolean Expression   syntax diagram
Changed lines 674-676 from:

caseStatement :=

  CASE expression OF ( '|' case  )+ ( ELSE statementSequence )? END
  ;
to:

boolExpression := expression ;

Changed lines 677-679 from:

#41.1 Case   syntax diagram
to:

#42 CASE Statement   syntax diagram
Changed lines 681-682 from:

case :=

  caseLabels ( ',' caseLabels )* ':' statementSequence
to:

caseStatement :=

  CASE expression OF ( '|' case  )+ ( ELSE statementSequence )? END
Changed lines 686-688 from:

#41.2 Case Labels   syntax diagram
to:

#42.1 Case   syntax diagram
Changed lines 690-691 from:

caseLabels :=

  constExpression ( '..' constExpression )?
to:

case :=

  caseLabels ( ',' caseLabels )* ':' statementSequence
Changed lines 695-697 from:

#42 LOOP Statement   syntax diagram
to:

#42.2 Case Labels   syntax diagram
Changed lines 699-700 from:

loopStatement :=

  LOOP statementSequence END
to:

caseLabels :=

  constExpression ( '..' constExpression )?
Changed lines 704-706 from:

#43 WHILE Statement   syntax diagram
to:

#43 LOOP Statement   syntax diagram
Changed lines 708-709 from:

whileStatement :=

  WHILE boolExpression DO statementSequence END
to:

loopStatement :=

  LOOP statementSequence END
Changed lines 713-715 from:

#44 REPEAT Statement   syntax diagram
to:

#44 WHILE Statement   syntax diagram
Changed lines 717-718 from:

repeatStatement :=

  REPEAT statementSequence UNTIL boolExpression
to:

whileStatement :=

  WHILE boolExpression DO statementSequence END
Changed lines 722-724 from:

#45 FOR Statement   syntax diagram
to:

#45 REPEAT Statement   syntax diagram
Changed lines 726-727 from:

forStatement :=

  FOR forLoopVariants IN iterableEntity DO statementSequence END
to:

repeatStatement :=

  REPEAT statementSequence UNTIL boolExpression
Changed lines 731-733 from:

#45.1 FOR Loop Variants   syntax diagram
to:

#46 FOR Statement   syntax diagram
Changed lines 735-737 from:

forLoopVariants :=

  accessor ascOrDesc? ( ',' value )? |
  VALUE value ascOrDesc?
to:

forStatement :=

  FOR forLoopVariants IN iterableEntity DO statementSequence END
Changed lines 740-742 from:

#45.2 Accessor, Value   syntax diagram
to:

#46.1 FOR Loop Variants   syntax diagram
Changed lines 744-746 from:

accessor := Ident ;

value := Ident ;

to:

forLoopVariants :=

  accessor ascOrDesc? ( ',' value )? |
  VALUE value ascOrDesc?
  ;
Changed lines 750-752 from:

#45.3 Iterable Entity   syntax diagram
to:

#46.2 Accessor, Value   syntax diagram
Changed lines 754-756 from:

iterableEntity :=

  designator | range OF ordinalType
  ;
to:

accessor := Ident ;

value := Ident ;

Changed lines 759-761 from:

#45.4 Ascender Or Descender   syntax diagram
to:

#46.3 Iterable Entity   syntax diagram
Changed lines 763-765 from:

ascOrDesc := incOrDecSuffix ;

to:

iterableEntity :=

  designator | range OF ordinalType
  ;
Changed lines 768-770 from:

#45.5 Ordinal Type   syntax diagram
to:

#46.4 Ascender Or Descender   syntax diagram
Changed line 772 from:

ordinalType := typeIdent ;

to:

ascOrDesc := incOrDecSuffix ;

Changed lines 775-777 from:

#46 Designator   syntax diagram
to:

#46.5 Ordinal Type   syntax diagram
Changed lines 779-781 from:

designator :=

  qualident designatorTail?
  ;
to:

ordinalType := typeIdent ;

Changed lines 782-784 from:

#46.1 Designator Tail   syntax diagram
to:

#47 Designator   syntax diagram
Changed lines 786-787 from:

designatorTail :=

  ( ( '[' exprListOrSlice ']' | '^' ) ( '.' Ident )* )+
to:

designator :=

  qualident designatorTail?
Changed lines 791-793 from:

#46.2 Expression List Or Slice   syntax diagram
to:

#47.1 Designator Tail   syntax diagram
Changed lines 795-796 from:

exprListOrSlice :=

  expression ( ( ',' expression )* | '..' expression? )
to:

designatorTail :=

  ( ( '[' exprListOrSlice ']' | '^' ) ( '.' Ident )* )+
Changed lines 800-802 from:

#47 Expression List   syntax diagram
to:

#47.2 Expression List Or Slice   syntax diagram
Changed lines 804-805 from:

expressionList :=

  expression ( ',' expression )*
to:

exprListOrSlice :=

  expression ( ( ',' expression )* | '..' expression? )
Changed lines 809-811 from:

#48 Expression   syntax diagram
to:

#48 Expression List   syntax diagram
Changed lines 813-814 from:

expression :=

  simpleExpression ( operL1 simpleExpression )?
to:

expressionList :=

  expression ( ',' expression )*
Changed lines 818-820 from:

#48.1 Level-1 Operator   syntax diagram
to:

#49 Expression   syntax diagram
Changed lines 822-823 from:

operL1 :=

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

expression :=

  simpleExpression ( operL1 simpleExpression )?
Changed lines 827-829 from:

#48.2 Identity Operator   syntax diagram
to:

#49.1 Level-1 Operator   syntax diagram
Changed lines 831-833 from:

identityOp := '==' ;

to:

operL1 :=

  '=' | '#' | '<' | '<=' | '>' | '>=' | IN | identityOp
  ;
Changed lines 836-838 from:

#49 Simple Expression   syntax diagram
to:

#49.2 Identity Operator   syntax diagram
Changed lines 840-842 from:

simpleExpression :=

  ( '+' | '-' )? term ( operL2 term )*
  ;
to:

identityOp := '==' ;

Changed lines 843-845 from:

#49.1 Level-2 Operator   syntax diagram
to:

#50 Simple Expression   syntax diagram
Changed lines 847-848 from:

operL2 :=

  '+' | '-' | OR | concatOp
to:

simpleExpression :=

  ( '+' | '-' )? term ( operL2 term )*
Changed lines 852-854 from:

#49.2 Concatenation Operator   syntax diagram
to:

#50.1 Level-2 Operator   syntax diagram
Changed lines 856-858 from:

concatOp := '&' ;

to:

operL2 :=

  '+' | '-' | OR | concatOp
  ;
Changed lines 861-863 from:

#50 Term   syntax diagram
to:

#49.2 Concatenation Operator   syntax diagram
Changed lines 865-867 from:

term :=

  simpleTerm ( operL3 simpleTerm )*
  ;
to:

concatOp := '&' ;

Changed lines 868-870 from:

#50.1 Level-3 Operator   syntax diagram
to:

#51 Term   syntax diagram
Changed lines 872-873 from:

operL3 :=

  '*' | '/' | DIV | MOD | AND | setDiffOp
to:

term :=

  simpleTerm ( operL3 simpleTerm )*
Changed lines 877-879 from:

#50.2 Set Difference Operator   syntax diagram
to:

#51.1 Level-3 Operator   syntax diagram
Changed lines 881-883 from:

setDiffOp := '\' ;

to:

operL3 :=

  '*' | '/' | DIV | MOD | AND | setDiffOp
  ;
Changed lines 886-888 from:

#51 Simple Term   syntax diagram
to:

#51.2 Set Difference Operator   syntax diagram
Changed lines 890-892 from:

simpleTerm :=

  NOT? factorOrTypeConv
  ;
to:

setDiffOp := '\' ;

Changed lines 893-895 from:

#52 Factor   syntax diagram
to:

#52 Simple Term   syntax diagram
Changed lines 897-898 from:

factor :=

  simpleFactor ( typeConvOp typeIdent )?
to:

simpleTerm :=

  NOT? factorOrTypeConv
Changed lines 902-904 from:

#52.1 Type Conversion Operator   syntax diagram
to:

#53 Factor   syntax diagram
Changed lines 906-908 from:

typeConvOp := '::' ;

to:

factor :=

  simpleFactor ( typeConvOp typeIdent )?
  ;
Changed lines 911-913 from:

#53 Simple Factor   syntax diagram
to:

#53.1 Type Conversion Operator   syntax diagram
Changed lines 915-917 from:

simpleFactor :=

  Number Literal? | String Literal? | structuredValue | functionCall | '(' expression ')'
  ;
to:

typeConvOp := '::' ;

Changed lines 918-920 from:

#53.1 Function Call   syntax diagram
to:

#54 Simple Factor   syntax diagram
Changed lines 922-923 from:

functionCall :=

  designator '(' expressionList? ')'
to:

simpleFactor :=

  Number Literal? | String Literal? | structuredValue | functionCall | '(' expression ')'
Changed lines 927-929 from:

#54 Structured Value   syntax diagram
to:

#54.1 Function Call   syntax diagram
Changed lines 931-932 from:

structuredValue :=

  '{' valueComponent ( ',' valueComponent )* '}'
to:

functionCall :=

  designator '(' expressionList? ')'
Changed lines 936-938 from:

#54.1 Value Component   syntax diagram
to:

#54.2 Structured Value   syntax diagram
Changed lines 940-941 from:

valueComponent :=

  constExpression (( BY | '..' )? constExpression )? | runtimeExpression
to:

structuredValue :=

  '{' valueComponent ( ',' valueComponent )* '}'
Changed lines 945-947 from:

#54.2 Runtime Expression   syntax diagram
to:

#54.3 Value Component   syntax diagram
valueComponent :=
  constExpression (( BY | '..' )? constExpression )? | runtimeExpression
  ;

#54.4 Runtime Expression \
2015-09-27 09:10 by trijezdci -
Changed line 320 from:
  restrictedExport? variableDeclaration
to:
  restrictedExport? variableDeclaration ( '=' constExpression )?
2015-09-24 14:40 by trijezdci -
Changed lines 1309-1310 from:
  '+' | '-' | '*' | '/' | '\' | '=' | '<' | '>' | '::' | IN | DIV | MOD | unaryMinus
to:
  '+' | '-' | '*' | '/' | '\' | '=' | '<' | '>' | '::' |
  IN | DIV | MOD | unaryMinus
2015-09-24 14:39 by trijezdci -
Changed line 1300 from:
  '|' (  |  )
to:
  ':' (  |  )
Changed lines 1309-1310 from:
  '+' | '-' | '*' | '/' | '\' | '=' | '<' | '>' | '*.' | '::'
  IN | DIV | MOD | unaryMinus
to:
  '+' | '-' | '*' | '/' | '\' | '=' | '<' | '>' | '::' | IN | DIV | MOD | unaryMinus
Changed line 1344 from:
  '|' '#'
to:
  ':' '#'
Changed line 1362 from:
  '|' ( ',' | '#' | '*' )
to:
  ':' ( ',' | '#' | '*' )
Changed line 1380 from:
  '|' ( ',' | '*' )
to:
  ':' ( ',' | '*' )
2015-09-24 14:36 by trijezdci -
Changed line 899 from:
  simpleFactor ( '::' typeIdent )?
to:
  simpleFactor ( typeConvOp typeIdent )?
Added lines 901-907:

@]

#52.1 Type Conversion Operator   syntax diagram

[@ typeConvOp := '::' ;

2015-09-24 14:33 by trijezdci -
Changed line 895 from:
#52 \
to:
#52 Factor \
2015-09-24 14:30 by trijezdci -
Changed line 601 from:
#36 Statement \
to:
#37 Statement \
Changed line 612 from:
#37 Memory Management Operation \
to:
#38 Memory Management Operation \
Changed line 623 from:
#37.1 Initialisation Size, Initialisation Value \
to:
#38.1 Initialisation Size, Initialisation Value \
Changed line 632 from:
#38 Update Or Procedure Call \
to:
#39 Update Or Procedure Call \
Changed line 642 from:
#38.1 Increment Or Decrement Suffix \
to:
#39.1 Increment Or Decrement Suffix \
Changed line 651 from:
#39 IF Statement \
to:
#40 IF Statement \
Changed line 663 from:
#39.1 Boolean Expression \
to:
#40.1 Boolean Expression \
Changed line 670 from:
#40 CASE Statement \
to:
#41 CASE Statement \
Changed line 679 from:
#40.1 Case \
to:
#41.1 Case \
Changed line 688 from:
#40.2 Case Labels \
to:
#41.2 Case Labels \
Changed line 697 from:
#41 LOOP Statement \
to:
#42 LOOP Statement \
Changed line 706 from:
#42 WHILE Statement \
to:
#43 WHILE Statement \
Changed line 715 from:
#43 REPEAT Statement \
to:
#44 REPEAT Statement \
Changed line 724 from:
#44 FOR Statement \
to:
#45 FOR Statement \
Changed line 733 from:
#44.1 FOR Loop Variants \
to:
#45.1 FOR Loop Variants \
Changed line 743 from:
#44.2 Accessor, Value \
to:
#45.2 Accessor, Value \
Changed line 752 from:
#44.3 Iterable Entity \
to:
#45.3 Iterable Entity \
Changed line 761 from:
#44.4 Ascender Or Descender \
to:
#45.4 Ascender Or Descender \
Changed line 768 from:
#44.5 Ordinal Type \
to:
#45.5 Ordinal Type \
Changed line 775 from:
#45 Designator \
to:
#46 Designator \
Changed line 784 from:
#45.1 Designator Tail \
to:
#46.1 Designator Tail \
Changed line 793 from:
#45.2 Expression List Or Slice \
to:
#46.2 Expression List Or Slice \
Changed lines 801-803 from:

#46 Expression   syntax diagram
to:

#47 Expression List   syntax diagram
Changed lines 805-806 from:

expression :=

  simpleExpression ( operL1 simpleExpression )?
to:

expressionList :=

  expression ( ',' expression )*
Changed lines 810-812 from:

#46.1 Level-1 Operator   syntax diagram
to:

#48 Expression   syntax diagram
Changed lines 814-815 from:

operL1 :=

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

expression :=

  simpleExpression ( operL1 simpleExpression )?
Changed lines 819-821 from:

#46.2 Identity Operator   syntax diagram
to:

#48.1 Level-1 Operator   syntax diagram
Changed lines 823-825 from:

identityOp := '==' ;

to:

operL1 :=

  '=' | '#' | '<' | '<=' | '>' | '>=' | IN | identityOp
  ;
Changed lines 828-830 from:

#47 Simple Expression   syntax diagram
to:

#48.2 Identity Operator   syntax diagram
Changed lines 832-834 from:

simpleExpression :=

  ( '+' | '-' )? term ( operL2 term )*
  ;
to:

identityOp := '==' ;

Changed lines 835-837 from:

#47.1 Level-2 Operator   syntax diagram
to:

#49 Simple Expression   syntax diagram
Changed lines 839-840 from:

operL2 :=

  '+' | '-' | OR | concatOp
to:

simpleExpression :=

  ( '+' | '-' )? term ( operL2 term )*
Changed lines 844-846 from:

#47.2 Concatenation Operator   syntax diagram
to:

#49.1 Level-2 Operator   syntax diagram
Changed lines 848-850 from:

concatOp := '&' ;

to:

operL2 :=

  '+' | '-' | OR | concatOp
  ;
Changed lines 853-855 from:

#48 Term   syntax diagram
to:

#49.2 Concatenation Operator   syntax diagram
Changed lines 857-859 from:

term :=

  simpleTerm ( operL3 simpleTerm )*
  ;
to:

concatOp := '&' ;

Changed lines 860-862 from:

#48.1 Level-3 Operator   syntax diagram
to:

#50 Term   syntax diagram
Changed lines 864-865 from:

operL3 :=

  '*' | '/' | DIV | MOD | AND | setDiffOp
to:

term :=

  simpleTerm ( operL3 simpleTerm )*
Changed lines 869-871 from:

#48.2 Set Difference Operator   syntax diagram
to:

#50.1 Level-3 Operator   syntax diagram
Changed lines 873-875 from:

setDiffOp := '\' ;

to:

operL3 :=

  '*' | '/' | DIV | MOD | AND | setDiffOp
  ;
Changed lines 878-880 from:

#49 Simple Term   syntax diagram
to:

#50.2 Set Difference Operator   syntax diagram
Changed lines 882-884 from:

simpleTerm :=

  NOT? factorOrTypeConv
  ;
to:

setDiffOp := '\' ;

Changed lines 885-887 from:

#50 Factor Or Type Conversion   syntax diagram
to:

#51 Simple Term   syntax diagram
Changed lines 889-890 from:

factorOrTypeConv :=

  factor ( '::' typeIdent )?
to:

simpleTerm :=

  NOT? factorOrTypeConv
Changed line 895 from:
#51 Factor \
to:
#52 \
Changed lines 899-900 from:
  Number Literal? | String Literal? | structuredValue |
  '(' expression ')' | designator actualParameters?
to:
  simpleFactor ( '::' typeIdent )?
Changed lines 903-905 from:

#52 Actual Parameters   syntax diagram
to:

#53 Simple Factor   syntax diagram
Changed lines 907-908 from:

actualParameters :=

  '(' expressionList ')'
to:

simpleFactor :=

  Number Literal? | String Literal? | structuredValue | functionCall | '(' expression ')'
Changed lines 912-914 from:

#53 Expression List   syntax diagram
to:

#53.1 Function Call   syntax diagram
Changed lines 916-917 from:

expressionList :=

  expression ( ',' expression )*
to:

functionCall :=

  designator '(' expressionList? ')'
2015-09-24 14:22 by trijezdci -
Changed line 551 from:
  TYPE ( Ident '=' typeDeclTail ';' )+ |
to:
  TYPE ( typeDeclaration ';' )+ |
Changed lines 557-559 from:

#34.1 Type Declaration Tail   syntax diagram
to:

#35 Type Declaration   syntax diagram
Changed lines 561-562 from:

typeDeclTail :=

  type | indeterminateRecType
to:

typeDeclaration :=

  Ident '=' ( type | indeterminateRecType )
Changed line 567 from:
#35 Indeterminate Record Type \
to:
#35.1 Indeterminate Record Type \
Changed line 576 from:
#35.1 Indeterminate Field \
to:
#35.2 Indeterminate Field \
Changed line 585 from:
#35.2 Discriminant Field Identifier \
to:
#35.3 Discriminant Field Identifier \
Changed line 636 from:
  designator ( ':=' expression | incOrDecSuffix | actualParameters )? |
to:
  designator ( incOrDecSuffix | ':=' expression | '(' expressionList ')' )? |
2015-09-24 10:39 by trijezdci -
Changed line 580 from:
  ~ Ident ':' ARRAY ~ discriminantFieldIdent OF typeIdent END
to:
  ' Ident ':' ARRAY ' discriminantFieldIdent OF typeIdent END
2015-09-24 10:38 by trijezdci -
Changed line 571 from:
  '~' RECORD variableDeclaration ( ';" variableDeclaration )* indeterminateField END
to:
  '~' RECORD ( variableDeclaration ';' )+ indeterminateField END
Changed line 580 from:
  Ident ':' ARRAY discriminantFieldIdent OF typeIdent END
to:
  ~ Ident ':' ARRAY ~ discriminantFieldIdent OF typeIdent END
2015-09-24 10:10 by trijezdci -
Changed lines 311-313 from:
  RECORD
    ( fieldList ( ';' fieldList )* indeterminateField? |
      '(' recTypeToExtend ')' fieldList ( ';' fieldList )* )
to:
  RECORD ( '(' recTypeToExtend ')' )? fieldList ( ';' fieldList )* )
2015-09-24 10:08 by trijezdci -
Changed lines 333-335 from:

#17.3 Indeterminate Field   syntax diagram
to:

#18 Pointer Type   syntax diagram
Changed lines 337-338 from:

indeterminateField :=

  '~' Ident ':' ARRAY discriminantFieldIdent OF typeIdent
to:

pointerType :=

  POINTER TO CONST? typeIdent
Changed lines 342-344 from:

#17.4 Discriminant Field Ident   syntax diagram
to:

#19 Coroutine Type   syntax diagram
Changed lines 346-348 from:

discriminantFieldIdent := Ident ;

to:

coroutineType :=

  COROUTINE '(' assocProcType ')'
  ;
Changed lines 351-353 from:

#18 Pointer Type   syntax diagram
to:

#19.1 Associated Procedure Type   syntax diagram
Changed lines 355-357 from:

pointerType :=

  POINTER TO CONST? typeIdent
  ;
to:

assocProcType : typeIdent ;

Changed lines 358-360 from:

#19 Coroutine Type   syntax diagram
to:

#20 Procedure Type   syntax diagram
Changed lines 362-363 from:

coroutineType :=

  COROUTINE '(' assocProcType ')'
to:

procedureType :=

  PROCEDURE ( formalType ( ',' formalType )* )? ( ':' returnedType )?
Changed lines 367-369 from:

#19.1 Associated Procedure Type   syntax diagram
to:

#20.1 Formal Type   syntax diagram
Changed lines 371-373 from:

assocProcType : typeIdent ;

to:

formalType :=

  simpleFormalType | attributedFormalType | variadicFormalType
  ;
Changed lines 376-378 from:

#20 Procedure Type   syntax diagram
to:

#21 Simple Formal Type   syntax diagram
Changed lines 380-381 from:

procedureType :=

  PROCEDURE ( formalType ( ',' formalType )* )? ( ':' returnedType )?
to:

simpleFormalType :=

  ( ARRAY OF )? typeIdent | castingFormalType
Changed lines 385-387 from:

#20.1 Formal Type   syntax diagram
to:

#21.1 Casting Formal Type   syntax diagram
Changed lines 389-390 from:

formalType :=

  simpleFormalType | attributedFormalType | variadicFormalType
to:

castingFormalType :=

  CAST ( ARRAY OF OCTET | addressTypeIdent )
Changed lines 394-396 from:

#21 Simple Formal Type   syntax diagram
to:

#21.2 Address Type Identifier   syntax diagram
Changed lines 398-399 from:

simpleFormalType :=

  ( ARRAY OF )? typeIdent | castingFormalType
to:

addressTypeIdent :=

  ( UNSAFE '.' )? ADDRESS
Changed lines 403-405 from:

#21.1 Casting Formal Type   syntax diagram
to:

#22 Attributed Formal Type   syntax diagram
Changed lines 407-408 from:

castingFormalType :=

  CAST ( ARRAY OF OCTET | addressTypeIdent )
to:

attributedFormalType :=

  ( CONST | NEW | VAR ) ( simpleFormalType | simpleVariadicFormalType )
Changed lines 412-414 from:

#21.2 Address Type Identifier   syntax diagram
to:

#23 Simple Variadic Formal Type   syntax diagram
Changed lines 416-417 from:

addressTypeIdent :=

  ( UNSAFE '.' )? ADDRESS
to:

simpleVariadicFormalType :=

  ARGLIST reqNumOfArgs? OF simpleFormalType terminator?
Changed lines 421-423 from:

#22 Attributed Formal Type   syntax diagram
to:

#23.1 Required Number Of Arguments   syntax diagram
Changed lines 425-426 from:

attributedFormalType :=

  ( CONST | NEW | VAR ) ( simpleFormalType | simpleVariadicFormalType )
to:

reqNumOfArgs :=

  greaterThan? constExpression
Changed lines 430-432 from:

#23 Simple Variadic Formal Type   syntax diagram
to:

#23.2 Argument List Terminator   syntax diagram
Changed lines 434-435 from:

simpleVariadicFormalType :=

  ARGLIST reqNumOfArgs? OF simpleFormalType terminator?
to:

terminator :=

  '|' constQualident
Changed lines 439-441 from:

#23.1 Required Number Of Arguments   syntax diagram
to:

#23.3 Constant Qualified Identifier   syntax diagram
Changed lines 443-445 from:

reqNumOfArgs :=

  greaterThan? constExpression
  ;
to:

constQualident := qualident ;

Changed lines 446-448 from:

#23.2 Argument List Terminator   syntax diagram
to:

#24 Variadic Formal Type   syntax diagram
Changed lines 450-451 from:

terminator :=

  '|' constQualident
to:

variadicFormalType :=

  ARGLIST reqNumOfArgs? OF
    ( '{' nonVariadicFormalType ( ';' nonVariadicFormalType )* '}' |
      simpleFormalType ) terminator?
Changed lines 457-459 from:

#23.3 Constant Qualified Identifier   syntax diagram
to:

#25 Non-Variadic Formal Type   syntax diagram
Changed lines 461-463 from:

constQualident := qualident ;

to:

nonVariadicFormalType :=

  ( CONST | NEW | VAR )? simpleFormalType
  ;
Changed lines 466-468 from:

#24 Variadic Formal Type   syntax diagram
to:

#26 Procedure Header   syntax diagram
Changed lines 470-473 from:

variadicFormalType :=

  ARGLIST reqNumOfArgs? OF
    ( '{' nonVariadicFormalType ( ';' nonVariadicFormalType )* '}' |
      simpleFormalType ) terminator?
to:

procedureHeader :=

  PROCEDURE ( '[' ( entityToBindTo | COROUTINE ) ']' | restrictedExport )?
  procedureSignature
Changed lines 476-478 from:

#25 Non-Variadic Formal Type   syntax diagram
to:

#27 Procedure Signature   syntax diagram
Changed lines 480-481 from:

nonVariadicFormalType :=

  ( CONST | NEW | VAR )? simpleFormalType
to:

procedureSignature :=

  Ident ( '(' formalParams ( ';' formalParams )* ')' )? ( ':' returnedType )?
Changed lines 485-487 from:

#26 Procedure Header   syntax diagram
to:

#28 Formal Parameters   syntax diagram
Changed lines 489-491 from:

procedureHeader :=

  PROCEDURE ( '[' ( entityToBindTo | COROUTINE ) ']' | restrictedExport )?
  procedureSignature
to:

formalParams :=

  identList ':' ( simpleFormalType | variadicFormalParams ) |
  attributedFormalParams
Changed lines 495-497 from:

#27 Procedure Signature   syntax diagram
to:

#29 Attributed Formal Parameters   syntax diagram
Changed lines 499-500 from:

procedureSignature :=

  Ident ( '(' formalParams ( ';' formalParams )* ')' )? ( ':' returnedType )?
to:

attributedFormalParams :=

  ( CONST | NEW | VAR ) identList ':'
  ( simpleFormalType | simpleVariadicFormalType )
Changed lines 505-507 from:

#28 Formal Parameters   syntax diagram
to:

#30 Variadic Formal Parameters   syntax diagram
Changed lines 509-511 from:

formalParams :=

  identList ':' ( simpleFormalType | variadicFormalParams ) |
  attributedFormalParams
to:

variadicFormalParams :=

  ARGLIST reqNumOfArgs? OF
    ( ( '{' nonVariadicFormalParams ( ';' nonVariadicFormalParams )* '}') |
      simpleFormalType ) terminator?
Changed lines 516-518 from:

#29 Attributed Formal Parameters   syntax diagram
to:

#31 Non-Variadic Formal Parameters   syntax diagram
Changed lines 520-522 from:

attributedFormalParams :=

  ( CONST | NEW | VAR ) identList ':'
  ( simpleFormalType | simpleVariadicFormalType )
to:

nonVariadicFormalParams :=

  ( CONST | NEW | VAR )? identList ':' simpleFormalType
Changed lines 525-527 from:

#30 Variadic Formal Parameters   syntax diagram
to:

Implementation And Program Module Syntax

#32 Implementation Or Program Module   syntax diagram
Changed lines 532-535 from:

variadicFormalParams :=

  ARGLIST reqNumOfArgs? OF
    ( ( '{' nonVariadicFormalParams ( ';' nonVariadicFormalParams )* '}') |
      simpleFormalType ) terminator?
to:

implOrPrgmModule :=

  IMPLEMENTATION? MODULE moduleIdent ';'
  ( importList ';' )* block moduleIdent '.'
Changed lines 538-540 from:

#31 Non-Variadic Formal Parameters   syntax diagram
to:

#33 Block   syntax diagram
Changed lines 542-543 from:

nonVariadicFormalParams :=

  ( CONST | NEW | VAR )? identList ':' simpleFormalType
to:

block :=

  declaration* ( BEGIN statementSequence )? END
Changed lines 547-552 from:

Implementation And Program Module Syntax

#32 Implementation Or Program Module   syntax diagram
to:

#34 Declaration   syntax diagram
Changed lines 551-553 from:

implOrPrgmModule :=

  IMPLEMENTATION? MODULE moduleIdent ';'
  ( importList ';' )* block moduleIdent '.'
to:

declaration :=

  CONST ( Ident '=' constExpression ';' )+ |
  TYPE ( Ident '=' typeDeclTail ';' )+ |
  VAR ( variableDeclaration ';' )+ |
  procedureHeader ';' block Ident ';'
Changed lines 559-561 from:

#33 Block   syntax diagram
to:

#34.1 Type Declaration Tail   syntax diagram
Changed lines 563-564 from:

block :=

  declaration* ( BEGIN statementSequence )? END
to:

typeDeclTail :=

  type | indeterminateRecType
Changed lines 568-570 from:

#34 Declaration   syntax diagram
to:

#35 Indeterminate Record Type   syntax diagram
Changed lines 572-576 from:

declaration :=

  CONST ( Ident '=' constExpression ';' )+ |
  TYPE ( Ident '=' typeDeclTail ';' )+ |
  VAR ( variableDeclaration ';' )+ |
  procedureHeader ';' block Ident ';'
to:

indeterminateRecType :=

  '~' RECORD variableDeclaration ( ';" variableDeclaration )* indeterminateField END
Changed lines 577-579 from:

#34.1 Type Declaration Tail   syntax diagram
to:

#35.1 Indeterminate Field   syntax diagram
Changed lines 581-582 from:

typeDeclTail :=

  type | indeterminateRecType
to:

indeterminateRecType :=

  Ident ':' ARRAY discriminantFieldIdent OF typeIdent END
Changed lines 586-588 from:

#35 Indeterminate Record Type   syntax diagram
to:

#35.2 Discriminant Field Identifier   syntax diagram
Changed lines 590-592 from:

indeterminateRecType :=

  '~' RECORD variableDeclaration ( ';" variableDeclaration )* indeterminateField END
  ;
to:

discriminantFieldIdent := Ident ;

Changed lines 593-595 from:

#35.1 Indeterminate Field   syntax diagram
to:

#36 Statement Sequence   syntax diagram
Changed lines 597-598 from:

indeterminateRecType :=

  Ident ':' ARRAY discriminantFieldIdent OF typeIdent END
to:

statementSequence :=

  statement ( ';' statement )*
Deleted lines 599-605:

@]

#35.2 Discriminant Field Identifier   syntax diagram

[@ discriminantFieldIdent := Ident ;

2015-09-24 10:06 by trijezdci -
Changed lines 575-577 from:

#35 Statement Sequence   syntax diagram
to:

#34.1 Type Declaration Tail   syntax diagram
Changed lines 579-580 from:

statementSequence :=

  statement ( ';' statement )*
to:

typeDeclTail :=

  type | indeterminateRecType
Changed lines 584-586 from:

#36 Statement   syntax diagram
to:

#35 Indeterminate Record Type   syntax diagram
Changed lines 588-591 from:

statement :=

  memMgtOperation | updateOrProcCall | ifStatement | caseStatement |
  loopStatement | whileStatement | repeatStatement | forStatement |
  ( RETURN | YIELD ) expression? | EXIT
to:

indeterminateRecType :=

  '~' RECORD variableDeclaration ( ';" variableDeclaration )* indeterminateField END
Changed lines 593-595 from:

#37 Memory Management Operation   syntax diagram
to:

#35.1 Indeterminate Field   syntax diagram
Changed lines 597-600 from:

memMgtOperation :=

  NEW designator ( OF initSize | := initValue )? |
  RETAIN designator |
  RELEASE designator
to:

indeterminateRecType :=

  Ident ':' ARRAY discriminantFieldIdent OF typeIdent END
Changed lines 602-604 from:

#37.1 Initialisation Size, Initialisation Value   syntax diagram
to:

#35.2 Discriminant Field Identifier   syntax diagram
Changed lines 606-608 from:

initSize := expression ;

initValue := expression ;

to:

discriminantFieldIdent := Ident ;

Changed lines 609-611 from:

#38 Update Or Procedure Call   syntax diagram
to:

#36 Statement   syntax diagram
Changed lines 613-615 from:

updateOrProcCall :=

  designator ( ':=' expression | incOrDecSuffix | actualParameters )? |
  COPY designator ':=' expression
to:

statement :=

  memMgtOperation | updateOrProcCall | ifStatement | caseStatement |
  loopStatement | whileStatement | repeatStatement | forStatement |
  ( RETURN | YIELD ) expression? | EXIT
Changed lines 620-622 from:

#38.1 Increment Or Decrement Suffix   syntax diagram
to:

#37 Memory Management Operation   syntax diagram
Changed lines 624-625 from:

incOrDecSuffix :=

   | 
to:

memMgtOperation :=

  NEW designator ( OF initSize | := initValue )? |
  RETAIN designator |
  RELEASE designator
Changed lines 631-633 from:

#39 IF Statement   syntax diagram
to:

#37.1 Initialisation Size, Initialisation Value   syntax diagram
Changed lines 635-640 from:

ifStatement :=

  IF boolExpression THEN statementSequence
  ( ELSIF boolExpression THEN statementSequence )?
  ( ELSE statementSequence )?
  END
  ;
to:

initSize := expression ;

initValue := expression ;

Changed lines 640-642 from:

#39.1 Boolean Expression   syntax diagram
to:

#38 Update Or Procedure Call   syntax diagram
Changed lines 644-647 from:

boolExpression := expression ;

to:

updateOrProcCall :=

  designator ( ':=' expression | incOrDecSuffix | actualParameters )? |
  COPY designator ':=' expression
  ;
Changed lines 650-652 from:

#40 CASE Statement   syntax diagram
to:

#38.1 Increment Or Decrement Suffix   syntax diagram
Changed lines 654-655 from:

caseStatement :=

  CASE expression OF ( '|' case  )+ ( ELSE statementSequence )? END
to:

incOrDecSuffix :=

   | 
Changed lines 659-661 from:

#40.1 Case   syntax diagram
to:

#39 IF Statement   syntax diagram
Changed lines 663-664 from:

case :=

  caseLabels ( ',' caseLabels )* ':' statementSequence
to:

ifStatement :=

  IF boolExpression THEN statementSequence
  ( ELSIF boolExpression THEN statementSequence )?
  ( ELSE statementSequence )?
  END
Changed lines 671-673 from:

#40.2 Case Labels   syntax diagram
to:

#39.1 Boolean Expression   syntax diagram
Changed lines 675-677 from:

caseLabels :=

  constExpression ( '..' constExpression )?
  ;
to:

boolExpression := expression ;

Changed lines 678-680 from:

#41 LOOP Statement   syntax diagram
to:

#40 CASE Statement   syntax diagram
Changed lines 682-683 from:

loopStatement :=

  LOOP statementSequence END
to:

caseStatement :=

  CASE expression OF ( '|' case  )+ ( ELSE statementSequence )? END
Changed lines 687-689 from:

#42 WHILE Statement   syntax diagram
to:

#40.1 Case   syntax diagram
Changed lines 691-692 from:

whileStatement :=

  WHILE boolExpression DO statementSequence END
to:

case :=

  caseLabels ( ',' caseLabels )* ':' statementSequence
Changed lines 696-698 from:

#43 REPEAT Statement   syntax diagram
to:

#40.2 Case Labels   syntax diagram
Changed lines 700-701 from:

repeatStatement :=

  REPEAT statementSequence UNTIL boolExpression
to:

caseLabels :=

  constExpression ( '..' constExpression )?
Changed lines 705-707 from:

#44 FOR Statement   syntax diagram
to:

#41 LOOP Statement   syntax diagram
Changed lines 709-710 from:

forStatement :=

  FOR forLoopVariants IN iterableEntity DO statementSequence END
to:

loopStatement :=

  LOOP statementSequence END
Changed lines 714-716 from:

#44.1 FOR Loop Variants   syntax diagram
to:

#42 WHILE Statement   syntax diagram
Changed lines 718-720 from:

forLoopVariants :=

  accessor ascOrDesc? ( ',' value )? |
  VALUE value ascOrDesc?
to:

whileStatement :=

  WHILE boolExpression DO statementSequence END
Changed lines 723-725 from:

#44.2 Accessor, Value   syntax diagram
to:

#43 REPEAT Statement   syntax diagram
Changed lines 727-729 from:

accessor := Ident ;

value := Ident ;

to:

repeatStatement :=

  REPEAT statementSequence UNTIL boolExpression
  ;
Changed lines 732-734 from:

#44.3 Iterable Entity   syntax diagram
to:

#44 FOR Statement   syntax diagram
Changed lines 736-737 from:

iterableEntity :=

  designator | range OF ordinalType
to:

forStatement :=

  FOR forLoopVariants IN iterableEntity DO statementSequence END
Changed lines 741-743 from:

#44.4 Ascender Or Descender   syntax diagram
to:

#44.1 FOR Loop Variants   syntax diagram
Changed lines 745-748 from:

ascOrDesc := incOrDecSuffix ;

to:

forLoopVariants :=

  accessor ascOrDesc? ( ',' value )? |
  VALUE value ascOrDesc?
  ;
Changed lines 751-753 from:

#44.5 Ordinal Type   syntax diagram
to:

#44.2 Accessor, Value   syntax diagram
Changed lines 755-757 from:

ordinalType := typeIdent ;

to:

accessor := Ident ;

value := Ident ;

Changed lines 760-762 from:

#45 Designator   syntax diagram
to:

#44.3 Iterable Entity   syntax diagram
Changed lines 764-765 from:

designator :=

  qualident designatorTail?
to:

iterableEntity :=

  designator | range OF ordinalType
Changed lines 769-771 from:

#45.1 Designator Tail   syntax diagram
to:

#44.4 Ascender Or Descender   syntax diagram
Changed lines 773-775 from:

designatorTail :=

  ( ( '[' exprListOrSlice ']' | '^' ) ( '.' Ident )* )+
  ;
to:

ascOrDesc := incOrDecSuffix ;

Changed lines 776-778 from:

#45.2 Expression List Or Slice   syntax diagram
to:

#44.5 Ordinal Type   syntax diagram
Changed lines 780-782 from:

exprListOrSlice :=

  expression ( ( ',' expression )* | '..' expression? )
  ;
to:

ordinalType := typeIdent ;

Changed lines 783-785 from:

#46 Expression   syntax diagram
to:

#45 Designator   syntax diagram
Changed lines 787-788 from:

expression :=

  simpleExpression ( operL1 simpleExpression )?
to:

designator :=

  qualident designatorTail?
Changed lines 792-794 from:

#46.1 Level-1 Operator   syntax diagram
to:

#45.1 Designator Tail   syntax diagram
Changed lines 796-797 from:

operL1 :=

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

designatorTail :=

  ( ( '[' exprListOrSlice ']' | '^' ) ( '.' Ident )* )+
Changed lines 801-803 from:

#46.2 Identity Operator   syntax diagram
to:

#45.2 Expression List Or Slice   syntax diagram
Changed lines 805-807 from:

identityOp := '==' ;

to:

exprListOrSlice :=

  expression ( ( ',' expression )* | '..' expression? )
  ;
Changed lines 810-812 from:

#47 Simple Expression   syntax diagram
to:

#46 Expression   syntax diagram
Changed lines 814-815 from:

simpleExpression :=

  ( '+' | '-' )? term ( operL2 term )*
to:

expression :=

  simpleExpression ( operL1 simpleExpression )?
Changed lines 819-821 from:

#47.1 Level-2 Operator   syntax diagram
to:

#46.1 Level-1 Operator   syntax diagram
Changed lines 823-824 from:

operL2 :=

  '+' | '-' | OR | concatOp
to:

operL1 :=

  '=' | '#' | '<' | '<=' | '>' | '>=' | IN | identityOp
Changed lines 828-830 from:

#47.2 Concatenation Operator   syntax diagram
to:

#46.2 Identity Operator   syntax diagram
Changed line 832 from:

concatOp := '&' ;

to:

identityOp := '==' ;

Changed lines 835-837 from:

#48 Term   syntax diagram
to:

#47 Simple Expression   syntax diagram
Changed lines 839-840 from:

term :=

  simpleTerm ( operL3 simpleTerm )*
to:

simpleExpression :=

  ( '+' | '-' )? term ( operL2 term )*
Changed lines 844-846 from:

#48.1 Level-3 Operator   syntax diagram
to:

#47.1 Level-2 Operator   syntax diagram
Changed lines 848-849 from:

operL3 :=

  '*' | '/' | DIV | MOD | AND | setDiffOp
to:

operL2 :=

  '+' | '-' | OR | concatOp
Changed lines 853-855 from:

#48.2 Set Difference Operator   syntax diagram
to:

#47.2 Concatenation Operator   syntax diagram
Changed line 857 from:

setDiffOp := '\' ;

to:

concatOp := '&' ;

Changed lines 860-862 from:

#49 Simple Term   syntax diagram
to:

#48 Term   syntax diagram
Changed lines 864-865 from:

simpleTerm :=

  NOT? factorOrTypeConv
to:

term :=

  simpleTerm ( operL3 simpleTerm )*
Changed lines 869-871 from:

#50 Factor Or Type Conversion   syntax diagram
to:

#48.1 Level-3 Operator   syntax diagram
Changed lines 873-874 from:

factorOrTypeConv :=

  factor ( '::' typeIdent )?
to:

operL3 :=

  '*' | '/' | DIV | MOD | AND | setDiffOp
Changed lines 878-880 from:

#51 Factor   syntax diagram
to:

#48.2 Set Difference Operator   syntax diagram
Changed lines 882-885 from:

factor :=

  Number Literal? | String Literal? | structuredValue |
  '(' expression ')' | designator actualParameters?
  ;
to:

setDiffOp := '\' ;

Changed lines 885-887 from:

#52 Actual Parameters   syntax diagram
to:

#49 Simple Term   syntax diagram
Changed lines 889-890 from:

actualParameters :=

  '(' expressionList ')'
to:

simpleTerm :=

  NOT? factorOrTypeConv
Changed lines 894-896 from:

#53 Expression List   syntax diagram
to:

#50 Factor Or Type Conversion   syntax diagram
Changed lines 898-899 from:

expressionList :=

  expression ( ',' expression )*
to:

factorOrTypeConv :=

  factor ( '::' typeIdent )?
Changed lines 903-905 from:

#54 Structured Value   syntax diagram
to:

#51 Factor   syntax diagram
Changed lines 907-908 from:

structuredValue :=

  '{' valueComponent ( ',' valueComponent )* '}'
to:

factor :=

  Number Literal? | String Literal? | structuredValue |
  '(' expression ')' | designator actualParameters?
Changed lines 913-915 from:

#54.1 Value Component   syntax diagram
to:

#52 Actual Parameters   syntax diagram
Changed lines 917-918 from:

valueComponent :=

  constExpression (( BY | '..' )? constExpression )? | runtimeExpression
to:

actualParameters :=

  '(' expressionList ')'
Changed lines 922-924 from:

#54.2 Runtime Expression   syntax diagram
to:

#53 Expression List   syntax diagram
Changed lines 926-928 from:

runtimeExpression := expression ;

to:

expressionList :=

  expression ( ',' expression )*
  ;
Changed lines 931-936 from:

Blueprint Syntax

#55 Blueprint   syntax diagram
to:

#54 Structured Value   syntax diagram
Changed lines 935-939 from:

blueprint :=

  BLUEPRINT blueprintIdent ( '[' blueprintToRefine ']' )?
  ( FOR blueprintForTypeToExtend )? ';' ( REFERENTIAL identList ';' )?
  MODULE TYPE '=' ( typeClassification ( ';' literalCompatibility)? | NONE ) ';'
  ( constraint ';' )* ( requirement ';' )* END blueprintIdent '.'
to:

structuredValue :=

  '{' valueComponent ( ',' valueComponent )* '}'
Changed lines 940-942 from:

#55.1 Blueprint Identifier   syntax diagram
to:

#54.1 Value Component   syntax diagram
Changed lines 944-946 from:

blueprintIdent := Ident ;

to:

valueComponent :=

  constExpression (( BY | '..' )? constExpression )? | runtimeExpression
  ;
Changed lines 949-951 from:

#55.2 Blueprint To Refine, Blueprint For Type To Extend   syntax diagram
to:

#54.2 Runtime Expression   syntax diagram
Changed lines 953-955 from:

blueprintToRefine := blueprintIdent ;

blueprintForTypeToExtend := blueprintIdent ;

to:

runtimeExpression := expression ;

Changed lines 956-958 from:

#56 Type Classification   syntax diagram
to:

Blueprint Syntax

#55 Blueprint   syntax diagram
Changed lines 963-965 from:

typeClassification :=

  '{' determinedClassification ( ';' refinableClassification )? ( ';' '*' )? '}'
  | '*'
to:

blueprint :=

  BLUEPRINT blueprintIdent ( '[' blueprintToRefine ']' )?
  ( FOR blueprintForTypeToExtend )? ';' ( REFERENTIAL identList ';' )?
  MODULE TYPE '=' ( typeClassification ( ';' literalCompatibility)? | NONE ) ';'
  ( constraint ';' )* ( requirement ';' )* END blueprintIdent '.'
Changed lines 971-973 from:

#56.1 Determined Classification   syntax diagram
to:

#55.1 Blueprint Identifier   syntax diagram
Changed lines 975-977 from:

determinedClassification :=

  classificationIdent ( ',' classificationIdent )*
  ;
to:

blueprintIdent := Ident ;

Changed lines 978-980 from:

#56.2 Refinable Classification   syntax diagram
to:

#55.2 Blueprint To Refine, Blueprint For Type To Extend   syntax diagram
Changed lines 982-984 from:

refinableClassification :=

  ' classificationIdent ( ',' ' classificationIdent )*
  ;
to:

blueprintToRefine := blueprintIdent ;

blueprintForTypeToExtend := blueprintIdent ;

Changed lines 987-989 from:

#56.3 Classification Identifier   syntax diagram
to:

#56 Type Classification   syntax diagram
Changed lines 991-994 from:

classificationIdent := Ident ;

to:

typeClassification :=

  '{' determinedClassification ( ';' refinableClassification )? ( ';' '*' )? '}'
  | '*'
  ;
Changed lines 997-999 from:

#57 Literal Compatibility   syntax diagram
to:

#56.1 Determined Classification   syntax diagram
Changed lines 1001-1002 from:

literalCompatibility :=

  TLITERAL '=' protoLiteral ( '|' protoLiteral )*
to:

determinedClassification :=

  classificationIdent ( ',' classificationIdent )*
Changed lines 1006-1008 from:

#57.1 Proto-Literal   syntax diagram
to:

#56.2 Refinable Classification   syntax diagram
Changed lines 1010-1011 from:

protoLiteral :=

  protoLiteralIdent | structuredProtoLiteral
to:

refinableClassification :=

  ' classificationIdent ( ',' ' classificationIdent )*
Changed lines 1015-1017 from:

#57.2 Proto-Literal Identifier   syntax diagram
to:

#56.3 Classification Identifier   syntax diagram
Changed line 1019 from:

protoLiteralIdent := Ident ;

to:

classificationIdent := Ident ;

Changed lines 1022-1024 from:

#58 Structured Proto-Literal   syntax diagram
to:

#57 Literal Compatibility   syntax diagram
Changed lines 1026-1031 from:

structuredProtoLiteral :=

  '{'
    ( ARGLIST reqValueCount? OF
        ( '{' builtinOrReferential ( ',' builtinOrReferential )* '}' |
          builtinOrReferential ) ) |
    builtinOrReferential '}'
to:

literalCompatibility :=

  TLITERAL '=' protoLiteral ( '|' protoLiteral )*
Changed lines 1031-1033 from:

#58.1 Required Value Count   syntax diagram
to:

#57.1 Proto-Literal   syntax diagram
Changed lines 1035-1036 from:

reqValueCount :=

  greaterThan? wholeNumber
to:

protoLiteral :=

  protoLiteralIdent | structuredProtoLiteral
Changed lines 1040-1041 from:
#58.2 Greater Than   syntax diagram
to:

#57.2 Proto-Literal Identifier   syntax diagram
Changed line 1044 from:

greaterThan := '>' ;

to:

protoLiteralIdent := Ident ;

Changed lines 1047-1049 from:

#58.3 Whole Number   syntax diagram
to:

#58 Structured Proto-Literal   syntax diagram
Changed lines 1051-1057 from:

wholeNumber : Number Literal? ;

to:

structuredProtoLiteral :=

  '{'
    ( ARGLIST reqValueCount? OF
        ( '{' builtinOrReferential ( ',' builtinOrReferential )* '}' |
          builtinOrReferential ) ) |
    builtinOrReferential '}'
  ;
Changed lines 1060-1062 from:

#58.4 Built-in Type Or Referential Identifier   syntax diagram
to:

#58.1 Required Value Count   syntax diagram
Changed lines 1064-1066 from:

builtinOrReferential := Ident ;

to:

reqValueCount :=

  greaterThan? wholeNumber
  ;
Changed lines 1069-1071 from:

#59 Constraint   syntax diagram
to:
#58.2 Greater Than   syntax diagram
Changed lines 1072-1074 from:

constraint :=

  constraintTerm ( oneWayDependency | mutualDependencyOrExclusion )
  ;
to:

greaterThan := '>' ;

Changed lines 1075-1077 from:

#59.1 Constraint Term   syntax diagram
to:

#58.3 Whole Number   syntax diagram
Changed lines 1079-1082 from:

constraintTerm :=

  '(' classificationOrFlagIdent ')' |
  '[' bindableEntityOrProperty ']'
  ;
to:

wholeNumber : Number Literal? ;

Changed lines 1082-1084 from:

#59.2 Bindable Entity Or Property   syntax diagram
to:

#58.4 Built-in Type Or Referential Identifier   syntax diagram
Changed lines 1086-1088 from:

bindableEntityOrProperty :=

  entityToBindTo | propertyToBindTo
  ;
to:

builtinOrReferential := Ident ;

Changed lines 1089-1091 from:

#59.3 One-Way Dependency   syntax diagram
to:

#59 Constraint   syntax diagram
Changed lines 1093-1094 from:

oneWayDependency :=

  '->' termList ( '|' termList )*
to:

constraint :=

  constraintTerm ( oneWayDependency | mutualDependencyOrExclusion )
Changed lines 1098-1100 from:

#59.4 Mutual Dependency Or Exclusion   syntax diagram
to:

#59.1 Constraint Term   syntax diagram
Changed lines 1102-1103 from:

mutualDependencyOrExclusion :=

  ( '<>' | '><' ) termList
to:

constraintTerm :=

  '(' classificationOrFlagIdent ')' |
  '[' bindableEntityOrProperty ']'
Changed lines 1108-1110 from:

#59.5 Term List   syntax diagram
to:

#59.2 Bindable Entity Or Property   syntax diagram
Changed lines 1112-1113 from:

termList :=

  constraintTerm ( ',' constraintTerm )*
to:

bindableEntityOrProperty :=

  entityToBindTo | propertyToBindTo
Changed lines 1117-1119 from:

#59.6 Classification Or Flag Identifier   syntax diagram
to:

#59.3 One-Way Dependency   syntax diagram
Changed lines 1121-1123 from:

classificationOrFlagIdent := Ident ;

to:

oneWayDependency :=

  '->' termList ( '|' termList )*
  ;
Changed lines 1126-1128 from:

#60 Requirement   syntax diagram
to:

#59.4 Mutual Dependency Or Exclusion   syntax diagram
Changed lines 1130-1131 from:

requirement :=

  condition '->' ( typeRequirement | constRequirement | procRequirement )
to:

mutualDependencyOrExclusion :=

  ( '<>' | '><' ) termList
Changed lines 1135-1137 from:

#60.1 Condition   syntax diagram
to:

#59.5 Term List   syntax diagram
Changed lines 1139-1140 from:

condition :=

  NOT? boolConstIdent
to:

termList :=

  constraintTerm ( ',' constraintTerm )*
Changed lines 1144-1146 from:

#60.2 Boolean Constant Identifier   syntax diagram
to:

#59.6 Classification Or Flag Identifier   syntax diagram
Changed line 1148 from:

boolConstIdent := Ident ;

to:

classificationOrFlagIdent := Ident ;

Changed lines 1151-1153 from:

#60.3 Type Requirement   syntax diagram
to:

#60 Requirement   syntax diagram
Changed lines 1155-1156 from:

typeRequirement :=

  TYPE typeDefinition
to:

requirement :=

  condition '->' ( typeRequirement | constRequirement | procRequirement )
Changed lines 1160-1162 from:

#61 Constant Requirement   syntax diagram
to:

#60.1 Condition   syntax diagram
Changed lines 1164-1167 from:

constRequirement :=

  CONST
    ( '[' propertyToBindTo ']' ( simpleConstRequirement | '=' NONE ) |
      restrictedExport? simpleConstRequirement )
to:

condition :=

  NOT? boolConstIdent
Changed lines 1169-1171 from:

#61.1 Simple Constant Requirement   syntax diagram
to:

#60.2 Boolean Constant Identifier   syntax diagram
Changed lines 1173-1175 from:

simpleConstRequirement :=

  Ident ( '=' constExpression | ':' builtinTypeIdent )
  ;
to:

boolConstIdent := Ident ;

Changed lines 1176-1177 from:
#61.2 Constant Expression   syntax diagram
to:

#60.3 Type Requirement   syntax diagram
Changed lines 1180-1182 from:

constExpression := expression ;

to:

typeRequirement :=

  TYPE typeDefinition
  ;
Changed lines 1185-1187 from:

#61.3 Built-in Type Identifier   syntax diagram
to:

#61 Constant Requirement   syntax diagram
Changed lines 1189-1193 from:

builtinTypeIdent := Ident ;

to:

constRequirement :=

  CONST
    ( '[' propertyToBindTo ']' ( simpleConstRequirement | '=' NONE ) |
      restrictedExport? simpleConstRequirement )
  ;
Changed lines 1196-1197 from:
#61.4 Restricted Export   syntax diagram
to:

#61.1 Simple Constant Requirement   syntax diagram
Changed lines 1200-1202 from:

restrictedExport := '*' ;

to:

simpleConstRequirement :=

  Ident ( '=' constExpression | ':' builtinTypeIdent )
  ;
Changed lines 1205-1207 from:

#62 Property To Bind To   syntax diagram
to:
#61.2 Constant Expression   syntax diagram
Changed lines 1208-1210 from:

propertyToBindTo :=

  memMgtProperty | collectionProperty | scalarProperty | TFLAGS
  ;
to:

constExpression := expression ;

Changed lines 1211-1213 from:

#62.1 Memory Management Property   syntax diagram
to:

#61.3 Built-in Type Identifier   syntax diagram
Changed lines 1215-1217 from:

memMgtProperty :=

  TDYN | TREFC
  ;
to:

builtinTypeIdent := Ident ;

Changed lines 1218-1220 from:

#62.2 Collection Property   syntax diagram
to:
#61.4 Restricted Export   syntax diagram
Changed lines 1221-1223 from:

collectionProperty :=

  TORDERED | TSORTED | TLIMIT
  ;
to:

restrictedExport := '*' ;

Changed lines 1224-1226 from:

#62.3 Scalar Property   syntax diagram
to:

#62 Property To Bind To   syntax diagram
Changed lines 1228-1229 from:

scalarProperty :=

  TSCALAR | TMAX | TMIN
to:

propertyToBindTo :=

  memMgtProperty | collectionProperty | scalarProperty | TFLAGS
Changed lines 1233-1235 from:

#63 Procedure Requirement   syntax diagram
to:

#62.1 Memory Management Property   syntax diagram
Changed lines 1237-1240 from:

procRequirement :=

  PROCEDURE
    ( '[' ( entityToBindTo | COROUTINE ) ']' ( procedureSignature | '=' NONE ) |
      restrictedExport? procedureSignature )
to:

memMgtProperty :=

  TDYN | TREFC
Changed lines 1242-1244 from:

#64 Entity To Bind To   syntax diagram
to:

#62.2 Collection Property   syntax diagram
Changed lines 1246-1247 from:

entityToBindTo :=

  bindableResWord | bindableOperator | bindableMacro
to:

collectionProperty :=

  TORDERED | TSORTED | TLIMIT
Changed lines 1251-1253 from:

#64.1 Bindable Reserved Word   syntax diagram
to:

#62.3 Scalar Property   syntax diagram
Changed lines 1255-1256 from:

bindableResWord :=

  NEW | RETAIN | RELEASE | COPY | bindableFor
to:

scalarProperty :=

  TSCALAR | TMAX | TMIN
Changed lines 1260-1262 from:

#64.2 Bindable FOR   syntax diagram
to:

#63 Procedure Requirement   syntax diagram
Changed lines 1264-1265 from:

bindableFor :=

  FOR forBindingDifferentiator?
to:

procRequirement :=

  PROCEDURE
    ( '[' ( entityToBindTo | COROUTINE ) ']' ( procedureSignature | '=' NONE ) |
      restrictedExport? procedureSignature )
Changed lines 1271-1273 from:

#64.3 FOR Binding Differentiator   syntax diagram
to:

#64 Entity To Bind To   syntax diagram
Changed lines 1275-1276 from:

forBindingDifferentiator :=

  '|' (  |  )
to:

entityToBindTo :=

  bindableResWord | bindableOperator | bindableMacro
Changed lines 1280-1282 from:

#64.4 Bindable Operator   syntax diagram
to:

#64.1 Bindable Reserved Word   syntax diagram
Changed lines 1284-1286 from:

bindableOperator :=

  '+' | '-' | '*' | '/' | '\' | '=' | '<' | '>' | '*.' | '::'
  IN | DIV | MOD | unaryMinus
to:

bindableResWord :=

  NEW | RETAIN | RELEASE | COPY | bindableFor
Changed lines 1289-1291 from:

#64.5 Unary Minus   syntax diagram
to:

#64.2 Bindable FOR   syntax diagram
Changed lines 1293-1295 from:

unaryMinus := '+/-' ;

to:

bindableFor :=

  FOR forBindingDifferentiator?
  ;
Changed lines 1298-1300 from:

#64.6 Bindable Macro   syntax diagram
to:

#64.3 FOR Binding Differentiator   syntax diagram
Changed lines 1302-1304 from:

bindableMacro :=

  ABS | LENGTH | EXISTS | SEEK | SUBSET | READ | READNEW | WRITE | WRITEF |
  SXF | VAL | multiBindableMacro1 | multiBindableMacro2 | multiBindableMacro3
to:

forBindingDifferentiator :=

  '|' (  |  )
Changed lines 1307-1309 from:

#64.7 Multi-Bindable Macro 1   syntax diagram
to:

#64.4 Bindable Operator   syntax diagram
Changed lines 1311-1312 from:

multiBindableMacro1 :=

  ( COUNT | VALUE ) bindingDifferentiator1?
to:

bindableOperator :=

  '+' | '-' | '*' | '/' | '\' | '=' | '<' | '>' | '*.' | '::'
  IN | DIV | MOD | unaryMinus
Changed lines 1317-1319 from:

#64.8 Binding Differentiator 1   syntax diagram
to:

#64.5 Unary Minus   syntax diagram
Changed lines 1321-1323 from:

bindingDifferentiator1 :=

  '|' '#'
  ;
to:

unaryMinus := '+/-' ;

Changed lines 1324-1326 from:

#64.9 Multi-Bindable Macro 2   syntax diagram
to:

#64.6 Bindable Macro   syntax diagram
Changed lines 1328-1329 from:

multiBindableMacro2 :=

  ( STORE | INSERT | REMOVE ) bindingDifferentiator2?
to:

bindableMacro :=

  ABS | LENGTH | EXISTS | SEEK | SUBSET | READ | READNEW | WRITE | WRITEF |
  SXF | VAL | multiBindableMacro1 | multiBindableMacro2 | multiBindableMacro3
Changed lines 1334-1336 from:

#64.10 Binding Differentiator 2   syntax diagram
to:

#64.7 Multi-Bindable Macro 1   syntax diagram
Changed lines 1338-1339 from:

bindingDifferentiator2 :=

  '|' ( ',' | '#' | '*' )
to:

multiBindableMacro1 :=

  ( COUNT | VALUE ) bindingDifferentiator1?
Changed lines 1343-1345 from:

#64.11 Multi-Bindable Macro 3   syntax diagram
to:

#64.8 Binding Differentiator 1   syntax diagram
Changed lines 1347-1348 from:

multiBindableMacro3 :=

  APPEND bindingDifferentiator3?
to:

bindingDifferentiator1 :=

  '|' '#'
Changed lines 1352-1354 from:

#64.12 Binding Differentiator 3   syntax diagram
to:

#64.9 Multi-Bindable Macro 2   syntax diagram
Changed lines 1356-1357 from:

bindingDifferentiator3 :=

  '|' ( ',' | '*' )
to:

multiBindableMacro2 :=

  ( STORE | INSERT | REMOVE ) bindingDifferentiator2?
Added lines 1360-1386:

#64.10 Binding Differentiator 2   syntax diagram
bindingDifferentiator2 :=
  '|' ( ',' | '#' | '*' )
  ;

#64.11 Multi-Bindable Macro 3   syntax diagram
multiBindableMacro3 :=
  APPEND bindingDifferentiator3?
  ;

#64.12 Binding Differentiator 3   syntax diagram
bindingDifferentiator3 :=
  '|' ( ',' | '*' )
  ;
2015-09-24 09:10 by trijezdci -
Changed line 300 from:
#16.1 Component Count \
to:
#16.1 Value Count \
Changed line 303 from:

componentCount := constExpression ;

to:

valueCount := constExpression ;

2015-09-24 09:09 by trijezdci -
Changed line 295 from:
  ARRAY componentCount ( ',' componentCount )* OF typeIdent
to:
  ARRAY lessThan? valueCount ( ',' valueCount )* OF typeIdent
Changed line 299 from:

to:

Changed line 301 from:
to:
Changed line 569 from:
  TYPE ( Ident '=' type ';' )+ |
to:
  TYPE ( Ident '=' typeDeclTail ';' )+ |
2015-09-22 12:53 by trijezdci -
Changed line 849 from:
  '*' | '/' | DIV | MOD | AND | setDiffOp | dotProductOp
to:
  '*' | '/' | DIV | MOD | AND | setDiffOp
Deleted lines 857-863:

@]

#48.3 Dot Product Operator   syntax diagram

[@ dotProductOp := '*.' ;

2015-09-22 11:25 by trijezdci -
Changed line 799 from:
  '=' | '#' | '<' | '<=' | '>' | '>=' | IN | concatOp | identityOp
to:
  '=' | '#' | '<' | '<=' | '>' | '>=' | IN | identityOp
Changed lines 803-805 from:

#46.2 Concatenation Operator   syntax diagram
to:

#46.2 Identity Operator   syntax diagram
Changed line 807 from:

concatOp := '&' ;

to:

identityOp := '==' ;

Changed lines 810-812 from:

#46.3 Identity Operator   syntax diagram
to:

#47 Simple Expression   syntax diagram
Changed lines 814-816 from:

identityOp := '==' ;

to:

simpleExpression :=

  ( '+' | '-' )? term ( operL2 term )*
  ;
Changed lines 819-821 from:

#47 Simple Expression   syntax diagram
to:

#47.1 Level-2 Operator   syntax diagram
Changed lines 823-824 from:

simpleExpression :=

  ( '+' | '-' )? term ( operL2 term )*
to:

operL2 :=

  '+' | '-' | OR | concatOp
Changed lines 828-830 from:

#47.1 Level-2 Operator   syntax diagram
to:

#47.2 Concatenation Operator   syntax diagram
Changed lines 832-834 from:

operL2 :=

  '+' | '-' | OR
  ;
to:

concatOp := '&' ;

2015-09-17 18:17 by trijezdci -
Changed line 14 from:

compilationUnit :

to:

compilationUnit :=

Changed line 26 from:

definitionModule :

to:

definitionModule :=

Changed lines 38-42 from:

moduleIdent : Ident ;

blueprintIdent : Ident ;

typeToExtend : Ident ;

to:

moduleIdent := Ident ;

blueprintIdent := Ident ;

typeToExtend := Ident ;

Changed line 49 from:

blueprintToObey : blueprintIdent ;

to:

blueprintToObey := blueprintIdent ;

Changed line 56 from:

importList :

to:

importList :=

Changed line 65 from:

libGenDirective :

to:

libGenDirective :=

Changed lines 74-78 from:

libIdent : Ident ;

template : Ident ;

placeholder : Ident ;

to:

libIdent := Ident ;

template := Ident ;

placeholder := Ident ;

Changed line 85 from:

replacement :

to:

replacement :=

Changed line 94 from:

importDirective :

to:

importDirective :=

Changed line 105 from:

enumTypeIdent : typeIdent ;

to:

enumTypeIdent := typeIdent ;

Changed line 112 from:

typeIdent : qualident ;

to:

typeIdent := qualident ;

Changed line 119 from:

identifiersToImport :

to:

identifiersToImport :=

Changed line 123 from:

modulesToImport : identifiersToImport ;

to:

modulesToImport := identifiersToImport ;

Changed line 130 from:

reExport : '+' ;

to:

reExport := '+' ;

Changed line 137 from:

importAll : '*' ;

to:

importAll := '*' ;

Changed line 144 from:

qualident :

to:

qualident :=

Changed line 153 from:

definition :

to:

definition :=

Changed line 165 from:

constDefinition :

to:

constDefinition :=

Changed line 175 from:

constExpression : expression ;

to:

constExpression := expression ;

Changed line 182 from:

restrictedExport : '*' ;

to:

restrictedExport := '*' ;

Changed line 189 from:

typeDefinition :

to:

typeDefinition :=

Changed line 198 from:

variableDeclaration :

to:

variableDeclaration :=

Changed line 207 from:

identList :

to:

identList :=

Changed line 216 from:

range :

to:

range :=

Changed line 225 from:

greaterThan : '>' ;

to:

greaterThan := '>' ;

Changed line 232 from:

lessThan : '<' ;

to:

lessThan := '<' ;

Changed line 239 from:

type :

to:

type :=

Changed line 249 from:

derivedSubType :

to:

derivedSubType :=

Changed lines 260-262 from:

ordinalOrScalarType : typeIdent ;

dynamicTypeIdent : typeIdent ;

to:

ordinalOrScalarType := typeIdent ;

dynamicTypeIdent := typeIdent ;

Changed line 269 from:

enumType :

to:

enumType :=

Changed line 278 from:

enumTypeToExtend : typeIdent ;

to:

enumTypeToExtend := typeIdent ;

Changed line 285 from:

setType :

to:

setType :=

Changed line 294 from:

arrayType :

to:

arrayType :=

Changed line 303 from:

componentCount : constExpression ;

to:

componentCount := constExpression ;

Changed line 310 from:

recordType :

to:

recordType :=

Changed line 330 from:

recTypeToExtend : typeIdent ;

to:

recTypeToExtend := typeIdent ;

Changed line 337 from:

indeterminateField :

to:

indeterminateField :=

Changed line 346 from:

discriminantFieldIdent : Ident ;

to:

discriminantFieldIdent := Ident ;

Changed line 353 from:

pointerType :

to:

pointerType :=

Changed line 362 from:

coroutineType :

to:

coroutineType :=

Changed line 378 from:

procedureType :

to:

procedureType :=

Changed line 387 from:

formalType :

to:

formalType :=

Changed line 396 from:

simpleFormalType :

to:

simpleFormalType :=

Changed line 405 from:

castingFormalType :

to:

castingFormalType :=

Changed line 414 from:

addressTypeIdent :

to:

addressTypeIdent :=

Changed line 423 from:

attributedFormalType :

to:

attributedFormalType :=

Changed line 432 from:

simpleVariadicFormalType :

to:

simpleVariadicFormalType :=

Changed line 441 from:

reqNumOfArgs :

to:

reqNumOfArgs :=

Changed line 450 from:

terminator :

to:

terminator :=

Changed line 459 from:

constQualident : qualident ;

to:

constQualident := qualident ;

Changed line 466 from:

variadicFormalType :

to:

variadicFormalType :=

Changed line 477 from:

nonVariadicFormalType :

to:

nonVariadicFormalType :=

Changed line 486 from:

procedureHeader :

to:

procedureHeader :=

Changed line 496 from:

procedureSignature :

to:

procedureSignature :=

Changed line 505 from:

formalParams :

to:

formalParams :=

Changed line 515 from:

attributedFormalParams :

to:

attributedFormalParams :=

Changed line 525 from:

variadicFormalParams :

to:

variadicFormalParams :=

Changed line 536 from:

nonVariadicFormalParams :

to:

nonVariadicFormalParams :=

Changed line 548 from:

implOrPrgmModule :

to:

implOrPrgmModule :=

Changed line 558 from:

block :

to:

block :=

Changed line 567 from:

declaration :

to:

declaration :=

Changed line 579 from:

statementSequence :

to:

statementSequence :=

Changed line 588 from:

statement :

to:

statement :=

Changed line 599 from:

memMgtOperation :

to:

memMgtOperation :=

Changed lines 610-612 from:

initSize : expression ;

initValue : expression ;

to:

initSize := expression ;

initValue := expression ;

Changed line 619 from:

updateOrProcCall :

to:

updateOrProcCall :=

Changed line 629 from:

incOrDecSuffix :

to:

incOrDecSuffix :=

Changed line 638 from:

ifStatement :

to:

ifStatement :=

Changed line 650 from:

boolExpression : expression ;

to:

boolExpression := expression ;

Changed line 657 from:

caseStatement :

to:

caseStatement :=

Changed line 666 from:

case :

to:

case :=

Changed line 675 from:

caseLabels :

to:

caseLabels :=

Changed line 684 from:

loopStatement :

to:

loopStatement :=

Changed line 693 from:

whileStatement :

to:

whileStatement :=

Changed line 702 from:

repeatStatement :

to:

repeatStatement :=

Changed line 711 from:

forStatement :

to:

forStatement :=

Changed line 720 from:

forLoopVariants :

to:

forLoopVariants :=

Changed lines 730-732 from:

accessor : Ident ;

value : Ident ;

to:

accessor := Ident ;

value := Ident ;

Changed line 739 from:

iterableEntity :

to:

iterableEntity :=

Changed line 748 from:

ascOrDesc : incOrDecSuffix ;

to:

ascOrDesc := incOrDecSuffix ;

Changed line 755 from:

ordinalType : typeIdent ;

to:

ordinalType := typeIdent ;

Changed line 762 from:

designator :

to:

designator :=

Changed line 771 from:

designatorTail :

to:

designatorTail :=

Changed line 780 from:

exprListOrSlice :

to:

exprListOrSlice :=

Changed line 789 from:

expression :

to:

expression :=

Changed line 798 from:

operL1 :

to:

operL1 :=

Changed line 807 from:

concatOp : '&' ;

to:

concatOp := '&' ;

Changed line 814 from:

identityOp : '==' ;

to:

identityOp := '==' ;

Changed line 821 from:

simpleExpression :

to:

simpleExpression :=

Changed line 830 from:

operL2 :

to:

operL2 :=

Changed line 839 from:

term :

to:

term :=

Changed line 848 from:

operL3 :

to:

operL3 :=

Changed line 857 from:

setDiffOp : '\' ;

to:

setDiffOp := '\' ;

Changed line 864 from:

dotProductOp : '*.' ;

to:

dotProductOp := '*.' ;

Changed line 871 from:

simpleTerm :

to:

simpleTerm :=

Changed line 880 from:

factorOrTypeConv :

to:

factorOrTypeConv :=

Changed line 889 from:

factor :

to:

factor :=

Changed line 899 from:

actualParameters :

to:

actualParameters :=

Changed line 908 from:

expressionList :

to:

expressionList :=

Changed line 917 from:

structuredValue :

to:

structuredValue :=

Changed line 926 from:

valueComponent :

to:

valueComponent :=

Changed line 935 from:

runtimeExpression : expression ;

to:

runtimeExpression := expression ;

Changed line 945 from:

blueprint :

to:

blueprint :=

Changed line 957 from:

blueprintIdent : Ident ;

to:

blueprintIdent := Ident ;

Changed lines 964-966 from:

blueprintToRefine : blueprintIdent ;

blueprintForTypeToExtend : blueprintIdent ;

to:

blueprintToRefine := blueprintIdent ;

blueprintForTypeToExtend := blueprintIdent ;

Changed line 973 from:

typeClassification :

to:

typeClassification :=

Changed line 983 from:

determinedClassification :

to:

determinedClassification :=

Changed line 992 from:

refinableClassification :

to:

refinableClassification :=

Changed line 1001 from:

classificationIdent : Ident ;

to:

classificationIdent := Ident ;

Changed line 1008 from:

literalCompatibility :

to:

literalCompatibility :=

Changed line 1017 from:

protoLiteral :

to:

protoLiteral :=

Changed line 1026 from:

protoLiteralIdent : Ident ;

to:

protoLiteralIdent := Ident ;

Changed line 1033 from:

structuredProtoLiteral :

to:

structuredProtoLiteral :=

Changed line 1046 from:

reqValueCount :

to:

reqValueCount :=

Changed line 1054 from:

greaterThan : '>' ;

to:

greaterThan := '>' ;

Changed line 1068 from:

builtinOrReferential : Ident ;

to:

builtinOrReferential := Ident ;

Changed line 1075 from:

constraint :

to:

constraint :=

Changed line 1084 from:

constraintTerm :

to:

constraintTerm :=

Changed line 1094 from:

bindableEntityOrProperty :

to:

bindableEntityOrProperty :=

Changed line 1103 from:

oneWayDependency :

to:

oneWayDependency :=

Changed line 1112 from:

mutualDependencyOrExclusion :

to:

mutualDependencyOrExclusion :=

Changed line 1121 from:

termList :

to:

termList :=

Changed line 1130 from:

classificationOrFlagIdent : Ident ;

to:

classificationOrFlagIdent := Ident ;

Changed line 1137 from:

requirement :

to:

requirement :=

Changed line 1146 from:

condition :

to:

condition :=

Changed line 1155 from:

boolConstIdent : Ident ;

to:

boolConstIdent := Ident ;

Changed line 1162 from:

typeRequirement :

to:

typeRequirement :=

Changed line 1171 from:

constRequirement :

to:

constRequirement :=

Changed line 1182 from:

simpleConstRequirement :

to:

simpleConstRequirement :=

Changed line 1190 from:

constExpression : expression ;

to:

constExpression := expression ;

Changed line 1197 from:

builtinTypeIdent : Ident ;

to:

builtinTypeIdent := Ident ;

Changed line 1203 from:

restrictedExport : '*' ;

to:

restrictedExport := '*' ;

Changed line 1210 from:

propertyToBindTo :

to:

propertyToBindTo :=

Changed line 1219 from:

memMgtProperty :

to:

memMgtProperty :=

Changed line 1228 from:

collectionProperty :

to:

collectionProperty :=

Changed line 1237 from:

scalarProperty :

to:

scalarProperty :=

Changed line 1246 from:

procRequirement :

to:

procRequirement :=

Changed line 1257 from:

entityToBindTo :

to:

entityToBindTo :=

Changed line 1266 from:

bindableResWord :

to:

bindableResWord :=

Changed line 1275 from:

bindableFor :

to:

bindableFor :=

Changed line 1284 from:

forBindingDifferentiator :

to:

forBindingDifferentiator :=

Changed line 1293 from:

bindableOperator :

to:

bindableOperator :=

Changed line 1303 from:

unaryMinus : '+/-' ;

to:

unaryMinus := '+/-' ;

Changed line 1310 from:

bindableMacro :

to:

bindableMacro :=

Changed line 1320 from:

multiBindableMacro1 :

to:

multiBindableMacro1 :=

Changed line 1329 from:

bindingDifferentiator1 :

to:

bindingDifferentiator1 :=

Changed line 1338 from:

multiBindableMacro2 :

to:

multiBindableMacro2 :=

Changed line 1347 from:

bindingDifferentiator2 :

to:

bindingDifferentiator2 :=

Changed line 1356 from:

multiBindableMacro3 :

to:

multiBindableMacro3 :=

Changed line 1365 from:

bindingDifferentiator3 :

to:

bindingDifferentiator3 :=

Changed line 1368 from:

@]

to:

@]

2015-09-16 02:35 by trijezdci -
2015-09-16 02:34 by trijezdci -
Changed line 1 from:
to:
2015-09-16 02:33 by trijezdci -
Changed line 1 from:

% silver%Grammar | Terminals

to:
2015-09-16 02:32 by trijezdci -
Added lines 1-2:

% silver%Grammar | Terminals

2015-09-16 02:01 by trijezdci - changed factorOrNegation to simpleTerm
Changed line 838 from:
  factorOrNegation ( operL3 factorOrNegation )*
to:
  simpleTerm ( operL3 simpleTerm )*
Changed lines 865-867 from:

#49 Factor Or Negation   syntax diagram
to:

#49 Simple Term   syntax diagram
Changed line 869 from:

factorOrNegation :

to:

simpleTerm :

2015-09-15 08:21 by trijezdci - anchoring
Added line 8:

Added line 32:

Added line 43:

Added line 50:

Added line 59:

Added line 68:

Added line 79:

Added line 88:

Added line 99:

Added line 106:

Added line 113:

Added line 124:

Added line 131:

Added line 138:

Added line 147:

Added line 159:

Added line 169:

Added line 176:

Added line 183:

Added line 192:

Added line 201:

Added line 210:

Added line 219:

Added line 226:

Added line 233:

Added line 243:

Added line 254:

Added line 263:

Added line 272:

Added line 279:

Added line 288:

Added line 297:

Added line 304:

Added line 315:

Added line 324:

Added line 331:

Added line 340:

Added line 347:

Added line 356:

Added line 365:

Added line 372:

Added line 381:

Added line 390:

Added line 399:

Added line 408:

Added line 417:

Added line 426:

Added line 435:

Added line 444:

Added line 453:

Added line 460:

Added line 471:

Added line 480:

Added line 490:

Added line 499:

Added line 509:

Added line 519:

Added line 530:

Changed lines 542-543 from:

\

to:

#32 Implementation Or Program Module \
Deleted line 544:
#32 Implementation Or Program Module
Added line 552:

Added line 561:

Added line 573:

Added line 582:

Added line 593:

Added line 604:

Added line 613:

Added line 623:

Added line 632:

Added line 644:

Added line 651:

Added line 660:

Added line 669:

Added line 678:

Added line 687:

Added line 696:

Added line 705:

Added line 714:

Added line 724:

Added line 733:

Added line 742:

Added line 749:

Added line 756:

Added line 765:

Added line 774:

Added line 783:

Added line 792:

Added line 801:

Added line 808:

Added line 815:

Added line 824:

Added line 833:

Added line 842:

Added line 851:

Added line 858:

Added line 865:

Added line 874:

Added line 883:

Added line 893:

Added line 902:

Added line 911:

Added line 920:

Added line 929:

Changed lines 939-940 from:

\

to:

#55 Blueprint \
Deleted line 941:
#55 Blueprint
Added line 951:

Added line 958:

Added line 967:

Added line 977:

Added line 986:

Added line 995:

Added line 1002:

Added line 1011:

Added line 1020:

Added line 1027:

Added line 1040:

Added line 1055:

Added line 1062:

Added line 1069:

Added line 1078:

Added line 1088:

Added line 1097:

Added line 1106:

Added line 1115:

Added line 1124:

Added line 1131:

Added line 1140:

Added line 1149:

Added line 1156:

Added line 1165:

Added line 1176:

Added line 1191:

Added line 1204:

Added line 1213:

Added line 1222:

Added line 1231:

Added line 1240:

Added line 1251:

Added line 1260:

Added line 1269:

Added line 1278:

Added line 1287:

Added line 1297:

Added line 1304:

Added line 1314:

Added line 1323:

Added line 1332:

Added line 1341:

Added line 1350:

Added line 1359:

2015-09-15 07:56 by trijezdci - anchoring
Changed lines 8-9 from:
#1 Compilation Unit
to:
#1 Compilation Unit   syntax diagram
Changed lines 20-21 from:
#2 Definition Module
to:
#2 Definition Module   syntax diagram
Changed lines 31-32 from:
#2.1 Module Identifier, Blueprint Identifier, Type To Extend
to:
#2.1 Module Identifier, Blueprint Identifier, Type To Extend   syntax diagram
Changed lines 41-42 from:
#2.2 Blueprint To Obey
to:
#2.2 Blueprint To Obey   syntax diagram
Changed lines 47-48 from:
#3 Import List
to:
#3 Import List   syntax diagram
Changed lines 55-56 from:
#4 Library Generation Directive
to:
#4 Library Generation Directive   syntax diagram
Changed lines 63-64 from:
#4.1 Library Identifier, Template, Placeholder
to:
#4.1 Library Identifier, Template, Placeholder   syntax diagram
Changed lines 73-74 from:
#4.2 Replacement
to:
#4.2 Replacement   syntax diagram
Changed lines 81-82 from:
#5 Import Directive
to:
#5 Import Directive   syntax diagram
Changed lines 91-92 from:
#5.1 Enumeration Type Identifier
to:
#5.1 Enumeration Type Identifier   syntax diagram
Changed lines 97-98 from:
#5.2 Type Identifier
to:
#5.2 Type Identifier   syntax diagram
Changed lines 103-104 from:
#5.3 Identifiers To Import, Modules To Import
to:
#5.3 Identifiers To Import, Modules To Import   syntax diagram
Changed lines 113-114 from:
#5.4 Re-Export
to:
#5.4 Re-Export   syntax diagram
Changed lines 119-120 from:
#5.5 Import All
to:
#5.5 Import All   syntax diagram
Changed lines 125-126 from:
#6 Qualified Identifier
to:
#6 Qualified Identifier   syntax diagram
Changed lines 133-134 from:
#7 Definition
to:
#7 Definition   syntax diagram
Changed lines 144-145 from:
#8 Constant Definition
to:
#8 Constant Definition   syntax diagram
Changed lines 153-154 from:
#8.1 Constant Expression
to:
#8.1 Constant Expression   syntax diagram
Changed lines 159-160 from:
#8.2 Restricted Export
to:
#8.2 Restricted Export   syntax diagram
Changed lines 165-166 from:
#9 Type Definition
to:
#9 Type Definition   syntax diagram
Changed lines 173-174 from:
#10 Variable Declaration
to:
#10 Variable Declaration   syntax diagram
Changed lines 181-182 from:
#11 Identifier List
to:
#11 Identifier List   syntax diagram
Changed lines 189-190 from:
#12 Range
to:
#12 Range   syntax diagram
Changed lines 197-198 from:
#12.1 Greater Than
to:
#12.1 Greater Than   syntax diagram
Changed lines 203-204 from:
#12.2 Less Than
to:
#12.2 Less Than   syntax diagram
Changed lines 209-210 from:
#13 Type
to:
#13 Type   syntax diagram
Changed lines 218-219 from:
#13.1 Derived Sub-Type
to:
#13.1 Derived Sub-Type   syntax diagram
Changed lines 228-229 from:
#13.2 Ordinal Or Scalar Type, Dynamic Type Identifier
to:
#13.2 Ordinal Or Scalar Type, Dynamic Type Identifier   syntax diagram
Changed lines 236-237 from:
#14 Enumeration Type
to:
#14 Enumeration Type   syntax diagram
Changed lines 244-245 from:
#14.1 Enumeration Type To Extend
to:
#14.1 Enumeration Type To Extend   syntax diagram
Changed lines 250-251 from:
#15 Set Type
to:
#15 Set Type   syntax diagram
Changed lines 258-259 from:
#16 Array Type
to:
#16 Array Type   syntax diagram
Changed lines 266-267 from:
#16.1 Component Count
to:
#16.1 Component Count   syntax diagram
Changed lines 272-273 from:
#17 Record Type
to:
#17 Record Type   syntax diagram
Changed lines 282-283 from:
#17.1 Field List
to:
#17.1 Field List   syntax diagram
Changed lines 290-291 from:
#17.2 Record Type To Extend
to:
#17.2 Record Type To Extend   syntax diagram
Changed lines 296-297 from:
#17.3 Indeterminate Field
to:
#17.3 Indeterminate Field   syntax diagram
Changed lines 304-305 from:
#17.4 Discriminant Field Ident
to:
#17.4 Discriminant Field Ident   syntax diagram
Changed lines 310-311 from:
#18 Pointer Type
to:
#18 Pointer Type   syntax diagram
Changed lines 318-319 from:
#19 Coroutine Type
to:
#19 Coroutine Type   syntax diagram
Changed lines 326-327 from:
#19.1 Associated Procedure Type
to:
#19.1 Associated Procedure Type   syntax diagram
Changed lines 332-333 from:
#20 Procedure Type
to:
#20 Procedure Type   syntax diagram
Changed lines 340-341 from:
#20.1 Formal Type
to:
#20.1 Formal Type   syntax diagram
Changed lines 348-349 from:
#21 Simple Formal Type
to:
#21 Simple Formal Type   syntax diagram
Changed lines 356-357 from:
#21.1 Casting Formal Type
to:
#21.1 Casting Formal Type   syntax diagram
Changed lines 364-365 from:
#21.2 Address Type Identifier
to:
#21.2 Address Type Identifier   syntax diagram
Changed lines 372-373 from:
#22 Attributed Formal Type
to:
#22 Attributed Formal Type   syntax diagram
Changed lines 380-381 from:
#23 Simple Variadic Formal Type
to:
#23 Simple Variadic Formal Type   syntax diagram
Changed lines 388-389 from:
#23.1 Required Number Of Arguments
to:
#23.1 Required Number Of Arguments   syntax diagram
Changed lines 396-397 from:
#23.2 Argument List Terminator
to:
#23.2 Argument List Terminator   syntax diagram
Changed lines 404-405 from:
#23.3 Constant Qualified Identifier
to:
#23.3 Constant Qualified Identifier   syntax diagram
Changed lines 410-411 from:
#24 Variadic Formal Type
to:
#24 Variadic Formal Type   syntax diagram
Changed lines 420-421 from:
#25 Non-Variadic Formal Type
to:
#25 Non-Variadic Formal Type   syntax diagram
Changed lines 428-429 from:
#26 Procedure Header
to:
#26 Procedure Header   syntax diagram
Changed lines 437-438 from:
#27 Procedure Signature
to:
#27 Procedure Signature   syntax diagram
Changed lines 445-446 from:
#28 Formal Parameters
to:
#28 Formal Parameters   syntax diagram
Changed lines 454-455 from:
#29 Attributed Formal Parameters
to:
#29 Attributed Formal Parameters   syntax diagram
Changed lines 463-464 from:
#30 Variadic Formal Parameters
to:
#30 Variadic Formal Parameters   syntax diagram
Changed lines 473-474 from:
#31 Non-Variadic Formal Parameters
to:
#31 Non-Variadic Formal Parameters   syntax diagram
Changed lines 484-485 from:

to:
Changed lines 494-495 from:
#33 Block
to:
#33 Block   syntax diagram
Changed lines 502-503 from:
#34 Declaration
to:
#34 Declaration   syntax diagram
Changed lines 513-514 from:
#35 Statement Sequence
to:
#35 Statement Sequence   syntax diagram
Changed lines 521-522 from:
#36 Statement
to:
#36 Statement   syntax diagram
Changed lines 531-532 from:
#37 Memory Management Operation
to:
#37 Memory Management Operation   syntax diagram
Changed lines 541-542 from:
#37.1 Initial Size, Initial Value
to:
#37.1 Initialisation Size, Initialisation Value   syntax diagram
Changed lines 549-550 from:
#38 Update Or Procedure Call
to:
#38 Update Or Procedure Call   syntax diagram
Changed lines 558-559 from:
#38.1 Increment Or Decrement Suffix
to:
#38.1 Increment Or Decrement Suffix   syntax diagram
Changed lines 566-567 from:
#39 IF Statement
to:
#39 IF Statement   syntax diagram
Changed lines 577-578 from:
#39.1 Boolean Expression
to:
#39.1 Boolean Expression   syntax diagram
Changed lines 583-584 from:
#40 CASE Statement
to:
#40 CASE Statement   syntax diagram
Changed lines 591-592 from:
#40.1 Case
to:
#40.1 Case   syntax diagram
Changed lines 599-600 from:
#40.2 Case Labels
to:
#40.2 Case Labels   syntax diagram
Changed lines 607-608 from:
#41 LOOP Statement
to:
#41 LOOP Statement   syntax diagram
Changed lines 615-616 from:
#42 WHILE Statement
to:
#42 WHILE Statement   syntax diagram
Changed lines 623-624 from:
#43 REPEAT Statement
to:
#43 REPEAT Statement   syntax diagram
Changed lines 631-632 from:
#44 FOR Statement
to:
#44 FOR Statement   syntax diagram
Changed lines 639-640 from:
#44.1 FOR Loop Variants
to:
#44.1 FOR Loop Variants   syntax diagram
Changed lines 648-649 from:
#44.2 Accessor, Value
to:
#44.2 Accessor, Value   syntax diagram
Changed lines 656-657 from:
#44.3 Iterable Entity
to:
#44.3 Iterable Entity   syntax diagram
Changed lines 664-665 from:
#44.4 Ascender Or Descender
to:
#44.4 Ascender Or Descender   syntax diagram
Changed lines 670-671 from:
#44.5 Ordinal Type
to:
#44.5 Ordinal Type   syntax diagram
Changed lines 676-677 from:
#45 Designator
to:
#45 Designator   syntax diagram
Changed lines 684-685 from:
#45.1 Designator Tail
to:
#45.1 Designator Tail   syntax diagram
Changed lines 692-693 from:
#45.2 Expression List Or Slice
to:
#45.2 Expression List Or Slice   syntax diagram
Changed lines 700-701 from:
#46 Expression
to:
#46 Expression   syntax diagram
Changed lines 708-709 from:
#46.1 Level-1 Operator
to:
#46.1 Level-1 Operator   syntax diagram
Changed lines 716-717 from:
#46.2 Concatenation Operator
to:
#46.2 Concatenation Operator   syntax diagram
Changed lines 722-723 from:
#46.3 Identity Operator
to:
#46.3 Identity Operator   syntax diagram
Changed lines 728-729 from:
#47 Simple Expression
to:
#47 Simple Expression   syntax diagram
Changed lines 736-737 from:
#47.1 Level-2 Operator
to:
#47.1 Level-2 Operator   syntax diagram
Changed lines 744-745 from:
#48 Term
to:
#48 Term   syntax diagram
Changed lines 752-753 from:
#48.1 Level-3 Operator
to:
#48.1 Level-3 Operator   syntax diagram
Changed lines 760-761 from:
#48.2 Set Difference Operator
to:
#48.2 Set Difference Operator   syntax diagram
Changed lines 766-767 from:
#48.3 Dot Product Operator
to:
#48.3 Dot Product Operator   syntax diagram
Changed lines 772-773 from:
#49 Factor Or Negation
to:
#49 Factor Or Negation   syntax diagram
Changed lines 780-781 from:
#50 Factor Or Type Conversion
to:
#50 Factor Or Type Conversion   syntax diagram
Changed lines 788-789 from:
#51 Factor
to:
#51 Factor   syntax diagram
Changed lines 797-798 from:
#52 Actual Parameters
to:
#52 Actual Parameters   syntax diagram
Changed lines 805-806 from:
#53 Expression List
to:
#53 Expression List   syntax diagram
Changed lines 813-814 from:
#54 Structured Value
to:
#54 Structured Value   syntax diagram
Changed lines 821-822 from:
#54.1 Value Component
to:
#54.1 Value Component   syntax diagram
Changed lines 829-830 from:
#54.2 Runtime Expression
to:
#54.2 Runtime Expression   syntax diagram
Changed lines 838-839 from:

to:
Changed lines 850-851 from:
#55.1 Blueprint Identifier
to:
#55.1 Blueprint Identifier   syntax diagram
Changed lines 856-857 from:
#55.2 Blueprint To Refine, Blueprint For Type To Extend
to:
#55.2 Blueprint To Refine, Blueprint For Type To Extend   syntax diagram
Changed lines 864-865 from:
#56 Type Classification
to:
#56 Type Classification   syntax diagram
Changed lines 873-874 from:
#56.1 Determined Classification
to:
#56.1 Determined Classification   syntax diagram
Changed lines 881-882 from:
#56.2 Refinable Classification
to:
#56.2 Refinable Classification   syntax diagram
Changed lines 889-890 from:
#56.3 Classification Identifier
to:
#56.3 Classification Identifier   syntax diagram
Changed lines 895-896 from:
#57 Literal Compatibility
to:
#57 Literal Compatibility   syntax diagram
Changed lines 903-904 from:
#57.1 Proto-Literal
to:
#57.1 Proto-Literal   syntax diagram
Changed lines 911-912 from:
#57.2 Proto-Literal Identifier
to:
#57.2 Proto-Literal Identifier   syntax diagram
Changed lines 917-918 from:
#58 Structured Proto-Literal
to:
#58 Structured Proto-Literal   syntax diagram
Changed lines 929-930 from:
#58.1 Required Value Count
to:
#58.1 Required Value Count   syntax diagram
Changed lines 937-938 from:
#58.2 Greater Than
to:
#58.2 Greater Than   syntax diagram
Changed lines 943-944 from:
#58.3 Whole Number
to:
#58.3 Whole Number   syntax diagram
Changed lines 949-950 from:
#58.4 Built-in Type Or Referential Identifier
to:
#58.4 Built-in Type Or Referential Identifier   syntax diagram
Changed lines 955-956 from:
#59 Constraint
to:
#59 Constraint   syntax diagram
Changed lines 963-964 from:
#59.1 Constraint Term
to:
#59.1 Constraint Term   syntax diagram
Changed lines 972-973 from:
#59.2 Bindable Entity Or Property
to:
#59.2 Bindable Entity Or Property   syntax diagram
Changed lines 980-981 from:
#59.3 One-Way Dependency
to:
#59.3 One-Way Dependency   syntax diagram
Changed lines 988-989 from:
#59.4 Mutual Dependency Or Exclusion
to:
#59.4 Mutual Dependency Or Exclusion   syntax diagram
Changed lines 996-997 from:
#59.5 Term List
to:
#59.5 Term List   syntax diagram
Changed lines 1004-1005 from:
#59.6 Classification Or Flag Identifier
to:
#59.6 Classification Or Flag Identifier   syntax diagram
Changed lines 1010-1011 from:
#60 Requirement
to:
#60 Requirement   syntax diagram
Changed lines 1018-1019 from:
#60.1 Condition
to:
#60.1 Condition   syntax diagram
Changed lines 1026-1027 from:
#60.2 Boolean Constant Identifier
to:
#60.2 Boolean Constant Identifier   syntax diagram
Changed lines 1032-1033 from:
#60.3 Type Requirement
to:
#60.3 Type Requirement   syntax diagram
Changed lines 1040-1041 from:
#61 Constant Requirement
to:
#61 Constant Requirement   syntax diagram
Changed lines 1050-1051 from:
#61.1 Simple Constant Requirement
to:
#61.1 Simple Constant Requirement   syntax diagram
Changed lines 1058-1059 from:
#61.2 Constant Expression
to:
#61.2 Constant Expression   syntax diagram
Changed lines 1064-1065 from:
#61.3 Built-in Type Identifier
to:
#61.3 Built-in Type Identifier   syntax diagram
Changed lines 1070-1071 from:
#61.4 Restricted Export
to:
#61.4 Restricted Export   syntax diagram
Changed lines 1076-1077 from:
#62 Property To Bind To
to:
#62 Property To Bind To   syntax diagram
Changed lines 1084-1085 from:
#62.1 Memory Management Property
to:
#62.1 Memory Management Property   syntax diagram
Changed lines 1092-1093 from:
#62.2 Collection Property
to:
#62.2 Collection Property   syntax diagram
Changed lines 1100-1101 from:
#62.3 Scalar Property
to:
#62.3 Scalar Property   syntax diagram
Changed lines 1108-1109 from:
#63 Procedure Requirement
to:
#63 Procedure Requirement   syntax diagram
Changed line 1111 from:

procedureRequirement :

to:

procRequirement :

Changed lines 1118-1119 from:
#64 Entity To Bind To
to:
#64 Entity To Bind To   syntax diagram
Changed lines 1126-1127 from:
#64.1 Bindable Reserved Word
to:
#64.1 Bindable Reserved Word   syntax diagram
Changed lines 1134-1135 from:
#64.2 Bindable FOR
to:
#64.2 Bindable FOR   syntax diagram
Changed lines 1142-1143 from:
#64.3 FOR Binding Differentiator
to:
#64.3 FOR Binding Differentiator   syntax diagram
Changed lines 1150-1151 from:
#64.4 Bindable Operator
to:
#64.4 Bindable Operator   syntax diagram
Changed lines 1159-1160 from:
#64.5 Unary Minus
to:
#64.5 Unary Minus   syntax diagram
Changed lines 1165-1166 from:
#64.6 Bindable Macro
to:
#64.6 Bindable Macro   syntax diagram
Changed lines 1174-1175 from:
#64.7 Multi-Bindable Macro 1
to:
#64.7 Multi-Bindable Macro 1   syntax diagram
Changed lines 1182-1183 from:
#64.8 Binding Differentiator 1
to:
#64.8 Binding Differentiator 1   syntax diagram
Changed lines 1190-1191 from:
#64.9 Multi-Bindable Macro 2
to:
#64.9 Multi-Bindable Macro 2   syntax diagram
Changed lines 1198-1199 from:
#64.10 Binding Differentiator 2
to:
#64.10 Binding Differentiator 2   syntax diagram
Changed lines 1206-1207 from:
#64.11 Multi-Bindable Macro 3
to:
#64.11 Multi-Bindable Macro 3   syntax diagram
Changed lines 1214-1215 from:
#64.12 Binding Differentiator 3
to:
#64.12 Binding Differentiator 3   syntax diagram
2015-09-15 05:56 by trijezdci -
Changed line 4 from:
to:
2015-09-15 05:56 by trijezdci -
Changed line 6 from:

---

to:

2015-09-15 05:54 by trijezdci -
Added lines 5-6:

---

2015-09-15 05:54 by trijezdci -
Changed line 1 from:
Quick Links
to:
Index
2015-09-15 05:52 by trijezdci - anchoring
Changed lines 2-3 from:
to:
Changed line 9 from:
to:
  definitionModule | implOrPrgmModule | blueprint
2015-09-15 05:51 by trijezdci - anchoring
Added lines 1-5:
Changed line 9 from:
  definitionModule | implOrPrgmModule | blueprint
to:
Added line 13:

Added line 16:

Added line 420:

Added line 423:

Added line 730:

Added line 733:

Changed line 1066 from:

@]

to:

@]

2015-09-14 16:20 by trijezdci -
Changed line 132 from:
#8.2 Constant Expression
to:
#8.2 Restricted Export
Changed line 345 from:
#23.2 Constant Qualified Identifier
to:
#23.3 Constant Qualified Identifier
2015-09-14 12:48 by trijezdci -
Deleted lines 0-1:

(1) Non-Terminals

2015-09-14 12:47 by trijezdci - moved terminals (ebnf) to separate page
Added lines 1-1057:

(1) Non-Terminals

#1 Compilation Unit
compilationUnit :	
  definitionModule | implOrPrgmModule | blueprint
  ;

Definition Module Syntax

#2 Definition Module
definitionModule :
  DEFINITION MODULE moduleIdent
  ( '[' blueprintToObey ']' )? ( FOR typeToExtend )? ';'
  (importList ';')* definition*
  END moduleIdent '.'
  ;
#2.1 Module Identifier, Blueprint Identifier, Type To Extend
moduleIdent : Ident ;

blueprintIdent : Ident ;

typeToExtend : Ident ;
#2.2 Blueprint To Obey
blueprintToObey : blueprintIdent ;
#3 Import List
importList :
  libGenDirective | importDirective
  ;
#4 Library Generation Directive
libGenDirective :
  GENLIB libIdent FROM template FOR templateParamList END
  ;
#4.1 Library Identifier, Template, Placeholder
libIdent : Ident ;

template : Ident ;

placeholder : Ident ;
#4.2 Replacement
replacement :
  NumberLiteral | StringLiteral | ChevronText
  ;
#5 Import Directive
importDirective :
  FROM ( moduleIdent | ENUM enumTypeIdent )
    IMPORT ( identifiersToImport | importAll ) |
  IMPORT modulesToImport
  ;
#5.1 Enumeration Type Identifier
enumTypeIdent : typeIdent ;
#5.2 Type Identifier
typeIdent : qualident ;
#5.3 Identifiers To Import, Modules To Import
identifiersToImport :
  Ident reExport? ( ',' Ident reExport? )*
  ;

modulesToImport : identifiersToImport ;
#5.4 Re-Export
reExport : '+' ;
#5.5 Import All
importAll : '*' ;
#6 Qualified Identifier
qualident :
  Ident ( '.' Ident )*
  ;
#7 Definition
definition :
  CONST ( constDefinition ';' )+ |
  TYPE ( typeDefinition ';' )+ |
  VAR ( variableDeclaration ';' )+ |
  procedureHeader ';'
  ;
#8 Constant Definition
constDefinition :
  ( '[' propertyToBindTo ']' | restrictedExport )?
  Ident '=' constExpression
  ;
#8.1 Constant Expression
constExpression : expression ;
#8.2 Constant Expression
restrictedExport : '*' ;
#9 Type Definition
typeDefinition :
  restrictedExport? Ident '=' ( OPAQUE | type )
  ;
#10 Variable Declaration
variableDeclaration :
  identList ':' ( range OF )? typeIdent
  ;
#11 Identifier List
identList :
    Ident ( ',' Ident )*
    ;
#12 Range
range :
  '[' greaterThan? constExpression '..' lessThan? constExpression ']'
  ;
#12.1 Greater Than
greaterThan : '>' ;
#12.2 Less Than
lessThan : '<' ;
#13 Type
type :
  typeIdent | derivedSubType | enumType | setType | arrayType |
  recordType | pointerType | coroutineType | procedureType
  ;
#13.1 Derived Sub-Type
derivedSubType :
  ALIAS OF typeIdent |
  range OF ordinalOrScalarType |
  CONST dynamicTypeIdent
  ;
#13.2 Ordinal Or Scalar Type, Dynamic Type Identifier
ordinalOrScalarType : typeIdent ;

dynamicTypeIdent : typeIdent ;
#14 Enumeration Type
enumType :
  '(' ( '+' enumTypeToExtend )? identList ')'
  ;
#14.1 Enumeration Type To Extend
enumTypeToExtend : typeIdent ;
#15 Set Type
setType :
  SET OF enumTypeIdent
  ;
#16 Array Type
arrayType :
  ARRAY componentCount ( ',' componentCount )* OF typeIdent
  ;
#16.1 Component Count
componentCount : constExpression ;
#17 Record Type
recordType :
  RECORD
    ( fieldList ( ';' fieldList )* indeterminateField? |
      '(' recTypeToExtend ')' fieldList ( ';' fieldList )* )
  ;
#17.1 Field List
fieldList :
  restrictedExport? variableDeclaration
  ;
#17.2 Record Type To Extend
recTypeToExtend : typeIdent ;
#17.3 Indeterminate Field
indeterminateField :
  '~' Ident ':' ARRAY discriminantFieldIdent OF typeIdent
  ;
#17.4 Discriminant Field Ident
discriminantFieldIdent : Ident ;
#18 Pointer Type
pointerType :
  POINTER TO CONST? typeIdent
  ;
#19 Coroutine Type
coroutineType :
  COROUTINE '(' assocProcType ')'
  ;
#19.1 Associated Procedure Type
assocProcType : typeIdent ;
#20 Procedure Type
procedureType :
  PROCEDURE ( formalType ( ',' formalType )* )? ( ':' returnedType )?
  ;
#20.1 Formal Type
formalType :
  simpleFormalType | attributedFormalType | variadicFormalType
  ;
#21 Simple Formal Type
simpleFormalType :
  ( ARRAY OF )? typeIdent | castingFormalType
  ;
#21.1 Casting Formal Type
castingFormalType :
  CAST ( ARRAY OF OCTET | addressTypeIdent )
  ;
#21.2 Address Type Identifier
addressTypeIdent :
  ( UNSAFE '.' )? ADDRESS
  ;
#22 Attributed Formal Type
attributedFormalType :
  ( CONST | NEW | VAR ) ( simpleFormalType | simpleVariadicFormalType )
  ;
#23 Simple Variadic Formal Type
simpleVariadicFormalType :
  ARGLIST reqNumOfArgs? OF simpleFormalType terminator?
  ;
#23.1 Required Number Of Arguments
reqNumOfArgs :
  greaterThan? constExpression
  ;
#23.2 Argument List Terminator
terminator :
  '|' constQualident
  ;
#23.2 Constant Qualified Identifier
constQualident : qualident ;
#24 Variadic Formal Type
variadicFormalType :
  ARGLIST reqNumOfArgs? OF
    ( '{' nonVariadicFormalType ( ';' nonVariadicFormalType )* '}' |
      simpleFormalType ) terminator?
  ;
#25 Non-Variadic Formal Type
nonVariadicFormalType :
  ( CONST | NEW | VAR )? simpleFormalType
  ;
#26 Procedure Header
procedureHeader :
  PROCEDURE ( '[' ( entityToBindTo | COROUTINE ) ']' | restrictedExport )?
  procedureSignature
  ;
#27 Procedure Signature
procedureSignature :
  Ident ( '(' formalParams ( ';' formalParams )* ')' )? ( ':' returnedType )?
  ;
#28 Formal Parameters
formalParams :
  identList ':' ( simpleFormalType | variadicFormalParams ) |
  attributedFormalParams
  ;
#29 Attributed Formal Parameters
attributedFormalParams :
  ( CONST | NEW | VAR ) identList ':'
  ( simpleFormalType | simpleVariadicFormalType )
  ;
#30 Variadic Formal Parameters
variadicFormalParams :
  ARGLIST reqNumOfArgs? OF
    ( ( '{' nonVariadicFormalParams ( ';' nonVariadicFormalParams )* '}') |
      simpleFormalType ) terminator?
  ;
#31 Non-Variadic Formal Parameters
nonVariadicFormalParams :
  ( CONST | NEW | VAR )? identList ':' simpleFormalType
  ;

Implementation And Program Module Syntax

#32 Implementation Or Program Module
implOrPrgmModule :
  IMPLEMENTATION? MODULE moduleIdent ';'
  ( importList ';' )* block moduleIdent '.'
  ;
#33 Block
block :
  declaration* ( BEGIN statementSequence )? END
  ;
#34 Declaration
declaration :
  CONST ( Ident '=' constExpression ';' )+ |
  TYPE ( Ident '=' type ';' )+ |
  VAR ( variableDeclaration ';' )+ |
  procedureHeader ';' block Ident ';'
  ;
#35 Statement Sequence
statementSequence :
  statement ( ';' statement )*
  ;
#36 Statement
statement :
  memMgtOperation | updateOrProcCall | ifStatement | caseStatement |
  loopStatement | whileStatement | repeatStatement | forStatement |
  ( RETURN | YIELD ) expression? | EXIT
  ;
#37 Memory Management Operation
memMgtOperation :
  NEW designator ( OF initSize | := initValue )? |
  RETAIN designator |
  RELEASE designator
  ;
#37.1 Initial Size, Initial Value
initSize : expression ;

initValue : expression ;
#38 Update Or Procedure Call
updateOrProcCall :
  designator ( ':=' expression | incOrDecSuffix | actualParameters )? |
  COPY designator ':=' expression
  ;
#38.1 Increment Or Decrement Suffix
incOrDecSuffix :
  '++' | '--'
  ;
#39 IF Statement
ifStatement :
  IF boolExpression THEN statementSequence
  ( ELSIF boolExpression THEN statementSequence )?
  ( ELSE statementSequence )?
  END
  ;
#39.1 Boolean Expression
boolExpression : expression ;
#40 CASE Statement
caseStatement :
  CASE expression OF ( '|' case  )+ ( ELSE statementSequence )? END
  ;
#40.1 Case
case :
  caseLabels ( ',' caseLabels )* ':' statementSequence
  ;
#40.2 Case Labels
caseLabels :
  constExpression ( '..' constExpression )?
  ;
#41 LOOP Statement
loopStatement :
  LOOP statementSequence END
  ;
#42 WHILE Statement
whileStatement :
  WHILE boolExpression DO statementSequence END
  ;
#43 REPEAT Statement
repeatStatement :
  REPEAT statementSequence UNTIL boolExpression
  ;
#44 FOR Statement
forStatement :
  FOR forLoopVariants IN iterableEntity DO statementSequence END
  ;
#44.1 FOR Loop Variants
forLoopVariants :
  accessor ascOrDesc? ( ',' value )? |
  VALUE value ascOrDesc?
  ;
#44.2 Accessor, Value
accessor : Ident ;

value : Ident ;
#44.3 Iterable Entity
iterableEntity :
  designator | range OF ordinalType
  ;
#44.4 Ascender Or Descender
ascOrDesc : incOrDecSuffix ;
#44.5 Ordinal Type
ordinalType : typeIdent ;
#45 Designator
designator :
  qualident designatorTail?
  ;
#45.1 Designator Tail
designatorTail :
  ( ( '[' exprListOrSlice ']' | '^' ) ( '.' Ident )* )+
  ;
#45.2 Expression List Or Slice
exprListOrSlice :
  expression ( ( ',' expression )* | '..' expression? )
  ;
#46 Expression
expression :
  simpleExpression ( operL1 simpleExpression )?
  ;
#46.1 Level-1 Operator
operL1 :
  '=' | '#' | '<' | '<=' | '>' | '>=' | IN | concatOp | identityOp
  ;
#46.2 Concatenation Operator
concatOp : '&' ;
#46.3 Identity Operator
identityOp : '==' ;
#47 Simple Expression
simpleExpression :
  ( '+' | '-' )? term ( operL2 term )*
  ;
#47.1 Level-2 Operator
operL2 :
  '+' | '-' | OR
  ;
#48 Term
term :
  factorOrNegation ( operL3 factorOrNegation )*
  ;
#48.1 Level-3 Operator
operL3 :
  '*' | '/' | DIV | MOD | AND | setDiffOp | dotProductOp
  ;
#48.2 Set Difference Operator
setDiffOp : '\' ;
#48.3 Dot Product Operator
dotProductOp : '*.' ;
#49 Factor Or Negation
factorOrNegation :
  NOT? factorOrTypeConv
  ;
#50 Factor Or Type Conversion
factorOrTypeConv :
  factor ( '::' typeIdent )?
  ;
#51 Factor
factor :
  NumberLiteral | StringLiteral | structuredValue |
  '(' expression ')' | designator actualParameters?
  ;
#52 Actual Parameters
actualParameters :
  '(' expressionList ')'
  ;
#53 Expression List
expressionList :
  expression ( ',' expression )*
  ;
#54 Structured Value
structuredValue :
  '{' valueComponent ( ',' valueComponent )* '}'
  ;
#54.1 Value Component
valueComponent :
  constExpression (( BY | '..' )? constExpression )? | runtimeExpression
  ;
#54.2 Runtime Expression
runtimeExpression : expression ;

Blueprint Syntax

#55 Blueprint
blueprint :
  BLUEPRINT blueprintIdent ( '[' blueprintToRefine ']' )?
  ( FOR blueprintForTypeToExtend )? ';' ( REFERENTIAL identList ';' )?
  MODULE TYPE '=' ( typeClassification ( ';' literalCompatibility)? | NONE ) ';'
  ( constraint ';' )* ( requirement ';' )* END blueprintIdent '.'
  ;
#55.1 Blueprint Identifier
blueprintIdent : Ident ;
#55.2 Blueprint To Refine, Blueprint For Type To Extend
blueprintToRefine : blueprintIdent ;

blueprintForTypeToExtend : blueprintIdent ;
#56 Type Classification
typeClassification :
  '{' determinedClassification ( ';' refinableClassification )? ( ';' '*' )? '}'
  | '*'
  ;
#56.1 Determined Classification
determinedClassification :
  classificationIdent ( ',' classificationIdent )*
  ;
#56.2 Refinable Classification
refinableClassification :
  '~' classificationIdent ( ',' '~' classificationIdent )*
  ;
#56.3 Classification Identifier
classificationIdent : Ident ;
#57 Literal Compatibility
literalCompatibility :
  TLITERAL '=' protoLiteral ( '|' protoLiteral )*
  ;
#57.1 Proto-Literal
protoLiteral :
  protoLiteralIdent | structuredProtoLiteral
  ;
#57.2 Proto-Literal Identifier
protoLiteralIdent : Ident ;
#58 Structured Proto-Literal
structuredProtoLiteral :
  '{'
    ( ARGLIST reqValueCount? OF
        ( '{' builtinOrReferential ( ',' builtinOrReferential )* '}' |
          builtinOrReferential ) ) |
    builtinOrReferential '}'
  ;
#58.1 Required Value Count
reqValueCount :
  greaterThan? wholeNumber
  ;
#58.2 Greater Than
greaterThan : '>' ;
#58.3 Whole Number
wholeNumber : NumberLiteral ;
#58.4 Built-in Type Or Referential Identifier
builtinOrReferential : Ident ;
#59 Constraint
constraint :
  constraintTerm ( oneWayDependency | mutualDependencyOrExclusion )
  ;
#59.1 Constraint Term
constraintTerm :
  '(' classificationOrFlagIdent ')' |
  '[' bindableEntityOrProperty ']'
  ;
#59.2 Bindable Entity Or Property
bindableEntityOrProperty :
  entityToBindTo | propertyToBindTo
  ;
#59.3 One-Way Dependency
oneWayDependency :
  '->' termList ( '|' termList )*
  ;
#59.4 Mutual Dependency Or Exclusion
mutualDependencyOrExclusion :
  ( '<>' | '><' ) termList
  ;
#59.5 Term List
termList :
  constraintTerm ( ',' constraintTerm )*
  ;
#59.6 Classification Or Flag Identifier
classificationOrFlagIdent : Ident ;
#60 Requirement
requirement :
  condition '->' ( typeRequirement | constRequirement | procRequirement )
  ;
#60.1 Condition
condition :
  NOT? boolConstIdent
  ;
#60.2 Boolean Constant Identifier
boolConstIdent : Ident ;
#60.3 Type Requirement
typeRequirement :
  TYPE typeDefinition
  ;
#61 Constant Requirement
constRequirement :
  CONST
    ( '[' propertyToBindTo ']' ( simpleConstRequirement | '=' NONE ) |
      restrictedExport? simpleConstRequirement )
  ;
#61.1 Simple Constant Requirement
simpleConstRequirement :
  Ident ( '=' constExpression | ':' builtinTypeIdent )
  ;
#61.2 Constant Expression
constExpression : expression ;
#61.3 Built-in Type Identifier
builtinTypeIdent : Ident ;
#61.4 Restricted Export
restrictedExport : '*' ;
#62 Property To Bind To
propertyToBindTo :
  memMgtProperty | collectionProperty | scalarProperty | TFLAGS
  ;
#62.1 Memory Management Property
memMgtProperty :
  TDYN | TREFC
  ;
#62.2 Collection Property
collectionProperty :
  TORDERED | TSORTED | TLIMIT
  ;
#62.3 Scalar Property
scalarProperty :
  TSCALAR | TMAX | TMIN
  ;
#63 Procedure Requirement
procedureRequirement :
  PROCEDURE
    ( '[' ( entityToBindTo | COROUTINE ) ']' ( procedureSignature | '=' NONE ) |
      restrictedExport? procedureSignature )
  ;
#64 Entity To Bind To
entityToBindTo :
  bindableResWord | bindableOperator | bindableMacro
  ;
#64.1 Bindable Reserved Word
bindableResWord :
  NEW | RETAIN | RELEASE | COPY | bindableFor
  ;
#64.2 Bindable FOR
bindableFor :
  FOR forBindingDifferentiator?
  ;
#64.3 FOR Binding Differentiator
forBindingDifferentiator :
  '|' ( '++' | '--' )
  ;
#64.4 Bindable Operator
bindableOperator :
  '+' | '-' | '*' | '/' | '\' | '=' | '<' | '>' | '*.' | '::'
  IN | DIV | MOD | unaryMinus
  ;
#64.5 Unary Minus
unaryMinus : '+/-' ;
#64.6 Bindable Macro
bindableMacro :
  ABS | LENGTH | EXISTS | SEEK | SUBSET | READ | READNEW | WRITE | WRITEF |
  SXF | VAL | multiBindableMacro1 | multiBindableMacro2 | multiBindableMacro3
  ;
#64.7 Multi-Bindable Macro 1
multiBindableMacro1 :
  ( COUNT | VALUE ) bindingDifferentiator1?
  ;
#64.8 Binding Differentiator 1
bindingDifferentiator1 :
  '|' '#'
  ;
#64.9 Multi-Bindable Macro 2
multiBindableMacro2 :
  ( STORE | INSERT | REMOVE ) bindingDifferentiator2?
  ;
#64.10 Binding Differentiator 2
bindingDifferentiator2 :
  '|' ( ',' | '#' | '*' )
  ;
#64.11 Multi-Bindable Macro 3
multiBindableMacro3 :
  APPEND bindingDifferentiator3?
  ;
#64.12 Binding Differentiator 3
bindingDifferentiator3 :
  '|' ( ',' | '*' )
  ;