1 4 package gnu.kawa.lispexpr; 5 import gnu.text.Lexer; 6 import gnu.text.SyntaxException; 7 import gnu.lists.PairWithPosition; 8 9 public class ReaderQuote extends ReadTableEntry 10 { 11 Object magicSymbol; 12 char next; 13 Object magicSymbol2; 14 15 16 public ReaderQuote(Object magicSymbol) 17 { 18 this.magicSymbol = magicSymbol; 19 } 20 21 24 public ReaderQuote(Object magicSymbol, char next, Object magicSymbol2) 25 { 26 this.next = next; 27 this.magicSymbol = magicSymbol; 28 this.magicSymbol2 = magicSymbol2; 29 } 30 31 public Object read (Lexer in, int ch, int count) 32 throws java.io.IOException , SyntaxException 33 { 34 LispReader reader = (LispReader) in; 35 String file = reader.getName(); 36 int line1 = reader.getLineNumber() + 1; 37 int column1 = reader.getColumnNumber() + 1; 38 Object magic = magicSymbol; 39 if (next != '\0') 40 { 41 ch = reader.read(); 42 if (ch == next) 43 magic = magicSymbol2; 44 else if (ch >= 0) 45 reader.unread(ch); 46 } 47 int line2 = reader.getLineNumber() + 1; 48 int column2 = reader.getColumnNumber() + 1; 49 Object operand = reader.readObject(); 50 return PairWithPosition.make(magic, 51 PairWithPosition.make(operand, 52 reader.makeNil(), 53 file, line2, column2), 54 file, line1, column1); 55 } 56 } 57 | Popular Tags |