// // $Id$ // //******************************************************************* // nparser.cls: N‚v elemz“. A PARSER-t“l ”r”k”l. // 1999, Csisz r Levente // Ez az elemz“ v‚gzi el az alapvet“ elemz‚seket, felbontja az input // stream-et a k”vetkez“ tokenekre: // - N‚v // - sz msor (nincs benne pont '.') // - šres // - Megjegyz‚s (csillag, perper, percsillag) // - String (macskak”rm”s, id‚z“jeles) // - —jsor // - Karakter. // Az egy‚b tokenek mindig pontosan egy karakteresek. // A karaktereken kĄvl meg‚rti a k”vetkez“ egys‚geket: // CTK_BOS,CTK_EOS,CTK_PRINTLINE // Az EOS-ra kld egy Łj sor karatert // Mj.: A ';' kezel‚s‚t ‚s a sor ”sszevon sokat az lparser elemz“ // csin lja. class NPARSER PARSER // attrib item // attrib buf attrib soreleje attrib tokenPos // Egy Łj token olvas sakor a {file,line,pos}-t // ide letesszk. A makeToken ebb“l dolgozik. rmethod readItem() // Olvas egy elemet. // Ret: Az elem, ha OK, nil, ha v‚ge van a streamnek, vagy ha // hiba volt. nmethod strEolParserBuffer() // Megadja a parserBuffer tartalm t stringk‚nt. // A nem stringeket az eol kiv‚tel‚vel eldobja. nmethod makeToken(tkId,str) // K‚szĄt egy tkId tĄpusŁ tokent 'str' tartalommal. nmethod makeTokenSt(tkId,stArray) // K‚szĄt egy tkId tĄpusŁ tokenstr-t az stArray-nak megfelel“en. nmethod makeTokenLSt(tkId,stArray) // K‚szĄt egy tkId tĄpusŁ tokenstr-t az stArray-nak megfelel“en. // A str-be beĄrja a #line sort, ha a m‚lys‚g vagy a sorsz m // nagyobb, mint 1. nmethod makeErrToken(tkId,str,errCode) // K‚szĄt egy tkId tĄpusŁ tokent 'str' tartalommal ‚s errCode // hibak˘ddal. nmethod parseTPTree() nmethod parse() // Ez v‚gzi a t‚nyleges elemz‚st, rekurzĄvan is lehet hĄvni. // A this:item-t elemzi, szks‚g eset‚n m‚g olvashat. nmethod parseLineComment(tkId) // '//' vagy '*' megjegyz‚s nmethod parsePcComment() // '/*'-os megjegyz‚s nmethod parseString(hatarolo) // Fels“vessz“s ‚s macskak”rm”s string. nmethod parseName() // N‚v. nmethod parseNumberArray() // Sz m sor. Ebben csak sz mok vannak, pont nem lehet. rmethod oinit(inputReader,name,errorStream) metaclass rmethod onew(inputReader,name,errorStream) attrib whitespacechar // attrib specchar attrib startnamechar attrib numberchar attrib namechar attrib tokens attrib tokenptree rmethod oinitclass() nmethod isWhitespacechar(c) // nmethod isSpecchar(c) nmethod isStartnamechar(c) nmethod isNumberchar(c) nmethod isNamechar(c) nmethod setTokens() // Felt”lti a class:tokens v ltoz˘t az oszt lyban defini lt // tokenekkel. nmethod calcTokenPTree() // K‚szĄt egy elemz“ f t a tokenek elemz‚s‚hez a // class:tokenPTree-be.