DIRECTORY Commander USING [CommandProc, Register], CommandTool USING [ArgumentVector, Failed, Parse], FS USING [Error, StreamOpen], IO USING [STREAM, PutF, PutRope, rope], ArpaLex822, Rope USING [ROPE, Cat, Length, Equal]; ArpaTestLex: CEDAR PROGRAM IMPORTS Commander, CommandTool, FS, IO, Rope, ArpaLex822 = BEGIN LexMessage: Commander.CommandProc = { argv: CommandTool.ArgumentVector = CommandTool.Parse[cmd ! CommandTool.Failed => {cmd.out.PutRope[errorMsg]; GOTO GoAway}]; file: IO.STREAM _ FS.StreamOpen[argv[1] ! FS.Error => {cmd.out.PutRope[error.explanation]; GOTO GoAway}]; token, whiteSpace: Rope.ROPE; tokType: ArpaLex822.TokenType; DO token _ ArpaLex822.LexFieldName[file].fieldName; IF Rope.Equal[token, "\n"] THEN ERROR ELSE IF token.Length[] = 0 THEN EXIT; cmd.out.PutRope[token.Cat["\n"]]; DO [token, whiteSpace, tokType] _ ArpaLex822.LexToken[file]; IF tokType = errorTok THEN cmd.out.PutRope["** Error **\n "]; cmd.out.PutF["\"%h\", \"%h\"\n", IO.rope[whiteSpace], IO.rope[token]]; IF tokType = EOLTok THEN EXIT; ENDLOOP; ENDLOOP; EXITS GoAway => NULL }; Commander.Register["ArpaLex822", LexMessage, "Do a lexical analysis of a message (in a file)."]; END. ϊArpaTestLex.mesa, test program for ArpaLex822. Last edited by Nichols.pa, June 7, 1983 4:55 pm Last Edited by: Taft, September 13, 1983 10:41 am Last edited by HGM, February 27, 1984 9:29:38 pm PST John Larson, October 10, 1987 6:09:12 pm PDT ΚΘ˜headšœ.™.Ibody™/L™1LšœΟkœ™4Lšœ,™,code2š ˜ Mšœ œ˜(Mšœ œ!˜2Mšœœ˜Mšœœœ˜'Mšœ ˜ Mšœœœ˜&——šΟn œœ˜Mšœœœ˜8Mšœ˜šž œ˜%šœ:˜:Mšœ2œ ˜@—šœœœœ˜)Mšœ/œ ˜?—Mšœœ˜Mšœ˜M˜š˜Mšœ0˜0Mšœœ˜%Mšœœœœ˜%Mšœ!˜!š˜Mšœ9˜9Mšœœ#˜=Mšœ!œœ˜FMšœœœ˜Mšœ˜—Mšœ˜—š˜Mšœ ˜—M˜—Mšœ`˜`Mšœ˜——…—š\