APPENDIX 3: SYNTAX DEFINITIONS IN ALPHABETICAL ORDER
αaccsyn ::= αidentifier SYN αacc {α=x|r|xx|rr}
αaccsyndec ::= ACC αaccsynlist, αaccsyn {α=x|r|xx|rr}
αaccsynlist ::= αaccsyn|αaccsynlist, αaccsyn {α=x|r|xx|rr}
αcell ::= simpleαcell|smoαcell {α=x|r|xx|rr}
αcelldec ::= αtype αitemlist; {α=x|r|xx|rr}
αcellsyndec ::= αtype αsynlist; {α=x|r|xx|rr}
αfixedcell ::= αidentifier|αidentifier(integer)|αidentifier(-integer) {α=x|r|xx|rr}
αidentifier ::= identifier {α=x|r|xx|rr}
αinitial ::= αvalue {α=r|xx|rr}
αinitiallist ::= αinitial|αinitial*integer|αinitiallist,αinitial|
αinitiallist, αinitial*integer {α=x|r|xx|rr}
αitem ::= αidentifier|αidentifier=αinitial|αidentifier(integer)|
αidentifier(integer)=(αinitiallist) {α=x|r|xx|rr}
αitemlist ::= αitem|αitemlist, αitem { α= x|r|xx|rr}
αrelationex ::= αacc relation αprimary {α=r|xx|rr}
αsyn ::= αidentifier SYN fixedcell|αidentifier SYN(integer)|
αidentifier SYN (integer)=αinitial {α=x|r|xx|rr}
αsynlist ::= αsyn|αsynlist, αsyn {α=x|r|xx|rr}
accsyndec ::= xaccsyndec|raccsyndec|xxacsyndec|rracsyndec
addop ::= +|-|++|--
address ::= wordaddress | CHAR integer | CHAR integer OF wordaddress | @ identifier
addto ::= ADDTO (file. subfile)|ADD TO (file. subfile)
andexpression ::= condition AND condition|andexpression AND condition
aop ::= +|-|*|/
assignment ::= xassignment|rassignment|xxassignntent|rrassignment
basedec ::= BASE;
basicfixed ::= @fixedcell|$fixedcell|£identifier
basicsymbol ::= char|reservedword|'|"
block ::= BEGIN blockbody label? END|BEGIN declist blockbody label? END
blockbody ::= statement;|blockbody statement;
blockidentifier ::= identifier
casestatement ::= CASE modifier OF statementlist CASEND
cell ::= xcell|rcell|xxcell|rrcell
cellassignment ::= xcellassignment|rcellassignment|xxcellassignment|rrcellassignment
celldec ::= xcelldec|rcelldec|xxcelldec|rrcelldec
celldeclist ::= celldec|celldeclist celldec
cellidentifier ::= upperidentifier|loweridentifier
cellsyndec ::= xcellsyndec|rcellsyndec|xxcellsyndec|rrcellsyndec
ch ::= char|''|_|"
char ::= letter|digit|+|-|*|/|<|=|>|#|,|.|;|:|@|&|%|(|)|[|]|£|$|?|!
charel ::= <CH|>CH|≤CH|≥CH
charsequence ::= 'ch'|'ch ch'|'ch ch ch'|'ch ch ch ch'
complexstatement ::= ifstatement|forstatement|whilestatement|includestatement|
label complexstatement
conditcomp ::= ?integer(section of program)?integer
condition ::= relationex|OVERFLOW|FOVERFLOW|CARRY|NOT OVERFLOW|NOT FOVERFLOW|NOT CARRY
coperand ::= integer|octalinteger|modifier|simplexcell
count ::= integer CNT
compilesmo ::= COMPILESMO
datastatement ::= DATA initial|DATA(initiallist)
dec ::= accsyndec|cellsyndec|definedec|externaldec|
nonplasyddec|proceduredec|puredec|storagedec
declist ::= dec|declist dec
defbasic ::= integer|identifier
defexpr ::= defprim|defprim aop defbasic
definedec ::= DEFINE deflist ;
definestat ::= DEFINE deflist ;
deflist ::= identifier=defexpr|deflist, identifier=defexpr
defprim ::= defbasic|$fixedcellidentifier|@fcd-@fcd|
£upperidentifier-£upperidentifier|
£loweridentifier-£loweridentifier|
@instruction identifier-@instruction identifier
digit ::= 0|1|2|3|4|5|6|7|8|9
dumpon ::= DUMPON (file)|DUMP ON (file)
exponent ::= integer|MINUS integer
extendedcell ::= cell|upperidentifier (integer)|upperidentifier (-integer)
externaldec ::= EXTERNAL externallist;
externallist ::= spec|externallist, spec
fcd ::= integer|identifier(integer)|identifer(-integer)
fidone ::= BRN|BVS|BVSR|BVC|BVCR|BCS|BCC|BVCI|SUSTY|DISTY|
DELTY|SUSWT|DISP|DEL|OBEY|MODE|FIX|SFPZ|SMO|
STOZ|ACT|RMS
fidsimple ::= NULL|SUSAR|LFPZ
fidtwo ::= SFP|SUSBY|REL|DIS|CONT|SUSDP|ALLOT|PERI|SUSMA|
AUTO|SUSIN|GIVE|RRQ|LDX|ADX|NGX|SBX|LDXC|ADXC|
NGXC|SBXC|STO|ADS|NGS|SBS|STOC|ADSC|NGSC|SBSC|
ANDX|ORX|ERX|LDCH|LDEX|TXU|TXL|ANDS|ORS|ERS|
DCH|DEX|DSA|DLA|MPY|MPR|MPA|CDB|DVD|DVR|DVS|
CBD|BZE|BNZ|BPZ|BNG|BUX|BDX|BCHX|BCT|CALL|EXIT|
BFP|LDN|ADN|NGN|SBN|LDNC|ADNC|NGNC|SBNC|SLC|SLL|
SLA|SRC|SRL|SRA|SRAV|NORM|MVCH|SLC2|SLL2|SLA2|
SRC2|SRL2|SRA2|SRAV2|ANDN|ORN|ERN|LDCT|MOVE|SUM|
FLOAT|DAF|FSB|FMPY|FDVD|LFP
file ::= filename|filename (integer)
fixedaddress ::= basicfixed|CHAR integer|CHAR integer OF basicfixed|
@identifier|@lidentifier
fixedcell ::= xfixedcell|xxfixedcell|rfixedcell|rrfixedcell
forstatement ::= FOR xassignment STEP increment UNTIL xprimary DO statement
fraction ::= integer . digit|fraction digit
functionstatement ::= simplef|oneargf|twoargf
gl ::= GLABEL:
gldeclist ::= blockidentifier : simpledeclist| gldeclist blockidentifier : simpledeclist
globaldec ::= GLOBAL gldeclist GLOBEND;
globalseg ::= GLOBAL SEGMENTS
::= blockidentifier : simpledeclist|gldeclist blockidentifier:simpledidist
gotostatement ::= GOTO lidentifier|GOTO pidentifier|
GO TO lidentifier|GO TO pidentifier
identifier ::= letter|%|identifier letter|identifier digit|identifier %
ifstatement ::= IF logicalexpression THEN simplestatement ELSE statement|
IF logicalexpression THEN statement
ignore ::= IGNORE (updown)
includestat ::= INCLUDE(subfilename)|INCLUDE(subfilename, SL)
increment ::= xprimary|-xprimary|CHAR
initial ::= xinitial|rinitial|xxinitial|rrinitial
initiallist ::= initial|initial*integer|initiallist,initial|
initiallist, initial*integer
instridentifier ::= lidentifier|pidentifier
integer ::= digit|integer digit
label ::= gl? lidentifier:|ENTRY digit:
letter ::= A|B|C|D|E|F|G|H|I|J|K|L|M|N|O|P|Q|R|S|T|U|V|W|X|Y|Z
libfile ::= LIBRARY (file. subfile)
lidentifier ::= identifier
listlevel ::= LIST|SHORTLIST|NOLIST
local ::= LOCAL localtail
localseg ::= LOCAL SEGMENTS
localtail ::= ALL|: namelist|ALL BUT:namelist
logical ::= AND|OR|ER
logicalexpression ::= andexpression|orexpression|condition
lowerαidentifier ::= identifier {α=x|r|xx|rr}
loweridentifier ::= lowewrxidentifier|lowerridentifier|lowerxxidentifier|lowerrridentifier
lowerdec ::= LOWER lwdeclist LOWEND;
lowerglobaldec ::= GLOBAL lowergldeclist GLOBEND;
lowergldeclist ::= blockidentifier:celldeclist|lowergldeclist blockidentifier:celldeclist
lwdeclist ::= celldec|lowerglobaldec|lwdeclist celldec|lwdeclist lowerglobaldec
macrofile ::= MACROFILE (file)
mda ::= 15AM|22AM
mdb ::= DBM|EBM
mdc ::= 15CH|22CH|MIXAM
mdd ::= 15AM|22AM|MIXAM
mde ::= DBM|EBM|MIXBM
modifer ::= X1|X2|X3
monadic ::= NEG|EX|CH|CARRY|NEG CARRY
nameline ::= NAME (name)
namelist ::= name, namelist|name
nonplasyddec ::= NONPLASYD externallist;
nonplasydstatement ::= pidentifier|lidentifier|pidentifier(integer)|lidentifier(integer)
nparam ::= simplecell|integer|octalinteger|charsequence|
pidentifier|lidentifier
numberlist ::= integer, nunberlist|integer
obeystatement ::= OBEY xcell
octaldigit ::= 0|1|2|3|4|5|6|7
octalinteger ::= #octaldigit|octalinteger octaldigit
oneargf ::= !fidone (nparam)
orexpression ::= condition OR condition|orexpression OR condition
overlay ::= OVERLAY (integer, integer) namelist
overcommon ::= OVERCOMMON (integer) namelist
partaddress ::= £cellidentifier|$cellidentifier
partop ::= EX|SA|LA|CH
pidentifier ::= identifier
pmodedescrip ::= mdα, mdβ, mdδ|mdα, mdβ|mdα
priority ::= PRIORITY (integer)
proceduredec ::= gl? PROCEDURE pidentifier (xacc ret?);statement;
procedurestatement ::= lidentifier|pidentifier
progeven ::= PROGEVEN (UPDOWN)
progmode ::= PROGRAM MODE (pmodedescrip)
program ::= statement
publicfile ::= PUBLICFILE (file)
puredec ::= PURE storagedeclist PUREND;
racc ::= A1
rarithmetic ::= +|-|*|/
rassignment ::= A1:=rprimary|A1:=A1|A1:=NEG rprimary|
rassignment FROM rprimary|rassignment UNDER rprimary|
rassignment rarithmetic rprimary
rcell ::= simplercell | (simplesmo)
rcellassignment ::= rcell:=A1|rcell:=0.0
readfrom ::= READ FROM (subdescrip)
real ::= fraction|fraction & exponent|integer & exponent
relation ::= <|>|≤|≥|NOT=|=
relationex ::= xrelationex|rrelationex|xxrelationex|rrrelationex
reservedword ::= ACC|AND|A1|A2|
BASE!BEGIN|
CARRY|CASE|CASEND|CH|CHAR|CNT
DATA|DEFINE|DO|
ELSE|END|ENTRY|ER|EX|EXTERNAL
FIX|FLOAT|FOR|FOVERFLOW|FROM|FUNCTION|
GLABEL|GLOBAL|GLOBEND|GO|GOTO|
IF|INCLUDE|INTEGER|
LA|LOGICAL|LONG|LOWEND|LOWER|
MINUS|
NEG|NONPLASYD|NOT=|NULL|
OBEY|OF|OR|OVERFLOW|
PROCEDURE|PURE|PUREND|
REAL|RETURN|
SA|SLA|SLC|SLL|SRA|SRAV|SRC|SRL|STEP|SYN|
THEN|TO|TOPGLOBAL|
UNDER|UNTIL|
WHILE|X0|X1|X2|X3|X4|X5|X6|X7|
X01|X12|X23|X34|X45|X56|X67|X70|
<CH|>CH|<=CH|>=CH|<=|>=|
:=|++|--|''|""
ret ::= ,integer
returnstatement ::= RETURN|RETURN(integer)
rprimary ::= rvalue|rcell
rracc ::= A12
rrarithmetic ::= +|-|*|/
rrassignment ::= A12:=rrprimary|A12:=NEG rrprimary|A12:=A12|
rrassignment rrarithmetic rrprimary
rrcellassignment ::= rrcell:=A12
rrprimary ::= rrvalue|rrcell
rrtype ::= LONG REAL
rrvalue ::= real L|MINUS real L
rtype ::= REAL
rvalue ::= real|MINUS real
samexcellassign ::= xcell:=xcell
samexxcellassign ::= xxcell:=xxcell
segeven ::= SEGEVEN (updown)|SEGEVEN
segment ::= program|proceduredec
segments ::= SEGMENTS
segmode ::= SEGMENT MODE (smodedescrip)
semifile ::= SEMICOMPILED (file. subfile)
sendto ::= SENDTO (file. subfile)|SEND TO (file. subfile)
shift ::= SLL|SRL|SLA|SRA|SRAV|SLC|SRC
simpleαcell ::= lowerαidentifier|lowerαidentifier(integer)|
lowerαidentifier(-integer)|(integer)|(modifier)|
(modifier + integer)|αidentifier(modifier)|
αidentifier(modifier+integer)|
αidentifier(modifier-integer) {α=x|r|xx|rr}
simplecell ::= xcell|rcell|xxcell|rrcell
simpledeclist ::= celldec|basedec|simpledeclist celldec|simpledeclist basedec
simplef ::= !fidsimple
simplesmo ::= simpleαcell|£upperidentifier|blockidentifier
simplestatement ::= assignment|cellassignment|functionstatement|nonplasydstatement|
procedurestatement|casestatement|block|gotostatement|returnstatement|
datastatement|obeystatement|NULL|label simplestatement
smoαcell ::= (simplesmo)|(simplesmo+integer)|(simplesmo+modifier)|
(simplesmo+modifier+integer)| αidentifier(simplesmo)|
αidentifier(simplesmo+integer)|αidentifier(simplesmo+modifier)|
αidentifier(simplesmo+modifier+integer) {a=x|r}
smodedescrip ::= mdα, mdβ|mdα
smomacro ::= SMOMACRO
spec ::= pidentifier|lidentifier|pidentifier(xacc)|lidentifier(xacc)
st ::= char|""|_|'
statement ::= simplestatement|complexstatement
statementlist ::= statement;|statementlist statement;
stlist ::= st|stlist st
storagedec ::= celldec|basedec|lowerdec|globaldec|topglobaldec|lowerglobaldec
storagedeclist ::= storagedec|storagedeclist storagedec
storeop ::= NEG|CARRY|NEG CARRY
string ::= "stlist"
subdescrip ::= file. subfile|file|. subfile
subfile ::= subfilename|subfilename (integer)
subfilename ::= identifier . identifier
switch ::= SWITCH(numberlist)
tabset ::= TAB integer
topglobaldec ::= TOPGLOBAL blockidentifier:simpledeclist GLOBEND;
truncated ::= integer T integer|MINUS integer T integer
trusted ::= TRUSTED (integer)
twoargf ::= !fidtwo (xparam, nparam) | !fidtwo(,nparam)
updown ::= UPPER, LOWER|LOWER, UPPER|UPPER|LOWER
upperαidentifier ::= identifier {α=x|r|xx|rr}
upperidentifier ::= upperxidentifier|upperridentifier|upperxxidentifier|upperrridentifier
whilestatement ::= WHILE logicalexpression DO statement|DO statement
wordaddress ::= $ extendedcell|@ extendedcell|£ identifier
xacc ::= X0|X1|X2|X3|X4|X5|X6|X7
xarithmetic ::= +|++|-|--|*|/
xasgn ::= X0:=X0|X1:=X1|X2:=X2|X3:=X3|X4:=X4|X5:=X5|X6:=X6|X7:=X7
xassignment ::= xacc:=xprimary|xacc:=address|xasgn + address|
xasgn-wordaddress|xacc:=monadic xprimary|
xacc:=CNT coperand|xassignment xarithmetic xprimary|
xassignment logical xprimary|xassignment shift coperand
xcell ::= simplexcell | (simplesmo)
xcellassignment ::= xcell:=xacc|xcell:=0|xcell:=storeop xacc|
xcell:=partop xacc|samexcellassign|xcellassignment addop xcell|
xcellassignment logical xacc
xinitial ::= xvalue|string|fixedaddress|functionstatement|
count+fixedaddress|count+integer|count+truncated|
count+octalinteger
xparam ::= octaldigit|xacc|xcell|
xprimary ::= xvalue|xacc|xcell
xrelationex ::= xacc relation xprimary|xacc relation partaddress|xacc charel xprimary
xtype ::= INTEGER | LOGICAL
xvalue ::= integer|MINUS integer|octalinteger|truncated|count|charsequence|string
xxacc ::= X01|X12|X23|X34|X45|X56|X67|X70
xxarithmetic ::= +|-|++|--
xxassignment ::= xxacc:=xxprimary|xxacc:=NEG xxprimary|
xxassignment xxarithmetic xxprimary|xxacc:=xprimary|
xxassignment shift coperand
xxcellassignment ::= xxcell:=xxacc|xxcell:=0|xxcell:=NEG xxacc|
samexxcellassign|xxcellassignment addop xxacc
xxprimary ::= xxvalue|xxacc|xxcell
xxtype ::= LONG INTEGER
xxvalue ::= integer D|MINUS integer D|octalinteger D]