Files
harbour-core/harbour/samples/cccppc/mparser.cls
1999-11-09 01:37:27 +00:00

137 lines
4.4 KiB
OpenEdge ABL
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
//
// $Id$
//
//*******************************************************************
// mparser.cls: A sorokban a makr˘kat (define, command, xcommand,
// translate, xtranslate) helyettesˇti.
// 1999, Csisz r Levente
// A PARSER-t“l ”r”k”l.
// A nv s a sor (lparser) elemz“  ltal kszˇtett tokeneket v r az
// inputr˘l. Źltal ban a hparser ut n van.
class MPARSER PARSER
attrib soreleje
// attrib defdict
attrib makroBuf // Itt tartja azokat a tokeneket, amiket egy
// makr˘ v ltoz˘hoz rendel elemzskor.
nmethod startMakroBuf(item)
// Inicializ lja a makroBuf-t. Ha az item nem nil, akkor beteszi
// els“ elemnek.
nmethod rdsMakroBuf()
// Ugyanaz, mint az rds(), csak a makro buf-ban is vezeti.
nmethod unrdsMakroBuf(n)
// Ugyanaz, mint az unrds(n), csak a makro buf-ban is vezeti.
rmethod readItem()
// Olvas egy elemet.
// Ret: Az elem, ha OK, nil, ha vge van a streamnek, vagy ha
// hiba volt.
nmethod parseFun(edefdict)
// Ez vgzi a tnyleges elemzst.
// A this:item-t elemzi, sz<73>ksg esetn mg olvashat.
// Elemezi az inputon a <nv>'('<param1>,...')' paramtereket.
// Az edefdict-nek a <nv>-hez tartoz˘ makr˘ definˇci˘nak kell
// lennie.
// Ret: {sikeres,itemLista}
// Ha sikeres volt, akkor a sikeres==.t., s az itemLista a csere
// eredmnye.
// Ha nem volt sikeres, akkor a sikeres==.f., s az itemLista a
// beolvasott (el“reolvasott) itemek list ja.
// A parserBufferben csak egy token lehet, ami az item-ben is
// van.
// nmethod printDefDict()
nmethod parseTokenList(leftTokenList,cmd4,paramValues,toEOL)
nmethod parseXtr(extrdict)
// Ez vgzi a tnyleges elemzst.
// A this:item-t elemzi, sz<73>ksg esetn mg olvashat.
// Elemezi az inputon az extrdict tokenjeit.
// Ret: {sikeres,itemLista}
// Ha sikeres volt, akkor a sikeres==.t., s az itemLista a csere
// eredmnye.
// Ha nem volt sikeres, akkor a sikeres==.f., s az itemLista a
// beolvasott (el“reolvasott) itemek list ja.
// A parserBufferben csak egy token lehet, ami az item-ben is
// van.
nmethod parseXtrTree(trdictTree,mi,toEOL)
// Ez vgzi a tnyleges elemzst.
// A this:item-t elemzi, sz<73>ksg esetn mg olvashat.
// Elemezi az inputon az extrdict tokenjeit.
// Ret: {sikeres,itemLista}
// Ha sikeres volt, akkor a sikeres==.t., s az itemLista a csere
// eredmnye.
// Ha nem volt sikeres, akkor a sikeres==.f., s az itemLista a
// beolvasott (el“reolvasott) itemek list ja.
// A parserBufferben csak egy token lehet, ami az item-ben is
// van.
nmethod mleftXNToken(leftToken,cmd4)
// Match left xtranslate normal token.
nmethod mleftXMRToken(leftToken,cmd4,paramValues,nUres)
// Match left xtranslate malterset token
nmethod mleftXRMMToken(leftToken,cmd4)
// Match left xtranslate regular match marker
nmethod mleftXWMToken(leftToken)
// Match left xtranslate wild match marker
nmethod mleftXEEMToken(leftToken)
// Match left xtranslate extended expression match marker
nmethod mleftXLMToken(leftToken,cmd4)
// Match left xtranslate list match marker
nmethod mleftXRSMMToken(leftToken,cmd4)
// Match left xtranslate restricted match marker
// rmethod oinit(inputReader,name,defDict)
rmethod oinit(inputReader,name,errorStream)
metaclass
// rmethod onew(inputReader,name,defDict)
rmethod onew(inputReader,name,errorStream)
nmethod getCloseParent(aChar)
// Ha az aChar egy nyit˘ z r˘jel, akkor a a csuk˘ p rj t adja,
// egybknt nil-t.
nmethod trimTokenList(tList)
// A tList elejr“l s vgr“l elt volˇtja az <20>res tokeneket.
// Ret: a tList.
nmethod parse(item,inputReader,name,defdict,edefdict,xtrdict,mi,errorStream,ujsor,trPrsAlg)
// Elemzi s az item-el kezd“d“ s az inputReader  ltal defini lt
// folyammal folytat˘d˘ folyamot, s ha tal l benne az itemmel
// kezd“d“ makr˘t, akkor megadja, hogy azt mire kell cserlni.
// Ret: {sikeres,itemLista}
// Ha sikeres volt, akkor a sikeres==.t., s az itemLista a csere
// eredmnye.
// Ha nem volt sikeres, akkor a sikeres==.f., s az itemLista a
// beolvasott (el“reolvasott) itemek list ja.
// Mj.: Jelenleg az item csak nil vagy TOKEN lehet.
// nmethod isTkBinaryOp(tkId,tkStr)