--LexiconClient.mesa Edited by Rob Clemons March 29, 1979 10:51 PM DIRECTORY IODefs: FROM "iodefs" USING [CR, ReadChar, ReadLine, SP, WriteChar, WriteLine], LexiconDefs: FROM "lexicondefs" USING [AddString, FindString, PrintLexicon], StringDefs: FROM "stringdefs" USING [AppendChar, AppendString]; LexiconClient: PROGRAM IMPORTS IODefs, LexiconDefs, StringDefs = BEGIN OPEN IODefs, LexiconDefs, StringDefs; LineConvert: PROCEDURE [s: STRING] = BEGIN char: STRING _ [80]; c,d: CARDINAL; FOR c DECREASING IN [0..s.length) DO IF (s[c] = SP) THEN BEGIN FOR d IN [c+1..s.length) DO AppendChar[char,s[d]] ENDLOOP; s.length _ 0; AppendString[s,char]; RETURN; END; ENDLOOP; END; CommandProc: PROCEDURE = BEGIN s: STRING _ [80]; ch: CHARACTER; DO -- loop until stopped by user typing q or Q (last case below). WriteChar[CR]; WriteLine["Lexicon Command: "]; ch _ ReadChar[]; WriteChar[ch];-- Echo the character (ReadChar doesn't). SELECT ch FROM 'f, 'F => BEGIN WriteLine["ind: "]; -- terminal will read: "find: " ReadLine[s]; -- s will contain the string read from the terminal LineConvert[s]; IF FindString[s] THEN WriteLine[" -- found"] ELSE WriteLine[" -- not found"]; END; 'a, 'A => BEGIN WriteLine["dd: "]; -- terminal will read: "add: " ReadLine[s]; LineConvert[s]; AddString[s]; END; 'p, 'P => BEGIN WriteLine["rint lexicon"]; -- terminal will read: "print lexicon" WriteChar[CR]; PrintLexicon[]; END; 'q, 'Q => BEGIN WriteLine["uit"]; WriteChar[CR]; -- terminal will read: "quit" RETURN; END; ENDCASE =>WriteLine[" Commands are Find, Add, Print lexicon, and Quit"]; ENDLOOP; END; CommandProc[]; END.