// LEX2 GET "SYNHDR" LET D(S, ITEM) BE $( UNPACKSTRING(S, CHARV) WORDSIZE := PACKSTRING(CHARV, WORDV) LOOKUPWORD() WORDNODE!0 := ITEM $) AND DECLSYSWORDS() BE $( D("AND", S.AND) D("ABS", S.ABS) D("BE", S.BE) D("BREAK", S.BREAK) D("BY", S.BY) D("CASE", S.CASE) D("DO", S.DO) D("DEFAULT", S.DEFAULT) D("EQ", S.EQ) D("EQV", S.EQV) D("ELSE", S.OR) D("ENDCASE", S.ENDCASE) D("FALSE", S.FALSE) D("FOR", S.FOR) D("FINISH", S.FINISH) D("GOTO", S.GOTO) D("GE", S.GE) D("GR", S.GR) D("GLOBAL", S.GLOBAL) D("GET", S.GET) D("IF", S.IF) D("INTO", S.INTO) D("LET", S.LET) D("LV", S.LV) D("LE", S.LE) D("LS", S.LS) D("LOGOR", S.LOGOR) D("LOGAND", S.LOGAND) D("LOOP", S.LOOP) D("LSHIFT", S.LSHIFT) D("MANIFEST", S.MANIFEST) D("NE", S.NE) D("NOT", S.NOT) D("NEQV", S.NEQV) D("NEEDS", S.NEEDS) D("OR", S.OR) D("RESULTIS", S.RESULTIS) D("RETURN", S.RETURN) D("REM", S.REM) D("RSHIFT", S.RSHIFT) D("RV", S.RV) D("REPEAT", S.REPEAT) D("REPEATWHILE", S.REPEATWHILE) D("REPEATUNTIL", S.REPEATUNTIL) D("SECTION", S.SECTION) D("SWITCHON", S.SWITCHON) D("STATIC", S.STATIC) D("TO", S.TO) D("TEST", S.TEST) D("TRUE", S.TRUE) D("THEN", S.DO) D("TABLE", S.TABLE) D("UNTIL", S.UNTIL) D("UNLESS", S.UNLESS) D("VEC", S.VEC) D("VALOF", S.VALOF) D("WHILE", S.WHILE) D("$", 0); NULLTAG := WORDNODE $) AND LOOKUPWORD() = VALOF $(1 LET HASHVAL = (WORDV!0+WORDV!WORDSIZE >> 1) REM NAMETABLESIZE LET M = @NAMETABLE!HASHVAL NEXT: WORDNODE := !M UNLESS WORDNODE=0 DO $(2 FOR I = 0 TO WORDSIZE DO IF WORDNODE!(I+2) NE WORDV!I DO $( M := WORDNODE+1 GOTO NEXT $) RESULTIS WORDNODE!0 $)2 WORDNODE := NEWVEC(WORDSIZE+2) WORDNODE!0, WORDNODE!1 := S.NAME, NAMETABLE!HASHVAL FOR I = 0 TO WORDSIZE DO WORDNODE!(I+2) := WORDV!I NAMETABLE!HASHVAL := WORDNODE RESULTIS S.NAME $)1 .