iEnv.declareKey("features", iNew.Proc((new k$features()).getClass(), 0)); iEnv.declareKey("level", iNew.Proc((new k$level()).getClass(), 0));
iEnv.declareKey("features", iNew.Proc( "&features", (new k$features()).getClass(), 0)); iEnv.declareKey("level", iNew.Proc( "&level", (new k$level()).getClass(), 0));
	void announce() {		// implemented in the compiler:		//	&fail		//	&file		//	&line		// (preserve that line format for the documentation extractor)				// constants		iEnv.declareKey("null", iNew.Null());		iEnv.declareKey("e", iNew.Real(Math.E));		iEnv.declareKey("phi", iNew.Real((1.0 + Math.sqrt(5.0)) / 2.0));		iEnv.declareKey("pi", iNew.Real(Math.PI));		iEnv.declareKey("version", 			    iNew.String("Jcon Version 0.4, Summer, 1997"));	    	// cset constants		vCset lcase, ucase;		iEnv.declareKey("digits", iNew.Cset('0', '9'));		iEnv.declareKey("lcase", lcase = iNew.Cset('a','z'));		iEnv.declareKey("ucase", ucase = iNew.Cset('A','Z'));		iEnv.declareKey("letters", lcase.Union(ucase));		iEnv.declareKey("ascii", iNew.Cset(0, 127));		iEnv.declareKey("cset", iNew.Cset(0, vCset.MAX_VALUE));		// read-only, but variable		iEnv.declareKey("clock", new k$clock());		iEnv.declareKey("current", new k$current());		iEnv.declareKey("date", new k$date());		iEnv.declareKey("dateline", new k$dateline());		iEnv.declareKey("host", new k$host());		iEnv.declareKey("main", new k$main());		iEnv.declareKey("source", new k$source());		iEnv.declareKey("progname", new k$progname());		// files		iEnv.declareKey("input",  new k$input());		iEnv.declareKey("output", new k$output());		iEnv.declareKey("errout", new k$errout());		//incestuous		k$subject s = new k$subject();		// &subject		k$pos p = new k$pos();			// &pos		s.pos = p;		p.subject = s;		s.Assign(iNew.String(""));		iEnv.declareKey("subject", s);		iEnv.declareKey("pos", p);		// error-related		iEnv.declareKey("error", new k$error());		iEnv.declareKey("errornumber", 			iNew.Proc((new k$errornumber()).getClass(), 0));		iEnv.declareKey("errortext", 			iNew.Proc((new k$errortext()).getClass(), 0));		iEnv.declareKey("errorvalue", 			iNew.Proc((new k$errorvalue()).getClass(), 0));		iEnv.declareKey("dump", new k$dump());		// generators		iEnv.declareKey("features", 			iNew.Proc((new k$features()).getClass(), 0));		iEnv.declareKey("level", 			iNew.Proc((new k$level()).getClass(), 0));		// bogus generators		vProc proc = iNew.Proc((new k$gen4zeros()).getClass(), 0);		iEnv.declareKey("allocated", proc);		iEnv.declareKey("collections", proc);		proc = iNew.Proc((new k$gen3zeros()).getClass(), 0);		iEnv.declareKey("regions", proc);		iEnv.declareKey("storage", proc);		// special behavior		iEnv.declareKey("trace", new k$trace());		iEnv.declareKey("random", new k$random());	}