Description This compiler implements 1 Comma expressions for initialisation and increment in for loops 2 Nested function declarations 3 Type declarations 4 Enumerated type notation 5 Check for redeclaration of identifiers in the enumerated type. Enumerated type members in different environment from environment in which enumerated type created. 6 Member selection for enumerated types 7 Conversion of an enumerated type to a string 8 Addition/subtraction of enumerated type values and increment/decrement of enumerated type variables 9 Comparison of enumerated types 10 Set type declaration 11 Set constructors 12 Set union, difference, intersection, and complement 13 Set membership 14 Comparisons of sets 15 Switch statements with integer, char, and enumerated type values 16 Structured type notation 17 Recursively defined structured types (but not mutual recursion, and not multiple denotations of such types). 18 Field selection 19 Constructors for structures But does not implement 20 Sets of integers 21 For loops to iterate through sets It implements member selection of enumerated types so as to permit field selection as well. To get a more basic implementation, comment out the grammar rule for field selection, and uncomment the rule for member selection. This has the effect of using the code for MemberNode rather than FieldVariableNode. I have deleted the section parameter from genEnv - it was never necessary, and confused some people. I have moved the creation of declarations into genEnv. However, declarations are created without a type. I have replaced genDecl by setType, that sets the type for a declaration, after it has been declared. This reorganisation enables the implementation of mutually recursive types, although I have never checked whether my implementation actually works. It is certainly true that checking that two recursive types are equivalent does not work correctly. The algorithm will go into infinite recursion. Programs for testing the main rerquired features are in MarkPrograms, and markrunall.bash compiles and runs these programs. Bruce Hutton