package language; public class ReadLine extends ReadS { public boolean readCommentLine() { if(!(rCh('\'')|| rCh('#'))) return false; // this line is a comment while(!isEOL()){ if(in.isEmpty()) break; int dmy=in.get(); } boolean b=readEOL(); x=lisp.nilSymbol; return true; } public boolean readStringConst() { int dmy; String buff=""; if(!rCh('"')) return false; char c=(char)(in.prevRead1()); int cx=(int)c; while(true){ if(c=='\\') { dmy=in.get(); c=(char)(in.prevRead1()); dmy=in.get(); buff=buff+c; } else if(c=='"'){ dmy=in.get(); break; } else if(c=='\n'){ return false; } else if(c=='\0'){ return false; } else if(c=='\r'){ return false; } else if((int)c==65535){ return false; } else{ buff=buff+c; dmy=in.get(); c=(char)(in.prevRead1()); cx=(int)c; } } x=new MyString(buff); return true; } public synchronized LispObject readProgram(CQueue i) { in=i; LispObject rtn=lisp.nilSymbol; while(!in.isEmpty()){ if(readCommentLine()) {} else{ while(isEOL()){ if(in.isEmpty()) break; readEOL(); } LispObject line=readLine(); rtn=lisp.nconc(rtn,line); } } return rtn; } public int sizeOfReservedWord; public int sizeOfBreakSymbols; public ReadLine() { } public synchronized LispObject readLine(CQueue i) { in=i; if(readCommentLine()) return lisp.nilSymbol; else return readLine(); } public boolean readEOL() { if(in.isEmpty()) return true; while(isEOL()) { if(in.isEmpty()) return true; int c=in.get(); } return true; } public boolean rSymbol() { clearName(); // if(rNumOpr()) return true; if(!rA()) return false; while(rA()||rNum()) { dmy(); } if(isReserved(name)) x=lisp.recSymbol(name); else{ LispObject u,v; u=lisp.recSymbol(name); v=lisp.cons(u,lisp.nilSymbol); x=lisp.cons(lisp.recSymbol("name"),v); } return true; } public boolean isEOL() { if(in.isEmpty()) return true; int c=in.prevRead1(); if((char)c=='\n') return true; if((char)c=='\r') return true; return false; } public boolean isReserved(String s) { int i; for(i=0;i