Definition of the quirk21a subset of quirk21. Quirk21a is the subset of quirk21 obtained by omitting: type declarations sum and product types char and float types array types (other than literals of type char[]) assignments letrec expressions new expressions (for both array and sum/product types) case expressions field references array references char literals float literals all operations on char types all operations on float types all operations on array types String literals are permitted, but the only thing a program can do with them is pass them to a library procedure. The three library procedures are printString printInt printLine **************************************************************** Syntax of quirk21a. [Revision 0] Revision history: **************************************************************** ::= where ::= export from | export from where ::= variables | functions ::= = ::= = ::= | ::= | ::= | ::= boolean | int ::= ( -> ) ::= void | ::= lambda ( ) : . ::= : ::= | | let in | if then else | while do | for to do | begin end ::= | ::= | ::= | ::= | ::= | ::= | | ( ) | ::= | ( ) ::= true | false | stringliteral | intliteral ::= | ::= | , ::= | ::= | ; ::= | ::= | , ::= | ::= | ::= | ::= | * ::= | ::= | , ::= or ::= and ::= == | != | < | <= | > | >= ::= + | - ::= * | / ::= ! | - ::= id