ReaderColon.java 886 B

123456789101112131415161718192021222324252627282930
  1. // Copyright (c) 2010 Per M.A. Bothner
  2. // This is free software; for terms and warranty disclaimer see ./COPYING.
  3. package gnu.kawa.lispexpr;
  4. import gnu.text.*;
  5. import gnu.lists.*;
  6. public class ReaderColon extends ReadTableEntry
  7. {
  8. public int getKind() { return ReadTable.NON_TERMINATING_MACRO; }
  9. public Object read (Lexer in, int ch, int count)
  10. throws java.io.IOException, SyntaxException
  11. {
  12. LispReader reader = (LispReader) in;
  13. ReadTable rtable = ReadTable.getCurrent();
  14. int startPos = reader.tokenBufferLength;
  15. if (ch == rtable.postfixLookupOperator)
  16. {
  17. int next = reader.read();
  18. if (next == ':')
  19. return rtable.makeSymbol("::");
  20. // Force an initial ':' to be treated as a CONSTITUENT.
  21. reader.tokenBufferAppend(ch);
  22. ch = next;
  23. }
  24. return reader.readAndHandleToken(ch, startPos, rtable);
  25. }
  26. }