*phylum*: *Operator*( *sub-phyla* ) | ... ;

(we borrowed this syntax to define *phyla* from SSL
(the *Synthesizer Specification Language* that is the input language
of the *Synthesizer Generator*,
a system to generate language-based editors))

The abstract syntax for our language can defined as follows:

We expect here only non-negative

expr: Const( int ) /*intis predefined */ | Plus( expr expr ) | Times( expr expr ) ;

`int`

values, if needed we can check for this.
Note that parentheses are implied
by the form (structure) of the tree -- with the Phyla can have attributes, as we will see later.

`(1 + 1) * (1 + 1)`

we can write:

expr e = Times( Plus( Const( 1 ), Const( 1 )), Plus( Const( 1 ), Const( 1 )) );

Last updated at 03 February '98 by