--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.