procname = .id;
Functions are differentiated from procedures to aid compilers in
better code production and run time checks.
Functions return values.
Procedures do not return values.
Co-routines do not have names or arguments. Their initial
envocation points are given the pipe declaration.
It is not clear just how global declarations are to be??
DECLARATIONS
SYNTAX
declaration = numbertype / structuredtype / label / lcl2uhr /
uhr2rmt / pipetype;
numbertype = : ("REAL" / "INTEGER") ("CONSTANT" conlist /
varlist);
conlist =
.id '(left arrow symbol)constant
$('. .id '(left arrow symbol)constant);
varlist =
.id ('(left arrow symbol)constant / .empty)
$('. .id('(left arrow symbol)constant / .empty));
idlist = .id $('. .id);
structuredtype = (tree" / "pointer" / "buffer" ) idlist;
label = "LABEL1" idlist;
pipetype = PIPE" pairedids $(', pairedids);
pairedids = .id .id;
procname = .id;
integerv = .id;
pipename = .id;
labelv = .id;
Variables which are declared to be constant, may be put in
read-only memory at run time.
The label declaration is to declare cells which may contain the
machine addresses of labels in the program as their values. This
is not the B5500 label declaration.
In the pipe declaration the first .ID of each pair is the name of
the pipe, the second is thke initial starting point for the pipe.
ARITHMETIC
SYNTAX
exp = "IF" conjunct "THEN" exp "ELSE" exp;
sum = term (
'+ sum /
'- sum /
-empty);
term = factor (
'* term /
'/ term /
'(up arrow symbol) term /
.empty);
factor = '- factor / bitop;
bitop = compliment (
'/' bitop /
'/'\ bitop /
'& bitop / (
.empty);
=5= |