// // $Id$ // //******************************************************************* // lparser.cls: Sor elemz“. A PARSER-t“l ”r”k”l. // 1999, Csisz r Levente // Ez az elemz“ vonja ”ssze a folytat˘ sorokat. // Mindig egy sort t rol a sorv‚gjellel egytt. // A sorokon a k”vetkez“ transzform ci˘kat v‚gzi el (a sorrend // fontos!). // // - '//', '&&' ‚s a '*' kommenteket eldobja. // - A '/*' kommentekben csak a cr-eket ‚s az lf-eket hagyja meg, // ‚s a tokent <res>-re v ltoztatja. // - Az egym s ut n k”vetkez“ <res>-eket ”sszevonja. // - Megcsin lja a k”vetkez“ ”sszevon st. // Az <£jsor>-t a fil‚ eleje is helyettesĦtheti. // // <£jsor> ';' [<res>] <£jsor> <res2> ==> // <£jsor> <£jsor> ' ' // // <£jsor> ';' [<res>] <£jsor> ==> // <£jsor> <£jsor> // // A b rmilyen token sorozat lehet, amiben nem szerepel // ';' ‚s <£jsor>. // // A b rmilyen token lehet, kiv‚ve az <res> tokent. // // Ha egy sor ress‚ v lik, akkor az "" form ban kell kiĦrni. // Ezt a hĦv˘nak kell kezelnie, itt neh‚zkes. class LPARSER PARSER rmethod readInput() // Kisz–ri az egy soros megjegyz‚seket ‚s  talakĦtja a // '/*'-osakat nmethod readLine() // Bolvas egy teljes sort a parserBuffer-be. Az egy soros // megjegyz‚seket eldobja, a t”bb sorosakat pedig feldolgozza // £gy, hogy azonos mennyis‚g– £j sort helyez el a parseBuffer // elej‚re. A folytat˘ sorokat ”sszevonja. rmethod readItem() // Olvas egy elemet. // Ret: Az elem, ha OK, nil, ha v‚ge van a streamnek, vagy ha // hiba volt. // rmethod oinit(inputReader,name) metaclass // rmethod onew(inputReader,name)