114 lines
2.9 KiB
OpenEdge ABL
114 lines
2.9 KiB
OpenEdge ABL
//
|
||
// $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<CB87>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<73>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<73>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.
|
||
|