*** empty log message ***
This commit is contained in:
@@ -1,67 +0,0 @@
|
||||
#
|
||||
# $Id$
|
||||
#
|
||||
|
||||
ROOT = ../../
|
||||
|
||||
PRG_SOURCES=\
|
||||
cccppc.prg \
|
||||
cccpp_pr.prg \
|
||||
creader.prg \
|
||||
crlf.prg \
|
||||
defdict.prg \
|
||||
edefdict.prg \
|
||||
expr.prg \
|
||||
extrdict.prg \
|
||||
felbont.prg \
|
||||
fnutil.prg \
|
||||
freader.prg \
|
||||
guesseol.prg \
|
||||
hparser.prg \
|
||||
hparser2.prg \
|
||||
incl.prg \
|
||||
lparser.prg \
|
||||
lreader.prg \
|
||||
maltrset.prg \
|
||||
mcontrol.prg \
|
||||
mmarker.prg \
|
||||
mparser.prg \
|
||||
newline.prg \
|
||||
nparser.prg \
|
||||
parser.prg \
|
||||
prserr.prg \
|
||||
prtree.prg \
|
||||
prtreepr.prg \
|
||||
ralter.prg \
|
||||
reader.prg \
|
||||
rmarker.prg \
|
||||
rsmmarkr.prg \
|
||||
sreader.prg \
|
||||
tbuffer.prg \
|
||||
tkstr.prg \
|
||||
token.prg \
|
||||
tokenst.prg \
|
||||
tostr.prg \
|
||||
treader.prg \
|
||||
util.prg \
|
||||
xtrdict.prg \
|
||||
object.prg \
|
||||
package.prg \
|
||||
version.prg \
|
||||
|
||||
PRG_MAIN=cccppc.prg
|
||||
|
||||
LIBS=\
|
||||
tools \
|
||||
debug \
|
||||
vm \
|
||||
rtl \
|
||||
rdd \
|
||||
rtl \
|
||||
vm \
|
||||
macro \
|
||||
pp \
|
||||
runner \
|
||||
common \
|
||||
|
||||
include $(TOP)$(ROOT)config/bin.cf
|
||||
@@ -1,95 +0,0 @@
|
||||
//
|
||||
// $Id$
|
||||
//
|
||||
|
||||
class BEHAVIOR OBJECT
|
||||
|
||||
attrib parent
|
||||
|
||||
attrib name
|
||||
|
||||
attrib objSize
|
||||
// Azon objektumok m‚rete, amik az oszt ly elemei.
|
||||
|
||||
attrib attribs
|
||||
// Egy 'name' tˇpusŁ objektum (ami ennek az
|
||||
// oszt lynak az eleme) attribŁtumai
|
||||
// {sorsz m,n‚v,tˇpus} form ban.
|
||||
|
||||
attrib methods
|
||||
// Egy 'name' tˇpusŁ objektum (ami ennek az
|
||||
// oszt lynak az eleme) m–veletei
|
||||
// {sorsz m,n‚v,param‚terek,implSpec} form ban.
|
||||
// Mj.: A m–veleteket v‚grehajt˘ blokkok az
|
||||
// objMethodsImplement ltal adott blokkban
|
||||
// vannak.
|
||||
|
||||
attrib classId
|
||||
// Ha az oszt lynak van id-je, akkor az itt t rolva van.
|
||||
// Ha nincs, akkor ez nil.
|
||||
|
||||
attrib parentClassIds
|
||||
// Vagy nil, vagy egy olyan t”mb, amiben a i. elem nem nil,
|
||||
// haz az adott oszt ly a this “sei k”z”tt van ‚s van id-je.
|
||||
|
||||
attrib amBlock
|
||||
// Egy blokk, aminek a v‚grehajt sa beˇrja
|
||||
// egy t”mbbe az oszt ly ltal defini lt
|
||||
// attribŁtumokat ‚s egy m sik t”mbbe pedig
|
||||
// az oszt ly ltal defini lt m–veleteket.
|
||||
|
||||
attrib methodsBlock
|
||||
// Egy blokk, aminek a v‚grehajt sa
|
||||
// beˇrja egy t”mbbe az oszt ly ltal defini lt
|
||||
// m–veletek blokkjait.
|
||||
// (Ezt a t”mb”t adja az objMethodsImplement.)
|
||||
|
||||
attrib objMethodsImplement
|
||||
// Egy blokkot tartalmaz, amit ki‚rt‚kelve
|
||||
// megkapjuk azt a t”mb”t, aminek az els“
|
||||
// eleme az oszt ly, a tov bbi elemei pedig
|
||||
// az oszt lyba tartoz˘ objektumok m–veleti
|
||||
// blokkjai, ‚s m s implement ci˘s elemek.
|
||||
|
||||
nmethod onew{be_onew}()
|
||||
// K‚szˇt egy Łj objektumot, ‚s inicializ lja Łgy, hogy meghˇvja
|
||||
// az oinit() m–velet‚t.
|
||||
// Az objektum a 'this' oszt lyba fog tartozni.
|
||||
|
||||
nmethod ocreate{be_ocreate}()
|
||||
// K‚szˇt egy Łj objektumot, de nem inicializ lja.
|
||||
// Az objektum a 'this' oszt lyba fog tartozni.
|
||||
|
||||
nmethod rawoinit{be_rawoinit}(parent,name,nAttribs,nMethods,amBlock,methodsBlock)
|
||||
// Inicializ lja a 'this' oszt lyt.
|
||||
|
||||
rmethod oinit{be_oinit}(parent,name,nAttribs,nMethods,amBlock,methodsBlock)
|
||||
// Inicializ lja a 'this' oszt lyt a rawoinit()-el, de el“bb
|
||||
// ellen“rzi, hogy az oszt ly metaoszt ly nak van-e m r eleme.
|
||||
// Ha igen, akkor k<>ld egy figyelmeztet‚st.
|
||||
|
||||
nmethod oinitclass{retobj}()
|
||||
// A Meta onew()-ja hˇvja az oinit() ut n. Az‚rt van itt, hogy ne
|
||||
// kelljen az oinit() hosszŁ param‚terlist j val vesz“dni.
|
||||
|
||||
nmethod getMethodsImplement{be_getMethodsImplement}()
|
||||
// Ad egy t”mb”t, amiben a m–veletek blokkjai tal lhat˘k.
|
||||
|
||||
rmethod isClass{be_isClass}()
|
||||
// Mindig igazat ad. (Ez az objektum oszt ly.)
|
||||
|
||||
nmethod attribIdx{be_attribIdx}(name)
|
||||
// A name nev– attribŁtum index‚t adja, 'nil', ha nincs.
|
||||
|
||||
nmethod needClassId{be_needClassId}()
|
||||
// Ha .t., akkor az oszt ly nak kell azonosˇt˘t adni.
|
||||
// Ha .f., akkor az oszt ly nak nem kell azonosˇt˘t adni.
|
||||
// Jellemz“ implement ci˘ja:
|
||||
// return class:getClass()==mc<oszt lyn‚v>CLASS()
|
||||
// Mj.: A 'class=cl<oszt lyn‚v>()' nem j˘.
|
||||
|
||||
nmethod isInheritFrom{be_isInheritFrom}(parentClass)
|
||||
// Ha a this ”r”k”l az aClass-t˘l, vagy this==aClass, akkor
|
||||
// igaz, egy‚bk‚nt hamis.
|
||||
// Ha a parentClass-nak van id-je, akkor ez a m–velet sokkal
|
||||
// gyorsabban hajt˘dik v‚gre, mint ha nincs.
|
||||
@@ -1,353 +0,0 @@
|
||||
// BEHAVIOR.och oszt ly implement ci¢.
|
||||
// Gener lva: 1999.10.10, 14:31:52, OBJCCC v2.2.03
|
||||
// Meta oszt ly defin¡ci¢: Van
|
||||
|
||||
|
||||
#ifndef CA_OBJECT_N
|
||||
#ifdef _STRICT_PARENT_
|
||||
#ifdef _CA_CM_ONLY_
|
||||
#include "OBJECT.och"
|
||||
#else // _CA_CM_ONLY_
|
||||
#define _CA_CM_ONLY_
|
||||
#include "OBJECT.och"
|
||||
#undef _CA_CM_ONLY_
|
||||
#endif // _CA_CM_ONLY_
|
||||
#else
|
||||
#include "OBJECT.och"
|
||||
#endif // _STRICT_PARENT_
|
||||
#endif // CA_OBJECT_N
|
||||
|
||||
#ifndef _CA_CM_ONLY_
|
||||
#ifndef _BEHAVIOR_OCH_
|
||||
#define _BEHAVIOR_OCH_
|
||||
|
||||
|
||||
|
||||
|
||||
#xtranslate BEHAVIOR.<obj>:oinit => (OBJGEN.(<obj>):(4))
|
||||
#xtranslate BEHAVIOR.<obj>:getclass => (OBJGEN.(<obj>):(5))
|
||||
#xtranslate BEHAVIOR.<obj>:isclass => (OBJGEN.(<obj>):(6))
|
||||
#xtranslate BEHAVIOR.<obj>:getattrib => (OBJGEN.(<obj>):(7))
|
||||
#xtranslate BEHAVIOR.<obj>:setattrib => (OBJGEN.(<obj>):(8))
|
||||
|
||||
|
||||
#xtranslate BEHAVIOR.<obj>:parent => <obj>\[CA_OBJECT_N+1\]
|
||||
#xtranslate BEHAVIOR.<obj>:name => <obj>\[CA_OBJECT_N+2\]
|
||||
#xtranslate BEHAVIOR.<obj>:objsize => <obj>\[CA_OBJECT_N+3\]
|
||||
#xtranslate BEHAVIOR.<obj>:attribs => <obj>\[CA_OBJECT_N+4\]
|
||||
#xtranslate BEHAVIOR.<obj>:methods => <obj>\[CA_OBJECT_N+5\]
|
||||
#xtranslate BEHAVIOR.<obj>:classid => <obj>\[CA_OBJECT_N+6\]
|
||||
#xtranslate BEHAVIOR.<obj>:parentclassids => <obj>\[CA_OBJECT_N+7\]
|
||||
#xtranslate BEHAVIOR.<obj>:amblock => <obj>\[CA_OBJECT_N+8\]
|
||||
#xtranslate BEHAVIOR.<obj>:methodsblock => <obj>\[CA_OBJECT_N+9\]
|
||||
|
||||
// Specifik lva: onew()
|
||||
// Specifik lva: ocreate()
|
||||
// Specifik lva: rawoinit(parent,name,nAttribs,nMethods,amBlock,methodsBlock)
|
||||
// ™r”k”lve: oinit(parent,name,nAttribs,nMethods,amBlock,methodsBlock)
|
||||
// Specifik lva: oinitclass()
|
||||
// Specifik lva: getmethodsimplement()
|
||||
// ™r”k”lve: isclass()
|
||||
// Specifik lva: attribidx(name)
|
||||
// Specifik lva: needclassid()
|
||||
// Specifik lva: isinheritfrom(parentClass)
|
||||
|
||||
#xtranslate BEHAVIOR.<obj>:onew => (OBJGEN.(<obj>):(CM_OBJECT_N+1))
|
||||
#xtranslate BEHAVIOR.<obj>:ocreate => (OBJGEN.(<obj>):(CM_OBJECT_N+2))
|
||||
#xtranslate BEHAVIOR.<obj>:rawoinit => (OBJGEN.(<obj>):(CM_OBJECT_N+3))
|
||||
// ™r”k”lve: oinit(parent,name,nAttribs,nMethods,amBlock,methodsBlock)
|
||||
#xtranslate BEHAVIOR.<obj>:oinitclass => (OBJGEN.(<obj>):(CM_OBJECT_N+4))
|
||||
#xtranslate BEHAVIOR.<obj>:getmethodsimplement => (OBJGEN.(<obj>):(CM_OBJECT_N+5))
|
||||
// ™r”k”lve: isclass()
|
||||
#xtranslate BEHAVIOR.<obj>:attribidx => (OBJGEN.(<obj>):(CM_OBJECT_N+6))
|
||||
#xtranslate BEHAVIOR.<obj>:needclassid => (OBJGEN.(<obj>):(CM_OBJECT_N+7))
|
||||
#xtranslate BEHAVIOR.<obj>:isinheritfrom => (OBJGEN.(<obj>):(CM_OBJECT_N+8))
|
||||
|
||||
#endif // _BEHAVIOR_OCH_
|
||||
#endif // _CA_CM_ONLY_
|
||||
|
||||
#ifndef CA_BEHAVIOR_N
|
||||
#define CA_BEHAVIOR_N CA_OBJECT_N+10
|
||||
#define CM_BEHAVIOR_N CM_OBJECT_N+8
|
||||
#xtranslate BEHAVIOR.<obj>:objmethodsimplement => <obj>\[CA_OBJECT_N+10\]
|
||||
#endif // CA_BEHAVIOR_N
|
||||
|
||||
#ifndef _CA_CM_ONLY_
|
||||
#ifndef _META_OCH_
|
||||
#define _META_OCH_
|
||||
|
||||
**********************************************************************
|
||||
#xtranslate C.BEHAVIOR:<m> => (META.clBEHAVIOR():<m>)
|
||||
#xtranslate C.BEHAVIOR:self() => (clBEHAVIOR())
|
||||
|
||||
|
||||
#xtranslate META.<obj>:parent => <obj>\[CA_OBJECT_N+1\]
|
||||
#xtranslate META.<obj>:name => <obj>\[CA_OBJECT_N+2\]
|
||||
#xtranslate META.<obj>:objsize => <obj>\[CA_OBJECT_N+3\]
|
||||
#xtranslate META.<obj>:attribs => <obj>\[CA_OBJECT_N+4\]
|
||||
#xtranslate META.<obj>:methods => <obj>\[CA_OBJECT_N+5\]
|
||||
#xtranslate META.<obj>:classid => <obj>\[CA_OBJECT_N+6\]
|
||||
#xtranslate META.<obj>:parentclassids => <obj>\[CA_OBJECT_N+7\]
|
||||
#xtranslate META.<obj>:amblock => <obj>\[CA_OBJECT_N+8\]
|
||||
#xtranslate META.<obj>:methodsblock => <obj>\[CA_OBJECT_N+9\]
|
||||
#xtranslate META.<obj>:objmethodsimplement => <obj>\[CA_OBJECT_N+10\]
|
||||
|
||||
|
||||
#xtranslate META.<obj>:oinit => (OBJGEN.(<obj>):(4))
|
||||
#xtranslate META.<obj>:getclass => (OBJGEN.(<obj>):(5))
|
||||
#xtranslate META.<obj>:isclass => (OBJGEN.(<obj>):(6))
|
||||
#xtranslate META.<obj>:getattrib => (OBJGEN.(<obj>):(7))
|
||||
#xtranslate META.<obj>:setattrib => (OBJGEN.(<obj>):(8))
|
||||
#xtranslate META.<obj>:ocreate => (OBJGEN.(<obj>):(CM_OBJECT_N+2))
|
||||
#xtranslate META.<obj>:rawoinit => (OBJGEN.(<obj>):(CM_OBJECT_N+3))
|
||||
#xtranslate META.<obj>:oinitclass => (OBJGEN.(<obj>):(CM_OBJECT_N+4))
|
||||
#xtranslate META.<obj>:getmethodsimplement => (OBJGEN.(<obj>):(CM_OBJECT_N+5))
|
||||
#xtranslate META.<obj>:attribidx => (OBJGEN.(<obj>):(CM_OBJECT_N+6))
|
||||
#xtranslate META.<obj>:needclassid => (OBJGEN.(<obj>):(CM_OBJECT_N+7))
|
||||
#xtranslate META.<obj>:isinheritfrom => (OBJGEN.(<obj>):(CM_OBJECT_N+8))
|
||||
|
||||
|
||||
#xtranslate META.<obj>:ofclass => <obj>\[CA_BEHAVIOR_N+1\]
|
||||
|
||||
// ™r”k”lve: oinit(parent,name,nAttribs,nMethods,amBlock,methodsBlock)
|
||||
// ™r”k”lve: onew(parent,name,nAttribs,nMethods,amBlock,methodsBlock)
|
||||
// ™r”k”lve: ocreate()
|
||||
|
||||
// ™r”k”lve: oinit(parent,name,nAttribs,nMethods,amBlock,methodsBlock)
|
||||
// ™r”k”lve: onew(parent,name,nAttribs,nMethods,amBlock,methodsBlock)
|
||||
// ™r”k”lve: ocreate()
|
||||
|
||||
#endif // _META_OCH_
|
||||
#endif // _CA_CM_ONLY_
|
||||
|
||||
#ifndef CA_META_N
|
||||
#define CA_META_N CA_BEHAVIOR_N+1
|
||||
#define CM_META_N CM_BEHAVIOR_N+0
|
||||
#xtranslate META.<obj>:onew => (OBJGEN.(<obj>):(CM_OBJECT_N+1))
|
||||
#endif // CA_META_N
|
||||
|
||||
|
||||
**********************************************************************
|
||||
#ifdef _BEHAVIOR_PRG_
|
||||
#ifndef _BEHAVIOR_PRG_OCH_
|
||||
#define _BEHAVIOR_PRG_OCH_
|
||||
|
||||
|
||||
**********************************************************************
|
||||
#xtranslate othis:<m> => BEHAVIOR.(othis):<m>
|
||||
#xtranslate thisclass:<m> => META.(this:getClass()):<m>
|
||||
#define CTHIS BEHAVIOR
|
||||
|
||||
|
||||
**********************************************************************
|
||||
#xtranslate this:<m> => BEHAVIOR.(this):<m>
|
||||
|
||||
#xcommand implement onew() => static function be_onew(this)
|
||||
#xcommand implement ocreate() => static function be_ocreate(this)
|
||||
#xcommand implement rawoinit(parent,name,nAttribs,nMethods,amBlock,methodsBlock) => ;
|
||||
static function be_rawoinit(this,parent,name,nAttribs,nMethods,amBlock,methodsBlock)
|
||||
#xcommand implement oinit(parent,name,nAttribs,nMethods,amBlock,methodsBlock) => ;
|
||||
static function be_oinit(this,parent,name,nAttribs,nMethods,amBlock,methodsBlock)
|
||||
#xcommand implement oinitclass() => static function retobj(this)
|
||||
#xcommand implement getmethodsimplement() => ;
|
||||
static function be_getMethodsImplement(this)
|
||||
#xcommand implement isclass() => static function be_isClass(this)
|
||||
#xcommand implement attribidx(name) => ;
|
||||
static function be_attribIdx(this,name)
|
||||
#xcommand implement needclassid() => static function be_needClassId(this)
|
||||
#xcommand implement isinheritfrom(parentClass) => ;
|
||||
static function be_isInheritFrom(this,parentClass)
|
||||
|
||||
#ifdef _IMPLEMENT_EXPORT_
|
||||
#xcommand implement export onew() => function be_onew(this)
|
||||
#xcommand implement export ocreate() => function be_ocreate(this)
|
||||
#xcommand implement export rawoinit(parent,name,nAttribs,nMethods,amBlock,methodsBlock) => ;
|
||||
function be_rawoinit(this,parent,name,nAttribs,nMethods,amBlock,methodsBlock)
|
||||
#xcommand implement export oinit(parent,name,nAttribs,nMethods,amBlock,methodsBlock) => ;
|
||||
function be_oinit(this,parent,name,nAttribs,nMethods,amBlock,methodsBlock)
|
||||
#xcommand implement export oinitclass() => function retobj(this)
|
||||
#xcommand implement export getmethodsimplement() => ;
|
||||
function be_getMethodsImplement(this)
|
||||
#xcommand implement export isclass() => function be_isClass(this)
|
||||
#xcommand implement export attribidx(name) => ;
|
||||
function be_attribIdx(this,name)
|
||||
#xcommand implement export needclassid() => function be_needClassId(this)
|
||||
#xcommand implement export isinheritfrom(parentClass) => ;
|
||||
function be_isInheritFrom(this,parentClass)
|
||||
#endif // _IMPLEMENT_EXPORT_
|
||||
|
||||
#xtranslate super:oinit => (OBJGENM.(eval(BEHAVIOR.clOBJECT():objmethodsimplement)).(this):(4))
|
||||
#xtranslate super:getclass => (OBJGENM.(eval(BEHAVIOR.clOBJECT():objmethodsimplement)).(this):(5))
|
||||
#xtranslate super:isclass => (OBJGENM.(eval(BEHAVIOR.clOBJECT():objmethodsimplement)).(this):(6))
|
||||
#xtranslate super:getattrib => (OBJGENM.(eval(BEHAVIOR.clOBJECT():objmethodsimplement)).(this):(7))
|
||||
#xtranslate super:setattrib => (OBJGENM.(eval(BEHAVIOR.clOBJECT():objmethodsimplement)).(this):(8))
|
||||
|
||||
**********************************************************************
|
||||
static function setCMethods(pOsztaly)
|
||||
// Egy t”mb”t felt”lt az oszt ly m–veleti blokkjaival.
|
||||
pOsztaly[(CM_OBJECT_N+1)]:={|this| be_onew(this)}
|
||||
pOsztaly[(CM_OBJECT_N+2)]:={|this| be_ocreate(this)}
|
||||
pOsztaly[(CM_OBJECT_N+3)]:={|this,parent,name,nAttribs,nMethods,amBlock,methodsBlock| be_rawoinit(this,parent,name,nAttribs,nMethods,amBlock,methodsBlock)}
|
||||
pOsztaly[(4)]:={|this,parent,name,nAttribs,nMethods,amBlock,methodsBlock| be_oinit(this,parent,name,nAttribs,nMethods,amBlock,methodsBlock)}
|
||||
pOsztaly[(CM_OBJECT_N+4)]:={|this| retobj(this)}
|
||||
pOsztaly[(CM_OBJECT_N+5)]:={|this| be_getMethodsImplement(this)}
|
||||
pOsztaly[(6)]:={|this| be_isClass(this)}
|
||||
pOsztaly[(CM_OBJECT_N+6)]:={|this,name| be_attribIdx(this,name)}
|
||||
pOsztaly[(CM_OBJECT_N+7)]:={|this| be_needClassId(this)}
|
||||
pOsztaly[(CM_OBJECT_N+8)]:={|this,parentClass| be_isInheritFrom(this,parentClass)}
|
||||
return pOsztaly
|
||||
|
||||
**********************************************************************
|
||||
static function setCams(ta,tm)
|
||||
// Egy t”mb”t felt”lt az oszt ly ltal def. objektumok attrib£tumaival ‚s m–veleteivel.
|
||||
ta[CA_OBJECT_N+1-CA_NIL_N] := {CA_OBJECT_N+1,'parent',nil}
|
||||
ta[CA_OBJECT_N+2-CA_NIL_N] := {CA_OBJECT_N+2,'name',nil}
|
||||
ta[CA_OBJECT_N+3-CA_NIL_N] := {CA_OBJECT_N+3,'objsize',nil}
|
||||
ta[CA_OBJECT_N+4-CA_NIL_N] := {CA_OBJECT_N+4,'attribs',nil}
|
||||
ta[CA_OBJECT_N+5-CA_NIL_N] := {CA_OBJECT_N+5,'methods',nil}
|
||||
ta[CA_OBJECT_N+6-CA_NIL_N] := {CA_OBJECT_N+6,'classid',nil}
|
||||
ta[CA_OBJECT_N+7-CA_NIL_N] := {CA_OBJECT_N+7,'parentclassids',nil}
|
||||
ta[CA_OBJECT_N+8-CA_NIL_N] := {CA_OBJECT_N+8,'amblock',nil}
|
||||
ta[CA_OBJECT_N+9-CA_NIL_N] := {CA_OBJECT_N+9,'methodsblock',nil}
|
||||
ta[CA_OBJECT_N+10-CA_NIL_N] := {CA_OBJECT_N+10,'objmethodsimplement',nil}
|
||||
|
||||
tm[(CM_OBJECT_N+1)-CM_NIL_N] := {(CM_OBJECT_N+1),'onew','',nil}
|
||||
tm[(CM_OBJECT_N+2)-CM_NIL_N] := {(CM_OBJECT_N+2),'ocreate','',nil}
|
||||
tm[(CM_OBJECT_N+3)-CM_NIL_N] := {(CM_OBJECT_N+3),'rawoinit','parent,name,nAttribs,nMethods,amBlock,methodsBlock',nil}
|
||||
tm[(4)-CM_NIL_N] := {(4),'oinit','parent,name,nAttribs,nMethods,amBlock,methodsBlock',nil}
|
||||
tm[(CM_OBJECT_N+4)-CM_NIL_N] := {(CM_OBJECT_N+4),'oinitclass','',nil}
|
||||
tm[(CM_OBJECT_N+5)-CM_NIL_N] := {(CM_OBJECT_N+5),'getmethodsimplement','',nil}
|
||||
tm[(6)-CM_NIL_N] := {(6),'isclass','',nil}
|
||||
tm[(CM_OBJECT_N+6)-CM_NIL_N] := {(CM_OBJECT_N+6),'attribidx','name',nil}
|
||||
tm[(CM_OBJECT_N+7)-CM_NIL_N] := {(CM_OBJECT_N+7),'needclassid','',nil}
|
||||
tm[(CM_OBJECT_N+8)-CM_NIL_N] := {(CM_OBJECT_N+8),'isinheritfrom','parentClass',nil}
|
||||
return nil
|
||||
|
||||
#ifndef _NO_CLBEHAVIOR_
|
||||
#ifdef _STRICT_PARENT_
|
||||
#ifdef _CA_CM_ONLY_
|
||||
#include "meta.och"
|
||||
#else // _CA_CM_ONLY_
|
||||
#define _CA_CM_ONLY_
|
||||
#include "meta.och"
|
||||
#undef _CA_CM_ONLY_
|
||||
#endif // _CA_CM_ONLY_
|
||||
#else
|
||||
#include "meta.och"
|
||||
#endif // _STRICT_PARENT_
|
||||
**********************************************************************
|
||||
function clBEHAVIOR()
|
||||
// El“szedi az oszt lyt. (class)
|
||||
static osztaly
|
||||
if (osztaly==nil)
|
||||
osztaly:=META.clMETA():onew(;
|
||||
clOBJECT(),;
|
||||
"BEHAVIOR",;
|
||||
CA_BEHAVIOR_N,;
|
||||
CM_BEHAVIOR_N,;
|
||||
{|ta,tm|setCams(ta,tm)},;
|
||||
{|t|setCMethods(t)})
|
||||
endif
|
||||
return osztaly
|
||||
#endif // _NO_CLBEHAVIOR_
|
||||
|
||||
#ifndef _NO_META_
|
||||
|
||||
**********************************************************************
|
||||
#xtranslate class:<m> => META.(class):<m>
|
||||
|
||||
#xcommand cimplement oinit(parent,name,nAttribs,nMethods,amBlock,methodsBlock) => ;
|
||||
static function me_oinit(class,parent,name,nAttribs,nMethods,amBlock,methodsBlock)
|
||||
#xcommand cimplement onew(parent,name,nAttribs,nMethods,amBlock,methodsBlock) => ;
|
||||
static function me_onew(class,parent,name,nAttribs,nMethods,amBlock,methodsBlock)
|
||||
#xcommand cimplement ocreate() => static function me_ocreate(class)
|
||||
|
||||
#ifdef _IMPLEMENT_EXPORT_
|
||||
#xcommand cimplement export oinit(parent,name,nAttribs,nMethods,amBlock,methodsBlock) => ;
|
||||
function me_oinit(class,parent,name,nAttribs,nMethods,amBlock,methodsBlock)
|
||||
#xcommand cimplement export onew(parent,name,nAttribs,nMethods,amBlock,methodsBlock) => ;
|
||||
function me_onew(class,parent,name,nAttribs,nMethods,amBlock,methodsBlock)
|
||||
#xcommand cimplement export ocreate() => function me_ocreate(class)
|
||||
#endif // _IMPLEMENT_EXPORT_
|
||||
|
||||
#xtranslate superclass:oinit => (OBJGENM.(eval(BEHAVIOR.clBEHAVIOR():objmethodsimplement)).(class):(4))
|
||||
#xtranslate superclass:getclass => (OBJGENM.(eval(BEHAVIOR.clBEHAVIOR():objmethodsimplement)).(class):(5))
|
||||
#xtranslate superclass:isclass => (OBJGENM.(eval(BEHAVIOR.clBEHAVIOR():objmethodsimplement)).(class):(6))
|
||||
#xtranslate superclass:getattrib => (OBJGENM.(eval(BEHAVIOR.clBEHAVIOR():objmethodsimplement)).(class):(7))
|
||||
#xtranslate superclass:setattrib => (OBJGENM.(eval(BEHAVIOR.clBEHAVIOR():objmethodsimplement)).(class):(8))
|
||||
#xtranslate superclass:onew => (OBJGENM.(eval(BEHAVIOR.clBEHAVIOR():objmethodsimplement)).(class):(CM_OBJECT_N+1))
|
||||
#xtranslate superclass:ocreate => (OBJGENM.(eval(BEHAVIOR.clBEHAVIOR():objmethodsimplement)).(class):(CM_OBJECT_N+2))
|
||||
#xtranslate superclass:rawoinit => (OBJGENM.(eval(BEHAVIOR.clBEHAVIOR():objmethodsimplement)).(class):(CM_OBJECT_N+3))
|
||||
#xtranslate superclass:oinitclass => (OBJGENM.(eval(BEHAVIOR.clBEHAVIOR():objmethodsimplement)).(class):(CM_OBJECT_N+4))
|
||||
#xtranslate superclass:getmethodsimplement => (OBJGENM.(eval(BEHAVIOR.clBEHAVIOR():objmethodsimplement)).(class):(CM_OBJECT_N+5))
|
||||
#xtranslate superclass:attribidx => (OBJGENM.(eval(BEHAVIOR.clBEHAVIOR():objmethodsimplement)).(class):(CM_OBJECT_N+6))
|
||||
#xtranslate superclass:needclassid => (OBJGENM.(eval(BEHAVIOR.clBEHAVIOR():objmethodsimplement)).(class):(CM_OBJECT_N+7))
|
||||
#xtranslate superclass:isinheritfrom => (OBJGENM.(eval(BEHAVIOR.clBEHAVIOR():objmethodsimplement)).(class):(CM_OBJECT_N+8))
|
||||
|
||||
**********************************************************************
|
||||
static function setMCMethods(pOsztaly)
|
||||
// Egy t”mb”t felt”lt a metaoszt ly m–veleti blokkjaival.
|
||||
pOsztaly[(4)]:={|class,parent,name,nAttribs,nMethods,amBlock,methodsBlock| me_oinit(class,parent,name,nAttribs,nMethods,amBlock,methodsBlock)}
|
||||
pOsztaly[(CM_OBJECT_N+1)]:={|class,parent,name,nAttribs,nMethods,amBlock,methodsBlock| me_onew(class,parent,name,nAttribs,nMethods,amBlock,methodsBlock)}
|
||||
pOsztaly[(CM_OBJECT_N+2)]:={|class| me_ocreate(class)}
|
||||
return pOsztaly
|
||||
|
||||
**********************************************************************
|
||||
static function setMCams(ta,tm)
|
||||
// Egy t”mb”t felt”lt a metaoszt ly ltal def. objektumok attrib£tumaival ‚s m–veleteivel.
|
||||
ta[CA_BEHAVIOR_N+1-CA_NIL_N] := {CA_BEHAVIOR_N+1,'ofclass',nil}
|
||||
|
||||
tm[(4)-CM_NIL_N] := {(4),'oinit','parent,name,nAttribs,nMethods,amBlock,methodsBlock',nil}
|
||||
tm[(CM_OBJECT_N+1)-CM_NIL_N] := {(CM_OBJECT_N+1),'onew','parent,name,nAttribs,nMethods,amBlock,methodsBlock',nil}
|
||||
tm[(CM_OBJECT_N+2)-CM_NIL_N] := {(CM_OBJECT_N+2),'ocreate','',nil}
|
||||
return nil
|
||||
|
||||
**********************************************************************
|
||||
#ifndef _NO_MCMETA_
|
||||
#ifdef _STRICT_PARENT_
|
||||
#ifdef _CA_CM_ONLY_
|
||||
#include "meta.och" // "metaclas.och"
|
||||
#else // _CA_CM_ONLY_
|
||||
#define _CA_CM_ONLY_
|
||||
#include "meta.och" // "metaclas.och"
|
||||
#undef _CA_CM_ONLY_
|
||||
#endif // _CA_CM_ONLY_
|
||||
#else
|
||||
#include "meta.och" // "metaclas.och"
|
||||
#endif // _STRICT_PARENT_
|
||||
function mcMETA()
|
||||
// El“szedi az oszt ly metaoszt ly t. (metaclass)
|
||||
static metaOsztaly
|
||||
if (metaOsztaly==nil)
|
||||
metaOsztaly:=META.clMETA():onew(;
|
||||
clBEHAVIOR(),;
|
||||
"META",;
|
||||
CA_META_N,;
|
||||
CM_META_N,;
|
||||
{|ta,tm|setMCams(ta,tm)},;
|
||||
{|t|setMCMethods(t)})
|
||||
endif
|
||||
return metaOsztaly
|
||||
#endif // _NO_MCMETA_
|
||||
|
||||
#endif // _NO_META_
|
||||
#ifdef _IMPLEMENT_ONEW_
|
||||
**********************************************************************
|
||||
cimplement onew(parent,name,nAttribs,nMethods,amBlock,methodsBlock)
|
||||
local o:=class:ocreate()
|
||||
|
||||
BEHAVIOR.o:oinit(parent,name,nAttribs,nMethods,amBlock,methodsBlock)
|
||||
return o
|
||||
#endif // _IMPLEMENT_ONEW_
|
||||
|
||||
**********************************************************************
|
||||
#ifdef _IMPLEMENT_OINIT_
|
||||
implement oinit(parent,name,nAttribs,nMethods,amBlock,methodsBlock)
|
||||
super:oinit()
|
||||
return this
|
||||
#endif // _IMPLEMENT_OINIT_
|
||||
|
||||
**********************************************************************
|
||||
**********************************************************************
|
||||
#endif // _BEHAVIOR_PRG_OCH_
|
||||
#endif // _BEHAVIOR_PRG_
|
||||
@@ -1,133 +0,0 @@
|
||||
/*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
//*******************************************************************
|
||||
// cccpp_pr.prg: Process input
|
||||
// 1999, Csisz r Levente
|
||||
//*******************************************************************
|
||||
|
||||
|
||||
//*******************************************************************
|
||||
#include "debug.ch"
|
||||
#include "ctoken.ch"
|
||||
|
||||
//*******************************************************************
|
||||
#include "objgen.ch"
|
||||
|
||||
//*******************************************************************
|
||||
#include "lreader.och"
|
||||
#include "nparser.och"
|
||||
#include "lparser.och"
|
||||
#include "incl.och"
|
||||
#include "hparser.och"
|
||||
#include "mcontrol.och"
|
||||
#include "parser.och"
|
||||
#include "token.och"
|
||||
|
||||
|
||||
//*******************************************************************
|
||||
static function cccpp_printErrorStream(errorStream)
|
||||
if (!empty(errorStream))
|
||||
evalErrorStream(errorStream,{|x| outerr(x,newline())})
|
||||
asize(errorStream,0)
|
||||
return .t.
|
||||
endif
|
||||
return .f.
|
||||
|
||||
//*******************************************************************
|
||||
function cccpp_processReader(reader,outFid,;
|
||||
incArray,maxInclDeep,;
|
||||
defDict,xtrdict,errorStream,;
|
||||
trPrsAlg)
|
||||
// Feldolgoz egy fil‚t, Egyenl“re nem v‚gez hiba ellez“rz‚st.
|
||||
|
||||
local lrd,npr,lpr,hpr,mcr,t,inclObj
|
||||
local line,emptyLines,hiba
|
||||
|
||||
hiba:=.f.
|
||||
|
||||
if (cccpp_printErrorStream(errorStream))
|
||||
hiba:=.t.
|
||||
return hiba
|
||||
endif
|
||||
|
||||
// fr:=C.FREADER:onew(errorStream)
|
||||
// FREADER.fr:open("",inputFileName)
|
||||
lrd:=C.LREADER:onew(CTK_BOS,CTK_EOS,READER.reader:name,errorStream)
|
||||
LREADER.lrd:pushReader(reader)
|
||||
npr:=C.NPARSER:onew(lrd,READER.lrd:name,errorStream)
|
||||
lpr:=C.LPARSER:onew(npr,READER.npr:name,errorStream)
|
||||
inclObj:=C.INCL:onew(lrd,incArray,maxInclDeep)
|
||||
// inclObj:=C.INCL:onew(lrd,{dirFName(filename)})
|
||||
hpr:=C.HPARSER:onew(lpr,READER.lpr:name,;
|
||||
defDict/*C.DEFDICT:onew()*/,xtrDict/*C.XTRDICT:onew()*/,;
|
||||
inclObj,errorStream)
|
||||
mcr:=C.MCONTROL:onew(hpr,READER.hpr:name,;
|
||||
HPARSER.hpr:defDict,HPARSER.hpr:xtrdict,;
|
||||
errorStream,trPrsAlg)
|
||||
|
||||
line:=""
|
||||
emptyLines:=""
|
||||
while(nil!=(t:=PARSER.mcr:read()))
|
||||
// outstd(TOKEN.t:getStr())
|
||||
// wStr:=TOKEN.t:getStr()
|
||||
// fwrite(fid,wStr,len(wStr))
|
||||
if (outFid!=nil)
|
||||
// Itt kell kozmetik zni a sorokat.
|
||||
/*
|
||||
1. šres sorok hossz t null ra reduk ljuk.
|
||||
2. #line el“tti <20>res sorokat t”r”lj<6C>k. (BOS)
|
||||
3. EOS el“tti <20>res sorokat t”r”lj<6C>k.
|
||||
*/
|
||||
if (TOKEN.t:id==TKID_UJSOR)
|
||||
// —j sor. Az <20>res sorokat az emptyLines-ban t roljuk.
|
||||
if (!empty(line))
|
||||
fwrite(outFid,emptyLines)
|
||||
emptyLines:=""
|
||||
fwrite(outFid,line)
|
||||
line:=""
|
||||
fwrite(outFid,TOKEN.t:getStr())
|
||||
else
|
||||
emptyLines+=TOKEN.t:getStr()
|
||||
line:=""
|
||||
endif
|
||||
elseif (TOKEN.t:id==TKID_EOS .or.;
|
||||
TOKEN.t:id==TKID_BOS)
|
||||
// Az EOS ‚s a BOS el“tti <20>res sorokat t”r”lni kell.
|
||||
// Mj.: Itt nincs kezelve az az esetet, amikor nincs
|
||||
// sorv‚gjel az include fil‚ v‚g‚n.
|
||||
if (!empty(line))
|
||||
fwrite(outFid,emptyLines)
|
||||
emptyLines:=""
|
||||
fwrite(outFid,line)
|
||||
line:=""
|
||||
fwrite(outFid,TOKEN.t:getStr())
|
||||
else
|
||||
emptyLines:=""
|
||||
line:=""
|
||||
// Ha az EOS/BOS ¡rni akar valamit, azt kitessz<73>k.
|
||||
fwrite(outFid,TOKEN.t:getStr())
|
||||
endif
|
||||
else
|
||||
line+=TOKEN.t:getStr()
|
||||
endif
|
||||
endif
|
||||
// Itt ki kell olvasni a hib kat.
|
||||
if (cccpp_printErrorStream(errorStream))
|
||||
hiba:=.t.
|
||||
endif
|
||||
end while
|
||||
// Nem kell az utols¢ sorra figyelni, mert mindig j”n egy EOS.
|
||||
|
||||
// Elv‚gezz<7A>k a sz<73>ks‚ges ellen“rz‚seket a fil‚ v‚g‚n.
|
||||
// (Lez ratlan #if, etc)
|
||||
HPARSER.hpr:chkEndOfFile()
|
||||
if (cccpp_printErrorStream(errorStream))
|
||||
hiba:=.t.
|
||||
endif
|
||||
|
||||
return hiba
|
||||
|
||||
//*******************************************************************
|
||||
|
||||
@@ -1,603 +0,0 @@
|
||||
/*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
//*******************************************************************
|
||||
// cccpp.prg: A f“program
|
||||
// 1999, Csisz r Levente
|
||||
|
||||
//*******************************************************************
|
||||
#define VERSION "v0.7.06"
|
||||
|
||||
//*******************************************************************
|
||||
#include "fileio.ch"
|
||||
|
||||
//*******************************************************************
|
||||
#include "debug.ch"
|
||||
#include "ctoken.ch"
|
||||
|
||||
//*******************************************************************
|
||||
#include "objgen.ch"
|
||||
|
||||
//*******************************************************************
|
||||
#include "freader.och"
|
||||
#include "sreader.och"
|
||||
// #include "lreader.och"
|
||||
#include "nparser.och"
|
||||
// #include "lparser.och"
|
||||
#include "incl.och"
|
||||
// #include "hparser.och"
|
||||
// #include "mcontrol.och"
|
||||
// #include "parser.och"
|
||||
#include "token.och"
|
||||
|
||||
#include "defdict.och"
|
||||
#include "xtrdict.och"
|
||||
#include "extrdict.och"
|
||||
//#include "prserr.och"
|
||||
|
||||
//*******************************************************************
|
||||
#ifdef TEST
|
||||
function main(p1,p2,p3,p4,p5,p6,p7,p8,p9)
|
||||
teszt(p1,p2,p3,p4,p5,p6,p7,p8,p9)
|
||||
return nil
|
||||
#else
|
||||
#ifdef OLD
|
||||
function main(; // 265 db param‚ter. Sajnos CCC-ben nincs szabv nyos
|
||||
; // m¢dszer tetsz. sz m£ param‚ter tv‚tel‚re.
|
||||
p00,p01,p02,p03,p04,p05,p06,p07,p08,p09,p0a,p0b,p0c,p0d,p0e,p0f,;
|
||||
p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p1a,p1b,p1c,p1d,p1e,p1f,;
|
||||
p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p2a,p2b,p2c,p2d,p2e,p2f,;
|
||||
p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p3a,p3b,p3c,p3d,p3e,p3f,;
|
||||
p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p4a,p4b,p4c,p4d,p4e,p4f,;
|
||||
p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p5a,p5b,p5c,p5d,p5e,p5f,;
|
||||
p60,p61,p62,p63,p64,p65,p66,p67,p68,p69,p6a,p6b,p6c,p6d,p6e,p6f,;
|
||||
p70,p71,p72,p73,p74,p75,p76,p77,p78,p79,p7a,p7b,p7c,p7d,p7e,p7f,;
|
||||
p80,p81,p82,p83,p84,p85,p86,p87,p88,p89,p8a,p8b,p8c,p8d,p8e,p8f,;
|
||||
p90,p91,p92,p93,p94,p95,p96,p97,p98,p99,p9a,p9b,p9c,p9d,p9e,p9f,;
|
||||
pa0,pa1,pa2,pa3,pa4,pa5,pa6,pa7,pa8,pa9,paa,pab,pac,pad,pae,paf,;
|
||||
pb0,pb1,pb2,pb3,pb4,pb5,pb6,pb7,pb8,pb9,pba,pbb,pbc,pbd,pbe,pbf,;
|
||||
pc0,pc1,pc2,pc3,pc4,pc5,pc6,pc7,pc8,pc9,pca,pcb,pcc,pcd,pce,pcf,;
|
||||
pd0,pd1,pd2,pd3,pd4,pd5,pd6,pd7,pd8,pd9,pda,pdb,pdc,pdd,pde,pdf,;
|
||||
pe0,pe1,pe2,pe3,pe4,pe5,pe6,pe7,pe8,pe9,pea,peb,pec,ped,pee,pef,;
|
||||
pf0,pf1,pf2,pf3,pf4,pf5,pf6,pf7,pf8,pf9,pfa,pfb,pfc,pfd,pfe,pff;
|
||||
)
|
||||
|
||||
local p:={
|
||||
p00,p01,p02,p03,p04,p05,p06,p07,p08,p09,p0a,p0b,p0c,p0d,p0e,p0f,;
|
||||
p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p1a,p1b,p1c,p1d,p1e,p1f,;
|
||||
p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p2a,p2b,p2c,p2d,p2e,p2f,;
|
||||
p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p3a,p3b,p3c,p3d,p3e,p3f,;
|
||||
p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p4a,p4b,p4c,p4d,p4e,p4f,;
|
||||
p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p5a,p5b,p5c,p5d,p5e,p5f,;
|
||||
p60,p61,p62,p63,p64,p65,p66,p67,p68,p69,p6a,p6b,p6c,p6d,p6e,p6f,;
|
||||
p70,p71,p72,p73,p74,p75,p76,p77,p78,p79,p7a,p7b,p7c,p7d,p7e,p7f,;
|
||||
p80,p81,p82,p83,p84,p85,p86,p87,p88,p89,p8a,p8b,p8c,p8d,p8e,p8f,;
|
||||
p90,p91,p92,p93,p94,p95,p96,p97,p98,p99,p9a,p9b,p9c,p9d,p9e,p9f,;
|
||||
pa0,pa1,pa2,pa3,pa4,pa5,pa6,pa7,pa8,pa9,paa,pab,pac,pad,pae,paf,;
|
||||
pb0,pb1,pb2,pb3,pb4,pb5,pb6,pb7,pb8,pb9,pba,pbb,pbc,pbd,pbe,pbf,;
|
||||
pc0,pc1,pc2,pc3,pc4,pc5,pc6,pc7,pc8,pc9,pca,pcb,pcc,pcd,pce,pcf,;
|
||||
pd0,pd1,pd2,pd3,pd4,pd5,pd6,pd7,pd8,pd9,pda,pdb,pdc,pdd,pde,pdf,;
|
||||
pe0,pe1,pe2,pe3,pe4,pe5,pe6,pe7,pe8,pe9,pea,peb,pec,ped,pee,pef,;
|
||||
pf0,pf1,pf2,pf3,pf4,pf5,pf6,pf7,pf8,pf9,pfa,pfb,pfc,pfd,pfe,pff;
|
||||
}
|
||||
#else
|
||||
#ifdef _CCC_
|
||||
// Sajnos csak 192 param‚tert tud leford¡tani.
|
||||
function main(;
|
||||
p00,p01,p02,p03,p04,p05,p06,p07,p08,p09,p0a,p0b,p0c,p0d,p0e,p0f,;
|
||||
p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p1a,p1b,p1c,p1d,p1e,p1f,;
|
||||
p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p2a,p2b,p2c,p2d,p2e,p2f,;
|
||||
p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p3a,p3b,p3c,p3d,p3e,p3f,;
|
||||
p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p4a,p4b,p4c,p4d,p4e,p4f,;
|
||||
p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p5a,p5b,p5c,p5d,p5e,p5f,;
|
||||
p60,p61,p62,p63,p64,p65,p66,p67,p68,p69,p6a,p6b,p6c,p6d,p6e,p6f,;
|
||||
p70,p71,p72,p73,p74,p75,p76,p77,p78,p79,p7a,p7b,p7c,p7d,p7e,p7f,;
|
||||
p80,p81,p82,p83,p84,p85,p86,p87,p88,p89,p8a,p8b,p8c,p8d,p8e,p8f,;
|
||||
p90,p91,p92,p93,p94,p95,p96,p97,p98,p99,p9a,p9b,p9c,p9d,p9e,p9f,;
|
||||
pa0,pa1,pa2,pa3,pa4,pa5,pa6,pa7,pa8,pa9,paa,pab,pac,pad,pae,paf,;
|
||||
pb0,pb1,pb2,pb3,pb4,pb5,pb6,pb7,pb8,pb9,pba,pbb,pbc,pbd,pbe,pbf;
|
||||
)
|
||||
|
||||
local p:={;
|
||||
p00,p01,p02,p03,p04,p05,p06,p07,p08,p09,p0a,p0b,p0c,p0d,p0e,p0f,;
|
||||
p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p1a,p1b,p1c,p1d,p1e,p1f,;
|
||||
p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p2a,p2b,p2c,p2d,p2e,p2f,;
|
||||
p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p3a,p3b,p3c,p3d,p3e,p3f,;
|
||||
p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p4a,p4b,p4c,p4d,p4e,p4f,;
|
||||
p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p5a,p5b,p5c,p5d,p5e,p5f,;
|
||||
p60,p61,p62,p63,p64,p65,p66,p67,p68,p69,p6a,p6b,p6c,p6d,p6e,p6f,;
|
||||
p70,p71,p72,p73,p74,p75,p76,p77,p78,p79,p7a,p7b,p7c,p7d,p7e,p7f,;
|
||||
p80,p81,p82,p83,p84,p85,p86,p87,p88,p89,p8a,p8b,p8c,p8d,p8e,p8f,;
|
||||
p90,p91,p92,p93,p94,p95,p96,p97,p98,p99,p9a,p9b,p9c,p9d,p9e,p9f,;
|
||||
pa0,pa1,pa2,pa3,pa4,pa5,pa6,pa7,pa8,pa9,paa,pab,pac,pad,pae,paf,;
|
||||
pb0,pb1,pb2,pb3,pb4,pb5,pb6,pb7,pb8,pb9,pba,pbb,pbc,pbd,pbe,pbf;
|
||||
}
|
||||
#else
|
||||
// Sajnos csak 16 param‚tert tud leford¡tani.
|
||||
function main(;
|
||||
p00,p01,p02,p03,p04,p05,p06,p07,p08,p09,p0a,p0b,p0c,p0d,p0e,p0f;
|
||||
)
|
||||
|
||||
local p:={;
|
||||
p00,p01,p02,p03,p04,p05,p06,p07,p08,p09,p0a,p0b,p0c,p0d,p0e,p0f;
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
local pos
|
||||
|
||||
if (0!=(pos:=ascan(p,{|x| x==nil})))
|
||||
asize(p,pos-1)
|
||||
endif
|
||||
PDEBUG(outerr(p,newline()))
|
||||
// outerr(p,newline())
|
||||
ccp_appMain(p)
|
||||
// teszt(p1,p2,p3,p4,p5,p6,p7,p8,p9)
|
||||
|
||||
return nil
|
||||
|
||||
//*******************************************************************
|
||||
function cccpp_info()
|
||||
outstd(;
|
||||
"cccppc "+VERSION+", CCC preprocessor, Copyright (c) 1999 Levente Csisz r"+newline()+;
|
||||
""+newline()+;
|
||||
"Usage: cccppc [-I<incdir>] [-o<outputfile>] [-e<extension>]"+newline()+;
|
||||
" [-h] [-v] [-u<User include file>] [-Dname[=text]]"+newline()+;
|
||||
" [-l<number>] <inputfile>"+newline()+;
|
||||
" -I<incdir> : Include directories. -I- deletes the list."+newline()+;
|
||||
" -o<outputfile>: Specify the output file."+newline()+;
|
||||
" Default: <base of input file>.<extension>"+newline()+;
|
||||
" -e<extension> : Specify the output file extension. Default: ppc"+newline()+;
|
||||
" -h : Help. Print this text."+newline()+;
|
||||
" -v : Verbose. Force verbose diagnostic message."+newline()+;
|
||||
" -u<inclfile> : User include file. Load this file before processing"+newline()+;
|
||||
" input file."+newline()+;
|
||||
" -Dname[=text] : Define a macro with name 'name' and assign 'text' to it."+newline()+;
|
||||
" -l<number> : Limit deep of nested include files. 0: no limit."+newline()+;
|
||||
" Default: 32."+newline()+;
|
||||
" -t[r|s] : Translate parser algorithm: -tr tree, -ts sequence."+newline()+;
|
||||
" Default: -tr."+newline()+;
|
||||
"")
|
||||
return nil
|
||||
|
||||
//*******************************************************************
|
||||
function ccp_appMain(p)
|
||||
local opt,hibaSzoveg,isOpt
|
||||
local fileName, incArray
|
||||
local outFile,defExt,verbose,userFiles
|
||||
local defMacros,maxInclDeep
|
||||
local trPrsAlg
|
||||
|
||||
|
||||
errorlevel(0)
|
||||
opt:=parseOpt("-I:,-H,-h,-o:,-e:,-v,-u:,-D:,-l:,-t:",p,@hibaSzoveg)
|
||||
if (!empty(hibaSzoveg))
|
||||
outerr(hibaSzoveg,newline())
|
||||
errorlevel(1)
|
||||
quit
|
||||
endif
|
||||
errorlevel(0)
|
||||
|
||||
if (empty(opt))
|
||||
cccpp_info()
|
||||
errorlevel(1)
|
||||
quit
|
||||
endif
|
||||
#define SHIFTOPT if(!empty(opt)); (adel(opt,1),asize(opt,len(opt)-1)); endif
|
||||
|
||||
// Default be ll¡t sok.
|
||||
fileName:=nil
|
||||
outFile:=nil
|
||||
isOpt:=.t.
|
||||
defExt:="ppc"
|
||||
verbose:=.f.
|
||||
incArray:={}
|
||||
userFiles:={}
|
||||
defMacros:={}
|
||||
maxInclDeep:=32
|
||||
trPrsAlg:=TRPRA_TREE
|
||||
while(!empty(opt))
|
||||
if (isOpt .and. opt[1]=="-H" .or. opt[1]=="-h")
|
||||
cccpp_info()
|
||||
errorlevel(0)
|
||||
quit
|
||||
elseif (isOpt .and. opt[1]=="-I")
|
||||
// Az include lista.
|
||||
/*
|
||||
UNIX-on: Csak a -I <dir> forma az elfogadott.
|
||||
DOSWIN-en: ';'-vel elv lasztva t”bb
|
||||
dir-t is fel lehet sorolni.
|
||||
*/
|
||||
// A -I- T”rli a list t.
|
||||
// Az opt hossz£s g t nem kell vizsg lni, mert a parseOpt
|
||||
// tesz ide egy <20>reset.
|
||||
if (opt[2]=="-")
|
||||
incArray:={}
|
||||
elseif (!opt[2]=="")
|
||||
aappend(incArray,felbont(opt[2],";"))
|
||||
endif
|
||||
SHIFTOPT
|
||||
SHIFTOPT
|
||||
elseif (isOpt .and. opt[1]=="-e")
|
||||
if (empty(opt[2]))
|
||||
outerr("Parameter is missing after "+opt[1])
|
||||
errorlevel(1)
|
||||
quit
|
||||
endif
|
||||
defExt:=opt[2]
|
||||
SHIFTOPT
|
||||
SHIFTOPT
|
||||
elseif (isOpt .and. opt[1]=="-o")
|
||||
if (empty(opt[2]))
|
||||
outerr("Parameter is missing after "+opt[1])
|
||||
errorlevel(1)
|
||||
quit
|
||||
endif
|
||||
outFile:=opt[2]
|
||||
SHIFTOPT
|
||||
SHIFTOPT
|
||||
elseif (isOpt .and. opt[1]=="-v")
|
||||
verbose:=.t.
|
||||
SHIFTOPT
|
||||
elseif (isOpt .and. opt[1]=="-u")
|
||||
if (empty(opt[2]))
|
||||
outerr("Parameter is missing after "+opt[1])
|
||||
errorlevel(1)
|
||||
quit
|
||||
endif
|
||||
aadd(userFiles,opt[2])
|
||||
SHIFTOPT
|
||||
SHIFTOPT
|
||||
elseif (isOpt .and. opt[1]=="-D")
|
||||
if (empty(opt[2]))
|
||||
outerr("Parameter is missing after "+opt[1])
|
||||
errorlevel(1)
|
||||
quit
|
||||
endif
|
||||
aadd(defMacros,makeDefFromPar(opt[2]))
|
||||
SHIFTOPT
|
||||
SHIFTOPT
|
||||
elseif (isOpt .and. opt[1]=="-l")
|
||||
if (empty(opt[2]))
|
||||
outerr("Parameter is missing after "+opt[1])
|
||||
errorlevel(1)
|
||||
quit
|
||||
endif
|
||||
if (!beloleAll(opt[2],"0123456789"))
|
||||
outerr("Parameter should be a number after "+opt[1])
|
||||
errorlevel(1)
|
||||
quit
|
||||
endif
|
||||
maxInclDeep:=val(opt[2])
|
||||
SHIFTOPT
|
||||
SHIFTOPT
|
||||
elseif (isOpt .and. opt[1]=="-t")
|
||||
if (empty(opt[2]))
|
||||
outerr("Parameter is missing after "+opt[1])
|
||||
errorlevel(1)
|
||||
quit
|
||||
endif
|
||||
if !(opt[2]=="r" .or. opt[2]=="s")
|
||||
outerr("Parameter should be 'r' or 's' after "+opt[1])
|
||||
errorlevel(1)
|
||||
quit
|
||||
endif
|
||||
trPrsAlg:=if(opt[2]=="r",TRPRA_TREE,TRPRA_SEQ)
|
||||
SHIFTOPT
|
||||
SHIFTOPT
|
||||
elseif (isOpt .and. opt[1]=="--")
|
||||
isOpt:=.f.
|
||||
SHIFTOPT
|
||||
else
|
||||
// A feldolgozand¢ file.
|
||||
if (fileName==nil)
|
||||
fileName:=opt[1]
|
||||
endif
|
||||
SHIFTOPT
|
||||
endif
|
||||
|
||||
end while
|
||||
|
||||
if (fileName==nil)
|
||||
cccpp_info()
|
||||
errorlevel(1)
|
||||
quit
|
||||
endif
|
||||
|
||||
if (outFile==nil)
|
||||
if (fileName=='-')
|
||||
// A standard inputr¢l kell olvasni.
|
||||
outFile:='-'
|
||||
else
|
||||
outFile:=extractFName(fileName)
|
||||
if (!empty(defExt))
|
||||
outFile+="."+defExt
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
if (!fileName=='-' .and. fileName==outFile)
|
||||
outerr("input and output should be different: "+newline()+;
|
||||
"input : "+toStr(filename)+newline()+;
|
||||
"output: "+toStr(outfile)+newline())
|
||||
errorlevel(1)
|
||||
quit
|
||||
endif
|
||||
|
||||
if (ccp_compile(fileName,outFile,defMacros,userFiles,;
|
||||
incArray,maxInclDeep,verbose,trPrsAlg))
|
||||
errorlevel(1)
|
||||
quit
|
||||
endif
|
||||
|
||||
return nil
|
||||
|
||||
//*******************************************************************
|
||||
static function makeDefFromPar(str)
|
||||
// str: name[=text]
|
||||
local i
|
||||
local name,txt
|
||||
|
||||
if (0!=(i:=at("=",str)))
|
||||
txt:=substr(str,i+1)
|
||||
name:=alltrim(left(str,i-1))
|
||||
else
|
||||
name:=alltrim(str)
|
||||
txt:=""
|
||||
endif
|
||||
|
||||
|
||||
if (empty(name))
|
||||
outerr("-D"+str+": name is missing",newline())
|
||||
errorlevel(1)
|
||||
quit
|
||||
endif
|
||||
|
||||
for i:=1 to len(name)
|
||||
if (!if(i==1,;
|
||||
C.NPARSER:isStartnamechar(substr(name,i,1)),;
|
||||
C.NPARSER:isNamechar(substr(name,i,1))))
|
||||
outerr("-D"+str+": name error",newline())
|
||||
errorlevel(1)
|
||||
quit
|
||||
endif
|
||||
end for
|
||||
|
||||
return {name,txt}
|
||||
|
||||
|
||||
//*******************************************************************
|
||||
static function defMacros2str(defMacros)
|
||||
local i,str
|
||||
|
||||
str:=""
|
||||
for i:=1 to len(defMacros)
|
||||
str+="#define "+defMacros[i][1]+" "+defMacros[i][2]+guessedEOL()
|
||||
end for
|
||||
return str
|
||||
|
||||
//*******************************************************************
|
||||
static function ccp_compile(fileName,outFile,defMacros,userFiles,;
|
||||
incArray,maxInclDeep,verbose,trPrsAlg)
|
||||
// local fr,npr,lpr,hpr,mcr,t,lrd
|
||||
local iArray
|
||||
local fid,doClose,str,wStr
|
||||
local defDict,xtrDict
|
||||
local errorStream
|
||||
local fr,hiba
|
||||
local i
|
||||
local treePrintBlock
|
||||
|
||||
PDEBUG(outerr({filename,outFile,defMacros,userFiles,;
|
||||
incArray,maxInclDeep,verbose},newline()))
|
||||
|
||||
setPGuessEol(newline())
|
||||
|
||||
if (!file(fileName))
|
||||
outerr(fileName+": file not found"+newline())
|
||||
errorlevel(2)
|
||||
quit
|
||||
endif
|
||||
if (outfile=='-')
|
||||
fid:=1
|
||||
doClose:=.f.
|
||||
else
|
||||
if (-1==(fid:=fcreate(outFile)))
|
||||
if (-1==(fid:=fopen(outFile,FO_WRITE)))
|
||||
outerr(outFile+": open error: "+toStr(ferror())+newline())
|
||||
errorlevel(2)
|
||||
quit
|
||||
endif
|
||||
endif
|
||||
doClose:=.t.
|
||||
endif
|
||||
|
||||
hiba:=.f.
|
||||
iArray:=aappend({dirFName(fileName)},incArray)
|
||||
defDict:=C.DEFDICT:onew()
|
||||
xtrDict:=C.XTRDICT:onew()
|
||||
errorStream:={}
|
||||
str:=""
|
||||
if (!hiba .and. !empty(defMacros))
|
||||
str+=defMacros2str(defMacros)
|
||||
endif
|
||||
if (!hiba .and. !empty(userFiles))
|
||||
for i:=1 to len(userFiles)
|
||||
if (nil==(wStr:=stringifyStr(userFiles[i],.t.)))
|
||||
outerr(toStr(userFiles[i])+;
|
||||
" Error: Illegal "+'"'+" and "+"'"+" character "+;
|
||||
"combination in file name."+newline())
|
||||
return .t.
|
||||
endif
|
||||
str+="#include "+wStr+newline()
|
||||
// outerr(str)
|
||||
end for
|
||||
endif
|
||||
if (!hiba .and. !empty(str))
|
||||
fr:=C.SREADER:onew(str,"commandline",errorStream)
|
||||
if (cccpp_processReader(fr,nil,iArray,maxInclDeep,;
|
||||
defDict,xtrDict,errorStream,trPrsAlg))
|
||||
hiba:=.t.
|
||||
endif
|
||||
endif
|
||||
#ifdef OLD
|
||||
if (!hiba .and. userFile!=nil)
|
||||
fr:=C.FREADER:onew(errorStream)
|
||||
FREADER.fr:open("",userFile)
|
||||
if (cccpp_processReader(fr,nil,iArray,maxInclDeep,;
|
||||
defDict,xtrDict,errorStream,trPrsAlg))
|
||||
hiba:=.t.
|
||||
endif
|
||||
endif
|
||||
#endif
|
||||
|
||||
if (!hiba)
|
||||
fr:=C.FREADER:onew(errorStream)
|
||||
FREADER.fr:open("",fileName)
|
||||
if (cccpp_processReader(fr,fid,iArray,maxInclDeep,;
|
||||
defDict,xtrDict,errorStream,trPrsAlg))
|
||||
hiba:=.t.
|
||||
endif
|
||||
endif
|
||||
|
||||
if (doClose)
|
||||
fclose(fid)
|
||||
endif
|
||||
|
||||
if (!empty(verbose))
|
||||
|
||||
outerr("Define sz¢t r: "+newline())
|
||||
DEFDICT.defDict:printStr({|x| outerr(x+newline())})
|
||||
|
||||
outerr("XTranslate sz¢t r: "+newline())
|
||||
XTRDICT.xtrDict:printStr({|x| outerr(x+newline())})
|
||||
|
||||
outerr("XCommand sz¢t r: "+newline())
|
||||
XTRDICT.xtrDict:printStr({|x| outerr(x+newline())},.t.)
|
||||
|
||||
outerr("XTranslate fa: "+newline())
|
||||
treePrintBlock:=;
|
||||
{|node,level| ;
|
||||
outerr(space(level)+TOKEN.node[1]:printToStr()+;
|
||||
if (len(node)>=3 .and. !empty(node[3]),;
|
||||
" // "+EXTRDICT.node[3]:printStr(),""),;
|
||||
newline())}
|
||||
|
||||
evalXTree(XTRDICT.xtrDict:trdicttree,treePrintBlock)
|
||||
|
||||
outerr("XCommand fa: "+newline())
|
||||
evalXTree(XTRDICT.xtrDict:cmdicttree,treePrintBlock)
|
||||
endif
|
||||
|
||||
return hiba
|
||||
|
||||
//*******************************************************************
|
||||
static function evalXTree(nodeList,block,level)
|
||||
local i
|
||||
|
||||
if (level==nil)
|
||||
level:=0
|
||||
endif
|
||||
for i:=1 to len(nodeList)
|
||||
eval(block,nodeList[i],level)
|
||||
if (!empty(nodeList[i][2]))
|
||||
evalXTree(nodeList[i][2],block,level+1)
|
||||
endif
|
||||
end for
|
||||
return nil
|
||||
|
||||
//*******************************************************************
|
||||
|
||||
#ifdef OLD
|
||||
//*******************************************************************
|
||||
static function cccpp_printErrorStream(errorStream)
|
||||
if (!empty(errorStream))
|
||||
evalErrorStream(errorStream,{|x| outerr(x,newline())})
|
||||
asize(errorStream,0)
|
||||
endif
|
||||
return nil
|
||||
|
||||
//*******************************************************************
|
||||
function cccpp_processFile(inputFileName,outFid,;
|
||||
incArray,defDict,xtrdict,errorStream)
|
||||
// Feldolgoz egy fil‚t, Egyenl“re nem v‚gez hiba ellez“rz‚st.
|
||||
|
||||
local fr,lrd,npr,lpr,hpr,mcr,t,inclObj
|
||||
local line,emptyLines
|
||||
|
||||
fr:=C.FREADER:onew(errorStream)
|
||||
FREADER.fr:open("",inputFileName)
|
||||
lrd:=C.LREADER:onew(CTK_BOS,CTK_EOS,READER.fr:name,errorStream)
|
||||
LREADER.lrd:pushReader(fr)
|
||||
npr:=C.NPARSER:onew(lrd,READER.lrd:name,errorStream)
|
||||
lpr:=C.LPARSER:onew(npr,READER.npr:name,errorStream)
|
||||
inclObj:=C.INCL:onew(lrd,incArray)
|
||||
// inclObj:=C.INCL:onew(lrd,{dirFName(filename)})
|
||||
hpr:=C.HPARSER:onew(lpr,READER.lpr:name,;
|
||||
defDict/*C.DEFDICT:onew()*/,xtrDict/*C.XTRDICT:onew()*/,;
|
||||
inclObj,errorStream)
|
||||
mcr:=C.MCONTROL:onew(hpr,READER.hpr:name,;
|
||||
HPARSER.hpr:defDict,HPARSER.hpr:xtrdict,errorStream)
|
||||
|
||||
line:=""
|
||||
emptyLines:=""
|
||||
while(nil!=(t:=PARSER.mcr:read()))
|
||||
// outstd(TOKEN.t:getStr())
|
||||
// wStr:=TOKEN.t:getStr()
|
||||
// fwrite(fid,wStr,len(wStr))
|
||||
if (outFid!=nil)
|
||||
// Itt kell kozmetik zni a sorokat.
|
||||
/*
|
||||
1. šres sorok hossz t null ra reduk ljuk.
|
||||
2. #line el“tti <20>res sorokat t”r”lj<6C>k. (BOS)
|
||||
3. EOS el“tti <20>res sorokat t”r”lj<6C>k.
|
||||
*/
|
||||
if (TOKEN.t:id==TKID_UJSOR)
|
||||
// —j sor. Az <20>res sorokat az emptyLines-ban t roljuk.
|
||||
if (!empty(line))
|
||||
fwrite(outFid,emptyLines)
|
||||
emptyLines:=""
|
||||
fwrite(outFid,line)
|
||||
line:=""
|
||||
fwrite(outFid,TOKEN.t:getStr())
|
||||
else
|
||||
emptyLines+=TOKEN.t:getStr()
|
||||
line:=""
|
||||
endif
|
||||
elseif (TOKEN.t:id==TKID_EOS .or.;
|
||||
TOKEN.t:id==TKID_BOS)
|
||||
// Az EOS ‚s a BOS el“tti <20>res sorokat t”r”lni kell.
|
||||
// Mj.: Itt nincs kezelve az az esetet, amikor nincs
|
||||
// sorv‚gjel az include fil‚ v‚g‚n.
|
||||
if (!empty(line))
|
||||
fwrite(outFid,emptyLines)
|
||||
emptyLines:=""
|
||||
fwrite(outFid,line)
|
||||
line:=""
|
||||
fwrite(outFid,TOKEN.t:getStr())
|
||||
else
|
||||
emptyLines:=""
|
||||
line:=""
|
||||
// Ha az EOS/BOS ¡rni akar valamit, azt kitessz<73>k.
|
||||
fwrite(outFid,TOKEN.t:getStr())
|
||||
endif
|
||||
else
|
||||
line+=TOKEN.t:getStr()
|
||||
endif
|
||||
endif
|
||||
// Itt ki kell olvasni a hib kat.
|
||||
cccpp_printErrorStream(errorStream)
|
||||
end while
|
||||
// Nem kell az utols¢ sorra figyelni, mert mindig j”n egy EOS.
|
||||
|
||||
// Elv‚gezz<7A>k a sz<73>ks‚ges ellen“rz‚seket a fil‚ v‚g‚n.
|
||||
// (Lez ratlan #if, etc)
|
||||
HPARSER.hpr:chkEndOfFile()
|
||||
cccpp_printErrorStream(errorStream)
|
||||
return nil
|
||||
#endif
|
||||
|
||||
//*******************************************************************
|
||||
|
||||
#endif
|
||||
|
||||
@@ -1,438 +0,0 @@
|
||||
/*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
V ltoz sok
|
||||
----------
|
||||
|
||||
Egy bejegyz‚snek a k”vetkez“eket kell tartalmaznia:
|
||||
d tum, a programoz˘ neve, verzi˘ (ha van) a v ltoz s leˇr sa.
|
||||
|
||||
Levente Csisz r <lcsiszar@index.hu>, 1998.01.13
|
||||
|
||||
|
||||
1999.11.07, Csisz r Levente, CCCPPC v0.7.06
|
||||
|
||||
- Źtnevezve CCCPPC-re.
|
||||
|
||||
- Kibocs t s teszt c‚lokra.
|
||||
|
||||
- Hozz vettem az OBJECT k”nyvt rat ‚s az OBJCCC fordˇt˘t.
|
||||
|
||||
- Elbukott a p06-os cteszt-en. (Ures zarojeles makrot nem tudott
|
||||
helyettesiteni.) Ezt kijavitottam.
|
||||
|
||||
- Elbukik a p22-es cteszt-en. (Pontosvesszo, mint sorfolytato
|
||||
karakter.) Ezt egyenlore nem tudtam megtalalni, ugy maradt.
|
||||
|
||||
1999.09.30, Csisz r Levente
|
||||
|
||||
- Elk‚sz<73>lt a C++ v ltozat els“ b‚t ja. Ez a v ltozat lez rva,
|
||||
tov bbi m˘dosˇt s csak m–k”d‚st g tl˘ (pl. elsz ll s) hiba
|
||||
eset‚n lehets‚ges.
|
||||
|
||||
1999.09.28, Csisz r Levente, v0.7.05
|
||||
|
||||
- Az stdout-ot nem kell lez rni.
|
||||
|
||||
1999.09.25, Csisz r Levente, v0.7.04
|
||||
|
||||
- V‚gtelen ciklusba ker<65>lt az ilyen esetekben:
|
||||
|
||||
#xtranslate a [[b]] => bb
|
||||
|
||||
a
|
||||
|
||||
Mivel az 'a' sor eset‚n a '[[b]]'-ben a b nem illeszkedik,
|
||||
ez‚rt a bels“ alternatˇv t mindig Łjra pr˘b lta.
|
||||
|
||||
1999.09.21, Csisz r Levente, v0.7.03
|
||||
|
||||
- Az eqNextToken elsz llt, ha valamelyik nextToken nil volt.
|
||||
|
||||
Pl. #xtranslate a <a> => a
|
||||
|
||||
1999.06.16, Csisz r Levente, v0.7.02
|
||||
|
||||
- Elemz‚si hiba volt az xtranslate parancsokban. He egy norm l
|
||||
token sor k‚t alternatˇva k”z‚ esett, akkor azt t”r”lte.
|
||||
|
||||
- A '#' parancsokra ugyanŁgy a r”vidˇtett n‚v egyez‚s ‚rv‚nyes,
|
||||
mint az command-okra. (Teh t #define helyett elfogadja a
|
||||
'#defi'-t, etc.)
|
||||
|
||||
- HPRERR_XTRUNDEFRM hibajelz‚sben a sz”veg javˇtva, a hi nyolt
|
||||
match marker-t kiˇrja.
|
||||
|
||||
- CCC-ben 192 param‚ter vesz t.
|
||||
|
||||
1999.06.10, Csisz r Levente, v0.7.01
|
||||
|
||||
- Optimaliz ci˘k: a define vagy az xtranslate elemz“t csak akkor
|
||||
hˇvja, ha t‚nylegesen van mit elemezni<6E>k.
|
||||
|
||||
- A t”bb elem– alternatˇv k kezel‚s rossz volt.
|
||||
|
||||
- A hparser-ben az llapotok sz mok, nem stringek.
|
||||
|
||||
- A TKID_XXX-ek sz mok ‚s nem stringek.
|
||||
|
||||
1999.06.09, Csisz r Levente, v0.7.00
|
||||
|
||||
- Az elemz‚st a translate/command f val v‚gzi.
|
||||
A -t kapcsol˘val szab lyozhat˘, hogy melyik m˘dszert
|
||||
haszn lja.
|
||||
|
||||
1999.06.07, Csisz r Levente, v0.6.05
|
||||
|
||||
- A tokenekben t rolja, hogy r”vidˇtve (#translate vagy
|
||||
#xtranslate) kell-e illeszteni egy #translate/#command bal
|
||||
oldal n.
|
||||
|
||||
- —j 'r”vidˇtett illeszt‚s' k˘d.
|
||||
|
||||
- A stringeket case insensitˇven kell illeszteni, ‚s r juk is
|
||||
‚rv‚nyes a r”vˇdˇtett illeszt‚si szab ly.
|
||||
|
||||
- Fel‚pˇti a translate/command f t, de egyenl“re nem haszn lja fel
|
||||
az elemz‚skor.
|
||||
|
||||
1999.06.03, Csisz r Levente, v0.6.04
|
||||
|
||||
- T”bb user include fil‚t is elfogad.
|
||||
|
||||
1999.05.31, Csisz r Levente, v0.6.03
|
||||
|
||||
- A user include fil‚b“l '#include file' sort gy rt ‚s
|
||||
feldolgozza. Śgy a -I-k”z”tt is keresi ‚s makr˘k feldolgoz s val
|
||||
is ”ssze van vonva.
|
||||
|
||||
1999.05.29, Csisz r Levente, v0.6.02
|
||||
|
||||
- '-l' helyett '-p' volt az include m‚lys‚g kapcsol˘ a
|
||||
param‚terek feldolgoz s n l.
|
||||
|
||||
- Help sz”veg javˇt sok.
|
||||
|
||||
- A getopt() rossz volt, ha egy '-'-os opci˘ param‚teresnek volt
|
||||
defini lva, de nem adtunk meg param‚tert.
|
||||
|
||||
1999.05.28, Csisz r Levente, v0.6.01
|
||||
|
||||
- Include m‚lys‚g maximaliz l sa.
|
||||
|
||||
- Hib ra be llˇtja az errorlevel()-t.
|
||||
|
||||
- Ha az el“feldolgoz s sor n hiba volt (-D,-u), akkor meg ll.
|
||||
|
||||
- Miel“tt megnyitn az output fil‚t, ellen“rzi, hogy az input
|
||||
l‚tezik-e.
|
||||
|
||||
- A default hibakijelz“ meg‚rti a $<sz m>-ot a hibastringben.
|
||||
|
||||
- Sz˘t rak kiˇr sa elemenk‚nt t”rt‚nik.
|
||||
|
||||
Kell m‚g:
|
||||
|
||||
- A teszt k”rnyezetben minden ‚rdekes esetre teszt program.
|
||||
- Tesztel‚s.
|
||||
- Gyorsˇt s.
|
||||
|
||||
1999.05.27, Csisz r Levente, v0.6.00
|
||||
|
||||
- Parancssori makr˘ megad si lehet“s‚g.
|
||||
|
||||
- #command,#translate,#xcommand,#xtranslate
|
||||
|
||||
- Az <20>res sorokat Łgy kezeli, ahogy kell.
|
||||
|
||||
- A #line ott van, ahol kell.
|
||||
|
||||
- #error, #stdout.
|
||||
|
||||
- Kell m‚g:
|
||||
|
||||
- Include m‚lys‚g maximaliz l sa.
|
||||
- Sz˘t rak kiˇr sa elemenk‚nt t”rt‚njen.
|
||||
- Hib ra llˇtsa be az errorlevel()-t.
|
||||
- Nagyobb hib kra lljon meg.
|
||||
- A default hibakijelz“ ‚rtse meg a $<sz m>-ot a hiba
|
||||
stringben, ‚s helyettesˇtse be a megfelel“ param‚terrel.
|
||||
- A teszt k”rnyezetben minden ‚rdekes esetre teszt program.
|
||||
- Tesztel‚s
|
||||
- Gyorsˇt s.
|
||||
|
||||
|
||||
1999.05.26, Csisz r Levente, v0.5.00
|
||||
|
||||
- Hibakijelz‚s OK.
|
||||
Mj.: Ha nem tal lja a fil‚t, akkor tŁl sok hibajelz‚st ad.
|
||||
|
||||
- Kompatibilis helyettesˇt‚si m˘d.
|
||||
|
||||
- #xcommand-ok kis hib val: Csak sor elej‚n kezdi el
|
||||
helyettesˇteni, de azt nem n‚zi, hogy a teljes sort
|
||||
helyettesˇtette-e.
|
||||
|
||||
- #define-n‚l a jobb oldal v‚g‚r“l a space-kat lev gja.
|
||||
|
||||
- A kifejez‚s teszt program tker<65>lt a cccppalx-be.
|
||||
|
||||
- Rendkˇv<CB87>l lassŁ (3m.157s a konyvel.prg lefordˇt sa).
|
||||
|
||||
- Kell:
|
||||
- <20>les adatokon tesztelni.
|
||||
- Gyorsˇtani.
|
||||
- #line el“tt/ut n az <20>res sorokat t”r”lni.
|
||||
|
||||
1999.05.24, Csisz r Levente, v0.4.03
|
||||
|
||||
- Helyettesˇt‚sek.
|
||||
|
||||
- #endif-re nem kell hibajelz‚s.
|
||||
|
||||
1999.05.24, Csisz r Levente, v0.4.02
|
||||
|
||||
- errorStream-es hibakezel‚s.
|
||||
|
||||
- S<>rg“sen kell:
|
||||
|
||||
- Helyettesˇt‚sek. (A string hat rol˘k is!)
|
||||
|
||||
- Hiba kijelz‚s:
|
||||
- Hi nyz˘ #endif
|
||||
- Hib k az #xtranslate-ekben.
|
||||
|
||||
- Parancssori makr˘ definˇci˘k.
|
||||
|
||||
- Kell m‚g:
|
||||
|
||||
- Az include m‚lys‚g maximaliz l sa.
|
||||
|
||||
- R‚szletesebb hiba<62>zenetek.
|
||||
|
||||
- Kapcsol˘, hogy csak unixos fil‚neveket fogadjon el.
|
||||
|
||||
- Space-ek a /* */ el“tt.
|
||||
|
||||
- šres sorok lenyel‚se.
|
||||
|
||||
1999.05.21, Csisz r Levente, v0.4.01
|
||||
|
||||
- Minden match ‚s minden result marker. (Nincs tesztelve.)
|
||||
|
||||
- '\' kezel‚se.
|
||||
|
||||
- Parancssorban meg lehet include fil‚t adni.
|
||||
Mj.: Tesztelni kell, mi van, ha ez az include file k˘dot
|
||||
gener l.
|
||||
|
||||
- Az xcommand, translate, command ideiglenesen xtranslate-k‚nt
|
||||
van kezelve.
|
||||
|
||||
1999.05.19, Csisz r Levente, v0.4.00
|
||||
|
||||
- #line, #include, parancssori param‚terez‚s.
|
||||
|
||||
- Hi nyzik:
|
||||
|
||||
- '\' kezel‚se a xtranslate definici˘kban.
|
||||
|
||||
- #line el“tt ut n az <20>res sorok lenyel‚se.
|
||||
|
||||
- #if ne nyŁljon tŁl a fil‚n. (Ezt tesztelni kell!)
|
||||
|
||||
- A '-' input fil‚ a standard input legyen az FREADER-ben.
|
||||
|
||||
- Parancssorban meg lehessen adni olyan include fil‚t, amit
|
||||
beolvas (std.ch).
|
||||
|
||||
- Parancssorban meg lehessen #define makr˘ definˇci˘t.
|
||||
|
||||
- Az xtranslate algoritmusa jobban hasonlˇtson a spec-hez.
|
||||
|
||||
Mj.: A spec el“r“l megy h trafel‚, de nem tudni, hogyan l‚p
|
||||
vissza. A jelenlegi algoritmusunk h tulr˘l j”n el“re.
|
||||
|
||||
- Helyettesˇt‚sek kezel‚se (kapcsol˘val szab lyozhat˘ legyen),
|
||||
nagybet–sˇt‚sek, string hat rol˘k, lez ratlan stringek
|
||||
helyes kezel‚se.
|
||||
|
||||
Pl: '**' -> '^', '.t.' ->'.T.', 'a' -> "a" etc.
|
||||
|
||||
- Kapcsol˘val szab lyozhat˘ legyen, hogy a /* */ megjegyz‚s el“l
|
||||
lenyelje-e a space-kat. Illetve, hagyjon-e egy space-t.
|
||||
|
||||
a /* huhu */b -> ab
|
||||
|
||||
A fenti p‚ld ban a fordˇt˘ az ab azonosˇt˘t fogja keresni,
|
||||
holott a spec-ben ez lefordul.
|
||||
|
||||
- Rossz xtranslate definˇci˘k kijelz‚se:
|
||||
- hi nyz˘ ']'
|
||||
- k‚t‚rtelm– helyettesˇt‚s.
|
||||
- Hi nyz˘ vagy dupl n defini lt marker nevek.
|
||||
|
||||
- Hibafolyam nincs k<>l”n.
|
||||
|
||||
- xtranslate p rjai. (xcommand, etc)
|
||||
|
||||
- space-ek bel”v‚se.
|
||||
|
||||
- A t”bbi match marker.
|
||||
|
||||
|
||||
1999.05.18, Csisz r Levente, v0.3.01
|
||||
|
||||
- #ifdef,#ifndef,#else,#endif
|
||||
|
||||
1999.05.15, Csisz r Levente, v0.3.00
|
||||
|
||||
- —j regular match marker illeszt“ k˘d elemz“ f kkal.
|
||||
|
||||
- Tokeniz l s.
|
||||
|
||||
- '&&' megjegyz‚s.
|
||||
|
||||
Hi nyzik:
|
||||
|
||||
- Tesztelni a k<>l”nb”z“ spec eseteket:
|
||||
- A tokeneket case szenzitˇven illeszti-e az xtranslate.
|
||||
- A stringeket hogyan illeszti.
|
||||
- Ha az alternatˇv k nem egyeznek meg a jobb ‚s a bal
|
||||
oldalon (bal oldalon alternatˇva, a jobb oldalon nem),
|
||||
vagy nincs elegend“ sz mŁ alternatˇva:
|
||||
|
||||
#xtranslate HUHU [<a>] => f(<a>)
|
||||
#xtranslate HUHU <a> => f([<a>])
|
||||
|
||||
#xtranslate HUHU [a <a>] [b <b>] => f([<a>,<b>,])
|
||||
HUHU a 1
|
||||
HUHU b 2
|
||||
HUHU a 1 b 1
|
||||
HUHU a 1 a 1 b 1
|
||||
HUHU a 1 b 1 b 1
|
||||
HUHU a 1 a 1
|
||||
HUHU b 1 b 1
|
||||
|
||||
Mj.: Ilyenkor ha egy tal n volt illeszt‚s, akkor az
|
||||
utols˘t behelyettesˇti.
|
||||
|
||||
|
||||
- Helyettesˇt‚sek kezel‚se (kapcsol˘val szab lyozhat˘ legyen),
|
||||
nagybet–sˇt‚sek, string hat rol˘k, lez ratlan stringek
|
||||
helyes kezel‚se.
|
||||
|
||||
Pl: '**' -> '^', '.t.' ->'.T.', 'a' -> "a" etc.
|
||||
|
||||
- Kapcsol˘val szab lyozhat˘ legyen, hogy a /* */ megjegyz‚s el“l
|
||||
lenyelje-e a space-kat. Illetve, hagyjon-e egy space-t.
|
||||
|
||||
a /* huhu */b -> ab
|
||||
|
||||
A fenti p‚ld ban a fordˇt˘ az ab azonosˇt˘t fogja keresni,
|
||||
holott a spec-ben ez lefordul.
|
||||
|
||||
- Rossz xtranslate definˇci˘k kijelz‚se:
|
||||
- hi nyz˘ ']'
|
||||
- k‚t‚rtelm– helyettesˇt‚s.
|
||||
- Hi nyz˘ vagy dupl n defini lt marker nevek.
|
||||
|
||||
- Hibafolyam nincs k<>l”n.
|
||||
|
||||
- xtranslate p rjai.
|
||||
|
||||
- space-ek bel”v‚se.
|
||||
|
||||
- A t”bbi match marker.
|
||||
|
||||
- A #ifdef, ‚s a #include, #line
|
||||
|
||||
- Elemi gyorsˇt sok:
|
||||
- A kommenteket nem kell t rolni.
|
||||
- A classify-oknak sz moknak kellene lennie, hogy az elemz“
|
||||
f kn l ne kelljen keresni, hanem a sz mmal lehessen
|
||||
indexelni.
|
||||
- A kifejez‚shat r elemz‚sn‚l minden tokenre t”bbsz”r is
|
||||
indˇt elemz“ f t, ezt optimaliz lni lehet, Łgy, hogy
|
||||
kisz moljuk, honnan fog indulni.
|
||||
|
||||
|
||||
1999.05.05, Csisz r Levente, v0.2.04
|
||||
|
||||
- Alternatˇv kat illeszt.
|
||||
|
||||
- List ‚s regular match markereket illeszt, minden markert
|
||||
helyettesˇt, de a space-k egyenl“re m‚g nem helyesek.
|
||||
|
||||
- A sorv‚gjeleket kezeli crlf ‚s lf-es form ban is.
|
||||
|
||||
Hi nyzik:
|
||||
|
||||
- Rossz xtranslate definˇci˘k kijelz‚se:
|
||||
- hi nyz˘ ']'
|
||||
- k‚t‚rtelm– helyettesˇt‚s.
|
||||
|
||||
- Hibafolyam nincs k<>l”n.
|
||||
|
||||
- Nincs tokeniz l s (pedig ˇgy kell illeszteni)
|
||||
|
||||
- xtranslate p rjai.
|
||||
|
||||
- space-ek bel”v‚se.
|
||||
|
||||
- A t”bbi match marker.
|
||||
|
||||
- A #ifdef, ‚s a #include, #line
|
||||
|
||||
|
||||
1999.04.26, Csisz r Levente, v0.2.03
|
||||
|
||||
- Az xtranslate parancsokban elv‚gzi a helyettesˇt‚st, ha nincs
|
||||
benne marker (egyik oldalon sem) ‚s nincs benne alternatˇva
|
||||
(egyik oldalon sem).
|
||||
|
||||
- Hi nyzik:
|
||||
- markerek illeszt‚se, helyettesˇt‚se.
|
||||
|
||||
- Alternatˇv k illeszt‚se, helyettesˇt‚se.
|
||||
|
||||
- xtranslate parancs elemz‚s‚n‚l jelezni kell, ha van
|
||||
hi nyz˘ ']'
|
||||
|
||||
- xtranslate parancs elemz‚s‚n‚l jelezni kell, ha
|
||||
t”bb‚rtelm– a parancs.
|
||||
|
||||
- Hibakezel‚s (a token stream-be betett hiba tokenek
|
||||
k<>l”n kezel‚se ‚s kiˇr sa).
|
||||
Mj.: Ezeknek a tokeneknek k<>l”n stream-et kellene
|
||||
rendszeresˇteni, hogy biztosan ne vesszenek
|
||||
el.
|
||||
|
||||
|
||||
1999.04.24, Csisz r Levente, v0.2.02
|
||||
|
||||
- K˘d teljesen tˇrva objektumosra.
|
||||
|
||||
- A define teljesen k‚sz.
|
||||
|
||||
- Az xtranslate parancsokat beolvassa, de a helyettesˇt‚st nem
|
||||
v‚gzi el.
|
||||
|
||||
- include, ifdef, undef, hibakezel‚s hi nyzik.
|
||||
|
||||
1999.02.07, Csisz r Levente, v0.2.01
|
||||
|
||||
- wmkgen 1.2.03
|
||||
|
||||
1998.09.08, Csisz r Levente, v0.2.00
|
||||
|
||||
- Els“ kibocs s: #ifdef,#ifndef,#define,#undef,#include
|
||||
makr˘parancsok.
|
||||
™sszesen 4 nap alatt k‚sz<73>lt:
|
||||
1998.09.01, 1998.09.04, 1998.09.07, 1998.09.08.
|
||||
|
||||
1998.09.01, Csisz r Levente, v0.1.00
|
||||
|
||||
- Indul˘ v ltozat.
|
||||
|
||||
@@ -1,10 +0,0 @@
|
||||
/*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
//*******************************************************************
|
||||
#define CHAR_CR chr(13)
|
||||
#define CHAR_LF chr(10)
|
||||
#define CHAR_CR_LF (CHAR_CR+CHAR_LF)
|
||||
//*******************************************************************
|
||||
|
||||
@@ -1,37 +0,0 @@
|
||||
//
|
||||
// $Id$
|
||||
//
|
||||
|
||||
//*******************************************************************
|
||||
// creader.cls: Źltal nos 'streamb“l karaktert' olvas˘ oszt ly.
|
||||
// 1999, Csisz r Levente
|
||||
|
||||
// Ebb“l ”r”k”l a fil‚ ‚s a string olvas˘ oszt ly.
|
||||
// A val˘di lesz rmazottaknak a readItem()-et kell implement lniuk.
|
||||
|
||||
class CREADER READER
|
||||
|
||||
attrib line
|
||||
attrib pos // 0, ha a pozˇci˘ ismeretlen.
|
||||
|
||||
rmethod read()
|
||||
// A super:read()-al olvassa a stream-et.
|
||||
// Az egym s ut n k”vetkez“ CR ‚s LF karaktereket egy CR_LF (kett“
|
||||
// hosszŁ) karakterr‚ alakˇtja.
|
||||
// Sz molja a sorokat ‚s nyilv ntartja a pozˇci˘t.
|
||||
|
||||
rmethod unread(item)
|
||||
// Visszateszi az item-et az inputra.
|
||||
// Vissza sz molja a sorokat. —jsor eset‚n a pozˇci˘t null zza.
|
||||
|
||||
nmethod getFile()
|
||||
nmethod getLine()
|
||||
nmethod getPos()
|
||||
|
||||
rmethod oinit(name,errorStream)
|
||||
// Inicializ lja az objektumot.
|
||||
|
||||
metaclass
|
||||
|
||||
rmethod onew(name,errorStream)
|
||||
|
||||
@@ -1,308 +0,0 @@
|
||||
// CREADER.och oszt ly implement ci¢.
|
||||
// Gener lva: 1999.06.10, 14:39:56, OBJCCC v2.2.03
|
||||
// Meta oszt ly defin¡ci¢: Van
|
||||
|
||||
|
||||
#ifndef CA_READER_N
|
||||
#ifdef _STRICT_PARENT_
|
||||
#ifdef _CA_CM_ONLY_
|
||||
#include "READER.och"
|
||||
#else // _CA_CM_ONLY_
|
||||
#define _CA_CM_ONLY_
|
||||
#include "READER.och"
|
||||
#undef _CA_CM_ONLY_
|
||||
#endif // _CA_CM_ONLY_
|
||||
#else
|
||||
#include "READER.och"
|
||||
#endif // _STRICT_PARENT_
|
||||
#endif // CA_READER_N
|
||||
|
||||
#ifndef _CA_CM_ONLY_
|
||||
#ifndef _CREADER_OCH_
|
||||
#define _CREADER_OCH_
|
||||
|
||||
|
||||
#xtranslate CREADER.<obj>:name => <obj>\[CA_OBJECT_N+1\]
|
||||
#xtranslate CREADER.<obj>:errorstream => <obj>\[CA_OBJECT_N+2\]
|
||||
#xtranslate CREADER.<obj>:tbuffer => <obj>\[CA_OBJECT_N+3\]
|
||||
|
||||
|
||||
#xtranslate CREADER.<obj>:oinit => (OBJGEN.(<obj>):(4))
|
||||
#xtranslate CREADER.<obj>:getclass => (OBJGEN.(<obj>):(5))
|
||||
#xtranslate CREADER.<obj>:isclass => (OBJGEN.(<obj>):(6))
|
||||
#xtranslate CREADER.<obj>:getattrib => (OBJGEN.(<obj>):(7))
|
||||
#xtranslate CREADER.<obj>:setattrib => (OBJGEN.(<obj>):(8))
|
||||
#xtranslate CREADER.<obj>:read => (OBJGEN.(<obj>):(CM_OBJECT_N+1))
|
||||
#xtranslate CREADER.<obj>:unread => (OBJGEN.(<obj>):(CM_OBJECT_N+2))
|
||||
#xtranslate CREADER.<obj>:readtbuffer => (OBJGEN.(<obj>):(CM_OBJECT_N+3))
|
||||
#xtranslate CREADER.<obj>:arraytbuffer => (OBJGEN.(<obj>):(CM_OBJECT_N+4))
|
||||
#xtranslate CREADER.<obj>:readitem => (OBJGEN.(<obj>):(CM_OBJECT_N+5))
|
||||
#xtranslate CREADER.<obj>:iserror => (OBJGEN.(<obj>):(CM_OBJECT_N+6))
|
||||
#xtranslate CREADER.<obj>:adderror => (OBJGEN.(<obj>):(CM_OBJECT_N+7))
|
||||
#xtranslate CREADER.<obj>:destruct => (OBJGEN.(<obj>):(CM_OBJECT_N+8))
|
||||
|
||||
|
||||
#xtranslate CREADER.<obj>:line => <obj>\[CA_READER_N+1\]
|
||||
#xtranslate CREADER.<obj>:pos => <obj>\[CA_READER_N+2\]
|
||||
|
||||
// ™r”k”lve: read()
|
||||
// ™r”k”lve: unread(item)
|
||||
// Specifik lva: getfile()
|
||||
// Specifik lva: getline()
|
||||
// Specifik lva: getpos()
|
||||
// ™r”k”lve: oinit(name,errorStream)
|
||||
|
||||
// ™r”k”lve: read()
|
||||
// ™r”k”lve: unread(item)
|
||||
#xtranslate CREADER.<obj>:getfile => (OBJGEN.(<obj>):(CM_READER_N+1))
|
||||
#xtranslate CREADER.<obj>:getline => (OBJGEN.(<obj>):(CM_READER_N+2))
|
||||
#xtranslate CREADER.<obj>:getpos => (OBJGEN.(<obj>):(CM_READER_N+3))
|
||||
// ™r”k”lve: oinit(name,errorStream)
|
||||
|
||||
#endif // _CREADER_OCH_
|
||||
#endif // _CA_CM_ONLY_
|
||||
|
||||
#ifndef CA_CREADER_N
|
||||
#define CA_CREADER_N CA_READER_N+2
|
||||
#define CM_CREADER_N CM_READER_N+3
|
||||
#endif // CA_CREADER_N
|
||||
|
||||
#ifndef _CA_CM_ONLY_
|
||||
#ifndef _CREADERCLASS_OCH_
|
||||
#define _CREADERCLASS_OCH_
|
||||
|
||||
**********************************************************************
|
||||
#xtranslate C.CREADER:<m> => (CREADERCLASS.clCREADER():<m>)
|
||||
#xtranslate C.CREADER:self() => (clCREADER())
|
||||
|
||||
|
||||
#xtranslate CREADERCLASS.<obj>:parent => <obj>\[CA_OBJECT_N+1\]
|
||||
#xtranslate CREADERCLASS.<obj>:name => <obj>\[CA_OBJECT_N+2\]
|
||||
#xtranslate CREADERCLASS.<obj>:objsize => <obj>\[CA_OBJECT_N+3\]
|
||||
#xtranslate CREADERCLASS.<obj>:attribs => <obj>\[CA_OBJECT_N+4\]
|
||||
#xtranslate CREADERCLASS.<obj>:methods => <obj>\[CA_OBJECT_N+5\]
|
||||
#xtranslate CREADERCLASS.<obj>:classid => <obj>\[CA_OBJECT_N+6\]
|
||||
#xtranslate CREADERCLASS.<obj>:parentclassids => <obj>\[CA_OBJECT_N+7\]
|
||||
#xtranslate CREADERCLASS.<obj>:amblock => <obj>\[CA_OBJECT_N+8\]
|
||||
#xtranslate CREADERCLASS.<obj>:methodsblock => <obj>\[CA_OBJECT_N+9\]
|
||||
#xtranslate CREADERCLASS.<obj>:objmethodsimplement => <obj>\[CA_OBJECT_N+10\]
|
||||
|
||||
|
||||
#xtranslate CREADERCLASS.<obj>:oinit => (OBJGEN.(<obj>):(4))
|
||||
#xtranslate CREADERCLASS.<obj>:getclass => (OBJGEN.(<obj>):(5))
|
||||
#xtranslate CREADERCLASS.<obj>:isclass => (OBJGEN.(<obj>):(6))
|
||||
#xtranslate CREADERCLASS.<obj>:getattrib => (OBJGEN.(<obj>):(7))
|
||||
#xtranslate CREADERCLASS.<obj>:setattrib => (OBJGEN.(<obj>):(8))
|
||||
#xtranslate CREADERCLASS.<obj>:onew => (OBJGEN.(<obj>):(CM_OBJECT_N+1))
|
||||
#xtranslate CREADERCLASS.<obj>:ocreate => (OBJGEN.(<obj>):(CM_OBJECT_N+2))
|
||||
#xtranslate CREADERCLASS.<obj>:rawoinit => (OBJGEN.(<obj>):(CM_OBJECT_N+3))
|
||||
#xtranslate CREADERCLASS.<obj>:oinitclass => (OBJGEN.(<obj>):(CM_OBJECT_N+4))
|
||||
#xtranslate CREADERCLASS.<obj>:getmethodsimplement => (OBJGEN.(<obj>):(CM_OBJECT_N+5))
|
||||
#xtranslate CREADERCLASS.<obj>:attribidx => (OBJGEN.(<obj>):(CM_OBJECT_N+6))
|
||||
#xtranslate CREADERCLASS.<obj>:needclassid => (OBJGEN.(<obj>):(CM_OBJECT_N+7))
|
||||
#xtranslate CREADERCLASS.<obj>:isinheritfrom => (OBJGEN.(<obj>):(CM_OBJECT_N+8))
|
||||
|
||||
|
||||
|
||||
// ™r”k”lve: onew(name,errorStream)
|
||||
|
||||
// ™r”k”lve: onew(name,errorStream)
|
||||
|
||||
#endif // _CREADERCLASS_OCH_
|
||||
#endif // _CA_CM_ONLY_
|
||||
|
||||
#ifndef CA_CREADERCLASS_N
|
||||
#define CA_CREADERCLASS_N CA_READERCLASS_N+0
|
||||
#define CM_CREADERCLASS_N CM_READERCLASS_N+0
|
||||
#endif // CA_CREADERCLASS_N
|
||||
|
||||
|
||||
**********************************************************************
|
||||
#ifdef _CREADER_PRG_
|
||||
#ifndef _CREADER_PRG_OCH_
|
||||
#define _CREADER_PRG_OCH_
|
||||
|
||||
|
||||
**********************************************************************
|
||||
#xtranslate othis:<m> => CREADER.(othis):<m>
|
||||
#xtranslate thisclass:<m> => CREADERCLASS.(this:getClass()):<m>
|
||||
#define CTHIS CREADER
|
||||
|
||||
|
||||
**********************************************************************
|
||||
#xtranslate this:<m> => CREADER.(this):<m>
|
||||
|
||||
#xcommand implement read() => static function read(this)
|
||||
#xcommand implement unread(item) => static function unread(this,item)
|
||||
#xcommand implement getfile() => static function getfile(this)
|
||||
#xcommand implement getline() => static function getline(this)
|
||||
#xcommand implement getpos() => static function getpos(this)
|
||||
#xcommand implement oinit(name,errorStream) => ;
|
||||
static function oinit(this,name,errorStream)
|
||||
|
||||
#ifdef _IMPLEMENT_EXPORT_
|
||||
#xcommand implement export read() => function read(this)
|
||||
#xcommand implement export unread(item) => function unread(this,item)
|
||||
#xcommand implement export getfile() => function getfile(this)
|
||||
#xcommand implement export getline() => function getline(this)
|
||||
#xcommand implement export getpos() => function getpos(this)
|
||||
#xcommand implement export oinit(name,errorStream) => ;
|
||||
function oinit(this,name,errorStream)
|
||||
#endif // _IMPLEMENT_EXPORT_
|
||||
|
||||
#xtranslate super:oinit => (OBJGENM.(eval(BEHAVIOR.clREADER():objmethodsimplement)).(this):(4))
|
||||
#xtranslate super:getclass => (OBJGENM.(eval(BEHAVIOR.clREADER():objmethodsimplement)).(this):(5))
|
||||
#xtranslate super:isclass => (OBJGENM.(eval(BEHAVIOR.clREADER():objmethodsimplement)).(this):(6))
|
||||
#xtranslate super:getattrib => (OBJGENM.(eval(BEHAVIOR.clREADER():objmethodsimplement)).(this):(7))
|
||||
#xtranslate super:setattrib => (OBJGENM.(eval(BEHAVIOR.clREADER():objmethodsimplement)).(this):(8))
|
||||
#xtranslate super:read => (OBJGENM.(eval(BEHAVIOR.clREADER():objmethodsimplement)).(this):(CM_OBJECT_N+1))
|
||||
#xtranslate super:unread => (OBJGENM.(eval(BEHAVIOR.clREADER():objmethodsimplement)).(this):(CM_OBJECT_N+2))
|
||||
#xtranslate super:readtbuffer => (OBJGENM.(eval(BEHAVIOR.clREADER():objmethodsimplement)).(this):(CM_OBJECT_N+3))
|
||||
#xtranslate super:arraytbuffer => (OBJGENM.(eval(BEHAVIOR.clREADER():objmethodsimplement)).(this):(CM_OBJECT_N+4))
|
||||
#xtranslate super:readitem => (OBJGENM.(eval(BEHAVIOR.clREADER():objmethodsimplement)).(this):(CM_OBJECT_N+5))
|
||||
#xtranslate super:iserror => (OBJGENM.(eval(BEHAVIOR.clREADER():objmethodsimplement)).(this):(CM_OBJECT_N+6))
|
||||
#xtranslate super:adderror => (OBJGENM.(eval(BEHAVIOR.clREADER():objmethodsimplement)).(this):(CM_OBJECT_N+7))
|
||||
#xtranslate super:destruct => (OBJGENM.(eval(BEHAVIOR.clREADER():objmethodsimplement)).(this):(CM_OBJECT_N+8))
|
||||
|
||||
**********************************************************************
|
||||
static function setCMethods(pOsztaly)
|
||||
// Egy t”mb”t felt”lt az oszt ly m–veleti blokkjaival.
|
||||
pOsztaly[(CM_OBJECT_N+1)]:={|this| read(this)}
|
||||
pOsztaly[(CM_OBJECT_N+2)]:={|this,item| unread(this,item)}
|
||||
pOsztaly[(CM_READER_N+1)]:={|this| getfile(this)}
|
||||
pOsztaly[(CM_READER_N+2)]:={|this| getline(this)}
|
||||
pOsztaly[(CM_READER_N+3)]:={|this| getpos(this)}
|
||||
pOsztaly[(4)]:={|this,name,errorStream| oinit(this,name,errorStream)}
|
||||
return pOsztaly
|
||||
|
||||
**********************************************************************
|
||||
static function setCams(ta,tm)
|
||||
// Egy t”mb”t felt”lt az oszt ly ltal def. objektumok attrib£tumaival ‚s m–veleteivel.
|
||||
ta[CA_READER_N+1-CA_NIL_N] := {CA_READER_N+1,'line',nil}
|
||||
ta[CA_READER_N+2-CA_NIL_N] := {CA_READER_N+2,'pos', }
|
||||
|
||||
tm[(CM_OBJECT_N+1)-CM_NIL_N] := {(CM_OBJECT_N+1),'read','',nil}
|
||||
tm[(CM_OBJECT_N+2)-CM_NIL_N] := {(CM_OBJECT_N+2),'unread','item',nil}
|
||||
tm[(CM_READER_N+1)-CM_NIL_N] := {(CM_READER_N+1),'getfile','',nil}
|
||||
tm[(CM_READER_N+2)-CM_NIL_N] := {(CM_READER_N+2),'getline','',nil}
|
||||
tm[(CM_READER_N+3)-CM_NIL_N] := {(CM_READER_N+3),'getpos','',nil}
|
||||
tm[(4)-CM_NIL_N] := {(4),'oinit','name,errorStream',nil}
|
||||
return nil
|
||||
|
||||
#ifndef _NO_CLCREADER_
|
||||
#ifdef _STRICT_PARENT_
|
||||
#ifdef _CA_CM_ONLY_
|
||||
#include "meta.och"
|
||||
#else // _CA_CM_ONLY_
|
||||
#define _CA_CM_ONLY_
|
||||
#include "meta.och"
|
||||
#undef _CA_CM_ONLY_
|
||||
#endif // _CA_CM_ONLY_
|
||||
#else
|
||||
#include "meta.och"
|
||||
#endif // _STRICT_PARENT_
|
||||
**********************************************************************
|
||||
function clCREADER()
|
||||
// El“szedi az oszt lyt. (class)
|
||||
static osztaly
|
||||
if (osztaly==nil)
|
||||
osztaly:=META.mcCREADERCLASS():onew(;
|
||||
clREADER(),;
|
||||
"CREADER",;
|
||||
CA_CREADER_N,;
|
||||
CM_CREADER_N,;
|
||||
{|ta,tm|setCams(ta,tm)},;
|
||||
{|t|setCMethods(t)})
|
||||
endif
|
||||
return osztaly
|
||||
#endif // _NO_CLCREADER_
|
||||
|
||||
#ifndef _NO_CREADERCLASS_
|
||||
|
||||
**********************************************************************
|
||||
#xtranslate class:<m> => CREADERCLASS.(class):<m>
|
||||
|
||||
#xcommand cimplement onew(name,errorStream) => ;
|
||||
static function onew(class,name,errorStream)
|
||||
|
||||
#ifdef _IMPLEMENT_EXPORT_
|
||||
#xcommand cimplement export onew(name,errorStream) => ;
|
||||
function onew(class,name,errorStream)
|
||||
#endif // _IMPLEMENT_EXPORT_
|
||||
|
||||
#xtranslate superclass:oinit => (OBJGENM.(eval(BEHAVIOR.mcREADERCLASS():objmethodsimplement)).(class):(4))
|
||||
#xtranslate superclass:getclass => (OBJGENM.(eval(BEHAVIOR.mcREADERCLASS():objmethodsimplement)).(class):(5))
|
||||
#xtranslate superclass:isclass => (OBJGENM.(eval(BEHAVIOR.mcREADERCLASS():objmethodsimplement)).(class):(6))
|
||||
#xtranslate superclass:getattrib => (OBJGENM.(eval(BEHAVIOR.mcREADERCLASS():objmethodsimplement)).(class):(7))
|
||||
#xtranslate superclass:setattrib => (OBJGENM.(eval(BEHAVIOR.mcREADERCLASS():objmethodsimplement)).(class):(8))
|
||||
#xtranslate superclass:onew => (OBJGENM.(eval(BEHAVIOR.mcREADERCLASS():objmethodsimplement)).(class):(CM_OBJECT_N+1))
|
||||
#xtranslate superclass:ocreate => (OBJGENM.(eval(BEHAVIOR.mcREADERCLASS():objmethodsimplement)).(class):(CM_OBJECT_N+2))
|
||||
#xtranslate superclass:rawoinit => (OBJGENM.(eval(BEHAVIOR.mcREADERCLASS():objmethodsimplement)).(class):(CM_OBJECT_N+3))
|
||||
#xtranslate superclass:oinitclass => (OBJGENM.(eval(BEHAVIOR.mcREADERCLASS():objmethodsimplement)).(class):(CM_OBJECT_N+4))
|
||||
#xtranslate superclass:getmethodsimplement => (OBJGENM.(eval(BEHAVIOR.mcREADERCLASS():objmethodsimplement)).(class):(CM_OBJECT_N+5))
|
||||
#xtranslate superclass:attribidx => (OBJGENM.(eval(BEHAVIOR.mcREADERCLASS():objmethodsimplement)).(class):(CM_OBJECT_N+6))
|
||||
#xtranslate superclass:needclassid => (OBJGENM.(eval(BEHAVIOR.mcREADERCLASS():objmethodsimplement)).(class):(CM_OBJECT_N+7))
|
||||
#xtranslate superclass:isinheritfrom => (OBJGENM.(eval(BEHAVIOR.mcREADERCLASS():objmethodsimplement)).(class):(CM_OBJECT_N+8))
|
||||
|
||||
**********************************************************************
|
||||
static function setMCMethods(pOsztaly)
|
||||
// Egy t”mb”t felt”lt a metaoszt ly m–veleti blokkjaival.
|
||||
pOsztaly[(CM_OBJECT_N+1)]:={|class,name,errorStream| onew(class,name,errorStream)}
|
||||
return pOsztaly
|
||||
|
||||
**********************************************************************
|
||||
static function setMCams(ta,tm)
|
||||
// Egy t”mb”t felt”lt a metaoszt ly ltal def. objektumok attrib£tumaival ‚s m–veleteivel.
|
||||
|
||||
tm[(CM_OBJECT_N+1)-CM_NIL_N] := {(CM_OBJECT_N+1),'onew','name,errorStream',nil}
|
||||
return nil
|
||||
|
||||
**********************************************************************
|
||||
#ifndef _NO_MCCREADERCLASS_
|
||||
#ifdef _STRICT_PARENT_
|
||||
#ifdef _CA_CM_ONLY_
|
||||
#include "meta.och" // "metaclas.och"
|
||||
#else // _CA_CM_ONLY_
|
||||
#define _CA_CM_ONLY_
|
||||
#include "meta.och" // "metaclas.och"
|
||||
#undef _CA_CM_ONLY_
|
||||
#endif // _CA_CM_ONLY_
|
||||
#else
|
||||
#include "meta.och" // "metaclas.och"
|
||||
#endif // _STRICT_PARENT_
|
||||
function mcCREADERCLASS()
|
||||
// El“szedi az oszt ly metaoszt ly t. (metaclass)
|
||||
static metaOsztaly
|
||||
if (metaOsztaly==nil)
|
||||
metaOsztaly:=META.clMETA():onew(;
|
||||
mcREADERCLASS(),;
|
||||
"CREADERCLASS",;
|
||||
CA_CREADERCLASS_N,;
|
||||
CM_CREADERCLASS_N,;
|
||||
{|ta,tm|setMCams(ta,tm)},;
|
||||
{|t|setMCMethods(t)})
|
||||
endif
|
||||
return metaOsztaly
|
||||
#endif // _NO_MCCREADERCLASS_
|
||||
|
||||
#endif // _NO_CREADERCLASS_
|
||||
#ifdef _IMPLEMENT_ONEW_
|
||||
**********************************************************************
|
||||
cimplement onew(name,errorStream)
|
||||
local o:=class:ocreate()
|
||||
|
||||
CREADER.o:oinit(name,errorStream)
|
||||
return o
|
||||
#endif // _IMPLEMENT_ONEW_
|
||||
|
||||
**********************************************************************
|
||||
#ifdef _IMPLEMENT_OINIT_
|
||||
implement oinit(name,errorStream)
|
||||
super:oinit()
|
||||
return this
|
||||
#endif // _IMPLEMENT_OINIT_
|
||||
|
||||
**********************************************************************
|
||||
**********************************************************************
|
||||
#endif // _CREADER_PRG_OCH_
|
||||
#endif // _CREADER_PRG_
|
||||
@@ -1,110 +0,0 @@
|
||||
/*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
//*******************************************************************
|
||||
// creader.prg: A creader oszt ly implement ci¢ja.
|
||||
// 1999, Csisz r Levente
|
||||
|
||||
#include "objgen.ch"
|
||||
|
||||
#define _CREADER_PRG_
|
||||
#define _IMPLEMENT_ONEW_
|
||||
|
||||
#include "creader.och"
|
||||
#include "ctoken.ch"
|
||||
|
||||
//*******************************************************************
|
||||
#include "cr_lf.ch"
|
||||
|
||||
//*******************************************************************
|
||||
implement read() // Itt ez kell ‚s nem a readItem()
|
||||
local c,c2,w
|
||||
|
||||
c:=super:read()
|
||||
if (valtype(c)=="C")
|
||||
if (c==CHAR_CR)
|
||||
c2:=super:read()
|
||||
if (valtype(c2)=="C" .and. c2==CHAR_LF)
|
||||
w:=aclone(CTK_EOL)
|
||||
w[2]:=c+c2
|
||||
w[3]:=this:pos
|
||||
c:=w
|
||||
this:line++
|
||||
this:pos:=1
|
||||
else
|
||||
super:unread(c2)
|
||||
endif
|
||||
elseif (c==CHAR_LF)
|
||||
w:=aclone(CTK_EOL)
|
||||
w[2]:=c
|
||||
w[3]:=this:pos
|
||||
c:=w
|
||||
this:line++
|
||||
this:pos:=1
|
||||
elseif (this:pos!=0) // Ez kell!!!! Ezzel jelzi, hogy a sorra
|
||||
// visszal‚ptek, ‚s ¡gy a poz¡ci¢ nem
|
||||
// ismert.
|
||||
this:pos++
|
||||
endif
|
||||
endif
|
||||
return c
|
||||
|
||||
//*******************************************************************
|
||||
implement unread(item)
|
||||
// A line-t ‚s a poz¡ci¢t vissza ll¡tja, az EOS-t ‚s a BOS-t viszont
|
||||
// nem figyeli. (Ezt az lreader-nek kellene megtennie, ha
|
||||
// sz<73>ks‚ges.)
|
||||
local str
|
||||
/*
|
||||
if (valtype(item)=="C")
|
||||
if (CHAR_LF$item)
|
||||
// Itt sor sz ml l¢t ugyan vissza lehet ll¡tani, de a
|
||||
// poz¡ci¢t nem, mert ahhoz tudni kellene, milyen hossz£
|
||||
// volt az el“z“ sor.
|
||||
// Mj.: Ez lehets‚ges lenne, ha a CR_LF-be belek¢doln nk a
|
||||
// sor hosszt. Ekkor persze token lenne ‚s nem dupla
|
||||
// karakter.
|
||||
this:pos:=0
|
||||
this:line-=xnumat(CHAR_LF,item)
|
||||
elseif (this:pos!=0)
|
||||
this:pos-=len(item)
|
||||
endif
|
||||
endif
|
||||
*/
|
||||
if (valtype(item)=="A")
|
||||
if (item[1]==CTKID_EOL)
|
||||
str:=item[2]
|
||||
this:pos:=item[3]
|
||||
this:line--
|
||||
else
|
||||
str:=item
|
||||
endif
|
||||
else
|
||||
str:=item
|
||||
endif
|
||||
return super:unread(str)
|
||||
|
||||
//*******************************************************************
|
||||
implement getFile()
|
||||
return this:name
|
||||
|
||||
//*******************************************************************
|
||||
implement getLine()
|
||||
return this:line
|
||||
|
||||
//*******************************************************************
|
||||
implement getPos()
|
||||
return this:pos
|
||||
|
||||
|
||||
//*******************************************************************
|
||||
implement oinit(name,errorStream)
|
||||
super:oinit(name,errorStream)
|
||||
|
||||
this:line:=1
|
||||
this:pos:=1
|
||||
return this
|
||||
|
||||
//*******************************************************************
|
||||
|
||||
@@ -1,25 +0,0 @@
|
||||
/*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
//*******************************************************************
|
||||
// crlf.prg: crlf() function for linking in non CCC environment.
|
||||
// 1999, Levente Csisz r
|
||||
//*******************************************************************
|
||||
|
||||
|
||||
#ifndef _CCC_
|
||||
|
||||
//*******************************************************************
|
||||
function crlf()
|
||||
return chr(13)+chr(10)
|
||||
//*******************************************************************
|
||||
|
||||
#else
|
||||
|
||||
//*******************************************************************
|
||||
static function dummy()
|
||||
return nil
|
||||
//*******************************************************************
|
||||
|
||||
#endif
|
||||
@@ -1,153 +0,0 @@
|
||||
/*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
//*******************************************************************
|
||||
// ctoken.ch: Olyan (karakter) elemek, amik speci lis jelent‚st
|
||||
// hordoznak.
|
||||
// 199, Csisz r Levente
|
||||
|
||||
// #define ID_STRING
|
||||
//*******************************************************************
|
||||
#ifdef ID_STRING
|
||||
#define CTKID_BOS "BOS"
|
||||
#define CTKID_EOS "EOS"
|
||||
#define CTKID_EOL "EOL"
|
||||
// #define CTKID_ENDINCLUDE "End include"
|
||||
#define CTKID_PRINTLINE "PRINTLINE"
|
||||
#else
|
||||
#define CTKID_BOS 1
|
||||
#define CTKID_EOS 2
|
||||
#define CTKID_EOL 3
|
||||
// #define CTKID_ENDINCLUDE 4
|
||||
#define CTKID_PRINTLINE 5
|
||||
#endif
|
||||
//*******************************************************************
|
||||
|
||||
#define CTK_EOF nil
|
||||
|
||||
// id, filename,line,pos,deep
|
||||
#define CTK_BOS {CTKID_BOS,"",0,0,0}
|
||||
|
||||
// Itt a pos az utols¢ sor hossza. Ha 1, akkor az utols¢ sor <20>res
|
||||
// volt.
|
||||
// id, filename,line,pos,deep
|
||||
#define CTK_EOS {CTKID_EOS,"",0,0,0}
|
||||
|
||||
#define CTK_EOL {CTKID_EOL,CTK_LF,0} // id, eolchars,lineLen
|
||||
// #define CTK_ENDINCLUDE {CTKID_ENDINCLUDE,"End include"}
|
||||
#define CTK_PRINTLINE {CTKID_PRINTLINE,"PRINTLINE"}
|
||||
|
||||
//*******************************************************************
|
||||
#define CTK_CR chr(13)
|
||||
#define CTK_LF chr(10)
|
||||
#define CTK_IDEZ "'"
|
||||
#define CTK_FIDEZ "`" // Ezt "'"-nak tekinti.
|
||||
#define CTK_MACS '"'
|
||||
#define CTK_PER "/"
|
||||
#define CTK_ET "&"
|
||||
#define CTK_CSILLAG "*"
|
||||
#define CTK_PVESSZO ";"
|
||||
|
||||
//*******************************************************************
|
||||
// #define PRSERR_ENDSTRING "TSND"
|
||||
// #define PRSERR_ENDPCCOMMENT "TPCD"
|
||||
|
||||
//*******************************************************************
|
||||
#undef ID_STRING
|
||||
#ifdef ID_STRING
|
||||
#define TKID_BOS "BOS"
|
||||
#define TKID_EOS "EOS"
|
||||
#define TKID_EOF "EOF"
|
||||
#define TKID_URES "URES"
|
||||
#define TKID_UJSOR "UJSOR"
|
||||
#define TKID_PVESSZO "PVESSZO"
|
||||
#define TKID_CHAR "CHAR"
|
||||
//#define TKID_IDEZ "IDEZ"
|
||||
//#define TKID_MACS "MACS"
|
||||
#define TKID_CSCOMMENT "CSCOMMENT"
|
||||
#define TKID_PPCOMMENT "PPCOMMENT"
|
||||
#define TKID_PCCOMMENT "PCCOMMENT"
|
||||
// #define TKID_ENDFILE "ENDFILE"
|
||||
#define TKID_NEV "NEV"
|
||||
#define TKID_SZAMTOMB "SZAMTOMB"
|
||||
//#define TKID_VESSZO "VESSZO"
|
||||
//#define TKID_GNYITO "GNYITO"
|
||||
//#define TKID_GZARO "GZARO"
|
||||
//#define TKID_KNYITO "KNYITO"
|
||||
//#define TKID_KZARO "KZARO"
|
||||
//#define TKID_SNYITO "SNYITO"
|
||||
//#define TKID_SZARO "SZARO"
|
||||
//#define TKID_ERROR "ERROR"
|
||||
#define TKID_PRINTLINE "PRINTLINE"
|
||||
#define TKID_STRING "STRING"
|
||||
|
||||
#define TKID_MALTERSET "MALTERSET"
|
||||
#define TKID_REGULAR_MATCH_MARKER "REGULAR_MATCH_MARKER"
|
||||
#define TKID_WILD_MATCH_MARKER "WILD_MATCH_MARKER"
|
||||
#define TKID_EXT_EXPR_MATCH_MARKER "EXT_EXPR_MATCH_MARKER"
|
||||
#define TKID_LIST_MATCH_MARKER "LIST_MATCH_MARKER"
|
||||
#define TKID_RESTRICTED_MATCH_MARKER "RESTRICTED_MATCH_MARKER"
|
||||
|
||||
|
||||
#define TKID_RALTER "RALTER"
|
||||
#define TKID_DUMB_STR_RESULT_MARKER "DUMB_STR_RESULT_MARKER"
|
||||
#define TKID_REGULAR_RESULT_MARKER "REGULAR_RESULT_MARKER"
|
||||
#define TKID_STRINGIFY_RESULT_MARKER "STRINGIFY_RESULT_MARKER"
|
||||
#define TKID_SMART_STR_RESULT_MARKER "SMART_STR_RESULT_MARKER"
|
||||
#define TKID_BLOCKIFY_RESULT_MARKER "BLOCKIFY_RESULT_MARKER"
|
||||
#define TKID_LOGIFY_RESULT_MARKER "LOGIFY_RESULT_MARKER"
|
||||
#else
|
||||
#define TKID_BOS 1
|
||||
#define TKID_EOS 2
|
||||
#define TKID_EOF 3
|
||||
#define TKID_URES 4
|
||||
#define TKID_UJSOR 5
|
||||
#define TKID_PVESSZO 6
|
||||
#define TKID_CHAR 7
|
||||
#define TKID_CSCOMMENT 8
|
||||
#define TKID_PPCOMMENT 9
|
||||
#define TKID_PCCOMMENT 10
|
||||
#define TKID_NEV 11
|
||||
#define TKID_SZAMTOMB 12
|
||||
#define TKID_PRINTLINE 13
|
||||
#define TKID_STRING 14
|
||||
|
||||
#define TKID_MALTERSET 30
|
||||
#define TKID_REGULAR_MATCH_MARKER 31
|
||||
#define TKID_WILD_MATCH_MARKER 32
|
||||
#define TKID_EXT_EXPR_MATCH_MARKER 33
|
||||
#define TKID_LIST_MATCH_MARKER 34
|
||||
#define TKID_RESTRICTED_MATCH_MARKER 35
|
||||
|
||||
|
||||
#define TKID_RALTER 40
|
||||
#define TKID_DUMB_STR_RESULT_MARKER 41
|
||||
#define TKID_REGULAR_RESULT_MARKER 42
|
||||
#define TKID_STRINGIFY_RESULT_MARKER 43
|
||||
#define TKID_SMART_STR_RESULT_MARKER 44
|
||||
#define TKID_BLOCKIFY_RESULT_MARKER 45
|
||||
#define TKID_LOGIFY_RESULT_MARKER 46
|
||||
#endif
|
||||
//*******************************************************************
|
||||
#define TKCL_NEV "nev"
|
||||
#define TKCL_STRING '"string"'
|
||||
#define TKCL_SZAMTOMB "1"
|
||||
#define TKCL_PARENT "(a)"
|
||||
|
||||
#define TKCL_TRUE ".T."
|
||||
//*******************************************************************
|
||||
|
||||
#define makeHSLineStr(file,line) ("#line "+toStr(line)+" "+'"'+(file)+'"'+guessedEol())
|
||||
|
||||
//*******************************************************************
|
||||
#define XTRTYPE_XTRANSLATE 0
|
||||
#define XTRTYPE_XCOMMAND 1
|
||||
#define XTRTYPE_TRANSLATE 2
|
||||
#define XTRTYPE_COMMAND 3
|
||||
|
||||
//*******************************************************************
|
||||
#define TRPRA_TREE 1
|
||||
#define TRPRA_SEQ 2
|
||||
//*******************************************************************
|
||||
|
||||
@@ -1,16 +0,0 @@
|
||||
/*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
//*******************************************************************
|
||||
// debug.ch, DEBUG ‚s a PDEBUG makr¢.
|
||||
|
||||
// #define DEBUG
|
||||
#ifdef DEBUG
|
||||
#define PDEBUG(x) x
|
||||
#else
|
||||
#define PDEBUG(x)
|
||||
#endif
|
||||
|
||||
//*******************************************************************
|
||||
|
||||
@@ -1,36 +0,0 @@
|
||||
//
|
||||
// $Id$
|
||||
//
|
||||
|
||||
//*******************************************************************
|
||||
// defdict.cls: #define sz˘t r oszt ly.
|
||||
// 1999, Csisz r Levente
|
||||
|
||||
class DEFDICT OBJECT
|
||||
|
||||
attrib dict // Egyenl“re egy EDEFDICT-ekb“l ll˘ t”mb.
|
||||
|
||||
nmethod add(edefdict)
|
||||
// Felvesz egy edefdict objektumot a sz˘t rba.
|
||||
// Ha m r van ilyen, akkor azt adja, ha nincs, akkor nil-t.
|
||||
|
||||
nmethod atIdx(name)
|
||||
// A name kulcsŁ elem index‚t adja a dict-ben.
|
||||
// Ha nincs, akkor 0-t ad.
|
||||
// Bels“ m–velet.
|
||||
|
||||
nmethod atKey(name)
|
||||
// A name kulcsŁ elemet (egy EDEFDICT objektumot) ad.
|
||||
// Ha nincs, akkor nil-t ad.
|
||||
|
||||
nmethod delKey(name)
|
||||
// Kit”rli a name kucslŁ elemet a dict-b“l.
|
||||
// Ha nincs, akkor nem csin l semmit.
|
||||
|
||||
nmethod printStr(printBlock)
|
||||
// A sz˘t r elemeket string-k‚nt kiˇrhat˘ form ban tadja a
|
||||
// printBlock-nak.
|
||||
// Ha a printBlock nincs megadva, akkor string-k‚nt visszaadja.
|
||||
|
||||
rmethod oinit()
|
||||
|
||||
@@ -1,271 +0,0 @@
|
||||
// DEFDICT.och oszt ly implement ci¢.
|
||||
// Gener lva: 1999.06.10, 14:39:58, OBJCCC v2.2.03
|
||||
// Meta oszt ly defin¡ci¢: Van
|
||||
|
||||
|
||||
#ifndef CA_OBJECT_N
|
||||
#ifdef _STRICT_PARENT_
|
||||
#ifdef _CA_CM_ONLY_
|
||||
#include "OBJECT.och"
|
||||
#else // _CA_CM_ONLY_
|
||||
#define _CA_CM_ONLY_
|
||||
#include "OBJECT.och"
|
||||
#undef _CA_CM_ONLY_
|
||||
#endif // _CA_CM_ONLY_
|
||||
#else
|
||||
#include "OBJECT.och"
|
||||
#endif // _STRICT_PARENT_
|
||||
#endif // CA_OBJECT_N
|
||||
|
||||
#ifndef _CA_CM_ONLY_
|
||||
#ifndef _DEFDICT_OCH_
|
||||
#define _DEFDICT_OCH_
|
||||
|
||||
|
||||
|
||||
|
||||
#xtranslate DEFDICT.<obj>:oinit => (OBJGEN.(<obj>):(4))
|
||||
#xtranslate DEFDICT.<obj>:getclass => (OBJGEN.(<obj>):(5))
|
||||
#xtranslate DEFDICT.<obj>:isclass => (OBJGEN.(<obj>):(6))
|
||||
#xtranslate DEFDICT.<obj>:getattrib => (OBJGEN.(<obj>):(7))
|
||||
#xtranslate DEFDICT.<obj>:setattrib => (OBJGEN.(<obj>):(8))
|
||||
|
||||
|
||||
#xtranslate DEFDICT.<obj>:dict => <obj>\[CA_OBJECT_N+1\]
|
||||
|
||||
// Specifik lva: add(edefdict)
|
||||
// Specifik lva: atidx(name)
|
||||
// Specifik lva: atkey(name)
|
||||
// Specifik lva: delkey(name)
|
||||
// Specifik lva: printstr(printBlock)
|
||||
// ™r”k”lve: oinit()
|
||||
|
||||
#xtranslate DEFDICT.<obj>:add => (OBJGEN.(<obj>):(CM_OBJECT_N+1))
|
||||
#xtranslate DEFDICT.<obj>:atidx => (OBJGEN.(<obj>):(CM_OBJECT_N+2))
|
||||
#xtranslate DEFDICT.<obj>:atkey => (OBJGEN.(<obj>):(CM_OBJECT_N+3))
|
||||
#xtranslate DEFDICT.<obj>:delkey => (OBJGEN.(<obj>):(CM_OBJECT_N+4))
|
||||
#xtranslate DEFDICT.<obj>:printstr => (OBJGEN.(<obj>):(CM_OBJECT_N+5))
|
||||
// ™r”k”lve: oinit()
|
||||
|
||||
#endif // _DEFDICT_OCH_
|
||||
#endif // _CA_CM_ONLY_
|
||||
|
||||
#ifndef CA_DEFDICT_N
|
||||
#define CA_DEFDICT_N CA_OBJECT_N+1
|
||||
#define CM_DEFDICT_N CM_OBJECT_N+5
|
||||
#endif // CA_DEFDICT_N
|
||||
|
||||
#ifndef _CA_CM_ONLY_
|
||||
#ifndef _DEFDICTCLASS_OCH_
|
||||
#define _DEFDICTCLASS_OCH_
|
||||
|
||||
**********************************************************************
|
||||
#xtranslate C.DEFDICT:<m> => (DEFDICTCLASS.clDEFDICT():<m>)
|
||||
#xtranslate C.DEFDICT:self() => (clDEFDICT())
|
||||
|
||||
|
||||
#xtranslate DEFDICTCLASS.<obj>:parent => <obj>\[CA_OBJECT_N+1\]
|
||||
#xtranslate DEFDICTCLASS.<obj>:name => <obj>\[CA_OBJECT_N+2\]
|
||||
#xtranslate DEFDICTCLASS.<obj>:objsize => <obj>\[CA_OBJECT_N+3\]
|
||||
#xtranslate DEFDICTCLASS.<obj>:attribs => <obj>\[CA_OBJECT_N+4\]
|
||||
#xtranslate DEFDICTCLASS.<obj>:methods => <obj>\[CA_OBJECT_N+5\]
|
||||
#xtranslate DEFDICTCLASS.<obj>:classid => <obj>\[CA_OBJECT_N+6\]
|
||||
#xtranslate DEFDICTCLASS.<obj>:parentclassids => <obj>\[CA_OBJECT_N+7\]
|
||||
#xtranslate DEFDICTCLASS.<obj>:amblock => <obj>\[CA_OBJECT_N+8\]
|
||||
#xtranslate DEFDICTCLASS.<obj>:methodsblock => <obj>\[CA_OBJECT_N+9\]
|
||||
#xtranslate DEFDICTCLASS.<obj>:objmethodsimplement => <obj>\[CA_OBJECT_N+10\]
|
||||
|
||||
|
||||
#xtranslate DEFDICTCLASS.<obj>:oinit => (OBJGEN.(<obj>):(4))
|
||||
#xtranslate DEFDICTCLASS.<obj>:getclass => (OBJGEN.(<obj>):(5))
|
||||
#xtranslate DEFDICTCLASS.<obj>:isclass => (OBJGEN.(<obj>):(6))
|
||||
#xtranslate DEFDICTCLASS.<obj>:getattrib => (OBJGEN.(<obj>):(7))
|
||||
#xtranslate DEFDICTCLASS.<obj>:setattrib => (OBJGEN.(<obj>):(8))
|
||||
#xtranslate DEFDICTCLASS.<obj>:onew => (OBJGEN.(<obj>):(CM_OBJECT_N+1))
|
||||
#xtranslate DEFDICTCLASS.<obj>:ocreate => (OBJGEN.(<obj>):(CM_OBJECT_N+2))
|
||||
#xtranslate DEFDICTCLASS.<obj>:rawoinit => (OBJGEN.(<obj>):(CM_OBJECT_N+3))
|
||||
#xtranslate DEFDICTCLASS.<obj>:oinitclass => (OBJGEN.(<obj>):(CM_OBJECT_N+4))
|
||||
#xtranslate DEFDICTCLASS.<obj>:getmethodsimplement => (OBJGEN.(<obj>):(CM_OBJECT_N+5))
|
||||
#xtranslate DEFDICTCLASS.<obj>:attribidx => (OBJGEN.(<obj>):(CM_OBJECT_N+6))
|
||||
#xtranslate DEFDICTCLASS.<obj>:needclassid => (OBJGEN.(<obj>):(CM_OBJECT_N+7))
|
||||
#xtranslate DEFDICTCLASS.<obj>:isinheritfrom => (OBJGEN.(<obj>):(CM_OBJECT_N+8))
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#endif // _DEFDICTCLASS_OCH_
|
||||
#endif // _CA_CM_ONLY_
|
||||
|
||||
#ifndef CA_DEFDICTCLASS_N
|
||||
#define CA_DEFDICTCLASS_N CA_BEHAVIOR_N+0
|
||||
#define CM_DEFDICTCLASS_N CM_BEHAVIOR_N+0
|
||||
#endif // CA_DEFDICTCLASS_N
|
||||
|
||||
|
||||
**********************************************************************
|
||||
#ifdef _DEFDICT_PRG_
|
||||
#ifndef _DEFDICT_PRG_OCH_
|
||||
#define _DEFDICT_PRG_OCH_
|
||||
|
||||
|
||||
**********************************************************************
|
||||
#xtranslate othis:<m> => DEFDICT.(othis):<m>
|
||||
#xtranslate thisclass:<m> => DEFDICTCLASS.(this:getClass()):<m>
|
||||
#define CTHIS DEFDICT
|
||||
|
||||
|
||||
**********************************************************************
|
||||
#xtranslate this:<m> => DEFDICT.(this):<m>
|
||||
|
||||
#xcommand implement add(edefdict) => static function add(this,edefdict)
|
||||
#xcommand implement atidx(name) => static function atidx(this,name)
|
||||
#xcommand implement atkey(name) => static function atkey(this,name)
|
||||
#xcommand implement delkey(name) => static function delkey(this,name)
|
||||
#xcommand implement printstr(printBlock) => ;
|
||||
static function printstr(this,printBlock)
|
||||
#xcommand implement oinit() => static function oinit(this)
|
||||
|
||||
#ifdef _IMPLEMENT_EXPORT_
|
||||
#xcommand implement export add(edefdict) => function add(this,edefdict)
|
||||
#xcommand implement export atidx(name) => function atidx(this,name)
|
||||
#xcommand implement export atkey(name) => function atkey(this,name)
|
||||
#xcommand implement export delkey(name) => function delkey(this,name)
|
||||
#xcommand implement export printstr(printBlock) => ;
|
||||
function printstr(this,printBlock)
|
||||
#xcommand implement export oinit() => function oinit(this)
|
||||
#endif // _IMPLEMENT_EXPORT_
|
||||
|
||||
#xtranslate super:oinit => (OBJGENM.(eval(BEHAVIOR.clOBJECT():objmethodsimplement)).(this):(4))
|
||||
#xtranslate super:getclass => (OBJGENM.(eval(BEHAVIOR.clOBJECT():objmethodsimplement)).(this):(5))
|
||||
#xtranslate super:isclass => (OBJGENM.(eval(BEHAVIOR.clOBJECT():objmethodsimplement)).(this):(6))
|
||||
#xtranslate super:getattrib => (OBJGENM.(eval(BEHAVIOR.clOBJECT():objmethodsimplement)).(this):(7))
|
||||
#xtranslate super:setattrib => (OBJGENM.(eval(BEHAVIOR.clOBJECT():objmethodsimplement)).(this):(8))
|
||||
|
||||
**********************************************************************
|
||||
static function setCMethods(pOsztaly)
|
||||
// Egy t”mb”t felt”lt az oszt ly m–veleti blokkjaival.
|
||||
pOsztaly[(CM_OBJECT_N+1)]:={|this,edefdict| add(this,edefdict)}
|
||||
pOsztaly[(CM_OBJECT_N+2)]:={|this,name| atidx(this,name)}
|
||||
pOsztaly[(CM_OBJECT_N+3)]:={|this,name| atkey(this,name)}
|
||||
pOsztaly[(CM_OBJECT_N+4)]:={|this,name| delkey(this,name)}
|
||||
pOsztaly[(CM_OBJECT_N+5)]:={|this,printBlock| printstr(this,printBlock)}
|
||||
pOsztaly[(4)]:={|this| oinit(this)}
|
||||
return pOsztaly
|
||||
|
||||
**********************************************************************
|
||||
static function setCams(ta,tm)
|
||||
// Egy t”mb”t felt”lt az oszt ly ltal def. objektumok attrib£tumaival ‚s m–veleteivel.
|
||||
ta[CA_OBJECT_N+1-CA_NIL_N] := {CA_OBJECT_N+1,'dict', }
|
||||
|
||||
tm[(CM_OBJECT_N+1)-CM_NIL_N] := {(CM_OBJECT_N+1),'add','edefdict',nil}
|
||||
tm[(CM_OBJECT_N+2)-CM_NIL_N] := {(CM_OBJECT_N+2),'atidx','name',nil}
|
||||
tm[(CM_OBJECT_N+3)-CM_NIL_N] := {(CM_OBJECT_N+3),'atkey','name',nil}
|
||||
tm[(CM_OBJECT_N+4)-CM_NIL_N] := {(CM_OBJECT_N+4),'delkey','name',nil}
|
||||
tm[(CM_OBJECT_N+5)-CM_NIL_N] := {(CM_OBJECT_N+5),'printstr','printBlock',nil}
|
||||
tm[(4)-CM_NIL_N] := {(4),'oinit','',nil}
|
||||
return nil
|
||||
|
||||
#ifndef _NO_CLDEFDICT_
|
||||
#ifdef _STRICT_PARENT_
|
||||
#ifdef _CA_CM_ONLY_
|
||||
#include "meta.och"
|
||||
#else // _CA_CM_ONLY_
|
||||
#define _CA_CM_ONLY_
|
||||
#include "meta.och"
|
||||
#undef _CA_CM_ONLY_
|
||||
#endif // _CA_CM_ONLY_
|
||||
#else
|
||||
#include "meta.och"
|
||||
#endif // _STRICT_PARENT_
|
||||
**********************************************************************
|
||||
function clDEFDICT()
|
||||
// El“szedi az oszt lyt. (class)
|
||||
static osztaly
|
||||
if (osztaly==nil)
|
||||
osztaly:=META.mcDEFDICTCLASS():onew(;
|
||||
clOBJECT(),;
|
||||
"DEFDICT",;
|
||||
CA_DEFDICT_N,;
|
||||
CM_DEFDICT_N,;
|
||||
{|ta,tm|setCams(ta,tm)},;
|
||||
{|t|setCMethods(t)})
|
||||
endif
|
||||
return osztaly
|
||||
#endif // _NO_CLDEFDICT_
|
||||
|
||||
#ifndef _NO_DEFDICTCLASS_
|
||||
|
||||
**********************************************************************
|
||||
#xtranslate class:<m> => DEFDICTCLASS.(class):<m>
|
||||
|
||||
|
||||
#ifdef _IMPLEMENT_EXPORT_
|
||||
#endif // _IMPLEMENT_EXPORT_
|
||||
|
||||
#xtranslate superclass:oinit => (OBJGENM.(eval(BEHAVIOR.clBEHAVIOR():objmethodsimplement)).(class):(4))
|
||||
#xtranslate superclass:getclass => (OBJGENM.(eval(BEHAVIOR.clBEHAVIOR():objmethodsimplement)).(class):(5))
|
||||
#xtranslate superclass:isclass => (OBJGENM.(eval(BEHAVIOR.clBEHAVIOR():objmethodsimplement)).(class):(6))
|
||||
#xtranslate superclass:getattrib => (OBJGENM.(eval(BEHAVIOR.clBEHAVIOR():objmethodsimplement)).(class):(7))
|
||||
#xtranslate superclass:setattrib => (OBJGENM.(eval(BEHAVIOR.clBEHAVIOR():objmethodsimplement)).(class):(8))
|
||||
#xtranslate superclass:onew => (OBJGENM.(eval(BEHAVIOR.clBEHAVIOR():objmethodsimplement)).(class):(CM_OBJECT_N+1))
|
||||
#xtranslate superclass:ocreate => (OBJGENM.(eval(BEHAVIOR.clBEHAVIOR():objmethodsimplement)).(class):(CM_OBJECT_N+2))
|
||||
#xtranslate superclass:rawoinit => (OBJGENM.(eval(BEHAVIOR.clBEHAVIOR():objmethodsimplement)).(class):(CM_OBJECT_N+3))
|
||||
#xtranslate superclass:oinitclass => (OBJGENM.(eval(BEHAVIOR.clBEHAVIOR():objmethodsimplement)).(class):(CM_OBJECT_N+4))
|
||||
#xtranslate superclass:getmethodsimplement => (OBJGENM.(eval(BEHAVIOR.clBEHAVIOR():objmethodsimplement)).(class):(CM_OBJECT_N+5))
|
||||
#xtranslate superclass:attribidx => (OBJGENM.(eval(BEHAVIOR.clBEHAVIOR():objmethodsimplement)).(class):(CM_OBJECT_N+6))
|
||||
#xtranslate superclass:needclassid => (OBJGENM.(eval(BEHAVIOR.clBEHAVIOR():objmethodsimplement)).(class):(CM_OBJECT_N+7))
|
||||
#xtranslate superclass:isinheritfrom => (OBJGENM.(eval(BEHAVIOR.clBEHAVIOR():objmethodsimplement)).(class):(CM_OBJECT_N+8))
|
||||
|
||||
**********************************************************************
|
||||
static function setMCMethods(pOsztaly)
|
||||
// Egy t”mb”t felt”lt a metaoszt ly m–veleti blokkjaival.
|
||||
return pOsztaly
|
||||
|
||||
**********************************************************************
|
||||
static function setMCams(ta,tm)
|
||||
// Egy t”mb”t felt”lt a metaoszt ly ltal def. objektumok attrib£tumaival ‚s m–veleteivel.
|
||||
|
||||
return nil
|
||||
|
||||
**********************************************************************
|
||||
#ifndef _NO_MCDEFDICTCLASS_
|
||||
#ifdef _STRICT_PARENT_
|
||||
#ifdef _CA_CM_ONLY_
|
||||
#include "meta.och" // "metaclas.och"
|
||||
#else // _CA_CM_ONLY_
|
||||
#define _CA_CM_ONLY_
|
||||
#include "meta.och" // "metaclas.och"
|
||||
#undef _CA_CM_ONLY_
|
||||
#endif // _CA_CM_ONLY_
|
||||
#else
|
||||
#include "meta.och" // "metaclas.och"
|
||||
#endif // _STRICT_PARENT_
|
||||
function mcDEFDICTCLASS()
|
||||
// El“szedi az oszt ly metaoszt ly t. (metaclass)
|
||||
static metaOsztaly
|
||||
if (metaOsztaly==nil)
|
||||
metaOsztaly:=META.clMETA():onew(;
|
||||
clBEHAVIOR(),;
|
||||
"DEFDICTCLASS",;
|
||||
CA_DEFDICTCLASS_N,;
|
||||
CM_DEFDICTCLASS_N,;
|
||||
{|ta,tm|setMCams(ta,tm)},;
|
||||
{|t|setMCMethods(t)})
|
||||
endif
|
||||
return metaOsztaly
|
||||
#endif // _NO_MCDEFDICTCLASS_
|
||||
|
||||
#endif // _NO_DEFDICTCLASS_
|
||||
|
||||
**********************************************************************
|
||||
#ifdef _IMPLEMENT_OINIT_
|
||||
implement oinit()
|
||||
super:oinit()
|
||||
return this
|
||||
#endif // _IMPLEMENT_OINIT_
|
||||
|
||||
**********************************************************************
|
||||
**********************************************************************
|
||||
#endif // _DEFDICT_PRG_OCH_
|
||||
#endif // _DEFDICT_PRG_
|
||||
@@ -1,91 +0,0 @@
|
||||
/*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
//*******************************************************************
|
||||
// defdict.prg: #define sz¢t r
|
||||
// 1999, Csisz r Levente
|
||||
|
||||
//*******************************************************************
|
||||
#include "ctoken.ch"
|
||||
#include "objgen.ch"
|
||||
|
||||
//*******************************************************************
|
||||
#include "token.och"
|
||||
#include "edefdict.och"
|
||||
|
||||
//*******************************************************************
|
||||
|
||||
#define _DEFDICT_PRG_
|
||||
// #define _IMPLEMENT_ONEW_
|
||||
|
||||
#include "defdict.och"
|
||||
|
||||
|
||||
//*******************************************************************
|
||||
implement oinit()
|
||||
|
||||
super:oinit()
|
||||
|
||||
this:dict:={}
|
||||
return nil
|
||||
|
||||
//*******************************************************************
|
||||
implement add(edefdict)
|
||||
local w
|
||||
|
||||
|
||||
if (nil!=(w:=this:atKey(EDEFDICT.edefdict:name)))
|
||||
return w
|
||||
endif
|
||||
|
||||
aadd(this:dict,edefdict)
|
||||
return nil
|
||||
|
||||
//*******************************************************************
|
||||
implement atIdx(name)
|
||||
local i
|
||||
|
||||
for i:=1 to len(this:dict)
|
||||
if (name==EDEFDICT.(this:dict[i]):name)
|
||||
return i
|
||||
endif
|
||||
end for
|
||||
return 0
|
||||
|
||||
//*******************************************************************
|
||||
implement atKey(name)
|
||||
local i
|
||||
|
||||
if (0!=(i:=this:atIdx(name)))
|
||||
return this:dict[i]
|
||||
endif
|
||||
return nil
|
||||
|
||||
//*******************************************************************
|
||||
implement delKey(name)
|
||||
local i
|
||||
|
||||
if (0!=(i:=this:atIdx(name)))
|
||||
adel(this:dict,i)
|
||||
asize(this:dict,len(this:dict)-1)
|
||||
endif
|
||||
return nil
|
||||
|
||||
//*******************************************************************
|
||||
implement printStr(printBlock)
|
||||
local i,w
|
||||
local str:=""
|
||||
|
||||
for i:=1 to len(this:dict)
|
||||
w:=toStr(i)+": "+EDEFDICT.(this:dict[i]):printStr()
|
||||
if (printBlock!=nil)
|
||||
eval(printBlock,w)
|
||||
else
|
||||
str+=w+newline()
|
||||
endif
|
||||
end for
|
||||
return str
|
||||
|
||||
//*******************************************************************
|
||||
|
||||
@@ -1,29 +0,0 @@
|
||||
//
|
||||
// $Id$
|
||||
//
|
||||
|
||||
//*******************************************************************
|
||||
// edefdict.cls: #define sz¢t r elem
|
||||
// 1999, Csisz r Levente
|
||||
|
||||
class EDEFDICT OBJECT
|
||||
|
||||
attrib name
|
||||
attrib params
|
||||
attrib body // {[tokenArray|paramNumber],...}
|
||||
attrib deffilelinepos
|
||||
|
||||
nmethod change(paramValues)
|
||||
// A paramValues tartalmazza a param‚terek ‚rt‚keit.
|
||||
|
||||
nmethod printStr()
|
||||
// Stringk‚nt adja meg az elemet #define n‚v(params) body
|
||||
// form ban.
|
||||
|
||||
rmethod oinit(name,params,body,deffile,defline,defpos)
|
||||
|
||||
|
||||
metaclass
|
||||
|
||||
rmethod onew(name,params,body,deffile,defline,defpos)
|
||||
|
||||
@@ -1,277 +0,0 @@
|
||||
// EDEFDICT.och oszt ly implement ci¢.
|
||||
// Gener lva: 1999.06.10, 14:40:13, OBJCCC v2.2.03
|
||||
// Meta oszt ly defin¡ci¢: Van
|
||||
|
||||
|
||||
#ifndef CA_OBJECT_N
|
||||
#ifdef _STRICT_PARENT_
|
||||
#ifdef _CA_CM_ONLY_
|
||||
#include "OBJECT.och"
|
||||
#else // _CA_CM_ONLY_
|
||||
#define _CA_CM_ONLY_
|
||||
#include "OBJECT.och"
|
||||
#undef _CA_CM_ONLY_
|
||||
#endif // _CA_CM_ONLY_
|
||||
#else
|
||||
#include "OBJECT.och"
|
||||
#endif // _STRICT_PARENT_
|
||||
#endif // CA_OBJECT_N
|
||||
|
||||
#ifndef _CA_CM_ONLY_
|
||||
#ifndef _EDEFDICT_OCH_
|
||||
#define _EDEFDICT_OCH_
|
||||
|
||||
|
||||
|
||||
|
||||
#xtranslate EDEFDICT.<obj>:oinit => (OBJGEN.(<obj>):(4))
|
||||
#xtranslate EDEFDICT.<obj>:getclass => (OBJGEN.(<obj>):(5))
|
||||
#xtranslate EDEFDICT.<obj>:isclass => (OBJGEN.(<obj>):(6))
|
||||
#xtranslate EDEFDICT.<obj>:getattrib => (OBJGEN.(<obj>):(7))
|
||||
#xtranslate EDEFDICT.<obj>:setattrib => (OBJGEN.(<obj>):(8))
|
||||
|
||||
|
||||
#xtranslate EDEFDICT.<obj>:name => <obj>\[CA_OBJECT_N+1\]
|
||||
#xtranslate EDEFDICT.<obj>:params => <obj>\[CA_OBJECT_N+2\]
|
||||
#xtranslate EDEFDICT.<obj>:body => <obj>\[CA_OBJECT_N+3\]
|
||||
#xtranslate EDEFDICT.<obj>:deffilelinepos => <obj>\[CA_OBJECT_N+4\]
|
||||
|
||||
// Specifik lva: change(paramValues)
|
||||
// Specifik lva: printstr()
|
||||
// ™r”k”lve: oinit(name,params,body,deffile,defline,defpos)
|
||||
|
||||
#xtranslate EDEFDICT.<obj>:change => (OBJGEN.(<obj>):(CM_OBJECT_N+1))
|
||||
#xtranslate EDEFDICT.<obj>:printstr => (OBJGEN.(<obj>):(CM_OBJECT_N+2))
|
||||
// ™r”k”lve: oinit(name,params,body,deffile,defline,defpos)
|
||||
|
||||
#endif // _EDEFDICT_OCH_
|
||||
#endif // _CA_CM_ONLY_
|
||||
|
||||
#ifndef CA_EDEFDICT_N
|
||||
#define CA_EDEFDICT_N CA_OBJECT_N+4
|
||||
#define CM_EDEFDICT_N CM_OBJECT_N+2
|
||||
#endif // CA_EDEFDICT_N
|
||||
|
||||
#ifndef _CA_CM_ONLY_
|
||||
#ifndef _EDEFDICTCLASS_OCH_
|
||||
#define _EDEFDICTCLASS_OCH_
|
||||
|
||||
**********************************************************************
|
||||
#xtranslate C.EDEFDICT:<m> => (EDEFDICTCLASS.clEDEFDICT():<m>)
|
||||
#xtranslate C.EDEFDICT:self() => (clEDEFDICT())
|
||||
|
||||
|
||||
#xtranslate EDEFDICTCLASS.<obj>:parent => <obj>\[CA_OBJECT_N+1\]
|
||||
#xtranslate EDEFDICTCLASS.<obj>:name => <obj>\[CA_OBJECT_N+2\]
|
||||
#xtranslate EDEFDICTCLASS.<obj>:objsize => <obj>\[CA_OBJECT_N+3\]
|
||||
#xtranslate EDEFDICTCLASS.<obj>:attribs => <obj>\[CA_OBJECT_N+4\]
|
||||
#xtranslate EDEFDICTCLASS.<obj>:methods => <obj>\[CA_OBJECT_N+5\]
|
||||
#xtranslate EDEFDICTCLASS.<obj>:classid => <obj>\[CA_OBJECT_N+6\]
|
||||
#xtranslate EDEFDICTCLASS.<obj>:parentclassids => <obj>\[CA_OBJECT_N+7\]
|
||||
#xtranslate EDEFDICTCLASS.<obj>:amblock => <obj>\[CA_OBJECT_N+8\]
|
||||
#xtranslate EDEFDICTCLASS.<obj>:methodsblock => <obj>\[CA_OBJECT_N+9\]
|
||||
#xtranslate EDEFDICTCLASS.<obj>:objmethodsimplement => <obj>\[CA_OBJECT_N+10\]
|
||||
|
||||
|
||||
#xtranslate EDEFDICTCLASS.<obj>:oinit => (OBJGEN.(<obj>):(4))
|
||||
#xtranslate EDEFDICTCLASS.<obj>:getclass => (OBJGEN.(<obj>):(5))
|
||||
#xtranslate EDEFDICTCLASS.<obj>:isclass => (OBJGEN.(<obj>):(6))
|
||||
#xtranslate EDEFDICTCLASS.<obj>:getattrib => (OBJGEN.(<obj>):(7))
|
||||
#xtranslate EDEFDICTCLASS.<obj>:setattrib => (OBJGEN.(<obj>):(8))
|
||||
#xtranslate EDEFDICTCLASS.<obj>:onew => (OBJGEN.(<obj>):(CM_OBJECT_N+1))
|
||||
#xtranslate EDEFDICTCLASS.<obj>:ocreate => (OBJGEN.(<obj>):(CM_OBJECT_N+2))
|
||||
#xtranslate EDEFDICTCLASS.<obj>:rawoinit => (OBJGEN.(<obj>):(CM_OBJECT_N+3))
|
||||
#xtranslate EDEFDICTCLASS.<obj>:oinitclass => (OBJGEN.(<obj>):(CM_OBJECT_N+4))
|
||||
#xtranslate EDEFDICTCLASS.<obj>:getmethodsimplement => (OBJGEN.(<obj>):(CM_OBJECT_N+5))
|
||||
#xtranslate EDEFDICTCLASS.<obj>:attribidx => (OBJGEN.(<obj>):(CM_OBJECT_N+6))
|
||||
#xtranslate EDEFDICTCLASS.<obj>:needclassid => (OBJGEN.(<obj>):(CM_OBJECT_N+7))
|
||||
#xtranslate EDEFDICTCLASS.<obj>:isinheritfrom => (OBJGEN.(<obj>):(CM_OBJECT_N+8))
|
||||
|
||||
|
||||
|
||||
// ™r”k”lve: onew(name,params,body,deffile,defline,defpos)
|
||||
|
||||
// ™r”k”lve: onew(name,params,body,deffile,defline,defpos)
|
||||
|
||||
#endif // _EDEFDICTCLASS_OCH_
|
||||
#endif // _CA_CM_ONLY_
|
||||
|
||||
#ifndef CA_EDEFDICTCLASS_N
|
||||
#define CA_EDEFDICTCLASS_N CA_BEHAVIOR_N+0
|
||||
#define CM_EDEFDICTCLASS_N CM_BEHAVIOR_N+0
|
||||
#endif // CA_EDEFDICTCLASS_N
|
||||
|
||||
|
||||
**********************************************************************
|
||||
#ifdef _EDEFDICT_PRG_
|
||||
#ifndef _EDEFDICT_PRG_OCH_
|
||||
#define _EDEFDICT_PRG_OCH_
|
||||
|
||||
|
||||
**********************************************************************
|
||||
#xtranslate othis:<m> => EDEFDICT.(othis):<m>
|
||||
#xtranslate thisclass:<m> => EDEFDICTCLASS.(this:getClass()):<m>
|
||||
#define CTHIS EDEFDICT
|
||||
|
||||
|
||||
**********************************************************************
|
||||
#xtranslate this:<m> => EDEFDICT.(this):<m>
|
||||
|
||||
#xcommand implement change(paramValues) => ;
|
||||
static function change(this,paramValues)
|
||||
#xcommand implement printstr() => static function printstr(this)
|
||||
#xcommand implement oinit(name,params,body,deffile,defline,defpos) => ;
|
||||
static function oinit(this,name,params,body,deffile,defline,defpos)
|
||||
|
||||
#ifdef _IMPLEMENT_EXPORT_
|
||||
#xcommand implement export change(paramValues) => ;
|
||||
function change(this,paramValues)
|
||||
#xcommand implement export printstr() => function printstr(this)
|
||||
#xcommand implement export oinit(name,params,body,deffile,defline,defpos) => ;
|
||||
function oinit(this,name,params,body,deffile,defline,defpos)
|
||||
#endif // _IMPLEMENT_EXPORT_
|
||||
|
||||
#xtranslate super:oinit => (OBJGENM.(eval(BEHAVIOR.clOBJECT():objmethodsimplement)).(this):(4))
|
||||
#xtranslate super:getclass => (OBJGENM.(eval(BEHAVIOR.clOBJECT():objmethodsimplement)).(this):(5))
|
||||
#xtranslate super:isclass => (OBJGENM.(eval(BEHAVIOR.clOBJECT():objmethodsimplement)).(this):(6))
|
||||
#xtranslate super:getattrib => (OBJGENM.(eval(BEHAVIOR.clOBJECT():objmethodsimplement)).(this):(7))
|
||||
#xtranslate super:setattrib => (OBJGENM.(eval(BEHAVIOR.clOBJECT():objmethodsimplement)).(this):(8))
|
||||
|
||||
**********************************************************************
|
||||
static function setCMethods(pOsztaly)
|
||||
// Egy t”mb”t felt”lt az oszt ly m–veleti blokkjaival.
|
||||
pOsztaly[(CM_OBJECT_N+1)]:={|this,paramValues| change(this,paramValues)}
|
||||
pOsztaly[(CM_OBJECT_N+2)]:={|this| printstr(this)}
|
||||
pOsztaly[(4)]:={|this,name,params,body,deffile,defline,defpos| oinit(this,name,params,body,deffile,defline,defpos)}
|
||||
return pOsztaly
|
||||
|
||||
**********************************************************************
|
||||
static function setCams(ta,tm)
|
||||
// Egy t”mb”t felt”lt az oszt ly ltal def. objektumok attrib£tumaival ‚s m–veleteivel.
|
||||
ta[CA_OBJECT_N+1-CA_NIL_N] := {CA_OBJECT_N+1,'name',nil}
|
||||
ta[CA_OBJECT_N+2-CA_NIL_N] := {CA_OBJECT_N+2,'params',nil}
|
||||
ta[CA_OBJECT_N+3-CA_NIL_N] := {CA_OBJECT_N+3,'body', }
|
||||
ta[CA_OBJECT_N+4-CA_NIL_N] := {CA_OBJECT_N+4,'deffilelinepos',nil}
|
||||
|
||||
tm[(CM_OBJECT_N+1)-CM_NIL_N] := {(CM_OBJECT_N+1),'change','paramValues',nil}
|
||||
tm[(CM_OBJECT_N+2)-CM_NIL_N] := {(CM_OBJECT_N+2),'printstr','',nil}
|
||||
tm[(4)-CM_NIL_N] := {(4),'oinit','name,params,body,deffile,defline,defpos',nil}
|
||||
return nil
|
||||
|
||||
#ifndef _NO_CLEDEFDICT_
|
||||
#ifdef _STRICT_PARENT_
|
||||
#ifdef _CA_CM_ONLY_
|
||||
#include "meta.och"
|
||||
#else // _CA_CM_ONLY_
|
||||
#define _CA_CM_ONLY_
|
||||
#include "meta.och"
|
||||
#undef _CA_CM_ONLY_
|
||||
#endif // _CA_CM_ONLY_
|
||||
#else
|
||||
#include "meta.och"
|
||||
#endif // _STRICT_PARENT_
|
||||
**********************************************************************
|
||||
function clEDEFDICT()
|
||||
// El“szedi az oszt lyt. (class)
|
||||
static osztaly
|
||||
if (osztaly==nil)
|
||||
osztaly:=META.mcEDEFDICTCLASS():onew(;
|
||||
clOBJECT(),;
|
||||
"EDEFDICT",;
|
||||
CA_EDEFDICT_N,;
|
||||
CM_EDEFDICT_N,;
|
||||
{|ta,tm|setCams(ta,tm)},;
|
||||
{|t|setCMethods(t)})
|
||||
endif
|
||||
return osztaly
|
||||
#endif // _NO_CLEDEFDICT_
|
||||
|
||||
#ifndef _NO_EDEFDICTCLASS_
|
||||
|
||||
**********************************************************************
|
||||
#xtranslate class:<m> => EDEFDICTCLASS.(class):<m>
|
||||
|
||||
#xcommand cimplement onew(name,params,body,deffile,defline,defpos) => ;
|
||||
static function onew(class,name,params,body,deffile,defline,defpos)
|
||||
|
||||
#ifdef _IMPLEMENT_EXPORT_
|
||||
#xcommand cimplement export onew(name,params,body,deffile,defline,defpos) => ;
|
||||
function onew(class,name,params,body,deffile,defline,defpos)
|
||||
#endif // _IMPLEMENT_EXPORT_
|
||||
|
||||
#xtranslate superclass:oinit => (OBJGENM.(eval(BEHAVIOR.clBEHAVIOR():objmethodsimplement)).(class):(4))
|
||||
#xtranslate superclass:getclass => (OBJGENM.(eval(BEHAVIOR.clBEHAVIOR():objmethodsimplement)).(class):(5))
|
||||
#xtranslate superclass:isclass => (OBJGENM.(eval(BEHAVIOR.clBEHAVIOR():objmethodsimplement)).(class):(6))
|
||||
#xtranslate superclass:getattrib => (OBJGENM.(eval(BEHAVIOR.clBEHAVIOR():objmethodsimplement)).(class):(7))
|
||||
#xtranslate superclass:setattrib => (OBJGENM.(eval(BEHAVIOR.clBEHAVIOR():objmethodsimplement)).(class):(8))
|
||||
#xtranslate superclass:onew => (OBJGENM.(eval(BEHAVIOR.clBEHAVIOR():objmethodsimplement)).(class):(CM_OBJECT_N+1))
|
||||
#xtranslate superclass:ocreate => (OBJGENM.(eval(BEHAVIOR.clBEHAVIOR():objmethodsimplement)).(class):(CM_OBJECT_N+2))
|
||||
#xtranslate superclass:rawoinit => (OBJGENM.(eval(BEHAVIOR.clBEHAVIOR():objmethodsimplement)).(class):(CM_OBJECT_N+3))
|
||||
#xtranslate superclass:oinitclass => (OBJGENM.(eval(BEHAVIOR.clBEHAVIOR():objmethodsimplement)).(class):(CM_OBJECT_N+4))
|
||||
#xtranslate superclass:getmethodsimplement => (OBJGENM.(eval(BEHAVIOR.clBEHAVIOR():objmethodsimplement)).(class):(CM_OBJECT_N+5))
|
||||
#xtranslate superclass:attribidx => (OBJGENM.(eval(BEHAVIOR.clBEHAVIOR():objmethodsimplement)).(class):(CM_OBJECT_N+6))
|
||||
#xtranslate superclass:needclassid => (OBJGENM.(eval(BEHAVIOR.clBEHAVIOR():objmethodsimplement)).(class):(CM_OBJECT_N+7))
|
||||
#xtranslate superclass:isinheritfrom => (OBJGENM.(eval(BEHAVIOR.clBEHAVIOR():objmethodsimplement)).(class):(CM_OBJECT_N+8))
|
||||
|
||||
**********************************************************************
|
||||
static function setMCMethods(pOsztaly)
|
||||
// Egy t”mb”t felt”lt a metaoszt ly m–veleti blokkjaival.
|
||||
pOsztaly[(CM_OBJECT_N+1)]:={|class,name,params,body,deffile,defline,defpos| onew(class,name,params,body,deffile,defline,defpos)}
|
||||
return pOsztaly
|
||||
|
||||
**********************************************************************
|
||||
static function setMCams(ta,tm)
|
||||
// Egy t”mb”t felt”lt a metaoszt ly ltal def. objektumok attrib£tumaival ‚s m–veleteivel.
|
||||
|
||||
tm[(CM_OBJECT_N+1)-CM_NIL_N] := {(CM_OBJECT_N+1),'onew','name,params,body,deffile,defline,defpos',nil}
|
||||
return nil
|
||||
|
||||
**********************************************************************
|
||||
#ifndef _NO_MCEDEFDICTCLASS_
|
||||
#ifdef _STRICT_PARENT_
|
||||
#ifdef _CA_CM_ONLY_
|
||||
#include "meta.och" // "metaclas.och"
|
||||
#else // _CA_CM_ONLY_
|
||||
#define _CA_CM_ONLY_
|
||||
#include "meta.och" // "metaclas.och"
|
||||
#undef _CA_CM_ONLY_
|
||||
#endif // _CA_CM_ONLY_
|
||||
#else
|
||||
#include "meta.och" // "metaclas.och"
|
||||
#endif // _STRICT_PARENT_
|
||||
function mcEDEFDICTCLASS()
|
||||
// El“szedi az oszt ly metaoszt ly t. (metaclass)
|
||||
static metaOsztaly
|
||||
if (metaOsztaly==nil)
|
||||
metaOsztaly:=META.clMETA():onew(;
|
||||
clBEHAVIOR(),;
|
||||
"EDEFDICTCLASS",;
|
||||
CA_EDEFDICTCLASS_N,;
|
||||
CM_EDEFDICTCLASS_N,;
|
||||
{|ta,tm|setMCams(ta,tm)},;
|
||||
{|t|setMCMethods(t)})
|
||||
endif
|
||||
return metaOsztaly
|
||||
#endif // _NO_MCEDEFDICTCLASS_
|
||||
|
||||
#endif // _NO_EDEFDICTCLASS_
|
||||
#ifdef _IMPLEMENT_ONEW_
|
||||
**********************************************************************
|
||||
cimplement onew(name,params,body,deffile,defline,defpos)
|
||||
local o:=class:ocreate()
|
||||
|
||||
EDEFDICT.o:oinit(name,params,body,deffile,defline,defpos)
|
||||
return o
|
||||
#endif // _IMPLEMENT_ONEW_
|
||||
|
||||
**********************************************************************
|
||||
#ifdef _IMPLEMENT_OINIT_
|
||||
implement oinit(name,params,body,deffile,defline,defpos)
|
||||
super:oinit()
|
||||
return this
|
||||
#endif // _IMPLEMENT_OINIT_
|
||||
|
||||
**********************************************************************
|
||||
**********************************************************************
|
||||
#endif // _EDEFDICT_PRG_OCH_
|
||||
#endif // _EDEFDICT_PRG_
|
||||
@@ -1,144 +0,0 @@
|
||||
/*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
//*******************************************************************
|
||||
// edefdict.prg: #define sz¢t r elem
|
||||
// 1999, Csisz r Levente
|
||||
|
||||
//*******************************************************************
|
||||
// A helyettes¡t‚s sor n el kell fogadni a #define h(x,x) st¡lus£
|
||||
// definici¢t, ‚s ilyenkor az els“ 'x' hely‚n ll¢ ‚rt‚k
|
||||
// helyettes¡t“dik be mindenhova.
|
||||
|
||||
//*******************************************************************
|
||||
#include "ctoken.ch"
|
||||
#include "objgen.ch"
|
||||
|
||||
//*******************************************************************
|
||||
#include "token.och"
|
||||
|
||||
//*******************************************************************
|
||||
|
||||
#define _EDEFDICT_PRG_
|
||||
#define _IMPLEMENT_ONEW_
|
||||
|
||||
#include "edefdict.och"
|
||||
|
||||
|
||||
//*******************************************************************
|
||||
|
||||
implement oinit(name,params,body,deffile,defline,defpos)
|
||||
local w,i,j,p,pw,l
|
||||
|
||||
super:oinit()
|
||||
this:name :=name
|
||||
this:params :=params
|
||||
this:deffilelinepos :={deffile,defline,defpos}
|
||||
|
||||
if (empty(body))
|
||||
this:body:={}
|
||||
else
|
||||
l:=0
|
||||
for i:=len(body) to 1 step -1
|
||||
if (!TOKEN.body[i]:id==TKID_URES)
|
||||
l:=i
|
||||
exit
|
||||
endif
|
||||
end for
|
||||
if (empty(params))
|
||||
pw:={}
|
||||
// aeval(body,{|x| aadd(pw,x)})
|
||||
for i:=1 to l
|
||||
aadd(pw,body[i])
|
||||
end for
|
||||
this:body:={pw}
|
||||
else
|
||||
p:={}
|
||||
pw:={}
|
||||
// for i:=1 to len(body)
|
||||
for i:=1 to l
|
||||
w:=body[i]
|
||||
if (TOKEN.w:id==TKID_NEV .and.;
|
||||
0!=(j:=ascan(params,{|x| TOKEN.w:str==x})))
|
||||
|
||||
if (!empty(pw))
|
||||
aadd(p,pw)
|
||||
endif
|
||||
aadd(p,j)
|
||||
pw:={}
|
||||
else
|
||||
aadd(pw,w)
|
||||
endif
|
||||
end for
|
||||
if (!empty(pw))
|
||||
aadd(p,pw)
|
||||
endif
|
||||
this:body:=p
|
||||
endif
|
||||
endif
|
||||
return this
|
||||
|
||||
//*******************************************************************
|
||||
implement change(paramValues)
|
||||
local i,pi
|
||||
local r:={}
|
||||
|
||||
if (empty(this:body))
|
||||
return this:body
|
||||
elseif (empty(this:params))
|
||||
return this:body[1]
|
||||
endif
|
||||
|
||||
for i:=1 to len(this:body)
|
||||
if (valtype(this:body[i])=="N")
|
||||
pi:=this:body[i]
|
||||
if (len(paramValues)>=pi)
|
||||
aeval(paramValues[pi],{|x| aadd(r,x)})
|
||||
endif
|
||||
else
|
||||
aeval(this:body[i],{|x| aadd(r,x)})
|
||||
endif
|
||||
end for
|
||||
return r
|
||||
|
||||
//*******************************************************************
|
||||
implement printStr()
|
||||
local str:="#define "+"'"+this:name+"'"
|
||||
local w
|
||||
local wParams:={}
|
||||
local i
|
||||
|
||||
|
||||
if (this:params!=nil)
|
||||
str+="'("
|
||||
for i:=1 to len(this:params)
|
||||
aadd(wParams,{this:params[i]})
|
||||
if (i>1)
|
||||
str+=","
|
||||
endif
|
||||
str+=this:params[i]
|
||||
end for
|
||||
str+=")'"
|
||||
endif
|
||||
w:=this:change(wParams)
|
||||
|
||||
if (len(w)>0)
|
||||
str+=" "
|
||||
endif
|
||||
|
||||
for i:=1 to len(w)
|
||||
if (valtype(w[i])=="C")
|
||||
str+=w[i]
|
||||
else
|
||||
str+=TOKEN.(w[i]):getStr()
|
||||
endif
|
||||
end for
|
||||
|
||||
return str
|
||||
|
||||
//*******************************************************************
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1,398 +0,0 @@
|
||||
/*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
//*******************************************************************
|
||||
// expr.prg: Kifejez‚s hat rok meg llap¡t sa.
|
||||
// 1999, Csisz r Levente
|
||||
|
||||
//*******************************************************************
|
||||
#include "objgen.ch"
|
||||
|
||||
//*******************************************************************
|
||||
#include "prtree.och"
|
||||
#include "prtreepr.och"
|
||||
|
||||
//*******************************************************************
|
||||
#define EXPPRTREE_MAXDEEP 4
|
||||
|
||||
//*******************************************************************
|
||||
function expPrtree()
|
||||
// Megadja a kifejez‚seket vizsg l¢ elemz“ f t.
|
||||
|
||||
// Ha az adott sz¢r¢l (sorozatr¢l) tudni lehet, hogy hol van benne
|
||||
// a kifejez‚s hat r, akkor a result-ban egy sz m ll, ami
|
||||
// a sorozat utols¢, m‚g a kifejez‚shez tartoz¢ tagj nat a
|
||||
// sorsz ma. Ha ilyen nincs, akkor a result nil.
|
||||
|
||||
// A '!', '@', '++', '=' oszt lyok innen hi nyoznak, mert azok ut n
|
||||
// minden j”het.
|
||||
|
||||
static prtree
|
||||
|
||||
if (prtree==nil)
|
||||
|
||||
prtree:=C.PRTREE:onew()
|
||||
|
||||
#ifdef OLD
|
||||
// Kett“ hossz£ak, amiket elfogadjunk.
|
||||
PRTREE.prtree:addWord(nil,{"%","&"} )
|
||||
PRTREE.prtree:addWord(nil,{"%","++"} )
|
||||
PRTREE.prtree:addWord(nil,{"%","nev"} )
|
||||
PRTREE.prtree:addWord(nil,{"%","(a)"} )
|
||||
PRTREE.prtree:addWord(nil,{"%",".T."} )
|
||||
PRTREE.prtree:addWord(nil,{"%","1"} )
|
||||
PRTREE.prtree:addWord(nil,{"^","&"} )
|
||||
PRTREE.prtree:addWord(nil,{"^","++"} )
|
||||
PRTREE.prtree:addWord(nil,{"^","nev"} )
|
||||
PRTREE.prtree:addWord(nil,{"^","(a)"} )
|
||||
PRTREE.prtree:addWord(nil,{"^",".T."} )
|
||||
PRTREE.prtree:addWord(nil,{"^","1"} )
|
||||
PRTREE.prtree:addWord(nil,{"&","!"} )
|
||||
PRTREE.prtree:addWord(nil,{"&","@"} )
|
||||
PRTREE.prtree:addWord(nil,{"&","%"} )
|
||||
PRTREE.prtree:addWord(nil,{"&","^"} )
|
||||
PRTREE.prtree:addWord(nil,{"&","&"} )
|
||||
PRTREE.prtree:addWord(nil,{"&","*"} )
|
||||
PRTREE.prtree:addWord(nil,{"&","-"} )
|
||||
PRTREE.prtree:addWord(nil,{"&","+"} )
|
||||
PRTREE.prtree:addWord(nil,{"&","="} )
|
||||
PRTREE.prtree:addWord(nil,{"&","/"} )
|
||||
PRTREE.prtree:addWord(nil,{"&","++"} )
|
||||
PRTREE.prtree:addWord(nil,{"&","nev"} )
|
||||
PRTREE.prtree:addWord(nil,{"&","(a)"} )
|
||||
PRTREE.prtree:addWord(nil,{"&",".T."} )
|
||||
PRTREE.prtree:addWord(nil,{"&","1"} )
|
||||
PRTREE.prtree:addWord(nil,{"*","&"} )
|
||||
PRTREE.prtree:addWord(nil,{"*","++"} )
|
||||
PRTREE.prtree:addWord(nil,{"*","nev"} )
|
||||
PRTREE.prtree:addWord(nil,{"*","(a)"} )
|
||||
PRTREE.prtree:addWord(nil,{"*",".T."} )
|
||||
PRTREE.prtree:addWord(nil,{"*","1"} )
|
||||
PRTREE.prtree:addWord(nil,{"-","&"} )
|
||||
PRTREE.prtree:addWord(nil,{"-","++"} )
|
||||
PRTREE.prtree:addWord(nil,{"-","nev"} )
|
||||
PRTREE.prtree:addWord(nil,{"-","(a)"} )
|
||||
PRTREE.prtree:addWord(nil,{"-",".T."} )
|
||||
PRTREE.prtree:addWord(nil,{"-","1"} )
|
||||
PRTREE.prtree:addWord(nil,{"+","&"} )
|
||||
PRTREE.prtree:addWord(nil,{"+","++"} )
|
||||
PRTREE.prtree:addWord(nil,{"+","nev"} )
|
||||
PRTREE.prtree:addWord(nil,{"+","(a)"} )
|
||||
PRTREE.prtree:addWord(nil,{"+",".T."} )
|
||||
PRTREE.prtree:addWord(nil,{"+","1"} )
|
||||
PRTREE.prtree:addWord(nil,{"/","&"} )
|
||||
PRTREE.prtree:addWord(nil,{"/","++"} )
|
||||
PRTREE.prtree:addWord(nil,{"/","nev"} )
|
||||
PRTREE.prtree:addWord(nil,{"/","(a)"} )
|
||||
PRTREE.prtree:addWord(nil,{"/",".T."} )
|
||||
PRTREE.prtree:addWord(nil,{"/","1"} )
|
||||
PRTREE.prtree:addWord(nil,{"nev","!"} )
|
||||
PRTREE.prtree:addWord(nil,{"nev","@"} )
|
||||
PRTREE.prtree:addWord(nil,{"nev","%"} )
|
||||
PRTREE.prtree:addWord(nil,{"nev","^"} )
|
||||
PRTREE.prtree:addWord(nil,{"nev","&"} )
|
||||
PRTREE.prtree:addWord(nil,{"nev","*"} )
|
||||
PRTREE.prtree:addWord(nil,{"nev","-"} )
|
||||
PRTREE.prtree:addWord(nil,{"nev","+"} )
|
||||
PRTREE.prtree:addWord(nil,{"nev","="} )
|
||||
PRTREE.prtree:addWord(nil,{"nev","/"} )
|
||||
PRTREE.prtree:addWord(nil,{"nev","++"} )
|
||||
PRTREE.prtree:addWord(nil,{"nev","(a)"})
|
||||
PRTREE.prtree:addWord(nil,{"(a)","!"} )
|
||||
PRTREE.prtree:addWord(nil,{"(a)","@"} )
|
||||
PRTREE.prtree:addWord(nil,{"(a)","%"} )
|
||||
PRTREE.prtree:addWord(nil,{"(a)","^"} )
|
||||
PRTREE.prtree:addWord(nil,{"(a)","&"} )
|
||||
PRTREE.prtree:addWord(nil,{"(a)","*"} )
|
||||
PRTREE.prtree:addWord(nil,{"(a)","-"} )
|
||||
PRTREE.prtree:addWord(nil,{"(a)","+"} )
|
||||
PRTREE.prtree:addWord(nil,{"(a)","="} )
|
||||
PRTREE.prtree:addWord(nil,{"(a)","/"} )
|
||||
PRTREE.prtree:addWord(nil,{"(a)","++"} )
|
||||
PRTREE.prtree:addWord(nil,{"(a)","(a)"})
|
||||
PRTREE.prtree:addWord(nil,{".T.","!"} )
|
||||
PRTREE.prtree:addWord(nil,{".T.","@"} )
|
||||
PRTREE.prtree:addWord(nil,{".T.","%"} )
|
||||
PRTREE.prtree:addWord(nil,{".T.","^"} )
|
||||
PRTREE.prtree:addWord(nil,{".T.","&"} )
|
||||
PRTREE.prtree:addWord(nil,{".T.","*"} )
|
||||
PRTREE.prtree:addWord(nil,{".T.","-"} )
|
||||
PRTREE.prtree:addWord(nil,{".T.","+"} )
|
||||
PRTREE.prtree:addWord(nil,{".T.","="} )
|
||||
PRTREE.prtree:addWord(nil,{".T.","/"} )
|
||||
PRTREE.prtree:addWord(nil,{".T.","++"} )
|
||||
PRTREE.prtree:addWord(nil,{".T.","(a)"})
|
||||
PRTREE.prtree:addWord(nil,{"1","!"} )
|
||||
PRTREE.prtree:addWord(nil,{"1","@"} )
|
||||
PRTREE.prtree:addWord(nil,{"1","%"} )
|
||||
PRTREE.prtree:addWord(nil,{"1","^"} )
|
||||
PRTREE.prtree:addWord(nil,{"1","&"} )
|
||||
PRTREE.prtree:addWord(nil,{"1","*"} )
|
||||
PRTREE.prtree:addWord(nil,{"1","-"} )
|
||||
PRTREE.prtree:addWord(nil,{"1","+"} )
|
||||
PRTREE.prtree:addWord(nil,{"1","="} )
|
||||
PRTREE.prtree:addWord(nil,{"1","/"} )
|
||||
PRTREE.prtree:addWord(nil,{"1","++"} )
|
||||
PRTREE.prtree:addWord(nil,{"1","(a)"} )
|
||||
|
||||
#endif
|
||||
|
||||
// K‚t token k”z”tt kifejez‚shat rok.
|
||||
PRTREE.prtree:addWord(1,{"%","!"} )
|
||||
PRTREE.prtree:addWord(1,{"%","@"} )
|
||||
PRTREE.prtree:addWord(1,{"%","%"} )
|
||||
PRTREE.prtree:addWord(1,{"%","^"} )
|
||||
PRTREE.prtree:addWord(1,{"%","*"} )
|
||||
PRTREE.prtree:addWord(1,{"%","-"} )
|
||||
PRTREE.prtree:addWord(1,{"%","+"} )
|
||||
PRTREE.prtree:addWord(1,{"%","="} )
|
||||
PRTREE.prtree:addWord(1,{"%","/"} )
|
||||
PRTREE.prtree:addWord(1,{"^","!"} )
|
||||
PRTREE.prtree:addWord(1,{"^","@"} )
|
||||
PRTREE.prtree:addWord(1,{"^","%"} )
|
||||
PRTREE.prtree:addWord(1,{"^","^"} )
|
||||
PRTREE.prtree:addWord(1,{"^","*"} )
|
||||
PRTREE.prtree:addWord(1,{"^","-"} )
|
||||
PRTREE.prtree:addWord(1,{"^","+"} )
|
||||
PRTREE.prtree:addWord(1,{"^","="} )
|
||||
PRTREE.prtree:addWord(1,{"^","/"} )
|
||||
PRTREE.prtree:addWord(1,{"*","!"} )
|
||||
PRTREE.prtree:addWord(1,{"*","@"} )
|
||||
PRTREE.prtree:addWord(1,{"*","%"} )
|
||||
PRTREE.prtree:addWord(1,{"*","^"} )
|
||||
PRTREE.prtree:addWord(1,{"*","*"} )
|
||||
PRTREE.prtree:addWord(1,{"*","-"} )
|
||||
PRTREE.prtree:addWord(1,{"*","+"} )
|
||||
PRTREE.prtree:addWord(1,{"*","="} )
|
||||
PRTREE.prtree:addWord(1,{"*","/"} )
|
||||
PRTREE.prtree:addWord(1,{"-","!"} )
|
||||
PRTREE.prtree:addWord(1,{"-","@"} )
|
||||
PRTREE.prtree:addWord(1,{"-","%"} )
|
||||
PRTREE.prtree:addWord(1,{"-","^"} )
|
||||
PRTREE.prtree:addWord(1,{"-","*"} )
|
||||
PRTREE.prtree:addWord(1,{"-","-"} )
|
||||
PRTREE.prtree:addWord(1,{"-","+"} )
|
||||
PRTREE.prtree:addWord(1,{"-","="} )
|
||||
PRTREE.prtree:addWord(1,{"-","/"} )
|
||||
PRTREE.prtree:addWord(1,{"+","!"} )
|
||||
PRTREE.prtree:addWord(1,{"+","@"} )
|
||||
PRTREE.prtree:addWord(1,{"+","%"} )
|
||||
PRTREE.prtree:addWord(1,{"+","^"} )
|
||||
PRTREE.prtree:addWord(1,{"+","*"} )
|
||||
PRTREE.prtree:addWord(1,{"+","-"} )
|
||||
PRTREE.prtree:addWord(1,{"+","+"} )
|
||||
PRTREE.prtree:addWord(1,{"+","="} )
|
||||
PRTREE.prtree:addWord(1,{"+","/"} )
|
||||
PRTREE.prtree:addWord(1,{"/","!"} )
|
||||
PRTREE.prtree:addWord(1,{"/","@"} )
|
||||
PRTREE.prtree:addWord(1,{"/","%"} )
|
||||
PRTREE.prtree:addWord(1,{"/","^"} )
|
||||
PRTREE.prtree:addWord(1,{"/","*"} )
|
||||
PRTREE.prtree:addWord(1,{"/","-"} )
|
||||
PRTREE.prtree:addWord(1,{"/","+"} )
|
||||
PRTREE.prtree:addWord(1,{"/","="} )
|
||||
PRTREE.prtree:addWord(1,{"/","/"} )
|
||||
PRTREE.prtree:addWord(1,{"nev","nev"})
|
||||
PRTREE.prtree:addWord(1,{"nev",".T."})
|
||||
PRTREE.prtree:addWord(1,{"nev","1"} )
|
||||
PRTREE.prtree:addWord(1,{"(a)","nev"})
|
||||
PRTREE.prtree:addWord(1,{"(a)",".T."})
|
||||
PRTREE.prtree:addWord(1,{"(a)","1"} )
|
||||
PRTREE.prtree:addWord(1,{".T.","nev"})
|
||||
PRTREE.prtree:addWord(1,{".T.",".T."})
|
||||
PRTREE.prtree:addWord(1,{".T.","1"} )
|
||||
PRTREE.prtree:addWord(1,{"1","nev"} )
|
||||
PRTREE.prtree:addWord(1,{"1",".T."} )
|
||||
PRTREE.prtree:addWord(1,{"1","1"} )
|
||||
|
||||
// H rom hossz£ak, amiket elfogadunk.
|
||||
PRTREE.prtree:addWord(nil,{"/","-","nev"} )
|
||||
PRTREE.prtree:addWord(nil,{"/","-","1"} )
|
||||
PRTREE.prtree:addWord(nil,{"%","-","nev"} )
|
||||
PRTREE.prtree:addWord(nil,{"%","-","1"} )
|
||||
PRTREE.prtree:addWord(nil,{"^","-","nev"} )
|
||||
PRTREE.prtree:addWord(nil,{"^","-","1"} )
|
||||
PRTREE.prtree:addWord(nil,{"*","-","nev"} )
|
||||
PRTREE.prtree:addWord(nil,{"*","-","1"} )
|
||||
PRTREE.prtree:addWord(nil,{"-","-","nev"} )
|
||||
PRTREE.prtree:addWord(nil,{"-","-","1"} )
|
||||
PRTREE.prtree:addWord(nil,{"+","-","nev"} )
|
||||
PRTREE.prtree:addWord(nil,{"+","-","1"} )
|
||||
PRTREE.prtree:addWord(nil,{"+","/","nev"} )
|
||||
|
||||
// Speci lis kiv‚telek, amiket el kell fogadni.
|
||||
PRTREE.prtree:addWord(nil,{"*","/","nev"} )
|
||||
|
||||
// Speci lis kiv‚telek, amikben kifejez‚shat r van.
|
||||
PRTREE.prtree:addWord(2,{"nev","++","nev"} )
|
||||
PRTREE.prtree:addWord(2,{"nev","++",".T."} )
|
||||
PRTREE.prtree:addWord(2,{"nev","++","1"} )
|
||||
PRTREE.prtree:addWord(2,{"(a)","++","nev"} )
|
||||
PRTREE.prtree:addWord(2,{"(a)","++",".T."} )
|
||||
PRTREE.prtree:addWord(2,{"(a)","++","1"} )
|
||||
PRTREE.prtree:addWord(2,{".T.","++","nev"} )
|
||||
PRTREE.prtree:addWord(2,{".T.","++",".T."} )
|
||||
PRTREE.prtree:addWord(2,{".T.","++","1"} )
|
||||
PRTREE.prtree:addWord(2,{"1","++","nev"} )
|
||||
PRTREE.prtree:addWord(2,{"1","++",".T."} )
|
||||
PRTREE.prtree:addWord(2,{"1","++","1"} )
|
||||
|
||||
endif
|
||||
return prtree
|
||||
|
||||
|
||||
//*******************************************************************
|
||||
#ifdef OLD
|
||||
function exprChk2(clf1,clf2)
|
||||
// A k‚t classify-r¢l meg llap¡tja, hogy k”vetkezhetnek-e egym s ut n.
|
||||
// Egyik sem lehet <20>res (sorv‚gjel, etc.)
|
||||
local prtreepr,w
|
||||
|
||||
if (clf1=="!" .or. clf1=="@" .or. clf1=="++" .or. clf1=="=")
|
||||
return .t.
|
||||
endif
|
||||
|
||||
|
||||
prtreepr:=C.PRTREEPR:onew(expPrtree2())
|
||||
if (nil==(w:=PRTREEPR.prtreepr:put(clf1)))
|
||||
w:=PRTREEPR.prtreepr:put(clf2)
|
||||
endif
|
||||
|
||||
// w==nil: Ez nem lehet, mert a f ban csak k‚t elem– szavak
|
||||
// vannak.
|
||||
return w!=.f.
|
||||
|
||||
//*******************************************************************
|
||||
function expPrtree3()
|
||||
// Megadja a h rom elem– kifejez‚sekre a kiv‚teleket.
|
||||
// Ezek azok, amiket az exprChk2() nem enged el, de j¢k.
|
||||
|
||||
static prtree
|
||||
|
||||
if (prtree==nil)
|
||||
|
||||
prtree:=C.PRTREE:onew()
|
||||
|
||||
PRTREE.prtree:addWord(nil,{"/","-","nev"} )
|
||||
PRTREE.prtree:addWord(nil,{"/","-","1"} )
|
||||
PRTREE.prtree:addWord(nil,{"%","-","nev"} )
|
||||
PRTREE.prtree:addWord(nil,{"%","-","1"} )
|
||||
PRTREE.prtree:addWord(nil,{"^","-","nev"} )
|
||||
PRTREE.prtree:addWord(nil,{"^","-","1"} )
|
||||
PRTREE.prtree:addWord(nil,{"*","-","nev"} )
|
||||
PRTREE.prtree:addWord(nil,{"*","-","1"} )
|
||||
PRTREE.prtree:addWord(nil,{"-","-","nev"} )
|
||||
PRTREE.prtree:addWord(nil,{"-","-","1"} )
|
||||
PRTREE.prtree:addWord(nil,{"+","-","nev"} )
|
||||
PRTREE.prtree:addWord(nil,{"+","-","1"} )
|
||||
PRTREE.prtree:addWord(nil,{"+","/","nev"} )
|
||||
// PRTREE.prtree:addWord(nil,{"","",""} )
|
||||
// PRTREE.prtree:addWord(nil,{"","",""} )
|
||||
// PRTREE.prtree:addWord(nil,{"","",""} )
|
||||
// PRTREE.prtree:addWord(nil,{"","",""} )
|
||||
|
||||
endif
|
||||
return prtree
|
||||
|
||||
//*******************************************************************
|
||||
function exprChk3(clf1,clf2,clf3)
|
||||
// A h rom classify-r¢l meg llap¡tja, hogy k”vetkezhetnek-e egym s
|
||||
// ut n.
|
||||
// Csak akkor h¡vhat¢, ha (clf2,clf3)-at az exprChk2() nem fogadta el.
|
||||
// Egyik sem lehet <20>res (sorv‚gjel, etc.)
|
||||
local prtreepr,w
|
||||
|
||||
prtreepr:=C.PRTREEPR:onew(expPrtree3())
|
||||
if (nil==(w:=PRTREEPR.prtreepr:put(clf1)))
|
||||
if (nil==(w:=PRTREEPR.prtreepr:put(clf2)))
|
||||
w:=PRTREEPR.prtreepr:put(clf3)
|
||||
endif
|
||||
endif
|
||||
|
||||
// w==nil: Ez nem lehet, mert a f ban csak k‚t elem– szavak
|
||||
// vannak.
|
||||
return w!=.f.
|
||||
|
||||
//*******************************************************************
|
||||
function exprChk(clfArray)
|
||||
// Meg llp¡tja, hogy a clfArray utols¢ n. eleme k”z”tt hol van
|
||||
// a kifejez‚s hat r.
|
||||
// Ret: nil, ha nincs kifejez‚s hat r.
|
||||
// sz m: a clfArray-ban az utols¢, m‚g a kifejez‚shez tartoz¢
|
||||
// elem indexe.
|
||||
local clf0,clf1,clf2
|
||||
|
||||
if (len(clfArray)<2)
|
||||
return nil
|
||||
endif
|
||||
|
||||
clf0:=clfArray[len(clfArray)]
|
||||
clf1:=clfArray[len(clfArray)-1]
|
||||
|
||||
if (exprChk2(clf1,clf0))
|
||||
return nil
|
||||
elseif (len(clfArray)>=3)
|
||||
clf2:=clfArray[len(clfArray)-2]
|
||||
if (exprChk3(clf2,clf1,clf0))
|
||||
return nil
|
||||
endif
|
||||
endif
|
||||
return len(clfArray)-1
|
||||
//*******************************************************************
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
//*******************************************************************
|
||||
function exprChk(clfArray)
|
||||
// Meg llap¡tja, hogy a clfArray utols¢ EXPPRTREE_MAXDEEP eleme
|
||||
// k”z”tt hol van a kifejez‚s hat r.
|
||||
// Felteszi, hogy a clfArray els“ n-1 elem‚r“l nem meg llap¡that¢,
|
||||
// hogy hol van a kifejez‚shat r.
|
||||
// Ret: nil, ha nincs kifejez‚s hat r.
|
||||
// sz m: a clfArray-ban az utols¢, m‚g a kifejez‚shez tartoz¢
|
||||
// elem indexe.
|
||||
/*
|
||||
A k”vetkez“k‚ppen m–k”dik:
|
||||
n=EXPPRTREE_MAXDEEP
|
||||
Megn‚zi, hogy a clfArray utols¢ n elem‚re meg llap¡that¢-e
|
||||
kifejez‚shat r, ha igen, OK, ha nem, akkor az n-et cs”kkenti
|
||||
egy-el. Ha az n<2, akkor a kifejez‚shat r nem llap¡that¢ meg.
|
||||
|
||||
Egy n-re pedig £gy llap¡tja meg, hogy van-e kifejez‚shat r,
|
||||
hogy elemezteti az exprPrTree-vel. Ha benne van, akkor a
|
||||
result megmondja az eredm‚nyt. Ha nincs benne, akkor elfogadjuk.
|
||||
Ha az elemz“ azt mondja, hogy m‚g kell olvasni, akkor
|
||||
elfogadjuk.
|
||||
*/
|
||||
local n, prtreepr,i,w
|
||||
|
||||
for n:=EXPPRTREE_MAXDEEP to 2 step -1
|
||||
if (len(clfArray)>=n)
|
||||
prtreepr:=C.PRTREEPR:onew(expPrtree())
|
||||
for i:=len(clfarray)-n+1 to len(clfArray)
|
||||
if (nil!=(w:=PRTREEPR.prtreepr:put(clfArray[i])))
|
||||
// Az elemz“ meg llt.
|
||||
if (w)
|
||||
// Benne van.
|
||||
if (PRTREEPR.prtreepr:result==nil)
|
||||
// Elfogadva.
|
||||
return nil
|
||||
endif
|
||||
// Megvan a kifejez‚shat r.
|
||||
return len(clfArray)-n+PRTREEPR.prtreepr:result
|
||||
else
|
||||
// Nincs benne, megy<67>nk tov bb.
|
||||
exit
|
||||
endif
|
||||
endif
|
||||
end for
|
||||
endif
|
||||
end for
|
||||
|
||||
return nil
|
||||
|
||||
|
||||
//*******************************************************************
|
||||
|
||||
@@ -1,43 +0,0 @@
|
||||
//
|
||||
// $Id$
|
||||
//
|
||||
|
||||
//*******************************************************************
|
||||
// extrdict.cls: #xtranslate sz˘t r elem
|
||||
// 1999, Csisz r Levente
|
||||
|
||||
class EXTRDICT OBJECT
|
||||
|
||||
attrib cmdType // 0: xtranslatae, 1: xcommand.
|
||||
attrib leftSide
|
||||
attrib rightSide
|
||||
attrib deffilelinepos
|
||||
attrib numMatchMarkers
|
||||
attrib undefRMarkers // Azok a result markerek, amikhez nincs
|
||||
// match marker
|
||||
|
||||
nmethod change(paramValues)
|
||||
// A paramValues tartalmazza a match tokenekre illesztett
|
||||
// tokeneket.
|
||||
|
||||
nmethod printStr()
|
||||
// Stringk‚nt adja meg az elemet #xtranslate leftSide => rightSide
|
||||
// form ban.
|
||||
|
||||
// nmethod setNextToken()
|
||||
// Az ”sszes match markerben be llˇtja a nextToken-t, ha van.
|
||||
|
||||
// nmethod calcSorszam()
|
||||
// - ™sszeszedi a match markereket.
|
||||
// - Minden match markerbe beˇrja a sorsz m t.
|
||||
// - Minden result marker-be beˇrja a hozz tartoz˘ match
|
||||
// marker sorsz m t.
|
||||
|
||||
rmethod oinit(cmdType,leftSide,rightSide,deffile,defline,defpos)
|
||||
|
||||
|
||||
metaclass
|
||||
|
||||
rmethod onew(cmdType,leftSide,rightSide,deffile,defline,defpos)
|
||||
|
||||
|
||||
@@ -1,281 +0,0 @@
|
||||
// EXTRDICT.och oszt ly implement ci¢.
|
||||
// Gener lva: 1999.06.10, 14:39:58, OBJCCC v2.2.03
|
||||
// Meta oszt ly defin¡ci¢: Van
|
||||
|
||||
|
||||
#ifndef CA_OBJECT_N
|
||||
#ifdef _STRICT_PARENT_
|
||||
#ifdef _CA_CM_ONLY_
|
||||
#include "OBJECT.och"
|
||||
#else // _CA_CM_ONLY_
|
||||
#define _CA_CM_ONLY_
|
||||
#include "OBJECT.och"
|
||||
#undef _CA_CM_ONLY_
|
||||
#endif // _CA_CM_ONLY_
|
||||
#else
|
||||
#include "OBJECT.och"
|
||||
#endif // _STRICT_PARENT_
|
||||
#endif // CA_OBJECT_N
|
||||
|
||||
#ifndef _CA_CM_ONLY_
|
||||
#ifndef _EXTRDICT_OCH_
|
||||
#define _EXTRDICT_OCH_
|
||||
|
||||
|
||||
|
||||
|
||||
#xtranslate EXTRDICT.<obj>:oinit => (OBJGEN.(<obj>):(4))
|
||||
#xtranslate EXTRDICT.<obj>:getclass => (OBJGEN.(<obj>):(5))
|
||||
#xtranslate EXTRDICT.<obj>:isclass => (OBJGEN.(<obj>):(6))
|
||||
#xtranslate EXTRDICT.<obj>:getattrib => (OBJGEN.(<obj>):(7))
|
||||
#xtranslate EXTRDICT.<obj>:setattrib => (OBJGEN.(<obj>):(8))
|
||||
|
||||
|
||||
#xtranslate EXTRDICT.<obj>:cmdtype => <obj>\[CA_OBJECT_N+1\]
|
||||
#xtranslate EXTRDICT.<obj>:leftside => <obj>\[CA_OBJECT_N+2\]
|
||||
#xtranslate EXTRDICT.<obj>:rightside => <obj>\[CA_OBJECT_N+3\]
|
||||
#xtranslate EXTRDICT.<obj>:deffilelinepos => <obj>\[CA_OBJECT_N+4\]
|
||||
#xtranslate EXTRDICT.<obj>:nummatchmarkers => <obj>\[CA_OBJECT_N+5\]
|
||||
#xtranslate EXTRDICT.<obj>:undefrmarkers => <obj>\[CA_OBJECT_N+6\]
|
||||
|
||||
// Specifik lva: change(paramValues)
|
||||
// Specifik lva: printstr()
|
||||
// ™r”k”lve: oinit(cmdType,leftSide,rightSide,deffile,defline,defpos)
|
||||
|
||||
#xtranslate EXTRDICT.<obj>:change => (OBJGEN.(<obj>):(CM_OBJECT_N+1))
|
||||
#xtranslate EXTRDICT.<obj>:printstr => (OBJGEN.(<obj>):(CM_OBJECT_N+2))
|
||||
// ™r”k”lve: oinit(cmdType,leftSide,rightSide,deffile,defline,defpos)
|
||||
|
||||
#endif // _EXTRDICT_OCH_
|
||||
#endif // _CA_CM_ONLY_
|
||||
|
||||
#ifndef CA_EXTRDICT_N
|
||||
#define CA_EXTRDICT_N CA_OBJECT_N+6
|
||||
#define CM_EXTRDICT_N CM_OBJECT_N+2
|
||||
#endif // CA_EXTRDICT_N
|
||||
|
||||
#ifndef _CA_CM_ONLY_
|
||||
#ifndef _EXTRDICTCLASS_OCH_
|
||||
#define _EXTRDICTCLASS_OCH_
|
||||
|
||||
**********************************************************************
|
||||
#xtranslate C.EXTRDICT:<m> => (EXTRDICTCLASS.clEXTRDICT():<m>)
|
||||
#xtranslate C.EXTRDICT:self() => (clEXTRDICT())
|
||||
|
||||
|
||||
#xtranslate EXTRDICTCLASS.<obj>:parent => <obj>\[CA_OBJECT_N+1\]
|
||||
#xtranslate EXTRDICTCLASS.<obj>:name => <obj>\[CA_OBJECT_N+2\]
|
||||
#xtranslate EXTRDICTCLASS.<obj>:objsize => <obj>\[CA_OBJECT_N+3\]
|
||||
#xtranslate EXTRDICTCLASS.<obj>:attribs => <obj>\[CA_OBJECT_N+4\]
|
||||
#xtranslate EXTRDICTCLASS.<obj>:methods => <obj>\[CA_OBJECT_N+5\]
|
||||
#xtranslate EXTRDICTCLASS.<obj>:classid => <obj>\[CA_OBJECT_N+6\]
|
||||
#xtranslate EXTRDICTCLASS.<obj>:parentclassids => <obj>\[CA_OBJECT_N+7\]
|
||||
#xtranslate EXTRDICTCLASS.<obj>:amblock => <obj>\[CA_OBJECT_N+8\]
|
||||
#xtranslate EXTRDICTCLASS.<obj>:methodsblock => <obj>\[CA_OBJECT_N+9\]
|
||||
#xtranslate EXTRDICTCLASS.<obj>:objmethodsimplement => <obj>\[CA_OBJECT_N+10\]
|
||||
|
||||
|
||||
#xtranslate EXTRDICTCLASS.<obj>:oinit => (OBJGEN.(<obj>):(4))
|
||||
#xtranslate EXTRDICTCLASS.<obj>:getclass => (OBJGEN.(<obj>):(5))
|
||||
#xtranslate EXTRDICTCLASS.<obj>:isclass => (OBJGEN.(<obj>):(6))
|
||||
#xtranslate EXTRDICTCLASS.<obj>:getattrib => (OBJGEN.(<obj>):(7))
|
||||
#xtranslate EXTRDICTCLASS.<obj>:setattrib => (OBJGEN.(<obj>):(8))
|
||||
#xtranslate EXTRDICTCLASS.<obj>:onew => (OBJGEN.(<obj>):(CM_OBJECT_N+1))
|
||||
#xtranslate EXTRDICTCLASS.<obj>:ocreate => (OBJGEN.(<obj>):(CM_OBJECT_N+2))
|
||||
#xtranslate EXTRDICTCLASS.<obj>:rawoinit => (OBJGEN.(<obj>):(CM_OBJECT_N+3))
|
||||
#xtranslate EXTRDICTCLASS.<obj>:oinitclass => (OBJGEN.(<obj>):(CM_OBJECT_N+4))
|
||||
#xtranslate EXTRDICTCLASS.<obj>:getmethodsimplement => (OBJGEN.(<obj>):(CM_OBJECT_N+5))
|
||||
#xtranslate EXTRDICTCLASS.<obj>:attribidx => (OBJGEN.(<obj>):(CM_OBJECT_N+6))
|
||||
#xtranslate EXTRDICTCLASS.<obj>:needclassid => (OBJGEN.(<obj>):(CM_OBJECT_N+7))
|
||||
#xtranslate EXTRDICTCLASS.<obj>:isinheritfrom => (OBJGEN.(<obj>):(CM_OBJECT_N+8))
|
||||
|
||||
|
||||
|
||||
// ™r”k”lve: onew(cmdType,leftSide,rightSide,deffile,defline,defpos)
|
||||
|
||||
// ™r”k”lve: onew(cmdType,leftSide,rightSide,deffile,defline,defpos)
|
||||
|
||||
#endif // _EXTRDICTCLASS_OCH_
|
||||
#endif // _CA_CM_ONLY_
|
||||
|
||||
#ifndef CA_EXTRDICTCLASS_N
|
||||
#define CA_EXTRDICTCLASS_N CA_BEHAVIOR_N+0
|
||||
#define CM_EXTRDICTCLASS_N CM_BEHAVIOR_N+0
|
||||
#endif // CA_EXTRDICTCLASS_N
|
||||
|
||||
|
||||
**********************************************************************
|
||||
#ifdef _EXTRDICT_PRG_
|
||||
#ifndef _EXTRDICT_PRG_OCH_
|
||||
#define _EXTRDICT_PRG_OCH_
|
||||
|
||||
|
||||
**********************************************************************
|
||||
#xtranslate othis:<m> => EXTRDICT.(othis):<m>
|
||||
#xtranslate thisclass:<m> => EXTRDICTCLASS.(this:getClass()):<m>
|
||||
#define CTHIS EXTRDICT
|
||||
|
||||
|
||||
**********************************************************************
|
||||
#xtranslate this:<m> => EXTRDICT.(this):<m>
|
||||
|
||||
#xcommand implement change(paramValues) => ;
|
||||
static function change(this,paramValues)
|
||||
#xcommand implement printstr() => static function printstr(this)
|
||||
#xcommand implement oinit(cmdType,leftSide,rightSide,deffile,defline,defpos) => ;
|
||||
static function oinit(this,cmdType,leftSide,rightSide,deffile,defline,defpos)
|
||||
|
||||
#ifdef _IMPLEMENT_EXPORT_
|
||||
#xcommand implement export change(paramValues) => ;
|
||||
function change(this,paramValues)
|
||||
#xcommand implement export printstr() => function printstr(this)
|
||||
#xcommand implement export oinit(cmdType,leftSide,rightSide,deffile,defline,defpos) => ;
|
||||
function oinit(this,cmdType,leftSide,rightSide,deffile,defline,defpos)
|
||||
#endif // _IMPLEMENT_EXPORT_
|
||||
|
||||
#xtranslate super:oinit => (OBJGENM.(eval(BEHAVIOR.clOBJECT():objmethodsimplement)).(this):(4))
|
||||
#xtranslate super:getclass => (OBJGENM.(eval(BEHAVIOR.clOBJECT():objmethodsimplement)).(this):(5))
|
||||
#xtranslate super:isclass => (OBJGENM.(eval(BEHAVIOR.clOBJECT():objmethodsimplement)).(this):(6))
|
||||
#xtranslate super:getattrib => (OBJGENM.(eval(BEHAVIOR.clOBJECT():objmethodsimplement)).(this):(7))
|
||||
#xtranslate super:setattrib => (OBJGENM.(eval(BEHAVIOR.clOBJECT():objmethodsimplement)).(this):(8))
|
||||
|
||||
**********************************************************************
|
||||
static function setCMethods(pOsztaly)
|
||||
// Egy t”mb”t felt”lt az oszt ly m–veleti blokkjaival.
|
||||
pOsztaly[(CM_OBJECT_N+1)]:={|this,paramValues| change(this,paramValues)}
|
||||
pOsztaly[(CM_OBJECT_N+2)]:={|this| printstr(this)}
|
||||
pOsztaly[(4)]:={|this,cmdType,leftSide,rightSide,deffile,defline,defpos| oinit(this,cmdType,leftSide,rightSide,deffile,defline,defpos)}
|
||||
return pOsztaly
|
||||
|
||||
**********************************************************************
|
||||
static function setCams(ta,tm)
|
||||
// Egy t”mb”t felt”lt az oszt ly ltal def. objektumok attrib£tumaival ‚s m–veleteivel.
|
||||
ta[CA_OBJECT_N+1-CA_NIL_N] := {CA_OBJECT_N+1,'cmdtype', }
|
||||
ta[CA_OBJECT_N+2-CA_NIL_N] := {CA_OBJECT_N+2,'leftside',nil}
|
||||
ta[CA_OBJECT_N+3-CA_NIL_N] := {CA_OBJECT_N+3,'rightside',nil}
|
||||
ta[CA_OBJECT_N+4-CA_NIL_N] := {CA_OBJECT_N+4,'deffilelinepos',nil}
|
||||
ta[CA_OBJECT_N+5-CA_NIL_N] := {CA_OBJECT_N+5,'nummatchmarkers',nil}
|
||||
ta[CA_OBJECT_N+6-CA_NIL_N] := {CA_OBJECT_N+6,'undefrmarkers', }
|
||||
|
||||
tm[(CM_OBJECT_N+1)-CM_NIL_N] := {(CM_OBJECT_N+1),'change','paramValues',nil}
|
||||
tm[(CM_OBJECT_N+2)-CM_NIL_N] := {(CM_OBJECT_N+2),'printstr','',nil}
|
||||
tm[(4)-CM_NIL_N] := {(4),'oinit','cmdType,leftSide,rightSide,deffile,defline,defpos',nil}
|
||||
return nil
|
||||
|
||||
#ifndef _NO_CLEXTRDICT_
|
||||
#ifdef _STRICT_PARENT_
|
||||
#ifdef _CA_CM_ONLY_
|
||||
#include "meta.och"
|
||||
#else // _CA_CM_ONLY_
|
||||
#define _CA_CM_ONLY_
|
||||
#include "meta.och"
|
||||
#undef _CA_CM_ONLY_
|
||||
#endif // _CA_CM_ONLY_
|
||||
#else
|
||||
#include "meta.och"
|
||||
#endif // _STRICT_PARENT_
|
||||
**********************************************************************
|
||||
function clEXTRDICT()
|
||||
// El“szedi az oszt lyt. (class)
|
||||
static osztaly
|
||||
if (osztaly==nil)
|
||||
osztaly:=META.mcEXTRDICTCLASS():onew(;
|
||||
clOBJECT(),;
|
||||
"EXTRDICT",;
|
||||
CA_EXTRDICT_N,;
|
||||
CM_EXTRDICT_N,;
|
||||
{|ta,tm|setCams(ta,tm)},;
|
||||
{|t|setCMethods(t)})
|
||||
endif
|
||||
return osztaly
|
||||
#endif // _NO_CLEXTRDICT_
|
||||
|
||||
#ifndef _NO_EXTRDICTCLASS_
|
||||
|
||||
**********************************************************************
|
||||
#xtranslate class:<m> => EXTRDICTCLASS.(class):<m>
|
||||
|
||||
#xcommand cimplement onew(cmdType,leftSide,rightSide,deffile,defline,defpos) => ;
|
||||
static function onew(class,cmdType,leftSide,rightSide,deffile,defline,defpos)
|
||||
|
||||
#ifdef _IMPLEMENT_EXPORT_
|
||||
#xcommand cimplement export onew(cmdType,leftSide,rightSide,deffile,defline,defpos) => ;
|
||||
function onew(class,cmdType,leftSide,rightSide,deffile,defline,defpos)
|
||||
#endif // _IMPLEMENT_EXPORT_
|
||||
|
||||
#xtranslate superclass:oinit => (OBJGENM.(eval(BEHAVIOR.clBEHAVIOR():objmethodsimplement)).(class):(4))
|
||||
#xtranslate superclass:getclass => (OBJGENM.(eval(BEHAVIOR.clBEHAVIOR():objmethodsimplement)).(class):(5))
|
||||
#xtranslate superclass:isclass => (OBJGENM.(eval(BEHAVIOR.clBEHAVIOR():objmethodsimplement)).(class):(6))
|
||||
#xtranslate superclass:getattrib => (OBJGENM.(eval(BEHAVIOR.clBEHAVIOR():objmethodsimplement)).(class):(7))
|
||||
#xtranslate superclass:setattrib => (OBJGENM.(eval(BEHAVIOR.clBEHAVIOR():objmethodsimplement)).(class):(8))
|
||||
#xtranslate superclass:onew => (OBJGENM.(eval(BEHAVIOR.clBEHAVIOR():objmethodsimplement)).(class):(CM_OBJECT_N+1))
|
||||
#xtranslate superclass:ocreate => (OBJGENM.(eval(BEHAVIOR.clBEHAVIOR():objmethodsimplement)).(class):(CM_OBJECT_N+2))
|
||||
#xtranslate superclass:rawoinit => (OBJGENM.(eval(BEHAVIOR.clBEHAVIOR():objmethodsimplement)).(class):(CM_OBJECT_N+3))
|
||||
#xtranslate superclass:oinitclass => (OBJGENM.(eval(BEHAVIOR.clBEHAVIOR():objmethodsimplement)).(class):(CM_OBJECT_N+4))
|
||||
#xtranslate superclass:getmethodsimplement => (OBJGENM.(eval(BEHAVIOR.clBEHAVIOR():objmethodsimplement)).(class):(CM_OBJECT_N+5))
|
||||
#xtranslate superclass:attribidx => (OBJGENM.(eval(BEHAVIOR.clBEHAVIOR():objmethodsimplement)).(class):(CM_OBJECT_N+6))
|
||||
#xtranslate superclass:needclassid => (OBJGENM.(eval(BEHAVIOR.clBEHAVIOR():objmethodsimplement)).(class):(CM_OBJECT_N+7))
|
||||
#xtranslate superclass:isinheritfrom => (OBJGENM.(eval(BEHAVIOR.clBEHAVIOR():objmethodsimplement)).(class):(CM_OBJECT_N+8))
|
||||
|
||||
**********************************************************************
|
||||
static function setMCMethods(pOsztaly)
|
||||
// Egy t”mb”t felt”lt a metaoszt ly m–veleti blokkjaival.
|
||||
pOsztaly[(CM_OBJECT_N+1)]:={|class,cmdType,leftSide,rightSide,deffile,defline,defpos| onew(class,cmdType,leftSide,rightSide,deffile,defline,defpos)}
|
||||
return pOsztaly
|
||||
|
||||
**********************************************************************
|
||||
static function setMCams(ta,tm)
|
||||
// Egy t”mb”t felt”lt a metaoszt ly ltal def. objektumok attrib£tumaival ‚s m–veleteivel.
|
||||
|
||||
tm[(CM_OBJECT_N+1)-CM_NIL_N] := {(CM_OBJECT_N+1),'onew','cmdType,leftSide,rightSide,deffile,defline,defpos',nil}
|
||||
return nil
|
||||
|
||||
**********************************************************************
|
||||
#ifndef _NO_MCEXTRDICTCLASS_
|
||||
#ifdef _STRICT_PARENT_
|
||||
#ifdef _CA_CM_ONLY_
|
||||
#include "meta.och" // "metaclas.och"
|
||||
#else // _CA_CM_ONLY_
|
||||
#define _CA_CM_ONLY_
|
||||
#include "meta.och" // "metaclas.och"
|
||||
#undef _CA_CM_ONLY_
|
||||
#endif // _CA_CM_ONLY_
|
||||
#else
|
||||
#include "meta.och" // "metaclas.och"
|
||||
#endif // _STRICT_PARENT_
|
||||
function mcEXTRDICTCLASS()
|
||||
// El“szedi az oszt ly metaoszt ly t. (metaclass)
|
||||
static metaOsztaly
|
||||
if (metaOsztaly==nil)
|
||||
metaOsztaly:=META.clMETA():onew(;
|
||||
clBEHAVIOR(),;
|
||||
"EXTRDICTCLASS",;
|
||||
CA_EXTRDICTCLASS_N,;
|
||||
CM_EXTRDICTCLASS_N,;
|
||||
{|ta,tm|setMCams(ta,tm)},;
|
||||
{|t|setMCMethods(t)})
|
||||
endif
|
||||
return metaOsztaly
|
||||
#endif // _NO_MCEXTRDICTCLASS_
|
||||
|
||||
#endif // _NO_EXTRDICTCLASS_
|
||||
#ifdef _IMPLEMENT_ONEW_
|
||||
**********************************************************************
|
||||
cimplement onew(cmdType,leftSide,rightSide,deffile,defline,defpos)
|
||||
local o:=class:ocreate()
|
||||
|
||||
EXTRDICT.o:oinit(cmdType,leftSide,rightSide,deffile,defline,defpos)
|
||||
return o
|
||||
#endif // _IMPLEMENT_ONEW_
|
||||
|
||||
**********************************************************************
|
||||
#ifdef _IMPLEMENT_OINIT_
|
||||
implement oinit(cmdType,leftSide,rightSide,deffile,defline,defpos)
|
||||
super:oinit()
|
||||
return this
|
||||
#endif // _IMPLEMENT_OINIT_
|
||||
|
||||
**********************************************************************
|
||||
**********************************************************************
|
||||
#endif // _EXTRDICT_PRG_OCH_
|
||||
#endif // _EXTRDICT_PRG_
|
||||
@@ -1,335 +0,0 @@
|
||||
/*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
//*******************************************************************
|
||||
// extrdict.prg: #xtranslate sz¢t r elem
|
||||
// 1999, Csisz r Levente
|
||||
|
||||
//*******************************************************************
|
||||
/*
|
||||
A helyettes¡t‚s £gy megy, hogy minden match marker kap egy
|
||||
sorsz mot. A change f<>ggv‚ny egy olyan t”mb”t v r, ahol
|
||||
az i. elem, az i. match markerre illeszkedett token list k
|
||||
list ja. (Egy match markerre t”bbsz”r is lehet illeszteni, ha '[]'
|
||||
k”z”tt volt.)
|
||||
|
||||
Ezekut n a csere £gy megy, hogy megy<67>nk a jobb oldalon,
|
||||
ha nem '[]' k”z”tti result markert tal lunk, akkor
|
||||
behelyettes¡tj<74>k a hozz tartoz¢ token list t. (Ekkor pontosan egy
|
||||
ilyen kell, hogy legyen)
|
||||
|
||||
Ha '[]' k”z”tti tokeneket annyiszor ¡rjuk ki, amennyi a hozz
|
||||
tartoz¢ result markere csere list inak a maxim lis hossza.
|
||||
|
||||
*/
|
||||
|
||||
//*******************************************************************
|
||||
#include "ctoken.ch"
|
||||
#include "objgen.ch"
|
||||
|
||||
//*******************************************************************
|
||||
#include "token.och"
|
||||
#include "mmarker.och"
|
||||
#include "rmarker.och"
|
||||
#include "maltrset.och"
|
||||
#include "ralter.och"
|
||||
|
||||
//*******************************************************************
|
||||
|
||||
#define _EXTRDICT_PRG_
|
||||
#define _IMPLEMENT_ONEW_
|
||||
|
||||
#include "extrdict.och"
|
||||
|
||||
|
||||
//*******************************************************************
|
||||
#define EQTYPE_ALLLEN nil
|
||||
#define EQTYPE_4LEN 1
|
||||
|
||||
//*******************************************************************
|
||||
|
||||
implement oinit(cmdType,leftSide,rightSide,deffile,defline,defpos)
|
||||
local eqType
|
||||
|
||||
super:oinit()
|
||||
this:cmdType :=cmdType
|
||||
this:leftSide :=leftSide
|
||||
this:rightSide :=rightSide
|
||||
this:deffilelinepos :={deffile,defline,defpos}
|
||||
|
||||
calcSorszam(this)
|
||||
setNextToken(this)
|
||||
|
||||
|
||||
if (this:cmdType==XTRTYPE_XTRANSLATE)
|
||||
eqType:=EQTYPE_ALLLEN
|
||||
elseif (this:cmdType==XTRTYPE_XCOMMAND)
|
||||
eqType:=EQTYPE_ALLLEN
|
||||
elseif (this:cmdType==XTRTYPE_TRANSLATE)
|
||||
eqType:=EQTYPE_4LEN
|
||||
elseif (this:cmdType==XTRTYPE_COMMAND)
|
||||
eqType:=EQTYPE_4LEN
|
||||
else
|
||||
eqType:=EQTYPE_ALLLEN
|
||||
endif
|
||||
|
||||
evalLTokenList(this:leftSide,{|x| TOKEN.x:eqType:=eqType})
|
||||
|
||||
return this
|
||||
|
||||
//*******************************************************************
|
||||
static function evalLTokenList(tokenList,block)
|
||||
// V‚gigmegy egy olyan tokenlist n, ami a bal oldalon llhat.
|
||||
local i
|
||||
|
||||
// Mj.: Blokkokat nem lehet egym sba skatuly zni.
|
||||
for i:=1 to len(tokenList)
|
||||
if (TOKEN.tokenList[i]:id==TKID_MALTERSET)
|
||||
aeval(MALTRSET.tokenList[i]:alterset,;
|
||||
{|x| evalLTokenList(x,block)})
|
||||
else
|
||||
eval(block,tokenList[i])
|
||||
endif
|
||||
end for
|
||||
|
||||
return nil
|
||||
|
||||
//*******************************************************************
|
||||
static function x2SetNextToken(prevToken,nextToken)
|
||||
// A prevToken-be be ll¡tja a nextToken-t, ha a a prevToken
|
||||
// match marker. Ha a prevToken egy malterset, akkor minden
|
||||
// elem‚re (az elemek token list k) megh¡vja az xSetNextToken()-t.
|
||||
// Mj.: Egyenl“re nem figyeli, hogy a nextToken normal token-e (nem
|
||||
// match marker ‚s nem malterset).
|
||||
static idMatchMarkers:={;
|
||||
TKID_REGULAR_MATCH_MARKER ,;
|
||||
TKID_WILD_MATCH_MARKER ,;
|
||||
TKID_EXT_EXPR_MATCH_MARKER ,;
|
||||
TKID_LIST_MATCH_MARKER ,;
|
||||
TKID_RESTRICTED_MATCH_MARKER ;
|
||||
}
|
||||
local i,alterset
|
||||
|
||||
if (TOKEN.prevToken:id==TKID_MALTERSET)
|
||||
alterset:=MALTRSET.prevToken:alterset
|
||||
for i:=1 to len(alterset)
|
||||
xSetNextToken(alterset[i],nextToken)
|
||||
end for
|
||||
elseif (C.MMARKER:isMatchMarker(prevToken) .and. nextToken!=nil)
|
||||
MMARKER.prevToken:nextToken:=nextToken
|
||||
endif
|
||||
return nil
|
||||
|
||||
//*******************************************************************
|
||||
static function xSetNextToken(tokenList,nextToken)
|
||||
// Az ”sszes match markerben be ll¡tja a nextToken-t, ha van.
|
||||
local i
|
||||
local prevToken
|
||||
|
||||
prevToken:=nil
|
||||
for i:=1 to len(tokenList)
|
||||
if (TOKEN.(tokenList[i]):id==TKID_URES)
|
||||
// Kihagyjuk
|
||||
else
|
||||
if (prevToken!=nil)
|
||||
x2SetNextToken(prevToken,tokenList[i])
|
||||
endif
|
||||
prevToken:=tokenList[i]
|
||||
endif
|
||||
end for
|
||||
if (prevToken!=nil)
|
||||
x2SetNextToken(prevToken,nextToken)
|
||||
endif
|
||||
|
||||
return nil
|
||||
|
||||
//*******************************************************************
|
||||
static function setNextToken(this)
|
||||
/*
|
||||
Az ”sszes match markerben be ll¡tja a nextToken-t, ha van.
|
||||
*/
|
||||
xSetNextToken(this:leftSide)
|
||||
return nil
|
||||
|
||||
//*******************************************************************
|
||||
static function xCollectMatchMarkers(tokenList,matchMarkers)
|
||||
static idMatchMarkers:={;
|
||||
TKID_REGULAR_MATCH_MARKER ,;
|
||||
TKID_WILD_MATCH_MARKER ,;
|
||||
TKID_EXT_EXPR_MATCH_MARKER ,;
|
||||
TKID_LIST_MATCH_MARKER ,;
|
||||
TKID_RESTRICTED_MATCH_MARKER ;
|
||||
}
|
||||
local i, j, alterset
|
||||
|
||||
for i:=1 to len(tokenList)
|
||||
if (TOKEN.tokenList[i]:id==TKID_MALTERSET)
|
||||
alterset:=MALTRSET.tokenList[i]:alterset
|
||||
for j:=1 to len(alterset)
|
||||
xCollectMatchMarkers(alterset[j],matchMarkers)
|
||||
end for
|
||||
elseif (C.MMARKER:isMatchMarker(tokenList[i]))
|
||||
aadd(matchMarkers,tokenList[i])
|
||||
endif
|
||||
end for
|
||||
|
||||
return nil
|
||||
|
||||
//*******************************************************************
|
||||
static function xSetResultMarkers(tokenList,matchMarkers,undefRMarkers)
|
||||
// A tokenList-ben szerepl“ result markerekben be ll¡tja a
|
||||
// sorsz mot a matchMarkers-ben szerepl“ match markereknek
|
||||
// megfelel“en.
|
||||
|
||||
local i, j, alterset
|
||||
|
||||
for i:=1 to len(tokenList)
|
||||
if (TOKEN.tokenList[i]:id==TKID_RALTER)
|
||||
xSetResultMarkers(RALTER.tokenList[i]:tokenList,;
|
||||
matchMarkers,undefRMarkers)
|
||||
elseif (C.RMARKER:isResultMarker(tokenList[i]))
|
||||
if (!RMARKER.tokenList[i]:setMMIdxByMM(matchMarkers))
|
||||
// Nincs ilyen match token.
|
||||
aadd(undefRMarkers,tokenList[i])
|
||||
endif
|
||||
endif
|
||||
end for
|
||||
return nil
|
||||
|
||||
//*******************************************************************
|
||||
static function calcSorszam(this)
|
||||
/*
|
||||
- ™sszeszedi a match markereket.
|
||||
- Minden match markerbe be¡rja a sorsz m t.
|
||||
- Minden result marker-be be¡rja a hozz tartoz¢ match
|
||||
marker sorsz m t.
|
||||
- Kisz molja h ny match marker van.
|
||||
*/
|
||||
local matchMarkers,i
|
||||
|
||||
matchMarkers:={}
|
||||
xCollectMatchMarkers(this:leftSide,matchMarkers)
|
||||
|
||||
for i:=1 to len(matchMarkers)
|
||||
MMARKER.matchMarkers[i]:mNum:=i
|
||||
end for
|
||||
|
||||
this:numMatchMarkers:=len(matchMarkers)
|
||||
|
||||
this:undefRMarkers:={}
|
||||
xSetResultMarkers(this:rightSide,matchMarkers,this:undefRMarkers)
|
||||
|
||||
return nil
|
||||
|
||||
//*******************************************************************
|
||||
implement printStr()
|
||||
local i
|
||||
local str
|
||||
|
||||
if (this:cmdType==XTRTYPE_XTRANSLATE)
|
||||
str:="xtranslate"
|
||||
elseif (this:cmdType==XTRTYPE_XCOMMAND)
|
||||
str:="xcommand"
|
||||
elseif (this:cmdType==XTRTYPE_TRANSLATE)
|
||||
str:="translate"
|
||||
elseif (this:cmdType==XTRTYPE_COMMAND)
|
||||
str:="command"
|
||||
else
|
||||
str:="xtranslate"
|
||||
endif
|
||||
|
||||
str:="#"+str+" "
|
||||
|
||||
for i:=1 to len(this:leftSide)
|
||||
str:=str+TOKEN.(this:leftSide[i]):getStr()
|
||||
end for
|
||||
|
||||
str+=" => "
|
||||
|
||||
for i:=1 to len(this:rightSide)
|
||||
str+=TOKEN.(this:rightSide[i]):getStr()
|
||||
end for
|
||||
|
||||
return str
|
||||
|
||||
//*******************************************************************
|
||||
static function iChange(iLevel,tokenList,paramValues,result)
|
||||
/*
|
||||
A result-ba beleteszi a tokenList alternat¡va helyettes¡t‚s‚t az
|
||||
iLevel szinten.
|
||||
Mj. Ha a tokenList nem egy alternat¡va, akkor ez nem alkalmazhat¢(!)
|
||||
|
||||
A helyettes¡tend“k a paramValues-ban vannak.
|
||||
A tokenList-ben nem lehet RALTER token.
|
||||
|
||||
Ret: .t.: volt helyettes¡t‚s, .f. nem volt.
|
||||
*/
|
||||
|
||||
local i,rLen,success
|
||||
|
||||
rLen:=len(result)
|
||||
success:=.f.
|
||||
for i:=1 to len(tokenList)
|
||||
if (TOKEN.tokenList[i]:id==TKID_RALTER)
|
||||
// Hiba!
|
||||
return .f.
|
||||
elseif (C.RMARKER:isResultMarker(tokenList[i]))
|
||||
if (2==RMARKER.tokenList[i]:changeByMMList(paramValues,result,iLevel))
|
||||
success:=.t.
|
||||
endif
|
||||
elseif (TOKEN.(tokenList[i]):id==TKID_URES)
|
||||
aadd(result,TOKEN.(tokenList[i]):copyToken(TKID_URES," "))
|
||||
// outstd("Hopp2!")
|
||||
else
|
||||
aadd(result,tokenList[i])
|
||||
endif
|
||||
end for
|
||||
|
||||
if (!success)
|
||||
asize(result,rLen)
|
||||
endif
|
||||
|
||||
return success
|
||||
|
||||
//*******************************************************************
|
||||
implement change(paramValues)
|
||||
// paramvalues:={<list of tokenList>,...}
|
||||
/*
|
||||
A csere £gy megy, hogy megy<67>nk a jobb oldalon,
|
||||
ha nem '[]' k”z”tti result markert tal lunk, akkor behelyettes¡tj<74>k
|
||||
a hozz tartoz¢ token list t.
|
||||
|
||||
Ha '[]' k”z”tti tokeneket annyiszor ¡rjuk ki, amennyi a hozz
|
||||
tartoz¢ result markere csere list inak a maxim lis hossza.
|
||||
|
||||
Ret: A csere eredm‚nye (egy token lista) vagy nil, ha nem lehetett
|
||||
cser‚lni.
|
||||
*/
|
||||
local i,j
|
||||
local result:={}
|
||||
local tokenList,alterTl
|
||||
|
||||
tokenList:=this:rightSide
|
||||
for i:=1 to len(tokenList)
|
||||
if (TOKEN.tokenList[i]:id==TKID_RALTER)
|
||||
alterTl:=RALTER.tokenList[i]:tokenList
|
||||
j:=1
|
||||
while(iChange(j,alterTl,paramValues,result))
|
||||
j++
|
||||
end while
|
||||
elseif (C.RMARKER:isResultMarker(tokenList[i]))
|
||||
if (2!=RMARKER.tokenList[i]:changeByMMList(paramValues,result,1,.t.))
|
||||
return nil
|
||||
endif
|
||||
elseif (TOKEN.(tokenList[i]):id==TKID_URES)
|
||||
aadd(result,TOKEN.(tokenList[i]):copyToken(TKID_URES," "))
|
||||
// outstd("Hopp!")
|
||||
else
|
||||
aadd(result,tokenList[i])
|
||||
endif
|
||||
end for
|
||||
return result
|
||||
|
||||
//*******************************************************************
|
||||
|
||||
@@ -1,89 +0,0 @@
|
||||
/*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
//*******************************************************************
|
||||
// felbont.prg: Egy string felbont sa elv laszt˘ karakterek ment‚n.
|
||||
// 1999, Csisz r Levente
|
||||
|
||||
//*******************************************************************
|
||||
function felbont(str,elvalasztok)
|
||||
/*
|
||||
Az str-t felbontja az 'elvalasztok' stringben lev“ karakterekn‚l, ‚s
|
||||
ad egy t”mb”t, amiben az elemek vannak.
|
||||
Ha az 'elvalasztok' nincs megadva, akkor " "+chr(9)-t t‚telez fel.
|
||||
Az <20>reseket kiveszi.
|
||||
Mj.: A chr(9) a tab karakter.
|
||||
*/
|
||||
|
||||
local t,e,i,pos,elem
|
||||
|
||||
if (elvalasztok==nil)
|
||||
elvalasztok:=" "+chr(9)
|
||||
elseif (len(elvalasztok)<=0)
|
||||
if (str=="")
|
||||
return {}
|
||||
else
|
||||
return {str}
|
||||
endif
|
||||
endif
|
||||
|
||||
e:=left(elvalasztok,1)
|
||||
for i:=2 to len(elvalasztok)
|
||||
str:=strtran(str,substr(elvalasztok,i,1),e)
|
||||
end for
|
||||
|
||||
t:={}
|
||||
while(0<len(str))
|
||||
if (0==(pos:=at(e,str)))
|
||||
elem:=str
|
||||
str:=""
|
||||
elseif (pos==1)
|
||||
elem:=""
|
||||
str:=substr(str,2)
|
||||
else
|
||||
elem:=substr(str,1,pos-1)
|
||||
str:=substr(str,pos+1)
|
||||
endif
|
||||
if (!elem=="")
|
||||
aadd(t,elem)
|
||||
endif
|
||||
end while
|
||||
|
||||
return t
|
||||
|
||||
//*******************************************************************
|
||||
|
||||
#ifdef OLD
|
||||
local wlist:={}, n:=0, i,sep1,welem
|
||||
|
||||
if(sep==NIL)
|
||||
sep:=" "+chr(9)
|
||||
end
|
||||
|
||||
sep1:=left(sep,1)
|
||||
for i:=2 to len(sep)
|
||||
txt:=strtran(txt,substr(sep,i,1),sep1)
|
||||
next
|
||||
|
||||
while( n<len(txt) )
|
||||
txt:=substr(txt,n+1)
|
||||
|
||||
if( (i:=at(sep1,txt))==0 )
|
||||
wElem:=txt
|
||||
n:=len(txt)
|
||||
elseif(i==1)
|
||||
wElem:=""
|
||||
n:=1
|
||||
else
|
||||
wElem:=substr(txt,1,i-1)
|
||||
n:=i
|
||||
end
|
||||
if !(wElem=="")
|
||||
aadd(wlist,wElem)
|
||||
endif
|
||||
end
|
||||
return wlist
|
||||
#endif
|
||||
|
||||
************************************************************************
|
||||
@@ -1,185 +0,0 @@
|
||||
/*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
//*******************************************************************
|
||||
// fnutil.prg: A fil‚ n‚v kezel‚ssel kapcsolatos vegyes utilitik.
|
||||
// 1999, Csisz r Levente
|
||||
|
||||
/*
|
||||
1999.05.10, Csisz r Levente
|
||||
|
||||
- dirFName() f<>ggv‚ny.
|
||||
|
||||
1998.09.08, Csisz r Levente
|
||||
|
||||
- Indul¢ v ltozat, az afn az futil.prg-b“l tv‚ve.
|
||||
|
||||
*/
|
||||
|
||||
/********************************************************************
|
||||
Tartalma:
|
||||
|
||||
- afn(fileDir,fileName)
|
||||
- ™sszef–zi a fileDir-t ‚s a fileName-t egy fil‚n‚vbe.
|
||||
afn("BEVONAL","KI216001.021") --> "BEVONAL\KI216001.021"
|
||||
afn("BEVONAL\","KI216001.021") --> "BEVONAL\KI216001.021"
|
||||
afn("A:","KI216001.021") --> "A:KI216001.021"
|
||||
afn("","KI216001.021") --> "KI216001.021"
|
||||
|
||||
- addFPath(fileDir,pathName)
|
||||
Ha a pathName-ben nem abszol£t path van, akkor a fileDir-t
|
||||
el‚teszi.
|
||||
|
||||
- extractFName( filename ) // file.ext --> file
|
||||
Megadja a filename kieg‚sz¡t“ n‚lk<6C>li r‚sz‚t.
|
||||
|
||||
- baseFName( filename ) // path\file.ext --> file.ext
|
||||
Megadja a filename nev‚t a path n‚lk<6C>l.
|
||||
|
||||
- splitFName( pathName )
|
||||
"path\file.ext" --> {"path\","file.ext"}
|
||||
A pathName-t felbontja path-ra ‚s name-re.
|
||||
|
||||
Pl.:
|
||||
"proba.prg" --> {"","proba.prg"}
|
||||
"a:proba.prg" --> {"a:","proba.prg"}
|
||||
"dir\proba.prg" --> {"dir\","proba.prg"}
|
||||
"dir/proba.prg" --> {"dir/","proba.prg"}
|
||||
|
||||
|
||||
- changeFExt(filename,kieg)
|
||||
A kieg‚sz¡t“t lecser‚li a kieg-re.
|
||||
Pl. addKieg("haz.msk",".say") --> "haz.say"
|
||||
Pl. addKieg("haz.",".say") --> "haz.say"
|
||||
|
||||
- addFExt(filename,kieg)
|
||||
Ha nincs kieg‚sz¡t“, akkor a kieg-et hozz adja.
|
||||
Pl. addEKieg("haz.msk",".say") --> "haz.msk"
|
||||
Pl. addEKieg("haz",".say") --> "haz.say"
|
||||
|
||||
********************************************************************/
|
||||
function afn(fileDir,fileName)
|
||||
if (empty(fileDir))
|
||||
return fileName
|
||||
elseif (right(filedir,1)==":" .or.;
|
||||
right(filedir,1)=="\" .or.;
|
||||
right(filedir,1)=="/")
|
||||
return fileDir+fileName
|
||||
endif
|
||||
return fileDir+"\"+fileName
|
||||
|
||||
*********************************************************************
|
||||
function addFPath(fileDir,pathName)
|
||||
// Ha a pathName-ben nem abszol£t path van, akkor a fileDir-t
|
||||
// el‚teszi.
|
||||
if (empty(fileDir))
|
||||
return pathName
|
||||
elseif (":"$pathName .or. left(pathName,1)$"\/")
|
||||
return pathName
|
||||
endif
|
||||
return afn(fileDir,pathName)
|
||||
|
||||
*********************************************************************
|
||||
static function findRev(str,charSet)
|
||||
// A charSet-ben lev“ karaktereket keresi visszafel‚ az str-ben
|
||||
// Ret. pos, ha tal lt, 0, ha nem.
|
||||
local i,w
|
||||
|
||||
i:=len(str)
|
||||
while (i>0)
|
||||
if (0!=(w:=at(substr(str,i,1),charSet)))
|
||||
return i
|
||||
endif
|
||||
i--
|
||||
end for
|
||||
return 0
|
||||
|
||||
*********************************************************************
|
||||
function extractFName( filename ) // file.ext --> file
|
||||
// Megadja a filename kieg‚sz¡t“ n‚lk<6C>li r‚sz‚t.
|
||||
local i
|
||||
if( empty(filename) )
|
||||
return ""
|
||||
end
|
||||
i:=findRev(fileName,".:\/")
|
||||
if (i==0)
|
||||
return fileName
|
||||
endif
|
||||
if (substr(fileName,i,1)=='.')
|
||||
return left(fileName,i-1)
|
||||
endif
|
||||
return fileName
|
||||
|
||||
*********************************************************************
|
||||
function baseFName( filename ) // path\file.ext --> file.ext
|
||||
// Megadja a filename nev‚t a path n‚lk<6C>l.
|
||||
local i
|
||||
if( empty(filename) )
|
||||
return ""
|
||||
end
|
||||
i:=findRev(fileName,":\/")
|
||||
if (i==0)
|
||||
return fileName
|
||||
endif
|
||||
return substr(fileName,i+1)
|
||||
|
||||
*********************************************************************
|
||||
function dirFName( filename ) // path\file.ext --> path
|
||||
// Megadja a path-t a filename ‚s a z r¢ '\' n‚lk<6C>l.
|
||||
local i
|
||||
if( empty(filename) )
|
||||
return ""
|
||||
end
|
||||
i:=findRev(fileName,":\/")
|
||||
if (i==0)
|
||||
return ""
|
||||
endif
|
||||
return substr(fileName,1,i-1)
|
||||
|
||||
*********************************************************************
|
||||
function splitFName( pathName )
|
||||
// "path\file.ext" --> {"path\","file.ext"}
|
||||
// A pathName-t felbontja path-ra ‚s name-re.
|
||||
/*
|
||||
Pl.:
|
||||
"proba.prg" --> {"","proba.prg"}
|
||||
"a:proba.prg" --> {"a:","proba.prg"}
|
||||
"dir\proba.prg" --> {"dir\","proba.prg"}
|
||||
"dir/proba.prg" --> {"dir/","proba.prg"}
|
||||
*/
|
||||
local i
|
||||
|
||||
if( empty(pathName) )
|
||||
return {"",""}
|
||||
end
|
||||
i:=findRev(pathName,":\/")
|
||||
if (i==0)
|
||||
return {"",pathName}
|
||||
endif
|
||||
return {left(pathName,i),substr(pathName,i+1)}
|
||||
|
||||
*********************************************************************
|
||||
function changeFExt(filename,kieg)
|
||||
// A kieg‚sz¡t“t lecser‚li a kieg-re.
|
||||
// Pl. addKieg("haz.msk",".say") --> "haz.say"
|
||||
// Pl. addKieg("haz.",".say") --> "haz.say"
|
||||
local w
|
||||
w:=ExtractFName(filename)
|
||||
filename:=w+kieg
|
||||
return filename
|
||||
|
||||
*********************************************************************
|
||||
function addFExt(filename,kieg)
|
||||
// Ha nincs kieg‚sz¡t“, akkor a kieg-et hozz adja.
|
||||
// Pl. addEKieg("haz.msk",".say") --> "haz.msk"
|
||||
// Pl. addEKieg("haz",".say") --> "haz.say"
|
||||
local w
|
||||
w:=ExtractFName(filename)
|
||||
if (w==filename)
|
||||
filename:=w+kieg
|
||||
endif
|
||||
|
||||
return filename
|
||||
|
||||
*********************************************************************
|
||||
@@ -1,61 +0,0 @@
|
||||
//
|
||||
// $Id$
|
||||
//
|
||||
|
||||
//*******************************************************************
|
||||
// freader.cls: Fil‚b“l karaktereket olvas˘ oszt ly. A CREADER-t“l
|
||||
// ”r”k”l.
|
||||
// 1999, Csisz r Levente
|
||||
|
||||
class FREADER CREADER
|
||||
|
||||
attrib path // Az olvasott fil‚ path-a. (Az fil‚ neve a
|
||||
// name-ben van.) Mj.: A n‚vben is lehet path.
|
||||
attrib fid // Az olvasott fil‚ azonosˇt˘ja. (Ha nyitva van)
|
||||
|
||||
attrib buffer // A fil‚ olvas sakor a buffer. Ha nil, akkor
|
||||
// EOF-on vagyunk.
|
||||
attrib ibuffer // A fil‚ olvas sakor a bufferben a pozˇci˘.
|
||||
|
||||
nmethod pathName()
|
||||
// Megadja a teljes fil‚nevet (az el‚r‚si Łttal egy<67>tt).
|
||||
// Ha a fileName abszolŁt n‚v ('/' kezd“dik vagy (dos-on)
|
||||
// drive n‚v van benne), akkor a path-t nem teszi el‚.
|
||||
|
||||
nmethod open(path,fileName)
|
||||
// Megnyitja az adott fil‚t az adott path-al.
|
||||
// Mj.: A fileName-ben is lehet path.
|
||||
// Ret: this, ha siker<65>lt a megnyit s, nil, ha nem.
|
||||
// Hiba eset‚n a this:error-t be llˇtja.
|
||||
|
||||
nmethod close()
|
||||
// Lez rja a fil‚t. Ha a nincs nyitva, nem csin l semmit.
|
||||
|
||||
nmethod dOpen(pathArray,fileName)
|
||||
// V‚gigpr˘b lgatja a path-okat, ‚s amelyikben megtal lja a
|
||||
// fil‚t, akkor abban megpr˘b lja megnyitni.
|
||||
// Mj.: A fileName-ben is lehet path.
|
||||
// Ret: this, ha siker<65>lt a megnyit s, nil, ha nem.
|
||||
// Hiba eset‚n a this:error-t be llˇtja.
|
||||
|
||||
nmethod isOpen()
|
||||
// Igaz, ha a fil‚ nyitva van.
|
||||
|
||||
rmethod readItem()
|
||||
// Olvas egy karaktert.
|
||||
// Ret: A karakter, ha OK, nil, ha v‚ge van a streamnek, vagy ha
|
||||
// hiba volt.
|
||||
|
||||
rmethod destruct()
|
||||
// T”rli az objektumhoz kapcsol˘d˘ k<>ls“ eszk”z”ket. (Pl. lez rja
|
||||
// a fil‚t etc.)
|
||||
|
||||
rmethod oinit(errorStream)
|
||||
// Inicializ lja az objektumot.
|
||||
|
||||
metaclass
|
||||
|
||||
rmethod onew(errorStream)
|
||||
|
||||
rmethod oinitclass()
|
||||
|
||||
@@ -1,342 +0,0 @@
|
||||
// FREADER.och oszt ly implement ci¢.
|
||||
// Gener lva: 1999.06.10, 14:39:56, OBJCCC v2.2.03
|
||||
// Meta oszt ly defin¡ci¢: Van
|
||||
|
||||
|
||||
#ifndef CA_CREADER_N
|
||||
#ifdef _STRICT_PARENT_
|
||||
#ifdef _CA_CM_ONLY_
|
||||
#include "CREADER.och"
|
||||
#else // _CA_CM_ONLY_
|
||||
#define _CA_CM_ONLY_
|
||||
#include "CREADER.och"
|
||||
#undef _CA_CM_ONLY_
|
||||
#endif // _CA_CM_ONLY_
|
||||
#else
|
||||
#include "CREADER.och"
|
||||
#endif // _STRICT_PARENT_
|
||||
#endif // CA_CREADER_N
|
||||
|
||||
#ifndef _CA_CM_ONLY_
|
||||
#ifndef _FREADER_OCH_
|
||||
#define _FREADER_OCH_
|
||||
|
||||
|
||||
#xtranslate FREADER.<obj>:name => <obj>\[CA_OBJECT_N+1\]
|
||||
#xtranslate FREADER.<obj>:errorstream => <obj>\[CA_OBJECT_N+2\]
|
||||
#xtranslate FREADER.<obj>:tbuffer => <obj>\[CA_OBJECT_N+3\]
|
||||
#xtranslate FREADER.<obj>:line => <obj>\[CA_READER_N+1\]
|
||||
#xtranslate FREADER.<obj>:pos => <obj>\[CA_READER_N+2\]
|
||||
|
||||
|
||||
#xtranslate FREADER.<obj>:oinit => (OBJGEN.(<obj>):(4))
|
||||
#xtranslate FREADER.<obj>:getclass => (OBJGEN.(<obj>):(5))
|
||||
#xtranslate FREADER.<obj>:isclass => (OBJGEN.(<obj>):(6))
|
||||
#xtranslate FREADER.<obj>:getattrib => (OBJGEN.(<obj>):(7))
|
||||
#xtranslate FREADER.<obj>:setattrib => (OBJGEN.(<obj>):(8))
|
||||
#xtranslate FREADER.<obj>:read => (OBJGEN.(<obj>):(CM_OBJECT_N+1))
|
||||
#xtranslate FREADER.<obj>:unread => (OBJGEN.(<obj>):(CM_OBJECT_N+2))
|
||||
#xtranslate FREADER.<obj>:readtbuffer => (OBJGEN.(<obj>):(CM_OBJECT_N+3))
|
||||
#xtranslate FREADER.<obj>:arraytbuffer => (OBJGEN.(<obj>):(CM_OBJECT_N+4))
|
||||
#xtranslate FREADER.<obj>:readitem => (OBJGEN.(<obj>):(CM_OBJECT_N+5))
|
||||
#xtranslate FREADER.<obj>:iserror => (OBJGEN.(<obj>):(CM_OBJECT_N+6))
|
||||
#xtranslate FREADER.<obj>:adderror => (OBJGEN.(<obj>):(CM_OBJECT_N+7))
|
||||
#xtranslate FREADER.<obj>:destruct => (OBJGEN.(<obj>):(CM_OBJECT_N+8))
|
||||
#xtranslate FREADER.<obj>:getfile => (OBJGEN.(<obj>):(CM_READER_N+1))
|
||||
#xtranslate FREADER.<obj>:getline => (OBJGEN.(<obj>):(CM_READER_N+2))
|
||||
#xtranslate FREADER.<obj>:getpos => (OBJGEN.(<obj>):(CM_READER_N+3))
|
||||
|
||||
|
||||
#xtranslate FREADER.<obj>:path => <obj>\[CA_CREADER_N+1\]
|
||||
#xtranslate FREADER.<obj>:fid => <obj>\[CA_CREADER_N+2\]
|
||||
#xtranslate FREADER.<obj>:buffer => <obj>\[CA_CREADER_N+3\]
|
||||
#xtranslate FREADER.<obj>:ibuffer => <obj>\[CA_CREADER_N+4\]
|
||||
|
||||
// Specifik lva: pathname()
|
||||
// Specifik lva: open(path,fileName)
|
||||
// Specifik lva: close()
|
||||
// Specifik lva: dopen(pathArray,fileName)
|
||||
// Specifik lva: isopen()
|
||||
// ™r”k”lve: readitem()
|
||||
// ™r”k”lve: destruct()
|
||||
// ™r”k”lve: oinit(errorStream)
|
||||
|
||||
#xtranslate FREADER.<obj>:pathname => (OBJGEN.(<obj>):(CM_CREADER_N+1))
|
||||
#xtranslate FREADER.<obj>:open => (OBJGEN.(<obj>):(CM_CREADER_N+2))
|
||||
#xtranslate FREADER.<obj>:close => (OBJGEN.(<obj>):(CM_CREADER_N+3))
|
||||
#xtranslate FREADER.<obj>:dopen => (OBJGEN.(<obj>):(CM_CREADER_N+4))
|
||||
#xtranslate FREADER.<obj>:isopen => (OBJGEN.(<obj>):(CM_CREADER_N+5))
|
||||
// ™r”k”lve: readitem()
|
||||
// ™r”k”lve: destruct()
|
||||
// ™r”k”lve: oinit(errorStream)
|
||||
|
||||
#endif // _FREADER_OCH_
|
||||
#endif // _CA_CM_ONLY_
|
||||
|
||||
#ifndef CA_FREADER_N
|
||||
#define CA_FREADER_N CA_CREADER_N+4
|
||||
#define CM_FREADER_N CM_CREADER_N+5
|
||||
#endif // CA_FREADER_N
|
||||
|
||||
#ifndef _CA_CM_ONLY_
|
||||
#ifndef _FREADERCLASS_OCH_
|
||||
#define _FREADERCLASS_OCH_
|
||||
|
||||
**********************************************************************
|
||||
#xtranslate C.FREADER:<m> => (FREADERCLASS.clFREADER():<m>)
|
||||
#xtranslate C.FREADER:self() => (clFREADER())
|
||||
|
||||
|
||||
#xtranslate FREADERCLASS.<obj>:parent => <obj>\[CA_OBJECT_N+1\]
|
||||
#xtranslate FREADERCLASS.<obj>:name => <obj>\[CA_OBJECT_N+2\]
|
||||
#xtranslate FREADERCLASS.<obj>:objsize => <obj>\[CA_OBJECT_N+3\]
|
||||
#xtranslate FREADERCLASS.<obj>:attribs => <obj>\[CA_OBJECT_N+4\]
|
||||
#xtranslate FREADERCLASS.<obj>:methods => <obj>\[CA_OBJECT_N+5\]
|
||||
#xtranslate FREADERCLASS.<obj>:classid => <obj>\[CA_OBJECT_N+6\]
|
||||
#xtranslate FREADERCLASS.<obj>:parentclassids => <obj>\[CA_OBJECT_N+7\]
|
||||
#xtranslate FREADERCLASS.<obj>:amblock => <obj>\[CA_OBJECT_N+8\]
|
||||
#xtranslate FREADERCLASS.<obj>:methodsblock => <obj>\[CA_OBJECT_N+9\]
|
||||
#xtranslate FREADERCLASS.<obj>:objmethodsimplement => <obj>\[CA_OBJECT_N+10\]
|
||||
|
||||
|
||||
#xtranslate FREADERCLASS.<obj>:oinit => (OBJGEN.(<obj>):(4))
|
||||
#xtranslate FREADERCLASS.<obj>:getclass => (OBJGEN.(<obj>):(5))
|
||||
#xtranslate FREADERCLASS.<obj>:isclass => (OBJGEN.(<obj>):(6))
|
||||
#xtranslate FREADERCLASS.<obj>:getattrib => (OBJGEN.(<obj>):(7))
|
||||
#xtranslate FREADERCLASS.<obj>:setattrib => (OBJGEN.(<obj>):(8))
|
||||
#xtranslate FREADERCLASS.<obj>:onew => (OBJGEN.(<obj>):(CM_OBJECT_N+1))
|
||||
#xtranslate FREADERCLASS.<obj>:ocreate => (OBJGEN.(<obj>):(CM_OBJECT_N+2))
|
||||
#xtranslate FREADERCLASS.<obj>:rawoinit => (OBJGEN.(<obj>):(CM_OBJECT_N+3))
|
||||
#xtranslate FREADERCLASS.<obj>:oinitclass => (OBJGEN.(<obj>):(CM_OBJECT_N+4))
|
||||
#xtranslate FREADERCLASS.<obj>:getmethodsimplement => (OBJGEN.(<obj>):(CM_OBJECT_N+5))
|
||||
#xtranslate FREADERCLASS.<obj>:attribidx => (OBJGEN.(<obj>):(CM_OBJECT_N+6))
|
||||
#xtranslate FREADERCLASS.<obj>:needclassid => (OBJGEN.(<obj>):(CM_OBJECT_N+7))
|
||||
#xtranslate FREADERCLASS.<obj>:isinheritfrom => (OBJGEN.(<obj>):(CM_OBJECT_N+8))
|
||||
|
||||
|
||||
|
||||
// ™r”k”lve: onew(errorStream)
|
||||
// ™r”k”lve: oinitclass()
|
||||
|
||||
// ™r”k”lve: onew(errorStream)
|
||||
// ™r”k”lve: oinitclass()
|
||||
|
||||
#endif // _FREADERCLASS_OCH_
|
||||
#endif // _CA_CM_ONLY_
|
||||
|
||||
#ifndef CA_FREADERCLASS_N
|
||||
#define CA_FREADERCLASS_N CA_CREADERCLASS_N+0
|
||||
#define CM_FREADERCLASS_N CM_CREADERCLASS_N+0
|
||||
#endif // CA_FREADERCLASS_N
|
||||
|
||||
|
||||
**********************************************************************
|
||||
#ifdef _FREADER_PRG_
|
||||
#ifndef _FREADER_PRG_OCH_
|
||||
#define _FREADER_PRG_OCH_
|
||||
|
||||
|
||||
**********************************************************************
|
||||
#xtranslate othis:<m> => FREADER.(othis):<m>
|
||||
#xtranslate thisclass:<m> => FREADERCLASS.(this:getClass()):<m>
|
||||
#define CTHIS FREADER
|
||||
|
||||
|
||||
**********************************************************************
|
||||
#xtranslate this:<m> => FREADER.(this):<m>
|
||||
|
||||
#xcommand implement pathname() => static function pathname(this)
|
||||
#xcommand implement open(path,fileName) => ;
|
||||
static function open(this,path,fileName)
|
||||
#xcommand implement close() => static function close(this)
|
||||
#xcommand implement dopen(pathArray,fileName) => ;
|
||||
static function dopen(this,pathArray,fileName)
|
||||
#xcommand implement isopen() => static function isopen(this)
|
||||
#xcommand implement readitem() => static function readitem(this)
|
||||
#xcommand implement destruct() => static function destruct(this)
|
||||
#xcommand implement oinit(errorStream) => ;
|
||||
static function oinit(this,errorStream)
|
||||
|
||||
#ifdef _IMPLEMENT_EXPORT_
|
||||
#xcommand implement export pathname() => function pathname(this)
|
||||
#xcommand implement export open(path,fileName) => ;
|
||||
function open(this,path,fileName)
|
||||
#xcommand implement export close() => function close(this)
|
||||
#xcommand implement export dopen(pathArray,fileName) => ;
|
||||
function dopen(this,pathArray,fileName)
|
||||
#xcommand implement export isopen() => function isopen(this)
|
||||
#xcommand implement export readitem() => function readitem(this)
|
||||
#xcommand implement export destruct() => function destruct(this)
|
||||
#xcommand implement export oinit(errorStream) => ;
|
||||
function oinit(this,errorStream)
|
||||
#endif // _IMPLEMENT_EXPORT_
|
||||
|
||||
#xtranslate super:oinit => (OBJGENM.(eval(BEHAVIOR.clCREADER():objmethodsimplement)).(this):(4))
|
||||
#xtranslate super:getclass => (OBJGENM.(eval(BEHAVIOR.clCREADER():objmethodsimplement)).(this):(5))
|
||||
#xtranslate super:isclass => (OBJGENM.(eval(BEHAVIOR.clCREADER():objmethodsimplement)).(this):(6))
|
||||
#xtranslate super:getattrib => (OBJGENM.(eval(BEHAVIOR.clCREADER():objmethodsimplement)).(this):(7))
|
||||
#xtranslate super:setattrib => (OBJGENM.(eval(BEHAVIOR.clCREADER():objmethodsimplement)).(this):(8))
|
||||
#xtranslate super:read => (OBJGENM.(eval(BEHAVIOR.clCREADER():objmethodsimplement)).(this):(CM_OBJECT_N+1))
|
||||
#xtranslate super:unread => (OBJGENM.(eval(BEHAVIOR.clCREADER():objmethodsimplement)).(this):(CM_OBJECT_N+2))
|
||||
#xtranslate super:readtbuffer => (OBJGENM.(eval(BEHAVIOR.clCREADER():objmethodsimplement)).(this):(CM_OBJECT_N+3))
|
||||
#xtranslate super:arraytbuffer => (OBJGENM.(eval(BEHAVIOR.clCREADER():objmethodsimplement)).(this):(CM_OBJECT_N+4))
|
||||
#xtranslate super:readitem => (OBJGENM.(eval(BEHAVIOR.clCREADER():objmethodsimplement)).(this):(CM_OBJECT_N+5))
|
||||
#xtranslate super:iserror => (OBJGENM.(eval(BEHAVIOR.clCREADER():objmethodsimplement)).(this):(CM_OBJECT_N+6))
|
||||
#xtranslate super:adderror => (OBJGENM.(eval(BEHAVIOR.clCREADER():objmethodsimplement)).(this):(CM_OBJECT_N+7))
|
||||
#xtranslate super:destruct => (OBJGENM.(eval(BEHAVIOR.clCREADER():objmethodsimplement)).(this):(CM_OBJECT_N+8))
|
||||
#xtranslate super:getfile => (OBJGENM.(eval(BEHAVIOR.clCREADER():objmethodsimplement)).(this):(CM_READER_N+1))
|
||||
#xtranslate super:getline => (OBJGENM.(eval(BEHAVIOR.clCREADER():objmethodsimplement)).(this):(CM_READER_N+2))
|
||||
#xtranslate super:getpos => (OBJGENM.(eval(BEHAVIOR.clCREADER():objmethodsimplement)).(this):(CM_READER_N+3))
|
||||
|
||||
**********************************************************************
|
||||
static function setCMethods(pOsztaly)
|
||||
// Egy t”mb”t felt”lt az oszt ly m–veleti blokkjaival.
|
||||
pOsztaly[(CM_CREADER_N+1)]:={|this| pathname(this)}
|
||||
pOsztaly[(CM_CREADER_N+2)]:={|this,path,fileName| open(this,path,fileName)}
|
||||
pOsztaly[(CM_CREADER_N+3)]:={|this| close(this)}
|
||||
pOsztaly[(CM_CREADER_N+4)]:={|this,pathArray,fileName| dopen(this,pathArray,fileName)}
|
||||
pOsztaly[(CM_CREADER_N+5)]:={|this| isopen(this)}
|
||||
pOsztaly[(CM_OBJECT_N+5)]:={|this| readitem(this)}
|
||||
pOsztaly[(CM_OBJECT_N+8)]:={|this| destruct(this)}
|
||||
pOsztaly[(4)]:={|this,errorStream| oinit(this,errorStream)}
|
||||
return pOsztaly
|
||||
|
||||
**********************************************************************
|
||||
static function setCams(ta,tm)
|
||||
// Egy t”mb”t felt”lt az oszt ly ltal def. objektumok attrib£tumaival ‚s m–veleteivel.
|
||||
ta[CA_CREADER_N+1-CA_NIL_N] := {CA_CREADER_N+1,'path', }
|
||||
ta[CA_CREADER_N+2-CA_NIL_N] := {CA_CREADER_N+2,'fid', }
|
||||
ta[CA_CREADER_N+3-CA_NIL_N] := {CA_CREADER_N+3,'buffer', }
|
||||
ta[CA_CREADER_N+4-CA_NIL_N] := {CA_CREADER_N+4,'ibuffer', }
|
||||
|
||||
tm[(CM_CREADER_N+1)-CM_NIL_N] := {(CM_CREADER_N+1),'pathname','',nil}
|
||||
tm[(CM_CREADER_N+2)-CM_NIL_N] := {(CM_CREADER_N+2),'open','path,fileName',nil}
|
||||
tm[(CM_CREADER_N+3)-CM_NIL_N] := {(CM_CREADER_N+3),'close','',nil}
|
||||
tm[(CM_CREADER_N+4)-CM_NIL_N] := {(CM_CREADER_N+4),'dopen','pathArray,fileName',nil}
|
||||
tm[(CM_CREADER_N+5)-CM_NIL_N] := {(CM_CREADER_N+5),'isopen','',nil}
|
||||
tm[(CM_OBJECT_N+5)-CM_NIL_N] := {(CM_OBJECT_N+5),'readitem','',nil}
|
||||
tm[(CM_OBJECT_N+8)-CM_NIL_N] := {(CM_OBJECT_N+8),'destruct','',nil}
|
||||
tm[(4)-CM_NIL_N] := {(4),'oinit','errorStream',nil}
|
||||
return nil
|
||||
|
||||
#ifndef _NO_CLFREADER_
|
||||
#ifdef _STRICT_PARENT_
|
||||
#ifdef _CA_CM_ONLY_
|
||||
#include "meta.och"
|
||||
#else // _CA_CM_ONLY_
|
||||
#define _CA_CM_ONLY_
|
||||
#include "meta.och"
|
||||
#undef _CA_CM_ONLY_
|
||||
#endif // _CA_CM_ONLY_
|
||||
#else
|
||||
#include "meta.och"
|
||||
#endif // _STRICT_PARENT_
|
||||
**********************************************************************
|
||||
function clFREADER()
|
||||
// El“szedi az oszt lyt. (class)
|
||||
static osztaly
|
||||
if (osztaly==nil)
|
||||
osztaly:=META.mcFREADERCLASS():onew(;
|
||||
clCREADER(),;
|
||||
"FREADER",;
|
||||
CA_FREADER_N,;
|
||||
CM_FREADER_N,;
|
||||
{|ta,tm|setCams(ta,tm)},;
|
||||
{|t|setCMethods(t)})
|
||||
endif
|
||||
return osztaly
|
||||
#endif // _NO_CLFREADER_
|
||||
|
||||
#ifndef _NO_FREADERCLASS_
|
||||
|
||||
**********************************************************************
|
||||
#xtranslate class:<m> => FREADERCLASS.(class):<m>
|
||||
|
||||
#xcommand cimplement onew(errorStream) => ;
|
||||
static function onew(class,errorStream)
|
||||
#xcommand cimplement oinitclass() => static function oinitclass(class)
|
||||
|
||||
#ifdef _IMPLEMENT_EXPORT_
|
||||
#xcommand cimplement export onew(errorStream) => ;
|
||||
function onew(class,errorStream)
|
||||
#xcommand cimplement export oinitclass() => function oinitclass(class)
|
||||
#endif // _IMPLEMENT_EXPORT_
|
||||
|
||||
#xtranslate superclass:oinit => (OBJGENM.(eval(BEHAVIOR.mcCREADERCLASS():objmethodsimplement)).(class):(4))
|
||||
#xtranslate superclass:getclass => (OBJGENM.(eval(BEHAVIOR.mcCREADERCLASS():objmethodsimplement)).(class):(5))
|
||||
#xtranslate superclass:isclass => (OBJGENM.(eval(BEHAVIOR.mcCREADERCLASS():objmethodsimplement)).(class):(6))
|
||||
#xtranslate superclass:getattrib => (OBJGENM.(eval(BEHAVIOR.mcCREADERCLASS():objmethodsimplement)).(class):(7))
|
||||
#xtranslate superclass:setattrib => (OBJGENM.(eval(BEHAVIOR.mcCREADERCLASS():objmethodsimplement)).(class):(8))
|
||||
#xtranslate superclass:onew => (OBJGENM.(eval(BEHAVIOR.mcCREADERCLASS():objmethodsimplement)).(class):(CM_OBJECT_N+1))
|
||||
#xtranslate superclass:ocreate => (OBJGENM.(eval(BEHAVIOR.mcCREADERCLASS():objmethodsimplement)).(class):(CM_OBJECT_N+2))
|
||||
#xtranslate superclass:rawoinit => (OBJGENM.(eval(BEHAVIOR.mcCREADERCLASS():objmethodsimplement)).(class):(CM_OBJECT_N+3))
|
||||
#xtranslate superclass:oinitclass => (OBJGENM.(eval(BEHAVIOR.mcCREADERCLASS():objmethodsimplement)).(class):(CM_OBJECT_N+4))
|
||||
#xtranslate superclass:getmethodsimplement => (OBJGENM.(eval(BEHAVIOR.mcCREADERCLASS():objmethodsimplement)).(class):(CM_OBJECT_N+5))
|
||||
#xtranslate superclass:attribidx => (OBJGENM.(eval(BEHAVIOR.mcCREADERCLASS():objmethodsimplement)).(class):(CM_OBJECT_N+6))
|
||||
#xtranslate superclass:needclassid => (OBJGENM.(eval(BEHAVIOR.mcCREADERCLASS():objmethodsimplement)).(class):(CM_OBJECT_N+7))
|
||||
#xtranslate superclass:isinheritfrom => (OBJGENM.(eval(BEHAVIOR.mcCREADERCLASS():objmethodsimplement)).(class):(CM_OBJECT_N+8))
|
||||
|
||||
**********************************************************************
|
||||
static function setMCMethods(pOsztaly)
|
||||
// Egy t”mb”t felt”lt a metaoszt ly m–veleti blokkjaival.
|
||||
pOsztaly[(CM_OBJECT_N+1)]:={|class,errorStream| onew(class,errorStream)}
|
||||
pOsztaly[(CM_OBJECT_N+4)]:={|class| oinitclass(class)}
|
||||
return pOsztaly
|
||||
|
||||
**********************************************************************
|
||||
static function setMCams(ta,tm)
|
||||
// Egy t”mb”t felt”lt a metaoszt ly ltal def. objektumok attrib£tumaival ‚s m–veleteivel.
|
||||
|
||||
tm[(CM_OBJECT_N+1)-CM_NIL_N] := {(CM_OBJECT_N+1),'onew','errorStream',nil}
|
||||
tm[(CM_OBJECT_N+4)-CM_NIL_N] := {(CM_OBJECT_N+4),'oinitclass','',nil}
|
||||
return nil
|
||||
|
||||
**********************************************************************
|
||||
#ifndef _NO_MCFREADERCLASS_
|
||||
#ifdef _STRICT_PARENT_
|
||||
#ifdef _CA_CM_ONLY_
|
||||
#include "meta.och" // "metaclas.och"
|
||||
#else // _CA_CM_ONLY_
|
||||
#define _CA_CM_ONLY_
|
||||
#include "meta.och" // "metaclas.och"
|
||||
#undef _CA_CM_ONLY_
|
||||
#endif // _CA_CM_ONLY_
|
||||
#else
|
||||
#include "meta.och" // "metaclas.och"
|
||||
#endif // _STRICT_PARENT_
|
||||
function mcFREADERCLASS()
|
||||
// El“szedi az oszt ly metaoszt ly t. (metaclass)
|
||||
static metaOsztaly
|
||||
if (metaOsztaly==nil)
|
||||
metaOsztaly:=META.clMETA():onew(;
|
||||
mcCREADERCLASS(),;
|
||||
"FREADERCLASS",;
|
||||
CA_FREADERCLASS_N,;
|
||||
CM_FREADERCLASS_N,;
|
||||
{|ta,tm|setMCams(ta,tm)},;
|
||||
{|t|setMCMethods(t)})
|
||||
endif
|
||||
return metaOsztaly
|
||||
#endif // _NO_MCFREADERCLASS_
|
||||
|
||||
#endif // _NO_FREADERCLASS_
|
||||
#ifdef _IMPLEMENT_ONEW_
|
||||
**********************************************************************
|
||||
cimplement onew(errorStream)
|
||||
local o:=class:ocreate()
|
||||
|
||||
FREADER.o:oinit(errorStream)
|
||||
return o
|
||||
#endif // _IMPLEMENT_ONEW_
|
||||
|
||||
**********************************************************************
|
||||
#ifdef _IMPLEMENT_OINIT_
|
||||
implement oinit(errorStream)
|
||||
super:oinit()
|
||||
return this
|
||||
#endif // _IMPLEMENT_OINIT_
|
||||
|
||||
**********************************************************************
|
||||
**********************************************************************
|
||||
#endif // _FREADER_PRG_OCH_
|
||||
#endif // _FREADER_PRG_
|
||||
@@ -1,183 +0,0 @@
|
||||
/*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
//*******************************************************************
|
||||
// freader.prg: Az freader oszt ly implement ci¢ja.
|
||||
// 1999, Csisz r Levente
|
||||
|
||||
#include "fileio.ch"
|
||||
|
||||
//*******************************************************************
|
||||
// #include "prserr.ch"
|
||||
|
||||
//*******************************************************************
|
||||
#define FRERRGROUP "freader"
|
||||
#define FRERR_REOPEN {FRERRGROUP,"reopen"}
|
||||
#define FRERR_NOTFOUND {FRERRGROUP,"notfound"}
|
||||
#define FRERR_OPEN {FRERRGROUP,"open"}
|
||||
#define FRERR_NOTOPENREAD {FRERRGROUP,"notopenread"}
|
||||
#define FRERR_READ {FRERRGROUP,"read"}
|
||||
// #define FRERR_ {FRERRGROUP,""}
|
||||
|
||||
//*******************************************************************
|
||||
#include "objgen.ch"
|
||||
|
||||
//*******************************************************************
|
||||
#include "prserr.och"
|
||||
|
||||
//*******************************************************************
|
||||
#define _FREADER_PRG_
|
||||
#define _IMPLEMENT_ONEW_
|
||||
|
||||
#include "freader.och"
|
||||
|
||||
//*******************************************************************
|
||||
|
||||
implement oinit(errorStream)
|
||||
super:oinit("",errorStream)
|
||||
return this
|
||||
|
||||
//*******************************************************************
|
||||
implement pathName()
|
||||
return addFPath(this:path,this:name)
|
||||
|
||||
//*******************************************************************
|
||||
cimplement oinitclass()
|
||||
// local errPrintBlock
|
||||
|
||||
superclass:oinitclass()
|
||||
|
||||
/*
|
||||
errPrintBlock:={|prserr,errStr|;
|
||||
padr(PRSERR.prserr:file+":",20)+;
|
||||
" Error: "+errStr+;
|
||||
if(PRSERR.prserr:params==nil,;
|
||||
"",;
|
||||
", os error code: "+toStr(PRSERR.prserr:params));
|
||||
}
|
||||
*/
|
||||
|
||||
C.PRSERR:registerError(FRERR_REOPEN,;
|
||||
"Should not reopen a file in an FREADER object!")
|
||||
C.PRSERR:registerError(FRERR_NOTFOUND,;
|
||||
"File not found")
|
||||
C.PRSERR:registerError(FRERR_OPEN,;
|
||||
"Open error. OS error code: $1")
|
||||
C.PRSERR:registerError(FRERR_NOTOPENREAD,;
|
||||
"Read error, file is not open!")
|
||||
C.PRSERR:registerError(FRERR_READ,;
|
||||
"Read error. OS error code: $1")
|
||||
return class
|
||||
|
||||
//*******************************************************************
|
||||
implement open(path,fileName)
|
||||
local wFid,pName
|
||||
|
||||
if (this:fid!=nil)
|
||||
aadd(this:errorStream,C.PRSERR:onew(FRERR_REOPEN,nil,this:pathName(),0,0))
|
||||
return nil
|
||||
endif
|
||||
this:name:=fileName
|
||||
this:path:=path
|
||||
|
||||
this:buffer:=""
|
||||
this:ibuffer:=1
|
||||
|
||||
pName:=this:pathName()
|
||||
|
||||
if (!file(pName))
|
||||
aadd(this:errorStream,C.PRSERR:onew(FRERR_NOTFOUND,nil,this:pathName(),0,0))
|
||||
return nil
|
||||
endif
|
||||
if (-1==(wFid:=fopen(pName,FO_READ)))
|
||||
// this:error:={this:name,FRERR_OPEN,"Open error, os error code: "+toStr(ferror())}
|
||||
aadd(this:errorStream,C.PRSERR:onew(FRERR_OPEN,{toStr(ferror())},this:pathName(),0,0))
|
||||
return nil
|
||||
endif
|
||||
this:fid:=wFid
|
||||
|
||||
return this
|
||||
|
||||
//*******************************************************************
|
||||
implement close()
|
||||
|
||||
if (this:fid!=nil)
|
||||
fclose(this:fid)
|
||||
this:fid:=nil
|
||||
endif
|
||||
return nil
|
||||
|
||||
//*******************************************************************
|
||||
implement isOpen()
|
||||
return this:fid!=nil
|
||||
|
||||
//*******************************************************************
|
||||
static function findFileInDir(pathArray,fileName)
|
||||
local i
|
||||
|
||||
for i:=1 to len(pathArray)
|
||||
if (file(addFPath(pathArray[i],fileName)))
|
||||
return {pathArray[i],fileName}
|
||||
endif
|
||||
end for
|
||||
return nil
|
||||
|
||||
//*******************************************************************
|
||||
implement dOpen(pathArray,fileName)
|
||||
local pn
|
||||
|
||||
if (nil==(pn:=findFileInDir(pathArray,fileName)))
|
||||
return nil
|
||||
endif
|
||||
return this:open(pn[1],pn[2])
|
||||
|
||||
//*******************************************************************
|
||||
implement destruct()
|
||||
this:close()
|
||||
return nil
|
||||
|
||||
//*******************************************************************
|
||||
implement readItem()
|
||||
local c,buf,n
|
||||
local wErr
|
||||
|
||||
if (this:fid==nil)
|
||||
// this:error:={this:name,FRERR_READ,"Read error, file is not open!"}
|
||||
aadd(this:errorStream,C.PRSERR:onew(FRERR_NOTOPENREAD,nil,this:pathName(),0,0))
|
||||
return nil
|
||||
endif
|
||||
|
||||
if (this:buffer==nil)
|
||||
// EOF
|
||||
return nil
|
||||
endif
|
||||
|
||||
if (this:ibuffer>len(this:buffer))
|
||||
|
||||
buf:=space(1024)
|
||||
|
||||
if (0==(n:=fread(this:fid,@buf,len(buf))))
|
||||
// Nem lehet meg llap¡tani, hogy fil‚ v‚ge vagy hiba, ¡gy meg
|
||||
// kell n‚zni az ferror()-t.
|
||||
this:buffer:=nil
|
||||
if (0!=(wErr:=ferror()))
|
||||
// this:error:={this:name,FRERR_READ,"Read error, os error code: "+toStr(ferror())}
|
||||
aadd(this:errorStream,C.PRSERR:onew(FRERR_READ,{toStr(wErr)},this:pathName(),0,0))
|
||||
endif
|
||||
return nil
|
||||
endif
|
||||
|
||||
this:buffer:=left(buf,n)
|
||||
this:ibuffer:=1
|
||||
|
||||
endif
|
||||
|
||||
c:=substr(this:buffer,this:ibuffer,1)
|
||||
this:ibuffer:=this:ibuffer+1
|
||||
|
||||
return c
|
||||
|
||||
//*******************************************************************
|
||||
|
||||
|
||||
@@ -1,35 +0,0 @@
|
||||
/*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
//*******************************************************************
|
||||
// guesseol.prg: A kital lt sorv‚gjel t rol sa.
|
||||
// 1999, Csisz r Levente
|
||||
|
||||
*********************************************************************
|
||||
static gEol
|
||||
static gEol_preSet
|
||||
|
||||
*********************************************************************
|
||||
function setPGuessEol(eol_preSet)
|
||||
if (eol_preSet!=nil)
|
||||
gEol_preSet:=eol_preSet
|
||||
endif
|
||||
return nil
|
||||
|
||||
*********************************************************************
|
||||
function setGuessEol(eol)
|
||||
if (gEol==nil)
|
||||
gEol:=eol
|
||||
endif
|
||||
return nil
|
||||
|
||||
*********************************************************************
|
||||
function guessedEol()
|
||||
if (gEol==nil)
|
||||
return gEol_preset
|
||||
endif
|
||||
return gEol
|
||||
|
||||
*********************************************************************
|
||||
|
||||
@@ -1,52 +0,0 @@
|
||||
/*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
//*******************************************************************
|
||||
// hparser.ch: Amiket a hparser.prg-nek ‚s a hparser2.prg-nek is
|
||||
// l tnia kell.
|
||||
// 1999, Csisz r Levente
|
||||
|
||||
//*******************************************************************
|
||||
|
||||
#define HPRERRGROUP "hparser"
|
||||
|
||||
#define HPRERR_INVALIDMN {HPRERRGROUP,"invalidmn"}
|
||||
#define HPRERR_SDEFINE {HPRERRGROUP,"sdefine"}
|
||||
#define HPRERR_LDEFINE {HPRERRGROUP,"ldefine"}
|
||||
#define HPRERR_PDEFINE {HPRERRGROUP,"pdefine"}
|
||||
#define HPRERR_SUNDEF {HPRERRGROUP,"sundef"}
|
||||
#define HPRERR_MDUPLICATE {HPRERRGROUP,"mduplicate"}
|
||||
#define HPRERR_SXTRANSLATE {HPRERRGROUP,"sxtranslate"}
|
||||
#define HPRERR_XTRANSLATEEOL {HPRERRGROUP,"xtranslateeol"}
|
||||
#define HPRERR_XTRRNESTED {HPRERRGROUP,"xtrrnested"}
|
||||
#define HPRERR_XTRLUNCLOSED {HPRERRGROUP,"xtrlunclosed"}
|
||||
#define HPRERR_XTRUNDEFRM {HPRERRGROUP,"xtrundefrm"}
|
||||
#define HPRERR_IFDEFNL {HPRERRGROUP,"ifdefnl"}
|
||||
#define HPRERR_SIFDEF {HPRERRGROUP,"sifdef"}
|
||||
#define HPRERR_ELSE {HPRERRGROUP,"else"}
|
||||
#define HPRERR_ELSE2 {HPRERRGROUP,"else2"}
|
||||
#define HPRERR_ENDIF {HPRERRGROUP,"endif"}
|
||||
#define HPRERR_ENDIFMISSING {HPRERRGROUP,"endifmissing"}
|
||||
#define HPRERR_INCLUDE {HPRERRGROUP,"include"}
|
||||
#define HPRERR_INCLUDEOPEN {HPRERRGROUP,"includeopen"}
|
||||
#define HPRERR_INCLUDEFIND {HPRERRGROUP,"includefind"}
|
||||
#define HPRERR_INCLUDENEST {HPRERRGROUP,"includenest"}
|
||||
#define HPRERR_USER {HPRERRGROUP,"user"}
|
||||
// #define HPRERR_ {HPRERRGROUP,""}
|
||||
|
||||
//*******************************************************************
|
||||
// Ilyen ifdef-ek lehets‚gesek.
|
||||
#define IFDEFTYPE_IFDEF "ifdef"
|
||||
#define IFDEFTYPE_IFNDEF "ifndef"
|
||||
#define IFDEFTYPE_NONE "none"
|
||||
|
||||
//*******************************************************************
|
||||
// Egy #ifdef elemz‚se k”zben melyik gon (if vagy else) vagyunk.
|
||||
|
||||
#define IFB_IFBRANCH "ifbranch"
|
||||
#define IFB_ELSEBRANCH "elsebranch"
|
||||
#define IFB_NONEBRANCH "nonebranch"
|
||||
|
||||
//*******************************************************************
|
||||
|
||||
@@ -1,126 +0,0 @@
|
||||
//
|
||||
// $Id$
|
||||
//
|
||||
|
||||
//*******************************************************************
|
||||
// hparser.cls: Hessmark parser: a '#'-al kezd“d“ sorok elemz‚se.
|
||||
// 1999, Csisz r Levente
|
||||
|
||||
// A PARSER-t“l ”r”k”l.
|
||||
// Ez az elemz“ v‚gzi el a '#'-al kezd“d“ sorok elemz‚s‚t.
|
||||
// A n‚v ‚s a sor (lparser) elemz“ ltal k‚szˇtett tokeneket v r az
|
||||
// inputr˘l.
|
||||
|
||||
// A #-os sorokat feldolgozza, a t”bbit tengedi.
|
||||
|
||||
class HPARSER PARSER
|
||||
|
||||
attrib soreleje
|
||||
attrib defdict
|
||||
attrib xtrdict
|
||||
attrib ifStack
|
||||
attrib branch // .t., ha egy #if igaz g n vagyunk, vagy nem
|
||||
// vagyunk if-ben, .f., ha egy #if hamis g n
|
||||
// vagyunk, nil, ha egy if hamis g n bel<65>li
|
||||
// if-en vagyunk.
|
||||
|
||||
attrib inclObj // Egy objektum, amiben vezetj<74>k az include
|
||||
// fil‚ket.
|
||||
|
||||
attrib lastEos // Az utols˘ eos token.
|
||||
|
||||
rmethod readItem()
|
||||
// Olvas egy elemet.
|
||||
// Ret: Az elem, ha OK, nil, ha v‚ge van a streamnek, vagy ha
|
||||
// hiba volt.
|
||||
|
||||
// nmethod addBuf(anItem)
|
||||
// Hozz ad egy elemet a pufferhez. Az elem lehet speci lis is.
|
||||
|
||||
// nmethod getStr()
|
||||
// Megadja a buf tartalm t stringk‚nt.
|
||||
// A nem stringeket eldobja.
|
||||
|
||||
// nmethod rds()
|
||||
// Olvas egy karatert a readInput()-al a buf-ba.
|
||||
// Az olvasott ‚rt‚ket a buf-ba is beleteszi, ha az nem az eof.
|
||||
|
||||
// nmethod unrds(n)
|
||||
// A buf utols˘ n elem‚t visszateszi az inputra. Az item-et t”rli.
|
||||
// Azt adja vissza, hogy h ny elemet siker<65>lt visszatenni.
|
||||
// Ha az n nil, akkor egyet tesz vissza.
|
||||
|
||||
nmethod parseLine()
|
||||
// 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 parseFalseLine()
|
||||
// Egy #if hamis g n v‚gzi az elemz‚st.
|
||||
// A this:item-t elemzi, sz<73>ks‚g eset‚n m‚g olvashat.
|
||||
|
||||
nmethod parseDefine{hpr_prsDefine}(mnameToken)
|
||||
// # define elemz“.
|
||||
|
||||
nmethod parseUndef{hpr_prsUndef}(mnameToken)
|
||||
// # undef elemz“.
|
||||
|
||||
nmethod parseTranslate(mNameToken)
|
||||
// # xtranslate, etc elemz“.
|
||||
|
||||
nmethod parseIfdef{hpr_prsIfdef}(mnameToken,ifdefType)
|
||||
|
||||
nmethod parseElse{hpr_prsElse}(mnameToken)
|
||||
|
||||
nmethod parseEndif{hpr_prsEndif}(mnameToken)
|
||||
|
||||
nmethod parseInclude(mnameToken)
|
||||
|
||||
nmethod parseLTranslate(mnameToken)
|
||||
// A # xtranslate bal oldal nak az elemz“je.
|
||||
|
||||
nmethod parseRTranslate(mnameToken)
|
||||
// A # xtranslate jobb oldal nak az elemz“je.
|
||||
|
||||
nmethod addDefine{hpr_addDefine}(mnameToken,name,params)
|
||||
// Felvesz a #define sz˘t rba egy elemet name n‚ven.
|
||||
// A definˇci˘ t”rzse a parserBuffer-ben van.
|
||||
// Az mnameToken jelzi, hogy hol volt a definˇci˘.
|
||||
// Ha a n‚v m r l‚tezik, akkor az errorGen-el legy rt egy
|
||||
// hiba tokent a az mnameToken-b“l.
|
||||
|
||||
nmethod addXTranslate(mnameToken,leftSide,rightSide)
|
||||
// nmethod addXTranslate{hpr_addXTranslate}(mnameToken,leftSide,rightSide)
|
||||
// Felvesz a #xtranslate sz˘t rba egy elemet.
|
||||
// Az mnameToken jelzi, hogy hol volt a definˇci˘.
|
||||
|
||||
nmethod sorNyel(kiirBlock)
|
||||
// T”rli a parserBuffer-t, majd a sor v‚g‚ig lenyeli az item-eket.
|
||||
// A sorv‚gjelet a parserpuffer-ben hagyja.
|
||||
// Ha a kiirBlock egy block, akkor a token stringeket tadja neki.
|
||||
|
||||
nmethod errorgen(token,errorCode,params)
|
||||
// Kiad egy hiba<62>zenetet. Az <20>zenet helye a token-ben specifik lt
|
||||
// hely lesz.
|
||||
// A params lehet nil is.
|
||||
|
||||
nmethod incompErrorgen(token,errorcode,params)
|
||||
// Ez egy olyan hiba, amit csak akkor kell kiadni, ha pontosan
|
||||
// ut nozni akarjuk a specifik ci˘t. M s sz˘val itt a spec. rossz
|
||||
// ‚s mi csin ln nk/csin ljuk j˘l. Egy logikai ‚rt‚kkel t‚r
|
||||
// vissza, ha igaz, akkor a hiba<62>zenet ki van adva, ha hamis,
|
||||
// akkor a hiba<62>zetet nem adta ki (lehet folytatni).
|
||||
// A param‚terez‚se megegyezik az errorgen()-el.
|
||||
|
||||
nmethod chkEndOFFile()
|
||||
// Elv‚gzi a sz<73>ks‚ges ellen“rz‚seket a fil‚ v‚g‚n.
|
||||
// (Lez ratlan #if, etc.)
|
||||
|
||||
rmethod oinit(inputReader,name,defDict,xtrDict,inclObj,errorStream)
|
||||
|
||||
metaclass
|
||||
|
||||
rmethod onew(inputReader,name,defDict,xtrDict,inclObj,errorStream)
|
||||
|
||||
|
||||
rmethod oinitclass()
|
||||
|
||||
@@ -1,459 +0,0 @@
|
||||
// HPARSER.och oszt ly implement ci¢.
|
||||
// Gener lva: 1999.06.10, 14:40:07, OBJCCC v2.2.03
|
||||
// Meta oszt ly defin¡ci¢: Van
|
||||
|
||||
|
||||
#ifndef CA_PARSER_N
|
||||
#ifdef _STRICT_PARENT_
|
||||
#ifdef _CA_CM_ONLY_
|
||||
#include "PARSER.och"
|
||||
#else // _CA_CM_ONLY_
|
||||
#define _CA_CM_ONLY_
|
||||
#include "PARSER.och"
|
||||
#undef _CA_CM_ONLY_
|
||||
#endif // _CA_CM_ONLY_
|
||||
#else
|
||||
#include "PARSER.och"
|
||||
#endif // _STRICT_PARENT_
|
||||
#endif // CA_PARSER_N
|
||||
|
||||
#ifndef _CA_CM_ONLY_
|
||||
#ifndef _HPARSER_OCH_
|
||||
#define _HPARSER_OCH_
|
||||
|
||||
|
||||
#xtranslate HPARSER.<obj>:name => <obj>\[CA_OBJECT_N+1\]
|
||||
#xtranslate HPARSER.<obj>:errorstream => <obj>\[CA_OBJECT_N+2\]
|
||||
#xtranslate HPARSER.<obj>:tbuffer => <obj>\[CA_OBJECT_N+3\]
|
||||
#xtranslate HPARSER.<obj>:inputreader => <obj>\[CA_READER_N+1\]
|
||||
#xtranslate HPARSER.<obj>:item => <obj>\[CA_TREADER_N+1\]
|
||||
#xtranslate HPARSER.<obj>:parserbuffer => <obj>\[CA_TREADER_N+2\]
|
||||
|
||||
|
||||
#xtranslate HPARSER.<obj>:oinit => (OBJGEN.(<obj>):(4))
|
||||
#xtranslate HPARSER.<obj>:getclass => (OBJGEN.(<obj>):(5))
|
||||
#xtranslate HPARSER.<obj>:isclass => (OBJGEN.(<obj>):(6))
|
||||
#xtranslate HPARSER.<obj>:getattrib => (OBJGEN.(<obj>):(7))
|
||||
#xtranslate HPARSER.<obj>:setattrib => (OBJGEN.(<obj>):(8))
|
||||
#xtranslate HPARSER.<obj>:read => (OBJGEN.(<obj>):(CM_OBJECT_N+1))
|
||||
#xtranslate HPARSER.<obj>:unread => (OBJGEN.(<obj>):(CM_OBJECT_N+2))
|
||||
#xtranslate HPARSER.<obj>:readtbuffer => (OBJGEN.(<obj>):(CM_OBJECT_N+3))
|
||||
#xtranslate HPARSER.<obj>:arraytbuffer => (OBJGEN.(<obj>):(CM_OBJECT_N+4))
|
||||
#xtranslate HPARSER.<obj>:readitem => (OBJGEN.(<obj>):(CM_OBJECT_N+5))
|
||||
#xtranslate HPARSER.<obj>:iserror => (OBJGEN.(<obj>):(CM_OBJECT_N+6))
|
||||
#xtranslate HPARSER.<obj>:adderror => (OBJGEN.(<obj>):(CM_OBJECT_N+7))
|
||||
#xtranslate HPARSER.<obj>:destruct => (OBJGEN.(<obj>):(CM_OBJECT_N+8))
|
||||
#xtranslate HPARSER.<obj>:readinput => (OBJGEN.(<obj>):(CM_READER_N+1))
|
||||
#xtranslate HPARSER.<obj>:unreadinput => (OBJGEN.(<obj>):(CM_READER_N+2))
|
||||
#xtranslate HPARSER.<obj>:addinputreader => (OBJGEN.(<obj>):(CM_READER_N+3))
|
||||
#xtranslate HPARSER.<obj>:putparserbuffer => (OBJGEN.(<obj>):(CM_TREADER_N+1))
|
||||
#xtranslate HPARSER.<obj>:getparserbuffer => (OBJGEN.(<obj>):(CM_TREADER_N+2))
|
||||
#xtranslate HPARSER.<obj>:unputparserbuffer => (OBJGEN.(<obj>):(CM_TREADER_N+3))
|
||||
#xtranslate HPARSER.<obj>:ungetparserbuffer => (OBJGEN.(<obj>):(CM_TREADER_N+4))
|
||||
#xtranslate HPARSER.<obj>:clearparserbuffer => (OBJGEN.(<obj>):(CM_TREADER_N+5))
|
||||
#xtranslate HPARSER.<obj>:rds => (OBJGEN.(<obj>):(CM_TREADER_N+6))
|
||||
#xtranslate HPARSER.<obj>:unrds => (OBJGEN.(<obj>):(CM_TREADER_N+7))
|
||||
#xtranslate HPARSER.<obj>:strparserbuffer => (OBJGEN.(<obj>):(CM_TREADER_N+8))
|
||||
#xtranslate HPARSER.<obj>:arrayparserbuffer => (OBJGEN.(<obj>):(CM_TREADER_N+9))
|
||||
|
||||
|
||||
#xtranslate HPARSER.<obj>:soreleje => <obj>\[CA_PARSER_N+1\]
|
||||
#xtranslate HPARSER.<obj>:defdict => <obj>\[CA_PARSER_N+2\]
|
||||
#xtranslate HPARSER.<obj>:xtrdict => <obj>\[CA_PARSER_N+3\]
|
||||
#xtranslate HPARSER.<obj>:ifstack => <obj>\[CA_PARSER_N+4\]
|
||||
#xtranslate HPARSER.<obj>:branch => <obj>\[CA_PARSER_N+5\]
|
||||
#xtranslate HPARSER.<obj>:inclobj => <obj>\[CA_PARSER_N+6\]
|
||||
#xtranslate HPARSER.<obj>:lasteos => <obj>\[CA_PARSER_N+7\]
|
||||
|
||||
// ™r”k”lve: readitem()
|
||||
// Specifik lva: parseline()
|
||||
// Specifik lva: parsefalseline()
|
||||
// Specifik lva: parsedefine(mnameToken)
|
||||
// Specifik lva: parseundef(mnameToken)
|
||||
// Specifik lva: parsetranslate(mNameToken)
|
||||
// Specifik lva: parseifdef(mnameToken,ifdefType)
|
||||
// Specifik lva: parseelse(mnameToken)
|
||||
// Specifik lva: parseendif(mnameToken)
|
||||
// Specifik lva: parseinclude(mnameToken)
|
||||
// Specifik lva: parseltranslate(mnameToken)
|
||||
// Specifik lva: parsertranslate(mnameToken)
|
||||
// Specifik lva: adddefine(mnameToken,name,params)
|
||||
// Specifik lva: addxtranslate(mnameToken,leftSide,rightSide)
|
||||
// Specifik lva: sornyel(kiirBlock)
|
||||
// Specifik lva: errorgen(token,errorCode,params)
|
||||
// Specifik lva: incomperrorgen(token,errorcode,params)
|
||||
// Specifik lva: chkendoffile()
|
||||
// ™r”k”lve: oinit(inputReader,name,defDict,xtrDict,inclObj,errorStream)
|
||||
|
||||
// ™r”k”lve: readitem()
|
||||
#xtranslate HPARSER.<obj>:parseline => (OBJGEN.(<obj>):(CM_PARSER_N+1))
|
||||
#xtranslate HPARSER.<obj>:parsefalseline => (OBJGEN.(<obj>):(CM_PARSER_N+2))
|
||||
#xtranslate HPARSER.<obj>:parsedefine => (OBJGEN.(<obj>):(CM_PARSER_N+3))
|
||||
#xtranslate HPARSER.<obj>:parseundef => (OBJGEN.(<obj>):(CM_PARSER_N+4))
|
||||
#xtranslate HPARSER.<obj>:parsetranslate => (OBJGEN.(<obj>):(CM_PARSER_N+5))
|
||||
#xtranslate HPARSER.<obj>:parseifdef => (OBJGEN.(<obj>):(CM_PARSER_N+6))
|
||||
#xtranslate HPARSER.<obj>:parseelse => (OBJGEN.(<obj>):(CM_PARSER_N+7))
|
||||
#xtranslate HPARSER.<obj>:parseendif => (OBJGEN.(<obj>):(CM_PARSER_N+8))
|
||||
#xtranslate HPARSER.<obj>:parseinclude => (OBJGEN.(<obj>):(CM_PARSER_N+9))
|
||||
#xtranslate HPARSER.<obj>:parseltranslate => (OBJGEN.(<obj>):(CM_PARSER_N+10))
|
||||
#xtranslate HPARSER.<obj>:parsertranslate => (OBJGEN.(<obj>):(CM_PARSER_N+11))
|
||||
#xtranslate HPARSER.<obj>:adddefine => (OBJGEN.(<obj>):(CM_PARSER_N+12))
|
||||
#xtranslate HPARSER.<obj>:addxtranslate => (OBJGEN.(<obj>):(CM_PARSER_N+13))
|
||||
#xtranslate HPARSER.<obj>:sornyel => (OBJGEN.(<obj>):(CM_PARSER_N+14))
|
||||
#xtranslate HPARSER.<obj>:errorgen => (OBJGEN.(<obj>):(CM_PARSER_N+15))
|
||||
#xtranslate HPARSER.<obj>:incomperrorgen => (OBJGEN.(<obj>):(CM_PARSER_N+16))
|
||||
#xtranslate HPARSER.<obj>:chkendoffile => (OBJGEN.(<obj>):(CM_PARSER_N+17))
|
||||
// ™r”k”lve: oinit(inputReader,name,defDict,xtrDict,inclObj,errorStream)
|
||||
|
||||
#endif // _HPARSER_OCH_
|
||||
#endif // _CA_CM_ONLY_
|
||||
|
||||
#ifndef CA_HPARSER_N
|
||||
#define CA_HPARSER_N CA_PARSER_N+7
|
||||
#define CM_HPARSER_N CM_PARSER_N+17
|
||||
#endif // CA_HPARSER_N
|
||||
|
||||
#ifndef _CA_CM_ONLY_
|
||||
#ifndef _HPARSERCLASS_OCH_
|
||||
#define _HPARSERCLASS_OCH_
|
||||
|
||||
**********************************************************************
|
||||
#xtranslate C.HPARSER:<m> => (HPARSERCLASS.clHPARSER():<m>)
|
||||
#xtranslate C.HPARSER:self() => (clHPARSER())
|
||||
|
||||
|
||||
#xtranslate HPARSERCLASS.<obj>:parent => <obj>\[CA_OBJECT_N+1\]
|
||||
#xtranslate HPARSERCLASS.<obj>:name => <obj>\[CA_OBJECT_N+2\]
|
||||
#xtranslate HPARSERCLASS.<obj>:objsize => <obj>\[CA_OBJECT_N+3\]
|
||||
#xtranslate HPARSERCLASS.<obj>:attribs => <obj>\[CA_OBJECT_N+4\]
|
||||
#xtranslate HPARSERCLASS.<obj>:methods => <obj>\[CA_OBJECT_N+5\]
|
||||
#xtranslate HPARSERCLASS.<obj>:classid => <obj>\[CA_OBJECT_N+6\]
|
||||
#xtranslate HPARSERCLASS.<obj>:parentclassids => <obj>\[CA_OBJECT_N+7\]
|
||||
#xtranslate HPARSERCLASS.<obj>:amblock => <obj>\[CA_OBJECT_N+8\]
|
||||
#xtranslate HPARSERCLASS.<obj>:methodsblock => <obj>\[CA_OBJECT_N+9\]
|
||||
#xtranslate HPARSERCLASS.<obj>:objmethodsimplement => <obj>\[CA_OBJECT_N+10\]
|
||||
|
||||
|
||||
#xtranslate HPARSERCLASS.<obj>:oinit => (OBJGEN.(<obj>):(4))
|
||||
#xtranslate HPARSERCLASS.<obj>:getclass => (OBJGEN.(<obj>):(5))
|
||||
#xtranslate HPARSERCLASS.<obj>:isclass => (OBJGEN.(<obj>):(6))
|
||||
#xtranslate HPARSERCLASS.<obj>:getattrib => (OBJGEN.(<obj>):(7))
|
||||
#xtranslate HPARSERCLASS.<obj>:setattrib => (OBJGEN.(<obj>):(8))
|
||||
#xtranslate HPARSERCLASS.<obj>:onew => (OBJGEN.(<obj>):(CM_OBJECT_N+1))
|
||||
#xtranslate HPARSERCLASS.<obj>:ocreate => (OBJGEN.(<obj>):(CM_OBJECT_N+2))
|
||||
#xtranslate HPARSERCLASS.<obj>:rawoinit => (OBJGEN.(<obj>):(CM_OBJECT_N+3))
|
||||
#xtranslate HPARSERCLASS.<obj>:oinitclass => (OBJGEN.(<obj>):(CM_OBJECT_N+4))
|
||||
#xtranslate HPARSERCLASS.<obj>:getmethodsimplement => (OBJGEN.(<obj>):(CM_OBJECT_N+5))
|
||||
#xtranslate HPARSERCLASS.<obj>:attribidx => (OBJGEN.(<obj>):(CM_OBJECT_N+6))
|
||||
#xtranslate HPARSERCLASS.<obj>:needclassid => (OBJGEN.(<obj>):(CM_OBJECT_N+7))
|
||||
#xtranslate HPARSERCLASS.<obj>:isinheritfrom => (OBJGEN.(<obj>):(CM_OBJECT_N+8))
|
||||
|
||||
|
||||
|
||||
// ™r”k”lve: onew(inputReader,name,defDict,xtrDict,inclObj,errorStream)
|
||||
// ™r”k”lve: oinitclass()
|
||||
|
||||
// ™r”k”lve: onew(inputReader,name,defDict,xtrDict,inclObj,errorStream)
|
||||
// ™r”k”lve: oinitclass()
|
||||
|
||||
#endif // _HPARSERCLASS_OCH_
|
||||
#endif // _CA_CM_ONLY_
|
||||
|
||||
#ifndef CA_HPARSERCLASS_N
|
||||
#define CA_HPARSERCLASS_N CA_PARSERCLASS_N+0
|
||||
#define CM_HPARSERCLASS_N CM_PARSERCLASS_N+0
|
||||
#endif // CA_HPARSERCLASS_N
|
||||
|
||||
|
||||
**********************************************************************
|
||||
#ifdef _HPARSER_PRG_
|
||||
#ifndef _HPARSER_PRG_OCH_
|
||||
#define _HPARSER_PRG_OCH_
|
||||
|
||||
|
||||
**********************************************************************
|
||||
#xtranslate othis:<m> => HPARSER.(othis):<m>
|
||||
#xtranslate thisclass:<m> => HPARSERCLASS.(this:getClass()):<m>
|
||||
#define CTHIS HPARSER
|
||||
|
||||
|
||||
**********************************************************************
|
||||
#xtranslate this:<m> => HPARSER.(this):<m>
|
||||
|
||||
#xcommand implement readitem() => static function readitem(this)
|
||||
#xcommand implement parseline() => static function parseline(this)
|
||||
#xcommand implement parsefalseline() => ;
|
||||
static function parsefalseline(this)
|
||||
#xcommand implement parsedefine(mnameToken) => ;
|
||||
static function hpr_prsDefine(this,mnameToken)
|
||||
#xcommand implement parseundef(mnameToken) => ;
|
||||
static function hpr_prsUndef(this,mnameToken)
|
||||
#xcommand implement parsetranslate(mNameToken) => ;
|
||||
static function parsetranslate(this,mNameToken)
|
||||
#xcommand implement parseifdef(mnameToken,ifdefType) => ;
|
||||
static function hpr_prsIfdef(this,mnameToken,ifdefType)
|
||||
#xcommand implement parseelse(mnameToken) => ;
|
||||
static function hpr_prsElse(this,mnameToken)
|
||||
#xcommand implement parseendif(mnameToken) => ;
|
||||
static function hpr_prsEndif(this,mnameToken)
|
||||
#xcommand implement parseinclude(mnameToken) => ;
|
||||
static function parseinclude(this,mnameToken)
|
||||
#xcommand implement parseltranslate(mnameToken) => ;
|
||||
static function parseltranslate(this,mnameToken)
|
||||
#xcommand implement parsertranslate(mnameToken) => ;
|
||||
static function parsertranslate(this,mnameToken)
|
||||
#xcommand implement adddefine(mnameToken,name,params) => ;
|
||||
static function hpr_addDefine(this,mnameToken,name,params)
|
||||
#xcommand implement addxtranslate(mnameToken,leftSide,rightSide) => ;
|
||||
static function addxtranslate(this,mnameToken,leftSide,rightSide)
|
||||
#xcommand implement sornyel(kiirBlock) => ;
|
||||
static function sornyel(this,kiirBlock)
|
||||
#xcommand implement errorgen(token,errorCode,params) => ;
|
||||
static function errorgen(this,token,errorCode,params)
|
||||
#xcommand implement incomperrorgen(token,errorcode,params) => ;
|
||||
static function incomperrorgen(this,token,errorcode,params)
|
||||
#xcommand implement chkendoffile() => static function chkendoffile(this)
|
||||
#xcommand implement oinit(inputReader,name,defDict,xtrDict,inclObj,errorStream) => ;
|
||||
static function oinit(this,inputReader,name,defDict,xtrDict,inclObj,errorStream)
|
||||
|
||||
#ifdef _IMPLEMENT_EXPORT_
|
||||
#xcommand implement export readitem() => function readitem(this)
|
||||
#xcommand implement export parseline() => function parseline(this)
|
||||
#xcommand implement export parsefalseline() => ;
|
||||
function parsefalseline(this)
|
||||
#xcommand implement export parsedefine(mnameToken) => ;
|
||||
function hpr_prsDefine(this,mnameToken)
|
||||
#xcommand implement export parseundef(mnameToken) => ;
|
||||
function hpr_prsUndef(this,mnameToken)
|
||||
#xcommand implement export parsetranslate(mNameToken) => ;
|
||||
function parsetranslate(this,mNameToken)
|
||||
#xcommand implement export parseifdef(mnameToken,ifdefType) => ;
|
||||
function hpr_prsIfdef(this,mnameToken,ifdefType)
|
||||
#xcommand implement export parseelse(mnameToken) => ;
|
||||
function hpr_prsElse(this,mnameToken)
|
||||
#xcommand implement export parseendif(mnameToken) => ;
|
||||
function hpr_prsEndif(this,mnameToken)
|
||||
#xcommand implement export parseinclude(mnameToken) => ;
|
||||
function parseinclude(this,mnameToken)
|
||||
#xcommand implement export parseltranslate(mnameToken) => ;
|
||||
function parseltranslate(this,mnameToken)
|
||||
#xcommand implement export parsertranslate(mnameToken) => ;
|
||||
function parsertranslate(this,mnameToken)
|
||||
#xcommand implement export adddefine(mnameToken,name,params) => ;
|
||||
function hpr_addDefine(this,mnameToken,name,params)
|
||||
#xcommand implement export addxtranslate(mnameToken,leftSide,rightSide) => ;
|
||||
function addxtranslate(this,mnameToken,leftSide,rightSide)
|
||||
#xcommand implement export sornyel(kiirBlock) => ;
|
||||
function sornyel(this,kiirBlock)
|
||||
#xcommand implement export errorgen(token,errorCode,params) => ;
|
||||
function errorgen(this,token,errorCode,params)
|
||||
#xcommand implement export incomperrorgen(token,errorcode,params) => ;
|
||||
function incomperrorgen(this,token,errorcode,params)
|
||||
#xcommand implement export chkendoffile() => function chkendoffile(this)
|
||||
#xcommand implement export oinit(inputReader,name,defDict,xtrDict,inclObj,errorStream) => ;
|
||||
function oinit(this,inputReader,name,defDict,xtrDict,inclObj,errorStream)
|
||||
#endif // _IMPLEMENT_EXPORT_
|
||||
|
||||
#xtranslate super:oinit => (OBJGENM.(eval(BEHAVIOR.clPARSER():objmethodsimplement)).(this):(4))
|
||||
#xtranslate super:getclass => (OBJGENM.(eval(BEHAVIOR.clPARSER():objmethodsimplement)).(this):(5))
|
||||
#xtranslate super:isclass => (OBJGENM.(eval(BEHAVIOR.clPARSER():objmethodsimplement)).(this):(6))
|
||||
#xtranslate super:getattrib => (OBJGENM.(eval(BEHAVIOR.clPARSER():objmethodsimplement)).(this):(7))
|
||||
#xtranslate super:setattrib => (OBJGENM.(eval(BEHAVIOR.clPARSER():objmethodsimplement)).(this):(8))
|
||||
#xtranslate super:read => (OBJGENM.(eval(BEHAVIOR.clPARSER():objmethodsimplement)).(this):(CM_OBJECT_N+1))
|
||||
#xtranslate super:unread => (OBJGENM.(eval(BEHAVIOR.clPARSER():objmethodsimplement)).(this):(CM_OBJECT_N+2))
|
||||
#xtranslate super:readtbuffer => (OBJGENM.(eval(BEHAVIOR.clPARSER():objmethodsimplement)).(this):(CM_OBJECT_N+3))
|
||||
#xtranslate super:arraytbuffer => (OBJGENM.(eval(BEHAVIOR.clPARSER():objmethodsimplement)).(this):(CM_OBJECT_N+4))
|
||||
#xtranslate super:readitem => (OBJGENM.(eval(BEHAVIOR.clPARSER():objmethodsimplement)).(this):(CM_OBJECT_N+5))
|
||||
#xtranslate super:iserror => (OBJGENM.(eval(BEHAVIOR.clPARSER():objmethodsimplement)).(this):(CM_OBJECT_N+6))
|
||||
#xtranslate super:adderror => (OBJGENM.(eval(BEHAVIOR.clPARSER():objmethodsimplement)).(this):(CM_OBJECT_N+7))
|
||||
#xtranslate super:destruct => (OBJGENM.(eval(BEHAVIOR.clPARSER():objmethodsimplement)).(this):(CM_OBJECT_N+8))
|
||||
#xtranslate super:readinput => (OBJGENM.(eval(BEHAVIOR.clPARSER():objmethodsimplement)).(this):(CM_READER_N+1))
|
||||
#xtranslate super:unreadinput => (OBJGENM.(eval(BEHAVIOR.clPARSER():objmethodsimplement)).(this):(CM_READER_N+2))
|
||||
#xtranslate super:addinputreader => (OBJGENM.(eval(BEHAVIOR.clPARSER():objmethodsimplement)).(this):(CM_READER_N+3))
|
||||
#xtranslate super:putparserbuffer => (OBJGENM.(eval(BEHAVIOR.clPARSER():objmethodsimplement)).(this):(CM_TREADER_N+1))
|
||||
#xtranslate super:getparserbuffer => (OBJGENM.(eval(BEHAVIOR.clPARSER():objmethodsimplement)).(this):(CM_TREADER_N+2))
|
||||
#xtranslate super:unputparserbuffer => (OBJGENM.(eval(BEHAVIOR.clPARSER():objmethodsimplement)).(this):(CM_TREADER_N+3))
|
||||
#xtranslate super:ungetparserbuffer => (OBJGENM.(eval(BEHAVIOR.clPARSER():objmethodsimplement)).(this):(CM_TREADER_N+4))
|
||||
#xtranslate super:clearparserbuffer => (OBJGENM.(eval(BEHAVIOR.clPARSER():objmethodsimplement)).(this):(CM_TREADER_N+5))
|
||||
#xtranslate super:rds => (OBJGENM.(eval(BEHAVIOR.clPARSER():objmethodsimplement)).(this):(CM_TREADER_N+6))
|
||||
#xtranslate super:unrds => (OBJGENM.(eval(BEHAVIOR.clPARSER():objmethodsimplement)).(this):(CM_TREADER_N+7))
|
||||
#xtranslate super:strparserbuffer => (OBJGENM.(eval(BEHAVIOR.clPARSER():objmethodsimplement)).(this):(CM_TREADER_N+8))
|
||||
#xtranslate super:arrayparserbuffer => (OBJGENM.(eval(BEHAVIOR.clPARSER():objmethodsimplement)).(this):(CM_TREADER_N+9))
|
||||
|
||||
**********************************************************************
|
||||
static function setCMethods(pOsztaly)
|
||||
// Egy t”mb”t felt”lt az oszt ly m–veleti blokkjaival.
|
||||
pOsztaly[(CM_OBJECT_N+5)]:={|this| readitem(this)}
|
||||
pOsztaly[(CM_PARSER_N+1)]:={|this| parseline(this)}
|
||||
pOsztaly[(CM_PARSER_N+2)]:={|this| parsefalseline(this)}
|
||||
pOsztaly[(CM_PARSER_N+3)]:={|this,mnameToken| hpr_prsDefine(this,mnameToken)}
|
||||
pOsztaly[(CM_PARSER_N+4)]:={|this,mnameToken| hpr_prsUndef(this,mnameToken)}
|
||||
pOsztaly[(CM_PARSER_N+5)]:={|this,mNameToken| parsetranslate(this,mNameToken)}
|
||||
pOsztaly[(CM_PARSER_N+6)]:={|this,mnameToken,ifdefType| hpr_prsIfdef(this,mnameToken,ifdefType)}
|
||||
pOsztaly[(CM_PARSER_N+7)]:={|this,mnameToken| hpr_prsElse(this,mnameToken)}
|
||||
pOsztaly[(CM_PARSER_N+8)]:={|this,mnameToken| hpr_prsEndif(this,mnameToken)}
|
||||
pOsztaly[(CM_PARSER_N+9)]:={|this,mnameToken| parseinclude(this,mnameToken)}
|
||||
pOsztaly[(CM_PARSER_N+10)]:={|this,mnameToken| parseltranslate(this,mnameToken)}
|
||||
pOsztaly[(CM_PARSER_N+11)]:={|this,mnameToken| parsertranslate(this,mnameToken)}
|
||||
pOsztaly[(CM_PARSER_N+12)]:={|this,mnameToken,name,params| hpr_addDefine(this,mnameToken,name,params)}
|
||||
pOsztaly[(CM_PARSER_N+13)]:={|this,mnameToken,leftSide,rightSide| addxtranslate(this,mnameToken,leftSide,rightSide)}
|
||||
pOsztaly[(CM_PARSER_N+14)]:={|this,kiirBlock| sornyel(this,kiirBlock)}
|
||||
pOsztaly[(CM_PARSER_N+15)]:={|this,token,errorCode,params| errorgen(this,token,errorCode,params)}
|
||||
pOsztaly[(CM_PARSER_N+16)]:={|this,token,errorcode,params| incomperrorgen(this,token,errorcode,params)}
|
||||
pOsztaly[(CM_PARSER_N+17)]:={|this| chkendoffile(this)}
|
||||
pOsztaly[(4)]:={|this,inputReader,name,defDict,xtrDict,inclObj,errorStream| oinit(this,inputReader,name,defDict,xtrDict,inclObj,errorStream)}
|
||||
return pOsztaly
|
||||
|
||||
**********************************************************************
|
||||
static function setCams(ta,tm)
|
||||
// Egy t”mb”t felt”lt az oszt ly ltal def. objektumok attrib£tumaival ‚s m–veleteivel.
|
||||
ta[CA_PARSER_N+1-CA_NIL_N] := {CA_PARSER_N+1,'soreleje',nil}
|
||||
ta[CA_PARSER_N+2-CA_NIL_N] := {CA_PARSER_N+2,'defdict',nil}
|
||||
ta[CA_PARSER_N+3-CA_NIL_N] := {CA_PARSER_N+3,'xtrdict',nil}
|
||||
ta[CA_PARSER_N+4-CA_NIL_N] := {CA_PARSER_N+4,'ifstack',nil}
|
||||
ta[CA_PARSER_N+5-CA_NIL_N] := {CA_PARSER_N+5,'branch', }
|
||||
ta[CA_PARSER_N+6-CA_NIL_N] := {CA_PARSER_N+6,'inclobj', }
|
||||
ta[CA_PARSER_N+7-CA_NIL_N] := {CA_PARSER_N+7,'lasteos', }
|
||||
|
||||
tm[(CM_OBJECT_N+5)-CM_NIL_N] := {(CM_OBJECT_N+5),'readitem','',nil}
|
||||
tm[(CM_PARSER_N+1)-CM_NIL_N] := {(CM_PARSER_N+1),'parseline','',nil}
|
||||
tm[(CM_PARSER_N+2)-CM_NIL_N] := {(CM_PARSER_N+2),'parsefalseline','',nil}
|
||||
tm[(CM_PARSER_N+3)-CM_NIL_N] := {(CM_PARSER_N+3),'parsedefine','mnameToken',nil}
|
||||
tm[(CM_PARSER_N+4)-CM_NIL_N] := {(CM_PARSER_N+4),'parseundef','mnameToken',nil}
|
||||
tm[(CM_PARSER_N+5)-CM_NIL_N] := {(CM_PARSER_N+5),'parsetranslate','mNameToken',nil}
|
||||
tm[(CM_PARSER_N+6)-CM_NIL_N] := {(CM_PARSER_N+6),'parseifdef','mnameToken,ifdefType',nil}
|
||||
tm[(CM_PARSER_N+7)-CM_NIL_N] := {(CM_PARSER_N+7),'parseelse','mnameToken',nil}
|
||||
tm[(CM_PARSER_N+8)-CM_NIL_N] := {(CM_PARSER_N+8),'parseendif','mnameToken',nil}
|
||||
tm[(CM_PARSER_N+9)-CM_NIL_N] := {(CM_PARSER_N+9),'parseinclude','mnameToken',nil}
|
||||
tm[(CM_PARSER_N+10)-CM_NIL_N] := {(CM_PARSER_N+10),'parseltranslate','mnameToken',nil}
|
||||
tm[(CM_PARSER_N+11)-CM_NIL_N] := {(CM_PARSER_N+11),'parsertranslate','mnameToken',nil}
|
||||
tm[(CM_PARSER_N+12)-CM_NIL_N] := {(CM_PARSER_N+12),'adddefine','mnameToken,name,params',nil}
|
||||
tm[(CM_PARSER_N+13)-CM_NIL_N] := {(CM_PARSER_N+13),'addxtranslate','mnameToken,leftSide,rightSide',nil}
|
||||
tm[(CM_PARSER_N+14)-CM_NIL_N] := {(CM_PARSER_N+14),'sornyel','kiirBlock',nil}
|
||||
tm[(CM_PARSER_N+15)-CM_NIL_N] := {(CM_PARSER_N+15),'errorgen','token,errorCode,params',nil}
|
||||
tm[(CM_PARSER_N+16)-CM_NIL_N] := {(CM_PARSER_N+16),'incomperrorgen','token,errorcode,params',nil}
|
||||
tm[(CM_PARSER_N+17)-CM_NIL_N] := {(CM_PARSER_N+17),'chkendoffile','',nil}
|
||||
tm[(4)-CM_NIL_N] := {(4),'oinit','inputReader,name,defDict,xtrDict,inclObj,errorStream',nil}
|
||||
return nil
|
||||
|
||||
#ifndef _NO_CLHPARSER_
|
||||
#ifdef _STRICT_PARENT_
|
||||
#ifdef _CA_CM_ONLY_
|
||||
#include "meta.och"
|
||||
#else // _CA_CM_ONLY_
|
||||
#define _CA_CM_ONLY_
|
||||
#include "meta.och"
|
||||
#undef _CA_CM_ONLY_
|
||||
#endif // _CA_CM_ONLY_
|
||||
#else
|
||||
#include "meta.och"
|
||||
#endif // _STRICT_PARENT_
|
||||
**********************************************************************
|
||||
function clHPARSER()
|
||||
// El“szedi az oszt lyt. (class)
|
||||
static osztaly
|
||||
if (osztaly==nil)
|
||||
osztaly:=META.mcHPARSERCLASS():onew(;
|
||||
clPARSER(),;
|
||||
"HPARSER",;
|
||||
CA_HPARSER_N,;
|
||||
CM_HPARSER_N,;
|
||||
{|ta,tm|setCams(ta,tm)},;
|
||||
{|t|setCMethods(t)})
|
||||
endif
|
||||
return osztaly
|
||||
#endif // _NO_CLHPARSER_
|
||||
|
||||
#ifndef _NO_HPARSERCLASS_
|
||||
|
||||
**********************************************************************
|
||||
#xtranslate class:<m> => HPARSERCLASS.(class):<m>
|
||||
|
||||
#xcommand cimplement onew(inputReader,name,defDict,xtrDict,inclObj,errorStream) => ;
|
||||
static function onew(class,inputReader,name,defDict,xtrDict,inclObj,errorStream)
|
||||
#xcommand cimplement oinitclass() => static function oinitclass(class)
|
||||
|
||||
#ifdef _IMPLEMENT_EXPORT_
|
||||
#xcommand cimplement export onew(inputReader,name,defDict,xtrDict,inclObj,errorStream) => ;
|
||||
function onew(class,inputReader,name,defDict,xtrDict,inclObj,errorStream)
|
||||
#xcommand cimplement export oinitclass() => function oinitclass(class)
|
||||
#endif // _IMPLEMENT_EXPORT_
|
||||
|
||||
#xtranslate superclass:oinit => (OBJGENM.(eval(BEHAVIOR.mcPARSERCLASS():objmethodsimplement)).(class):(4))
|
||||
#xtranslate superclass:getclass => (OBJGENM.(eval(BEHAVIOR.mcPARSERCLASS():objmethodsimplement)).(class):(5))
|
||||
#xtranslate superclass:isclass => (OBJGENM.(eval(BEHAVIOR.mcPARSERCLASS():objmethodsimplement)).(class):(6))
|
||||
#xtranslate superclass:getattrib => (OBJGENM.(eval(BEHAVIOR.mcPARSERCLASS():objmethodsimplement)).(class):(7))
|
||||
#xtranslate superclass:setattrib => (OBJGENM.(eval(BEHAVIOR.mcPARSERCLASS():objmethodsimplement)).(class):(8))
|
||||
#xtranslate superclass:onew => (OBJGENM.(eval(BEHAVIOR.mcPARSERCLASS():objmethodsimplement)).(class):(CM_OBJECT_N+1))
|
||||
#xtranslate superclass:ocreate => (OBJGENM.(eval(BEHAVIOR.mcPARSERCLASS():objmethodsimplement)).(class):(CM_OBJECT_N+2))
|
||||
#xtranslate superclass:rawoinit => (OBJGENM.(eval(BEHAVIOR.mcPARSERCLASS():objmethodsimplement)).(class):(CM_OBJECT_N+3))
|
||||
#xtranslate superclass:oinitclass => (OBJGENM.(eval(BEHAVIOR.mcPARSERCLASS():objmethodsimplement)).(class):(CM_OBJECT_N+4))
|
||||
#xtranslate superclass:getmethodsimplement => (OBJGENM.(eval(BEHAVIOR.mcPARSERCLASS():objmethodsimplement)).(class):(CM_OBJECT_N+5))
|
||||
#xtranslate superclass:attribidx => (OBJGENM.(eval(BEHAVIOR.mcPARSERCLASS():objmethodsimplement)).(class):(CM_OBJECT_N+6))
|
||||
#xtranslate superclass:needclassid => (OBJGENM.(eval(BEHAVIOR.mcPARSERCLASS():objmethodsimplement)).(class):(CM_OBJECT_N+7))
|
||||
#xtranslate superclass:isinheritfrom => (OBJGENM.(eval(BEHAVIOR.mcPARSERCLASS():objmethodsimplement)).(class):(CM_OBJECT_N+8))
|
||||
|
||||
**********************************************************************
|
||||
static function setMCMethods(pOsztaly)
|
||||
// Egy t”mb”t felt”lt a metaoszt ly m–veleti blokkjaival.
|
||||
pOsztaly[(CM_OBJECT_N+1)]:={|class,inputReader,name,defDict,xtrDict,inclObj,errorStream| onew(class,inputReader,name,defDict,xtrDict,inclObj,errorStream)}
|
||||
pOsztaly[(CM_OBJECT_N+4)]:={|class| oinitclass(class)}
|
||||
return pOsztaly
|
||||
|
||||
**********************************************************************
|
||||
static function setMCams(ta,tm)
|
||||
// Egy t”mb”t felt”lt a metaoszt ly ltal def. objektumok attrib£tumaival ‚s m–veleteivel.
|
||||
|
||||
tm[(CM_OBJECT_N+1)-CM_NIL_N] := {(CM_OBJECT_N+1),'onew','inputReader,name,defDict,xtrDict,inclObj,errorStream',nil}
|
||||
tm[(CM_OBJECT_N+4)-CM_NIL_N] := {(CM_OBJECT_N+4),'oinitclass','',nil}
|
||||
return nil
|
||||
|
||||
**********************************************************************
|
||||
#ifndef _NO_MCHPARSERCLASS_
|
||||
#ifdef _STRICT_PARENT_
|
||||
#ifdef _CA_CM_ONLY_
|
||||
#include "meta.och" // "metaclas.och"
|
||||
#else // _CA_CM_ONLY_
|
||||
#define _CA_CM_ONLY_
|
||||
#include "meta.och" // "metaclas.och"
|
||||
#undef _CA_CM_ONLY_
|
||||
#endif // _CA_CM_ONLY_
|
||||
#else
|
||||
#include "meta.och" // "metaclas.och"
|
||||
#endif // _STRICT_PARENT_
|
||||
function mcHPARSERCLASS()
|
||||
// El“szedi az oszt ly metaoszt ly t. (metaclass)
|
||||
static metaOsztaly
|
||||
if (metaOsztaly==nil)
|
||||
metaOsztaly:=META.clMETA():onew(;
|
||||
mcPARSERCLASS(),;
|
||||
"HPARSERCLASS",;
|
||||
CA_HPARSERCLASS_N,;
|
||||
CM_HPARSERCLASS_N,;
|
||||
{|ta,tm|setMCams(ta,tm)},;
|
||||
{|t|setMCMethods(t)})
|
||||
endif
|
||||
return metaOsztaly
|
||||
#endif // _NO_MCHPARSERCLASS_
|
||||
|
||||
#endif // _NO_HPARSERCLASS_
|
||||
#ifdef _IMPLEMENT_ONEW_
|
||||
**********************************************************************
|
||||
cimplement onew(inputReader,name,defDict,xtrDict,inclObj,errorStream)
|
||||
local o:=class:ocreate()
|
||||
|
||||
HPARSER.o:oinit(inputReader,name,defDict,xtrDict,inclObj,errorStream)
|
||||
return o
|
||||
#endif // _IMPLEMENT_ONEW_
|
||||
|
||||
**********************************************************************
|
||||
#ifdef _IMPLEMENT_OINIT_
|
||||
implement oinit(inputReader,name,defDict,xtrDict,inclObj,errorStream)
|
||||
super:oinit()
|
||||
return this
|
||||
#endif // _IMPLEMENT_OINIT_
|
||||
|
||||
**********************************************************************
|
||||
**********************************************************************
|
||||
#endif // _HPARSER_PRG_OCH_
|
||||
#endif // _HPARSER_PRG_
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,416 +0,0 @@
|
||||
/*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
//*******************************************************************
|
||||
// hparser2.prg: Hessmark parser(2): a '#'-al kezd“d“ sorok elemz‚se.
|
||||
// 1999, Csisz r Levente
|
||||
|
||||
//*******************************************************************
|
||||
#include "objgen.ch"
|
||||
|
||||
//*******************************************************************
|
||||
#define _STRICT_PARENT_
|
||||
#include "token.och"
|
||||
//#include "mmarker.och"
|
||||
//#include "rmarker.och"
|
||||
//#include "maltrset.och"
|
||||
//#include "rsmmarkr.och"
|
||||
//#include "ralter.och"
|
||||
#include "edefdict.och"
|
||||
#include "defdict.och"
|
||||
//#include "extrdict.och"
|
||||
//#include "xtrdict.och"
|
||||
// #include "freader.och"
|
||||
//#include "incl.och"
|
||||
//#include "prserr.och"
|
||||
//*******************************************************************
|
||||
// #include "cr_lf.ch"
|
||||
#include "ctoken.ch"
|
||||
// #include "prserr.ch"
|
||||
|
||||
//*******************************************************************
|
||||
#include "hparser.ch"
|
||||
|
||||
//*******************************************************************
|
||||
#include "reader.och"
|
||||
#include "treader.och"
|
||||
#include "hparser.och"
|
||||
|
||||
//*******************************************************************
|
||||
#xtranslate this:<m> => HPARSER.(this):<m>
|
||||
|
||||
//*******************************************************************
|
||||
function hpr_prsDefine(this,mNameToken)
|
||||
// A # define elemz“je.
|
||||
local state,tkId,tkStr
|
||||
local name,params
|
||||
local ujsor
|
||||
|
||||
#ifdef ID_STRING
|
||||
#define ST_D_START "start"
|
||||
#define ST_D_TORZS "torzs"
|
||||
#define ST_D_PARAM_VAGY_TORZS "param_vagy_torzs"
|
||||
#define ST_D_TORZS_START "torzs_start"
|
||||
#define ST_D_PARAM_START "param_start"
|
||||
#define ST_D_PARAM_NEVUTAN "param_nevutan"
|
||||
#define ST_D_PARAM_VESSZOUTAN "param_vesszoutan"
|
||||
#else
|
||||
#define ST_D_START 1
|
||||
#define ST_D_TORZS 2
|
||||
#define ST_D_PARAM_VAGY_TORZS 3
|
||||
#define ST_D_TORZS_START 4
|
||||
#define ST_D_PARAM_START 5
|
||||
#define ST_D_PARAM_NEVUTAN 6
|
||||
#define ST_D_PARAM_VESSZOUTAN 7
|
||||
#endif
|
||||
state:=ST_D_START
|
||||
this:rds()
|
||||
while(this:item!=nil)
|
||||
tkId:=TOKEN.(this:item):id
|
||||
tkStr:=TOKEN.(this:item):str
|
||||
ujsor:=tkId==TKID_UJSOR .or.;
|
||||
tkId==TKID_BOS .or. tkId==TKID_EOS
|
||||
if (state==ST_D_START)
|
||||
if (ujsor)
|
||||
// Hib s ‚s v‚ge is van.
|
||||
this:errorgen(mNameToken,HPRERR_SDEFINE)
|
||||
exit
|
||||
elseif (tkId==TKID_URES)
|
||||
// Eldobjuk.
|
||||
state:=ST_D_START
|
||||
elseif (tkId==TKID_NEV)
|
||||
// Ez a neve
|
||||
name:=tkStr
|
||||
state:=ST_D_PARAM_VAGY_TORZS
|
||||
else
|
||||
// Hib s.
|
||||
this:errorgen(this:item,HPRERR_SDEFINE)
|
||||
exit
|
||||
endif
|
||||
elseif (state==ST_D_PARAM_VAGY_TORZS)
|
||||
if (ujsor)
|
||||
// A defin¡ci¢ <20>res.
|
||||
this:unrds()
|
||||
this:clearParserbuffer()
|
||||
this:addDefine(mNameToken,name,params)
|
||||
// this:putParserBuffer(this:item)
|
||||
exit
|
||||
elseif (tkId==TKID_URES)
|
||||
// <20>tmegy<67>nk a t”rzsh”z.
|
||||
this:clearParserbuffer()
|
||||
state:=ST_D_TORZS_START
|
||||
elseif (tkId==TKID_CHAR .and. tkStr=="(")
|
||||
// A param‚terek.
|
||||
state:=ST_D_PARAM_START
|
||||
else
|
||||
// A t”rzs.
|
||||
this:clearParserBuffer()
|
||||
this:putParserBuffer(this:item)
|
||||
state:=ST_D_TORZS
|
||||
endif
|
||||
elseif (state==ST_D_PARAM_START)
|
||||
// '(' ut n. N‚v vagy ')' j”het.
|
||||
params:={}
|
||||
if (tkId==TKID_URES)
|
||||
// Eldobjuk.
|
||||
elseif (tkId==TKID_CHAR .and. tkStr==")")
|
||||
// Kezd“dik a t”rzs.
|
||||
this:clearParserbuffer()
|
||||
state:=ST_D_TORZS_START
|
||||
elseif (tkId==TKID_NEV)
|
||||
// Param‚ter.
|
||||
aadd(params,tkStr)
|
||||
state:=ST_D_PARAM_NEVUTAN
|
||||
else
|
||||
// B rmi m s, az nem j¢! Ebben benne van az £j sor is!
|
||||
// Hib s ‚s v‚ge is van.
|
||||
this:errorgen(mNameToken,HPRERR_LDEFINE)
|
||||
exit
|
||||
endif
|
||||
elseif (state==ST_D_PARAM_NEVUTAN)
|
||||
// Param‚terlist ban egy n‚v ut n.
|
||||
// ',' vagy ')' j”het.
|
||||
if (tkId==TKID_URES)
|
||||
// Eldobjuk.
|
||||
elseif (tkId==TKID_CHAR .and. tkStr==")")
|
||||
// Kezd“dik a t”rzs.
|
||||
// šres param‚ter lista.
|
||||
this:clearParserBuffer()
|
||||
state:=ST_D_TORZS_START
|
||||
elseif (tkId==TKID_CHAR .and. tkStr==",")
|
||||
// Kezd“dik a k”vetkez“ param‚ter.
|
||||
state:=ST_D_PARAM_VESSZOUTAN
|
||||
else
|
||||
// B rmi m s, az nem j¢! Ebben benne van az £j sor is!
|
||||
// Hib s ‚s v‚ge is van.
|
||||
this:errorgen(mNameToken,HPRERR_PDEFINE)
|
||||
exit
|
||||
endif
|
||||
elseif (state==ST_D_PARAM_VESSZOUTAN)
|
||||
// ',' ut n. Csak n‚v j”het.
|
||||
if (tkId==TKID_URES)
|
||||
// Eldobjuk.
|
||||
elseif (tkId==TKID_NEV)
|
||||
// Param‚ter.
|
||||
aadd(params,tkStr)
|
||||
state:=ST_D_PARAM_NEVUTAN
|
||||
else
|
||||
// B rmi m s, az nem j¢! Ebben benne van az £j sor is!
|
||||
// Hib s ‚s v‚ge is van.
|
||||
this:errorgen(mNameToken,HPRERR_PDEFINE)
|
||||
exit
|
||||
endif
|
||||
elseif (state==ST_D_TORZS_START)
|
||||
// Az <20>reseket lenyelj<6C>k.
|
||||
if (tkId==TKID_URES)
|
||||
// Eldobjuk.
|
||||
this:unputParserBuffer()
|
||||
elseif (tkId==TKID_UJSOR .or.;
|
||||
tkId==TKID_BOS .or. tkId==TKID_EOS)
|
||||
// V‚ge a definici¢nak.
|
||||
this:unrds()
|
||||
this:addDefine(mNameToken,name,params)
|
||||
exit
|
||||
else
|
||||
// B rmi m s, indul a t”rzs.
|
||||
state:=ST_D_TORZS
|
||||
endif
|
||||
elseif (state==ST_D_TORZS)
|
||||
if (tkId==TKID_UJSOR .or.;
|
||||
tkId==TKID_BOS .or. tkId==TKID_EOS)
|
||||
// V‚ge a definici¢nak.
|
||||
this:unrds()
|
||||
this:addDefine(mNameToken,name,params)
|
||||
exit
|
||||
else
|
||||
// B rmi m s a t”rzs folytat¢dik.
|
||||
endif
|
||||
else
|
||||
? "HPARSER:parseDefine(): Ismeretlen llapot: ",state
|
||||
errorlevel(1)
|
||||
quit
|
||||
endif
|
||||
this:rds()
|
||||
end while
|
||||
this:sorNyel()
|
||||
|
||||
return nil
|
||||
|
||||
//*******************************************************************
|
||||
function hpr_prsUndef(this,mnameToken)
|
||||
// A # undef elemz“je.
|
||||
|
||||
local state
|
||||
|
||||
#ifdef ID_STRING
|
||||
#define ST_UD_START "start"
|
||||
#define ST_UD_VEGE "vege"
|
||||
#else
|
||||
#define ST_UD_START 1
|
||||
#define ST_UD_VEGE 2
|
||||
#endif
|
||||
|
||||
local tkId,tkStr
|
||||
local name
|
||||
local ujsor
|
||||
|
||||
state:=ST_UD_START
|
||||
this:rds()
|
||||
while(this:item!=nil)
|
||||
tkId:=TOKEN.(this:item):id
|
||||
tkStr:=TOKEN.(this:item):str
|
||||
ujsor:=tkId==TKID_UJSOR .or.;
|
||||
tkId==TKID_BOS .or. tkId==TKID_EOS
|
||||
if (state==ST_UD_START)
|
||||
if (ujsor)
|
||||
// Hib s ‚s v‚ge is van.
|
||||
this:errorgen(mnameToken,HPRERR_SUNDEF)
|
||||
exit
|
||||
elseif (tkId==TKID_URES)
|
||||
// Maradunk.
|
||||
elseif (tkId==TKID_NEV)
|
||||
// Ez a neve
|
||||
name:=tkStr
|
||||
state:=ST_UD_VEGE
|
||||
else
|
||||
// Hib s.
|
||||
this:errorgen(mnameToken,HPRERR_SUNDEF)
|
||||
exit
|
||||
endif
|
||||
elseif (state==ST_UD_VEGE)
|
||||
if (ujsor)
|
||||
// K‚sz vagyunk.
|
||||
this:unrds()
|
||||
this:clearParserbuffer()
|
||||
// Nem kell hib t jelezni, ha nincs.
|
||||
DEFDICT.(this:defdict):delKey(name)
|
||||
exit
|
||||
elseif (tkId==TKID_URES)
|
||||
// Maradunk.
|
||||
else
|
||||
// Hib s
|
||||
this:errorgen(this:item,HPRERR_SUNDEF)
|
||||
exit
|
||||
endif
|
||||
else
|
||||
? "HPARSER:parseUndef(): Ismeretlen llapot: ",state
|
||||
errorlevel(1)
|
||||
quit
|
||||
endif
|
||||
this:rds()
|
||||
end while
|
||||
this:sorNyel()
|
||||
|
||||
return nil
|
||||
|
||||
//*******************************************************************
|
||||
function hpr_addDefine(this,mnameToken,name,params)
|
||||
// A t”rzs a parserBuffer-ben van.
|
||||
// Az mNameToken jelzi, hogy hol volt a defin¡ci¢.
|
||||
local w,prev,errStr
|
||||
|
||||
w:=C.EDEFDICT:onew(name,params,;
|
||||
this:arrayParserBuffer(),;
|
||||
TOKEN.mnameToken:file,;
|
||||
TOKEN.mnameToken:line,;
|
||||
TOKEN.mnameToken:pos)
|
||||
|
||||
this:clearParserBuffer()
|
||||
|
||||
if (nil!=(prev:=DEFDICT.(this:defdict):add(w)))
|
||||
// M r van ilyen makr¢
|
||||
errStr:="Previous: "+;
|
||||
EDEFDICT.prev:deffilelinepos[1]+"("+;
|
||||
toStr(EDEFDICT.prev:deffilelinepos[2])+")"
|
||||
this:errorGen(mnameToken,HPRERR_MDUPLICATE,{name,errStr})
|
||||
endif
|
||||
|
||||
return nil
|
||||
|
||||
//*******************************************************************
|
||||
function hpr_prsIfdef(this,mnameToken,ifdefType)
|
||||
// A #ifdef/#ifndef elemz“je.
|
||||
|
||||
local state
|
||||
|
||||
#ifdef ID_STRING
|
||||
#define ST_FD_START "start"
|
||||
#define ST_FD_VEGE "vege"
|
||||
#else
|
||||
#define ST_FD_START 1
|
||||
#define ST_FD_VEGE 2
|
||||
#endif
|
||||
|
||||
local tkId,tkStr
|
||||
local name
|
||||
local ujsor
|
||||
local megvan
|
||||
|
||||
state:=ST_FD_START
|
||||
this:rds()
|
||||
while(this:item!=nil)
|
||||
tkId:=TOKEN.(this:item):id
|
||||
tkStr:=TOKEN.(this:item):str
|
||||
ujsor:=tkId==TKID_UJSOR .or.;
|
||||
tkId==TKID_BOS .or. tkId==TKID_EOS
|
||||
if (state==ST_FD_START)
|
||||
if (ujsor)
|
||||
// Hib s ‚s v‚ge is van.
|
||||
this:errorgen(mnameToken,HPRERR_IFDEFNL)
|
||||
exit
|
||||
elseif (tkId==TKID_URES)
|
||||
// Maradunk.
|
||||
elseif (tkId==TKID_NEV)
|
||||
// Ez a neve
|
||||
name:=tkStr
|
||||
state:=ST_FD_VEGE
|
||||
else
|
||||
// Hib s.
|
||||
this:errorgen(this:item,HPRERR_SIFDEF)
|
||||
exit
|
||||
endif
|
||||
elseif (state==ST_FD_VEGE)
|
||||
if (ujsor)
|
||||
// K‚sz vagyunk.
|
||||
this:unrds()
|
||||
this:clearParserbuffer()
|
||||
if (ifdefType==IFDEFTYPE_NONE)
|
||||
// Hamis gban lev“ if.
|
||||
this:branch:=nil
|
||||
aadd(this:ifStack,{IFB_NONEBRANCH,this:branch})
|
||||
this:sorNyel()
|
||||
else
|
||||
megvan:=DEFDICT.(this:defdict):atKey(name)
|
||||
this:branch:=if(ifdefType==IFDEFTYPE_IFDEF,megvan!=nil,megvan==nil)
|
||||
aadd(this:ifStack,{IFB_IFBRANCH,this:branch})
|
||||
endif
|
||||
exit
|
||||
elseif (tkId==TKID_URES)
|
||||
// Maradunk.
|
||||
else
|
||||
// Hib s
|
||||
this:errorgen(this:item,HPRERR_SIFDEF)
|
||||
exit
|
||||
endif
|
||||
else
|
||||
? "HPARSER:parseIfdef(): Ismeretlen llapot: ",state
|
||||
errorlevel(1)
|
||||
quit
|
||||
endif
|
||||
this:rds()
|
||||
end while
|
||||
this:sorNyel()
|
||||
|
||||
return nil
|
||||
|
||||
//*******************************************************************
|
||||
function hpr_prsElse(this,mnameToken)
|
||||
// A #else elemz“je.
|
||||
local w
|
||||
|
||||
if (len(this:ifStack)<=0)
|
||||
// Hiba, nincs hozz if.
|
||||
this:errorgen(this:item,HPRERR_ELSE) // Nincs hozz if
|
||||
elseif (this:branch!=nil)
|
||||
w:=atail(this:ifStack)
|
||||
// A spec-ben t”bb else is lehet, ilyenkor csak megford¡tja a
|
||||
// felt‚telt.
|
||||
if (w[1]==IFB_IFBRANCH)
|
||||
w[1]:=IFB_ELSEBRANCH
|
||||
else
|
||||
// Duplik lt else, A spec-ben ez nem hiba!
|
||||
this:incompErrorgen(this:item,HPRERR_ELSE2) // Duplik lt else
|
||||
endif
|
||||
this:branch:=w[2]:=!w[2]
|
||||
endif
|
||||
this:sorNyel()
|
||||
|
||||
return nil
|
||||
|
||||
|
||||
//*******************************************************************
|
||||
function hpr_prsEndif(this,mnameToken)
|
||||
// A #endif elemz“je.
|
||||
local w
|
||||
|
||||
if (len(this:ifStack)<=0)
|
||||
// Hiba, nincs hozz if.
|
||||
this:errorgen(this:item,HPRERR_ENDIF) // Nincs hozz if
|
||||
else
|
||||
adrop(this:ifStack)
|
||||
if (len(this:ifStack)<=0)
|
||||
this:branch:=.t.
|
||||
else
|
||||
w:=atail(this:ifStack)
|
||||
this:branch:=w[2]
|
||||
endif
|
||||
endif
|
||||
this:sorNyel()
|
||||
|
||||
return nil
|
||||
|
||||
//*******************************************************************
|
||||
|
||||
|
||||
|
||||
@@ -1,33 +0,0 @@
|
||||
//
|
||||
// $Id$
|
||||
//
|
||||
|
||||
//*******************************************************************
|
||||
// incl.cls: Include direktorik nyilv ntart sa, £j readerek nyit sa
|
||||
// az include fil‚kre.
|
||||
// 1999, Csisz r Levente
|
||||
|
||||
class INCL OBJECT
|
||||
|
||||
attrib lreader // Ebben vannak a nyitott include fil‚k.
|
||||
|
||||
attrib includeList // A direktorik, amiben keresni kell
|
||||
// az input fil‚ket.
|
||||
|
||||
attrib maxInclDeep // Legfeljebb ennyi lehet egym sba
|
||||
// skatuly zva.
|
||||
// 0: Nincs limit.
|
||||
|
||||
nmethod openIncludeFile(filename)
|
||||
|
||||
rmethod oinit(lreader,includeList,maxInclDeep)
|
||||
|
||||
metaclass
|
||||
|
||||
rmethod onew(lreader,includeList,maxInclDeep)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1,269 +0,0 @@
|
||||
// INCL.och oszt ly implement ci¢.
|
||||
// Gener lva: 1999.06.10, 14:39:57, OBJCCC v2.2.03
|
||||
// Meta oszt ly defin¡ci¢: Van
|
||||
|
||||
|
||||
#ifndef CA_OBJECT_N
|
||||
#ifdef _STRICT_PARENT_
|
||||
#ifdef _CA_CM_ONLY_
|
||||
#include "OBJECT.och"
|
||||
#else // _CA_CM_ONLY_
|
||||
#define _CA_CM_ONLY_
|
||||
#include "OBJECT.och"
|
||||
#undef _CA_CM_ONLY_
|
||||
#endif // _CA_CM_ONLY_
|
||||
#else
|
||||
#include "OBJECT.och"
|
||||
#endif // _STRICT_PARENT_
|
||||
#endif // CA_OBJECT_N
|
||||
|
||||
#ifndef _CA_CM_ONLY_
|
||||
#ifndef _INCL_OCH_
|
||||
#define _INCL_OCH_
|
||||
|
||||
|
||||
|
||||
|
||||
#xtranslate INCL.<obj>:oinit => (OBJGEN.(<obj>):(4))
|
||||
#xtranslate INCL.<obj>:getclass => (OBJGEN.(<obj>):(5))
|
||||
#xtranslate INCL.<obj>:isclass => (OBJGEN.(<obj>):(6))
|
||||
#xtranslate INCL.<obj>:getattrib => (OBJGEN.(<obj>):(7))
|
||||
#xtranslate INCL.<obj>:setattrib => (OBJGEN.(<obj>):(8))
|
||||
|
||||
|
||||
#xtranslate INCL.<obj>:lreader => <obj>\[CA_OBJECT_N+1\]
|
||||
#xtranslate INCL.<obj>:includelist => <obj>\[CA_OBJECT_N+2\]
|
||||
#xtranslate INCL.<obj>:maxincldeep => <obj>\[CA_OBJECT_N+3\]
|
||||
|
||||
// Specifik lva: openincludefile(filename)
|
||||
// ™r”k”lve: oinit(lreader,includeList,maxInclDeep)
|
||||
|
||||
#xtranslate INCL.<obj>:openincludefile => (OBJGEN.(<obj>):(CM_OBJECT_N+1))
|
||||
// ™r”k”lve: oinit(lreader,includeList,maxInclDeep)
|
||||
|
||||
#endif // _INCL_OCH_
|
||||
#endif // _CA_CM_ONLY_
|
||||
|
||||
#ifndef CA_INCL_N
|
||||
#define CA_INCL_N CA_OBJECT_N+3
|
||||
#define CM_INCL_N CM_OBJECT_N+1
|
||||
#endif // CA_INCL_N
|
||||
|
||||
#ifndef _CA_CM_ONLY_
|
||||
#ifndef _INCLCLASS_OCH_
|
||||
#define _INCLCLASS_OCH_
|
||||
|
||||
**********************************************************************
|
||||
#xtranslate C.INCL:<m> => (INCLCLASS.clINCL():<m>)
|
||||
#xtranslate C.INCL:self() => (clINCL())
|
||||
|
||||
|
||||
#xtranslate INCLCLASS.<obj>:parent => <obj>\[CA_OBJECT_N+1\]
|
||||
#xtranslate INCLCLASS.<obj>:name => <obj>\[CA_OBJECT_N+2\]
|
||||
#xtranslate INCLCLASS.<obj>:objsize => <obj>\[CA_OBJECT_N+3\]
|
||||
#xtranslate INCLCLASS.<obj>:attribs => <obj>\[CA_OBJECT_N+4\]
|
||||
#xtranslate INCLCLASS.<obj>:methods => <obj>\[CA_OBJECT_N+5\]
|
||||
#xtranslate INCLCLASS.<obj>:classid => <obj>\[CA_OBJECT_N+6\]
|
||||
#xtranslate INCLCLASS.<obj>:parentclassids => <obj>\[CA_OBJECT_N+7\]
|
||||
#xtranslate INCLCLASS.<obj>:amblock => <obj>\[CA_OBJECT_N+8\]
|
||||
#xtranslate INCLCLASS.<obj>:methodsblock => <obj>\[CA_OBJECT_N+9\]
|
||||
#xtranslate INCLCLASS.<obj>:objmethodsimplement => <obj>\[CA_OBJECT_N+10\]
|
||||
|
||||
|
||||
#xtranslate INCLCLASS.<obj>:oinit => (OBJGEN.(<obj>):(4))
|
||||
#xtranslate INCLCLASS.<obj>:getclass => (OBJGEN.(<obj>):(5))
|
||||
#xtranslate INCLCLASS.<obj>:isclass => (OBJGEN.(<obj>):(6))
|
||||
#xtranslate INCLCLASS.<obj>:getattrib => (OBJGEN.(<obj>):(7))
|
||||
#xtranslate INCLCLASS.<obj>:setattrib => (OBJGEN.(<obj>):(8))
|
||||
#xtranslate INCLCLASS.<obj>:onew => (OBJGEN.(<obj>):(CM_OBJECT_N+1))
|
||||
#xtranslate INCLCLASS.<obj>:ocreate => (OBJGEN.(<obj>):(CM_OBJECT_N+2))
|
||||
#xtranslate INCLCLASS.<obj>:rawoinit => (OBJGEN.(<obj>):(CM_OBJECT_N+3))
|
||||
#xtranslate INCLCLASS.<obj>:oinitclass => (OBJGEN.(<obj>):(CM_OBJECT_N+4))
|
||||
#xtranslate INCLCLASS.<obj>:getmethodsimplement => (OBJGEN.(<obj>):(CM_OBJECT_N+5))
|
||||
#xtranslate INCLCLASS.<obj>:attribidx => (OBJGEN.(<obj>):(CM_OBJECT_N+6))
|
||||
#xtranslate INCLCLASS.<obj>:needclassid => (OBJGEN.(<obj>):(CM_OBJECT_N+7))
|
||||
#xtranslate INCLCLASS.<obj>:isinheritfrom => (OBJGEN.(<obj>):(CM_OBJECT_N+8))
|
||||
|
||||
|
||||
|
||||
// ™r”k”lve: onew(lreader,includeList,maxInclDeep)
|
||||
|
||||
// ™r”k”lve: onew(lreader,includeList,maxInclDeep)
|
||||
|
||||
#endif // _INCLCLASS_OCH_
|
||||
#endif // _CA_CM_ONLY_
|
||||
|
||||
#ifndef CA_INCLCLASS_N
|
||||
#define CA_INCLCLASS_N CA_BEHAVIOR_N+0
|
||||
#define CM_INCLCLASS_N CM_BEHAVIOR_N+0
|
||||
#endif // CA_INCLCLASS_N
|
||||
|
||||
|
||||
**********************************************************************
|
||||
#ifdef _INCL_PRG_
|
||||
#ifndef _INCL_PRG_OCH_
|
||||
#define _INCL_PRG_OCH_
|
||||
|
||||
|
||||
**********************************************************************
|
||||
#xtranslate othis:<m> => INCL.(othis):<m>
|
||||
#xtranslate thisclass:<m> => INCLCLASS.(this:getClass()):<m>
|
||||
#define CTHIS INCL
|
||||
|
||||
|
||||
**********************************************************************
|
||||
#xtranslate this:<m> => INCL.(this):<m>
|
||||
|
||||
#xcommand implement openincludefile(filename) => ;
|
||||
static function openincludefile(this,filename)
|
||||
#xcommand implement oinit(lreader,includeList,maxInclDeep) => ;
|
||||
static function oinit(this,lreader,includeList,maxInclDeep)
|
||||
|
||||
#ifdef _IMPLEMENT_EXPORT_
|
||||
#xcommand implement export openincludefile(filename) => ;
|
||||
function openincludefile(this,filename)
|
||||
#xcommand implement export oinit(lreader,includeList,maxInclDeep) => ;
|
||||
function oinit(this,lreader,includeList,maxInclDeep)
|
||||
#endif // _IMPLEMENT_EXPORT_
|
||||
|
||||
#xtranslate super:oinit => (OBJGENM.(eval(BEHAVIOR.clOBJECT():objmethodsimplement)).(this):(4))
|
||||
#xtranslate super:getclass => (OBJGENM.(eval(BEHAVIOR.clOBJECT():objmethodsimplement)).(this):(5))
|
||||
#xtranslate super:isclass => (OBJGENM.(eval(BEHAVIOR.clOBJECT():objmethodsimplement)).(this):(6))
|
||||
#xtranslate super:getattrib => (OBJGENM.(eval(BEHAVIOR.clOBJECT():objmethodsimplement)).(this):(7))
|
||||
#xtranslate super:setattrib => (OBJGENM.(eval(BEHAVIOR.clOBJECT():objmethodsimplement)).(this):(8))
|
||||
|
||||
**********************************************************************
|
||||
static function setCMethods(pOsztaly)
|
||||
// Egy t”mb”t felt”lt az oszt ly m–veleti blokkjaival.
|
||||
pOsztaly[(CM_OBJECT_N+1)]:={|this,filename| openincludefile(this,filename)}
|
||||
pOsztaly[(4)]:={|this,lreader,includeList,maxInclDeep| oinit(this,lreader,includeList,maxInclDeep)}
|
||||
return pOsztaly
|
||||
|
||||
**********************************************************************
|
||||
static function setCams(ta,tm)
|
||||
// Egy t”mb”t felt”lt az oszt ly ltal def. objektumok attrib£tumaival ‚s m–veleteivel.
|
||||
ta[CA_OBJECT_N+1-CA_NIL_N] := {CA_OBJECT_N+1,'lreader', }
|
||||
ta[CA_OBJECT_N+2-CA_NIL_N] := {CA_OBJECT_N+2,'includelist', }
|
||||
ta[CA_OBJECT_N+3-CA_NIL_N] := {CA_OBJECT_N+3,'maxincldeep', }
|
||||
|
||||
tm[(CM_OBJECT_N+1)-CM_NIL_N] := {(CM_OBJECT_N+1),'openincludefile','filename',nil}
|
||||
tm[(4)-CM_NIL_N] := {(4),'oinit','lreader,includeList,maxInclDeep',nil}
|
||||
return nil
|
||||
|
||||
#ifndef _NO_CLINCL_
|
||||
#ifdef _STRICT_PARENT_
|
||||
#ifdef _CA_CM_ONLY_
|
||||
#include "meta.och"
|
||||
#else // _CA_CM_ONLY_
|
||||
#define _CA_CM_ONLY_
|
||||
#include "meta.och"
|
||||
#undef _CA_CM_ONLY_
|
||||
#endif // _CA_CM_ONLY_
|
||||
#else
|
||||
#include "meta.och"
|
||||
#endif // _STRICT_PARENT_
|
||||
**********************************************************************
|
||||
function clINCL()
|
||||
// El“szedi az oszt lyt. (class)
|
||||
static osztaly
|
||||
if (osztaly==nil)
|
||||
osztaly:=META.mcINCLCLASS():onew(;
|
||||
clOBJECT(),;
|
||||
"INCL",;
|
||||
CA_INCL_N,;
|
||||
CM_INCL_N,;
|
||||
{|ta,tm|setCams(ta,tm)},;
|
||||
{|t|setCMethods(t)})
|
||||
endif
|
||||
return osztaly
|
||||
#endif // _NO_CLINCL_
|
||||
|
||||
#ifndef _NO_INCLCLASS_
|
||||
|
||||
**********************************************************************
|
||||
#xtranslate class:<m> => INCLCLASS.(class):<m>
|
||||
|
||||
#xcommand cimplement onew(lreader,includeList,maxInclDeep) => ;
|
||||
static function onew(class,lreader,includeList,maxInclDeep)
|
||||
|
||||
#ifdef _IMPLEMENT_EXPORT_
|
||||
#xcommand cimplement export onew(lreader,includeList,maxInclDeep) => ;
|
||||
function onew(class,lreader,includeList,maxInclDeep)
|
||||
#endif // _IMPLEMENT_EXPORT_
|
||||
|
||||
#xtranslate superclass:oinit => (OBJGENM.(eval(BEHAVIOR.clBEHAVIOR():objmethodsimplement)).(class):(4))
|
||||
#xtranslate superclass:getclass => (OBJGENM.(eval(BEHAVIOR.clBEHAVIOR():objmethodsimplement)).(class):(5))
|
||||
#xtranslate superclass:isclass => (OBJGENM.(eval(BEHAVIOR.clBEHAVIOR():objmethodsimplement)).(class):(6))
|
||||
#xtranslate superclass:getattrib => (OBJGENM.(eval(BEHAVIOR.clBEHAVIOR():objmethodsimplement)).(class):(7))
|
||||
#xtranslate superclass:setattrib => (OBJGENM.(eval(BEHAVIOR.clBEHAVIOR():objmethodsimplement)).(class):(8))
|
||||
#xtranslate superclass:onew => (OBJGENM.(eval(BEHAVIOR.clBEHAVIOR():objmethodsimplement)).(class):(CM_OBJECT_N+1))
|
||||
#xtranslate superclass:ocreate => (OBJGENM.(eval(BEHAVIOR.clBEHAVIOR():objmethodsimplement)).(class):(CM_OBJECT_N+2))
|
||||
#xtranslate superclass:rawoinit => (OBJGENM.(eval(BEHAVIOR.clBEHAVIOR():objmethodsimplement)).(class):(CM_OBJECT_N+3))
|
||||
#xtranslate superclass:oinitclass => (OBJGENM.(eval(BEHAVIOR.clBEHAVIOR():objmethodsimplement)).(class):(CM_OBJECT_N+4))
|
||||
#xtranslate superclass:getmethodsimplement => (OBJGENM.(eval(BEHAVIOR.clBEHAVIOR():objmethodsimplement)).(class):(CM_OBJECT_N+5))
|
||||
#xtranslate superclass:attribidx => (OBJGENM.(eval(BEHAVIOR.clBEHAVIOR():objmethodsimplement)).(class):(CM_OBJECT_N+6))
|
||||
#xtranslate superclass:needclassid => (OBJGENM.(eval(BEHAVIOR.clBEHAVIOR():objmethodsimplement)).(class):(CM_OBJECT_N+7))
|
||||
#xtranslate superclass:isinheritfrom => (OBJGENM.(eval(BEHAVIOR.clBEHAVIOR():objmethodsimplement)).(class):(CM_OBJECT_N+8))
|
||||
|
||||
**********************************************************************
|
||||
static function setMCMethods(pOsztaly)
|
||||
// Egy t”mb”t felt”lt a metaoszt ly m–veleti blokkjaival.
|
||||
pOsztaly[(CM_OBJECT_N+1)]:={|class,lreader,includeList,maxInclDeep| onew(class,lreader,includeList,maxInclDeep)}
|
||||
return pOsztaly
|
||||
|
||||
**********************************************************************
|
||||
static function setMCams(ta,tm)
|
||||
// Egy t”mb”t felt”lt a metaoszt ly ltal def. objektumok attrib£tumaival ‚s m–veleteivel.
|
||||
|
||||
tm[(CM_OBJECT_N+1)-CM_NIL_N] := {(CM_OBJECT_N+1),'onew','lreader,includeList,maxInclDeep',nil}
|
||||
return nil
|
||||
|
||||
**********************************************************************
|
||||
#ifndef _NO_MCINCLCLASS_
|
||||
#ifdef _STRICT_PARENT_
|
||||
#ifdef _CA_CM_ONLY_
|
||||
#include "meta.och" // "metaclas.och"
|
||||
#else // _CA_CM_ONLY_
|
||||
#define _CA_CM_ONLY_
|
||||
#include "meta.och" // "metaclas.och"
|
||||
#undef _CA_CM_ONLY_
|
||||
#endif // _CA_CM_ONLY_
|
||||
#else
|
||||
#include "meta.och" // "metaclas.och"
|
||||
#endif // _STRICT_PARENT_
|
||||
function mcINCLCLASS()
|
||||
// El“szedi az oszt ly metaoszt ly t. (metaclass)
|
||||
static metaOsztaly
|
||||
if (metaOsztaly==nil)
|
||||
metaOsztaly:=META.clMETA():onew(;
|
||||
clBEHAVIOR(),;
|
||||
"INCLCLASS",;
|
||||
CA_INCLCLASS_N,;
|
||||
CM_INCLCLASS_N,;
|
||||
{|ta,tm|setMCams(ta,tm)},;
|
||||
{|t|setMCMethods(t)})
|
||||
endif
|
||||
return metaOsztaly
|
||||
#endif // _NO_MCINCLCLASS_
|
||||
|
||||
#endif // _NO_INCLCLASS_
|
||||
#ifdef _IMPLEMENT_ONEW_
|
||||
**********************************************************************
|
||||
cimplement onew(lreader,includeList,maxInclDeep)
|
||||
local o:=class:ocreate()
|
||||
|
||||
INCL.o:oinit(lreader,includeList,maxInclDeep)
|
||||
return o
|
||||
#endif // _IMPLEMENT_ONEW_
|
||||
|
||||
**********************************************************************
|
||||
#ifdef _IMPLEMENT_OINIT_
|
||||
implement oinit(lreader,includeList,maxInclDeep)
|
||||
super:oinit()
|
||||
return this
|
||||
#endif // _IMPLEMENT_OINIT_
|
||||
|
||||
**********************************************************************
|
||||
**********************************************************************
|
||||
#endif // _INCL_PRG_OCH_
|
||||
#endif // _INCL_PRG_
|
||||
@@ -1,88 +0,0 @@
|
||||
/*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
//*******************************************************************
|
||||
// incl.prg: Az INCL oszt ly implement ci¢ja.
|
||||
// 1999, Csisz r Levente
|
||||
|
||||
//*******************************************************************
|
||||
#include "debug.ch"
|
||||
|
||||
//*******************************************************************
|
||||
#include "objgen.ch"
|
||||
|
||||
#include "lreader.och"
|
||||
#include "freader.och"
|
||||
|
||||
#define _INCL_PRG_
|
||||
#define _IMPLEMENT_ONEW_
|
||||
|
||||
#include "incl.och"
|
||||
|
||||
//*******************************************************************
|
||||
|
||||
implement oinit(lreader,includeList,maxInclDeep)
|
||||
super:oinit()
|
||||
this:lreader:=lreader
|
||||
this:includeList:=includeList
|
||||
this:maxInclDeep:=maxInclDeep
|
||||
return this
|
||||
|
||||
//*******************************************************************
|
||||
implement openIncludeFile(filename)
|
||||
// Ret: 0: siker<65>lt, 1: nyit si hiba, 2: nem tal lhat¢, 3: t£l sok
|
||||
// egym sba skatuly z s.
|
||||
// Ha a name tartalmaz path-t, akkor megn‚zi a kurrens direktoriban
|
||||
// is, egy‚bk‚nt pedig csak az includeList-ben.
|
||||
|
||||
local fr,l
|
||||
|
||||
if (this:maxInclDeep>0 .and.;
|
||||
len(LREADER.(this:lreader):readerStack)>=this:maxInclDeep)
|
||||
return 3
|
||||
endif
|
||||
|
||||
// Œgy k‚tszer is j”n hiba<62>zenet, egyszer az freader-t“l, egyszer
|
||||
// pedig a hparser-t“l, de ez nem baj.
|
||||
// Mj.: Ha csak egy <20>zenetet akarunk, akkor az freader
|
||||
// hiba<62>zeneteit ‚rtelmezni kell, ‚s hparser(include)
|
||||
// hiba<62>zenetekk‚ alak¡tani.
|
||||
fr:=C.FREADER:onew(LREADER.(this:lreader):errorStream)
|
||||
|
||||
l:=len(FREADER.fr:errorStream)
|
||||
|
||||
if (!dirFName(filename)=="")
|
||||
FREADER.fr:dOpen({""},filename)
|
||||
if (FREADER.fr:isError(l))
|
||||
// Nem siker<65>lt megnyitni.
|
||||
return 1
|
||||
endif
|
||||
endif
|
||||
|
||||
if (!FREADER.fr:isOpen())
|
||||
FREADER.fr:dOpen(this:includeList,filename)
|
||||
endif
|
||||
|
||||
if (FREADER.fr:isError(l))
|
||||
// Nem siker<65>lt megnyitni.
|
||||
return 1
|
||||
endif
|
||||
|
||||
if (!FREADER.fr:isOpen())
|
||||
return 2
|
||||
endif
|
||||
|
||||
// Itt kell bef–zni a l ncba.
|
||||
|
||||
LREADER.(this:lreader):pushReader(fr)
|
||||
|
||||
PDEBUG(outstd("include: "+filename))
|
||||
|
||||
return 0
|
||||
//*******************************************************************
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1,61 +0,0 @@
|
||||
//
|
||||
// $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<67>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 <<3C>res>-re v ltoztatja.
|
||||
// - Az egym s ut n k”vetkez“ <<3C>res>-eket ”sszevonja.
|
||||
// - Megcsin lja a k”vetkez“ ”sszevon st.
|
||||
// Az <Łjsor>-t a fil‚ eleje is helyettesˇtheti.
|
||||
//
|
||||
// <Łjsor> <sor> ';' [<<3C>res>] <Łjsor> <<3C>res2> <ntoken> ==>
|
||||
// <Łjsor> <Łjsor> <sor> ' ' <ntoken>
|
||||
//
|
||||
// <Łjsor> <sor> ';' [<<3C>res>] <Łjsor> <ntoken> ==>
|
||||
// <Łjsor> <Łjsor> <sor> <ntoken>
|
||||
//
|
||||
// A <sor> b rmilyen token sorozat lehet, amiben nem szerepel
|
||||
// ';' ‚s <Łjsor>.
|
||||
//
|
||||
// A <ntoken> b rmilyen token lehet, kiv‚ve az <<3C>res> tokent.
|
||||
//
|
||||
// Ha egy sor <20>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)
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1,286 +0,0 @@
|
||||
// LPARSER.och oszt ly implement ci¢.
|
||||
// Gener lva: 1999.06.10, 14:40:07, OBJCCC v2.2.03
|
||||
// Meta oszt ly defin¡ci¢: Van
|
||||
|
||||
|
||||
#ifndef CA_PARSER_N
|
||||
#ifdef _STRICT_PARENT_
|
||||
#ifdef _CA_CM_ONLY_
|
||||
#include "PARSER.och"
|
||||
#else // _CA_CM_ONLY_
|
||||
#define _CA_CM_ONLY_
|
||||
#include "PARSER.och"
|
||||
#undef _CA_CM_ONLY_
|
||||
#endif // _CA_CM_ONLY_
|
||||
#else
|
||||
#include "PARSER.och"
|
||||
#endif // _STRICT_PARENT_
|
||||
#endif // CA_PARSER_N
|
||||
|
||||
#ifndef _CA_CM_ONLY_
|
||||
#ifndef _LPARSER_OCH_
|
||||
#define _LPARSER_OCH_
|
||||
|
||||
|
||||
#xtranslate LPARSER.<obj>:name => <obj>\[CA_OBJECT_N+1\]
|
||||
#xtranslate LPARSER.<obj>:errorstream => <obj>\[CA_OBJECT_N+2\]
|
||||
#xtranslate LPARSER.<obj>:tbuffer => <obj>\[CA_OBJECT_N+3\]
|
||||
#xtranslate LPARSER.<obj>:inputreader => <obj>\[CA_READER_N+1\]
|
||||
#xtranslate LPARSER.<obj>:item => <obj>\[CA_TREADER_N+1\]
|
||||
#xtranslate LPARSER.<obj>:parserbuffer => <obj>\[CA_TREADER_N+2\]
|
||||
|
||||
|
||||
#xtranslate LPARSER.<obj>:oinit => (OBJGEN.(<obj>):(4))
|
||||
#xtranslate LPARSER.<obj>:getclass => (OBJGEN.(<obj>):(5))
|
||||
#xtranslate LPARSER.<obj>:isclass => (OBJGEN.(<obj>):(6))
|
||||
#xtranslate LPARSER.<obj>:getattrib => (OBJGEN.(<obj>):(7))
|
||||
#xtranslate LPARSER.<obj>:setattrib => (OBJGEN.(<obj>):(8))
|
||||
#xtranslate LPARSER.<obj>:read => (OBJGEN.(<obj>):(CM_OBJECT_N+1))
|
||||
#xtranslate LPARSER.<obj>:unread => (OBJGEN.(<obj>):(CM_OBJECT_N+2))
|
||||
#xtranslate LPARSER.<obj>:readtbuffer => (OBJGEN.(<obj>):(CM_OBJECT_N+3))
|
||||
#xtranslate LPARSER.<obj>:arraytbuffer => (OBJGEN.(<obj>):(CM_OBJECT_N+4))
|
||||
#xtranslate LPARSER.<obj>:readitem => (OBJGEN.(<obj>):(CM_OBJECT_N+5))
|
||||
#xtranslate LPARSER.<obj>:iserror => (OBJGEN.(<obj>):(CM_OBJECT_N+6))
|
||||
#xtranslate LPARSER.<obj>:adderror => (OBJGEN.(<obj>):(CM_OBJECT_N+7))
|
||||
#xtranslate LPARSER.<obj>:destruct => (OBJGEN.(<obj>):(CM_OBJECT_N+8))
|
||||
#xtranslate LPARSER.<obj>:readinput => (OBJGEN.(<obj>):(CM_READER_N+1))
|
||||
#xtranslate LPARSER.<obj>:unreadinput => (OBJGEN.(<obj>):(CM_READER_N+2))
|
||||
#xtranslate LPARSER.<obj>:addinputreader => (OBJGEN.(<obj>):(CM_READER_N+3))
|
||||
#xtranslate LPARSER.<obj>:putparserbuffer => (OBJGEN.(<obj>):(CM_TREADER_N+1))
|
||||
#xtranslate LPARSER.<obj>:getparserbuffer => (OBJGEN.(<obj>):(CM_TREADER_N+2))
|
||||
#xtranslate LPARSER.<obj>:unputparserbuffer => (OBJGEN.(<obj>):(CM_TREADER_N+3))
|
||||
#xtranslate LPARSER.<obj>:ungetparserbuffer => (OBJGEN.(<obj>):(CM_TREADER_N+4))
|
||||
#xtranslate LPARSER.<obj>:clearparserbuffer => (OBJGEN.(<obj>):(CM_TREADER_N+5))
|
||||
#xtranslate LPARSER.<obj>:rds => (OBJGEN.(<obj>):(CM_TREADER_N+6))
|
||||
#xtranslate LPARSER.<obj>:unrds => (OBJGEN.(<obj>):(CM_TREADER_N+7))
|
||||
#xtranslate LPARSER.<obj>:strparserbuffer => (OBJGEN.(<obj>):(CM_TREADER_N+8))
|
||||
#xtranslate LPARSER.<obj>:arrayparserbuffer => (OBJGEN.(<obj>):(CM_TREADER_N+9))
|
||||
|
||||
|
||||
|
||||
// ™r”k”lve: readinput()
|
||||
// Specifik lva: readline()
|
||||
// ™r”k”lve: readitem()
|
||||
|
||||
// ™r”k”lve: readinput()
|
||||
#xtranslate LPARSER.<obj>:readline => (OBJGEN.(<obj>):(CM_PARSER_N+1))
|
||||
// ™r”k”lve: readitem()
|
||||
|
||||
#endif // _LPARSER_OCH_
|
||||
#endif // _CA_CM_ONLY_
|
||||
|
||||
#ifndef CA_LPARSER_N
|
||||
#define CA_LPARSER_N CA_PARSER_N+0
|
||||
#define CM_LPARSER_N CM_PARSER_N+1
|
||||
#endif // CA_LPARSER_N
|
||||
|
||||
#ifndef _CA_CM_ONLY_
|
||||
#ifndef _LPARSERCLASS_OCH_
|
||||
#define _LPARSERCLASS_OCH_
|
||||
|
||||
**********************************************************************
|
||||
#xtranslate C.LPARSER:<m> => (LPARSERCLASS.clLPARSER():<m>)
|
||||
#xtranslate C.LPARSER:self() => (clLPARSER())
|
||||
|
||||
|
||||
#xtranslate LPARSERCLASS.<obj>:parent => <obj>\[CA_OBJECT_N+1\]
|
||||
#xtranslate LPARSERCLASS.<obj>:name => <obj>\[CA_OBJECT_N+2\]
|
||||
#xtranslate LPARSERCLASS.<obj>:objsize => <obj>\[CA_OBJECT_N+3\]
|
||||
#xtranslate LPARSERCLASS.<obj>:attribs => <obj>\[CA_OBJECT_N+4\]
|
||||
#xtranslate LPARSERCLASS.<obj>:methods => <obj>\[CA_OBJECT_N+5\]
|
||||
#xtranslate LPARSERCLASS.<obj>:classid => <obj>\[CA_OBJECT_N+6\]
|
||||
#xtranslate LPARSERCLASS.<obj>:parentclassids => <obj>\[CA_OBJECT_N+7\]
|
||||
#xtranslate LPARSERCLASS.<obj>:amblock => <obj>\[CA_OBJECT_N+8\]
|
||||
#xtranslate LPARSERCLASS.<obj>:methodsblock => <obj>\[CA_OBJECT_N+9\]
|
||||
#xtranslate LPARSERCLASS.<obj>:objmethodsimplement => <obj>\[CA_OBJECT_N+10\]
|
||||
|
||||
|
||||
#xtranslate LPARSERCLASS.<obj>:oinit => (OBJGEN.(<obj>):(4))
|
||||
#xtranslate LPARSERCLASS.<obj>:getclass => (OBJGEN.(<obj>):(5))
|
||||
#xtranslate LPARSERCLASS.<obj>:isclass => (OBJGEN.(<obj>):(6))
|
||||
#xtranslate LPARSERCLASS.<obj>:getattrib => (OBJGEN.(<obj>):(7))
|
||||
#xtranslate LPARSERCLASS.<obj>:setattrib => (OBJGEN.(<obj>):(8))
|
||||
#xtranslate LPARSERCLASS.<obj>:onew => (OBJGEN.(<obj>):(CM_OBJECT_N+1))
|
||||
#xtranslate LPARSERCLASS.<obj>:ocreate => (OBJGEN.(<obj>):(CM_OBJECT_N+2))
|
||||
#xtranslate LPARSERCLASS.<obj>:rawoinit => (OBJGEN.(<obj>):(CM_OBJECT_N+3))
|
||||
#xtranslate LPARSERCLASS.<obj>:oinitclass => (OBJGEN.(<obj>):(CM_OBJECT_N+4))
|
||||
#xtranslate LPARSERCLASS.<obj>:getmethodsimplement => (OBJGEN.(<obj>):(CM_OBJECT_N+5))
|
||||
#xtranslate LPARSERCLASS.<obj>:attribidx => (OBJGEN.(<obj>):(CM_OBJECT_N+6))
|
||||
#xtranslate LPARSERCLASS.<obj>:needclassid => (OBJGEN.(<obj>):(CM_OBJECT_N+7))
|
||||
#xtranslate LPARSERCLASS.<obj>:isinheritfrom => (OBJGEN.(<obj>):(CM_OBJECT_N+8))
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#endif // _LPARSERCLASS_OCH_
|
||||
#endif // _CA_CM_ONLY_
|
||||
|
||||
#ifndef CA_LPARSERCLASS_N
|
||||
#define CA_LPARSERCLASS_N CA_PARSERCLASS_N+0
|
||||
#define CM_LPARSERCLASS_N CM_PARSERCLASS_N+0
|
||||
#endif // CA_LPARSERCLASS_N
|
||||
|
||||
|
||||
**********************************************************************
|
||||
#ifdef _LPARSER_PRG_
|
||||
#ifndef _LPARSER_PRG_OCH_
|
||||
#define _LPARSER_PRG_OCH_
|
||||
|
||||
|
||||
**********************************************************************
|
||||
#xtranslate othis:<m> => LPARSER.(othis):<m>
|
||||
#xtranslate thisclass:<m> => LPARSERCLASS.(this:getClass()):<m>
|
||||
#define CTHIS LPARSER
|
||||
|
||||
|
||||
**********************************************************************
|
||||
#xtranslate this:<m> => LPARSER.(this):<m>
|
||||
|
||||
#xcommand implement readinput() => static function readinput(this)
|
||||
#xcommand implement readline() => static function readline(this)
|
||||
#xcommand implement readitem() => static function readitem(this)
|
||||
|
||||
#ifdef _IMPLEMENT_EXPORT_
|
||||
#xcommand implement export readinput() => function readinput(this)
|
||||
#xcommand implement export readline() => function readline(this)
|
||||
#xcommand implement export readitem() => function readitem(this)
|
||||
#endif // _IMPLEMENT_EXPORT_
|
||||
|
||||
#xtranslate super:oinit => (OBJGENM.(eval(BEHAVIOR.clPARSER():objmethodsimplement)).(this):(4))
|
||||
#xtranslate super:getclass => (OBJGENM.(eval(BEHAVIOR.clPARSER():objmethodsimplement)).(this):(5))
|
||||
#xtranslate super:isclass => (OBJGENM.(eval(BEHAVIOR.clPARSER():objmethodsimplement)).(this):(6))
|
||||
#xtranslate super:getattrib => (OBJGENM.(eval(BEHAVIOR.clPARSER():objmethodsimplement)).(this):(7))
|
||||
#xtranslate super:setattrib => (OBJGENM.(eval(BEHAVIOR.clPARSER():objmethodsimplement)).(this):(8))
|
||||
#xtranslate super:read => (OBJGENM.(eval(BEHAVIOR.clPARSER():objmethodsimplement)).(this):(CM_OBJECT_N+1))
|
||||
#xtranslate super:unread => (OBJGENM.(eval(BEHAVIOR.clPARSER():objmethodsimplement)).(this):(CM_OBJECT_N+2))
|
||||
#xtranslate super:readtbuffer => (OBJGENM.(eval(BEHAVIOR.clPARSER():objmethodsimplement)).(this):(CM_OBJECT_N+3))
|
||||
#xtranslate super:arraytbuffer => (OBJGENM.(eval(BEHAVIOR.clPARSER():objmethodsimplement)).(this):(CM_OBJECT_N+4))
|
||||
#xtranslate super:readitem => (OBJGENM.(eval(BEHAVIOR.clPARSER():objmethodsimplement)).(this):(CM_OBJECT_N+5))
|
||||
#xtranslate super:iserror => (OBJGENM.(eval(BEHAVIOR.clPARSER():objmethodsimplement)).(this):(CM_OBJECT_N+6))
|
||||
#xtranslate super:adderror => (OBJGENM.(eval(BEHAVIOR.clPARSER():objmethodsimplement)).(this):(CM_OBJECT_N+7))
|
||||
#xtranslate super:destruct => (OBJGENM.(eval(BEHAVIOR.clPARSER():objmethodsimplement)).(this):(CM_OBJECT_N+8))
|
||||
#xtranslate super:readinput => (OBJGENM.(eval(BEHAVIOR.clPARSER():objmethodsimplement)).(this):(CM_READER_N+1))
|
||||
#xtranslate super:unreadinput => (OBJGENM.(eval(BEHAVIOR.clPARSER():objmethodsimplement)).(this):(CM_READER_N+2))
|
||||
#xtranslate super:addinputreader => (OBJGENM.(eval(BEHAVIOR.clPARSER():objmethodsimplement)).(this):(CM_READER_N+3))
|
||||
#xtranslate super:putparserbuffer => (OBJGENM.(eval(BEHAVIOR.clPARSER():objmethodsimplement)).(this):(CM_TREADER_N+1))
|
||||
#xtranslate super:getparserbuffer => (OBJGENM.(eval(BEHAVIOR.clPARSER():objmethodsimplement)).(this):(CM_TREADER_N+2))
|
||||
#xtranslate super:unputparserbuffer => (OBJGENM.(eval(BEHAVIOR.clPARSER():objmethodsimplement)).(this):(CM_TREADER_N+3))
|
||||
#xtranslate super:ungetparserbuffer => (OBJGENM.(eval(BEHAVIOR.clPARSER():objmethodsimplement)).(this):(CM_TREADER_N+4))
|
||||
#xtranslate super:clearparserbuffer => (OBJGENM.(eval(BEHAVIOR.clPARSER():objmethodsimplement)).(this):(CM_TREADER_N+5))
|
||||
#xtranslate super:rds => (OBJGENM.(eval(BEHAVIOR.clPARSER():objmethodsimplement)).(this):(CM_TREADER_N+6))
|
||||
#xtranslate super:unrds => (OBJGENM.(eval(BEHAVIOR.clPARSER():objmethodsimplement)).(this):(CM_TREADER_N+7))
|
||||
#xtranslate super:strparserbuffer => (OBJGENM.(eval(BEHAVIOR.clPARSER():objmethodsimplement)).(this):(CM_TREADER_N+8))
|
||||
#xtranslate super:arrayparserbuffer => (OBJGENM.(eval(BEHAVIOR.clPARSER():objmethodsimplement)).(this):(CM_TREADER_N+9))
|
||||
|
||||
**********************************************************************
|
||||
static function setCMethods(pOsztaly)
|
||||
// Egy t”mb”t felt”lt az oszt ly m–veleti blokkjaival.
|
||||
pOsztaly[(CM_READER_N+1)]:={|this| readinput(this)}
|
||||
pOsztaly[(CM_PARSER_N+1)]:={|this| readline(this)}
|
||||
pOsztaly[(CM_OBJECT_N+5)]:={|this| readitem(this)}
|
||||
return pOsztaly
|
||||
|
||||
**********************************************************************
|
||||
static function setCams(ta,tm)
|
||||
// Egy t”mb”t felt”lt az oszt ly ltal def. objektumok attrib£tumaival ‚s m–veleteivel.
|
||||
|
||||
tm[(CM_READER_N+1)-CM_NIL_N] := {(CM_READER_N+1),'readinput','',nil}
|
||||
tm[(CM_PARSER_N+1)-CM_NIL_N] := {(CM_PARSER_N+1),'readline','',nil}
|
||||
tm[(CM_OBJECT_N+5)-CM_NIL_N] := {(CM_OBJECT_N+5),'readitem','',nil}
|
||||
return nil
|
||||
|
||||
#ifndef _NO_CLLPARSER_
|
||||
#ifdef _STRICT_PARENT_
|
||||
#ifdef _CA_CM_ONLY_
|
||||
#include "meta.och"
|
||||
#else // _CA_CM_ONLY_
|
||||
#define _CA_CM_ONLY_
|
||||
#include "meta.och"
|
||||
#undef _CA_CM_ONLY_
|
||||
#endif // _CA_CM_ONLY_
|
||||
#else
|
||||
#include "meta.och"
|
||||
#endif // _STRICT_PARENT_
|
||||
**********************************************************************
|
||||
function clLPARSER()
|
||||
// El“szedi az oszt lyt. (class)
|
||||
static osztaly
|
||||
if (osztaly==nil)
|
||||
osztaly:=META.mcLPARSERCLASS():onew(;
|
||||
clPARSER(),;
|
||||
"LPARSER",;
|
||||
CA_LPARSER_N,;
|
||||
CM_LPARSER_N,;
|
||||
{|ta,tm|setCams(ta,tm)},;
|
||||
{|t|setCMethods(t)})
|
||||
endif
|
||||
return osztaly
|
||||
#endif // _NO_CLLPARSER_
|
||||
|
||||
#ifndef _NO_LPARSERCLASS_
|
||||
|
||||
**********************************************************************
|
||||
#xtranslate class:<m> => LPARSERCLASS.(class):<m>
|
||||
|
||||
|
||||
#ifdef _IMPLEMENT_EXPORT_
|
||||
#endif // _IMPLEMENT_EXPORT_
|
||||
|
||||
#xtranslate superclass:oinit => (OBJGENM.(eval(BEHAVIOR.mcPARSERCLASS():objmethodsimplement)).(class):(4))
|
||||
#xtranslate superclass:getclass => (OBJGENM.(eval(BEHAVIOR.mcPARSERCLASS():objmethodsimplement)).(class):(5))
|
||||
#xtranslate superclass:isclass => (OBJGENM.(eval(BEHAVIOR.mcPARSERCLASS():objmethodsimplement)).(class):(6))
|
||||
#xtranslate superclass:getattrib => (OBJGENM.(eval(BEHAVIOR.mcPARSERCLASS():objmethodsimplement)).(class):(7))
|
||||
#xtranslate superclass:setattrib => (OBJGENM.(eval(BEHAVIOR.mcPARSERCLASS():objmethodsimplement)).(class):(8))
|
||||
#xtranslate superclass:onew => (OBJGENM.(eval(BEHAVIOR.mcPARSERCLASS():objmethodsimplement)).(class):(CM_OBJECT_N+1))
|
||||
#xtranslate superclass:ocreate => (OBJGENM.(eval(BEHAVIOR.mcPARSERCLASS():objmethodsimplement)).(class):(CM_OBJECT_N+2))
|
||||
#xtranslate superclass:rawoinit => (OBJGENM.(eval(BEHAVIOR.mcPARSERCLASS():objmethodsimplement)).(class):(CM_OBJECT_N+3))
|
||||
#xtranslate superclass:oinitclass => (OBJGENM.(eval(BEHAVIOR.mcPARSERCLASS():objmethodsimplement)).(class):(CM_OBJECT_N+4))
|
||||
#xtranslate superclass:getmethodsimplement => (OBJGENM.(eval(BEHAVIOR.mcPARSERCLASS():objmethodsimplement)).(class):(CM_OBJECT_N+5))
|
||||
#xtranslate superclass:attribidx => (OBJGENM.(eval(BEHAVIOR.mcPARSERCLASS():objmethodsimplement)).(class):(CM_OBJECT_N+6))
|
||||
#xtranslate superclass:needclassid => (OBJGENM.(eval(BEHAVIOR.mcPARSERCLASS():objmethodsimplement)).(class):(CM_OBJECT_N+7))
|
||||
#xtranslate superclass:isinheritfrom => (OBJGENM.(eval(BEHAVIOR.mcPARSERCLASS():objmethodsimplement)).(class):(CM_OBJECT_N+8))
|
||||
|
||||
**********************************************************************
|
||||
static function setMCMethods(pOsztaly)
|
||||
// Egy t”mb”t felt”lt a metaoszt ly m–veleti blokkjaival.
|
||||
return pOsztaly
|
||||
|
||||
**********************************************************************
|
||||
static function setMCams(ta,tm)
|
||||
// Egy t”mb”t felt”lt a metaoszt ly ltal def. objektumok attrib£tumaival ‚s m–veleteivel.
|
||||
|
||||
return nil
|
||||
|
||||
**********************************************************************
|
||||
#ifndef _NO_MCLPARSERCLASS_
|
||||
#ifdef _STRICT_PARENT_
|
||||
#ifdef _CA_CM_ONLY_
|
||||
#include "meta.och" // "metaclas.och"
|
||||
#else // _CA_CM_ONLY_
|
||||
#define _CA_CM_ONLY_
|
||||
#include "meta.och" // "metaclas.och"
|
||||
#undef _CA_CM_ONLY_
|
||||
#endif // _CA_CM_ONLY_
|
||||
#else
|
||||
#include "meta.och" // "metaclas.och"
|
||||
#endif // _STRICT_PARENT_
|
||||
function mcLPARSERCLASS()
|
||||
// El“szedi az oszt ly metaoszt ly t. (metaclass)
|
||||
static metaOsztaly
|
||||
if (metaOsztaly==nil)
|
||||
metaOsztaly:=META.clMETA():onew(;
|
||||
mcPARSERCLASS(),;
|
||||
"LPARSERCLASS",;
|
||||
CA_LPARSERCLASS_N,;
|
||||
CM_LPARSERCLASS_N,;
|
||||
{|ta,tm|setMCams(ta,tm)},;
|
||||
{|t|setMCMethods(t)})
|
||||
endif
|
||||
return metaOsztaly
|
||||
#endif // _NO_MCLPARSERCLASS_
|
||||
|
||||
#endif // _NO_LPARSERCLASS_
|
||||
**********************************************************************
|
||||
#endif // _LPARSER_PRG_OCH_
|
||||
#endif // _LPARSER_PRG_
|
||||
@@ -1,283 +0,0 @@
|
||||
/*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
//*******************************************************************
|
||||
// lparser.prg: Az lparser oszt ly implement ci¢ja.
|
||||
// 1999, Csisz r Levente
|
||||
/*
|
||||
Sor elemz“. A TREADER-t“l ”r”k”l.
|
||||
Ez az elemz“ vonja ”ssze a folytat¢ sorokat.
|
||||
Sajnos a h<>lye spec. miatt £gy nem lehet meg¡rni, hogy
|
||||
folyamatosan elemezzen, mert a spec. a sor”sszevon sok ut n
|
||||
az <20>res sorokat az ”sszevon s eredm‚nyek‚nt l‚trej”tt sor EL<45>
|
||||
teszi, ¡gy be kell olvasni az eg‚sz sort, hogy ezt mi is
|
||||
megtehess<73>k.
|
||||
—gy m–k”dik, hogy beolvas egy teljes sort, majd megn‚zi hogy
|
||||
kell-e ”sszevonni. Ha nem, akkor abb¢l ad, m¡g el nem fogy,
|
||||
ha igen, akkor a v‚g‚hez hozz olvassa a k”vetkez“ sort, etc.
|
||||
Amikor token-t ad, akkor vagy <20>res, vagy az olvasott sor m‚g be
|
||||
nem olvasott r‚sz‚t t rolja a sorv‚gjellel egy<67>tt.
|
||||
*/
|
||||
|
||||
#include "objgen.ch"
|
||||
|
||||
//*******************************************************************
|
||||
#include "tbuffer.och"
|
||||
#include "creader.och"
|
||||
#include "token.och"
|
||||
|
||||
//*******************************************************************
|
||||
#include "cr_lf.ch"
|
||||
#include "ctoken.ch"
|
||||
|
||||
//*******************************************************************
|
||||
#define _LPARSER_PRG_
|
||||
#define _IMPLEMENT_ONEW_
|
||||
|
||||
#include "lparser.och"
|
||||
|
||||
//*******************************************************************
|
||||
#define isNullChar(t) ((t)!=nil .and.;
|
||||
TOKEN.(t):id==TKID_CHAR .and.;
|
||||
TOKEN.(t):str=="")
|
||||
|
||||
//*******************************************************************
|
||||
implement readItem()
|
||||
// A nullChar-okat eldobja.
|
||||
local w
|
||||
|
||||
while(.t.)
|
||||
if (nil==(w:=this:getParserBuffer()))
|
||||
this:readLine()
|
||||
w:=this:getParserBuffer()
|
||||
endif
|
||||
if (!isNullChar(w))
|
||||
exit
|
||||
endif
|
||||
end while
|
||||
|
||||
return w
|
||||
|
||||
//*******************************************************************
|
||||
implement readInput()
|
||||
// A #line-okat itt kell lejjebb sz ll¡tani.
|
||||
// Az ut nuk j”v“ <20>res sorokat t”r”lni kell, a sor sz m ‚rt‚k‚t
|
||||
// pedig a t”r”lt sorok sz m val megn”velni.
|
||||
local t,tkId
|
||||
local bos,line,iLine,i
|
||||
|
||||
while(nil!=(t:=super:readInput()))
|
||||
tkId:=TOKEN.t:id
|
||||
if (tkId==TKID_BOS .and.;
|
||||
left(TOKEN.t:str,5)=="#line" .and.;
|
||||
TOKEN.t:line>1)
|
||||
// Lejjebb sz ll¡t s indul
|
||||
bos:=t
|
||||
line:={}
|
||||
iLine:=TOKEN.t:line
|
||||
while(nil!=(t:=super:readInput()))
|
||||
if (TOKEN.t:id==TKID_URES)
|
||||
aadd(line,t)
|
||||
elseif (TOKEN.t:id==TKID_UJSOR)
|
||||
line:={}
|
||||
iLine++
|
||||
else
|
||||
super:unreadInput(t)
|
||||
for i:=len(line) to 1 step -1
|
||||
super:unreadInput(line[i])
|
||||
end for
|
||||
TOKEN.bos:str:=makeHSLineStr(TOKEN.bos:file,iLine)
|
||||
return bos
|
||||
endif
|
||||
end while
|
||||
endif
|
||||
if !(tkId==TKID_PPCOMMENT .or. tkId==TKID_CSCOMMENT)
|
||||
exit
|
||||
endif
|
||||
end while
|
||||
return t
|
||||
|
||||
//*******************************************************************
|
||||
#define ST_START 0
|
||||
// #define ST_URES 1
|
||||
#define ST_PVESSZO 2
|
||||
#define ST_PVESSZO_URES 3
|
||||
#define ST_PVESSZO_UJSOR 4
|
||||
#define ST_PVESSZO_UJSOR_URES 5
|
||||
|
||||
implement readLine()
|
||||
// Amikor h¡vj k a parserBuffer-nek <20>resnek kell lennie.
|
||||
// Beolvas egy teljes sort, az egy soros megjegyz‚seket eldobja,
|
||||
// a t”bb sorosakat feldolgozza, a folytat¢ sorokat ”sszevonja.
|
||||
// A folytat¢ sorokat £gy vonja ”ssze, hogy annyi £j sort rak a sor
|
||||
// el‚, amennyit sort ”sszevont.
|
||||
// Mj.: Az <20>reseket nem vonja ”ssze.
|
||||
local tkId,t,i
|
||||
local state, numUres,nSor:={}
|
||||
|
||||
state:=ST_START
|
||||
this:rds()
|
||||
while(this:item!=nil)
|
||||
tkId:=TOKEN.(this:item):id
|
||||
/* A PPCOMMENT-et ‚s a CSCOMMENT-et m r a readinput-ban eldobjuk.
|
||||
if (tkId==TKID_CSCOMMENT .or. tkId==TKID_PPCOMMENT)
|
||||
// Eldobjuk.
|
||||
this:unputParserBuffer()
|
||||
this:item:=nil
|
||||
else
|
||||
*/
|
||||
if (tkId==TKID_PCCOMMENT)
|
||||
// A puffer elej‚re annyi £j sort kell besz£rni, mint
|
||||
// ah ny itt van.
|
||||
for i:=1 to xnumat(CHAR_LF,TOKEN.(this:item):str)
|
||||
this:ungetParserBuffer(;
|
||||
TOKEN.(this:item):copyToken(TKID_UJSOR,guessedEOL()))
|
||||
end for
|
||||
// Maga a megjegyz‚s nem kell, eldobjuk.
|
||||
this:unputParserBuffer()
|
||||
// A hely‚re egy 'semmi' karaktert rakunk, mert ezt pl ';'
|
||||
// ut n ‚rt‚kesnek kell tekinteni.
|
||||
this:putParserBuffer(TOKEN.(this:item):copyToken(TKID_CHAR,""))
|
||||
this:unrds()
|
||||
elseif (state==ST_START)
|
||||
if (tkId==TKID_UJSOR .or. tkId==TKID_BOS .or. tkId==TKID_EOS)
|
||||
exit
|
||||
// elseif (tkId==TKID_URES)
|
||||
// state:=ST_URES
|
||||
elseif (tkId==TKID_CHAR .and. TOKEN.(this:item):str==";")
|
||||
state:=ST_PVESSZO
|
||||
endif
|
||||
elseif (state==ST_PVESSZO)
|
||||
if (tkId==TKID_UJSOR .or. tkId==TKID_BOS .or. tkId==TKID_EOS)
|
||||
// Az £j sort ‚s a pontosvessz“t el kell dobni.
|
||||
aadd(nSor,this:item)
|
||||
this:unputParserBuffer()
|
||||
this:unputParserBuffer()
|
||||
state:=ST_PVESSZO_UJSOR
|
||||
elseif (tkId==TKID_URES)
|
||||
// Ezt el kell tenni, ‚s ha egy £j sor j”tt, akkor el
|
||||
// kell dobni.
|
||||
numUres:=1
|
||||
state:=ST_PVESSZO_URES
|
||||
else
|
||||
// Pontosvessz“ ut n valami ‚rt‚kes. Vissza a startba.
|
||||
// Mj.: Ide tartozik a pontosvessz“ ut ni pontosvessz“ is.
|
||||
state:=ST_START
|
||||
endif
|
||||
elseif (state==ST_PVESSZO_URES)
|
||||
if (tkId==TKID_UJSOR .or. tkId==TKID_BOS .or. tkId==TKID_EOS)
|
||||
// Az £j sort eldobjuk
|
||||
aadd(nSor,this:item)
|
||||
this:unputParserBuffer()
|
||||
// šreseket eldobjuk.
|
||||
|
||||
while(numUres>0)
|
||||
this:unputParserBuffer()
|
||||
numUres--
|
||||
end while
|
||||
|
||||
// A pontosvessz“t eldobjuk.
|
||||
this:unputParserBuffer()
|
||||
state:=ST_PVESSZO_UJSOR
|
||||
|
||||
elseif (tkId==TKID_URES)
|
||||
// Ezt el kell tenni, ‚s ha egy £j sor j”tt, akkor el
|
||||
// kell dobni.
|
||||
numUres++
|
||||
else
|
||||
// Pontosvessz“ ut n valami ‚rt‚kes. Vissza a startba.
|
||||
// Mj.: Ide tartozik a pontosvessz“ ut ni pontosvessz“ is.
|
||||
state:=ST_START
|
||||
endif
|
||||
elseif (state==ST_PVESSZO_UJSOR)
|
||||
// Ez a folytat¢ sor.
|
||||
if (tkId==TKID_UJSOR .or. tkId==TKID_BOS .or. tkId==TKID_EOS)
|
||||
exit
|
||||
elseif (tkId==TKID_URES)
|
||||
// Ezt egy darab space-ra kell helyettes¡teni.
|
||||
t:=TOKEN.(this:item):copyToken(TKID_URES,space(1))
|
||||
this:unputParserBuffer()
|
||||
this:putParserBuffer(t)
|
||||
this:item:=t
|
||||
state:=ST_PVESSZO_UJSOR_URES
|
||||
elseif (tkId==TKID_CHAR .and. TOKEN.(this:item):str==";")
|
||||
state:=ST_PVESSZO
|
||||
else
|
||||
state:=ST_START
|
||||
endif
|
||||
elseif (state==ST_PVESSZO_UJSOR_URES)
|
||||
if (tkId==TKID_UJSOR .or. tkId==TKID_BOS .or. tkId==TKID_EOS)
|
||||
exit
|
||||
elseif (tkId==TKID_URES)
|
||||
// Ezt el kell dobni.
|
||||
this:unputParserBuffer()
|
||||
else
|
||||
this:unrds()
|
||||
state:=ST_START
|
||||
endif
|
||||
// if (tkId==TKID_CHAR .and. TOKEN.(this:item):str==";")
|
||||
// state:=ST_PVESSZO
|
||||
// else
|
||||
// state:=ST_START
|
||||
// endif
|
||||
else
|
||||
? "LPARSER:readline(): Ismeretlen llapot: ",state
|
||||
errorlevel(1)
|
||||
quit
|
||||
endif
|
||||
this:rds()
|
||||
end while
|
||||
aeval(nSor,{|x| this:ungetParserBuffer(x)})
|
||||
return nil
|
||||
|
||||
#ifdef OLD
|
||||
if (2<=(n:=TBUFFER.(this:parserBuffer):bItemNumber))
|
||||
utolsoUres:=;
|
||||
TKID_URES==tkId(TBUFFER.(this:parserBuffer):getBItem(n-1))
|
||||
else
|
||||
utolsoUres:=.f.
|
||||
endif
|
||||
|
||||
while(this:item!=nil)
|
||||
tkId:=TOKEN.(this:item):id
|
||||
if (tkId==TKID_UJSOR .or. tkId==TKID_BOS .or. tkId==TKID_EOS)
|
||||
// Itt kell elint‚zni a sor ”sszevon sokat. Sort akkor kell
|
||||
// ”sszevonni, ha a pufferben (az <20>resek ‚s az £j sor kiv‚tel‚vel)
|
||||
// az utols¢ token egy ';'.
|
||||
// Ekkor a ';'-t t”r”lj<6C>k, ‚s ha ut na <20>res j”n (majd), akkor azt
|
||||
// egy ' '-re helyettes¡tj<74>k (el‚g fura specifik ci¢, nemdeb r? ;)
|
||||
// Itt kell elint‚zni a sor ”sszevon sokat.
|
||||
exit
|
||||
endif
|
||||
if (tkId==TKID_PCCOMMENT)
|
||||
// A puffer elej‚re annyi £j sort kell besz£rni, mint
|
||||
// ah ny itt van.
|
||||
for i:=1 to xnumat(CHAR_LF,TOKEN.(this:item):str)
|
||||
this:ungetParserBuffer(;
|
||||
TOKEN.(this:item):copyToken(TKID_UJSOR,guessedEOL()))
|
||||
end for
|
||||
// Maga a megjegyz‚s nem kell, eldobjuk.
|
||||
this:unputParserBuffer()
|
||||
this:item:=nil
|
||||
elseif (tkId==TKID_URES .and. utolsoUres)
|
||||
// Az ez el“tti is <20>res, a kett“t ”ssze kell vonni.
|
||||
n:=TBUFFER.(this:parserBuffer):bItemNumber
|
||||
w:=TBUFFER.(this:parserBuffer):getBItem(n-1)
|
||||
// ™sszevonjuk.
|
||||
t:=TOKEN.w:copyToken(TKID_URES,;
|
||||
TOKEN.w:str+TOKEN.(this:item):str)
|
||||
this:unputParserBuffer()
|
||||
this:unputParserBuffer()
|
||||
this:putParserBuffer(t)
|
||||
endif
|
||||
if (this:item!=nil)
|
||||
utolsoUres:=tkId==TKID_URES
|
||||
endif
|
||||
this:rds()
|
||||
end while
|
||||
return nil
|
||||
#endif
|
||||
|
||||
//*******************************************************************
|
||||
|
||||
@@ -1,81 +0,0 @@
|
||||
//
|
||||
// $Id$
|
||||
//
|
||||
|
||||
//*******************************************************************
|
||||
// lreader.cls: L nc reader.
|
||||
// 1999, Csisz r Levente
|
||||
|
||||
// Ez a reader readerek stackj‚n kereszt<7A>l olvas, Łgy, hogy olvas a
|
||||
// legfels“b“l, ha az el‚rte az EOF-ot, akkor k<>ld egy EOS (End Of
|
||||
// Stream)-et, eldobja a stack tetej‚n lev“ reader-t, ‚s folytatja
|
||||
// az olvas st a stack tetej‚n maradt reader-el.
|
||||
// Amikor Łj stream-et kezd, akkor k<>ld egy BOS (Begin Of Stream)
|
||||
// elemet.
|
||||
// Az EOS ‚s a BOF ‚rt‚ke param‚terezhet“, s“t el is hagyhat˘ak.
|
||||
|
||||
// Mj.: A stackb“l t”r”lt reader-ekre kiadja a destruct()-ot.
|
||||
// Egy lreader destruct-ja az ”sszes a stack-j‚ben lev“ reader
|
||||
// destructj t jelenti.
|
||||
// Mj2.: Az errorStream-et nem llˇtja, arr˘l, hogy a hib kat
|
||||
// megkapjuk nek<65>nk kell gondoskodni.
|
||||
|
||||
// A neve mindig a stack legfels“ eleme.
|
||||
|
||||
|
||||
class LREADER CREADER
|
||||
|
||||
attrib readerStack // A stack, amiben a reader-ek vannak.
|
||||
// Egy elem {reader,needBOS} alakŁ.
|
||||
// A needBOS .t., ha kell BOS-t k<>ldeni
|
||||
// .f., ha nem.
|
||||
|
||||
attrib BOSItem // A BOS elem. B rmilyen objektum vagy
|
||||
// ‚rt‚k lehet (karakter is.)
|
||||
// Ha nil, akkor nem k<>ld ilyet.
|
||||
|
||||
attrib EOSItem // Az EOS elem. B rmilyen objektum vagy
|
||||
// ‚rt‚k lehet (karakter is.)
|
||||
// Ha nil, akkor nem k<>ld ilyet.
|
||||
rmethod readItem()
|
||||
// Olvas egy elemet.
|
||||
// Ret: Az elem, ha OK, nil, ha v‚ge van a streamnek, vagy ha
|
||||
// hiba volt.
|
||||
|
||||
nmethod pushReader(aReader)
|
||||
// Az itt megadott readert beteszi a stack-be. A legk”zelebbi
|
||||
// olvas s ebb“l fog olvasni.
|
||||
|
||||
nmethod topReader()
|
||||
// Megadja a stack tetej‚n lev“ readert. Ha nincs ret nil
|
||||
|
||||
nmethod popReader()
|
||||
// Visszaadja a stack tetej‚n lev“ readert, ‚s a stack-r“l t”rli.
|
||||
// Nem adja ki r a destruct()-ot.
|
||||
|
||||
nmethod dropReader()
|
||||
// A stackr“l t”rli a tetej‚n lev“ readert.
|
||||
// Kiadja r a destruct()-ot.
|
||||
|
||||
nmethod isEmpty()
|
||||
// Igaz, ha a stack <20>res, egy‚bk‚nt hamis.
|
||||
|
||||
nmethod getBOSItem()
|
||||
// Ad egy BOS itemet.
|
||||
|
||||
nmethod getEOSItem()
|
||||
// Ad egy EOS itemet.
|
||||
|
||||
rmethod getFile()
|
||||
rmethod getLine()
|
||||
rmethod getPos()
|
||||
|
||||
rmethod oinit(BOSItem,EOSItem,name,errorStream)
|
||||
// Inicializ lja az objektumot.
|
||||
|
||||
metaclass
|
||||
|
||||
rmethod onew(BOSItem,EOSItem,name,errorStream)
|
||||
|
||||
|
||||
|
||||
@@ -1,356 +0,0 @@
|
||||
// LREADER.och oszt ly implement ci¢.
|
||||
// Gener lva: 1999.06.10, 14:40:06, OBJCCC v2.2.03
|
||||
// Meta oszt ly defin¡ci¢: Van
|
||||
|
||||
|
||||
#ifndef CA_CREADER_N
|
||||
#ifdef _STRICT_PARENT_
|
||||
#ifdef _CA_CM_ONLY_
|
||||
#include "CREADER.och"
|
||||
#else // _CA_CM_ONLY_
|
||||
#define _CA_CM_ONLY_
|
||||
#include "CREADER.och"
|
||||
#undef _CA_CM_ONLY_
|
||||
#endif // _CA_CM_ONLY_
|
||||
#else
|
||||
#include "CREADER.och"
|
||||
#endif // _STRICT_PARENT_
|
||||
#endif // CA_CREADER_N
|
||||
|
||||
#ifndef _CA_CM_ONLY_
|
||||
#ifndef _LREADER_OCH_
|
||||
#define _LREADER_OCH_
|
||||
|
||||
|
||||
#xtranslate LREADER.<obj>:name => <obj>\[CA_OBJECT_N+1\]
|
||||
#xtranslate LREADER.<obj>:errorstream => <obj>\[CA_OBJECT_N+2\]
|
||||
#xtranslate LREADER.<obj>:tbuffer => <obj>\[CA_OBJECT_N+3\]
|
||||
#xtranslate LREADER.<obj>:line => <obj>\[CA_READER_N+1\]
|
||||
#xtranslate LREADER.<obj>:pos => <obj>\[CA_READER_N+2\]
|
||||
|
||||
|
||||
#xtranslate LREADER.<obj>:oinit => (OBJGEN.(<obj>):(4))
|
||||
#xtranslate LREADER.<obj>:getclass => (OBJGEN.(<obj>):(5))
|
||||
#xtranslate LREADER.<obj>:isclass => (OBJGEN.(<obj>):(6))
|
||||
#xtranslate LREADER.<obj>:getattrib => (OBJGEN.(<obj>):(7))
|
||||
#xtranslate LREADER.<obj>:setattrib => (OBJGEN.(<obj>):(8))
|
||||
#xtranslate LREADER.<obj>:read => (OBJGEN.(<obj>):(CM_OBJECT_N+1))
|
||||
#xtranslate LREADER.<obj>:unread => (OBJGEN.(<obj>):(CM_OBJECT_N+2))
|
||||
#xtranslate LREADER.<obj>:readtbuffer => (OBJGEN.(<obj>):(CM_OBJECT_N+3))
|
||||
#xtranslate LREADER.<obj>:arraytbuffer => (OBJGEN.(<obj>):(CM_OBJECT_N+4))
|
||||
#xtranslate LREADER.<obj>:readitem => (OBJGEN.(<obj>):(CM_OBJECT_N+5))
|
||||
#xtranslate LREADER.<obj>:iserror => (OBJGEN.(<obj>):(CM_OBJECT_N+6))
|
||||
#xtranslate LREADER.<obj>:adderror => (OBJGEN.(<obj>):(CM_OBJECT_N+7))
|
||||
#xtranslate LREADER.<obj>:destruct => (OBJGEN.(<obj>):(CM_OBJECT_N+8))
|
||||
#xtranslate LREADER.<obj>:getfile => (OBJGEN.(<obj>):(CM_READER_N+1))
|
||||
#xtranslate LREADER.<obj>:getline => (OBJGEN.(<obj>):(CM_READER_N+2))
|
||||
#xtranslate LREADER.<obj>:getpos => (OBJGEN.(<obj>):(CM_READER_N+3))
|
||||
|
||||
|
||||
#xtranslate LREADER.<obj>:readerstack => <obj>\[CA_CREADER_N+1\]
|
||||
#xtranslate LREADER.<obj>:bositem => <obj>\[CA_CREADER_N+2\]
|
||||
#xtranslate LREADER.<obj>:eositem => <obj>\[CA_CREADER_N+3\]
|
||||
|
||||
// ™r”k”lve: readitem()
|
||||
// Specifik lva: pushreader(aReader)
|
||||
// Specifik lva: topreader()
|
||||
// Specifik lva: popreader()
|
||||
// Specifik lva: dropreader()
|
||||
// Specifik lva: isempty()
|
||||
// Specifik lva: getbositem()
|
||||
// Specifik lva: geteositem()
|
||||
// ™r”k”lve: getfile()
|
||||
// ™r”k”lve: getline()
|
||||
// ™r”k”lve: getpos()
|
||||
// ™r”k”lve: oinit(BOSItem,EOSItem,name,errorStream)
|
||||
|
||||
// ™r”k”lve: readitem()
|
||||
#xtranslate LREADER.<obj>:pushreader => (OBJGEN.(<obj>):(CM_CREADER_N+1))
|
||||
#xtranslate LREADER.<obj>:topreader => (OBJGEN.(<obj>):(CM_CREADER_N+2))
|
||||
#xtranslate LREADER.<obj>:popreader => (OBJGEN.(<obj>):(CM_CREADER_N+3))
|
||||
#xtranslate LREADER.<obj>:dropreader => (OBJGEN.(<obj>):(CM_CREADER_N+4))
|
||||
#xtranslate LREADER.<obj>:isempty => (OBJGEN.(<obj>):(CM_CREADER_N+5))
|
||||
#xtranslate LREADER.<obj>:getbositem => (OBJGEN.(<obj>):(CM_CREADER_N+6))
|
||||
#xtranslate LREADER.<obj>:geteositem => (OBJGEN.(<obj>):(CM_CREADER_N+7))
|
||||
// ™r”k”lve: getfile()
|
||||
// ™r”k”lve: getline()
|
||||
// ™r”k”lve: getpos()
|
||||
// ™r”k”lve: oinit(BOSItem,EOSItem,name,errorStream)
|
||||
|
||||
#endif // _LREADER_OCH_
|
||||
#endif // _CA_CM_ONLY_
|
||||
|
||||
#ifndef CA_LREADER_N
|
||||
#define CA_LREADER_N CA_CREADER_N+3
|
||||
#define CM_LREADER_N CM_CREADER_N+7
|
||||
#endif // CA_LREADER_N
|
||||
|
||||
#ifndef _CA_CM_ONLY_
|
||||
#ifndef _LREADERCLASS_OCH_
|
||||
#define _LREADERCLASS_OCH_
|
||||
|
||||
**********************************************************************
|
||||
#xtranslate C.LREADER:<m> => (LREADERCLASS.clLREADER():<m>)
|
||||
#xtranslate C.LREADER:self() => (clLREADER())
|
||||
|
||||
|
||||
#xtranslate LREADERCLASS.<obj>:parent => <obj>\[CA_OBJECT_N+1\]
|
||||
#xtranslate LREADERCLASS.<obj>:name => <obj>\[CA_OBJECT_N+2\]
|
||||
#xtranslate LREADERCLASS.<obj>:objsize => <obj>\[CA_OBJECT_N+3\]
|
||||
#xtranslate LREADERCLASS.<obj>:attribs => <obj>\[CA_OBJECT_N+4\]
|
||||
#xtranslate LREADERCLASS.<obj>:methods => <obj>\[CA_OBJECT_N+5\]
|
||||
#xtranslate LREADERCLASS.<obj>:classid => <obj>\[CA_OBJECT_N+6\]
|
||||
#xtranslate LREADERCLASS.<obj>:parentclassids => <obj>\[CA_OBJECT_N+7\]
|
||||
#xtranslate LREADERCLASS.<obj>:amblock => <obj>\[CA_OBJECT_N+8\]
|
||||
#xtranslate LREADERCLASS.<obj>:methodsblock => <obj>\[CA_OBJECT_N+9\]
|
||||
#xtranslate LREADERCLASS.<obj>:objmethodsimplement => <obj>\[CA_OBJECT_N+10\]
|
||||
|
||||
|
||||
#xtranslate LREADERCLASS.<obj>:oinit => (OBJGEN.(<obj>):(4))
|
||||
#xtranslate LREADERCLASS.<obj>:getclass => (OBJGEN.(<obj>):(5))
|
||||
#xtranslate LREADERCLASS.<obj>:isclass => (OBJGEN.(<obj>):(6))
|
||||
#xtranslate LREADERCLASS.<obj>:getattrib => (OBJGEN.(<obj>):(7))
|
||||
#xtranslate LREADERCLASS.<obj>:setattrib => (OBJGEN.(<obj>):(8))
|
||||
#xtranslate LREADERCLASS.<obj>:onew => (OBJGEN.(<obj>):(CM_OBJECT_N+1))
|
||||
#xtranslate LREADERCLASS.<obj>:ocreate => (OBJGEN.(<obj>):(CM_OBJECT_N+2))
|
||||
#xtranslate LREADERCLASS.<obj>:rawoinit => (OBJGEN.(<obj>):(CM_OBJECT_N+3))
|
||||
#xtranslate LREADERCLASS.<obj>:oinitclass => (OBJGEN.(<obj>):(CM_OBJECT_N+4))
|
||||
#xtranslate LREADERCLASS.<obj>:getmethodsimplement => (OBJGEN.(<obj>):(CM_OBJECT_N+5))
|
||||
#xtranslate LREADERCLASS.<obj>:attribidx => (OBJGEN.(<obj>):(CM_OBJECT_N+6))
|
||||
#xtranslate LREADERCLASS.<obj>:needclassid => (OBJGEN.(<obj>):(CM_OBJECT_N+7))
|
||||
#xtranslate LREADERCLASS.<obj>:isinheritfrom => (OBJGEN.(<obj>):(CM_OBJECT_N+8))
|
||||
|
||||
|
||||
|
||||
// ™r”k”lve: onew(BOSItem,EOSItem,name,errorStream)
|
||||
|
||||
// ™r”k”lve: onew(BOSItem,EOSItem,name,errorStream)
|
||||
|
||||
#endif // _LREADERCLASS_OCH_
|
||||
#endif // _CA_CM_ONLY_
|
||||
|
||||
#ifndef CA_LREADERCLASS_N
|
||||
#define CA_LREADERCLASS_N CA_CREADERCLASS_N+0
|
||||
#define CM_LREADERCLASS_N CM_CREADERCLASS_N+0
|
||||
#endif // CA_LREADERCLASS_N
|
||||
|
||||
|
||||
**********************************************************************
|
||||
#ifdef _LREADER_PRG_
|
||||
#ifndef _LREADER_PRG_OCH_
|
||||
#define _LREADER_PRG_OCH_
|
||||
|
||||
|
||||
**********************************************************************
|
||||
#xtranslate othis:<m> => LREADER.(othis):<m>
|
||||
#xtranslate thisclass:<m> => LREADERCLASS.(this:getClass()):<m>
|
||||
#define CTHIS LREADER
|
||||
|
||||
|
||||
**********************************************************************
|
||||
#xtranslate this:<m> => LREADER.(this):<m>
|
||||
|
||||
#xcommand implement readitem() => static function readitem(this)
|
||||
#xcommand implement pushreader(aReader) => ;
|
||||
static function pushreader(this,aReader)
|
||||
#xcommand implement topreader() => static function topreader(this)
|
||||
#xcommand implement popreader() => static function popreader(this)
|
||||
#xcommand implement dropreader() => static function dropreader(this)
|
||||
#xcommand implement isempty() => static function isempty(this)
|
||||
#xcommand implement getbositem() => static function getbositem(this)
|
||||
#xcommand implement geteositem() => static function geteositem(this)
|
||||
#xcommand implement getfile() => static function getfile(this)
|
||||
#xcommand implement getline() => static function getline(this)
|
||||
#xcommand implement getpos() => static function getpos(this)
|
||||
#xcommand implement oinit(BOSItem,EOSItem,name,errorStream) => ;
|
||||
static function oinit(this,BOSItem,EOSItem,name,errorStream)
|
||||
|
||||
#ifdef _IMPLEMENT_EXPORT_
|
||||
#xcommand implement export readitem() => function readitem(this)
|
||||
#xcommand implement export pushreader(aReader) => ;
|
||||
function pushreader(this,aReader)
|
||||
#xcommand implement export topreader() => function topreader(this)
|
||||
#xcommand implement export popreader() => function popreader(this)
|
||||
#xcommand implement export dropreader() => function dropreader(this)
|
||||
#xcommand implement export isempty() => function isempty(this)
|
||||
#xcommand implement export getbositem() => function getbositem(this)
|
||||
#xcommand implement export geteositem() => function geteositem(this)
|
||||
#xcommand implement export getfile() => function getfile(this)
|
||||
#xcommand implement export getline() => function getline(this)
|
||||
#xcommand implement export getpos() => function getpos(this)
|
||||
#xcommand implement export oinit(BOSItem,EOSItem,name,errorStream) => ;
|
||||
function oinit(this,BOSItem,EOSItem,name,errorStream)
|
||||
#endif // _IMPLEMENT_EXPORT_
|
||||
|
||||
#xtranslate super:oinit => (OBJGENM.(eval(BEHAVIOR.clCREADER():objmethodsimplement)).(this):(4))
|
||||
#xtranslate super:getclass => (OBJGENM.(eval(BEHAVIOR.clCREADER():objmethodsimplement)).(this):(5))
|
||||
#xtranslate super:isclass => (OBJGENM.(eval(BEHAVIOR.clCREADER():objmethodsimplement)).(this):(6))
|
||||
#xtranslate super:getattrib => (OBJGENM.(eval(BEHAVIOR.clCREADER():objmethodsimplement)).(this):(7))
|
||||
#xtranslate super:setattrib => (OBJGENM.(eval(BEHAVIOR.clCREADER():objmethodsimplement)).(this):(8))
|
||||
#xtranslate super:read => (OBJGENM.(eval(BEHAVIOR.clCREADER():objmethodsimplement)).(this):(CM_OBJECT_N+1))
|
||||
#xtranslate super:unread => (OBJGENM.(eval(BEHAVIOR.clCREADER():objmethodsimplement)).(this):(CM_OBJECT_N+2))
|
||||
#xtranslate super:readtbuffer => (OBJGENM.(eval(BEHAVIOR.clCREADER():objmethodsimplement)).(this):(CM_OBJECT_N+3))
|
||||
#xtranslate super:arraytbuffer => (OBJGENM.(eval(BEHAVIOR.clCREADER():objmethodsimplement)).(this):(CM_OBJECT_N+4))
|
||||
#xtranslate super:readitem => (OBJGENM.(eval(BEHAVIOR.clCREADER():objmethodsimplement)).(this):(CM_OBJECT_N+5))
|
||||
#xtranslate super:iserror => (OBJGENM.(eval(BEHAVIOR.clCREADER():objmethodsimplement)).(this):(CM_OBJECT_N+6))
|
||||
#xtranslate super:adderror => (OBJGENM.(eval(BEHAVIOR.clCREADER():objmethodsimplement)).(this):(CM_OBJECT_N+7))
|
||||
#xtranslate super:destruct => (OBJGENM.(eval(BEHAVIOR.clCREADER():objmethodsimplement)).(this):(CM_OBJECT_N+8))
|
||||
#xtranslate super:getfile => (OBJGENM.(eval(BEHAVIOR.clCREADER():objmethodsimplement)).(this):(CM_READER_N+1))
|
||||
#xtranslate super:getline => (OBJGENM.(eval(BEHAVIOR.clCREADER():objmethodsimplement)).(this):(CM_READER_N+2))
|
||||
#xtranslate super:getpos => (OBJGENM.(eval(BEHAVIOR.clCREADER():objmethodsimplement)).(this):(CM_READER_N+3))
|
||||
|
||||
**********************************************************************
|
||||
static function setCMethods(pOsztaly)
|
||||
// Egy t”mb”t felt”lt az oszt ly m–veleti blokkjaival.
|
||||
pOsztaly[(CM_OBJECT_N+5)]:={|this| readitem(this)}
|
||||
pOsztaly[(CM_CREADER_N+1)]:={|this,aReader| pushreader(this,aReader)}
|
||||
pOsztaly[(CM_CREADER_N+2)]:={|this| topreader(this)}
|
||||
pOsztaly[(CM_CREADER_N+3)]:={|this| popreader(this)}
|
||||
pOsztaly[(CM_CREADER_N+4)]:={|this| dropreader(this)}
|
||||
pOsztaly[(CM_CREADER_N+5)]:={|this| isempty(this)}
|
||||
pOsztaly[(CM_CREADER_N+6)]:={|this| getbositem(this)}
|
||||
pOsztaly[(CM_CREADER_N+7)]:={|this| geteositem(this)}
|
||||
pOsztaly[(CM_READER_N+1)]:={|this| getfile(this)}
|
||||
pOsztaly[(CM_READER_N+2)]:={|this| getline(this)}
|
||||
pOsztaly[(CM_READER_N+3)]:={|this| getpos(this)}
|
||||
pOsztaly[(4)]:={|this,BOSItem,EOSItem,name,errorStream| oinit(this,BOSItem,EOSItem,name,errorStream)}
|
||||
return pOsztaly
|
||||
|
||||
**********************************************************************
|
||||
static function setCams(ta,tm)
|
||||
// Egy t”mb”t felt”lt az oszt ly ltal def. objektumok attrib£tumaival ‚s m–veleteivel.
|
||||
ta[CA_CREADER_N+1-CA_NIL_N] := {CA_CREADER_N+1,'readerstack', }
|
||||
ta[CA_CREADER_N+2-CA_NIL_N] := {CA_CREADER_N+2,'bositem', }
|
||||
ta[CA_CREADER_N+3-CA_NIL_N] := {CA_CREADER_N+3,'eositem', }
|
||||
|
||||
tm[(CM_OBJECT_N+5)-CM_NIL_N] := {(CM_OBJECT_N+5),'readitem','',nil}
|
||||
tm[(CM_CREADER_N+1)-CM_NIL_N] := {(CM_CREADER_N+1),'pushreader','aReader',nil}
|
||||
tm[(CM_CREADER_N+2)-CM_NIL_N] := {(CM_CREADER_N+2),'topreader','',nil}
|
||||
tm[(CM_CREADER_N+3)-CM_NIL_N] := {(CM_CREADER_N+3),'popreader','',nil}
|
||||
tm[(CM_CREADER_N+4)-CM_NIL_N] := {(CM_CREADER_N+4),'dropreader','',nil}
|
||||
tm[(CM_CREADER_N+5)-CM_NIL_N] := {(CM_CREADER_N+5),'isempty','',nil}
|
||||
tm[(CM_CREADER_N+6)-CM_NIL_N] := {(CM_CREADER_N+6),'getbositem','',nil}
|
||||
tm[(CM_CREADER_N+7)-CM_NIL_N] := {(CM_CREADER_N+7),'geteositem','',nil}
|
||||
tm[(CM_READER_N+1)-CM_NIL_N] := {(CM_READER_N+1),'getfile','',nil}
|
||||
tm[(CM_READER_N+2)-CM_NIL_N] := {(CM_READER_N+2),'getline','',nil}
|
||||
tm[(CM_READER_N+3)-CM_NIL_N] := {(CM_READER_N+3),'getpos','',nil}
|
||||
tm[(4)-CM_NIL_N] := {(4),'oinit','BOSItem,EOSItem,name,errorStream',nil}
|
||||
return nil
|
||||
|
||||
#ifndef _NO_CLLREADER_
|
||||
#ifdef _STRICT_PARENT_
|
||||
#ifdef _CA_CM_ONLY_
|
||||
#include "meta.och"
|
||||
#else // _CA_CM_ONLY_
|
||||
#define _CA_CM_ONLY_
|
||||
#include "meta.och"
|
||||
#undef _CA_CM_ONLY_
|
||||
#endif // _CA_CM_ONLY_
|
||||
#else
|
||||
#include "meta.och"
|
||||
#endif // _STRICT_PARENT_
|
||||
**********************************************************************
|
||||
function clLREADER()
|
||||
// El“szedi az oszt lyt. (class)
|
||||
static osztaly
|
||||
if (osztaly==nil)
|
||||
osztaly:=META.mcLREADERCLASS():onew(;
|
||||
clCREADER(),;
|
||||
"LREADER",;
|
||||
CA_LREADER_N,;
|
||||
CM_LREADER_N,;
|
||||
{|ta,tm|setCams(ta,tm)},;
|
||||
{|t|setCMethods(t)})
|
||||
endif
|
||||
return osztaly
|
||||
#endif // _NO_CLLREADER_
|
||||
|
||||
#ifndef _NO_LREADERCLASS_
|
||||
|
||||
**********************************************************************
|
||||
#xtranslate class:<m> => LREADERCLASS.(class):<m>
|
||||
|
||||
#xcommand cimplement onew(BOSItem,EOSItem,name,errorStream) => ;
|
||||
static function onew(class,BOSItem,EOSItem,name,errorStream)
|
||||
|
||||
#ifdef _IMPLEMENT_EXPORT_
|
||||
#xcommand cimplement export onew(BOSItem,EOSItem,name,errorStream) => ;
|
||||
function onew(class,BOSItem,EOSItem,name,errorStream)
|
||||
#endif // _IMPLEMENT_EXPORT_
|
||||
|
||||
#xtranslate superclass:oinit => (OBJGENM.(eval(BEHAVIOR.mcCREADERCLASS():objmethodsimplement)).(class):(4))
|
||||
#xtranslate superclass:getclass => (OBJGENM.(eval(BEHAVIOR.mcCREADERCLASS():objmethodsimplement)).(class):(5))
|
||||
#xtranslate superclass:isclass => (OBJGENM.(eval(BEHAVIOR.mcCREADERCLASS():objmethodsimplement)).(class):(6))
|
||||
#xtranslate superclass:getattrib => (OBJGENM.(eval(BEHAVIOR.mcCREADERCLASS():objmethodsimplement)).(class):(7))
|
||||
#xtranslate superclass:setattrib => (OBJGENM.(eval(BEHAVIOR.mcCREADERCLASS():objmethodsimplement)).(class):(8))
|
||||
#xtranslate superclass:onew => (OBJGENM.(eval(BEHAVIOR.mcCREADERCLASS():objmethodsimplement)).(class):(CM_OBJECT_N+1))
|
||||
#xtranslate superclass:ocreate => (OBJGENM.(eval(BEHAVIOR.mcCREADERCLASS():objmethodsimplement)).(class):(CM_OBJECT_N+2))
|
||||
#xtranslate superclass:rawoinit => (OBJGENM.(eval(BEHAVIOR.mcCREADERCLASS():objmethodsimplement)).(class):(CM_OBJECT_N+3))
|
||||
#xtranslate superclass:oinitclass => (OBJGENM.(eval(BEHAVIOR.mcCREADERCLASS():objmethodsimplement)).(class):(CM_OBJECT_N+4))
|
||||
#xtranslate superclass:getmethodsimplement => (OBJGENM.(eval(BEHAVIOR.mcCREADERCLASS():objmethodsimplement)).(class):(CM_OBJECT_N+5))
|
||||
#xtranslate superclass:attribidx => (OBJGENM.(eval(BEHAVIOR.mcCREADERCLASS():objmethodsimplement)).(class):(CM_OBJECT_N+6))
|
||||
#xtranslate superclass:needclassid => (OBJGENM.(eval(BEHAVIOR.mcCREADERCLASS():objmethodsimplement)).(class):(CM_OBJECT_N+7))
|
||||
#xtranslate superclass:isinheritfrom => (OBJGENM.(eval(BEHAVIOR.mcCREADERCLASS():objmethodsimplement)).(class):(CM_OBJECT_N+8))
|
||||
|
||||
**********************************************************************
|
||||
static function setMCMethods(pOsztaly)
|
||||
// Egy t”mb”t felt”lt a metaoszt ly m–veleti blokkjaival.
|
||||
pOsztaly[(CM_OBJECT_N+1)]:={|class,BOSItem,EOSItem,name,errorStream| onew(class,BOSItem,EOSItem,name,errorStream)}
|
||||
return pOsztaly
|
||||
|
||||
**********************************************************************
|
||||
static function setMCams(ta,tm)
|
||||
// Egy t”mb”t felt”lt a metaoszt ly ltal def. objektumok attrib£tumaival ‚s m–veleteivel.
|
||||
|
||||
tm[(CM_OBJECT_N+1)-CM_NIL_N] := {(CM_OBJECT_N+1),'onew','BOSItem,EOSItem,name,errorStream',nil}
|
||||
return nil
|
||||
|
||||
**********************************************************************
|
||||
#ifndef _NO_MCLREADERCLASS_
|
||||
#ifdef _STRICT_PARENT_
|
||||
#ifdef _CA_CM_ONLY_
|
||||
#include "meta.och" // "metaclas.och"
|
||||
#else // _CA_CM_ONLY_
|
||||
#define _CA_CM_ONLY_
|
||||
#include "meta.och" // "metaclas.och"
|
||||
#undef _CA_CM_ONLY_
|
||||
#endif // _CA_CM_ONLY_
|
||||
#else
|
||||
#include "meta.och" // "metaclas.och"
|
||||
#endif // _STRICT_PARENT_
|
||||
function mcLREADERCLASS()
|
||||
// El“szedi az oszt ly metaoszt ly t. (metaclass)
|
||||
static metaOsztaly
|
||||
if (metaOsztaly==nil)
|
||||
metaOsztaly:=META.clMETA():onew(;
|
||||
mcCREADERCLASS(),;
|
||||
"LREADERCLASS",;
|
||||
CA_LREADERCLASS_N,;
|
||||
CM_LREADERCLASS_N,;
|
||||
{|ta,tm|setMCams(ta,tm)},;
|
||||
{|t|setMCMethods(t)})
|
||||
endif
|
||||
return metaOsztaly
|
||||
#endif // _NO_MCLREADERCLASS_
|
||||
|
||||
#endif // _NO_LREADERCLASS_
|
||||
#ifdef _IMPLEMENT_ONEW_
|
||||
**********************************************************************
|
||||
cimplement onew(BOSItem,EOSItem,name,errorStream)
|
||||
local o:=class:ocreate()
|
||||
|
||||
LREADER.o:oinit(BOSItem,EOSItem,name,errorStream)
|
||||
return o
|
||||
#endif // _IMPLEMENT_ONEW_
|
||||
|
||||
**********************************************************************
|
||||
#ifdef _IMPLEMENT_OINIT_
|
||||
implement oinit(BOSItem,EOSItem,name,errorStream)
|
||||
super:oinit()
|
||||
return this
|
||||
#endif // _IMPLEMENT_OINIT_
|
||||
|
||||
**********************************************************************
|
||||
**********************************************************************
|
||||
#endif // _LREADER_PRG_OCH_
|
||||
#endif // _LREADER_PRG_
|
||||
@@ -1,164 +0,0 @@
|
||||
/*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
//*******************************************************************
|
||||
// lreader.prg: Az lreader oszt ly implement ci¢ja.
|
||||
// 1999, Csisz r Levente
|
||||
|
||||
//*******************************************************************
|
||||
#include "debug.ch"
|
||||
|
||||
//*******************************************************************
|
||||
#include "objgen.ch"
|
||||
|
||||
#define _LREADER_PRG_
|
||||
#define _IMPLEMENT_ONEW_
|
||||
|
||||
#include "lreader.och"
|
||||
|
||||
//*******************************************************************
|
||||
|
||||
implement oinit(BOSItem,EOSItem,name,errorStream)
|
||||
super:oinit(name,errorStream)
|
||||
this:readerStack:={}
|
||||
this:BOSItem:=BOSItem
|
||||
this:EOSItem:=EOSItem
|
||||
return this
|
||||
|
||||
//*******************************************************************
|
||||
implement readItem()
|
||||
// Mj.: Ha azt a koncepci¢t v lasztjuk, hogy a getFile(),getLine(),
|
||||
// getPos() a legfels“ reader-nek van tir ny¡tva, akkor a read()-et
|
||||
// ‚s az unread()-et is fel<65>l kell defini lni.
|
||||
local r,t,w
|
||||
|
||||
if (len(this:readerStack)<=0)
|
||||
return nil
|
||||
endif
|
||||
|
||||
r:=alast(this:readerStack)
|
||||
if (r[2])
|
||||
r[2]:=.f.
|
||||
// this:name:=READER.r[1]:name
|
||||
if (nil!=(w:=this:getBOSItem()))
|
||||
PDEBUG(outerr("BOS: ",w,crlf()))
|
||||
return w
|
||||
endif
|
||||
endif
|
||||
|
||||
r:=r[1]
|
||||
if (nil==(t:=READER.r:read()))
|
||||
// if (READER.r:isError())
|
||||
// this:error:=READER.r:error
|
||||
// return nil
|
||||
// endif
|
||||
w:=this:getEOSItem()
|
||||
this:dropReader()
|
||||
// apop(this:readerStack)
|
||||
if (!empty(this:readerStack))
|
||||
atail(this:readerStack)[2]:=.t.
|
||||
endif
|
||||
if (nil!=w)
|
||||
PDEBUG(outerr("EOS: ",w,newline()))
|
||||
return w
|
||||
endif
|
||||
// Ez az‚rt kell, hogy amikor egy reader £jra akt¡v lesz, akkor
|
||||
// j”jj”n egy BOS.
|
||||
return this:read()
|
||||
endif
|
||||
|
||||
return t
|
||||
|
||||
//*******************************************************************
|
||||
implement pushReader(aReader)
|
||||
aadd(this:readerStack,{aReader,.t.})
|
||||
return nil
|
||||
|
||||
//*******************************************************************
|
||||
implement topReader()
|
||||
if (len(this:readerStack)<=0)
|
||||
return nil
|
||||
endif
|
||||
return atail(this:readerStack)[1]
|
||||
|
||||
//*******************************************************************
|
||||
implement popReader()
|
||||
if (len(this:readerStack)<=0)
|
||||
return nil
|
||||
endif
|
||||
return apop(this:readerStack)[1]
|
||||
|
||||
//*******************************************************************
|
||||
implement dropReader()
|
||||
local w
|
||||
|
||||
if (len(this:readerStack)<=0)
|
||||
return nil
|
||||
endif
|
||||
w:=apop(this:readerStack)[1] // A seg‚dv ltoz¢ kell, mert az
|
||||
// objektum hely‚n ll¢ kifejez‚st
|
||||
// k‚tszer ‚rt‚keli ki!
|
||||
READER.w:destruct()
|
||||
return nil
|
||||
|
||||
//*******************************************************************
|
||||
implement isEmpty()
|
||||
return len(this:readerStack)<=0
|
||||
|
||||
//*******************************************************************
|
||||
implement getBOSItem()
|
||||
local b
|
||||
|
||||
if (this:BOSItem==nil)
|
||||
return nil
|
||||
endif
|
||||
|
||||
b:=aclone(this:BOSItem)
|
||||
b[2]:=this:getFile()
|
||||
b[3]:=this:getLine()
|
||||
b[4]:=this:getPos()
|
||||
b[5]:=len(this:readerStack)
|
||||
return b
|
||||
|
||||
//*******************************************************************
|
||||
implement getEOSItem()
|
||||
local e
|
||||
|
||||
if (this:EOSItem==nil)
|
||||
return nil
|
||||
endif
|
||||
|
||||
e:=aclone(this:EOSItem)
|
||||
e[2]:=this:getFile()
|
||||
e[3]:=this:getLine()
|
||||
e[4]:=this:getPos()
|
||||
e[5]:=len(this:readerStack)
|
||||
|
||||
return e
|
||||
|
||||
//*******************************************************************
|
||||
implement getFile()
|
||||
if (!empty(this:readerStack))
|
||||
return CREADER.(atail(this:readerStack)[1]):getFile()
|
||||
endif
|
||||
return this:name
|
||||
|
||||
|
||||
//*******************************************************************
|
||||
implement getLine()
|
||||
if (!empty(this:readerStack))
|
||||
return CREADER.(atail(this:readerStack)[1]):getLine()
|
||||
endif
|
||||
return this:line
|
||||
|
||||
//*******************************************************************
|
||||
implement getPos()
|
||||
if (!empty(this:readerStack))
|
||||
return CREADER.(atail(this:readerStack)[1]):getPos()
|
||||
endif
|
||||
return this:pos
|
||||
|
||||
//*******************************************************************
|
||||
|
||||
|
||||
@@ -1,99 +0,0 @@
|
||||
//
|
||||
// $Id$
|
||||
//
|
||||
|
||||
#! if exist link.lnk del link.lnk
|
||||
|
||||
.prg.obj:
|
||||
echo file $*.obj >> link.lnk
|
||||
clipper $< -o$*.obj /w /n /m /es2
|
||||
|
||||
cccppc.exe: \
|
||||
cccppc.obj \
|
||||
cccpp_pr.obj \
|
||||
creader.obj \
|
||||
crlf.obj \
|
||||
defdict.obj \
|
||||
edefdict.obj \
|
||||
expr.obj \
|
||||
extrdict.obj \
|
||||
felbont.obj \
|
||||
fnutil.obj \
|
||||
freader.obj \
|
||||
guesseol.obj \
|
||||
hparser.obj \
|
||||
hparser2.obj \
|
||||
incl.obj \
|
||||
lparser.obj \
|
||||
lreader.obj \
|
||||
maltrset.obj \
|
||||
mcontrol.obj \
|
||||
mmarker.obj \
|
||||
mparser.obj \
|
||||
newline.obj \
|
||||
nparser.obj \
|
||||
parser.obj \
|
||||
prserr.obj \
|
||||
prtree.obj \
|
||||
prtreepr.obj \
|
||||
ralter.obj \
|
||||
reader.obj \
|
||||
rmarker.obj \
|
||||
rsmmarkr.obj \
|
||||
sreader.obj \
|
||||
tbuffer.obj \
|
||||
tkstr.obj \
|
||||
token.obj \
|
||||
tokenst.obj \
|
||||
tostr.obj \
|
||||
treader.obj \
|
||||
util.obj \
|
||||
xtrdict.obj \
|
||||
object.obj \
|
||||
package.obj \
|
||||
version.obj
|
||||
rtlink output cccppc.exe @link.lnk
|
||||
|
||||
cccpp_pr.obj : cccpp_pr.prg
|
||||
cccppc.obj : cccppc.prg
|
||||
creader.obj : creader.prg
|
||||
crlf.obj : crlf.prg
|
||||
defdict.obj : defdict.prg
|
||||
edefdict.obj : edefdict.prg
|
||||
expr.obj : expr.prg
|
||||
extrdict.obj : extrdict.prg
|
||||
felbont.obj : felbont.prg
|
||||
fnutil.obj : fnutil.prg
|
||||
freader.obj : freader.prg
|
||||
guesseol.obj : guesseol.prg
|
||||
hparser.obj : hparser.prg
|
||||
hparser2.obj : hparser2.prg
|
||||
incl.obj : incl.prg
|
||||
lparser.obj : lparser.prg
|
||||
lreader.obj : lreader.prg
|
||||
maltrset.obj : maltrset.prg
|
||||
mcontrol.obj : mcontrol.prg
|
||||
mmarker.obj : mmarker.prg
|
||||
mparser.obj : mparser.prg
|
||||
newline.obj : newline.prg
|
||||
nparser.obj : nparser.prg
|
||||
parser.obj : parser.prg
|
||||
prserr.obj : prserr.prg
|
||||
prtree.obj : prtree.prg
|
||||
prtreepr.obj : prtreepr.prg
|
||||
ralter.obj : ralter.prg
|
||||
reader.obj : reader.prg
|
||||
rmarker.obj : rmarker.prg
|
||||
rsmmarkr.obj : rsmmarkr.prg
|
||||
sreader.obj : sreader.prg
|
||||
tbuffer.obj : tbuffer.prg
|
||||
tkstr.obj : tkstr.prg
|
||||
token.obj : token.prg
|
||||
tokenst.obj : tokenst.prg
|
||||
tostr.obj : tostr.prg
|
||||
treader.obj : treader.prg
|
||||
util.obj : util.prg
|
||||
xtrdict.obj : xtrdict.prg
|
||||
object.obj : object.prg
|
||||
package.obj : package.prg
|
||||
version.obj : version.prg
|
||||
@@ -1,31 +0,0 @@
|
||||
//
|
||||
// $Id$
|
||||
//
|
||||
|
||||
//*******************************************************************
|
||||
// maltrset.cls : Match alternative set token oszt ly.
|
||||
// 1999, Csisz r Levente
|
||||
|
||||
// A bal oldalon el“fordul¢ altenat¡va halmazokat t rol¢ token.
|
||||
// Az alternat¡v kat egy-egy token t”mb jelk‚pezi, ezeknek a t”mbje
|
||||
// lesz egy alternat¡va halmaz.
|
||||
|
||||
class MALTRSET MMARKER
|
||||
|
||||
attrib alterset // Token list kat tartalmaz, minden lista
|
||||
// egy-egy alternat¡va.
|
||||
|
||||
|
||||
nmethod addAlter(tokenList)
|
||||
// L‚trehoz egy £j alternat¡v t, amit a tokenList reprezent l.
|
||||
|
||||
rmethod getStr()
|
||||
|
||||
rmethod oinit(id,str,file,line,pos)
|
||||
// Inicializ lja az objektumot.
|
||||
|
||||
metaclass
|
||||
|
||||
rmethod onew(id,str,file,line,pos)
|
||||
|
||||
|
||||
@@ -1,303 +0,0 @@
|
||||
// MALTRSET.och oszt ly implement ci¢.
|
||||
// Gener lva: 1999.06.10, 14:40:25, OBJCCC v2.2.03
|
||||
// Meta oszt ly defin¡ci¢: Van
|
||||
|
||||
|
||||
#ifndef CA_MMARKER_N
|
||||
#ifdef _STRICT_PARENT_
|
||||
#ifdef _CA_CM_ONLY_
|
||||
#include "MMARKER.och"
|
||||
#else // _CA_CM_ONLY_
|
||||
#define _CA_CM_ONLY_
|
||||
#include "MMARKER.och"
|
||||
#undef _CA_CM_ONLY_
|
||||
#endif // _CA_CM_ONLY_
|
||||
#else
|
||||
#include "MMARKER.och"
|
||||
#endif // _STRICT_PARENT_
|
||||
#endif // CA_MMARKER_N
|
||||
|
||||
#ifndef _CA_CM_ONLY_
|
||||
#ifndef _MALTRSET_OCH_
|
||||
#define _MALTRSET_OCH_
|
||||
|
||||
|
||||
#xtranslate MALTRSET.<obj>:id => <obj>\[CA_OBJECT_N+1\]
|
||||
#xtranslate MALTRSET.<obj>:str => <obj>\[CA_OBJECT_N+2\]
|
||||
#xtranslate MALTRSET.<obj>:file => <obj>\[CA_OBJECT_N+3\]
|
||||
#xtranslate MALTRSET.<obj>:line => <obj>\[CA_OBJECT_N+4\]
|
||||
#xtranslate MALTRSET.<obj>:pos => <obj>\[CA_OBJECT_N+5\]
|
||||
#xtranslate MALTRSET.<obj>:classify => <obj>\[CA_OBJECT_N+6\]
|
||||
#xtranslate MALTRSET.<obj>:error => <obj>\[CA_OBJECT_N+7\]
|
||||
#xtranslate MALTRSET.<obj>:eqtype => <obj>\[CA_OBJECT_N+8\]
|
||||
#xtranslate MALTRSET.<obj>:mnum => <obj>\[CA_TOKEN_N+1\]
|
||||
#xtranslate MALTRSET.<obj>:nexttoken => <obj>\[CA_TOKEN_N+2\]
|
||||
|
||||
|
||||
#xtranslate MALTRSET.<obj>:oinit => (OBJGEN.(<obj>):(4))
|
||||
#xtranslate MALTRSET.<obj>:getclass => (OBJGEN.(<obj>):(5))
|
||||
#xtranslate MALTRSET.<obj>:isclass => (OBJGEN.(<obj>):(6))
|
||||
#xtranslate MALTRSET.<obj>:getattrib => (OBJGEN.(<obj>):(7))
|
||||
#xtranslate MALTRSET.<obj>:setattrib => (OBJGEN.(<obj>):(8))
|
||||
#xtranslate MALTRSET.<obj>:iserror => (OBJGEN.(<obj>):(CM_OBJECT_N+1))
|
||||
#xtranslate MALTRSET.<obj>:errorstr => (OBJGEN.(<obj>):(CM_OBJECT_N+2))
|
||||
#xtranslate MALTRSET.<obj>:printtostr => (OBJGEN.(<obj>):(CM_OBJECT_N+3))
|
||||
#xtranslate MALTRSET.<obj>:getstr => (OBJGEN.(<obj>):(CM_OBJECT_N+4))
|
||||
#xtranslate MALTRSET.<obj>:copytoken => (OBJGEN.(<obj>):(CM_OBJECT_N+5))
|
||||
#xtranslate MALTRSET.<obj>:getname => (OBJGEN.(<obj>):(CM_TOKEN_N+1))
|
||||
|
||||
|
||||
#xtranslate MALTRSET.<obj>:alterset => <obj>\[CA_MMARKER_N+1\]
|
||||
|
||||
// Specifik lva: addalter(tokenList)
|
||||
// ™r”k”lve: getstr()
|
||||
// ™r”k”lve: oinit(id,str,file,line,pos)
|
||||
|
||||
#xtranslate MALTRSET.<obj>:addalter => (OBJGEN.(<obj>):(CM_MMARKER_N+1))
|
||||
// ™r”k”lve: getstr()
|
||||
// ™r”k”lve: oinit(id,str,file,line,pos)
|
||||
|
||||
#endif // _MALTRSET_OCH_
|
||||
#endif // _CA_CM_ONLY_
|
||||
|
||||
#ifndef CA_MALTRSET_N
|
||||
#define CA_MALTRSET_N CA_MMARKER_N+1
|
||||
#define CM_MALTRSET_N CM_MMARKER_N+1
|
||||
#endif // CA_MALTRSET_N
|
||||
|
||||
#ifndef _CA_CM_ONLY_
|
||||
#ifndef _MALTRSETCLASS_OCH_
|
||||
#define _MALTRSETCLASS_OCH_
|
||||
|
||||
**********************************************************************
|
||||
#xtranslate C.MALTRSET:<m> => (MALTRSETCLASS.clMALTRSET():<m>)
|
||||
#xtranslate C.MALTRSET:self() => (clMALTRSET())
|
||||
|
||||
|
||||
#xtranslate MALTRSETCLASS.<obj>:parent => <obj>\[CA_OBJECT_N+1\]
|
||||
#xtranslate MALTRSETCLASS.<obj>:name => <obj>\[CA_OBJECT_N+2\]
|
||||
#xtranslate MALTRSETCLASS.<obj>:objsize => <obj>\[CA_OBJECT_N+3\]
|
||||
#xtranslate MALTRSETCLASS.<obj>:attribs => <obj>\[CA_OBJECT_N+4\]
|
||||
#xtranslate MALTRSETCLASS.<obj>:methods => <obj>\[CA_OBJECT_N+5\]
|
||||
#xtranslate MALTRSETCLASS.<obj>:classid => <obj>\[CA_OBJECT_N+6\]
|
||||
#xtranslate MALTRSETCLASS.<obj>:parentclassids => <obj>\[CA_OBJECT_N+7\]
|
||||
#xtranslate MALTRSETCLASS.<obj>:amblock => <obj>\[CA_OBJECT_N+8\]
|
||||
#xtranslate MALTRSETCLASS.<obj>:methodsblock => <obj>\[CA_OBJECT_N+9\]
|
||||
#xtranslate MALTRSETCLASS.<obj>:objmethodsimplement => <obj>\[CA_OBJECT_N+10\]
|
||||
#xtranslate MALTRSETCLASS.<obj>:errstrarray => <obj>\[CA_BEHAVIOR_N+1\]
|
||||
#xtranslate MALTRSETCLASS.<obj>:equivclass => <obj>\[CA_BEHAVIOR_N+2\]
|
||||
|
||||
|
||||
#xtranslate MALTRSETCLASS.<obj>:oinit => (OBJGEN.(<obj>):(4))
|
||||
#xtranslate MALTRSETCLASS.<obj>:getclass => (OBJGEN.(<obj>):(5))
|
||||
#xtranslate MALTRSETCLASS.<obj>:isclass => (OBJGEN.(<obj>):(6))
|
||||
#xtranslate MALTRSETCLASS.<obj>:getattrib => (OBJGEN.(<obj>):(7))
|
||||
#xtranslate MALTRSETCLASS.<obj>:setattrib => (OBJGEN.(<obj>):(8))
|
||||
#xtranslate MALTRSETCLASS.<obj>:onew => (OBJGEN.(<obj>):(CM_OBJECT_N+1))
|
||||
#xtranslate MALTRSETCLASS.<obj>:ocreate => (OBJGEN.(<obj>):(CM_OBJECT_N+2))
|
||||
#xtranslate MALTRSETCLASS.<obj>:rawoinit => (OBJGEN.(<obj>):(CM_OBJECT_N+3))
|
||||
#xtranslate MALTRSETCLASS.<obj>:oinitclass => (OBJGEN.(<obj>):(CM_OBJECT_N+4))
|
||||
#xtranslate MALTRSETCLASS.<obj>:getmethodsimplement => (OBJGEN.(<obj>):(CM_OBJECT_N+5))
|
||||
#xtranslate MALTRSETCLASS.<obj>:attribidx => (OBJGEN.(<obj>):(CM_OBJECT_N+6))
|
||||
#xtranslate MALTRSETCLASS.<obj>:needclassid => (OBJGEN.(<obj>):(CM_OBJECT_N+7))
|
||||
#xtranslate MALTRSETCLASS.<obj>:isinheritfrom => (OBJGEN.(<obj>):(CM_OBJECT_N+8))
|
||||
#xtranslate MALTRSETCLASS.<obj>:onewerror => (OBJGEN.(<obj>):(CM_BEHAVIOR_N+1))
|
||||
#xtranslate MALTRSETCLASS.<obj>:copyfromtoken => (OBJGEN.(<obj>):(CM_BEHAVIOR_N+2))
|
||||
#xtranslate MALTRSETCLASS.<obj>:findclassify => (OBJGEN.(<obj>):(CM_BEHAVIOR_N+3))
|
||||
#xtranslate MALTRSETCLASS.<obj>:ismatchmarker => (OBJGEN.(<obj>):(CM_TOKENCLASS_N+1))
|
||||
|
||||
|
||||
|
||||
// ™r”k”lve: onew(id,str,file,line,pos)
|
||||
|
||||
// ™r”k”lve: onew(id,str,file,line,pos)
|
||||
|
||||
#endif // _MALTRSETCLASS_OCH_
|
||||
#endif // _CA_CM_ONLY_
|
||||
|
||||
#ifndef CA_MALTRSETCLASS_N
|
||||
#define CA_MALTRSETCLASS_N CA_MMARKERCLASS_N+0
|
||||
#define CM_MALTRSETCLASS_N CM_MMARKERCLASS_N+0
|
||||
#endif // CA_MALTRSETCLASS_N
|
||||
|
||||
|
||||
**********************************************************************
|
||||
#ifdef _MALTRSET_PRG_
|
||||
#ifndef _MALTRSET_PRG_OCH_
|
||||
#define _MALTRSET_PRG_OCH_
|
||||
|
||||
|
||||
**********************************************************************
|
||||
#xtranslate othis:<m> => MALTRSET.(othis):<m>
|
||||
#xtranslate thisclass:<m> => MALTRSETCLASS.(this:getClass()):<m>
|
||||
#define CTHIS MALTRSET
|
||||
|
||||
|
||||
**********************************************************************
|
||||
#xtranslate this:<m> => MALTRSET.(this):<m>
|
||||
|
||||
#xcommand implement addalter(tokenList) => ;
|
||||
static function addalter(this,tokenList)
|
||||
#xcommand implement getstr() => static function getstr(this)
|
||||
#xcommand implement oinit(id,str,file,line,pos) => ;
|
||||
static function oinit(this,id,str,file,line,pos)
|
||||
|
||||
#ifdef _IMPLEMENT_EXPORT_
|
||||
#xcommand implement export addalter(tokenList) => ;
|
||||
function addalter(this,tokenList)
|
||||
#xcommand implement export getstr() => function getstr(this)
|
||||
#xcommand implement export oinit(id,str,file,line,pos) => ;
|
||||
function oinit(this,id,str,file,line,pos)
|
||||
#endif // _IMPLEMENT_EXPORT_
|
||||
|
||||
#xtranslate super:oinit => (OBJGENM.(eval(BEHAVIOR.clMMARKER():objmethodsimplement)).(this):(4))
|
||||
#xtranslate super:getclass => (OBJGENM.(eval(BEHAVIOR.clMMARKER():objmethodsimplement)).(this):(5))
|
||||
#xtranslate super:isclass => (OBJGENM.(eval(BEHAVIOR.clMMARKER():objmethodsimplement)).(this):(6))
|
||||
#xtranslate super:getattrib => (OBJGENM.(eval(BEHAVIOR.clMMARKER():objmethodsimplement)).(this):(7))
|
||||
#xtranslate super:setattrib => (OBJGENM.(eval(BEHAVIOR.clMMARKER():objmethodsimplement)).(this):(8))
|
||||
#xtranslate super:iserror => (OBJGENM.(eval(BEHAVIOR.clMMARKER():objmethodsimplement)).(this):(CM_OBJECT_N+1))
|
||||
#xtranslate super:errorstr => (OBJGENM.(eval(BEHAVIOR.clMMARKER():objmethodsimplement)).(this):(CM_OBJECT_N+2))
|
||||
#xtranslate super:printtostr => (OBJGENM.(eval(BEHAVIOR.clMMARKER():objmethodsimplement)).(this):(CM_OBJECT_N+3))
|
||||
#xtranslate super:getstr => (OBJGENM.(eval(BEHAVIOR.clMMARKER():objmethodsimplement)).(this):(CM_OBJECT_N+4))
|
||||
#xtranslate super:copytoken => (OBJGENM.(eval(BEHAVIOR.clMMARKER():objmethodsimplement)).(this):(CM_OBJECT_N+5))
|
||||
#xtranslate super:getname => (OBJGENM.(eval(BEHAVIOR.clMMARKER():objmethodsimplement)).(this):(CM_TOKEN_N+1))
|
||||
|
||||
**********************************************************************
|
||||
static function setCMethods(pOsztaly)
|
||||
// Egy t”mb”t felt”lt az oszt ly m–veleti blokkjaival.
|
||||
pOsztaly[(CM_MMARKER_N+1)]:={|this,tokenList| addalter(this,tokenList)}
|
||||
pOsztaly[(CM_OBJECT_N+4)]:={|this| getstr(this)}
|
||||
pOsztaly[(4)]:={|this,id,str,file,line,pos| oinit(this,id,str,file,line,pos)}
|
||||
return pOsztaly
|
||||
|
||||
**********************************************************************
|
||||
static function setCams(ta,tm)
|
||||
// Egy t”mb”t felt”lt az oszt ly ltal def. objektumok attrib£tumaival ‚s m–veleteivel.
|
||||
ta[CA_MMARKER_N+1-CA_NIL_N] := {CA_MMARKER_N+1,'alterset', }
|
||||
|
||||
tm[(CM_MMARKER_N+1)-CM_NIL_N] := {(CM_MMARKER_N+1),'addalter','tokenList',nil}
|
||||
tm[(CM_OBJECT_N+4)-CM_NIL_N] := {(CM_OBJECT_N+4),'getstr','',nil}
|
||||
tm[(4)-CM_NIL_N] := {(4),'oinit','id,str,file,line,pos',nil}
|
||||
return nil
|
||||
|
||||
#ifndef _NO_CLMALTRSET_
|
||||
#ifdef _STRICT_PARENT_
|
||||
#ifdef _CA_CM_ONLY_
|
||||
#include "meta.och"
|
||||
#else // _CA_CM_ONLY_
|
||||
#define _CA_CM_ONLY_
|
||||
#include "meta.och"
|
||||
#undef _CA_CM_ONLY_
|
||||
#endif // _CA_CM_ONLY_
|
||||
#else
|
||||
#include "meta.och"
|
||||
#endif // _STRICT_PARENT_
|
||||
**********************************************************************
|
||||
function clMALTRSET()
|
||||
// El“szedi az oszt lyt. (class)
|
||||
static osztaly
|
||||
if (osztaly==nil)
|
||||
osztaly:=META.mcMALTRSETCLASS():onew(;
|
||||
clMMARKER(),;
|
||||
"MALTRSET",;
|
||||
CA_MALTRSET_N,;
|
||||
CM_MALTRSET_N,;
|
||||
{|ta,tm|setCams(ta,tm)},;
|
||||
{|t|setCMethods(t)})
|
||||
endif
|
||||
return osztaly
|
||||
#endif // _NO_CLMALTRSET_
|
||||
|
||||
#ifndef _NO_MALTRSETCLASS_
|
||||
|
||||
**********************************************************************
|
||||
#xtranslate class:<m> => MALTRSETCLASS.(class):<m>
|
||||
|
||||
#xcommand cimplement onew(id,str,file,line,pos) => ;
|
||||
static function onew(class,id,str,file,line,pos)
|
||||
|
||||
#ifdef _IMPLEMENT_EXPORT_
|
||||
#xcommand cimplement export onew(id,str,file,line,pos) => ;
|
||||
function onew(class,id,str,file,line,pos)
|
||||
#endif // _IMPLEMENT_EXPORT_
|
||||
|
||||
#xtranslate superclass:oinit => (OBJGENM.(eval(BEHAVIOR.mcMMARKERCLASS():objmethodsimplement)).(class):(4))
|
||||
#xtranslate superclass:getclass => (OBJGENM.(eval(BEHAVIOR.mcMMARKERCLASS():objmethodsimplement)).(class):(5))
|
||||
#xtranslate superclass:isclass => (OBJGENM.(eval(BEHAVIOR.mcMMARKERCLASS():objmethodsimplement)).(class):(6))
|
||||
#xtranslate superclass:getattrib => (OBJGENM.(eval(BEHAVIOR.mcMMARKERCLASS():objmethodsimplement)).(class):(7))
|
||||
#xtranslate superclass:setattrib => (OBJGENM.(eval(BEHAVIOR.mcMMARKERCLASS():objmethodsimplement)).(class):(8))
|
||||
#xtranslate superclass:onew => (OBJGENM.(eval(BEHAVIOR.mcMMARKERCLASS():objmethodsimplement)).(class):(CM_OBJECT_N+1))
|
||||
#xtranslate superclass:ocreate => (OBJGENM.(eval(BEHAVIOR.mcMMARKERCLASS():objmethodsimplement)).(class):(CM_OBJECT_N+2))
|
||||
#xtranslate superclass:rawoinit => (OBJGENM.(eval(BEHAVIOR.mcMMARKERCLASS():objmethodsimplement)).(class):(CM_OBJECT_N+3))
|
||||
#xtranslate superclass:oinitclass => (OBJGENM.(eval(BEHAVIOR.mcMMARKERCLASS():objmethodsimplement)).(class):(CM_OBJECT_N+4))
|
||||
#xtranslate superclass:getmethodsimplement => (OBJGENM.(eval(BEHAVIOR.mcMMARKERCLASS():objmethodsimplement)).(class):(CM_OBJECT_N+5))
|
||||
#xtranslate superclass:attribidx => (OBJGENM.(eval(BEHAVIOR.mcMMARKERCLASS():objmethodsimplement)).(class):(CM_OBJECT_N+6))
|
||||
#xtranslate superclass:needclassid => (OBJGENM.(eval(BEHAVIOR.mcMMARKERCLASS():objmethodsimplement)).(class):(CM_OBJECT_N+7))
|
||||
#xtranslate superclass:isinheritfrom => (OBJGENM.(eval(BEHAVIOR.mcMMARKERCLASS():objmethodsimplement)).(class):(CM_OBJECT_N+8))
|
||||
#xtranslate superclass:onewerror => (OBJGENM.(eval(BEHAVIOR.mcMMARKERCLASS():objmethodsimplement)).(class):(CM_BEHAVIOR_N+1))
|
||||
#xtranslate superclass:copyfromtoken => (OBJGENM.(eval(BEHAVIOR.mcMMARKERCLASS():objmethodsimplement)).(class):(CM_BEHAVIOR_N+2))
|
||||
#xtranslate superclass:findclassify => (OBJGENM.(eval(BEHAVIOR.mcMMARKERCLASS():objmethodsimplement)).(class):(CM_BEHAVIOR_N+3))
|
||||
#xtranslate superclass:ismatchmarker => (OBJGENM.(eval(BEHAVIOR.mcMMARKERCLASS():objmethodsimplement)).(class):(CM_TOKENCLASS_N+1))
|
||||
|
||||
**********************************************************************
|
||||
static function setMCMethods(pOsztaly)
|
||||
// Egy t”mb”t felt”lt a metaoszt ly m–veleti blokkjaival.
|
||||
pOsztaly[(CM_OBJECT_N+1)]:={|class,id,str,file,line,pos| onew(class,id,str,file,line,pos)}
|
||||
return pOsztaly
|
||||
|
||||
**********************************************************************
|
||||
static function setMCams(ta,tm)
|
||||
// Egy t”mb”t felt”lt a metaoszt ly ltal def. objektumok attrib£tumaival ‚s m–veleteivel.
|
||||
|
||||
tm[(CM_OBJECT_N+1)-CM_NIL_N] := {(CM_OBJECT_N+1),'onew','id,str,file,line,pos',nil}
|
||||
return nil
|
||||
|
||||
**********************************************************************
|
||||
#ifndef _NO_MCMALTRSETCLASS_
|
||||
#ifdef _STRICT_PARENT_
|
||||
#ifdef _CA_CM_ONLY_
|
||||
#include "meta.och" // "metaclas.och"
|
||||
#else // _CA_CM_ONLY_
|
||||
#define _CA_CM_ONLY_
|
||||
#include "meta.och" // "metaclas.och"
|
||||
#undef _CA_CM_ONLY_
|
||||
#endif // _CA_CM_ONLY_
|
||||
#else
|
||||
#include "meta.och" // "metaclas.och"
|
||||
#endif // _STRICT_PARENT_
|
||||
function mcMALTRSETCLASS()
|
||||
// El“szedi az oszt ly metaoszt ly t. (metaclass)
|
||||
static metaOsztaly
|
||||
if (metaOsztaly==nil)
|
||||
metaOsztaly:=META.clMETA():onew(;
|
||||
mcMMARKERCLASS(),;
|
||||
"MALTRSETCLASS",;
|
||||
CA_MALTRSETCLASS_N,;
|
||||
CM_MALTRSETCLASS_N,;
|
||||
{|ta,tm|setMCams(ta,tm)},;
|
||||
{|t|setMCMethods(t)})
|
||||
endif
|
||||
return metaOsztaly
|
||||
#endif // _NO_MCMALTRSETCLASS_
|
||||
|
||||
#endif // _NO_MALTRSETCLASS_
|
||||
#ifdef _IMPLEMENT_ONEW_
|
||||
**********************************************************************
|
||||
cimplement onew(id,str,file,line,pos)
|
||||
local o:=class:ocreate()
|
||||
|
||||
MALTRSET.o:oinit(id,str,file,line,pos)
|
||||
return o
|
||||
#endif // _IMPLEMENT_ONEW_
|
||||
|
||||
**********************************************************************
|
||||
#ifdef _IMPLEMENT_OINIT_
|
||||
implement oinit(id,str,file,line,pos)
|
||||
super:oinit()
|
||||
return this
|
||||
#endif // _IMPLEMENT_OINIT_
|
||||
|
||||
**********************************************************************
|
||||
**********************************************************************
|
||||
#endif // _MALTRSET_PRG_OCH_
|
||||
#endif // _MALTRSET_PRG_
|
||||
@@ -1,57 +0,0 @@
|
||||
/*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
//*******************************************************************
|
||||
// maltrset.prg: a MALTRSET oszt ly implement ci¢ja.
|
||||
// 1999, Csisz r Levente
|
||||
|
||||
//*******************************************************************
|
||||
#include "ctoken.ch"
|
||||
|
||||
//*******************************************************************
|
||||
#include "objgen.ch"
|
||||
|
||||
#define _MALTRSET_PRG_
|
||||
#define _IMPLEMENT_ONEW_
|
||||
|
||||
#include "maltrset.och"
|
||||
|
||||
//*******************************************************************
|
||||
implement oinit(id,str,file,line,pos)
|
||||
super:oinit(id,str,file,line,pos)
|
||||
this:alterset :={}
|
||||
return this
|
||||
|
||||
//*******************************************************************
|
||||
implement addAlter(tokenList)
|
||||
aadd(this:alterset,tokenList)
|
||||
return nil
|
||||
|
||||
//*******************************************************************
|
||||
implement getStr()
|
||||
local str,i,j,alter
|
||||
|
||||
if (!this:id==TKID_MALTERSET)
|
||||
return super:getStr()
|
||||
endif
|
||||
str:=""
|
||||
for i:=1 to len(this:alterset)
|
||||
str+="["
|
||||
alter:=this:alterset[i]
|
||||
for j:=1 to len(alter)
|
||||
str+=TOKEN.(alter[j]):getStr()
|
||||
end for
|
||||
str+="]"
|
||||
end for
|
||||
|
||||
if (this:isError())
|
||||
str+=", Error: "+this:errorStr()+guessedEol()
|
||||
endif
|
||||
|
||||
return str
|
||||
//*******************************************************************
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1,31 +0,0 @@
|
||||
//
|
||||
// $Id$
|
||||
//
|
||||
|
||||
//*******************************************************************
|
||||
// mcontrol.cls: Ez egy olyan eszk”z, ami az inputra Łj
|
||||
// 'changer'-eket tud indˇtani.
|
||||
// 1999, Csisz r Levente
|
||||
|
||||
|
||||
class MCONTROL TREADER
|
||||
|
||||
attrib defdict
|
||||
attrib xtrdict
|
||||
attrib ujsor
|
||||
attrib trPrsAlg
|
||||
|
||||
rmethod readItem()
|
||||
// Olvas egy elemet. Ha az elem megfelel bizonyos felt‚teleknek
|
||||
// akkor indˇt r egy 'changer'-t.
|
||||
// Ret: Az elem, ha OK, nil, ha v‚ge van a streamnek, vagy ha
|
||||
// hiba volt.
|
||||
|
||||
rmethod oinit(inputReader,name,defdict,xtrdict,errorStream,trPrsAlg)
|
||||
|
||||
metaclass
|
||||
|
||||
rmethod onew(inputReader,name,defdict,xtrdict,errorStream,trPrsAlg)
|
||||
|
||||
|
||||
|
||||
@@ -1,295 +0,0 @@
|
||||
// MCONTROL.och oszt ly implement ci¢.
|
||||
// Gener lva: 1999.06.10, 14:40:08, OBJCCC v2.2.03
|
||||
// Meta oszt ly defin¡ci¢: Van
|
||||
|
||||
|
||||
#ifndef CA_TREADER_N
|
||||
#ifdef _STRICT_PARENT_
|
||||
#ifdef _CA_CM_ONLY_
|
||||
#include "TREADER.och"
|
||||
#else // _CA_CM_ONLY_
|
||||
#define _CA_CM_ONLY_
|
||||
#include "TREADER.och"
|
||||
#undef _CA_CM_ONLY_
|
||||
#endif // _CA_CM_ONLY_
|
||||
#else
|
||||
#include "TREADER.och"
|
||||
#endif // _STRICT_PARENT_
|
||||
#endif // CA_TREADER_N
|
||||
|
||||
#ifndef _CA_CM_ONLY_
|
||||
#ifndef _MCONTROL_OCH_
|
||||
#define _MCONTROL_OCH_
|
||||
|
||||
|
||||
#xtranslate MCONTROL.<obj>:name => <obj>\[CA_OBJECT_N+1\]
|
||||
#xtranslate MCONTROL.<obj>:errorstream => <obj>\[CA_OBJECT_N+2\]
|
||||
#xtranslate MCONTROL.<obj>:tbuffer => <obj>\[CA_OBJECT_N+3\]
|
||||
#xtranslate MCONTROL.<obj>:inputreader => <obj>\[CA_READER_N+1\]
|
||||
|
||||
|
||||
#xtranslate MCONTROL.<obj>:oinit => (OBJGEN.(<obj>):(4))
|
||||
#xtranslate MCONTROL.<obj>:getclass => (OBJGEN.(<obj>):(5))
|
||||
#xtranslate MCONTROL.<obj>:isclass => (OBJGEN.(<obj>):(6))
|
||||
#xtranslate MCONTROL.<obj>:getattrib => (OBJGEN.(<obj>):(7))
|
||||
#xtranslate MCONTROL.<obj>:setattrib => (OBJGEN.(<obj>):(8))
|
||||
#xtranslate MCONTROL.<obj>:read => (OBJGEN.(<obj>):(CM_OBJECT_N+1))
|
||||
#xtranslate MCONTROL.<obj>:unread => (OBJGEN.(<obj>):(CM_OBJECT_N+2))
|
||||
#xtranslate MCONTROL.<obj>:readtbuffer => (OBJGEN.(<obj>):(CM_OBJECT_N+3))
|
||||
#xtranslate MCONTROL.<obj>:arraytbuffer => (OBJGEN.(<obj>):(CM_OBJECT_N+4))
|
||||
#xtranslate MCONTROL.<obj>:readitem => (OBJGEN.(<obj>):(CM_OBJECT_N+5))
|
||||
#xtranslate MCONTROL.<obj>:iserror => (OBJGEN.(<obj>):(CM_OBJECT_N+6))
|
||||
#xtranslate MCONTROL.<obj>:adderror => (OBJGEN.(<obj>):(CM_OBJECT_N+7))
|
||||
#xtranslate MCONTROL.<obj>:destruct => (OBJGEN.(<obj>):(CM_OBJECT_N+8))
|
||||
#xtranslate MCONTROL.<obj>:readinput => (OBJGEN.(<obj>):(CM_READER_N+1))
|
||||
#xtranslate MCONTROL.<obj>:unreadinput => (OBJGEN.(<obj>):(CM_READER_N+2))
|
||||
#xtranslate MCONTROL.<obj>:addinputreader => (OBJGEN.(<obj>):(CM_READER_N+3))
|
||||
|
||||
|
||||
#xtranslate MCONTROL.<obj>:defdict => <obj>\[CA_TREADER_N+1\]
|
||||
#xtranslate MCONTROL.<obj>:xtrdict => <obj>\[CA_TREADER_N+2\]
|
||||
#xtranslate MCONTROL.<obj>:ujsor => <obj>\[CA_TREADER_N+3\]
|
||||
#xtranslate MCONTROL.<obj>:trprsalg => <obj>\[CA_TREADER_N+4\]
|
||||
|
||||
// ™r”k”lve: readitem()
|
||||
// ™r”k”lve: oinit(inputReader,name,defdict,xtrdict,errorStream,trPrsAlg)
|
||||
|
||||
// ™r”k”lve: readitem()
|
||||
// ™r”k”lve: oinit(inputReader,name,defdict,xtrdict,errorStream,trPrsAlg)
|
||||
|
||||
#endif // _MCONTROL_OCH_
|
||||
#endif // _CA_CM_ONLY_
|
||||
|
||||
#ifndef CA_MCONTROL_N
|
||||
#define CA_MCONTROL_N CA_TREADER_N+4
|
||||
#define CM_MCONTROL_N CM_TREADER_N+0
|
||||
#endif // CA_MCONTROL_N
|
||||
|
||||
#ifndef _CA_CM_ONLY_
|
||||
#ifndef _MCONTROLCLASS_OCH_
|
||||
#define _MCONTROLCLASS_OCH_
|
||||
|
||||
**********************************************************************
|
||||
#xtranslate C.MCONTROL:<m> => (MCONTROLCLASS.clMCONTROL():<m>)
|
||||
#xtranslate C.MCONTROL:self() => (clMCONTROL())
|
||||
|
||||
|
||||
#xtranslate MCONTROLCLASS.<obj>:parent => <obj>\[CA_OBJECT_N+1\]
|
||||
#xtranslate MCONTROLCLASS.<obj>:name => <obj>\[CA_OBJECT_N+2\]
|
||||
#xtranslate MCONTROLCLASS.<obj>:objsize => <obj>\[CA_OBJECT_N+3\]
|
||||
#xtranslate MCONTROLCLASS.<obj>:attribs => <obj>\[CA_OBJECT_N+4\]
|
||||
#xtranslate MCONTROLCLASS.<obj>:methods => <obj>\[CA_OBJECT_N+5\]
|
||||
#xtranslate MCONTROLCLASS.<obj>:classid => <obj>\[CA_OBJECT_N+6\]
|
||||
#xtranslate MCONTROLCLASS.<obj>:parentclassids => <obj>\[CA_OBJECT_N+7\]
|
||||
#xtranslate MCONTROLCLASS.<obj>:amblock => <obj>\[CA_OBJECT_N+8\]
|
||||
#xtranslate MCONTROLCLASS.<obj>:methodsblock => <obj>\[CA_OBJECT_N+9\]
|
||||
#xtranslate MCONTROLCLASS.<obj>:objmethodsimplement => <obj>\[CA_OBJECT_N+10\]
|
||||
|
||||
|
||||
#xtranslate MCONTROLCLASS.<obj>:oinit => (OBJGEN.(<obj>):(4))
|
||||
#xtranslate MCONTROLCLASS.<obj>:getclass => (OBJGEN.(<obj>):(5))
|
||||
#xtranslate MCONTROLCLASS.<obj>:isclass => (OBJGEN.(<obj>):(6))
|
||||
#xtranslate MCONTROLCLASS.<obj>:getattrib => (OBJGEN.(<obj>):(7))
|
||||
#xtranslate MCONTROLCLASS.<obj>:setattrib => (OBJGEN.(<obj>):(8))
|
||||
#xtranslate MCONTROLCLASS.<obj>:onew => (OBJGEN.(<obj>):(CM_OBJECT_N+1))
|
||||
#xtranslate MCONTROLCLASS.<obj>:ocreate => (OBJGEN.(<obj>):(CM_OBJECT_N+2))
|
||||
#xtranslate MCONTROLCLASS.<obj>:rawoinit => (OBJGEN.(<obj>):(CM_OBJECT_N+3))
|
||||
#xtranslate MCONTROLCLASS.<obj>:oinitclass => (OBJGEN.(<obj>):(CM_OBJECT_N+4))
|
||||
#xtranslate MCONTROLCLASS.<obj>:getmethodsimplement => (OBJGEN.(<obj>):(CM_OBJECT_N+5))
|
||||
#xtranslate MCONTROLCLASS.<obj>:attribidx => (OBJGEN.(<obj>):(CM_OBJECT_N+6))
|
||||
#xtranslate MCONTROLCLASS.<obj>:needclassid => (OBJGEN.(<obj>):(CM_OBJECT_N+7))
|
||||
#xtranslate MCONTROLCLASS.<obj>:isinheritfrom => (OBJGEN.(<obj>):(CM_OBJECT_N+8))
|
||||
|
||||
|
||||
|
||||
// ™r”k”lve: onew(inputReader,name,defdict,xtrdict,errorStream,trPrsAlg)
|
||||
|
||||
// ™r”k”lve: onew(inputReader,name,defdict,xtrdict,errorStream,trPrsAlg)
|
||||
|
||||
#endif // _MCONTROLCLASS_OCH_
|
||||
#endif // _CA_CM_ONLY_
|
||||
|
||||
#ifndef CA_MCONTROLCLASS_N
|
||||
#define CA_MCONTROLCLASS_N CA_TREADERCLASS_N+0
|
||||
#define CM_MCONTROLCLASS_N CM_TREADERCLASS_N+0
|
||||
#endif // CA_MCONTROLCLASS_N
|
||||
|
||||
|
||||
**********************************************************************
|
||||
#ifdef _MCONTROL_PRG_
|
||||
#ifndef _MCONTROL_PRG_OCH_
|
||||
#define _MCONTROL_PRG_OCH_
|
||||
|
||||
|
||||
**********************************************************************
|
||||
#xtranslate othis:<m> => MCONTROL.(othis):<m>
|
||||
#xtranslate thisclass:<m> => MCONTROLCLASS.(this:getClass()):<m>
|
||||
#define CTHIS MCONTROL
|
||||
|
||||
|
||||
**********************************************************************
|
||||
#xtranslate this:<m> => MCONTROL.(this):<m>
|
||||
|
||||
#xcommand implement readitem() => static function readitem(this)
|
||||
#xcommand implement oinit(inputReader,name,defdict,xtrdict,errorStream,trPrsAlg) => ;
|
||||
static function oinit(this,inputReader,name,defdict,xtrdict,errorStream,trPrsAlg)
|
||||
|
||||
#ifdef _IMPLEMENT_EXPORT_
|
||||
#xcommand implement export readitem() => function readitem(this)
|
||||
#xcommand implement export oinit(inputReader,name,defdict,xtrdict,errorStream,trPrsAlg) => ;
|
||||
function oinit(this,inputReader,name,defdict,xtrdict,errorStream,trPrsAlg)
|
||||
#endif // _IMPLEMENT_EXPORT_
|
||||
|
||||
#xtranslate super:oinit => (OBJGENM.(eval(BEHAVIOR.clTREADER():objmethodsimplement)).(this):(4))
|
||||
#xtranslate super:getclass => (OBJGENM.(eval(BEHAVIOR.clTREADER():objmethodsimplement)).(this):(5))
|
||||
#xtranslate super:isclass => (OBJGENM.(eval(BEHAVIOR.clTREADER():objmethodsimplement)).(this):(6))
|
||||
#xtranslate super:getattrib => (OBJGENM.(eval(BEHAVIOR.clTREADER():objmethodsimplement)).(this):(7))
|
||||
#xtranslate super:setattrib => (OBJGENM.(eval(BEHAVIOR.clTREADER():objmethodsimplement)).(this):(8))
|
||||
#xtranslate super:read => (OBJGENM.(eval(BEHAVIOR.clTREADER():objmethodsimplement)).(this):(CM_OBJECT_N+1))
|
||||
#xtranslate super:unread => (OBJGENM.(eval(BEHAVIOR.clTREADER():objmethodsimplement)).(this):(CM_OBJECT_N+2))
|
||||
#xtranslate super:readtbuffer => (OBJGENM.(eval(BEHAVIOR.clTREADER():objmethodsimplement)).(this):(CM_OBJECT_N+3))
|
||||
#xtranslate super:arraytbuffer => (OBJGENM.(eval(BEHAVIOR.clTREADER():objmethodsimplement)).(this):(CM_OBJECT_N+4))
|
||||
#xtranslate super:readitem => (OBJGENM.(eval(BEHAVIOR.clTREADER():objmethodsimplement)).(this):(CM_OBJECT_N+5))
|
||||
#xtranslate super:iserror => (OBJGENM.(eval(BEHAVIOR.clTREADER():objmethodsimplement)).(this):(CM_OBJECT_N+6))
|
||||
#xtranslate super:adderror => (OBJGENM.(eval(BEHAVIOR.clTREADER():objmethodsimplement)).(this):(CM_OBJECT_N+7))
|
||||
#xtranslate super:destruct => (OBJGENM.(eval(BEHAVIOR.clTREADER():objmethodsimplement)).(this):(CM_OBJECT_N+8))
|
||||
#xtranslate super:readinput => (OBJGENM.(eval(BEHAVIOR.clTREADER():objmethodsimplement)).(this):(CM_READER_N+1))
|
||||
#xtranslate super:unreadinput => (OBJGENM.(eval(BEHAVIOR.clTREADER():objmethodsimplement)).(this):(CM_READER_N+2))
|
||||
#xtranslate super:addinputreader => (OBJGENM.(eval(BEHAVIOR.clTREADER():objmethodsimplement)).(this):(CM_READER_N+3))
|
||||
|
||||
**********************************************************************
|
||||
static function setCMethods(pOsztaly)
|
||||
// Egy t”mb”t felt”lt az oszt ly m–veleti blokkjaival.
|
||||
pOsztaly[(CM_OBJECT_N+5)]:={|this| readitem(this)}
|
||||
pOsztaly[(4)]:={|this,inputReader,name,defdict,xtrdict,errorStream,trPrsAlg| oinit(this,inputReader,name,defdict,xtrdict,errorStream,trPrsAlg)}
|
||||
return pOsztaly
|
||||
|
||||
**********************************************************************
|
||||
static function setCams(ta,tm)
|
||||
// Egy t”mb”t felt”lt az oszt ly ltal def. objektumok attrib£tumaival ‚s m–veleteivel.
|
||||
ta[CA_TREADER_N+1-CA_NIL_N] := {CA_TREADER_N+1,'defdict',nil}
|
||||
ta[CA_TREADER_N+2-CA_NIL_N] := {CA_TREADER_N+2,'xtrdict',nil}
|
||||
ta[CA_TREADER_N+3-CA_NIL_N] := {CA_TREADER_N+3,'ujsor',nil}
|
||||
ta[CA_TREADER_N+4-CA_NIL_N] := {CA_TREADER_N+4,'trprsalg',nil}
|
||||
|
||||
tm[(CM_OBJECT_N+5)-CM_NIL_N] := {(CM_OBJECT_N+5),'readitem','',nil}
|
||||
tm[(4)-CM_NIL_N] := {(4),'oinit','inputReader,name,defdict,xtrdict,errorStream,trPrsAlg',nil}
|
||||
return nil
|
||||
|
||||
#ifndef _NO_CLMCONTROL_
|
||||
#ifdef _STRICT_PARENT_
|
||||
#ifdef _CA_CM_ONLY_
|
||||
#include "meta.och"
|
||||
#else // _CA_CM_ONLY_
|
||||
#define _CA_CM_ONLY_
|
||||
#include "meta.och"
|
||||
#undef _CA_CM_ONLY_
|
||||
#endif // _CA_CM_ONLY_
|
||||
#else
|
||||
#include "meta.och"
|
||||
#endif // _STRICT_PARENT_
|
||||
**********************************************************************
|
||||
function clMCONTROL()
|
||||
// El“szedi az oszt lyt. (class)
|
||||
static osztaly
|
||||
if (osztaly==nil)
|
||||
osztaly:=META.mcMCONTROLCLASS():onew(;
|
||||
clTREADER(),;
|
||||
"MCONTROL",;
|
||||
CA_MCONTROL_N,;
|
||||
CM_MCONTROL_N,;
|
||||
{|ta,tm|setCams(ta,tm)},;
|
||||
{|t|setCMethods(t)})
|
||||
endif
|
||||
return osztaly
|
||||
#endif // _NO_CLMCONTROL_
|
||||
|
||||
#ifndef _NO_MCONTROLCLASS_
|
||||
|
||||
**********************************************************************
|
||||
#xtranslate class:<m> => MCONTROLCLASS.(class):<m>
|
||||
|
||||
#xcommand cimplement onew(inputReader,name,defdict,xtrdict,errorStream,trPrsAlg) => ;
|
||||
static function onew(class,inputReader,name,defdict,xtrdict,errorStream,trPrsAlg)
|
||||
|
||||
#ifdef _IMPLEMENT_EXPORT_
|
||||
#xcommand cimplement export onew(inputReader,name,defdict,xtrdict,errorStream,trPrsAlg) => ;
|
||||
function onew(class,inputReader,name,defdict,xtrdict,errorStream,trPrsAlg)
|
||||
#endif // _IMPLEMENT_EXPORT_
|
||||
|
||||
#xtranslate superclass:oinit => (OBJGENM.(eval(BEHAVIOR.mcTREADERCLASS():objmethodsimplement)).(class):(4))
|
||||
#xtranslate superclass:getclass => (OBJGENM.(eval(BEHAVIOR.mcTREADERCLASS():objmethodsimplement)).(class):(5))
|
||||
#xtranslate superclass:isclass => (OBJGENM.(eval(BEHAVIOR.mcTREADERCLASS():objmethodsimplement)).(class):(6))
|
||||
#xtranslate superclass:getattrib => (OBJGENM.(eval(BEHAVIOR.mcTREADERCLASS():objmethodsimplement)).(class):(7))
|
||||
#xtranslate superclass:setattrib => (OBJGENM.(eval(BEHAVIOR.mcTREADERCLASS():objmethodsimplement)).(class):(8))
|
||||
#xtranslate superclass:onew => (OBJGENM.(eval(BEHAVIOR.mcTREADERCLASS():objmethodsimplement)).(class):(CM_OBJECT_N+1))
|
||||
#xtranslate superclass:ocreate => (OBJGENM.(eval(BEHAVIOR.mcTREADERCLASS():objmethodsimplement)).(class):(CM_OBJECT_N+2))
|
||||
#xtranslate superclass:rawoinit => (OBJGENM.(eval(BEHAVIOR.mcTREADERCLASS():objmethodsimplement)).(class):(CM_OBJECT_N+3))
|
||||
#xtranslate superclass:oinitclass => (OBJGENM.(eval(BEHAVIOR.mcTREADERCLASS():objmethodsimplement)).(class):(CM_OBJECT_N+4))
|
||||
#xtranslate superclass:getmethodsimplement => (OBJGENM.(eval(BEHAVIOR.mcTREADERCLASS():objmethodsimplement)).(class):(CM_OBJECT_N+5))
|
||||
#xtranslate superclass:attribidx => (OBJGENM.(eval(BEHAVIOR.mcTREADERCLASS():objmethodsimplement)).(class):(CM_OBJECT_N+6))
|
||||
#xtranslate superclass:needclassid => (OBJGENM.(eval(BEHAVIOR.mcTREADERCLASS():objmethodsimplement)).(class):(CM_OBJECT_N+7))
|
||||
#xtranslate superclass:isinheritfrom => (OBJGENM.(eval(BEHAVIOR.mcTREADERCLASS():objmethodsimplement)).(class):(CM_OBJECT_N+8))
|
||||
|
||||
**********************************************************************
|
||||
static function setMCMethods(pOsztaly)
|
||||
// Egy t”mb”t felt”lt a metaoszt ly m–veleti blokkjaival.
|
||||
pOsztaly[(CM_OBJECT_N+1)]:={|class,inputReader,name,defdict,xtrdict,errorStream,trPrsAlg| onew(class,inputReader,name,defdict,xtrdict,errorStream,trPrsAlg)}
|
||||
return pOsztaly
|
||||
|
||||
**********************************************************************
|
||||
static function setMCams(ta,tm)
|
||||
// Egy t”mb”t felt”lt a metaoszt ly ltal def. objektumok attrib£tumaival ‚s m–veleteivel.
|
||||
|
||||
tm[(CM_OBJECT_N+1)-CM_NIL_N] := {(CM_OBJECT_N+1),'onew','inputReader,name,defdict,xtrdict,errorStream,trPrsAlg',nil}
|
||||
return nil
|
||||
|
||||
**********************************************************************
|
||||
#ifndef _NO_MCMCONTROLCLASS_
|
||||
#ifdef _STRICT_PARENT_
|
||||
#ifdef _CA_CM_ONLY_
|
||||
#include "meta.och" // "metaclas.och"
|
||||
#else // _CA_CM_ONLY_
|
||||
#define _CA_CM_ONLY_
|
||||
#include "meta.och" // "metaclas.och"
|
||||
#undef _CA_CM_ONLY_
|
||||
#endif // _CA_CM_ONLY_
|
||||
#else
|
||||
#include "meta.och" // "metaclas.och"
|
||||
#endif // _STRICT_PARENT_
|
||||
function mcMCONTROLCLASS()
|
||||
// El“szedi az oszt ly metaoszt ly t. (metaclass)
|
||||
static metaOsztaly
|
||||
if (metaOsztaly==nil)
|
||||
metaOsztaly:=META.clMETA():onew(;
|
||||
mcTREADERCLASS(),;
|
||||
"MCONTROLCLASS",;
|
||||
CA_MCONTROLCLASS_N,;
|
||||
CM_MCONTROLCLASS_N,;
|
||||
{|ta,tm|setMCams(ta,tm)},;
|
||||
{|t|setMCMethods(t)})
|
||||
endif
|
||||
return metaOsztaly
|
||||
#endif // _NO_MCMCONTROLCLASS_
|
||||
|
||||
#endif // _NO_MCONTROLCLASS_
|
||||
#ifdef _IMPLEMENT_ONEW_
|
||||
**********************************************************************
|
||||
cimplement onew(inputReader,name,defdict,xtrdict,errorStream,trPrsAlg)
|
||||
local o:=class:ocreate()
|
||||
|
||||
MCONTROL.o:oinit(inputReader,name,defdict,xtrdict,errorStream,trPrsAlg)
|
||||
return o
|
||||
#endif // _IMPLEMENT_ONEW_
|
||||
|
||||
**********************************************************************
|
||||
#ifdef _IMPLEMENT_OINIT_
|
||||
implement oinit(inputReader,name,defdict,xtrdict,errorStream,trPrsAlg)
|
||||
super:oinit()
|
||||
return this
|
||||
#endif // _IMPLEMENT_OINIT_
|
||||
|
||||
**********************************************************************
|
||||
**********************************************************************
|
||||
#endif // _MCONTROL_PRG_OCH_
|
||||
#endif // _MCONTROL_PRG_
|
||||
@@ -1,358 +0,0 @@
|
||||
/*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
//*******************************************************************
|
||||
// mcontrol.prg: Az MCONTROL oszt ly implement ci¢ja.
|
||||
// 1999, Csisz r Levente
|
||||
|
||||
//*******************************************************************
|
||||
// #define DEBUG
|
||||
#include "debug.ch"
|
||||
#include "ctoken.ch"
|
||||
|
||||
//*******************************************************************
|
||||
#include "objgen.ch"
|
||||
|
||||
//*******************************************************************
|
||||
#include "token.och"
|
||||
#include "mparser.och"
|
||||
#include "tbuffer.och"
|
||||
#include "defdict.och"
|
||||
#include "xtrdict.och"
|
||||
|
||||
//*******************************************************************
|
||||
#define _MCONTROL_PRG_
|
||||
#define _IMPLEMENT_ONEW_
|
||||
|
||||
#include "mcontrol.och"
|
||||
|
||||
//*******************************************************************
|
||||
implement oinit(inputReader,name,defdict,xtrdict,errorStream,trPrsAlg)
|
||||
|
||||
super:oinit(inputReader,name,errorStream)
|
||||
|
||||
this:defdict:=defdict
|
||||
this:xtrdict:=xtrdict
|
||||
this:ujsor:=.t.
|
||||
this:trPrsAlg:=trPrsAlg
|
||||
|
||||
return this
|
||||
|
||||
//*******************************************************************
|
||||
#ifdef HATULROL_ELORE
|
||||
|
||||
//*******************************************************************
|
||||
// H tulr¢l el“re helyettes¡t‚s.
|
||||
#error "Ez m r nem m–k”dik, csak az algoritmus megmutat s ra van itt."
|
||||
//*******************************************************************
|
||||
implement readItem()
|
||||
/*
|
||||
- Egy £j mcontrol az £j mparser inputja, ¡gy oldja meg a
|
||||
rekurzi¢t.
|
||||
|
||||
- Sikertelen helyettes¡t‚sn‚l az eg‚sz megvizsg lt token
|
||||
sorozat mehet az outputra.
|
||||
|
||||
- Sikeres helyettes¡t‚sn‚l az £j token sorozat visszamegy az
|
||||
inputra.
|
||||
|
||||
- Nem ismeri az xcommand-ot.
|
||||
*/
|
||||
local item,w,newMControl,nmtbuf
|
||||
local i
|
||||
|
||||
while(nil!=(item:=this:readInput()) .and.;
|
||||
(TOKEN.item:id==TKID_NEV .or.;
|
||||
TOKEN.item:id==TKID_CHAR .or.;
|
||||
TOKEN.item:id==TKID_STRING .or.;
|
||||
TOKEN.item:id==TKID_SZAMTOMB))
|
||||
|
||||
newMControl:=thisclass:onew(this:inputReader,;
|
||||
this:name,;
|
||||
this:defdict,;
|
||||
this:xtrdict,;
|
||||
this:errorStream)
|
||||
if (nil==(w:=C.MPARSER:parse(item,;
|
||||
newMControl,;
|
||||
this:name,;
|
||||
this:defdict,;
|
||||
this:xtrdict,;
|
||||
this:errorStream)))
|
||||
// Nincs ilyen makr¢
|
||||
exit
|
||||
endif
|
||||
|
||||
// A newMControl-ban lev“ puffert <20>r¡teni kell, mert most a
|
||||
// newMControl-t t”r”lni fogjuk. Ez‚rt puffer tartalm t
|
||||
// visszatessz<73>k az inputra (sikeress‚g eset‚n), ‚s kitessz<73>k
|
||||
// az outputra (sikertelens‚g eset‚n)
|
||||
// Mj.: <20>ltal ban <20>resnek kell lennie, egyenl“re nem siker<65>lt
|
||||
// olyan teszt fil‚t csin lni, amiben a newMControl
|
||||
// puffer‚ben lett volna valami.
|
||||
|
||||
// PDEBUG(outerr("megvan!",crlf()))
|
||||
if (w[1])
|
||||
// Sikeres. Az eredm‚nyt vissza kell tenni az inputra.
|
||||
|
||||
// El“sz”r a newMControl-ban lev“ puffer megy.
|
||||
nmtbuf:=CTHIS.newMControl:arrayTBuffer()
|
||||
for i:=len(nmtbuf) to 1 step -1
|
||||
PDEBUG(outerr("newMControl vissza az inputra: "+TOKEN.(nmtbuf[i]):getStr(),crlf()))
|
||||
this:unreadInput(nmtbuf[i])
|
||||
end for
|
||||
|
||||
// Azut n maga az eredm‚ny.
|
||||
w:=w[2]
|
||||
for i:=len(w) to 1 step -1
|
||||
this:unreadInput(w[i])
|
||||
end for
|
||||
else
|
||||
// A newMControl-ban lev“ puffert is elk<6C>ldhetj<74>k, mert
|
||||
// az m r elemezve volt.
|
||||
nmtbuf:=CTHIS.newMControl:arrayTBuffer()
|
||||
for i:=len(nmtbuf) to 1 step -1
|
||||
PDEBUG(outerr("newMControl az outputra: "+TOKEN.(nmtbuf[i]):getStr(),crlf()))
|
||||
this:unread(nmtbuf[i])
|
||||
end for
|
||||
|
||||
// Sikertelen, az eredm‚ny megy az outputra.
|
||||
w:=w[2]
|
||||
for i:=len(w) to 1 step -1
|
||||
this:unread(w[i])
|
||||
end for
|
||||
|
||||
// Most a tbuffer-b“l kell olvasnunk.
|
||||
if (nil!=(item:=this:readTBuffer()))
|
||||
exit
|
||||
endif
|
||||
endif
|
||||
end while
|
||||
|
||||
return item
|
||||
//*******************************************************************
|
||||
|
||||
#else
|
||||
|
||||
//*******************************************************************
|
||||
static function findTreeMatch(dictTree,tkId,tkStr)
|
||||
local i,leftToken,id
|
||||
|
||||
for i:=1 to len(dictTree)
|
||||
leftToken:=dictTree[i][1]
|
||||
id:=TOKEN.leftToken:id
|
||||
if !(id==TKID_NEV .or.;
|
||||
id==TKID_CHAR .or.;
|
||||
id==TKID_STRING .or.;
|
||||
id==TKID_SZAMTOMB)
|
||||
return i
|
||||
endif
|
||||
if (isMatchNToken(tkId,tkStr,;
|
||||
TOKEN.leftToken:id,TOKEN.leftToken:str,;
|
||||
TOKEN.leftToken:eqType))
|
||||
return i
|
||||
endif
|
||||
end for
|
||||
return 0
|
||||
//*******************************************************************
|
||||
// El“r“l h tra helyettes¡t‚s.
|
||||
//*******************************************************************
|
||||
implement readItem()
|
||||
/*
|
||||
El“r”l h tra helyettes¡t‚s.
|
||||
|
||||
- Nincs sz<73>ks‚g arra, hogy az mcontrol legyen az £j mparser
|
||||
inputja.
|
||||
|
||||
- Sikertelen helyettes¡t‚sn‚l csak egy tokent mehet<65>nk el“re.
|
||||
|
||||
- Sikeres helyettes¡t‚sn‚l a sor elej‚ig kell visszamenni.
|
||||
Ebb“l k”vetkezik, hogy csak akkor ad token-t, ha a teljes sort
|
||||
beolvasta ‚s azon m r nem lehet helyettes¡t‚st v‚gezni.
|
||||
|
||||
- Ez ismeri az xcommand-ot is.
|
||||
*/
|
||||
|
||||
local item,w,i,edefdict,mi,mehet
|
||||
|
||||
// Ha a tbuffer-ben van valami, akkor abb¢l adunk.
|
||||
if (nil!=(item:=this:readTBuffer()))
|
||||
return item
|
||||
endif
|
||||
|
||||
// A tbuffer <20>res, £j sor van.
|
||||
this:ujsor:=.t.
|
||||
mi:=array(2)
|
||||
|
||||
while(nil!=(item:=this:readInput()) .and.;
|
||||
!(TOKEN.item:id==TKID_UJSOR .or.;
|
||||
TOKEN.item:id==TKID_BOS .or.;
|
||||
TOKEN.item:id==TKID_EOS .or.;
|
||||
(TOKEN.item:id==TKID_CHAR .and. TOKEN.item:str==";")))
|
||||
|
||||
if (TOKEN.item:id==TKID_NEV .or.;
|
||||
TOKEN.item:id==TKID_CHAR .or.;
|
||||
TOKEN.item:id==TKID_STRING .or.;
|
||||
TOKEN.item:id==TKID_SZAMTOMB)
|
||||
// Helyettes¡t<C2A1>nk.
|
||||
mehet:=.f.
|
||||
if (TOKEN.item:id==TKID_NEV)
|
||||
if (nil!=(edefdict:=DEFDICT.(this:defdict):atKey(TOKEN.item:str)))
|
||||
mehet:=.t.
|
||||
endif
|
||||
else
|
||||
edefdict:=nil
|
||||
endif
|
||||
if (this:trPrsAlg==TRPRA_TREE)
|
||||
if (0!=(mi[1]:=findTreeMatch(;
|
||||
XTRDICT.(this:xtrdict):trdictTree,;
|
||||
TOKEN.item:id,;
|
||||
TOKEN.item:str)))
|
||||
mehet:=.t.
|
||||
endif
|
||||
if (this:ujsor)
|
||||
if (0!=(mi[2]:=findTreeMatch(;
|
||||
XTRDICT.(this:xtrdict):cmdictTree,;
|
||||
TOKEN.item:id,;
|
||||
TOKEN.item:str)))
|
||||
mehet:=.t.
|
||||
endif
|
||||
else
|
||||
mi[2]:=0
|
||||
endif
|
||||
// mi:=nil
|
||||
else
|
||||
mi[1]:=0
|
||||
mi[2]:=0
|
||||
endif
|
||||
if (mehet)
|
||||
if (nil==(w:=C.MPARSER:parse(item,;
|
||||
this:inputReader,;
|
||||
this:name,;
|
||||
this:defdict,;
|
||||
edefdict,;
|
||||
this:xtrdict,;
|
||||
mi,;
|
||||
this:errorStream,;
|
||||
this:ujsor,;
|
||||
this:trPrsAlg)))
|
||||
// Nincs ilyen makr¢.
|
||||
// Az item a tbuffer-be.
|
||||
TBUFFER.(this:tBuffer):put(item)
|
||||
this:ujsor:=.f.
|
||||
elseif (w[1])
|
||||
// Sikeres.
|
||||
// Az eredm‚ny ‚s a tbuffer vissza az inputra ‚s megint sor
|
||||
// elej‚n vagyunk.
|
||||
|
||||
// El“sz”r az eredm‚ny.
|
||||
w:=w[2]
|
||||
for i:=len(w) to 1 step -1
|
||||
this:unreadInput(w[i])
|
||||
end for
|
||||
|
||||
// Azut n a tbuffer
|
||||
for i:=TBUFFER.(this:tBuffer):bItemNumber() to 1 step -1
|
||||
PDEBUG(outerr("tBuffer vissza az inputra: "+;
|
||||
TOKEN.(TBUFFER.(this:tBuffer):getBItem(i)):getStr(),newline()))
|
||||
this:unreadInput(TBUFFER.(this:tBuffer):getBItem(i))
|
||||
end for
|
||||
TBUFFER.(this:tBuffer):clear()
|
||||
this:ujsor:=.t.
|
||||
else
|
||||
// Sikertelen.
|
||||
// Az eredm‚ny els“ item-je az output-ra megy, a t”bbi
|
||||
// az inputra.
|
||||
|
||||
w:=w[2]
|
||||
for i:=len(w) to 2 step -1
|
||||
this:unreadInput(w[i])
|
||||
end for
|
||||
TBUFFER.(this:tBuffer):put(w[1])
|
||||
this:ujsor:=.f.
|
||||
endif
|
||||
else
|
||||
// <20>ttessz<73>k.
|
||||
TBUFFER.(this:tBuffer):put(item)
|
||||
endif
|
||||
else
|
||||
// <20>ttessz<73>k.
|
||||
TBUFFER.(this:tBuffer):put(item)
|
||||
endif
|
||||
end while
|
||||
if (item!=nil)
|
||||
TBUFFER.(this:tBuffer):put(item)
|
||||
endif
|
||||
return TBUFFER.(this:tBuffer):get()
|
||||
|
||||
#ifdef OLD
|
||||
while(nil!=(item:=this:readInput()) .and.;
|
||||
(TOKEN.item:id==TKID_NEV .or.;
|
||||
TOKEN.item:id==TKID_CHAR .or.;
|
||||
TOKEN.item:id==TKID_STRING .or.;
|
||||
TOKEN.item:id==TKID_SZAMTOMB))
|
||||
|
||||
// newMControl:=thisclass:onew(this:inputReader,;
|
||||
// this:name,;
|
||||
// this:defdict,;
|
||||
// this:xtrdict,;
|
||||
// this:errorStream)
|
||||
if (nil==(w:=C.MPARSER:parse(item,;
|
||||
this:inputReader,;
|
||||
this:name,;
|
||||
this:defdict,;
|
||||
this:xtrdict,;
|
||||
this:errorStream,this:ujsor)))
|
||||
// Nincs ilyen makr¢
|
||||
exit
|
||||
endif
|
||||
|
||||
// PDEBUG(outerr("megvan!",crlf()))
|
||||
if (w[1])
|
||||
// Sikeres.
|
||||
|
||||
w:=w[2]
|
||||
for i:=len(w) to 1 step -1
|
||||
this:unreadInput(w[i])
|
||||
end for
|
||||
else
|
||||
|
||||
// Sikertelen, az eredm‚ny els“ tokenje megy az outputra,
|
||||
// a t”bbi az inputra.
|
||||
w:=w[2]
|
||||
for i:=len(w) to 2 step -1
|
||||
this:unreadInput(w[i])
|
||||
end for
|
||||
|
||||
item:=w[1]
|
||||
exit
|
||||
#ifdef OLD
|
||||
if (len(w)>1)
|
||||
this:unread(w[1])
|
||||
endif
|
||||
|
||||
// Most a tbuffer-b“l kell olvasnunk.
|
||||
if (nil!=(item:=this:readTBuffer()))
|
||||
exit
|
||||
endif
|
||||
#endif
|
||||
endif
|
||||
end while
|
||||
if (item!=nil)
|
||||
if (!TOKEN.item:id==TKID_URES)
|
||||
this:ujsor:=TOKEN.item:id==TKID_UJSOR .or.;
|
||||
TOKEN.item:id==TKID_BOS .or.;
|
||||
TOKEN.item:id==TKID_EOS .or.;
|
||||
(TOKEN.item:id==TKID_CHAR .and. TOKEN.item:str==";")
|
||||
endif
|
||||
endif
|
||||
return item
|
||||
#endif
|
||||
|
||||
//*******************************************************************
|
||||
#endif
|
||||
|
||||
//*******************************************************************
|
||||
|
||||
|
||||
|
||||
@@ -1,48 +0,0 @@
|
||||
//
|
||||
// $Id$
|
||||
//
|
||||
|
||||
class META BEHAVIOR
|
||||
// Ennek az oszt lynak az elemei metaoszt lyok.
|
||||
|
||||
|
||||
attrib ofClass
|
||||
// Ha ennek az metaoszt lynak csak egy eleme lehet, akkor
|
||||
// ez egy blokk, amit ki‚rt‚kelve megkapjuk azt az egy
|
||||
// oszt lyt. Ha ennek a metaoszt lynak t”bb eleme is lehet,
|
||||
// akkor ez nil.
|
||||
|
||||
rmethod oinit{me_oinit}(parent,name,nAttribs,nMethods,amBlock,methodsBlock)
|
||||
// Inicializ lja a 'this' metaoszt lyt.
|
||||
// Mj.: Hˇvja a Behavior oinit()-j‚t, ‚s inicializ lja
|
||||
// az ofClass-t 'nil'-re.
|
||||
|
||||
rmethod onew{me_onew}(parent,name,nAttribs,nMethods,amBlock,methodsBlock)
|
||||
// L‚trehoz egy Łj oszt lyt, ‚s inicializ lja.
|
||||
// Az Łj oszt ly a 'this' eleme lesz, teh t az Łj oszt ly
|
||||
// oszt lya a 'this'lesz.
|
||||
// Ha az ofClass nem <20>res, akkor a 'this' meta oszt lynak m r
|
||||
// van eleme. Egy (k”z”ns‚ges) metaoszt lynak csak egy eleme
|
||||
// lehet, ˇgy ez hiba!
|
||||
// Ha az ofClass <20>res, akkor az Łj oszt lyt oda beˇrja.
|
||||
|
||||
// Mj.: Ez a 'Meta' egy elem‚nek a m–velete. A 'Meta' elemei
|
||||
// pedig meta oszt lyok. Teh t ez egy meta osztaly egy elem‚t
|
||||
// hozza l‚tre, a meta oszt lyok elemei pedig oszt lyok. Teh t
|
||||
// ez egy Łj oszt lyt (‚s nem metaoszt lyt!!!) hoz l‚tre.
|
||||
|
||||
rmethod ocreate{me_ocreate}()
|
||||
// L‚trehoz egy Łj oszt lyt, de nem inicializ lja.
|
||||
|
||||
|
||||
// nmethod makeClassId{me_makeClassId}(aClass)
|
||||
// Hozz ad egy oszt lyt az idClass-okhoz. Az oszt ly id-j‚vel
|
||||
// t‚r vissza. Ha az oszt lynak m r van id-je, akkor azzal t‚r
|
||||
// vissza.
|
||||
|
||||
// nmethod classFromId{me_classFromId}(id)
|
||||
// Ha van olyan oszt ly, aminek az 'id' az id-je, akkor
|
||||
// azt adja egy‚bk‚nt nil-t.
|
||||
|
||||
// nmethod findClassId{me_findClassId}(aClass)
|
||||
// Ha az oszt lynak van id-je, akkor azt adja, egy‚bk‚nt nil-t.
|
||||
@@ -1,282 +0,0 @@
|
||||
// META.och oszt ly implement ci¢.
|
||||
// Gener lva: 1999.10.10, 14:31:52, OBJCCC v2.2.03
|
||||
// Meta oszt ly defin¡ci¢: Van
|
||||
|
||||
|
||||
#ifndef CA_BEHAVIOR_N
|
||||
#ifdef _STRICT_PARENT_
|
||||
#ifdef _CA_CM_ONLY_
|
||||
#include "BEHAVIOR.och"
|
||||
#else // _CA_CM_ONLY_
|
||||
#define _CA_CM_ONLY_
|
||||
#include "BEHAVIOR.och"
|
||||
#undef _CA_CM_ONLY_
|
||||
#endif // _CA_CM_ONLY_
|
||||
#else
|
||||
#include "BEHAVIOR.och"
|
||||
#endif // _STRICT_PARENT_
|
||||
#endif // CA_BEHAVIOR_N
|
||||
|
||||
#ifndef _CA_CM_ONLY_
|
||||
#ifndef _META_OCH_
|
||||
#define _META_OCH_
|
||||
|
||||
|
||||
#xtranslate META.<obj>:parent => <obj>\[CA_OBJECT_N+1\]
|
||||
#xtranslate META.<obj>:name => <obj>\[CA_OBJECT_N+2\]
|
||||
#xtranslate META.<obj>:objsize => <obj>\[CA_OBJECT_N+3\]
|
||||
#xtranslate META.<obj>:attribs => <obj>\[CA_OBJECT_N+4\]
|
||||
#xtranslate META.<obj>:methods => <obj>\[CA_OBJECT_N+5\]
|
||||
#xtranslate META.<obj>:classid => <obj>\[CA_OBJECT_N+6\]
|
||||
#xtranslate META.<obj>:parentclassids => <obj>\[CA_OBJECT_N+7\]
|
||||
#xtranslate META.<obj>:amblock => <obj>\[CA_OBJECT_N+8\]
|
||||
#xtranslate META.<obj>:methodsblock => <obj>\[CA_OBJECT_N+9\]
|
||||
#xtranslate META.<obj>:objmethodsimplement => <obj>\[CA_OBJECT_N+10\]
|
||||
|
||||
|
||||
#xtranslate META.<obj>:oinit => (OBJGEN.(<obj>):(4))
|
||||
#xtranslate META.<obj>:getclass => (OBJGEN.(<obj>):(5))
|
||||
#xtranslate META.<obj>:isclass => (OBJGEN.(<obj>):(6))
|
||||
#xtranslate META.<obj>:getattrib => (OBJGEN.(<obj>):(7))
|
||||
#xtranslate META.<obj>:setattrib => (OBJGEN.(<obj>):(8))
|
||||
#xtranslate META.<obj>:ocreate => (OBJGEN.(<obj>):(CM_OBJECT_N+2))
|
||||
#xtranslate META.<obj>:rawoinit => (OBJGEN.(<obj>):(CM_OBJECT_N+3))
|
||||
#xtranslate META.<obj>:oinitclass => (OBJGEN.(<obj>):(CM_OBJECT_N+4))
|
||||
#xtranslate META.<obj>:getmethodsimplement => (OBJGEN.(<obj>):(CM_OBJECT_N+5))
|
||||
#xtranslate META.<obj>:attribidx => (OBJGEN.(<obj>):(CM_OBJECT_N+6))
|
||||
#xtranslate META.<obj>:needclassid => (OBJGEN.(<obj>):(CM_OBJECT_N+7))
|
||||
#xtranslate META.<obj>:isinheritfrom => (OBJGEN.(<obj>):(CM_OBJECT_N+8))
|
||||
|
||||
|
||||
#xtranslate META.<obj>:ofclass => <obj>\[CA_BEHAVIOR_N+1\]
|
||||
|
||||
// ™r”k”lve: oinit(parent,name,nAttribs,nMethods,amBlock,methodsBlock)
|
||||
// ™r”k”lve: onew(parent,name,nAttribs,nMethods,amBlock,methodsBlock)
|
||||
// ™r”k”lve: ocreate()
|
||||
|
||||
// ™r”k”lve: oinit(parent,name,nAttribs,nMethods,amBlock,methodsBlock)
|
||||
// ™r”k”lve: onew(parent,name,nAttribs,nMethods,amBlock,methodsBlock)
|
||||
// ™r”k”lve: ocreate()
|
||||
|
||||
#endif // _META_OCH_
|
||||
#endif // _CA_CM_ONLY_
|
||||
|
||||
#ifndef CA_META_N
|
||||
#define CA_META_N CA_BEHAVIOR_N+1
|
||||
#define CM_META_N CM_BEHAVIOR_N+0
|
||||
#xtranslate META.<obj>:onew => (OBJGEN.(<obj>):(CM_OBJECT_N+1))
|
||||
#endif // CA_META_N
|
||||
|
||||
#ifndef _CA_CM_ONLY_
|
||||
#ifndef _METACLAS_OCH_
|
||||
#define _METACLAS_OCH_
|
||||
|
||||
**********************************************************************
|
||||
#xtranslate C.META:<m> => (METACLAS.clMETA():<m>)
|
||||
#xtranslate C.META:self() => (clMETA())
|
||||
|
||||
|
||||
#xtranslate METACLAS.<obj>:parent => <obj>\[CA_OBJECT_N+1\]
|
||||
#xtranslate METACLAS.<obj>:name => <obj>\[CA_OBJECT_N+2\]
|
||||
#xtranslate METACLAS.<obj>:objsize => <obj>\[CA_OBJECT_N+3\]
|
||||
#xtranslate METACLAS.<obj>:attribs => <obj>\[CA_OBJECT_N+4\]
|
||||
#xtranslate METACLAS.<obj>:methods => <obj>\[CA_OBJECT_N+5\]
|
||||
#xtranslate METACLAS.<obj>:classid => <obj>\[CA_OBJECT_N+6\]
|
||||
#xtranslate METACLAS.<obj>:parentclassids => <obj>\[CA_OBJECT_N+7\]
|
||||
#xtranslate METACLAS.<obj>:amblock => <obj>\[CA_OBJECT_N+8\]
|
||||
#xtranslate METACLAS.<obj>:methodsblock => <obj>\[CA_OBJECT_N+9\]
|
||||
#xtranslate METACLAS.<obj>:objmethodsimplement => <obj>\[CA_OBJECT_N+10\]
|
||||
#xtranslate METACLAS.<obj>:ofclass => <obj>\[CA_BEHAVIOR_N+1\]
|
||||
|
||||
|
||||
#xtranslate METACLAS.<obj>:oinit => (OBJGEN.(<obj>):(4))
|
||||
#xtranslate METACLAS.<obj>:getclass => (OBJGEN.(<obj>):(5))
|
||||
#xtranslate METACLAS.<obj>:isclass => (OBJGEN.(<obj>):(6))
|
||||
#xtranslate METACLAS.<obj>:getattrib => (OBJGEN.(<obj>):(7))
|
||||
#xtranslate METACLAS.<obj>:setattrib => (OBJGEN.(<obj>):(8))
|
||||
#xtranslate METACLAS.<obj>:onew => (OBJGEN.(<obj>):(CM_OBJECT_N+1))
|
||||
#xtranslate METACLAS.<obj>:ocreate => (OBJGEN.(<obj>):(CM_OBJECT_N+2))
|
||||
#xtranslate METACLAS.<obj>:rawoinit => (OBJGEN.(<obj>):(CM_OBJECT_N+3))
|
||||
#xtranslate METACLAS.<obj>:oinitclass => (OBJGEN.(<obj>):(CM_OBJECT_N+4))
|
||||
#xtranslate METACLAS.<obj>:getmethodsimplement => (OBJGEN.(<obj>):(CM_OBJECT_N+5))
|
||||
#xtranslate METACLAS.<obj>:attribidx => (OBJGEN.(<obj>):(CM_OBJECT_N+6))
|
||||
#xtranslate METACLAS.<obj>:needclassid => (OBJGEN.(<obj>):(CM_OBJECT_N+7))
|
||||
#xtranslate METACLAS.<obj>:isinheritfrom => (OBJGEN.(<obj>):(CM_OBJECT_N+8))
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#endif // _METACLAS_OCH_
|
||||
#endif // _CA_CM_ONLY_
|
||||
|
||||
#ifndef CA_METACLAS_N
|
||||
#define CA_METACLAS_N CA_META_N+0
|
||||
#define CM_METACLAS_N CM_META_N+0
|
||||
#endif // CA_METACLAS_N
|
||||
|
||||
|
||||
**********************************************************************
|
||||
#ifdef _META_PRG_
|
||||
#ifndef _META_PRG_OCH_
|
||||
#define _META_PRG_OCH_
|
||||
|
||||
|
||||
**********************************************************************
|
||||
#xtranslate othis:<m> => META.(othis):<m>
|
||||
#xtranslate thisclass:<m> => METACLAS.(this:getClass()):<m>
|
||||
#define CTHIS META
|
||||
|
||||
|
||||
**********************************************************************
|
||||
#xtranslate this:<m> => META.(this):<m>
|
||||
|
||||
#xcommand implement oinit(parent,name,nAttribs,nMethods,amBlock,methodsBlock) => ;
|
||||
static function me_oinit(this,parent,name,nAttribs,nMethods,amBlock,methodsBlock)
|
||||
#xcommand implement onew(parent,name,nAttribs,nMethods,amBlock,methodsBlock) => ;
|
||||
static function me_onew(this,parent,name,nAttribs,nMethods,amBlock,methodsBlock)
|
||||
#xcommand implement ocreate() => static function me_ocreate(this)
|
||||
|
||||
#ifdef _IMPLEMENT_EXPORT_
|
||||
#xcommand implement export oinit(parent,name,nAttribs,nMethods,amBlock,methodsBlock) => ;
|
||||
function me_oinit(this,parent,name,nAttribs,nMethods,amBlock,methodsBlock)
|
||||
#xcommand implement export onew(parent,name,nAttribs,nMethods,amBlock,methodsBlock) => ;
|
||||
function me_onew(this,parent,name,nAttribs,nMethods,amBlock,methodsBlock)
|
||||
#xcommand implement export ocreate() => function me_ocreate(this)
|
||||
#endif // _IMPLEMENT_EXPORT_
|
||||
|
||||
#xtranslate super:oinit => (OBJGENM.(eval(BEHAVIOR.clBEHAVIOR():objmethodsimplement)).(this):(4))
|
||||
#xtranslate super:getclass => (OBJGENM.(eval(BEHAVIOR.clBEHAVIOR():objmethodsimplement)).(this):(5))
|
||||
#xtranslate super:isclass => (OBJGENM.(eval(BEHAVIOR.clBEHAVIOR():objmethodsimplement)).(this):(6))
|
||||
#xtranslate super:getattrib => (OBJGENM.(eval(BEHAVIOR.clBEHAVIOR():objmethodsimplement)).(this):(7))
|
||||
#xtranslate super:setattrib => (OBJGENM.(eval(BEHAVIOR.clBEHAVIOR():objmethodsimplement)).(this):(8))
|
||||
#xtranslate super:onew => (OBJGENM.(eval(BEHAVIOR.clBEHAVIOR():objmethodsimplement)).(this):(CM_OBJECT_N+1))
|
||||
#xtranslate super:ocreate => (OBJGENM.(eval(BEHAVIOR.clBEHAVIOR():objmethodsimplement)).(this):(CM_OBJECT_N+2))
|
||||
#xtranslate super:rawoinit => (OBJGENM.(eval(BEHAVIOR.clBEHAVIOR():objmethodsimplement)).(this):(CM_OBJECT_N+3))
|
||||
#xtranslate super:oinitclass => (OBJGENM.(eval(BEHAVIOR.clBEHAVIOR():objmethodsimplement)).(this):(CM_OBJECT_N+4))
|
||||
#xtranslate super:getmethodsimplement => (OBJGENM.(eval(BEHAVIOR.clBEHAVIOR():objmethodsimplement)).(this):(CM_OBJECT_N+5))
|
||||
#xtranslate super:attribidx => (OBJGENM.(eval(BEHAVIOR.clBEHAVIOR():objmethodsimplement)).(this):(CM_OBJECT_N+6))
|
||||
#xtranslate super:needclassid => (OBJGENM.(eval(BEHAVIOR.clBEHAVIOR():objmethodsimplement)).(this):(CM_OBJECT_N+7))
|
||||
#xtranslate super:isinheritfrom => (OBJGENM.(eval(BEHAVIOR.clBEHAVIOR():objmethodsimplement)).(this):(CM_OBJECT_N+8))
|
||||
|
||||
**********************************************************************
|
||||
static function setCMethods(pOsztaly)
|
||||
// Egy t”mb”t felt”lt az oszt ly m–veleti blokkjaival.
|
||||
pOsztaly[(4)]:={|this,parent,name,nAttribs,nMethods,amBlock,methodsBlock| me_oinit(this,parent,name,nAttribs,nMethods,amBlock,methodsBlock)}
|
||||
pOsztaly[(CM_OBJECT_N+1)]:={|this,parent,name,nAttribs,nMethods,amBlock,methodsBlock| me_onew(this,parent,name,nAttribs,nMethods,amBlock,methodsBlock)}
|
||||
pOsztaly[(CM_OBJECT_N+2)]:={|this| me_ocreate(this)}
|
||||
return pOsztaly
|
||||
|
||||
**********************************************************************
|
||||
static function setCams(ta,tm)
|
||||
// Egy t”mb”t felt”lt az oszt ly ltal def. objektumok attrib£tumaival ‚s m–veleteivel.
|
||||
ta[CA_BEHAVIOR_N+1-CA_NIL_N] := {CA_BEHAVIOR_N+1,'ofclass',nil}
|
||||
|
||||
tm[(4)-CM_NIL_N] := {(4),'oinit','parent,name,nAttribs,nMethods,amBlock,methodsBlock',nil}
|
||||
tm[(CM_OBJECT_N+1)-CM_NIL_N] := {(CM_OBJECT_N+1),'onew','parent,name,nAttribs,nMethods,amBlock,methodsBlock',nil}
|
||||
tm[(CM_OBJECT_N+2)-CM_NIL_N] := {(CM_OBJECT_N+2),'ocreate','',nil}
|
||||
return nil
|
||||
|
||||
#ifndef _NO_CLMETA_
|
||||
#ifdef _STRICT_PARENT_
|
||||
#ifdef _CA_CM_ONLY_
|
||||
#include "meta.och"
|
||||
#else // _CA_CM_ONLY_
|
||||
#define _CA_CM_ONLY_
|
||||
#include "meta.och"
|
||||
#undef _CA_CM_ONLY_
|
||||
#endif // _CA_CM_ONLY_
|
||||
#else
|
||||
#include "meta.och"
|
||||
#endif // _STRICT_PARENT_
|
||||
**********************************************************************
|
||||
function clMETA()
|
||||
// El“szedi az oszt lyt. (class)
|
||||
static osztaly
|
||||
if (osztaly==nil)
|
||||
osztaly:=META.clMETACLAS():onew(;
|
||||
clBEHAVIOR(),;
|
||||
"META",;
|
||||
CA_META_N,;
|
||||
CM_META_N,;
|
||||
{|ta,tm|setCams(ta,tm)},;
|
||||
{|t|setCMethods(t)})
|
||||
endif
|
||||
return osztaly
|
||||
#endif // _NO_CLMETA_
|
||||
|
||||
#ifndef _NO_METACLAS_
|
||||
|
||||
**********************************************************************
|
||||
#xtranslate class:<m> => METACLAS.(class):<m>
|
||||
|
||||
|
||||
#ifdef _IMPLEMENT_EXPORT_
|
||||
#endif // _IMPLEMENT_EXPORT_
|
||||
|
||||
#xtranslate superclass:oinit => (OBJGENM.(eval(BEHAVIOR.clMETA():objmethodsimplement)).(class):(4))
|
||||
#xtranslate superclass:getclass => (OBJGENM.(eval(BEHAVIOR.clMETA():objmethodsimplement)).(class):(5))
|
||||
#xtranslate superclass:isclass => (OBJGENM.(eval(BEHAVIOR.clMETA():objmethodsimplement)).(class):(6))
|
||||
#xtranslate superclass:getattrib => (OBJGENM.(eval(BEHAVIOR.clMETA():objmethodsimplement)).(class):(7))
|
||||
#xtranslate superclass:setattrib => (OBJGENM.(eval(BEHAVIOR.clMETA():objmethodsimplement)).(class):(8))
|
||||
#xtranslate superclass:onew => (OBJGENM.(eval(BEHAVIOR.clMETA():objmethodsimplement)).(class):(CM_OBJECT_N+1))
|
||||
#xtranslate superclass:ocreate => (OBJGENM.(eval(BEHAVIOR.clMETA():objmethodsimplement)).(class):(CM_OBJECT_N+2))
|
||||
#xtranslate superclass:rawoinit => (OBJGENM.(eval(BEHAVIOR.clMETA():objmethodsimplement)).(class):(CM_OBJECT_N+3))
|
||||
#xtranslate superclass:oinitclass => (OBJGENM.(eval(BEHAVIOR.clMETA():objmethodsimplement)).(class):(CM_OBJECT_N+4))
|
||||
#xtranslate superclass:getmethodsimplement => (OBJGENM.(eval(BEHAVIOR.clMETA():objmethodsimplement)).(class):(CM_OBJECT_N+5))
|
||||
#xtranslate superclass:attribidx => (OBJGENM.(eval(BEHAVIOR.clMETA():objmethodsimplement)).(class):(CM_OBJECT_N+6))
|
||||
#xtranslate superclass:needclassid => (OBJGENM.(eval(BEHAVIOR.clMETA():objmethodsimplement)).(class):(CM_OBJECT_N+7))
|
||||
#xtranslate superclass:isinheritfrom => (OBJGENM.(eval(BEHAVIOR.clMETA():objmethodsimplement)).(class):(CM_OBJECT_N+8))
|
||||
|
||||
**********************************************************************
|
||||
static function setMCMethods(pOsztaly)
|
||||
// Egy t”mb”t felt”lt a metaoszt ly m–veleti blokkjaival.
|
||||
return pOsztaly
|
||||
|
||||
**********************************************************************
|
||||
static function setMCams(ta,tm)
|
||||
// Egy t”mb”t felt”lt a metaoszt ly ltal def. objektumok attrib£tumaival ‚s m–veleteivel.
|
||||
|
||||
return nil
|
||||
|
||||
**********************************************************************
|
||||
#ifndef _NO_MCMETACLAS_
|
||||
#ifdef _STRICT_PARENT_
|
||||
#ifdef _CA_CM_ONLY_
|
||||
#include "meta.och" // "metaclas.och"
|
||||
#else // _CA_CM_ONLY_
|
||||
#define _CA_CM_ONLY_
|
||||
#include "meta.och" // "metaclas.och"
|
||||
#undef _CA_CM_ONLY_
|
||||
#endif // _CA_CM_ONLY_
|
||||
#else
|
||||
#include "meta.och" // "metaclas.och"
|
||||
#endif // _STRICT_PARENT_
|
||||
function mcMETACLAS()
|
||||
// El“szedi az oszt ly metaoszt ly t. (metaclass)
|
||||
static metaOsztaly
|
||||
if (metaOsztaly==nil)
|
||||
metaOsztaly:=META.clMETA():onew(;
|
||||
clMETA(),;
|
||||
"METACLAS",;
|
||||
CA_METACLAS_N,;
|
||||
CM_METACLAS_N,;
|
||||
{|ta,tm|setMCams(ta,tm)},;
|
||||
{|t|setMCMethods(t)})
|
||||
endif
|
||||
return metaOsztaly
|
||||
#endif // _NO_MCMETACLAS_
|
||||
|
||||
#endif // _NO_METACLAS_
|
||||
|
||||
**********************************************************************
|
||||
#ifdef _IMPLEMENT_OINIT_
|
||||
implement oinit(parent,name,nAttribs,nMethods,amBlock,methodsBlock)
|
||||
super:oinit()
|
||||
return this
|
||||
#endif // _IMPLEMENT_OINIT_
|
||||
|
||||
**********************************************************************
|
||||
**********************************************************************
|
||||
#endif // _META_PRG_OCH_
|
||||
#endif // _META_PRG_
|
||||
@@ -1,7 +0,0 @@
|
||||
//
|
||||
// $Id$
|
||||
//
|
||||
|
||||
class METACLAS META
|
||||
// Itt nincs £j m–velet.
|
||||
// Ha lenne, akkor kellene METACLASSCLASS is etc.
|
||||
@@ -1,250 +0,0 @@
|
||||
// METACLAS.och oszt ly implement ci¢.
|
||||
// Gener lva: 1999.10.10, 14:31:52, OBJCCC v2.2.03
|
||||
// Meta oszt ly defin¡ci¢: Van
|
||||
|
||||
|
||||
#ifndef CA_META_N
|
||||
#ifdef _STRICT_PARENT_
|
||||
#ifdef _CA_CM_ONLY_
|
||||
#include "META.och"
|
||||
#else // _CA_CM_ONLY_
|
||||
#define _CA_CM_ONLY_
|
||||
#include "META.och"
|
||||
#undef _CA_CM_ONLY_
|
||||
#endif // _CA_CM_ONLY_
|
||||
#else
|
||||
#include "META.och"
|
||||
#endif // _STRICT_PARENT_
|
||||
#endif // CA_META_N
|
||||
|
||||
#ifndef _CA_CM_ONLY_
|
||||
#ifndef _METACLAS_OCH_
|
||||
#define _METACLAS_OCH_
|
||||
|
||||
|
||||
#xtranslate METACLAS.<obj>:parent => <obj>\[CA_OBJECT_N+1\]
|
||||
#xtranslate METACLAS.<obj>:name => <obj>\[CA_OBJECT_N+2\]
|
||||
#xtranslate METACLAS.<obj>:objsize => <obj>\[CA_OBJECT_N+3\]
|
||||
#xtranslate METACLAS.<obj>:attribs => <obj>\[CA_OBJECT_N+4\]
|
||||
#xtranslate METACLAS.<obj>:methods => <obj>\[CA_OBJECT_N+5\]
|
||||
#xtranslate METACLAS.<obj>:classid => <obj>\[CA_OBJECT_N+6\]
|
||||
#xtranslate METACLAS.<obj>:parentclassids => <obj>\[CA_OBJECT_N+7\]
|
||||
#xtranslate METACLAS.<obj>:amblock => <obj>\[CA_OBJECT_N+8\]
|
||||
#xtranslate METACLAS.<obj>:methodsblock => <obj>\[CA_OBJECT_N+9\]
|
||||
#xtranslate METACLAS.<obj>:objmethodsimplement => <obj>\[CA_OBJECT_N+10\]
|
||||
#xtranslate METACLAS.<obj>:ofclass => <obj>\[CA_BEHAVIOR_N+1\]
|
||||
|
||||
|
||||
#xtranslate METACLAS.<obj>:oinit => (OBJGEN.(<obj>):(4))
|
||||
#xtranslate METACLAS.<obj>:getclass => (OBJGEN.(<obj>):(5))
|
||||
#xtranslate METACLAS.<obj>:isclass => (OBJGEN.(<obj>):(6))
|
||||
#xtranslate METACLAS.<obj>:getattrib => (OBJGEN.(<obj>):(7))
|
||||
#xtranslate METACLAS.<obj>:setattrib => (OBJGEN.(<obj>):(8))
|
||||
#xtranslate METACLAS.<obj>:onew => (OBJGEN.(<obj>):(CM_OBJECT_N+1))
|
||||
#xtranslate METACLAS.<obj>:ocreate => (OBJGEN.(<obj>):(CM_OBJECT_N+2))
|
||||
#xtranslate METACLAS.<obj>:rawoinit => (OBJGEN.(<obj>):(CM_OBJECT_N+3))
|
||||
#xtranslate METACLAS.<obj>:oinitclass => (OBJGEN.(<obj>):(CM_OBJECT_N+4))
|
||||
#xtranslate METACLAS.<obj>:getmethodsimplement => (OBJGEN.(<obj>):(CM_OBJECT_N+5))
|
||||
#xtranslate METACLAS.<obj>:attribidx => (OBJGEN.(<obj>):(CM_OBJECT_N+6))
|
||||
#xtranslate METACLAS.<obj>:needclassid => (OBJGEN.(<obj>):(CM_OBJECT_N+7))
|
||||
#xtranslate METACLAS.<obj>:isinheritfrom => (OBJGEN.(<obj>):(CM_OBJECT_N+8))
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#endif // _METACLAS_OCH_
|
||||
#endif // _CA_CM_ONLY_
|
||||
|
||||
#ifndef CA_METACLAS_N
|
||||
#define CA_METACLAS_N CA_META_N+0
|
||||
#define CM_METACLAS_N CM_META_N+0
|
||||
#endif // CA_METACLAS_N
|
||||
|
||||
#ifndef _CA_CM_ONLY_
|
||||
#ifndef _METACLAS_OCH_
|
||||
#define _METACLAS_OCH_
|
||||
|
||||
**********************************************************************
|
||||
#xtranslate C.METACLAS:<m> => (METACLAS.clMETACLAS():<m>)
|
||||
#xtranslate C.METACLAS:self() => (clMETACLAS())
|
||||
|
||||
|
||||
#xtranslate METACLAS.<obj>:parent => <obj>\[CA_OBJECT_N+1\]
|
||||
#xtranslate METACLAS.<obj>:name => <obj>\[CA_OBJECT_N+2\]
|
||||
#xtranslate METACLAS.<obj>:objsize => <obj>\[CA_OBJECT_N+3\]
|
||||
#xtranslate METACLAS.<obj>:attribs => <obj>\[CA_OBJECT_N+4\]
|
||||
#xtranslate METACLAS.<obj>:methods => <obj>\[CA_OBJECT_N+5\]
|
||||
#xtranslate METACLAS.<obj>:classid => <obj>\[CA_OBJECT_N+6\]
|
||||
#xtranslate METACLAS.<obj>:parentclassids => <obj>\[CA_OBJECT_N+7\]
|
||||
#xtranslate METACLAS.<obj>:amblock => <obj>\[CA_OBJECT_N+8\]
|
||||
#xtranslate METACLAS.<obj>:methodsblock => <obj>\[CA_OBJECT_N+9\]
|
||||
#xtranslate METACLAS.<obj>:objmethodsimplement => <obj>\[CA_OBJECT_N+10\]
|
||||
#xtranslate METACLAS.<obj>:ofclass => <obj>\[CA_BEHAVIOR_N+1\]
|
||||
|
||||
|
||||
#xtranslate METACLAS.<obj>:oinit => (OBJGEN.(<obj>):(4))
|
||||
#xtranslate METACLAS.<obj>:getclass => (OBJGEN.(<obj>):(5))
|
||||
#xtranslate METACLAS.<obj>:isclass => (OBJGEN.(<obj>):(6))
|
||||
#xtranslate METACLAS.<obj>:getattrib => (OBJGEN.(<obj>):(7))
|
||||
#xtranslate METACLAS.<obj>:setattrib => (OBJGEN.(<obj>):(8))
|
||||
#xtranslate METACLAS.<obj>:onew => (OBJGEN.(<obj>):(CM_OBJECT_N+1))
|
||||
#xtranslate METACLAS.<obj>:ocreate => (OBJGEN.(<obj>):(CM_OBJECT_N+2))
|
||||
#xtranslate METACLAS.<obj>:rawoinit => (OBJGEN.(<obj>):(CM_OBJECT_N+3))
|
||||
#xtranslate METACLAS.<obj>:oinitclass => (OBJGEN.(<obj>):(CM_OBJECT_N+4))
|
||||
#xtranslate METACLAS.<obj>:getmethodsimplement => (OBJGEN.(<obj>):(CM_OBJECT_N+5))
|
||||
#xtranslate METACLAS.<obj>:attribidx => (OBJGEN.(<obj>):(CM_OBJECT_N+6))
|
||||
#xtranslate METACLAS.<obj>:needclassid => (OBJGEN.(<obj>):(CM_OBJECT_N+7))
|
||||
#xtranslate METACLAS.<obj>:isinheritfrom => (OBJGEN.(<obj>):(CM_OBJECT_N+8))
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#endif // _METACLAS_OCH_
|
||||
#endif // _CA_CM_ONLY_
|
||||
|
||||
#ifndef CA_METACLAS_N
|
||||
#define CA_METACLAS_N CA_META_N+0
|
||||
#define CM_METACLAS_N CM_META_N+0
|
||||
#endif // CA_METACLAS_N
|
||||
|
||||
|
||||
**********************************************************************
|
||||
#ifdef _METACLAS_PRG_
|
||||
#ifndef _METACLAS_PRG_OCH_
|
||||
#define _METACLAS_PRG_OCH_
|
||||
|
||||
|
||||
**********************************************************************
|
||||
#xtranslate othis:<m> => METACLAS.(othis):<m>
|
||||
#xtranslate thisclass:<m> => METACLAS.(this:getClass()):<m>
|
||||
#define CTHIS METACLAS
|
||||
|
||||
|
||||
**********************************************************************
|
||||
#xtranslate this:<m> => METACLAS.(this):<m>
|
||||
|
||||
|
||||
#ifdef _IMPLEMENT_EXPORT_
|
||||
#endif // _IMPLEMENT_EXPORT_
|
||||
|
||||
#xtranslate super:oinit => (OBJGENM.(eval(BEHAVIOR.clMETA():objmethodsimplement)).(this):(4))
|
||||
#xtranslate super:getclass => (OBJGENM.(eval(BEHAVIOR.clMETA():objmethodsimplement)).(this):(5))
|
||||
#xtranslate super:isclass => (OBJGENM.(eval(BEHAVIOR.clMETA():objmethodsimplement)).(this):(6))
|
||||
#xtranslate super:getattrib => (OBJGENM.(eval(BEHAVIOR.clMETA():objmethodsimplement)).(this):(7))
|
||||
#xtranslate super:setattrib => (OBJGENM.(eval(BEHAVIOR.clMETA():objmethodsimplement)).(this):(8))
|
||||
#xtranslate super:onew => (OBJGENM.(eval(BEHAVIOR.clMETA():objmethodsimplement)).(this):(CM_OBJECT_N+1))
|
||||
#xtranslate super:ocreate => (OBJGENM.(eval(BEHAVIOR.clMETA():objmethodsimplement)).(this):(CM_OBJECT_N+2))
|
||||
#xtranslate super:rawoinit => (OBJGENM.(eval(BEHAVIOR.clMETA():objmethodsimplement)).(this):(CM_OBJECT_N+3))
|
||||
#xtranslate super:oinitclass => (OBJGENM.(eval(BEHAVIOR.clMETA():objmethodsimplement)).(this):(CM_OBJECT_N+4))
|
||||
#xtranslate super:getmethodsimplement => (OBJGENM.(eval(BEHAVIOR.clMETA():objmethodsimplement)).(this):(CM_OBJECT_N+5))
|
||||
#xtranslate super:attribidx => (OBJGENM.(eval(BEHAVIOR.clMETA():objmethodsimplement)).(this):(CM_OBJECT_N+6))
|
||||
#xtranslate super:needclassid => (OBJGENM.(eval(BEHAVIOR.clMETA():objmethodsimplement)).(this):(CM_OBJECT_N+7))
|
||||
#xtranslate super:isinheritfrom => (OBJGENM.(eval(BEHAVIOR.clMETA():objmethodsimplement)).(this):(CM_OBJECT_N+8))
|
||||
|
||||
**********************************************************************
|
||||
static function setCMethods(pOsztaly)
|
||||
// Egy t”mb”t felt”lt az oszt ly m–veleti blokkjaival.
|
||||
return pOsztaly
|
||||
|
||||
**********************************************************************
|
||||
static function setCams(ta,tm)
|
||||
// Egy t”mb”t felt”lt az oszt ly ltal def. objektumok attrib£tumaival ‚s m–veleteivel.
|
||||
|
||||
return nil
|
||||
|
||||
#ifndef _NO_CLMETACLAS_
|
||||
#ifdef _STRICT_PARENT_
|
||||
#ifdef _CA_CM_ONLY_
|
||||
#include "meta.och"
|
||||
#else // _CA_CM_ONLY_
|
||||
#define _CA_CM_ONLY_
|
||||
#include "meta.och"
|
||||
#undef _CA_CM_ONLY_
|
||||
#endif // _CA_CM_ONLY_
|
||||
#else
|
||||
#include "meta.och"
|
||||
#endif // _STRICT_PARENT_
|
||||
**********************************************************************
|
||||
function clMETACLAS()
|
||||
// El“szedi az oszt lyt. (class)
|
||||
static osztaly
|
||||
if (osztaly==nil)
|
||||
osztaly:=META.clMETACLAS():onew(;
|
||||
clMETA(),;
|
||||
"METACLAS",;
|
||||
CA_METACLAS_N,;
|
||||
CM_METACLAS_N,;
|
||||
{|ta,tm|setCams(ta,tm)},;
|
||||
{|t|setCMethods(t)})
|
||||
endif
|
||||
return osztaly
|
||||
#endif // _NO_CLMETACLAS_
|
||||
|
||||
#ifndef _NO_METACLAS_
|
||||
|
||||
**********************************************************************
|
||||
#xtranslate class:<m> => METACLAS.(class):<m>
|
||||
|
||||
|
||||
#ifdef _IMPLEMENT_EXPORT_
|
||||
#endif // _IMPLEMENT_EXPORT_
|
||||
|
||||
#xtranslate superclass:oinit => (OBJGENM.(eval(BEHAVIOR.clMETA():objmethodsimplement)).(class):(4))
|
||||
#xtranslate superclass:getclass => (OBJGENM.(eval(BEHAVIOR.clMETA():objmethodsimplement)).(class):(5))
|
||||
#xtranslate superclass:isclass => (OBJGENM.(eval(BEHAVIOR.clMETA():objmethodsimplement)).(class):(6))
|
||||
#xtranslate superclass:getattrib => (OBJGENM.(eval(BEHAVIOR.clMETA():objmethodsimplement)).(class):(7))
|
||||
#xtranslate superclass:setattrib => (OBJGENM.(eval(BEHAVIOR.clMETA():objmethodsimplement)).(class):(8))
|
||||
#xtranslate superclass:onew => (OBJGENM.(eval(BEHAVIOR.clMETA():objmethodsimplement)).(class):(CM_OBJECT_N+1))
|
||||
#xtranslate superclass:ocreate => (OBJGENM.(eval(BEHAVIOR.clMETA():objmethodsimplement)).(class):(CM_OBJECT_N+2))
|
||||
#xtranslate superclass:rawoinit => (OBJGENM.(eval(BEHAVIOR.clMETA():objmethodsimplement)).(class):(CM_OBJECT_N+3))
|
||||
#xtranslate superclass:oinitclass => (OBJGENM.(eval(BEHAVIOR.clMETA():objmethodsimplement)).(class):(CM_OBJECT_N+4))
|
||||
#xtranslate superclass:getmethodsimplement => (OBJGENM.(eval(BEHAVIOR.clMETA():objmethodsimplement)).(class):(CM_OBJECT_N+5))
|
||||
#xtranslate superclass:attribidx => (OBJGENM.(eval(BEHAVIOR.clMETA():objmethodsimplement)).(class):(CM_OBJECT_N+6))
|
||||
#xtranslate superclass:needclassid => (OBJGENM.(eval(BEHAVIOR.clMETA():objmethodsimplement)).(class):(CM_OBJECT_N+7))
|
||||
#xtranslate superclass:isinheritfrom => (OBJGENM.(eval(BEHAVIOR.clMETA():objmethodsimplement)).(class):(CM_OBJECT_N+8))
|
||||
|
||||
**********************************************************************
|
||||
static function setMCMethods(pOsztaly)
|
||||
// Egy t”mb”t felt”lt a metaoszt ly m–veleti blokkjaival.
|
||||
return pOsztaly
|
||||
|
||||
**********************************************************************
|
||||
static function setMCams(ta,tm)
|
||||
// Egy t”mb”t felt”lt a metaoszt ly ltal def. objektumok attrib£tumaival ‚s m–veleteivel.
|
||||
|
||||
return nil
|
||||
|
||||
**********************************************************************
|
||||
#ifndef _NO_MCMETACLAS_
|
||||
#ifdef _STRICT_PARENT_
|
||||
#ifdef _CA_CM_ONLY_
|
||||
#include "meta.och" // "metaclas.och"
|
||||
#else // _CA_CM_ONLY_
|
||||
#define _CA_CM_ONLY_
|
||||
#include "meta.och" // "metaclas.och"
|
||||
#undef _CA_CM_ONLY_
|
||||
#endif // _CA_CM_ONLY_
|
||||
#else
|
||||
#include "meta.och" // "metaclas.och"
|
||||
#endif // _STRICT_PARENT_
|
||||
function mcMETACLAS()
|
||||
// El“szedi az oszt ly metaoszt ly t. (metaclass)
|
||||
static metaOsztaly
|
||||
if (metaOsztaly==nil)
|
||||
metaOsztaly:=META.clMETA():onew(;
|
||||
clMETA(),;
|
||||
"METACLAS",;
|
||||
CA_METACLAS_N,;
|
||||
CM_METACLAS_N,;
|
||||
{|ta,tm|setMCams(ta,tm)},;
|
||||
{|t|setMCMethods(t)})
|
||||
endif
|
||||
return metaOsztaly
|
||||
#endif // _NO_MCMETACLAS_
|
||||
|
||||
#endif // _NO_METACLAS_
|
||||
**********************************************************************
|
||||
#endif // _METACLAS_PRG_OCH_
|
||||
#endif // _METACLAS_PRG_
|
||||
@@ -1,32 +0,0 @@
|
||||
//
|
||||
// $Id$
|
||||
//
|
||||
|
||||
//*******************************************************************
|
||||
// mmarker.cls : Match marker token oszt ly.
|
||||
// 1999, Csisz r Levente
|
||||
|
||||
// Match markereket t rol˘ token.
|
||||
|
||||
class MMARKER TOKEN
|
||||
|
||||
attrib mNum // A match marker sorsz ma egy makr˘ definˇci˘ban.
|
||||
|
||||
attrib nextToken // A regular match markerek olyanok, hogy az
|
||||
// elemz“ el“re n‚z a k”vetkez“ tokenhez.
|
||||
// Ezt a tokent t rolja itt. Ha nil, akkor
|
||||
// nincs ilyen token.
|
||||
rmethod oinit(id,str,file,line,pos)
|
||||
// Inicializ lja az objektumot. Az str lesz a match marker neve.
|
||||
|
||||
nmethod getName()
|
||||
|
||||
metaclass
|
||||
|
||||
rmethod onew(id,str,file,line,pos)
|
||||
|
||||
|
||||
nmethod isMatchMarker(aToken)
|
||||
// Meg llpˇtja, hogy az aToken egy match marker-e.
|
||||
// Ret: .t., ha igezn, .f., ha nem.
|
||||
|
||||
@@ -1,299 +0,0 @@
|
||||
// MMARKER.och oszt ly implement ci¢.
|
||||
// Gener lva: 1999.06.10, 14:40:25, OBJCCC v2.2.03
|
||||
// Meta oszt ly defin¡ci¢: Van
|
||||
|
||||
|
||||
#ifndef CA_TOKEN_N
|
||||
#ifdef _STRICT_PARENT_
|
||||
#ifdef _CA_CM_ONLY_
|
||||
#include "TOKEN.och"
|
||||
#else // _CA_CM_ONLY_
|
||||
#define _CA_CM_ONLY_
|
||||
#include "TOKEN.och"
|
||||
#undef _CA_CM_ONLY_
|
||||
#endif // _CA_CM_ONLY_
|
||||
#else
|
||||
#include "TOKEN.och"
|
||||
#endif // _STRICT_PARENT_
|
||||
#endif // CA_TOKEN_N
|
||||
|
||||
#ifndef _CA_CM_ONLY_
|
||||
#ifndef _MMARKER_OCH_
|
||||
#define _MMARKER_OCH_
|
||||
|
||||
|
||||
#xtranslate MMARKER.<obj>:id => <obj>\[CA_OBJECT_N+1\]
|
||||
#xtranslate MMARKER.<obj>:str => <obj>\[CA_OBJECT_N+2\]
|
||||
#xtranslate MMARKER.<obj>:file => <obj>\[CA_OBJECT_N+3\]
|
||||
#xtranslate MMARKER.<obj>:line => <obj>\[CA_OBJECT_N+4\]
|
||||
#xtranslate MMARKER.<obj>:pos => <obj>\[CA_OBJECT_N+5\]
|
||||
#xtranslate MMARKER.<obj>:classify => <obj>\[CA_OBJECT_N+6\]
|
||||
#xtranslate MMARKER.<obj>:error => <obj>\[CA_OBJECT_N+7\]
|
||||
#xtranslate MMARKER.<obj>:eqtype => <obj>\[CA_OBJECT_N+8\]
|
||||
|
||||
|
||||
#xtranslate MMARKER.<obj>:oinit => (OBJGEN.(<obj>):(4))
|
||||
#xtranslate MMARKER.<obj>:getclass => (OBJGEN.(<obj>):(5))
|
||||
#xtranslate MMARKER.<obj>:isclass => (OBJGEN.(<obj>):(6))
|
||||
#xtranslate MMARKER.<obj>:getattrib => (OBJGEN.(<obj>):(7))
|
||||
#xtranslate MMARKER.<obj>:setattrib => (OBJGEN.(<obj>):(8))
|
||||
#xtranslate MMARKER.<obj>:iserror => (OBJGEN.(<obj>):(CM_OBJECT_N+1))
|
||||
#xtranslate MMARKER.<obj>:errorstr => (OBJGEN.(<obj>):(CM_OBJECT_N+2))
|
||||
#xtranslate MMARKER.<obj>:printtostr => (OBJGEN.(<obj>):(CM_OBJECT_N+3))
|
||||
#xtranslate MMARKER.<obj>:getstr => (OBJGEN.(<obj>):(CM_OBJECT_N+4))
|
||||
#xtranslate MMARKER.<obj>:copytoken => (OBJGEN.(<obj>):(CM_OBJECT_N+5))
|
||||
|
||||
|
||||
#xtranslate MMARKER.<obj>:mnum => <obj>\[CA_TOKEN_N+1\]
|
||||
#xtranslate MMARKER.<obj>:nexttoken => <obj>\[CA_TOKEN_N+2\]
|
||||
|
||||
// ™r”k”lve: oinit(id,str,file,line,pos)
|
||||
// Specifik lva: getname()
|
||||
|
||||
// ™r”k”lve: oinit(id,str,file,line,pos)
|
||||
#xtranslate MMARKER.<obj>:getname => (OBJGEN.(<obj>):(CM_TOKEN_N+1))
|
||||
|
||||
#endif // _MMARKER_OCH_
|
||||
#endif // _CA_CM_ONLY_
|
||||
|
||||
#ifndef CA_MMARKER_N
|
||||
#define CA_MMARKER_N CA_TOKEN_N+2
|
||||
#define CM_MMARKER_N CM_TOKEN_N+1
|
||||
#endif // CA_MMARKER_N
|
||||
|
||||
#ifndef _CA_CM_ONLY_
|
||||
#ifndef _MMARKERCLASS_OCH_
|
||||
#define _MMARKERCLASS_OCH_
|
||||
|
||||
**********************************************************************
|
||||
#xtranslate C.MMARKER:<m> => (MMARKERCLASS.clMMARKER():<m>)
|
||||
#xtranslate C.MMARKER:self() => (clMMARKER())
|
||||
|
||||
|
||||
#xtranslate MMARKERCLASS.<obj>:parent => <obj>\[CA_OBJECT_N+1\]
|
||||
#xtranslate MMARKERCLASS.<obj>:name => <obj>\[CA_OBJECT_N+2\]
|
||||
#xtranslate MMARKERCLASS.<obj>:objsize => <obj>\[CA_OBJECT_N+3\]
|
||||
#xtranslate MMARKERCLASS.<obj>:attribs => <obj>\[CA_OBJECT_N+4\]
|
||||
#xtranslate MMARKERCLASS.<obj>:methods => <obj>\[CA_OBJECT_N+5\]
|
||||
#xtranslate MMARKERCLASS.<obj>:classid => <obj>\[CA_OBJECT_N+6\]
|
||||
#xtranslate MMARKERCLASS.<obj>:parentclassids => <obj>\[CA_OBJECT_N+7\]
|
||||
#xtranslate MMARKERCLASS.<obj>:amblock => <obj>\[CA_OBJECT_N+8\]
|
||||
#xtranslate MMARKERCLASS.<obj>:methodsblock => <obj>\[CA_OBJECT_N+9\]
|
||||
#xtranslate MMARKERCLASS.<obj>:objmethodsimplement => <obj>\[CA_OBJECT_N+10\]
|
||||
#xtranslate MMARKERCLASS.<obj>:errstrarray => <obj>\[CA_BEHAVIOR_N+1\]
|
||||
#xtranslate MMARKERCLASS.<obj>:equivclass => <obj>\[CA_BEHAVIOR_N+2\]
|
||||
|
||||
|
||||
#xtranslate MMARKERCLASS.<obj>:oinit => (OBJGEN.(<obj>):(4))
|
||||
#xtranslate MMARKERCLASS.<obj>:getclass => (OBJGEN.(<obj>):(5))
|
||||
#xtranslate MMARKERCLASS.<obj>:isclass => (OBJGEN.(<obj>):(6))
|
||||
#xtranslate MMARKERCLASS.<obj>:getattrib => (OBJGEN.(<obj>):(7))
|
||||
#xtranslate MMARKERCLASS.<obj>:setattrib => (OBJGEN.(<obj>):(8))
|
||||
#xtranslate MMARKERCLASS.<obj>:onew => (OBJGEN.(<obj>):(CM_OBJECT_N+1))
|
||||
#xtranslate MMARKERCLASS.<obj>:ocreate => (OBJGEN.(<obj>):(CM_OBJECT_N+2))
|
||||
#xtranslate MMARKERCLASS.<obj>:rawoinit => (OBJGEN.(<obj>):(CM_OBJECT_N+3))
|
||||
#xtranslate MMARKERCLASS.<obj>:oinitclass => (OBJGEN.(<obj>):(CM_OBJECT_N+4))
|
||||
#xtranslate MMARKERCLASS.<obj>:getmethodsimplement => (OBJGEN.(<obj>):(CM_OBJECT_N+5))
|
||||
#xtranslate MMARKERCLASS.<obj>:attribidx => (OBJGEN.(<obj>):(CM_OBJECT_N+6))
|
||||
#xtranslate MMARKERCLASS.<obj>:needclassid => (OBJGEN.(<obj>):(CM_OBJECT_N+7))
|
||||
#xtranslate MMARKERCLASS.<obj>:isinheritfrom => (OBJGEN.(<obj>):(CM_OBJECT_N+8))
|
||||
#xtranslate MMARKERCLASS.<obj>:onewerror => (OBJGEN.(<obj>):(CM_BEHAVIOR_N+1))
|
||||
#xtranslate MMARKERCLASS.<obj>:copyfromtoken => (OBJGEN.(<obj>):(CM_BEHAVIOR_N+2))
|
||||
#xtranslate MMARKERCLASS.<obj>:findclassify => (OBJGEN.(<obj>):(CM_BEHAVIOR_N+3))
|
||||
|
||||
|
||||
|
||||
// ™r”k”lve: onew(id,str,file,line,pos)
|
||||
// Specifik lva: ismatchmarker(aToken)
|
||||
|
||||
// ™r”k”lve: onew(id,str,file,line,pos)
|
||||
#xtranslate MMARKERCLASS.<obj>:ismatchmarker => (OBJGEN.(<obj>):(CM_TOKENCLASS_N+1))
|
||||
|
||||
#endif // _MMARKERCLASS_OCH_
|
||||
#endif // _CA_CM_ONLY_
|
||||
|
||||
#ifndef CA_MMARKERCLASS_N
|
||||
#define CA_MMARKERCLASS_N CA_TOKENCLASS_N+0
|
||||
#define CM_MMARKERCLASS_N CM_TOKENCLASS_N+1
|
||||
#endif // CA_MMARKERCLASS_N
|
||||
|
||||
|
||||
**********************************************************************
|
||||
#ifdef _MMARKER_PRG_
|
||||
#ifndef _MMARKER_PRG_OCH_
|
||||
#define _MMARKER_PRG_OCH_
|
||||
|
||||
|
||||
**********************************************************************
|
||||
#xtranslate othis:<m> => MMARKER.(othis):<m>
|
||||
#xtranslate thisclass:<m> => MMARKERCLASS.(this:getClass()):<m>
|
||||
#define CTHIS MMARKER
|
||||
|
||||
|
||||
**********************************************************************
|
||||
#xtranslate this:<m> => MMARKER.(this):<m>
|
||||
|
||||
#xcommand implement oinit(id,str,file,line,pos) => ;
|
||||
static function oinit(this,id,str,file,line,pos)
|
||||
#xcommand implement getname() => static function getname(this)
|
||||
|
||||
#ifdef _IMPLEMENT_EXPORT_
|
||||
#xcommand implement export oinit(id,str,file,line,pos) => ;
|
||||
function oinit(this,id,str,file,line,pos)
|
||||
#xcommand implement export getname() => function getname(this)
|
||||
#endif // _IMPLEMENT_EXPORT_
|
||||
|
||||
#xtranslate super:oinit => (OBJGENM.(eval(BEHAVIOR.clTOKEN():objmethodsimplement)).(this):(4))
|
||||
#xtranslate super:getclass => (OBJGENM.(eval(BEHAVIOR.clTOKEN():objmethodsimplement)).(this):(5))
|
||||
#xtranslate super:isclass => (OBJGENM.(eval(BEHAVIOR.clTOKEN():objmethodsimplement)).(this):(6))
|
||||
#xtranslate super:getattrib => (OBJGENM.(eval(BEHAVIOR.clTOKEN():objmethodsimplement)).(this):(7))
|
||||
#xtranslate super:setattrib => (OBJGENM.(eval(BEHAVIOR.clTOKEN():objmethodsimplement)).(this):(8))
|
||||
#xtranslate super:iserror => (OBJGENM.(eval(BEHAVIOR.clTOKEN():objmethodsimplement)).(this):(CM_OBJECT_N+1))
|
||||
#xtranslate super:errorstr => (OBJGENM.(eval(BEHAVIOR.clTOKEN():objmethodsimplement)).(this):(CM_OBJECT_N+2))
|
||||
#xtranslate super:printtostr => (OBJGENM.(eval(BEHAVIOR.clTOKEN():objmethodsimplement)).(this):(CM_OBJECT_N+3))
|
||||
#xtranslate super:getstr => (OBJGENM.(eval(BEHAVIOR.clTOKEN():objmethodsimplement)).(this):(CM_OBJECT_N+4))
|
||||
#xtranslate super:copytoken => (OBJGENM.(eval(BEHAVIOR.clTOKEN():objmethodsimplement)).(this):(CM_OBJECT_N+5))
|
||||
|
||||
**********************************************************************
|
||||
static function setCMethods(pOsztaly)
|
||||
// Egy t”mb”t felt”lt az oszt ly m–veleti blokkjaival.
|
||||
pOsztaly[(4)]:={|this,id,str,file,line,pos| oinit(this,id,str,file,line,pos)}
|
||||
pOsztaly[(CM_TOKEN_N+1)]:={|this| getname(this)}
|
||||
return pOsztaly
|
||||
|
||||
**********************************************************************
|
||||
static function setCams(ta,tm)
|
||||
// Egy t”mb”t felt”lt az oszt ly ltal def. objektumok attrib£tumaival ‚s m–veleteivel.
|
||||
ta[CA_TOKEN_N+1-CA_NIL_N] := {CA_TOKEN_N+1,'mnum', }
|
||||
ta[CA_TOKEN_N+2-CA_NIL_N] := {CA_TOKEN_N+2,'nexttoken', }
|
||||
|
||||
tm[(4)-CM_NIL_N] := {(4),'oinit','id,str,file,line,pos',nil}
|
||||
tm[(CM_TOKEN_N+1)-CM_NIL_N] := {(CM_TOKEN_N+1),'getname','',nil}
|
||||
return nil
|
||||
|
||||
#ifndef _NO_CLMMARKER_
|
||||
#ifdef _STRICT_PARENT_
|
||||
#ifdef _CA_CM_ONLY_
|
||||
#include "meta.och"
|
||||
#else // _CA_CM_ONLY_
|
||||
#define _CA_CM_ONLY_
|
||||
#include "meta.och"
|
||||
#undef _CA_CM_ONLY_
|
||||
#endif // _CA_CM_ONLY_
|
||||
#else
|
||||
#include "meta.och"
|
||||
#endif // _STRICT_PARENT_
|
||||
**********************************************************************
|
||||
function clMMARKER()
|
||||
// El“szedi az oszt lyt. (class)
|
||||
static osztaly
|
||||
if (osztaly==nil)
|
||||
osztaly:=META.mcMMARKERCLASS():onew(;
|
||||
clTOKEN(),;
|
||||
"MMARKER",;
|
||||
CA_MMARKER_N,;
|
||||
CM_MMARKER_N,;
|
||||
{|ta,tm|setCams(ta,tm)},;
|
||||
{|t|setCMethods(t)})
|
||||
endif
|
||||
return osztaly
|
||||
#endif // _NO_CLMMARKER_
|
||||
|
||||
#ifndef _NO_MMARKERCLASS_
|
||||
|
||||
**********************************************************************
|
||||
#xtranslate class:<m> => MMARKERCLASS.(class):<m>
|
||||
|
||||
#xcommand cimplement onew(id,str,file,line,pos) => ;
|
||||
static function onew(class,id,str,file,line,pos)
|
||||
#xcommand cimplement ismatchmarker(aToken) => ;
|
||||
static function ismatchmarker(class,aToken)
|
||||
|
||||
#ifdef _IMPLEMENT_EXPORT_
|
||||
#xcommand cimplement export onew(id,str,file,line,pos) => ;
|
||||
function onew(class,id,str,file,line,pos)
|
||||
#xcommand cimplement export ismatchmarker(aToken) => ;
|
||||
function ismatchmarker(class,aToken)
|
||||
#endif // _IMPLEMENT_EXPORT_
|
||||
|
||||
#xtranslate superclass:oinit => (OBJGENM.(eval(BEHAVIOR.mcTOKENCLASS():objmethodsimplement)).(class):(4))
|
||||
#xtranslate superclass:getclass => (OBJGENM.(eval(BEHAVIOR.mcTOKENCLASS():objmethodsimplement)).(class):(5))
|
||||
#xtranslate superclass:isclass => (OBJGENM.(eval(BEHAVIOR.mcTOKENCLASS():objmethodsimplement)).(class):(6))
|
||||
#xtranslate superclass:getattrib => (OBJGENM.(eval(BEHAVIOR.mcTOKENCLASS():objmethodsimplement)).(class):(7))
|
||||
#xtranslate superclass:setattrib => (OBJGENM.(eval(BEHAVIOR.mcTOKENCLASS():objmethodsimplement)).(class):(8))
|
||||
#xtranslate superclass:onew => (OBJGENM.(eval(BEHAVIOR.mcTOKENCLASS():objmethodsimplement)).(class):(CM_OBJECT_N+1))
|
||||
#xtranslate superclass:ocreate => (OBJGENM.(eval(BEHAVIOR.mcTOKENCLASS():objmethodsimplement)).(class):(CM_OBJECT_N+2))
|
||||
#xtranslate superclass:rawoinit => (OBJGENM.(eval(BEHAVIOR.mcTOKENCLASS():objmethodsimplement)).(class):(CM_OBJECT_N+3))
|
||||
#xtranslate superclass:oinitclass => (OBJGENM.(eval(BEHAVIOR.mcTOKENCLASS():objmethodsimplement)).(class):(CM_OBJECT_N+4))
|
||||
#xtranslate superclass:getmethodsimplement => (OBJGENM.(eval(BEHAVIOR.mcTOKENCLASS():objmethodsimplement)).(class):(CM_OBJECT_N+5))
|
||||
#xtranslate superclass:attribidx => (OBJGENM.(eval(BEHAVIOR.mcTOKENCLASS():objmethodsimplement)).(class):(CM_OBJECT_N+6))
|
||||
#xtranslate superclass:needclassid => (OBJGENM.(eval(BEHAVIOR.mcTOKENCLASS():objmethodsimplement)).(class):(CM_OBJECT_N+7))
|
||||
#xtranslate superclass:isinheritfrom => (OBJGENM.(eval(BEHAVIOR.mcTOKENCLASS():objmethodsimplement)).(class):(CM_OBJECT_N+8))
|
||||
#xtranslate superclass:onewerror => (OBJGENM.(eval(BEHAVIOR.mcTOKENCLASS():objmethodsimplement)).(class):(CM_BEHAVIOR_N+1))
|
||||
#xtranslate superclass:copyfromtoken => (OBJGENM.(eval(BEHAVIOR.mcTOKENCLASS():objmethodsimplement)).(class):(CM_BEHAVIOR_N+2))
|
||||
#xtranslate superclass:findclassify => (OBJGENM.(eval(BEHAVIOR.mcTOKENCLASS():objmethodsimplement)).(class):(CM_BEHAVIOR_N+3))
|
||||
|
||||
**********************************************************************
|
||||
static function setMCMethods(pOsztaly)
|
||||
// Egy t”mb”t felt”lt a metaoszt ly m–veleti blokkjaival.
|
||||
pOsztaly[(CM_OBJECT_N+1)]:={|class,id,str,file,line,pos| onew(class,id,str,file,line,pos)}
|
||||
pOsztaly[(CM_TOKENCLASS_N+1)]:={|class,aToken| ismatchmarker(class,aToken)}
|
||||
return pOsztaly
|
||||
|
||||
**********************************************************************
|
||||
static function setMCams(ta,tm)
|
||||
// Egy t”mb”t felt”lt a metaoszt ly ltal def. objektumok attrib£tumaival ‚s m–veleteivel.
|
||||
|
||||
tm[(CM_OBJECT_N+1)-CM_NIL_N] := {(CM_OBJECT_N+1),'onew','id,str,file,line,pos',nil}
|
||||
tm[(CM_TOKENCLASS_N+1)-CM_NIL_N] := {(CM_TOKENCLASS_N+1),'ismatchmarker','aToken',nil}
|
||||
return nil
|
||||
|
||||
**********************************************************************
|
||||
#ifndef _NO_MCMMARKERCLASS_
|
||||
#ifdef _STRICT_PARENT_
|
||||
#ifdef _CA_CM_ONLY_
|
||||
#include "meta.och" // "metaclas.och"
|
||||
#else // _CA_CM_ONLY_
|
||||
#define _CA_CM_ONLY_
|
||||
#include "meta.och" // "metaclas.och"
|
||||
#undef _CA_CM_ONLY_
|
||||
#endif // _CA_CM_ONLY_
|
||||
#else
|
||||
#include "meta.och" // "metaclas.och"
|
||||
#endif // _STRICT_PARENT_
|
||||
function mcMMARKERCLASS()
|
||||
// El“szedi az oszt ly metaoszt ly t. (metaclass)
|
||||
static metaOsztaly
|
||||
if (metaOsztaly==nil)
|
||||
metaOsztaly:=META.clMETA():onew(;
|
||||
mcTOKENCLASS(),;
|
||||
"MMARKERCLASS",;
|
||||
CA_MMARKERCLASS_N,;
|
||||
CM_MMARKERCLASS_N,;
|
||||
{|ta,tm|setMCams(ta,tm)},;
|
||||
{|t|setMCMethods(t)})
|
||||
endif
|
||||
return metaOsztaly
|
||||
#endif // _NO_MCMMARKERCLASS_
|
||||
|
||||
#endif // _NO_MMARKERCLASS_
|
||||
#ifdef _IMPLEMENT_ONEW_
|
||||
**********************************************************************
|
||||
cimplement onew(id,str,file,line,pos)
|
||||
local o:=class:ocreate()
|
||||
|
||||
MMARKER.o:oinit(id,str,file,line,pos)
|
||||
return o
|
||||
#endif // _IMPLEMENT_ONEW_
|
||||
|
||||
**********************************************************************
|
||||
#ifdef _IMPLEMENT_OINIT_
|
||||
implement oinit(id,str,file,line,pos)
|
||||
super:oinit()
|
||||
return this
|
||||
#endif // _IMPLEMENT_OINIT_
|
||||
|
||||
**********************************************************************
|
||||
**********************************************************************
|
||||
#endif // _MMARKER_PRG_OCH_
|
||||
#endif // _MMARKER_PRG_
|
||||
@@ -1,47 +0,0 @@
|
||||
/*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
//*******************************************************************
|
||||
// mmarker.prg: az MMARKER oszt ly implement ci¢ja.
|
||||
// 1999, Csisz r Levente
|
||||
|
||||
//*******************************************************************
|
||||
#include "ctoken.ch"
|
||||
|
||||
//*******************************************************************
|
||||
#include "objgen.ch"
|
||||
|
||||
#define _MMARKER_PRG_
|
||||
#define _IMPLEMENT_ONEW_
|
||||
|
||||
#include "mmarker.och"
|
||||
|
||||
//*******************************************************************
|
||||
implement oinit(id,str,file,line,pos)
|
||||
super:oinit(id,str,file,line,pos)
|
||||
this:mNum :=nil
|
||||
return this
|
||||
|
||||
//*******************************************************************
|
||||
implement getName()
|
||||
return this:str
|
||||
|
||||
|
||||
//*******************************************************************
|
||||
cimplement isMatchMarker(aToken)
|
||||
// Meg llp¡tja, hogy az aToken egy match marker-e.
|
||||
// Ret: .t., ha igezn, .f., ha nem.
|
||||
static idMatchMarkers:={;
|
||||
TKID_REGULAR_MATCH_MARKER ,;
|
||||
TKID_WILD_MATCH_MARKER ,;
|
||||
TKID_EXT_EXPR_MATCH_MARKER ,;
|
||||
TKID_LIST_MATCH_MARKER ,;
|
||||
TKID_RESTRICTED_MATCH_MARKER ;
|
||||
}
|
||||
|
||||
return 0!=ascan(idMatchMarkers,TOKEN.aTOken:id)
|
||||
|
||||
//*******************************************************************
|
||||
|
||||
|
||||
@@ -1,136 +0,0 @@
|
||||
//
|
||||
// $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 n‚v ‚s a sor (lparser) elemz“ ltal k‚szˇ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 elemz‚skor.
|
||||
|
||||
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 v‚ge van a streamnek, vagy ha
|
||||
// hiba volt.
|
||||
|
||||
nmethod parseFun(edefdict)
|
||||
// Ez v‚gzi a t‚nyleges elemz‚st.
|
||||
// A this:item-t elemzi, sz<73>ks‚g eset‚n m‚g olvashat.
|
||||
// Elemezi az inputon a <n‚v>'('<param1>,...')' param‚tereket.
|
||||
// Az edefdict-nek a <n‚v>-hez tartoz˘ makr˘ definˇci˘nak kell
|
||||
// lennie.
|
||||
|
||||
// Ret: {sikeres,itemLista}
|
||||
// Ha sikeres volt, akkor a sikeres==.t., ‚s az itemLista a csere
|
||||
// eredm‚nye.
|
||||
// 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 v‚gzi a t‚nyleges elemz‚st.
|
||||
// A this:item-t elemzi, sz<73>ks‚g eset‚n m‚g olvashat.
|
||||
// Elemezi az inputon az extrdict tokenjeit.
|
||||
|
||||
// Ret: {sikeres,itemLista}
|
||||
// Ha sikeres volt, akkor a sikeres==.t., ‚s az itemLista a csere
|
||||
// eredm‚nye.
|
||||
// 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 v‚gzi a t‚nyleges elemz‚st.
|
||||
// A this:item-t elemzi, sz<73>ks‚g eset‚n m‚g olvashat.
|
||||
// Elemezi az inputon az extrdict tokenjeit.
|
||||
|
||||
// Ret: {sikeres,itemLista}
|
||||
// Ha sikeres volt, akkor a sikeres==.t., ‚s az itemLista a csere
|
||||
// eredm‚nye.
|
||||
// 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,
|
||||
// egy‚bk‚nt nil-t.
|
||||
|
||||
nmethod trimTokenList(tList)
|
||||
// A tList elej‚r“l ‚s v‚g‚r“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 cser‚lni.
|
||||
// Ret: {sikeres,itemLista}
|
||||
// Ha sikeres volt, akkor a sikeres==.t., ‚s az itemLista a csere
|
||||
// eredm‚nye.
|
||||
// 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)
|
||||
|
||||
@@ -1,445 +0,0 @@
|
||||
// MPARSER.och oszt ly implement ci¢.
|
||||
// Gener lva: 1999.06.10, 14:41:19, OBJCCC v2.2.03
|
||||
// Meta oszt ly defin¡ci¢: Van
|
||||
|
||||
|
||||
#ifndef CA_PARSER_N
|
||||
#ifdef _STRICT_PARENT_
|
||||
#ifdef _CA_CM_ONLY_
|
||||
#include "PARSER.och"
|
||||
#else // _CA_CM_ONLY_
|
||||
#define _CA_CM_ONLY_
|
||||
#include "PARSER.och"
|
||||
#undef _CA_CM_ONLY_
|
||||
#endif // _CA_CM_ONLY_
|
||||
#else
|
||||
#include "PARSER.och"
|
||||
#endif // _STRICT_PARENT_
|
||||
#endif // CA_PARSER_N
|
||||
|
||||
#ifndef _CA_CM_ONLY_
|
||||
#ifndef _MPARSER_OCH_
|
||||
#define _MPARSER_OCH_
|
||||
|
||||
|
||||
#xtranslate MPARSER.<obj>:name => <obj>\[CA_OBJECT_N+1\]
|
||||
#xtranslate MPARSER.<obj>:errorstream => <obj>\[CA_OBJECT_N+2\]
|
||||
#xtranslate MPARSER.<obj>:tbuffer => <obj>\[CA_OBJECT_N+3\]
|
||||
#xtranslate MPARSER.<obj>:inputreader => <obj>\[CA_READER_N+1\]
|
||||
#xtranslate MPARSER.<obj>:item => <obj>\[CA_TREADER_N+1\]
|
||||
#xtranslate MPARSER.<obj>:parserbuffer => <obj>\[CA_TREADER_N+2\]
|
||||
|
||||
|
||||
#xtranslate MPARSER.<obj>:oinit => (OBJGEN.(<obj>):(4))
|
||||
#xtranslate MPARSER.<obj>:getclass => (OBJGEN.(<obj>):(5))
|
||||
#xtranslate MPARSER.<obj>:isclass => (OBJGEN.(<obj>):(6))
|
||||
#xtranslate MPARSER.<obj>:getattrib => (OBJGEN.(<obj>):(7))
|
||||
#xtranslate MPARSER.<obj>:setattrib => (OBJGEN.(<obj>):(8))
|
||||
#xtranslate MPARSER.<obj>:read => (OBJGEN.(<obj>):(CM_OBJECT_N+1))
|
||||
#xtranslate MPARSER.<obj>:unread => (OBJGEN.(<obj>):(CM_OBJECT_N+2))
|
||||
#xtranslate MPARSER.<obj>:readtbuffer => (OBJGEN.(<obj>):(CM_OBJECT_N+3))
|
||||
#xtranslate MPARSER.<obj>:arraytbuffer => (OBJGEN.(<obj>):(CM_OBJECT_N+4))
|
||||
#xtranslate MPARSER.<obj>:readitem => (OBJGEN.(<obj>):(CM_OBJECT_N+5))
|
||||
#xtranslate MPARSER.<obj>:iserror => (OBJGEN.(<obj>):(CM_OBJECT_N+6))
|
||||
#xtranslate MPARSER.<obj>:adderror => (OBJGEN.(<obj>):(CM_OBJECT_N+7))
|
||||
#xtranslate MPARSER.<obj>:destruct => (OBJGEN.(<obj>):(CM_OBJECT_N+8))
|
||||
#xtranslate MPARSER.<obj>:readinput => (OBJGEN.(<obj>):(CM_READER_N+1))
|
||||
#xtranslate MPARSER.<obj>:unreadinput => (OBJGEN.(<obj>):(CM_READER_N+2))
|
||||
#xtranslate MPARSER.<obj>:addinputreader => (OBJGEN.(<obj>):(CM_READER_N+3))
|
||||
#xtranslate MPARSER.<obj>:putparserbuffer => (OBJGEN.(<obj>):(CM_TREADER_N+1))
|
||||
#xtranslate MPARSER.<obj>:getparserbuffer => (OBJGEN.(<obj>):(CM_TREADER_N+2))
|
||||
#xtranslate MPARSER.<obj>:unputparserbuffer => (OBJGEN.(<obj>):(CM_TREADER_N+3))
|
||||
#xtranslate MPARSER.<obj>:ungetparserbuffer => (OBJGEN.(<obj>):(CM_TREADER_N+4))
|
||||
#xtranslate MPARSER.<obj>:clearparserbuffer => (OBJGEN.(<obj>):(CM_TREADER_N+5))
|
||||
#xtranslate MPARSER.<obj>:rds => (OBJGEN.(<obj>):(CM_TREADER_N+6))
|
||||
#xtranslate MPARSER.<obj>:unrds => (OBJGEN.(<obj>):(CM_TREADER_N+7))
|
||||
#xtranslate MPARSER.<obj>:strparserbuffer => (OBJGEN.(<obj>):(CM_TREADER_N+8))
|
||||
#xtranslate MPARSER.<obj>:arrayparserbuffer => (OBJGEN.(<obj>):(CM_TREADER_N+9))
|
||||
|
||||
|
||||
#xtranslate MPARSER.<obj>:soreleje => <obj>\[CA_PARSER_N+1\]
|
||||
#xtranslate MPARSER.<obj>:makrobuf => <obj>\[CA_PARSER_N+2\]
|
||||
|
||||
// Specifik lva: startmakrobuf(item)
|
||||
// Specifik lva: rdsmakrobuf()
|
||||
// Specifik lva: unrdsmakrobuf(n)
|
||||
// ™r”k”lve: readitem()
|
||||
// Specifik lva: parsefun(edefdict)
|
||||
// Specifik lva: parsetokenlist(leftTokenList,cmd4,paramValues,toEOL)
|
||||
// Specifik lva: parsextr(extrdict)
|
||||
// Specifik lva: parsextrtree(trdictTree,mi,toEOL)
|
||||
// Specifik lva: mleftxntoken(leftToken,cmd4)
|
||||
// Specifik lva: mleftxmrtoken(leftToken,cmd4,paramValues,nUres)
|
||||
// Specifik lva: mleftxrmmtoken(leftToken,cmd4)
|
||||
// Specifik lva: mleftxwmtoken(leftToken)
|
||||
// Specifik lva: mleftxeemtoken(leftToken)
|
||||
// Specifik lva: mleftxlmtoken(leftToken,cmd4)
|
||||
// Specifik lva: mleftxrsmmtoken(leftToken,cmd4)
|
||||
// ™r”k”lve: oinit(inputReader,name,errorStream)
|
||||
|
||||
#xtranslate MPARSER.<obj>:startmakrobuf => (OBJGEN.(<obj>):(CM_PARSER_N+1))
|
||||
#xtranslate MPARSER.<obj>:rdsmakrobuf => (OBJGEN.(<obj>):(CM_PARSER_N+2))
|
||||
#xtranslate MPARSER.<obj>:unrdsmakrobuf => (OBJGEN.(<obj>):(CM_PARSER_N+3))
|
||||
// ™r”k”lve: readitem()
|
||||
#xtranslate MPARSER.<obj>:parsefun => (OBJGEN.(<obj>):(CM_PARSER_N+4))
|
||||
#xtranslate MPARSER.<obj>:parsetokenlist => (OBJGEN.(<obj>):(CM_PARSER_N+5))
|
||||
#xtranslate MPARSER.<obj>:parsextr => (OBJGEN.(<obj>):(CM_PARSER_N+6))
|
||||
#xtranslate MPARSER.<obj>:parsextrtree => (OBJGEN.(<obj>):(CM_PARSER_N+7))
|
||||
#xtranslate MPARSER.<obj>:mleftxntoken => (OBJGEN.(<obj>):(CM_PARSER_N+8))
|
||||
#xtranslate MPARSER.<obj>:mleftxmrtoken => (OBJGEN.(<obj>):(CM_PARSER_N+9))
|
||||
#xtranslate MPARSER.<obj>:mleftxrmmtoken => (OBJGEN.(<obj>):(CM_PARSER_N+10))
|
||||
#xtranslate MPARSER.<obj>:mleftxwmtoken => (OBJGEN.(<obj>):(CM_PARSER_N+11))
|
||||
#xtranslate MPARSER.<obj>:mleftxeemtoken => (OBJGEN.(<obj>):(CM_PARSER_N+12))
|
||||
#xtranslate MPARSER.<obj>:mleftxlmtoken => (OBJGEN.(<obj>):(CM_PARSER_N+13))
|
||||
#xtranslate MPARSER.<obj>:mleftxrsmmtoken => (OBJGEN.(<obj>):(CM_PARSER_N+14))
|
||||
// ™r”k”lve: oinit(inputReader,name,errorStream)
|
||||
|
||||
#endif // _MPARSER_OCH_
|
||||
#endif // _CA_CM_ONLY_
|
||||
|
||||
#ifndef CA_MPARSER_N
|
||||
#define CA_MPARSER_N CA_PARSER_N+2
|
||||
#define CM_MPARSER_N CM_PARSER_N+14
|
||||
#endif // CA_MPARSER_N
|
||||
|
||||
#ifndef _CA_CM_ONLY_
|
||||
#ifndef _MPARSERCLASS_OCH_
|
||||
#define _MPARSERCLASS_OCH_
|
||||
|
||||
**********************************************************************
|
||||
#xtranslate C.MPARSER:<m> => (MPARSERCLASS.clMPARSER():<m>)
|
||||
#xtranslate C.MPARSER:self() => (clMPARSER())
|
||||
|
||||
|
||||
#xtranslate MPARSERCLASS.<obj>:parent => <obj>\[CA_OBJECT_N+1\]
|
||||
#xtranslate MPARSERCLASS.<obj>:name => <obj>\[CA_OBJECT_N+2\]
|
||||
#xtranslate MPARSERCLASS.<obj>:objsize => <obj>\[CA_OBJECT_N+3\]
|
||||
#xtranslate MPARSERCLASS.<obj>:attribs => <obj>\[CA_OBJECT_N+4\]
|
||||
#xtranslate MPARSERCLASS.<obj>:methods => <obj>\[CA_OBJECT_N+5\]
|
||||
#xtranslate MPARSERCLASS.<obj>:classid => <obj>\[CA_OBJECT_N+6\]
|
||||
#xtranslate MPARSERCLASS.<obj>:parentclassids => <obj>\[CA_OBJECT_N+7\]
|
||||
#xtranslate MPARSERCLASS.<obj>:amblock => <obj>\[CA_OBJECT_N+8\]
|
||||
#xtranslate MPARSERCLASS.<obj>:methodsblock => <obj>\[CA_OBJECT_N+9\]
|
||||
#xtranslate MPARSERCLASS.<obj>:objmethodsimplement => <obj>\[CA_OBJECT_N+10\]
|
||||
|
||||
|
||||
#xtranslate MPARSERCLASS.<obj>:oinit => (OBJGEN.(<obj>):(4))
|
||||
#xtranslate MPARSERCLASS.<obj>:getclass => (OBJGEN.(<obj>):(5))
|
||||
#xtranslate MPARSERCLASS.<obj>:isclass => (OBJGEN.(<obj>):(6))
|
||||
#xtranslate MPARSERCLASS.<obj>:getattrib => (OBJGEN.(<obj>):(7))
|
||||
#xtranslate MPARSERCLASS.<obj>:setattrib => (OBJGEN.(<obj>):(8))
|
||||
#xtranslate MPARSERCLASS.<obj>:onew => (OBJGEN.(<obj>):(CM_OBJECT_N+1))
|
||||
#xtranslate MPARSERCLASS.<obj>:ocreate => (OBJGEN.(<obj>):(CM_OBJECT_N+2))
|
||||
#xtranslate MPARSERCLASS.<obj>:rawoinit => (OBJGEN.(<obj>):(CM_OBJECT_N+3))
|
||||
#xtranslate MPARSERCLASS.<obj>:oinitclass => (OBJGEN.(<obj>):(CM_OBJECT_N+4))
|
||||
#xtranslate MPARSERCLASS.<obj>:getmethodsimplement => (OBJGEN.(<obj>):(CM_OBJECT_N+5))
|
||||
#xtranslate MPARSERCLASS.<obj>:attribidx => (OBJGEN.(<obj>):(CM_OBJECT_N+6))
|
||||
#xtranslate MPARSERCLASS.<obj>:needclassid => (OBJGEN.(<obj>):(CM_OBJECT_N+7))
|
||||
#xtranslate MPARSERCLASS.<obj>:isinheritfrom => (OBJGEN.(<obj>):(CM_OBJECT_N+8))
|
||||
|
||||
|
||||
|
||||
// ™r”k”lve: onew(inputReader,name,errorStream)
|
||||
// Specifik lva: getcloseparent(aChar)
|
||||
// Specifik lva: trimtokenlist(tList)
|
||||
// Specifik lva: parse(item,inputReader,name,defdict,edefdict,xtrdict,mi,errorStream,ujsor,trPrsAlg)
|
||||
|
||||
// ™r”k”lve: onew(inputReader,name,errorStream)
|
||||
#xtranslate MPARSERCLASS.<obj>:getcloseparent => (OBJGEN.(<obj>):(CM_PARSERCLASS_N+1))
|
||||
#xtranslate MPARSERCLASS.<obj>:trimtokenlist => (OBJGEN.(<obj>):(CM_PARSERCLASS_N+2))
|
||||
#xtranslate MPARSERCLASS.<obj>:parse => (OBJGEN.(<obj>):(CM_PARSERCLASS_N+3))
|
||||
|
||||
#endif // _MPARSERCLASS_OCH_
|
||||
#endif // _CA_CM_ONLY_
|
||||
|
||||
#ifndef CA_MPARSERCLASS_N
|
||||
#define CA_MPARSERCLASS_N CA_PARSERCLASS_N+0
|
||||
#define CM_MPARSERCLASS_N CM_PARSERCLASS_N+3
|
||||
#endif // CA_MPARSERCLASS_N
|
||||
|
||||
|
||||
**********************************************************************
|
||||
#ifdef _MPARSER_PRG_
|
||||
#ifndef _MPARSER_PRG_OCH_
|
||||
#define _MPARSER_PRG_OCH_
|
||||
|
||||
|
||||
**********************************************************************
|
||||
#xtranslate othis:<m> => MPARSER.(othis):<m>
|
||||
#xtranslate thisclass:<m> => MPARSERCLASS.(this:getClass()):<m>
|
||||
#define CTHIS MPARSER
|
||||
|
||||
|
||||
**********************************************************************
|
||||
#xtranslate this:<m> => MPARSER.(this):<m>
|
||||
|
||||
#xcommand implement startmakrobuf(item) => ;
|
||||
static function startmakrobuf(this,item)
|
||||
#xcommand implement rdsmakrobuf() => static function rdsmakrobuf(this)
|
||||
#xcommand implement unrdsmakrobuf(n) => ;
|
||||
static function unrdsmakrobuf(this,n)
|
||||
#xcommand implement readitem() => static function readitem(this)
|
||||
#xcommand implement parsefun(edefdict) => ;
|
||||
static function parsefun(this,edefdict)
|
||||
#xcommand implement parsetokenlist(leftTokenList,cmd4,paramValues,toEOL) => ;
|
||||
static function parsetokenlist(this,leftTokenList,cmd4,paramValues,toEOL)
|
||||
#xcommand implement parsextr(extrdict) => ;
|
||||
static function parsextr(this,extrdict)
|
||||
#xcommand implement parsextrtree(trdictTree,mi,toEOL) => ;
|
||||
static function parsextrtree(this,trdictTree,mi,toEOL)
|
||||
#xcommand implement mleftxntoken(leftToken,cmd4) => ;
|
||||
static function mleftxntoken(this,leftToken,cmd4)
|
||||
#xcommand implement mleftxmrtoken(leftToken,cmd4,paramValues,nUres) => ;
|
||||
static function mleftxmrtoken(this,leftToken,cmd4,paramValues,nUres)
|
||||
#xcommand implement mleftxrmmtoken(leftToken,cmd4) => ;
|
||||
static function mleftxrmmtoken(this,leftToken,cmd4)
|
||||
#xcommand implement mleftxwmtoken(leftToken) => ;
|
||||
static function mleftxwmtoken(this,leftToken)
|
||||
#xcommand implement mleftxeemtoken(leftToken) => ;
|
||||
static function mleftxeemtoken(this,leftToken)
|
||||
#xcommand implement mleftxlmtoken(leftToken,cmd4) => ;
|
||||
static function mleftxlmtoken(this,leftToken,cmd4)
|
||||
#xcommand implement mleftxrsmmtoken(leftToken,cmd4) => ;
|
||||
static function mleftxrsmmtoken(this,leftToken,cmd4)
|
||||
#xcommand implement oinit(inputReader,name,errorStream) => ;
|
||||
static function oinit(this,inputReader,name,errorStream)
|
||||
|
||||
#ifdef _IMPLEMENT_EXPORT_
|
||||
#xcommand implement export startmakrobuf(item) => ;
|
||||
function startmakrobuf(this,item)
|
||||
#xcommand implement export rdsmakrobuf() => function rdsmakrobuf(this)
|
||||
#xcommand implement export unrdsmakrobuf(n) => ;
|
||||
function unrdsmakrobuf(this,n)
|
||||
#xcommand implement export readitem() => function readitem(this)
|
||||
#xcommand implement export parsefun(edefdict) => ;
|
||||
function parsefun(this,edefdict)
|
||||
#xcommand implement export parsetokenlist(leftTokenList,cmd4,paramValues,toEOL) => ;
|
||||
function parsetokenlist(this,leftTokenList,cmd4,paramValues,toEOL)
|
||||
#xcommand implement export parsextr(extrdict) => ;
|
||||
function parsextr(this,extrdict)
|
||||
#xcommand implement export parsextrtree(trdictTree,mi,toEOL) => ;
|
||||
function parsextrtree(this,trdictTree,mi,toEOL)
|
||||
#xcommand implement export mleftxntoken(leftToken,cmd4) => ;
|
||||
function mleftxntoken(this,leftToken,cmd4)
|
||||
#xcommand implement export mleftxmrtoken(leftToken,cmd4,paramValues,nUres) => ;
|
||||
function mleftxmrtoken(this,leftToken,cmd4,paramValues,nUres)
|
||||
#xcommand implement export mleftxrmmtoken(leftToken,cmd4) => ;
|
||||
function mleftxrmmtoken(this,leftToken,cmd4)
|
||||
#xcommand implement export mleftxwmtoken(leftToken) => ;
|
||||
function mleftxwmtoken(this,leftToken)
|
||||
#xcommand implement export mleftxeemtoken(leftToken) => ;
|
||||
function mleftxeemtoken(this,leftToken)
|
||||
#xcommand implement export mleftxlmtoken(leftToken,cmd4) => ;
|
||||
function mleftxlmtoken(this,leftToken,cmd4)
|
||||
#xcommand implement export mleftxrsmmtoken(leftToken,cmd4) => ;
|
||||
function mleftxrsmmtoken(this,leftToken,cmd4)
|
||||
#xcommand implement export oinit(inputReader,name,errorStream) => ;
|
||||
function oinit(this,inputReader,name,errorStream)
|
||||
#endif // _IMPLEMENT_EXPORT_
|
||||
|
||||
#xtranslate super:oinit => (OBJGENM.(eval(BEHAVIOR.clPARSER():objmethodsimplement)).(this):(4))
|
||||
#xtranslate super:getclass => (OBJGENM.(eval(BEHAVIOR.clPARSER():objmethodsimplement)).(this):(5))
|
||||
#xtranslate super:isclass => (OBJGENM.(eval(BEHAVIOR.clPARSER():objmethodsimplement)).(this):(6))
|
||||
#xtranslate super:getattrib => (OBJGENM.(eval(BEHAVIOR.clPARSER():objmethodsimplement)).(this):(7))
|
||||
#xtranslate super:setattrib => (OBJGENM.(eval(BEHAVIOR.clPARSER():objmethodsimplement)).(this):(8))
|
||||
#xtranslate super:read => (OBJGENM.(eval(BEHAVIOR.clPARSER():objmethodsimplement)).(this):(CM_OBJECT_N+1))
|
||||
#xtranslate super:unread => (OBJGENM.(eval(BEHAVIOR.clPARSER():objmethodsimplement)).(this):(CM_OBJECT_N+2))
|
||||
#xtranslate super:readtbuffer => (OBJGENM.(eval(BEHAVIOR.clPARSER():objmethodsimplement)).(this):(CM_OBJECT_N+3))
|
||||
#xtranslate super:arraytbuffer => (OBJGENM.(eval(BEHAVIOR.clPARSER():objmethodsimplement)).(this):(CM_OBJECT_N+4))
|
||||
#xtranslate super:readitem => (OBJGENM.(eval(BEHAVIOR.clPARSER():objmethodsimplement)).(this):(CM_OBJECT_N+5))
|
||||
#xtranslate super:iserror => (OBJGENM.(eval(BEHAVIOR.clPARSER():objmethodsimplement)).(this):(CM_OBJECT_N+6))
|
||||
#xtranslate super:adderror => (OBJGENM.(eval(BEHAVIOR.clPARSER():objmethodsimplement)).(this):(CM_OBJECT_N+7))
|
||||
#xtranslate super:destruct => (OBJGENM.(eval(BEHAVIOR.clPARSER():objmethodsimplement)).(this):(CM_OBJECT_N+8))
|
||||
#xtranslate super:readinput => (OBJGENM.(eval(BEHAVIOR.clPARSER():objmethodsimplement)).(this):(CM_READER_N+1))
|
||||
#xtranslate super:unreadinput => (OBJGENM.(eval(BEHAVIOR.clPARSER():objmethodsimplement)).(this):(CM_READER_N+2))
|
||||
#xtranslate super:addinputreader => (OBJGENM.(eval(BEHAVIOR.clPARSER():objmethodsimplement)).(this):(CM_READER_N+3))
|
||||
#xtranslate super:putparserbuffer => (OBJGENM.(eval(BEHAVIOR.clPARSER():objmethodsimplement)).(this):(CM_TREADER_N+1))
|
||||
#xtranslate super:getparserbuffer => (OBJGENM.(eval(BEHAVIOR.clPARSER():objmethodsimplement)).(this):(CM_TREADER_N+2))
|
||||
#xtranslate super:unputparserbuffer => (OBJGENM.(eval(BEHAVIOR.clPARSER():objmethodsimplement)).(this):(CM_TREADER_N+3))
|
||||
#xtranslate super:ungetparserbuffer => (OBJGENM.(eval(BEHAVIOR.clPARSER():objmethodsimplement)).(this):(CM_TREADER_N+4))
|
||||
#xtranslate super:clearparserbuffer => (OBJGENM.(eval(BEHAVIOR.clPARSER():objmethodsimplement)).(this):(CM_TREADER_N+5))
|
||||
#xtranslate super:rds => (OBJGENM.(eval(BEHAVIOR.clPARSER():objmethodsimplement)).(this):(CM_TREADER_N+6))
|
||||
#xtranslate super:unrds => (OBJGENM.(eval(BEHAVIOR.clPARSER():objmethodsimplement)).(this):(CM_TREADER_N+7))
|
||||
#xtranslate super:strparserbuffer => (OBJGENM.(eval(BEHAVIOR.clPARSER():objmethodsimplement)).(this):(CM_TREADER_N+8))
|
||||
#xtranslate super:arrayparserbuffer => (OBJGENM.(eval(BEHAVIOR.clPARSER():objmethodsimplement)).(this):(CM_TREADER_N+9))
|
||||
|
||||
**********************************************************************
|
||||
static function setCMethods(pOsztaly)
|
||||
// Egy t”mb”t felt”lt az oszt ly m–veleti blokkjaival.
|
||||
pOsztaly[(CM_PARSER_N+1)]:={|this,item| startmakrobuf(this,item)}
|
||||
pOsztaly[(CM_PARSER_N+2)]:={|this| rdsmakrobuf(this)}
|
||||
pOsztaly[(CM_PARSER_N+3)]:={|this,n| unrdsmakrobuf(this,n)}
|
||||
pOsztaly[(CM_OBJECT_N+5)]:={|this| readitem(this)}
|
||||
pOsztaly[(CM_PARSER_N+4)]:={|this,edefdict| parsefun(this,edefdict)}
|
||||
pOsztaly[(CM_PARSER_N+5)]:={|this,leftTokenList,cmd4,paramValues,toEOL| parsetokenlist(this,leftTokenList,cmd4,paramValues,toEOL)}
|
||||
pOsztaly[(CM_PARSER_N+6)]:={|this,extrdict| parsextr(this,extrdict)}
|
||||
pOsztaly[(CM_PARSER_N+7)]:={|this,trdictTree,mi,toEOL| parsextrtree(this,trdictTree,mi,toEOL)}
|
||||
pOsztaly[(CM_PARSER_N+8)]:={|this,leftToken,cmd4| mleftxntoken(this,leftToken,cmd4)}
|
||||
pOsztaly[(CM_PARSER_N+9)]:={|this,leftToken,cmd4,paramValues,nUres| mleftxmrtoken(this,leftToken,cmd4,paramValues,nUres)}
|
||||
pOsztaly[(CM_PARSER_N+10)]:={|this,leftToken,cmd4| mleftxrmmtoken(this,leftToken,cmd4)}
|
||||
pOsztaly[(CM_PARSER_N+11)]:={|this,leftToken| mleftxwmtoken(this,leftToken)}
|
||||
pOsztaly[(CM_PARSER_N+12)]:={|this,leftToken| mleftxeemtoken(this,leftToken)}
|
||||
pOsztaly[(CM_PARSER_N+13)]:={|this,leftToken,cmd4| mleftxlmtoken(this,leftToken,cmd4)}
|
||||
pOsztaly[(CM_PARSER_N+14)]:={|this,leftToken,cmd4| mleftxrsmmtoken(this,leftToken,cmd4)}
|
||||
pOsztaly[(4)]:={|this,inputReader,name,errorStream| oinit(this,inputReader,name,errorStream)}
|
||||
return pOsztaly
|
||||
|
||||
**********************************************************************
|
||||
static function setCams(ta,tm)
|
||||
// Egy t”mb”t felt”lt az oszt ly ltal def. objektumok attrib£tumaival ‚s m–veleteivel.
|
||||
ta[CA_PARSER_N+1-CA_NIL_N] := {CA_PARSER_N+1,'soreleje',nil}
|
||||
ta[CA_PARSER_N+2-CA_NIL_N] := {CA_PARSER_N+2,'makrobuf', }
|
||||
|
||||
tm[(CM_PARSER_N+1)-CM_NIL_N] := {(CM_PARSER_N+1),'startmakrobuf','item',nil}
|
||||
tm[(CM_PARSER_N+2)-CM_NIL_N] := {(CM_PARSER_N+2),'rdsmakrobuf','',nil}
|
||||
tm[(CM_PARSER_N+3)-CM_NIL_N] := {(CM_PARSER_N+3),'unrdsmakrobuf','n',nil}
|
||||
tm[(CM_OBJECT_N+5)-CM_NIL_N] := {(CM_OBJECT_N+5),'readitem','',nil}
|
||||
tm[(CM_PARSER_N+4)-CM_NIL_N] := {(CM_PARSER_N+4),'parsefun','edefdict',nil}
|
||||
tm[(CM_PARSER_N+5)-CM_NIL_N] := {(CM_PARSER_N+5),'parsetokenlist','leftTokenList,cmd4,paramValues,toEOL',nil}
|
||||
tm[(CM_PARSER_N+6)-CM_NIL_N] := {(CM_PARSER_N+6),'parsextr','extrdict',nil}
|
||||
tm[(CM_PARSER_N+7)-CM_NIL_N] := {(CM_PARSER_N+7),'parsextrtree','trdictTree,mi,toEOL',nil}
|
||||
tm[(CM_PARSER_N+8)-CM_NIL_N] := {(CM_PARSER_N+8),'mleftxntoken','leftToken,cmd4',nil}
|
||||
tm[(CM_PARSER_N+9)-CM_NIL_N] := {(CM_PARSER_N+9),'mleftxmrtoken','leftToken,cmd4,paramValues,nUres',nil}
|
||||
tm[(CM_PARSER_N+10)-CM_NIL_N] := {(CM_PARSER_N+10),'mleftxrmmtoken','leftToken,cmd4',nil}
|
||||
tm[(CM_PARSER_N+11)-CM_NIL_N] := {(CM_PARSER_N+11),'mleftxwmtoken','leftToken',nil}
|
||||
tm[(CM_PARSER_N+12)-CM_NIL_N] := {(CM_PARSER_N+12),'mleftxeemtoken','leftToken',nil}
|
||||
tm[(CM_PARSER_N+13)-CM_NIL_N] := {(CM_PARSER_N+13),'mleftxlmtoken','leftToken,cmd4',nil}
|
||||
tm[(CM_PARSER_N+14)-CM_NIL_N] := {(CM_PARSER_N+14),'mleftxrsmmtoken','leftToken,cmd4',nil}
|
||||
tm[(4)-CM_NIL_N] := {(4),'oinit','inputReader,name,errorStream',nil}
|
||||
return nil
|
||||
|
||||
#ifndef _NO_CLMPARSER_
|
||||
#ifdef _STRICT_PARENT_
|
||||
#ifdef _CA_CM_ONLY_
|
||||
#include "meta.och"
|
||||
#else // _CA_CM_ONLY_
|
||||
#define _CA_CM_ONLY_
|
||||
#include "meta.och"
|
||||
#undef _CA_CM_ONLY_
|
||||
#endif // _CA_CM_ONLY_
|
||||
#else
|
||||
#include "meta.och"
|
||||
#endif // _STRICT_PARENT_
|
||||
**********************************************************************
|
||||
function clMPARSER()
|
||||
// El“szedi az oszt lyt. (class)
|
||||
static osztaly
|
||||
if (osztaly==nil)
|
||||
osztaly:=META.mcMPARSERCLASS():onew(;
|
||||
clPARSER(),;
|
||||
"MPARSER",;
|
||||
CA_MPARSER_N,;
|
||||
CM_MPARSER_N,;
|
||||
{|ta,tm|setCams(ta,tm)},;
|
||||
{|t|setCMethods(t)})
|
||||
endif
|
||||
return osztaly
|
||||
#endif // _NO_CLMPARSER_
|
||||
|
||||
#ifndef _NO_MPARSERCLASS_
|
||||
|
||||
**********************************************************************
|
||||
#xtranslate class:<m> => MPARSERCLASS.(class):<m>
|
||||
|
||||
#xcommand cimplement onew(inputReader,name,errorStream) => ;
|
||||
static function onew(class,inputReader,name,errorStream)
|
||||
#xcommand cimplement getcloseparent(aChar) => ;
|
||||
static function getcloseparent(class,aChar)
|
||||
#xcommand cimplement trimtokenlist(tList) => ;
|
||||
static function trimtokenlist(class,tList)
|
||||
#xcommand cimplement parse(item,inputReader,name,defdict,edefdict,xtrdict,mi,errorStream,ujsor,trPrsAlg) => ;
|
||||
static function parse(class,item,inputReader,name,defdict,edefdict,xtrdict,mi,errorStream,ujsor,trPrsAlg)
|
||||
|
||||
#ifdef _IMPLEMENT_EXPORT_
|
||||
#xcommand cimplement export onew(inputReader,name,errorStream) => ;
|
||||
function onew(class,inputReader,name,errorStream)
|
||||
#xcommand cimplement export getcloseparent(aChar) => ;
|
||||
function getcloseparent(class,aChar)
|
||||
#xcommand cimplement export trimtokenlist(tList) => ;
|
||||
function trimtokenlist(class,tList)
|
||||
#xcommand cimplement export parse(item,inputReader,name,defdict,edefdict,xtrdict,mi,errorStream,ujsor,trPrsAlg) => ;
|
||||
function parse(class,item,inputReader,name,defdict,edefdict,xtrdict,mi,errorStream,ujsor,trPrsAlg)
|
||||
#endif // _IMPLEMENT_EXPORT_
|
||||
|
||||
#xtranslate superclass:oinit => (OBJGENM.(eval(BEHAVIOR.mcPARSERCLASS():objmethodsimplement)).(class):(4))
|
||||
#xtranslate superclass:getclass => (OBJGENM.(eval(BEHAVIOR.mcPARSERCLASS():objmethodsimplement)).(class):(5))
|
||||
#xtranslate superclass:isclass => (OBJGENM.(eval(BEHAVIOR.mcPARSERCLASS():objmethodsimplement)).(class):(6))
|
||||
#xtranslate superclass:getattrib => (OBJGENM.(eval(BEHAVIOR.mcPARSERCLASS():objmethodsimplement)).(class):(7))
|
||||
#xtranslate superclass:setattrib => (OBJGENM.(eval(BEHAVIOR.mcPARSERCLASS():objmethodsimplement)).(class):(8))
|
||||
#xtranslate superclass:onew => (OBJGENM.(eval(BEHAVIOR.mcPARSERCLASS():objmethodsimplement)).(class):(CM_OBJECT_N+1))
|
||||
#xtranslate superclass:ocreate => (OBJGENM.(eval(BEHAVIOR.mcPARSERCLASS():objmethodsimplement)).(class):(CM_OBJECT_N+2))
|
||||
#xtranslate superclass:rawoinit => (OBJGENM.(eval(BEHAVIOR.mcPARSERCLASS():objmethodsimplement)).(class):(CM_OBJECT_N+3))
|
||||
#xtranslate superclass:oinitclass => (OBJGENM.(eval(BEHAVIOR.mcPARSERCLASS():objmethodsimplement)).(class):(CM_OBJECT_N+4))
|
||||
#xtranslate superclass:getmethodsimplement => (OBJGENM.(eval(BEHAVIOR.mcPARSERCLASS():objmethodsimplement)).(class):(CM_OBJECT_N+5))
|
||||
#xtranslate superclass:attribidx => (OBJGENM.(eval(BEHAVIOR.mcPARSERCLASS():objmethodsimplement)).(class):(CM_OBJECT_N+6))
|
||||
#xtranslate superclass:needclassid => (OBJGENM.(eval(BEHAVIOR.mcPARSERCLASS():objmethodsimplement)).(class):(CM_OBJECT_N+7))
|
||||
#xtranslate superclass:isinheritfrom => (OBJGENM.(eval(BEHAVIOR.mcPARSERCLASS():objmethodsimplement)).(class):(CM_OBJECT_N+8))
|
||||
|
||||
**********************************************************************
|
||||
static function setMCMethods(pOsztaly)
|
||||
// Egy t”mb”t felt”lt a metaoszt ly m–veleti blokkjaival.
|
||||
pOsztaly[(CM_OBJECT_N+1)]:={|class,inputReader,name,errorStream| onew(class,inputReader,name,errorStream)}
|
||||
pOsztaly[(CM_PARSERCLASS_N+1)]:={|class,aChar| getcloseparent(class,aChar)}
|
||||
pOsztaly[(CM_PARSERCLASS_N+2)]:={|class,tList| trimtokenlist(class,tList)}
|
||||
pOsztaly[(CM_PARSERCLASS_N+3)]:={|class,item,inputReader,name,defdict,edefdict,xtrdict,mi,errorStream,ujsor,trPrsAlg| parse(class,item,inputReader,name,defdict,edefdict,xtrdict,mi,errorStream,ujsor,trPrsAlg)}
|
||||
return pOsztaly
|
||||
|
||||
**********************************************************************
|
||||
static function setMCams(ta,tm)
|
||||
// Egy t”mb”t felt”lt a metaoszt ly ltal def. objektumok attrib£tumaival ‚s m–veleteivel.
|
||||
|
||||
tm[(CM_OBJECT_N+1)-CM_NIL_N] := {(CM_OBJECT_N+1),'onew','inputReader,name,errorStream',nil}
|
||||
tm[(CM_PARSERCLASS_N+1)-CM_NIL_N] := {(CM_PARSERCLASS_N+1),'getcloseparent','aChar',nil}
|
||||
tm[(CM_PARSERCLASS_N+2)-CM_NIL_N] := {(CM_PARSERCLASS_N+2),'trimtokenlist','tList',nil}
|
||||
tm[(CM_PARSERCLASS_N+3)-CM_NIL_N] := {(CM_PARSERCLASS_N+3),'parse','item,inputReader,name,defdict,edefdict,xtrdict,mi,errorStream,ujsor,trPrsAlg',nil}
|
||||
return nil
|
||||
|
||||
**********************************************************************
|
||||
#ifndef _NO_MCMPARSERCLASS_
|
||||
#ifdef _STRICT_PARENT_
|
||||
#ifdef _CA_CM_ONLY_
|
||||
#include "meta.och" // "metaclas.och"
|
||||
#else // _CA_CM_ONLY_
|
||||
#define _CA_CM_ONLY_
|
||||
#include "meta.och" // "metaclas.och"
|
||||
#undef _CA_CM_ONLY_
|
||||
#endif // _CA_CM_ONLY_
|
||||
#else
|
||||
#include "meta.och" // "metaclas.och"
|
||||
#endif // _STRICT_PARENT_
|
||||
function mcMPARSERCLASS()
|
||||
// El“szedi az oszt ly metaoszt ly t. (metaclass)
|
||||
static metaOsztaly
|
||||
if (metaOsztaly==nil)
|
||||
metaOsztaly:=META.clMETA():onew(;
|
||||
mcPARSERCLASS(),;
|
||||
"MPARSERCLASS",;
|
||||
CA_MPARSERCLASS_N,;
|
||||
CM_MPARSERCLASS_N,;
|
||||
{|ta,tm|setMCams(ta,tm)},;
|
||||
{|t|setMCMethods(t)})
|
||||
endif
|
||||
return metaOsztaly
|
||||
#endif // _NO_MCMPARSERCLASS_
|
||||
|
||||
#endif // _NO_MPARSERCLASS_
|
||||
#ifdef _IMPLEMENT_ONEW_
|
||||
**********************************************************************
|
||||
cimplement onew(inputReader,name,errorStream)
|
||||
local o:=class:ocreate()
|
||||
|
||||
MPARSER.o:oinit(inputReader,name,errorStream)
|
||||
return o
|
||||
#endif // _IMPLEMENT_ONEW_
|
||||
|
||||
**********************************************************************
|
||||
#ifdef _IMPLEMENT_OINIT_
|
||||
implement oinit(inputReader,name,errorStream)
|
||||
super:oinit()
|
||||
return this
|
||||
#endif // _IMPLEMENT_OINIT_
|
||||
|
||||
**********************************************************************
|
||||
**********************************************************************
|
||||
#endif // _MPARSER_PRG_OCH_
|
||||
#endif // _MPARSER_PRG_
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,24 +0,0 @@
|
||||
/*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
//*******************************************************************
|
||||
// newline.prg: —j sor karakter.
|
||||
// 1999, Csisz r Levente
|
||||
|
||||
//*******************************************************************
|
||||
function newline()
|
||||
static nl
|
||||
#ifdef _UNIX_
|
||||
if (nl==nil)
|
||||
nl:=chr(10)
|
||||
endif
|
||||
#else
|
||||
if (nl==nil)
|
||||
nl:=chr(13)+chr(10)
|
||||
endif
|
||||
#endif
|
||||
return nl
|
||||
|
||||
//*******************************************************************
|
||||
|
||||
@@ -1,113 +0,0 @@
|
||||
//
|
||||
// $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.
|
||||
|
||||
@@ -1,463 +0,0 @@
|
||||
// NPARSER.och oszt ly implement ci¢.
|
||||
// Gener lva: 1999.06.10, 14:39:57, OBJCCC v2.2.03
|
||||
// Meta oszt ly defin¡ci¢: Van
|
||||
|
||||
|
||||
#ifndef CA_PARSER_N
|
||||
#ifdef _STRICT_PARENT_
|
||||
#ifdef _CA_CM_ONLY_
|
||||
#include "PARSER.och"
|
||||
#else // _CA_CM_ONLY_
|
||||
#define _CA_CM_ONLY_
|
||||
#include "PARSER.och"
|
||||
#undef _CA_CM_ONLY_
|
||||
#endif // _CA_CM_ONLY_
|
||||
#else
|
||||
#include "PARSER.och"
|
||||
#endif // _STRICT_PARENT_
|
||||
#endif // CA_PARSER_N
|
||||
|
||||
#ifndef _CA_CM_ONLY_
|
||||
#ifndef _NPARSER_OCH_
|
||||
#define _NPARSER_OCH_
|
||||
|
||||
|
||||
#xtranslate NPARSER.<obj>:name => <obj>\[CA_OBJECT_N+1\]
|
||||
#xtranslate NPARSER.<obj>:errorstream => <obj>\[CA_OBJECT_N+2\]
|
||||
#xtranslate NPARSER.<obj>:tbuffer => <obj>\[CA_OBJECT_N+3\]
|
||||
#xtranslate NPARSER.<obj>:inputreader => <obj>\[CA_READER_N+1\]
|
||||
#xtranslate NPARSER.<obj>:item => <obj>\[CA_TREADER_N+1\]
|
||||
#xtranslate NPARSER.<obj>:parserbuffer => <obj>\[CA_TREADER_N+2\]
|
||||
|
||||
|
||||
#xtranslate NPARSER.<obj>:oinit => (OBJGEN.(<obj>):(4))
|
||||
#xtranslate NPARSER.<obj>:getclass => (OBJGEN.(<obj>):(5))
|
||||
#xtranslate NPARSER.<obj>:isclass => (OBJGEN.(<obj>):(6))
|
||||
#xtranslate NPARSER.<obj>:getattrib => (OBJGEN.(<obj>):(7))
|
||||
#xtranslate NPARSER.<obj>:setattrib => (OBJGEN.(<obj>):(8))
|
||||
#xtranslate NPARSER.<obj>:read => (OBJGEN.(<obj>):(CM_OBJECT_N+1))
|
||||
#xtranslate NPARSER.<obj>:unread => (OBJGEN.(<obj>):(CM_OBJECT_N+2))
|
||||
#xtranslate NPARSER.<obj>:readtbuffer => (OBJGEN.(<obj>):(CM_OBJECT_N+3))
|
||||
#xtranslate NPARSER.<obj>:arraytbuffer => (OBJGEN.(<obj>):(CM_OBJECT_N+4))
|
||||
#xtranslate NPARSER.<obj>:readitem => (OBJGEN.(<obj>):(CM_OBJECT_N+5))
|
||||
#xtranslate NPARSER.<obj>:iserror => (OBJGEN.(<obj>):(CM_OBJECT_N+6))
|
||||
#xtranslate NPARSER.<obj>:adderror => (OBJGEN.(<obj>):(CM_OBJECT_N+7))
|
||||
#xtranslate NPARSER.<obj>:destruct => (OBJGEN.(<obj>):(CM_OBJECT_N+8))
|
||||
#xtranslate NPARSER.<obj>:readinput => (OBJGEN.(<obj>):(CM_READER_N+1))
|
||||
#xtranslate NPARSER.<obj>:unreadinput => (OBJGEN.(<obj>):(CM_READER_N+2))
|
||||
#xtranslate NPARSER.<obj>:addinputreader => (OBJGEN.(<obj>):(CM_READER_N+3))
|
||||
#xtranslate NPARSER.<obj>:putparserbuffer => (OBJGEN.(<obj>):(CM_TREADER_N+1))
|
||||
#xtranslate NPARSER.<obj>:getparserbuffer => (OBJGEN.(<obj>):(CM_TREADER_N+2))
|
||||
#xtranslate NPARSER.<obj>:unputparserbuffer => (OBJGEN.(<obj>):(CM_TREADER_N+3))
|
||||
#xtranslate NPARSER.<obj>:ungetparserbuffer => (OBJGEN.(<obj>):(CM_TREADER_N+4))
|
||||
#xtranslate NPARSER.<obj>:clearparserbuffer => (OBJGEN.(<obj>):(CM_TREADER_N+5))
|
||||
#xtranslate NPARSER.<obj>:rds => (OBJGEN.(<obj>):(CM_TREADER_N+6))
|
||||
#xtranslate NPARSER.<obj>:unrds => (OBJGEN.(<obj>):(CM_TREADER_N+7))
|
||||
#xtranslate NPARSER.<obj>:strparserbuffer => (OBJGEN.(<obj>):(CM_TREADER_N+8))
|
||||
#xtranslate NPARSER.<obj>:arrayparserbuffer => (OBJGEN.(<obj>):(CM_TREADER_N+9))
|
||||
|
||||
|
||||
#xtranslate NPARSER.<obj>:soreleje => <obj>\[CA_PARSER_N+1\]
|
||||
#xtranslate NPARSER.<obj>:tokenpos => <obj>\[CA_PARSER_N+2\]
|
||||
|
||||
// ™r”k”lve: readitem()
|
||||
// Specifik lva: streolparserbuffer()
|
||||
// Specifik lva: maketoken(tkId,str)
|
||||
// Specifik lva: maketokenst(tkId,stArray)
|
||||
// Specifik lva: maketokenlst(tkId,stArray)
|
||||
// Specifik lva: makeerrtoken(tkId,str,errCode)
|
||||
// Specifik lva: parsetptree()
|
||||
// Specifik lva: parse()
|
||||
// Specifik lva: parselinecomment(tkId)
|
||||
// Specifik lva: parsepccomment()
|
||||
// Specifik lva: parsestring(hatarolo)
|
||||
// Specifik lva: parsename()
|
||||
// Specifik lva: parsenumberarray()
|
||||
// ™r”k”lve: oinit(inputReader,name,errorStream)
|
||||
|
||||
// ™r”k”lve: readitem()
|
||||
#xtranslate NPARSER.<obj>:streolparserbuffer => (OBJGEN.(<obj>):(CM_PARSER_N+1))
|
||||
#xtranslate NPARSER.<obj>:maketoken => (OBJGEN.(<obj>):(CM_PARSER_N+2))
|
||||
#xtranslate NPARSER.<obj>:maketokenst => (OBJGEN.(<obj>):(CM_PARSER_N+3))
|
||||
#xtranslate NPARSER.<obj>:maketokenlst => (OBJGEN.(<obj>):(CM_PARSER_N+4))
|
||||
#xtranslate NPARSER.<obj>:makeerrtoken => (OBJGEN.(<obj>):(CM_PARSER_N+5))
|
||||
#xtranslate NPARSER.<obj>:parsetptree => (OBJGEN.(<obj>):(CM_PARSER_N+6))
|
||||
#xtranslate NPARSER.<obj>:parse => (OBJGEN.(<obj>):(CM_PARSER_N+7))
|
||||
#xtranslate NPARSER.<obj>:parselinecomment => (OBJGEN.(<obj>):(CM_PARSER_N+8))
|
||||
#xtranslate NPARSER.<obj>:parsepccomment => (OBJGEN.(<obj>):(CM_PARSER_N+9))
|
||||
#xtranslate NPARSER.<obj>:parsestring => (OBJGEN.(<obj>):(CM_PARSER_N+10))
|
||||
#xtranslate NPARSER.<obj>:parsename => (OBJGEN.(<obj>):(CM_PARSER_N+11))
|
||||
#xtranslate NPARSER.<obj>:parsenumberarray => (OBJGEN.(<obj>):(CM_PARSER_N+12))
|
||||
// ™r”k”lve: oinit(inputReader,name,errorStream)
|
||||
|
||||
#endif // _NPARSER_OCH_
|
||||
#endif // _CA_CM_ONLY_
|
||||
|
||||
#ifndef CA_NPARSER_N
|
||||
#define CA_NPARSER_N CA_PARSER_N+2
|
||||
#define CM_NPARSER_N CM_PARSER_N+12
|
||||
#endif // CA_NPARSER_N
|
||||
|
||||
#ifndef _CA_CM_ONLY_
|
||||
#ifndef _NPARSERCLASS_OCH_
|
||||
#define _NPARSERCLASS_OCH_
|
||||
|
||||
**********************************************************************
|
||||
#xtranslate C.NPARSER:<m> => (NPARSERCLASS.clNPARSER():<m>)
|
||||
#xtranslate C.NPARSER:self() => (clNPARSER())
|
||||
|
||||
|
||||
#xtranslate NPARSERCLASS.<obj>:parent => <obj>\[CA_OBJECT_N+1\]
|
||||
#xtranslate NPARSERCLASS.<obj>:name => <obj>\[CA_OBJECT_N+2\]
|
||||
#xtranslate NPARSERCLASS.<obj>:objsize => <obj>\[CA_OBJECT_N+3\]
|
||||
#xtranslate NPARSERCLASS.<obj>:attribs => <obj>\[CA_OBJECT_N+4\]
|
||||
#xtranslate NPARSERCLASS.<obj>:methods => <obj>\[CA_OBJECT_N+5\]
|
||||
#xtranslate NPARSERCLASS.<obj>:classid => <obj>\[CA_OBJECT_N+6\]
|
||||
#xtranslate NPARSERCLASS.<obj>:parentclassids => <obj>\[CA_OBJECT_N+7\]
|
||||
#xtranslate NPARSERCLASS.<obj>:amblock => <obj>\[CA_OBJECT_N+8\]
|
||||
#xtranslate NPARSERCLASS.<obj>:methodsblock => <obj>\[CA_OBJECT_N+9\]
|
||||
#xtranslate NPARSERCLASS.<obj>:objmethodsimplement => <obj>\[CA_OBJECT_N+10\]
|
||||
|
||||
|
||||
#xtranslate NPARSERCLASS.<obj>:oinit => (OBJGEN.(<obj>):(4))
|
||||
#xtranslate NPARSERCLASS.<obj>:getclass => (OBJGEN.(<obj>):(5))
|
||||
#xtranslate NPARSERCLASS.<obj>:isclass => (OBJGEN.(<obj>):(6))
|
||||
#xtranslate NPARSERCLASS.<obj>:getattrib => (OBJGEN.(<obj>):(7))
|
||||
#xtranslate NPARSERCLASS.<obj>:setattrib => (OBJGEN.(<obj>):(8))
|
||||
#xtranslate NPARSERCLASS.<obj>:onew => (OBJGEN.(<obj>):(CM_OBJECT_N+1))
|
||||
#xtranslate NPARSERCLASS.<obj>:ocreate => (OBJGEN.(<obj>):(CM_OBJECT_N+2))
|
||||
#xtranslate NPARSERCLASS.<obj>:rawoinit => (OBJGEN.(<obj>):(CM_OBJECT_N+3))
|
||||
#xtranslate NPARSERCLASS.<obj>:oinitclass => (OBJGEN.(<obj>):(CM_OBJECT_N+4))
|
||||
#xtranslate NPARSERCLASS.<obj>:getmethodsimplement => (OBJGEN.(<obj>):(CM_OBJECT_N+5))
|
||||
#xtranslate NPARSERCLASS.<obj>:attribidx => (OBJGEN.(<obj>):(CM_OBJECT_N+6))
|
||||
#xtranslate NPARSERCLASS.<obj>:needclassid => (OBJGEN.(<obj>):(CM_OBJECT_N+7))
|
||||
#xtranslate NPARSERCLASS.<obj>:isinheritfrom => (OBJGEN.(<obj>):(CM_OBJECT_N+8))
|
||||
|
||||
|
||||
#xtranslate NPARSERCLASS.<obj>:whitespacechar => <obj>\[CA_PARSERCLASS_N+1\]
|
||||
#xtranslate NPARSERCLASS.<obj>:startnamechar => <obj>\[CA_PARSERCLASS_N+2\]
|
||||
#xtranslate NPARSERCLASS.<obj>:numberchar => <obj>\[CA_PARSERCLASS_N+3\]
|
||||
#xtranslate NPARSERCLASS.<obj>:namechar => <obj>\[CA_PARSERCLASS_N+4\]
|
||||
#xtranslate NPARSERCLASS.<obj>:tokens => <obj>\[CA_PARSERCLASS_N+5\]
|
||||
#xtranslate NPARSERCLASS.<obj>:tokenptree => <obj>\[CA_PARSERCLASS_N+6\]
|
||||
|
||||
// ™r”k”lve: onew(inputReader,name,errorStream)
|
||||
// ™r”k”lve: oinitclass()
|
||||
// Specifik lva: iswhitespacechar(c)
|
||||
// Specifik lva: isstartnamechar(c)
|
||||
// Specifik lva: isnumberchar(c)
|
||||
// Specifik lva: isnamechar(c)
|
||||
// Specifik lva: settokens()
|
||||
// Specifik lva: calctokenptree()
|
||||
|
||||
// ™r”k”lve: onew(inputReader,name,errorStream)
|
||||
// ™r”k”lve: oinitclass()
|
||||
#xtranslate NPARSERCLASS.<obj>:iswhitespacechar => (OBJGEN.(<obj>):(CM_PARSERCLASS_N+1))
|
||||
#xtranslate NPARSERCLASS.<obj>:isstartnamechar => (OBJGEN.(<obj>):(CM_PARSERCLASS_N+2))
|
||||
#xtranslate NPARSERCLASS.<obj>:isnumberchar => (OBJGEN.(<obj>):(CM_PARSERCLASS_N+3))
|
||||
#xtranslate NPARSERCLASS.<obj>:isnamechar => (OBJGEN.(<obj>):(CM_PARSERCLASS_N+4))
|
||||
#xtranslate NPARSERCLASS.<obj>:settokens => (OBJGEN.(<obj>):(CM_PARSERCLASS_N+5))
|
||||
#xtranslate NPARSERCLASS.<obj>:calctokenptree => (OBJGEN.(<obj>):(CM_PARSERCLASS_N+6))
|
||||
|
||||
#endif // _NPARSERCLASS_OCH_
|
||||
#endif // _CA_CM_ONLY_
|
||||
|
||||
#ifndef CA_NPARSERCLASS_N
|
||||
#define CA_NPARSERCLASS_N CA_PARSERCLASS_N+6
|
||||
#define CM_NPARSERCLASS_N CM_PARSERCLASS_N+6
|
||||
#endif // CA_NPARSERCLASS_N
|
||||
|
||||
|
||||
**********************************************************************
|
||||
#ifdef _NPARSER_PRG_
|
||||
#ifndef _NPARSER_PRG_OCH_
|
||||
#define _NPARSER_PRG_OCH_
|
||||
|
||||
|
||||
**********************************************************************
|
||||
#xtranslate othis:<m> => NPARSER.(othis):<m>
|
||||
#xtranslate thisclass:<m> => NPARSERCLASS.(this:getClass()):<m>
|
||||
#define CTHIS NPARSER
|
||||
|
||||
|
||||
**********************************************************************
|
||||
#xtranslate this:<m> => NPARSER.(this):<m>
|
||||
|
||||
#xcommand implement readitem() => static function readitem(this)
|
||||
#xcommand implement streolparserbuffer() => ;
|
||||
static function streolparserbuffer(this)
|
||||
#xcommand implement maketoken(tkId,str) => ;
|
||||
static function maketoken(this,tkId,str)
|
||||
#xcommand implement maketokenst(tkId,stArray) => ;
|
||||
static function maketokenst(this,tkId,stArray)
|
||||
#xcommand implement maketokenlst(tkId,stArray) => ;
|
||||
static function maketokenlst(this,tkId,stArray)
|
||||
#xcommand implement makeerrtoken(tkId,str,errCode) => ;
|
||||
static function makeerrtoken(this,tkId,str,errCode)
|
||||
#xcommand implement parsetptree() => static function parsetptree(this)
|
||||
#xcommand implement parse() => static function parse(this)
|
||||
#xcommand implement parselinecomment(tkId) => ;
|
||||
static function parselinecomment(this,tkId)
|
||||
#xcommand implement parsepccomment() => ;
|
||||
static function parsepccomment(this)
|
||||
#xcommand implement parsestring(hatarolo) => ;
|
||||
static function parsestring(this,hatarolo)
|
||||
#xcommand implement parsename() => static function parsename(this)
|
||||
#xcommand implement parsenumberarray() => ;
|
||||
static function parsenumberarray(this)
|
||||
#xcommand implement oinit(inputReader,name,errorStream) => ;
|
||||
static function oinit(this,inputReader,name,errorStream)
|
||||
|
||||
#ifdef _IMPLEMENT_EXPORT_
|
||||
#xcommand implement export readitem() => function readitem(this)
|
||||
#xcommand implement export streolparserbuffer() => ;
|
||||
function streolparserbuffer(this)
|
||||
#xcommand implement export maketoken(tkId,str) => ;
|
||||
function maketoken(this,tkId,str)
|
||||
#xcommand implement export maketokenst(tkId,stArray) => ;
|
||||
function maketokenst(this,tkId,stArray)
|
||||
#xcommand implement export maketokenlst(tkId,stArray) => ;
|
||||
function maketokenlst(this,tkId,stArray)
|
||||
#xcommand implement export makeerrtoken(tkId,str,errCode) => ;
|
||||
function makeerrtoken(this,tkId,str,errCode)
|
||||
#xcommand implement export parsetptree() => function parsetptree(this)
|
||||
#xcommand implement export parse() => function parse(this)
|
||||
#xcommand implement export parselinecomment(tkId) => ;
|
||||
function parselinecomment(this,tkId)
|
||||
#xcommand implement export parsepccomment() => ;
|
||||
function parsepccomment(this)
|
||||
#xcommand implement export parsestring(hatarolo) => ;
|
||||
function parsestring(this,hatarolo)
|
||||
#xcommand implement export parsename() => function parsename(this)
|
||||
#xcommand implement export parsenumberarray() => ;
|
||||
function parsenumberarray(this)
|
||||
#xcommand implement export oinit(inputReader,name,errorStream) => ;
|
||||
function oinit(this,inputReader,name,errorStream)
|
||||
#endif // _IMPLEMENT_EXPORT_
|
||||
|
||||
#xtranslate super:oinit => (OBJGENM.(eval(BEHAVIOR.clPARSER():objmethodsimplement)).(this):(4))
|
||||
#xtranslate super:getclass => (OBJGENM.(eval(BEHAVIOR.clPARSER():objmethodsimplement)).(this):(5))
|
||||
#xtranslate super:isclass => (OBJGENM.(eval(BEHAVIOR.clPARSER():objmethodsimplement)).(this):(6))
|
||||
#xtranslate super:getattrib => (OBJGENM.(eval(BEHAVIOR.clPARSER():objmethodsimplement)).(this):(7))
|
||||
#xtranslate super:setattrib => (OBJGENM.(eval(BEHAVIOR.clPARSER():objmethodsimplement)).(this):(8))
|
||||
#xtranslate super:read => (OBJGENM.(eval(BEHAVIOR.clPARSER():objmethodsimplement)).(this):(CM_OBJECT_N+1))
|
||||
#xtranslate super:unread => (OBJGENM.(eval(BEHAVIOR.clPARSER():objmethodsimplement)).(this):(CM_OBJECT_N+2))
|
||||
#xtranslate super:readtbuffer => (OBJGENM.(eval(BEHAVIOR.clPARSER():objmethodsimplement)).(this):(CM_OBJECT_N+3))
|
||||
#xtranslate super:arraytbuffer => (OBJGENM.(eval(BEHAVIOR.clPARSER():objmethodsimplement)).(this):(CM_OBJECT_N+4))
|
||||
#xtranslate super:readitem => (OBJGENM.(eval(BEHAVIOR.clPARSER():objmethodsimplement)).(this):(CM_OBJECT_N+5))
|
||||
#xtranslate super:iserror => (OBJGENM.(eval(BEHAVIOR.clPARSER():objmethodsimplement)).(this):(CM_OBJECT_N+6))
|
||||
#xtranslate super:adderror => (OBJGENM.(eval(BEHAVIOR.clPARSER():objmethodsimplement)).(this):(CM_OBJECT_N+7))
|
||||
#xtranslate super:destruct => (OBJGENM.(eval(BEHAVIOR.clPARSER():objmethodsimplement)).(this):(CM_OBJECT_N+8))
|
||||
#xtranslate super:readinput => (OBJGENM.(eval(BEHAVIOR.clPARSER():objmethodsimplement)).(this):(CM_READER_N+1))
|
||||
#xtranslate super:unreadinput => (OBJGENM.(eval(BEHAVIOR.clPARSER():objmethodsimplement)).(this):(CM_READER_N+2))
|
||||
#xtranslate super:addinputreader => (OBJGENM.(eval(BEHAVIOR.clPARSER():objmethodsimplement)).(this):(CM_READER_N+3))
|
||||
#xtranslate super:putparserbuffer => (OBJGENM.(eval(BEHAVIOR.clPARSER():objmethodsimplement)).(this):(CM_TREADER_N+1))
|
||||
#xtranslate super:getparserbuffer => (OBJGENM.(eval(BEHAVIOR.clPARSER():objmethodsimplement)).(this):(CM_TREADER_N+2))
|
||||
#xtranslate super:unputparserbuffer => (OBJGENM.(eval(BEHAVIOR.clPARSER():objmethodsimplement)).(this):(CM_TREADER_N+3))
|
||||
#xtranslate super:ungetparserbuffer => (OBJGENM.(eval(BEHAVIOR.clPARSER():objmethodsimplement)).(this):(CM_TREADER_N+4))
|
||||
#xtranslate super:clearparserbuffer => (OBJGENM.(eval(BEHAVIOR.clPARSER():objmethodsimplement)).(this):(CM_TREADER_N+5))
|
||||
#xtranslate super:rds => (OBJGENM.(eval(BEHAVIOR.clPARSER():objmethodsimplement)).(this):(CM_TREADER_N+6))
|
||||
#xtranslate super:unrds => (OBJGENM.(eval(BEHAVIOR.clPARSER():objmethodsimplement)).(this):(CM_TREADER_N+7))
|
||||
#xtranslate super:strparserbuffer => (OBJGENM.(eval(BEHAVIOR.clPARSER():objmethodsimplement)).(this):(CM_TREADER_N+8))
|
||||
#xtranslate super:arrayparserbuffer => (OBJGENM.(eval(BEHAVIOR.clPARSER():objmethodsimplement)).(this):(CM_TREADER_N+9))
|
||||
|
||||
**********************************************************************
|
||||
static function setCMethods(pOsztaly)
|
||||
// Egy t”mb”t felt”lt az oszt ly m–veleti blokkjaival.
|
||||
pOsztaly[(CM_OBJECT_N+5)]:={|this| readitem(this)}
|
||||
pOsztaly[(CM_PARSER_N+1)]:={|this| streolparserbuffer(this)}
|
||||
pOsztaly[(CM_PARSER_N+2)]:={|this,tkId,str| maketoken(this,tkId,str)}
|
||||
pOsztaly[(CM_PARSER_N+3)]:={|this,tkId,stArray| maketokenst(this,tkId,stArray)}
|
||||
pOsztaly[(CM_PARSER_N+4)]:={|this,tkId,stArray| maketokenlst(this,tkId,stArray)}
|
||||
pOsztaly[(CM_PARSER_N+5)]:={|this,tkId,str,errCode| makeerrtoken(this,tkId,str,errCode)}
|
||||
pOsztaly[(CM_PARSER_N+6)]:={|this| parsetptree(this)}
|
||||
pOsztaly[(CM_PARSER_N+7)]:={|this| parse(this)}
|
||||
pOsztaly[(CM_PARSER_N+8)]:={|this,tkId| parselinecomment(this,tkId)}
|
||||
pOsztaly[(CM_PARSER_N+9)]:={|this| parsepccomment(this)}
|
||||
pOsztaly[(CM_PARSER_N+10)]:={|this,hatarolo| parsestring(this,hatarolo)}
|
||||
pOsztaly[(CM_PARSER_N+11)]:={|this| parsename(this)}
|
||||
pOsztaly[(CM_PARSER_N+12)]:={|this| parsenumberarray(this)}
|
||||
pOsztaly[(4)]:={|this,inputReader,name,errorStream| oinit(this,inputReader,name,errorStream)}
|
||||
return pOsztaly
|
||||
|
||||
**********************************************************************
|
||||
static function setCams(ta,tm)
|
||||
// Egy t”mb”t felt”lt az oszt ly ltal def. objektumok attrib£tumaival ‚s m–veleteivel.
|
||||
ta[CA_PARSER_N+1-CA_NIL_N] := {CA_PARSER_N+1,'soreleje',nil}
|
||||
ta[CA_PARSER_N+2-CA_NIL_N] := {CA_PARSER_N+2,'tokenpos', }
|
||||
|
||||
tm[(CM_OBJECT_N+5)-CM_NIL_N] := {(CM_OBJECT_N+5),'readitem','',nil}
|
||||
tm[(CM_PARSER_N+1)-CM_NIL_N] := {(CM_PARSER_N+1),'streolparserbuffer','',nil}
|
||||
tm[(CM_PARSER_N+2)-CM_NIL_N] := {(CM_PARSER_N+2),'maketoken','tkId,str',nil}
|
||||
tm[(CM_PARSER_N+3)-CM_NIL_N] := {(CM_PARSER_N+3),'maketokenst','tkId,stArray',nil}
|
||||
tm[(CM_PARSER_N+4)-CM_NIL_N] := {(CM_PARSER_N+4),'maketokenlst','tkId,stArray',nil}
|
||||
tm[(CM_PARSER_N+5)-CM_NIL_N] := {(CM_PARSER_N+5),'makeerrtoken','tkId,str,errCode',nil}
|
||||
tm[(CM_PARSER_N+6)-CM_NIL_N] := {(CM_PARSER_N+6),'parsetptree','',nil}
|
||||
tm[(CM_PARSER_N+7)-CM_NIL_N] := {(CM_PARSER_N+7),'parse','',nil}
|
||||
tm[(CM_PARSER_N+8)-CM_NIL_N] := {(CM_PARSER_N+8),'parselinecomment','tkId',nil}
|
||||
tm[(CM_PARSER_N+9)-CM_NIL_N] := {(CM_PARSER_N+9),'parsepccomment','',nil}
|
||||
tm[(CM_PARSER_N+10)-CM_NIL_N] := {(CM_PARSER_N+10),'parsestring','hatarolo',nil}
|
||||
tm[(CM_PARSER_N+11)-CM_NIL_N] := {(CM_PARSER_N+11),'parsename','',nil}
|
||||
tm[(CM_PARSER_N+12)-CM_NIL_N] := {(CM_PARSER_N+12),'parsenumberarray','',nil}
|
||||
tm[(4)-CM_NIL_N] := {(4),'oinit','inputReader,name,errorStream',nil}
|
||||
return nil
|
||||
|
||||
#ifndef _NO_CLNPARSER_
|
||||
#ifdef _STRICT_PARENT_
|
||||
#ifdef _CA_CM_ONLY_
|
||||
#include "meta.och"
|
||||
#else // _CA_CM_ONLY_
|
||||
#define _CA_CM_ONLY_
|
||||
#include "meta.och"
|
||||
#undef _CA_CM_ONLY_
|
||||
#endif // _CA_CM_ONLY_
|
||||
#else
|
||||
#include "meta.och"
|
||||
#endif // _STRICT_PARENT_
|
||||
**********************************************************************
|
||||
function clNPARSER()
|
||||
// El“szedi az oszt lyt. (class)
|
||||
static osztaly
|
||||
if (osztaly==nil)
|
||||
osztaly:=META.mcNPARSERCLASS():onew(;
|
||||
clPARSER(),;
|
||||
"NPARSER",;
|
||||
CA_NPARSER_N,;
|
||||
CM_NPARSER_N,;
|
||||
{|ta,tm|setCams(ta,tm)},;
|
||||
{|t|setCMethods(t)})
|
||||
endif
|
||||
return osztaly
|
||||
#endif // _NO_CLNPARSER_
|
||||
|
||||
#ifndef _NO_NPARSERCLASS_
|
||||
|
||||
**********************************************************************
|
||||
#xtranslate class:<m> => NPARSERCLASS.(class):<m>
|
||||
|
||||
#xcommand cimplement onew(inputReader,name,errorStream) => ;
|
||||
static function onew(class,inputReader,name,errorStream)
|
||||
#xcommand cimplement oinitclass() => static function oinitclass(class)
|
||||
#xcommand cimplement iswhitespacechar(c) => ;
|
||||
static function iswhitespacechar(class,c)
|
||||
#xcommand cimplement isstartnamechar(c) => ;
|
||||
static function isstartnamechar(class,c)
|
||||
#xcommand cimplement isnumberchar(c) => ;
|
||||
static function isnumberchar(class,c)
|
||||
#xcommand cimplement isnamechar(c) => static function isnamechar(class,c)
|
||||
#xcommand cimplement settokens() => static function settokens(class)
|
||||
#xcommand cimplement calctokenptree() => ;
|
||||
static function calctokenptree(class)
|
||||
|
||||
#ifdef _IMPLEMENT_EXPORT_
|
||||
#xcommand cimplement export onew(inputReader,name,errorStream) => ;
|
||||
function onew(class,inputReader,name,errorStream)
|
||||
#xcommand cimplement export oinitclass() => function oinitclass(class)
|
||||
#xcommand cimplement export iswhitespacechar(c) => ;
|
||||
function iswhitespacechar(class,c)
|
||||
#xcommand cimplement export isstartnamechar(c) => ;
|
||||
function isstartnamechar(class,c)
|
||||
#xcommand cimplement export isnumberchar(c) => ;
|
||||
function isnumberchar(class,c)
|
||||
#xcommand cimplement export isnamechar(c) => function isnamechar(class,c)
|
||||
#xcommand cimplement export settokens() => function settokens(class)
|
||||
#xcommand cimplement export calctokenptree() => ;
|
||||
function calctokenptree(class)
|
||||
#endif // _IMPLEMENT_EXPORT_
|
||||
|
||||
#xtranslate superclass:oinit => (OBJGENM.(eval(BEHAVIOR.mcPARSERCLASS():objmethodsimplement)).(class):(4))
|
||||
#xtranslate superclass:getclass => (OBJGENM.(eval(BEHAVIOR.mcPARSERCLASS():objmethodsimplement)).(class):(5))
|
||||
#xtranslate superclass:isclass => (OBJGENM.(eval(BEHAVIOR.mcPARSERCLASS():objmethodsimplement)).(class):(6))
|
||||
#xtranslate superclass:getattrib => (OBJGENM.(eval(BEHAVIOR.mcPARSERCLASS():objmethodsimplement)).(class):(7))
|
||||
#xtranslate superclass:setattrib => (OBJGENM.(eval(BEHAVIOR.mcPARSERCLASS():objmethodsimplement)).(class):(8))
|
||||
#xtranslate superclass:onew => (OBJGENM.(eval(BEHAVIOR.mcPARSERCLASS():objmethodsimplement)).(class):(CM_OBJECT_N+1))
|
||||
#xtranslate superclass:ocreate => (OBJGENM.(eval(BEHAVIOR.mcPARSERCLASS():objmethodsimplement)).(class):(CM_OBJECT_N+2))
|
||||
#xtranslate superclass:rawoinit => (OBJGENM.(eval(BEHAVIOR.mcPARSERCLASS():objmethodsimplement)).(class):(CM_OBJECT_N+3))
|
||||
#xtranslate superclass:oinitclass => (OBJGENM.(eval(BEHAVIOR.mcPARSERCLASS():objmethodsimplement)).(class):(CM_OBJECT_N+4))
|
||||
#xtranslate superclass:getmethodsimplement => (OBJGENM.(eval(BEHAVIOR.mcPARSERCLASS():objmethodsimplement)).(class):(CM_OBJECT_N+5))
|
||||
#xtranslate superclass:attribidx => (OBJGENM.(eval(BEHAVIOR.mcPARSERCLASS():objmethodsimplement)).(class):(CM_OBJECT_N+6))
|
||||
#xtranslate superclass:needclassid => (OBJGENM.(eval(BEHAVIOR.mcPARSERCLASS():objmethodsimplement)).(class):(CM_OBJECT_N+7))
|
||||
#xtranslate superclass:isinheritfrom => (OBJGENM.(eval(BEHAVIOR.mcPARSERCLASS():objmethodsimplement)).(class):(CM_OBJECT_N+8))
|
||||
|
||||
**********************************************************************
|
||||
static function setMCMethods(pOsztaly)
|
||||
// Egy t”mb”t felt”lt a metaoszt ly m–veleti blokkjaival.
|
||||
pOsztaly[(CM_OBJECT_N+1)]:={|class,inputReader,name,errorStream| onew(class,inputReader,name,errorStream)}
|
||||
pOsztaly[(CM_OBJECT_N+4)]:={|class| oinitclass(class)}
|
||||
pOsztaly[(CM_PARSERCLASS_N+1)]:={|class,c| iswhitespacechar(class,c)}
|
||||
pOsztaly[(CM_PARSERCLASS_N+2)]:={|class,c| isstartnamechar(class,c)}
|
||||
pOsztaly[(CM_PARSERCLASS_N+3)]:={|class,c| isnumberchar(class,c)}
|
||||
pOsztaly[(CM_PARSERCLASS_N+4)]:={|class,c| isnamechar(class,c)}
|
||||
pOsztaly[(CM_PARSERCLASS_N+5)]:={|class| settokens(class)}
|
||||
pOsztaly[(CM_PARSERCLASS_N+6)]:={|class| calctokenptree(class)}
|
||||
return pOsztaly
|
||||
|
||||
**********************************************************************
|
||||
static function setMCams(ta,tm)
|
||||
// Egy t”mb”t felt”lt a metaoszt ly ltal def. objektumok attrib£tumaival ‚s m–veleteivel.
|
||||
ta[CA_PARSERCLASS_N+1-CA_NIL_N] := {CA_PARSERCLASS_N+1,'whitespacechar',nil}
|
||||
ta[CA_PARSERCLASS_N+2-CA_NIL_N] := {CA_PARSERCLASS_N+2,'startnamechar',nil}
|
||||
ta[CA_PARSERCLASS_N+3-CA_NIL_N] := {CA_PARSERCLASS_N+3,'numberchar',nil}
|
||||
ta[CA_PARSERCLASS_N+4-CA_NIL_N] := {CA_PARSERCLASS_N+4,'namechar',nil}
|
||||
ta[CA_PARSERCLASS_N+5-CA_NIL_N] := {CA_PARSERCLASS_N+5,'tokens',nil}
|
||||
ta[CA_PARSERCLASS_N+6-CA_NIL_N] := {CA_PARSERCLASS_N+6,'tokenptree',nil}
|
||||
|
||||
tm[(CM_OBJECT_N+1)-CM_NIL_N] := {(CM_OBJECT_N+1),'onew','inputReader,name,errorStream',nil}
|
||||
tm[(CM_OBJECT_N+4)-CM_NIL_N] := {(CM_OBJECT_N+4),'oinitclass','',nil}
|
||||
tm[(CM_PARSERCLASS_N+1)-CM_NIL_N] := {(CM_PARSERCLASS_N+1),'iswhitespacechar','c',nil}
|
||||
tm[(CM_PARSERCLASS_N+2)-CM_NIL_N] := {(CM_PARSERCLASS_N+2),'isstartnamechar','c',nil}
|
||||
tm[(CM_PARSERCLASS_N+3)-CM_NIL_N] := {(CM_PARSERCLASS_N+3),'isnumberchar','c',nil}
|
||||
tm[(CM_PARSERCLASS_N+4)-CM_NIL_N] := {(CM_PARSERCLASS_N+4),'isnamechar','c',nil}
|
||||
tm[(CM_PARSERCLASS_N+5)-CM_NIL_N] := {(CM_PARSERCLASS_N+5),'settokens','',nil}
|
||||
tm[(CM_PARSERCLASS_N+6)-CM_NIL_N] := {(CM_PARSERCLASS_N+6),'calctokenptree','',nil}
|
||||
return nil
|
||||
|
||||
**********************************************************************
|
||||
#ifndef _NO_MCNPARSERCLASS_
|
||||
#ifdef _STRICT_PARENT_
|
||||
#ifdef _CA_CM_ONLY_
|
||||
#include "meta.och" // "metaclas.och"
|
||||
#else // _CA_CM_ONLY_
|
||||
#define _CA_CM_ONLY_
|
||||
#include "meta.och" // "metaclas.och"
|
||||
#undef _CA_CM_ONLY_
|
||||
#endif // _CA_CM_ONLY_
|
||||
#else
|
||||
#include "meta.och" // "metaclas.och"
|
||||
#endif // _STRICT_PARENT_
|
||||
function mcNPARSERCLASS()
|
||||
// El“szedi az oszt ly metaoszt ly t. (metaclass)
|
||||
static metaOsztaly
|
||||
if (metaOsztaly==nil)
|
||||
metaOsztaly:=META.clMETA():onew(;
|
||||
mcPARSERCLASS(),;
|
||||
"NPARSERCLASS",;
|
||||
CA_NPARSERCLASS_N,;
|
||||
CM_NPARSERCLASS_N,;
|
||||
{|ta,tm|setMCams(ta,tm)},;
|
||||
{|t|setMCMethods(t)})
|
||||
endif
|
||||
return metaOsztaly
|
||||
#endif // _NO_MCNPARSERCLASS_
|
||||
|
||||
#endif // _NO_NPARSERCLASS_
|
||||
#ifdef _IMPLEMENT_ONEW_
|
||||
**********************************************************************
|
||||
cimplement onew(inputReader,name,errorStream)
|
||||
local o:=class:ocreate()
|
||||
|
||||
NPARSER.o:oinit(inputReader,name,errorStream)
|
||||
return o
|
||||
#endif // _IMPLEMENT_ONEW_
|
||||
|
||||
**********************************************************************
|
||||
#ifdef _IMPLEMENT_OINIT_
|
||||
implement oinit(inputReader,name,errorStream)
|
||||
super:oinit()
|
||||
return this
|
||||
#endif // _IMPLEMENT_OINIT_
|
||||
|
||||
**********************************************************************
|
||||
**********************************************************************
|
||||
#endif // _NPARSER_PRG_OCH_
|
||||
#endif // _NPARSER_PRG_
|
||||
@@ -1,708 +0,0 @@
|
||||
/*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
//*******************************************************************
|
||||
// nparser.prg: Az nparser oszt ly implement ci¢ja.
|
||||
// 1999, Csisz r Levente
|
||||
|
||||
// N‚v elemz“. A karakter folyamot tokeniz lja.
|
||||
// A tokenek: n‚v, string, sz m, megjegyz‚s, etc.
|
||||
|
||||
//*******************************************************************
|
||||
#define NPRERRGROUP "hparser"
|
||||
|
||||
#define NPRERR_ENDPCCOMMENT {NPRERRGROUP,"endpccomment"}
|
||||
#define NPRERR_ENDSTRING {NPRERRGROUP,"endstring"}
|
||||
|
||||
//*******************************************************************
|
||||
// Ezek tulajdonk‚ppen nem kellenek, senki nem haszn lja.
|
||||
#define CTID_PLUSPLUS "plusplus"
|
||||
#define CTID_MINUSMINUS "minusminus"
|
||||
#define CTID_ARROW "arrow"
|
||||
#define CTID_AND "and"
|
||||
#define CTID_OR "or"
|
||||
#define CTID_NOT "not"
|
||||
#define CTID_LET "let"
|
||||
#define CTID_AD "ad"
|
||||
#define CTID_TRUE "true"
|
||||
#define CTID_FALSE "false"
|
||||
#define CTID_PERPER "perper"
|
||||
#define CTID_PERSTAR "perstar"
|
||||
|
||||
#define CTID_EQEQ "eqeq"
|
||||
#define CTID_PLUSEQ "pluseq"
|
||||
#define CTID_MINUSEQ "minuseq"
|
||||
#define CTID_MULEQ "muleq"
|
||||
#define CTID_DIVEQ "diveq"
|
||||
#define CTID_MODEQ "modeq"
|
||||
|
||||
#define CTID_LESSEQ "lesseq"
|
||||
#define CTID_GREATEQ "greateq"
|
||||
#define CTID_NOTEQ1 "noteq1"
|
||||
#define CTID_NOTEQ2 "noteq2"
|
||||
|
||||
//*******************************************************************
|
||||
#include "objgen.ch"
|
||||
|
||||
//*******************************************************************
|
||||
#include "tbuffer.och"
|
||||
#include "creader.och"
|
||||
#include "token.och"
|
||||
#include "tokenst.och"
|
||||
#include "tkstr.och"
|
||||
#include "prserr.och"
|
||||
|
||||
//*******************************************************************
|
||||
#include "cr_lf.ch"
|
||||
#include "ctoken.ch"
|
||||
#include "error.ch"
|
||||
|
||||
//*******************************************************************
|
||||
#define _NPARSER_PRG_
|
||||
#define _IMPLEMENT_ONEW_
|
||||
|
||||
#include "nparser.och"
|
||||
|
||||
//*******************************************************************
|
||||
// ™sszehasonl¡tja a this:item-et egy karaterrel.
|
||||
#define eqItemChar(aChar) (valtype(this:item)=="C" .and. ;
|
||||
this:item==(aChar))
|
||||
|
||||
#define isItemEol() (valtype(this:item)=="A" .and. this:item[1]==CTKID_EOL)
|
||||
|
||||
//*******************************************************************
|
||||
cimplement oinitclass()
|
||||
local i,errStr,err
|
||||
|
||||
superclass:oinitclass()
|
||||
class:whitespacechar :=""
|
||||
for i:=1 to 32
|
||||
if (i!=10 .and. i!=13)
|
||||
class:whitespacechar := class:whitespacechar+chr(i)
|
||||
endif
|
||||
end for
|
||||
/* class:specchar :=;
|
||||
CTK_CR +;
|
||||
CTK_LF +;
|
||||
CTK_IDEZ +;
|
||||
CTK_MACS +;
|
||||
CTK_PER +;
|
||||
CTK_PVESSZO */
|
||||
|
||||
class:startnamechar:="abcdefghijklmnopqrtsuvwxyz"+;
|
||||
"ABCDEFGHIJKLMNOPQRTSUVWXYZ"+;
|
||||
"_"
|
||||
|
||||
class:numberchar :="0123456789"
|
||||
|
||||
class:namechar :=class:startnamechar+;
|
||||
class:numberchar
|
||||
|
||||
class:tokens:={}
|
||||
class:setTokens() // Be llitjuk a tokeneket
|
||||
if (nil!=(errStr:=class:calcTokenPTree())) // Elk‚sz¡tj<74>k az elemz“ f t.
|
||||
err:=errorNew()
|
||||
err:cargo:=class:tokens
|
||||
err:description:=errStr
|
||||
err:filename:=''
|
||||
err:severity:=ES_ERROR
|
||||
err:operation:="calcTokenPTree "+errStr
|
||||
err:subsystem:="nparser"
|
||||
err:subCode:=1
|
||||
eval(errorblock(),err)
|
||||
endif
|
||||
|
||||
C.PRSERR:registerError(NPRERR_ENDPCCOMMENT ,;
|
||||
"Unterminated /* */ comment")
|
||||
C.PRSERR:registerError(NPRERR_ENDSTRING ,;
|
||||
"Unterminated string")
|
||||
return class
|
||||
|
||||
//*******************************************************************
|
||||
cimplement isWhitespacechar(c)
|
||||
return valtype(c)=="C" .and. c$class:whitespacechar
|
||||
|
||||
//*******************************************************************
|
||||
// cimplement isSpecchar(c)
|
||||
// return valtype(c)=="C" .and. c$class:specchar
|
||||
|
||||
//*******************************************************************
|
||||
cimplement isStartnamechar(c)
|
||||
return valtype(c)=="C" .and. c$class:startnamechar
|
||||
|
||||
//*******************************************************************
|
||||
cimplement isNumberchar(c)
|
||||
return valtype(c)=="C" .and. c$class:numberchar
|
||||
|
||||
//*******************************************************************
|
||||
cimplement isNamechar(c)
|
||||
return valtype(c)=="C" .and. c$class:namechar
|
||||
|
||||
//*******************************************************************
|
||||
cimplement setTokens()
|
||||
aadd(class:tokens, {CTID_PLUSPLUS ,"++" ,nil})
|
||||
aadd(class:tokens, {CTID_MINUSMINUS ,"--" ,nil})
|
||||
aadd(class:tokens, {CTID_AD ,"**" ,"^"})
|
||||
aadd(class:tokens, {CTID_ARROW ,"->" ,nil})
|
||||
aadd(class:tokens, {CTID_LET ,":=" ,nil})
|
||||
aadd(class:tokens, {CTID_LESSEQ ,"<=" ,nil})
|
||||
aadd(class:tokens, {CTID_NOTEQ1 ,"<>" ,nil})
|
||||
aadd(class:tokens, {CTID_NOTEQ2 ,"!=" ,"<>"})
|
||||
aadd(class:tokens, {CTID_EQEQ ,"==" ,nil})
|
||||
aadd(class:tokens, {CTID_GREATEQ ,">=" ,nil})
|
||||
aadd(class:tokens, {CTID_PLUSEQ ,"+=" ,nil})
|
||||
aadd(class:tokens, {CTID_MINUSEQ ,"-=" ,nil})
|
||||
aadd(class:tokens, {CTID_MULEQ ,"*=" ,nil})
|
||||
aadd(class:tokens, {CTID_DIVEQ ,"/=" ,nil})
|
||||
aadd(class:tokens, {CTID_MODEQ ,"%=" ,nil})
|
||||
|
||||
|
||||
aadd(class:tokens, {CTID_AND ,".and." ,".AND."})
|
||||
aadd(class:tokens, {CTID_OR ,".or." ,".OR."})
|
||||
aadd(class:tokens, {CTID_NOT ,".not." ,"!"})
|
||||
aadd(class:tokens, {CTID_TRUE ,".t." ,".T."})
|
||||
aadd(class:tokens, {CTID_FALSE ,".f." ,".F."})
|
||||
|
||||
|
||||
|
||||
// aadd(class:tokens, {CTID_PERPER ,"//" })
|
||||
// aadd(class:tokens, {CTID_PERSTAR ,"/*" })
|
||||
return nil
|
||||
|
||||
//*******************************************************************
|
||||
static function addTPTree(tPTree,ctId,ctStr,allStr,params)
|
||||
local c,i,node
|
||||
|
||||
if (len(ctStr)==0)
|
||||
// Itt a v‚ge.
|
||||
node:={nil,ctId,allStr,params}
|
||||
if (len(tPTree)==0)
|
||||
aadd(tPTree,node)
|
||||
return nil
|
||||
endif
|
||||
if (tpTree[1]==nil)
|
||||
// M r van egy termin lisunk ugyanilyen tartalommal.
|
||||
return "addTPTree: M r van ilyen token a f ban: '"+allStr+"'"
|
||||
endif
|
||||
aunget(tPTree,node)
|
||||
return nil
|
||||
endif
|
||||
c:=left(ctStr,1)
|
||||
for i:=1 to len(tPTree)
|
||||
if (tPTree[i][1]==c)
|
||||
return addTPTree(tPTree[i][2],ctId,substr(ctStr,2),allStr,params)
|
||||
endif
|
||||
end for
|
||||
// Hozz kell venni.
|
||||
node:={c,{}}
|
||||
aadd(tPTree,node)
|
||||
return addTPTree(node[2],ctId,substr(ctStr,2),allStr,params)
|
||||
|
||||
//*******************************************************************
|
||||
cimplement calcTokenPTree()
|
||||
// K‚sz¡t egy elemz“ f t a tokenek elemz‚s‚hez a class:tokenPTree-be.
|
||||
/*
|
||||
Az elemz“ fa:
|
||||
<root>:=<node>
|
||||
<node>:={ [<terminal>,] <inner branch1>, <inner branch2>, ... }
|
||||
|
||||
<inner branch>:={karakter,<node>}
|
||||
|
||||
<terminal>:={nil,<id>,fullStr,params}
|
||||
|
||||
Karakter: A i. szinten a token i. karaktere.
|
||||
id: A token id-je.
|
||||
fullStr: A token, mint string.
|
||||
*/
|
||||
local i, errStr,wStr
|
||||
|
||||
class:tokenptree:={}
|
||||
|
||||
errStr:=""
|
||||
for i:=1 to len(class:tokens)
|
||||
if (nil!=(wStr:=addTPTree(class:tokenptree,;
|
||||
class:tokens[i][1],;
|
||||
class:tokens[i][2],;
|
||||
class:tokens[i][2],;
|
||||
class:tokens[i][3])))
|
||||
errStr:=errStr+wStr+crlf()
|
||||
endif
|
||||
end for
|
||||
return if (len(errStr)==0,nil,errStr)
|
||||
|
||||
//*******************************************************************
|
||||
implement oinit(inputReader,name,errorStream)
|
||||
|
||||
super:oinit(inputReader,name,errorStream)
|
||||
|
||||
// this:item:=nil
|
||||
// this:buf:=C.TBUFFER:onew()
|
||||
this:soreleje:=.t.
|
||||
|
||||
return this
|
||||
|
||||
//*******************************************************************
|
||||
|
||||
//*******************************************************************
|
||||
implement readItem()
|
||||
|
||||
this:tokenPos:={CREADER.(this:inputReader):getFile(),;
|
||||
CREADER.(this:inputReader):getLine(),;
|
||||
CREADER.(this:inputReader):getPos()}
|
||||
// TBUFFER.(this:buf):clear()
|
||||
// this:rds()
|
||||
super:readItem()
|
||||
return this:parse()
|
||||
|
||||
//*******************************************************************
|
||||
implement makeToken(tkId,str)
|
||||
|
||||
return C.TOKEN:onew(tkId,str,;
|
||||
this:tokenPos[1],;
|
||||
this:tokenPos[2],;
|
||||
this:tokenPos[3])
|
||||
|
||||
//*******************************************************************
|
||||
implement makeTokenSt(tkId,stArray)
|
||||
// Az stArray szerkezete: {ctkId,filename,line,pos,deep}
|
||||
|
||||
return C.TOKENST:onew(tkId,"",;
|
||||
stArray[2],;
|
||||
stArray[3],;
|
||||
stArray[4],;
|
||||
stArray[5])
|
||||
|
||||
//*******************************************************************
|
||||
implement makeTokenLSt(tkId,stArray)
|
||||
// Az stArray szerkezete: {ctkId,filename,line,pos,deep}
|
||||
|
||||
local str
|
||||
|
||||
if (stArray[3]>1 .or. stArray[5]>1)
|
||||
str:=makeHSLineStr(stArray[2],stArray[3])
|
||||
|
||||
// str:="#line "+toStr(stArray[3])+" "+;
|
||||
// '"'+stArray[2]+'"'+guessedEol()
|
||||
else
|
||||
str:=""
|
||||
endif
|
||||
|
||||
return C.TOKENST:onew(tkId,str,;
|
||||
stArray[2],;
|
||||
stArray[3],;
|
||||
stArray[4],;
|
||||
stArray[5])
|
||||
|
||||
//*******************************************************************
|
||||
implement makeErrToken(tkId,str,errCode)
|
||||
local t
|
||||
|
||||
t:=C.TOKEN:onew(tkId,str,;
|
||||
this:tokenPos[1],;
|
||||
this:tokenPos[2],;
|
||||
this:tokenPos[3])
|
||||
TOKEN.t:error:=errCode
|
||||
return t
|
||||
|
||||
//*******************************************************************
|
||||
#define LASTSTOP_NRDS 1
|
||||
#define LASTSTOP_ITEM 2
|
||||
#define LASTSTOP_ID 3
|
||||
#define LASTSTOP_STR 4
|
||||
|
||||
#define N_LASTSTOP 4
|
||||
|
||||
//*******************************************************************
|
||||
static function newLastStop(nrds,item,id,str)
|
||||
local o
|
||||
|
||||
o:=array(N_LASTSTOP)
|
||||
|
||||
o[LASTSTOP_NRDS ]:=nrds
|
||||
o[LASTSTOP_ITEM ]:=item
|
||||
o[LASTSTOP_ID ]:=id
|
||||
o[LASTSTOP_STR ]:=str
|
||||
|
||||
return o
|
||||
|
||||
//*******************************************************************
|
||||
static function lststUnrds(lastStop,this,nrds)
|
||||
this:unrds(nrds-lastStop[LASTSTOP_NRDS])
|
||||
this:item:=lastStop[LASTSTOP_ITEM]
|
||||
return nil
|
||||
|
||||
//*******************************************************************
|
||||
implement parseTPTree()
|
||||
// Az input folyamr¢l ‚rkez“ karaktereket elemzi. A this:item-nek
|
||||
// karakternek kell lennie, olvas, ha sz<73>ks‚ges.
|
||||
// A bet–ket 'case insensitive'-k‚nt hasonl¡tja ”ssze.
|
||||
local tptree,nRds,cItem:=this:item
|
||||
local str,lastStop,i
|
||||
|
||||
str:=this:item
|
||||
|
||||
tptree:=thisclass:tokenptree
|
||||
nRds:=0
|
||||
lastStop:=newLastStop(0,this:item,nil,nil)
|
||||
while(.t.)
|
||||
if (0==(i:=ascan(tptree,{|x| x[1]==lower(this:item)})))
|
||||
// Nincs tov bb, viszont a lastStop-ban van olyan token,
|
||||
// ami illeszkedik ennek az elej‚hez.
|
||||
exit
|
||||
endif
|
||||
|
||||
// Van ilyen karakter, megy<67>nk lejjebb a f ban
|
||||
tptree:=tptree[i][2]
|
||||
// El“sz”r megn‚zz<7A>k, hogy a v‚g‚re ‚rt<72>nk-e.
|
||||
if (len(tptree)==0)
|
||||
// Hiba, vagy <20>res a fa, vissza a lastStop-hoz.
|
||||
exit
|
||||
endif
|
||||
if (tptree[1][1]==nil)
|
||||
// Itt meg lehet llni, pl. ha a k”vetkez“ keres‚s nem hoz
|
||||
// eredm‚nyt.
|
||||
if (len(tptree)==1)
|
||||
// Nem lehet tov bb menni, de visszal‚pni sem kell.
|
||||
// id:=tptree[1][2]
|
||||
if (tptree[1][4]!=nil)
|
||||
// Incompatibility
|
||||
// Helyettes¡t<C2A1>nk.
|
||||
// outerr("parseTPTree: "+tptree[1][4],newline())
|
||||
return tptree[1][4]
|
||||
else
|
||||
return str
|
||||
endif
|
||||
endif
|
||||
// Lehet m‚g tov bb, de ha elakad, akkor ez j¢!
|
||||
lastStop[LASTSTOP_NRDS ]:=nRds
|
||||
lastStop[LASTSTOP_ITEM ]:=this:item
|
||||
lastStop[LASTSTOP_ID ]:=tptree[1][2]
|
||||
if (tptree[1][4]!=nil)
|
||||
// Incompatibility
|
||||
// Helyettes¡t<C2A1>nk.
|
||||
lastStop[LASTSTOP_STR ]:=tptree[1][4]
|
||||
else
|
||||
lastStop[LASTSTOP_STR ]:=str
|
||||
endif
|
||||
endif
|
||||
|
||||
// Olvasunk.
|
||||
this:rds()
|
||||
nRds++
|
||||
if (valtype(this:item)!="C")
|
||||
exit
|
||||
endif
|
||||
str+=this:item
|
||||
end while
|
||||
|
||||
lststUnrds(lastStop,this,nrds)
|
||||
|
||||
return lastStop[LASTSTOP_STR] // Ez nil, ha nem ll¡tottuk be!
|
||||
|
||||
//*******************************************************************
|
||||
implement 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.
|
||||
//
|
||||
local wSoreleje:=this:soreleje
|
||||
local perItem,crItem,wStr
|
||||
|
||||
if (this:item==nil)
|
||||
return nil
|
||||
endif
|
||||
if (!valtype(this:item)=="C")
|
||||
if (this:item[1]==CTKID_PRINTLINE)
|
||||
return this:makeToken(TKID_PRINTLINE,;
|
||||
"#line "+toStr(CREADER.(this:inputReader):getLine())+" "+;
|
||||
'"'+CREADER.(this:inputReader):getFile()+'"'+;
|
||||
guessedEol())
|
||||
elseif (this:item[1]==CTKID_BOS)
|
||||
this:soreleje:=.t.
|
||||
// outerr("bos",newline())
|
||||
return this:makeTokenLSt(TKID_BOS,this:item)
|
||||
elseif (this:item[1]==CTKID_EOS)
|
||||
if (!this:soreleje)
|
||||
// outerr("eos+newline",newline())
|
||||
this:unread(this:makeTokenSt(TKID_EOS,this:item))
|
||||
this:soreleje:=.t.
|
||||
return this:makeToken(TKID_UJSOR,guessedEol())
|
||||
endif
|
||||
// outerr("eos",newline())
|
||||
return this:makeTokenSt(TKID_EOS,this:item)
|
||||
elseif (this:item[1]==CTKID_EOL)
|
||||
// outerr("eol",newline())
|
||||
this:soreleje:=.t.
|
||||
return this:makeToken(TKID_UJSOR,this:item[2])
|
||||
endif
|
||||
else
|
||||
// outerr("egyeb",newline())
|
||||
this:soreleje:=.f.
|
||||
if (thisclass:isWhitespacechar(this:item))
|
||||
this:rds()
|
||||
while(thisclass:isWhitespacechar(this:item))
|
||||
this:rds()
|
||||
end while
|
||||
this:unrds()
|
||||
this:soreleje:=wSoreleje
|
||||
return this:makeToken(TKID_URES,this:strParserBuffer())
|
||||
endif
|
||||
if (this:item==CTK_CSILLAG .and. wSoreleje)
|
||||
return this:parseLineComment(TKID_CSCOMMENT)
|
||||
elseif (nil!=(wStr:=this:parseTPTree()))
|
||||
// outerr("nparser: "+wStr,newline())
|
||||
return this:makeToken(TKID_CHAR,wStr)
|
||||
elseif (this:item==CTK_PER)
|
||||
perItem:=this:item
|
||||
this:rds()
|
||||
if (eqItemChar(CTK_PER))
|
||||
// '//'-es megjegyz‚s.
|
||||
return this:parseLineComment(TKID_PPCOMMENT)
|
||||
elseif (eqItemChar(CTK_CSILLAG))
|
||||
// '/*'-os megjegyz‚s
|
||||
return this:parsePcComment()
|
||||
else
|
||||
// Sima '/' karakter
|
||||
this:unrds()
|
||||
return this:makeToken(TKID_CHAR,perItem)
|
||||
endif
|
||||
elseif (this:item==CTK_ET)
|
||||
perItem:=this:item
|
||||
this:rds()
|
||||
if (eqItemChar(CTK_ET))
|
||||
// '&&'-es megjegyz‚s.
|
||||
return this:parseLineComment(TKID_PPCOMMENT)
|
||||
else
|
||||
// Sima '&' karakter
|
||||
this:unrds()
|
||||
return this:makeToken(TKID_CHAR,perItem)
|
||||
endif
|
||||
elseif (this:item==CTK_IDEZ .or. this:item==CTK_FIDEZ)
|
||||
// Fels“vessz“s string.
|
||||
return this:parseString(CTK_IDEZ)
|
||||
elseif (this:item==CTK_MACS)
|
||||
// Macskak”rm”s string.
|
||||
return this:parseString(CTK_MACS)
|
||||
elseif (thisclass:isStartnamechar(this:item))
|
||||
// N‚v. (Bet–vel vagy al h£z ssal kezd“dik, ‚s bet–vel,
|
||||
// al h£z ssal vagy sz mmal folytat¢dik).
|
||||
return this:parseName()
|
||||
elseif (thisclass:isNumberchar(this:item) .or. eqItemChar("."))
|
||||
// Sz m.
|
||||
return this:parseNumberArray()
|
||||
// elseif (item==CTK_PVESSZO)
|
||||
// return this:makeToken(TKID_CHAR,item)
|
||||
else
|
||||
return this:makeToken(TKID_CHAR,this:item)
|
||||
endif
|
||||
endif
|
||||
return nil
|
||||
|
||||
|
||||
//*******************************************************************
|
||||
implement parseLineComment(tkId)
|
||||
// '//' vagy '*' megjegyz‚s
|
||||
|
||||
this:rds()
|
||||
while(this:item!=nil)
|
||||
// if (eqItemChar(CHAR_LF) .or. eqItemChar(CHAR_CR_LF))
|
||||
if (isItemEol())
|
||||
this:unrds()
|
||||
exit
|
||||
elseif (valtype(this:item)!="C")
|
||||
if (this:item[1]==CTKID_EOS .or. this:item[1]==CTKID_BOS)
|
||||
this:unrds()
|
||||
exit
|
||||
endif
|
||||
endif
|
||||
this:rds()
|
||||
end while
|
||||
// this:soreleje:=.t.
|
||||
return this:makeToken(tkId,this:strParserBuffer())
|
||||
|
||||
//*******************************************************************
|
||||
implement parsePcComment()
|
||||
// '/*'-os megjegyz‚s
|
||||
// Mj.: Egy ilyen sorban: "/* huhu */ * hehe" a "* hehe" nem sz m¡t
|
||||
// megjegyz‚snek, mert a '*' nem a sor elej‚n van.
|
||||
|
||||
this:rds()
|
||||
while(this:item!=nil)
|
||||
if (eqItemChar(CTK_CSILLAG))
|
||||
this:rds()
|
||||
if (eqItemChar(CTK_PER))
|
||||
exit
|
||||
endif
|
||||
this:unrds()
|
||||
elseif (valtype(this:item)!="C")
|
||||
if (this:item[1]==CTKID_EOS .or. this:item[1]==CTKID_BOS)
|
||||
this:unrds()
|
||||
// Befejezetlen '/*' megjegyz‚s.
|
||||
return this:makeErrToken(TKID_PCCOMMENT,this:strParserBuffer(),;
|
||||
NPRERR_ENDPCCOMMENT)
|
||||
endif
|
||||
endif
|
||||
this:rds()
|
||||
end while
|
||||
|
||||
return this:makeToken(TKID_PCCOMMENT,this:strEolParserBuffer())
|
||||
|
||||
//*******************************************************************
|
||||
implement strEolParserBuffer()
|
||||
// Megadja a parserBuffer tartalm t stringk‚nt.
|
||||
// A nem stringeket az eol kiv‚tel‚vel eldobja.
|
||||
local i,str:="",w
|
||||
|
||||
for i:=1 to TBUFFER.(this:parserBuffer):bItemNumber
|
||||
w:=TBUFFER.(this:parserBuffer):getBItem(i)
|
||||
if (valtype(w)=="C")
|
||||
str+=w
|
||||
elseif (w[1]==CTKID_EOL)
|
||||
str+=w[2]
|
||||
endif
|
||||
end for
|
||||
return str
|
||||
|
||||
//*******************************************************************
|
||||
static function makeStrToken(this,errCode,str,kezdo,zaro)
|
||||
if (errCode!=nil)
|
||||
this:addError(C.PRSERR:onew(;
|
||||
errCode,;
|
||||
kezdo+str+zaro,;
|
||||
this:tokenPos[1],;
|
||||
this:tokenPos[2],;
|
||||
this:tokenPos[3]))
|
||||
endif
|
||||
|
||||
return C.TKSTR:onew(TKID_STRING,str,;
|
||||
this:tokenPos[1],;
|
||||
this:tokenPos[2],;
|
||||
this:tokenPos[3],;
|
||||
kezdo,zaro)
|
||||
|
||||
//*******************************************************************
|
||||
implement parseString(hatarolo)
|
||||
// Fels“vessz“s ‚s macskak”rm”s string.
|
||||
local str
|
||||
|
||||
this:rds()
|
||||
while(this:item!=nil)
|
||||
if (eqItemChar(hatarolo))
|
||||
exit
|
||||
// elseif (eqItemChar(CHAR_LF) .or. eqItemChar(CHAR_CR_LF))
|
||||
elseif (isItemEol())
|
||||
this:unrds()
|
||||
// Befejezetlen string.
|
||||
str:=this:strParserBuffer()
|
||||
return makeStrToken(this,NPRERR_ENDSTRING,substr(str,2),left(str,1),"")
|
||||
|
||||
elseif (valtype(this:item)!="C")
|
||||
if (this:item[1]==CTKID_EOS .or. this:item[1]==CTKID_BOS)
|
||||
this:unrds()
|
||||
// Befejezetlen string.
|
||||
str:=this:strParserBuffer()
|
||||
return makeStrToken(this,NPRERR_ENDSTRING,substr(str,2),left(str,1),"")
|
||||
endif
|
||||
endif
|
||||
this:rds()
|
||||
end while
|
||||
|
||||
str:=this:strParserBuffer()
|
||||
return makeStrToken(this,nil,substr(str,2,len(str)-2),left(str,1),right(str,1))
|
||||
// return this:makeToken(TKID_STRING,this:strParserBuffer())
|
||||
|
||||
//*******************************************************************
|
||||
implement parseName()
|
||||
// N‚v.
|
||||
|
||||
this:rds()
|
||||
while(thisclass:isNamechar(this:item))
|
||||
this:rds()
|
||||
end while
|
||||
this:unrds()
|
||||
// outstd("nev: '"+this:strParserBuffer()+"'"+guessedEol())
|
||||
return this:makeToken(TKID_NEV,this:strParserBuffer())
|
||||
|
||||
//*******************************************************************
|
||||
// #define isTkPont(token) (TOKEN.(token):id==TKID_CHAR .and.;
|
||||
// TOKEN.(token):str==".")
|
||||
|
||||
//*******************************************************************
|
||||
implement parseNumberArray()
|
||||
// Sz m sor.
|
||||
// Akkor kell h¡vni, ha a this:item sz m vagy pont.
|
||||
/*
|
||||
Lehets‚ges alakok:
|
||||
|
||||
<Sz m>
|
||||
<Sz m>'.'<Sz m>
|
||||
'.'<Sz m>
|
||||
|
||||
Mj.: Teh t <Sz m> '.' nem lehet!
|
||||
*/
|
||||
local state
|
||||
#define STPNA_START "start"
|
||||
#define STPNA_NUM "num"
|
||||
#define STPNA_NUMPONT "numpont"
|
||||
#define STPNA_PONT "pont"
|
||||
#define STPNA_PONTNUM "pontnum"
|
||||
|
||||
local tkId
|
||||
|
||||
// this:rds()
|
||||
state:=STPNA_START
|
||||
tkId:=TKID_SZAMTOMB
|
||||
while(nil!=this:item)
|
||||
if (state==STPNA_START)
|
||||
if (thisclass:isNumberchar(this:item))
|
||||
state:=STPNA_NUM
|
||||
elseif (eqItemChar("."))
|
||||
state:=STPNA_PONT
|
||||
else
|
||||
exit
|
||||
endif
|
||||
elseif (state==STPNA_NUM)
|
||||
if (thisclass:isNumberchar(this:item))
|
||||
// Maradunk.
|
||||
elseif (eqItemChar("."))
|
||||
state:=STPNA_NUMPONT
|
||||
else
|
||||
// Sz m ut n nem sz m vagy pont.
|
||||
exit
|
||||
endif
|
||||
elseif (state==STPNA_NUMPONT)
|
||||
if (thisclass:isNumberchar(this:item))
|
||||
state:=STPNA_PONTNUM
|
||||
else
|
||||
// Sz m ‚s pont ut n nem sz m, az item-et vissza kell
|
||||
// tenni, ‚s egy sz mt”mb tokent adni.
|
||||
this:unrds() // Ez kell!!!
|
||||
exit
|
||||
endif
|
||||
elseif (state==STPNA_PONT)
|
||||
if (thisclass:isNumberchar(this:item))
|
||||
state:=STPNA_PONTNUM
|
||||
else
|
||||
// Pont ut n nem sz m, az item-et vissza kell tenni, ‚s
|
||||
// egy pont tokent adni.
|
||||
tkId:=TKID_CHAR
|
||||
exit
|
||||
endif
|
||||
elseif (state==STPNA_PONTNUM)
|
||||
if (thisclass:isNumberchar(this:item))
|
||||
// Maradunk.
|
||||
else
|
||||
exit
|
||||
endif
|
||||
else
|
||||
? "NPARSER:parseNumberArray(): Ismeretlen llapot: ",state
|
||||
errorlevel(1)
|
||||
quit
|
||||
endif
|
||||
this:rds()
|
||||
end while
|
||||
this:unrds()
|
||||
return this:makeToken(tkId,this:strParserBuffer())
|
||||
|
||||
//*******************************************************************
|
||||
|
||||
@@ -1,27 +0,0 @@
|
||||
//
|
||||
// $Id$
|
||||
//
|
||||
|
||||
class OBJECT
|
||||
|
||||
nmethod oinit{ob_oinit}()
|
||||
// Inicializ l egy (tetsz“leges) objektumot.
|
||||
|
||||
nmethod getClass{ob_getClass}()
|
||||
// Megadja az objektum oszt ly t.
|
||||
|
||||
nmethod isClass{ob_isClass}()
|
||||
// Az objektum oszt ly-e vagy sem.
|
||||
|
||||
nmethod getAttrib{ob_getAttrib}(attribId)
|
||||
// Ha az attribId string, akkor az adott nev– attribŁtum
|
||||
// ‚rt‚k‚t adja. Ha sz m, akkor az adott index– attributum
|
||||
// ‚rt‚k‚t adja.
|
||||
|
||||
nmethod setAttrib{ob_setAttrib}(attribId,value)
|
||||
// Ha az attribId string, akkor az adott nev– attribŁtum
|
||||
// ‚rt‚k‚t llˇtja be. Ha sz m, akkor az adott index–
|
||||
// attributum ‚rt‚k‚t llˇtja be.
|
||||
// Mindig a 'value'-val t‚r vissza.
|
||||
|
||||
|
||||
@@ -1,314 +0,0 @@
|
||||
// OBJECT.och oszt ly implement ci¢.
|
||||
// Gener lva: 1999.10.10, 14:31:52, OBJCCC v2.2.03
|
||||
// Meta oszt ly defin¡ci¢: Van
|
||||
|
||||
#ifndef CA_NIL_N
|
||||
#define CA_NIL_N 2
|
||||
#define CM_NIL_N 3
|
||||
#endif // CA_NIL_N
|
||||
|
||||
|
||||
#ifndef _CA_CM_ONLY_
|
||||
#ifndef _OBJECT_OCH_
|
||||
#define _OBJECT_OCH_
|
||||
|
||||
|
||||
|
||||
// Specifik lva: oinit()
|
||||
// Specifik lva: getclass()
|
||||
// Specifik lva: isclass()
|
||||
// Specifik lva: getattrib(attribId)
|
||||
// Specifik lva: setattrib(attribId,value)
|
||||
|
||||
#xtranslate OBJECT.<obj>:oinit => (OBJGEN.(<obj>):(4))
|
||||
#xtranslate OBJECT.<obj>:getclass => (OBJGEN.(<obj>):(5))
|
||||
#xtranslate OBJECT.<obj>:isclass => (OBJGEN.(<obj>):(6))
|
||||
#xtranslate OBJECT.<obj>:getattrib => (OBJGEN.(<obj>):(7))
|
||||
#xtranslate OBJECT.<obj>:setattrib => (OBJGEN.(<obj>):(8))
|
||||
|
||||
#endif // _OBJECT_OCH_
|
||||
#endif // _CA_CM_ONLY_
|
||||
|
||||
#ifndef CA_OBJECT_N
|
||||
#define CA_OBJECT_N 2
|
||||
#define CM_OBJECT_N 8
|
||||
#endif // CA_OBJECT_N
|
||||
|
||||
#ifndef _CA_CM_ONLY_
|
||||
#ifndef _BEHAVIOR_OCH_
|
||||
#define _BEHAVIOR_OCH_
|
||||
|
||||
**********************************************************************
|
||||
#xtranslate C.OBJECT:<m> => (BEHAVIOR.clOBJECT():<m>)
|
||||
#xtranslate C.OBJECT:self() => (clOBJECT())
|
||||
|
||||
|
||||
|
||||
|
||||
#xtranslate BEHAVIOR.<obj>:oinit => (OBJGEN.(<obj>):(4))
|
||||
#xtranslate BEHAVIOR.<obj>:getclass => (OBJGEN.(<obj>):(5))
|
||||
#xtranslate BEHAVIOR.<obj>:isclass => (OBJGEN.(<obj>):(6))
|
||||
#xtranslate BEHAVIOR.<obj>:getattrib => (OBJGEN.(<obj>):(7))
|
||||
#xtranslate BEHAVIOR.<obj>:setattrib => (OBJGEN.(<obj>):(8))
|
||||
|
||||
|
||||
#xtranslate BEHAVIOR.<obj>:parent => <obj>\[CA_OBJECT_N+1\]
|
||||
#xtranslate BEHAVIOR.<obj>:name => <obj>\[CA_OBJECT_N+2\]
|
||||
#xtranslate BEHAVIOR.<obj>:objsize => <obj>\[CA_OBJECT_N+3\]
|
||||
#xtranslate BEHAVIOR.<obj>:attribs => <obj>\[CA_OBJECT_N+4\]
|
||||
#xtranslate BEHAVIOR.<obj>:methods => <obj>\[CA_OBJECT_N+5\]
|
||||
#xtranslate BEHAVIOR.<obj>:classid => <obj>\[CA_OBJECT_N+6\]
|
||||
#xtranslate BEHAVIOR.<obj>:parentclassids => <obj>\[CA_OBJECT_N+7\]
|
||||
#xtranslate BEHAVIOR.<obj>:amblock => <obj>\[CA_OBJECT_N+8\]
|
||||
#xtranslate BEHAVIOR.<obj>:methodsblock => <obj>\[CA_OBJECT_N+9\]
|
||||
|
||||
// Specifik lva: onew()
|
||||
// Specifik lva: ocreate()
|
||||
// Specifik lva: rawoinit(parent,name,nAttribs,nMethods,amBlock,methodsBlock)
|
||||
// ™r”k”lve: oinit(parent,name,nAttribs,nMethods,amBlock,methodsBlock)
|
||||
// Specifik lva: oinitclass()
|
||||
// Specifik lva: getmethodsimplement()
|
||||
// ™r”k”lve: isclass()
|
||||
// Specifik lva: attribidx(name)
|
||||
// Specifik lva: needclassid()
|
||||
// Specifik lva: isinheritfrom(parentClass)
|
||||
|
||||
#xtranslate BEHAVIOR.<obj>:onew => (OBJGEN.(<obj>):(CM_OBJECT_N+1))
|
||||
#xtranslate BEHAVIOR.<obj>:ocreate => (OBJGEN.(<obj>):(CM_OBJECT_N+2))
|
||||
#xtranslate BEHAVIOR.<obj>:rawoinit => (OBJGEN.(<obj>):(CM_OBJECT_N+3))
|
||||
// ™r”k”lve: oinit(parent,name,nAttribs,nMethods,amBlock,methodsBlock)
|
||||
#xtranslate BEHAVIOR.<obj>:oinitclass => (OBJGEN.(<obj>):(CM_OBJECT_N+4))
|
||||
#xtranslate BEHAVIOR.<obj>:getmethodsimplement => (OBJGEN.(<obj>):(CM_OBJECT_N+5))
|
||||
// ™r”k”lve: isclass()
|
||||
#xtranslate BEHAVIOR.<obj>:attribidx => (OBJGEN.(<obj>):(CM_OBJECT_N+6))
|
||||
#xtranslate BEHAVIOR.<obj>:needclassid => (OBJGEN.(<obj>):(CM_OBJECT_N+7))
|
||||
#xtranslate BEHAVIOR.<obj>:isinheritfrom => (OBJGEN.(<obj>):(CM_OBJECT_N+8))
|
||||
|
||||
#endif // _BEHAVIOR_OCH_
|
||||
#endif // _CA_CM_ONLY_
|
||||
|
||||
#ifndef CA_BEHAVIOR_N
|
||||
#define CA_BEHAVIOR_N CA_OBJECT_N+10
|
||||
#define CM_BEHAVIOR_N CM_OBJECT_N+8
|
||||
#xtranslate BEHAVIOR.<obj>:objmethodsimplement => <obj>\[CA_OBJECT_N+10\]
|
||||
#endif // CA_BEHAVIOR_N
|
||||
|
||||
|
||||
**********************************************************************
|
||||
#ifdef _OBJECT_PRG_
|
||||
#ifndef _OBJECT_PRG_OCH_
|
||||
#define _OBJECT_PRG_OCH_
|
||||
|
||||
|
||||
**********************************************************************
|
||||
#xtranslate othis:<m> => OBJECT.(othis):<m>
|
||||
#xtranslate thisclass:<m> => BEHAVIOR.(this:getClass()):<m>
|
||||
#define CTHIS OBJECT
|
||||
|
||||
|
||||
**********************************************************************
|
||||
#xtranslate this:<m> => OBJECT.(this):<m>
|
||||
|
||||
#xcommand implement oinit() => static function ob_oinit(this)
|
||||
#xcommand implement getclass() => static function ob_getClass(this)
|
||||
#xcommand implement isclass() => static function ob_isClass(this)
|
||||
#xcommand implement getattrib(attribId) => ;
|
||||
static function ob_getAttrib(this,attribId)
|
||||
#xcommand implement setattrib(attribId,value) => ;
|
||||
static function ob_setAttrib(this,attribId,value)
|
||||
|
||||
#ifdef _IMPLEMENT_EXPORT_
|
||||
#xcommand implement export oinit() => function ob_oinit(this)
|
||||
#xcommand implement export getclass() => function ob_getClass(this)
|
||||
#xcommand implement export isclass() => function ob_isClass(this)
|
||||
#xcommand implement export getattrib(attribId) => ;
|
||||
function ob_getAttrib(this,attribId)
|
||||
#xcommand implement export setattrib(attribId,value) => ;
|
||||
function ob_setAttrib(this,attribId,value)
|
||||
#endif // _IMPLEMENT_EXPORT_
|
||||
|
||||
|
||||
**********************************************************************
|
||||
static function setCMethods(pOsztaly)
|
||||
// Egy t”mb”t felt”lt az oszt ly m–veleti blokkjaival.
|
||||
pOsztaly[(4)]:={|this| ob_oinit(this)}
|
||||
pOsztaly[(5)]:={|this| ob_getClass(this)}
|
||||
pOsztaly[(6)]:={|this| ob_isClass(this)}
|
||||
pOsztaly[(7)]:={|this,attribId| ob_getAttrib(this,attribId)}
|
||||
pOsztaly[(8)]:={|this,attribId,value| ob_setAttrib(this,attribId,value)}
|
||||
return pOsztaly
|
||||
|
||||
**********************************************************************
|
||||
static function setCams(ta,tm)
|
||||
// Egy t”mb”t felt”lt az oszt ly ltal def. objektumok attrib£tumaival ‚s m–veleteivel.
|
||||
|
||||
tm[(4)-CM_NIL_N] := {(4),'oinit','',nil}
|
||||
tm[(5)-CM_NIL_N] := {(5),'getclass','',nil}
|
||||
tm[(6)-CM_NIL_N] := {(6),'isclass','',nil}
|
||||
tm[(7)-CM_NIL_N] := {(7),'getattrib','attribId',nil}
|
||||
tm[(8)-CM_NIL_N] := {(8),'setattrib','attribId,value',nil}
|
||||
return nil
|
||||
|
||||
#ifndef _NO_CLOBJECT_
|
||||
#ifdef _STRICT_PARENT_
|
||||
#ifdef _CA_CM_ONLY_
|
||||
#include "meta.och"
|
||||
#else // _CA_CM_ONLY_
|
||||
#define _CA_CM_ONLY_
|
||||
#include "meta.och"
|
||||
#undef _CA_CM_ONLY_
|
||||
#endif // _CA_CM_ONLY_
|
||||
#else
|
||||
#include "meta.och"
|
||||
#endif // _STRICT_PARENT_
|
||||
**********************************************************************
|
||||
function clOBJECT()
|
||||
// El“szedi az oszt lyt. (class)
|
||||
static osztaly
|
||||
if (osztaly==nil)
|
||||
osztaly:=META.clBEHAVIOR():onew(;
|
||||
nil,;
|
||||
"OBJECT",;
|
||||
CA_OBJECT_N,;
|
||||
CM_OBJECT_N,;
|
||||
{|ta,tm|setCams(ta,tm)},;
|
||||
{|t|setCMethods(t)})
|
||||
endif
|
||||
return osztaly
|
||||
#endif // _NO_CLOBJECT_
|
||||
|
||||
#ifndef _NO_BEHAVIOR_
|
||||
|
||||
**********************************************************************
|
||||
#xtranslate class:<m> => BEHAVIOR.(class):<m>
|
||||
|
||||
#xcommand cimplement onew() => static function be_onew(class)
|
||||
#xcommand cimplement ocreate() => static function be_ocreate(class)
|
||||
#xcommand cimplement rawoinit(parent,name,nAttribs,nMethods,amBlock,methodsBlock) => ;
|
||||
static function be_rawoinit(class,parent,name,nAttribs,nMethods,amBlock,methodsBlock)
|
||||
#xcommand cimplement oinit(parent,name,nAttribs,nMethods,amBlock,methodsBlock) => ;
|
||||
static function be_oinit(class,parent,name,nAttribs,nMethods,amBlock,methodsBlock)
|
||||
#xcommand cimplement oinitclass() => static function retobj(class)
|
||||
#xcommand cimplement getmethodsimplement() => ;
|
||||
static function be_getMethodsImplement(class)
|
||||
#xcommand cimplement isclass() => static function be_isClass(class)
|
||||
#xcommand cimplement attribidx(name) => ;
|
||||
static function be_attribIdx(class,name)
|
||||
#xcommand cimplement needclassid() => static function be_needClassId(class)
|
||||
#xcommand cimplement isinheritfrom(parentClass) => ;
|
||||
static function be_isInheritFrom(class,parentClass)
|
||||
|
||||
#ifdef _IMPLEMENT_EXPORT_
|
||||
#xcommand cimplement export onew() => function be_onew(class)
|
||||
#xcommand cimplement export ocreate() => function be_ocreate(class)
|
||||
#xcommand cimplement export rawoinit(parent,name,nAttribs,nMethods,amBlock,methodsBlock) => ;
|
||||
function be_rawoinit(class,parent,name,nAttribs,nMethods,amBlock,methodsBlock)
|
||||
#xcommand cimplement export oinit(parent,name,nAttribs,nMethods,amBlock,methodsBlock) => ;
|
||||
function be_oinit(class,parent,name,nAttribs,nMethods,amBlock,methodsBlock)
|
||||
#xcommand cimplement export oinitclass() => function retobj(class)
|
||||
#xcommand cimplement export getmethodsimplement() => ;
|
||||
function be_getMethodsImplement(class)
|
||||
#xcommand cimplement export isclass() => function be_isClass(class)
|
||||
#xcommand cimplement export attribidx(name) => ;
|
||||
function be_attribIdx(class,name)
|
||||
#xcommand cimplement export needclassid() => function be_needClassId(class)
|
||||
#xcommand cimplement export isinheritfrom(parentClass) => ;
|
||||
function be_isInheritFrom(class,parentClass)
|
||||
#endif // _IMPLEMENT_EXPORT_
|
||||
|
||||
#xtranslate superclass:oinit => (OBJGENM.(eval(BEHAVIOR.clOBJECT():objmethodsimplement)).(class):(4))
|
||||
#xtranslate superclass:getclass => (OBJGENM.(eval(BEHAVIOR.clOBJECT():objmethodsimplement)).(class):(5))
|
||||
#xtranslate superclass:isclass => (OBJGENM.(eval(BEHAVIOR.clOBJECT():objmethodsimplement)).(class):(6))
|
||||
#xtranslate superclass:getattrib => (OBJGENM.(eval(BEHAVIOR.clOBJECT():objmethodsimplement)).(class):(7))
|
||||
#xtranslate superclass:setattrib => (OBJGENM.(eval(BEHAVIOR.clOBJECT():objmethodsimplement)).(class):(8))
|
||||
|
||||
**********************************************************************
|
||||
static function setMCMethods(pOsztaly)
|
||||
// Egy t”mb”t felt”lt a metaoszt ly m–veleti blokkjaival.
|
||||
pOsztaly[(CM_OBJECT_N+1)]:={|class| be_onew(class)}
|
||||
pOsztaly[(CM_OBJECT_N+2)]:={|class| be_ocreate(class)}
|
||||
pOsztaly[(CM_OBJECT_N+3)]:={|class,parent,name,nAttribs,nMethods,amBlock,methodsBlock| be_rawoinit(class,parent,name,nAttribs,nMethods,amBlock,methodsBlock)}
|
||||
pOsztaly[(4)]:={|class,parent,name,nAttribs,nMethods,amBlock,methodsBlock| be_oinit(class,parent,name,nAttribs,nMethods,amBlock,methodsBlock)}
|
||||
pOsztaly[(CM_OBJECT_N+4)]:={|class| retobj(class)}
|
||||
pOsztaly[(CM_OBJECT_N+5)]:={|class| be_getMethodsImplement(class)}
|
||||
pOsztaly[(6)]:={|class| be_isClass(class)}
|
||||
pOsztaly[(CM_OBJECT_N+6)]:={|class,name| be_attribIdx(class,name)}
|
||||
pOsztaly[(CM_OBJECT_N+7)]:={|class| be_needClassId(class)}
|
||||
pOsztaly[(CM_OBJECT_N+8)]:={|class,parentClass| be_isInheritFrom(class,parentClass)}
|
||||
return pOsztaly
|
||||
|
||||
**********************************************************************
|
||||
static function setMCams(ta,tm)
|
||||
// Egy t”mb”t felt”lt a metaoszt ly ltal def. objektumok attrib£tumaival ‚s m–veleteivel.
|
||||
ta[CA_OBJECT_N+1-CA_NIL_N] := {CA_OBJECT_N+1,'parent',nil}
|
||||
ta[CA_OBJECT_N+2-CA_NIL_N] := {CA_OBJECT_N+2,'name',nil}
|
||||
ta[CA_OBJECT_N+3-CA_NIL_N] := {CA_OBJECT_N+3,'objsize',nil}
|
||||
ta[CA_OBJECT_N+4-CA_NIL_N] := {CA_OBJECT_N+4,'attribs',nil}
|
||||
ta[CA_OBJECT_N+5-CA_NIL_N] := {CA_OBJECT_N+5,'methods',nil}
|
||||
ta[CA_OBJECT_N+6-CA_NIL_N] := {CA_OBJECT_N+6,'classid',nil}
|
||||
ta[CA_OBJECT_N+7-CA_NIL_N] := {CA_OBJECT_N+7,'parentclassids',nil}
|
||||
ta[CA_OBJECT_N+8-CA_NIL_N] := {CA_OBJECT_N+8,'amblock',nil}
|
||||
ta[CA_OBJECT_N+9-CA_NIL_N] := {CA_OBJECT_N+9,'methodsblock',nil}
|
||||
ta[CA_OBJECT_N+10-CA_NIL_N] := {CA_OBJECT_N+10,'objmethodsimplement',nil}
|
||||
|
||||
tm[(CM_OBJECT_N+1)-CM_NIL_N] := {(CM_OBJECT_N+1),'onew','',nil}
|
||||
tm[(CM_OBJECT_N+2)-CM_NIL_N] := {(CM_OBJECT_N+2),'ocreate','',nil}
|
||||
tm[(CM_OBJECT_N+3)-CM_NIL_N] := {(CM_OBJECT_N+3),'rawoinit','parent,name,nAttribs,nMethods,amBlock,methodsBlock',nil}
|
||||
tm[(4)-CM_NIL_N] := {(4),'oinit','parent,name,nAttribs,nMethods,amBlock,methodsBlock',nil}
|
||||
tm[(CM_OBJECT_N+4)-CM_NIL_N] := {(CM_OBJECT_N+4),'oinitclass','',nil}
|
||||
tm[(CM_OBJECT_N+5)-CM_NIL_N] := {(CM_OBJECT_N+5),'getmethodsimplement','',nil}
|
||||
tm[(6)-CM_NIL_N] := {(6),'isclass','',nil}
|
||||
tm[(CM_OBJECT_N+6)-CM_NIL_N] := {(CM_OBJECT_N+6),'attribidx','name',nil}
|
||||
tm[(CM_OBJECT_N+7)-CM_NIL_N] := {(CM_OBJECT_N+7),'needclassid','',nil}
|
||||
tm[(CM_OBJECT_N+8)-CM_NIL_N] := {(CM_OBJECT_N+8),'isinheritfrom','parentClass',nil}
|
||||
return nil
|
||||
|
||||
**********************************************************************
|
||||
#ifndef _NO_MCBEHAVIOR_
|
||||
#ifdef _STRICT_PARENT_
|
||||
#ifdef _CA_CM_ONLY_
|
||||
#include "meta.och" // "metaclas.och"
|
||||
#else // _CA_CM_ONLY_
|
||||
#define _CA_CM_ONLY_
|
||||
#include "meta.och" // "metaclas.och"
|
||||
#undef _CA_CM_ONLY_
|
||||
#endif // _CA_CM_ONLY_
|
||||
#else
|
||||
#include "meta.och" // "metaclas.och"
|
||||
#endif // _STRICT_PARENT_
|
||||
function mcBEHAVIOR()
|
||||
// El“szedi az oszt ly metaoszt ly t. (metaclass)
|
||||
static metaOsztaly
|
||||
if (metaOsztaly==nil)
|
||||
metaOsztaly:=META.clMETA():onew(;
|
||||
clOBJECT(),;
|
||||
"BEHAVIOR",;
|
||||
CA_BEHAVIOR_N,;
|
||||
CM_BEHAVIOR_N,;
|
||||
{|ta,tm|setMCams(ta,tm)},;
|
||||
{|t|setMCMethods(t)})
|
||||
endif
|
||||
return metaOsztaly
|
||||
#endif // _NO_MCBEHAVIOR_
|
||||
|
||||
#endif // _NO_BEHAVIOR_
|
||||
#ifdef _IMPLEMENT_ONEW_
|
||||
**********************************************************************
|
||||
cimplement onew()
|
||||
local o:=class:ocreate()
|
||||
|
||||
OBJECT.o:oinit()
|
||||
return o
|
||||
#endif // _IMPLEMENT_ONEW_
|
||||
|
||||
**********************************************************************
|
||||
#ifdef _IMPLEMENT_OINIT_
|
||||
implement oinit()
|
||||
super:oinit()
|
||||
return this
|
||||
#endif // _IMPLEMENT_OINIT_
|
||||
|
||||
**********************************************************************
|
||||
**********************************************************************
|
||||
#endif // _OBJECT_PRG_OCH_
|
||||
#endif // _OBJECT_PRG_
|
||||
@@ -1,618 +0,0 @@
|
||||
/*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
**********************************************************************
|
||||
// Ezek az a priori oszt饊yok. Amikor objektumhoz nyρunk, akkor
|
||||
// ezek automatikusan felt鎇t𡞫nek.
|
||||
static Object
|
||||
static Behavior
|
||||
static Meta
|
||||
static MetaClass
|
||||
**********************************************************************
|
||||
|
||||
#include "error.ch"
|
||||
|
||||
#include "objgen.ch"
|
||||
|
||||
#include "object.och"
|
||||
#include "behavior.och"
|
||||
#include "meta.och"
|
||||
#include "metaclas.och"
|
||||
|
||||
#define _OBJECT_PRG_
|
||||
#define setCMethods(pOsztaly) ciOBJECT(pOsztaly)
|
||||
#define setCams(ta,tm) amOBJECT(ta,tm)
|
||||
#define _NO_BEHAVIOR_
|
||||
#define _NO_CLOBJECT_
|
||||
#include "object.och"
|
||||
#undef _OBJECT_PRG_
|
||||
#undef setCMethods
|
||||
#undef setCams
|
||||
#undef _NO_CLOBJECT_
|
||||
#undef _NO_BEHAVIOR_
|
||||
#undef CTHIS
|
||||
|
||||
#define _BEHAVIOR_PRG_
|
||||
#define setCMethods(pOsztaly) ciBEHAVIOR(pOsztaly)
|
||||
#define setCams(ta,tm) amBEHAVIOR(ta,tm)
|
||||
#define _NO_META_
|
||||
#define _NO_CLBEHAVIOR_
|
||||
#include "behavior.och"
|
||||
#undef _BEHAVIOR_PRG_
|
||||
#undef setCMethods
|
||||
#undef setCams
|
||||
#undef _NO_CLBEHAVIOR_
|
||||
#undef _NO_META_
|
||||
#undef CTHIS
|
||||
|
||||
|
||||
#define _META_PRG_
|
||||
#define setCMethods(pOsztaly) ciMETA(pOsztaly)
|
||||
#define setCams(ta,tm) amMETA(ta,tm)
|
||||
#define _NO_METACLAS_
|
||||
#define _NO_CLMETA_
|
||||
#include "meta.och"
|
||||
#undef _META_PRG_
|
||||
#undef setCMethods
|
||||
#undef setCams
|
||||
#undef _NO_CLMETA_
|
||||
#undef _NO_METACLAS_
|
||||
#undef CTHIS
|
||||
|
||||
|
||||
#include "metaclas.och"
|
||||
|
||||
// K𤴆elez婫n ugyanaz.
|
||||
// #define ciMETACLAS(pOsztaly) ciMETA(pOsztaly)
|
||||
|
||||
**********************************************************************
|
||||
* *
|
||||
* Az OBJECT oszt饊y *
|
||||
* *
|
||||
**********************************************************************
|
||||
|
||||
**********************************************************************
|
||||
function clOBJECT()
|
||||
if (Object==nil)
|
||||
primitiveAllAPClassCreate()
|
||||
endif
|
||||
return Object
|
||||
|
||||
**********************************************************************
|
||||
// function clOBJECTCLASS()
|
||||
// Az Object oszt饊y meta oszt饊y慯 adja.
|
||||
// Ez m<> megvan, a Behavior az.
|
||||
// return clBEHAVIOR()
|
||||
|
||||
**********************************************************************
|
||||
static function ob_oinit(this)
|
||||
// Ez egy virtu饊is m𩥈elet, az implement蠏i▏a <20>es.
|
||||
return this
|
||||
|
||||
**********************************************************************
|
||||
static function ob_getclass(this)
|
||||
return eval(this[1][1])
|
||||
|
||||
**********************************************************************
|
||||
static function ob_isClass(this)
|
||||
return .f.
|
||||
|
||||
**********************************************************************
|
||||
static function ob_getAttrib(this,attribId)
|
||||
if (valtype(attribId)=="C")
|
||||
attribId:=BEHAVIOR.(OBJECT.this:getClass()):attribIdx(attribId)
|
||||
if (attribId==nil)
|
||||
errAttrib("getAttrib",{BEHAVIOR.(OBJECT.this:getClass()):name,attribId})
|
||||
endif
|
||||
endif
|
||||
return this[attribId]
|
||||
|
||||
**********************************************************************
|
||||
static function ob_setAttrib(this,attribId,value)
|
||||
if (valtype(attribId)=="C")
|
||||
attribId:=BEHAVIOR.(OBJECT.this:getClass()):attribIdx(attribId)
|
||||
if (attribId==nil)
|
||||
errAttrib("getAttrib",{BEHAVIOR.(OBJECT.this:getClass()):name,attribId})
|
||||
endif
|
||||
endif
|
||||
return this[attribId]:=value
|
||||
|
||||
|
||||
**********************************************************************
|
||||
|
||||
|
||||
**********************************************************************
|
||||
* *
|
||||
* A BEHAVIOR oszt饊y *
|
||||
* *
|
||||
**********************************************************************
|
||||
|
||||
**********************************************************************
|
||||
function clBEHAVIOR()
|
||||
// Az oszt饊y el𦽳zed<65>e. (class)
|
||||
if (Behavior==nil)
|
||||
primitiveAllAPClassCreate()
|
||||
endif
|
||||
return Behavior
|
||||
|
||||
**********************************************************************
|
||||
// function clBEHAVIORCLASS()
|
||||
// A Behavior oszt饊y meta oszt饊y慯 adja.
|
||||
// Ez m<> megvan, a Meta az.
|
||||
// return clMETA()
|
||||
|
||||
**********************************************************************
|
||||
static function be_onew(this)
|
||||
// K<>z﹀ egy objektumot, <20> inicializ饊ja.
|
||||
// Az objektum a 'this' oszt饊yba fog tartozni.
|
||||
|
||||
local obj
|
||||
|
||||
obj:=BEHAVIOR.this:ocreate()
|
||||
OBJECT.obj:oinit()
|
||||
return obj
|
||||
|
||||
**********************************************************************
|
||||
static function be_ocreate(this)
|
||||
// K<>z﹀ egy objektumot, de nem inicializ饊ja.
|
||||
// Az objektum a 'this' oszt饊yba fog tartozni.
|
||||
|
||||
local obj
|
||||
obj:=primitiveCreateObj(this)
|
||||
return obj
|
||||
|
||||
**********************************************************************
|
||||
static function be_rawoinit(this,parent,name,nAttribs,nMethods,amBlock,methodsBlock)
|
||||
// Inicializ饊ja a 'this' oszt饊yt.
|
||||
|
||||
local w
|
||||
|
||||
ob_oinit(this)
|
||||
primitiveInitClass(this,parent,name,nAttribs,nMethods,amBlock,methodsBlock)
|
||||
if (parent!=nil)
|
||||
if (BEHAVIOR.this:classId==nil)
|
||||
BEHAVIOR.this:parentClassIds:=BEHAVIOR.parent:parentClassIds
|
||||
else
|
||||
if (nil!=(w:=BEHAVIOR.parent:parentClassIds))
|
||||
BEHAVIOR.this:parentClassIds:=w:=aclone(w)
|
||||
else
|
||||
BEHAVIOR.this:parentClassIds:=w:={}
|
||||
endif
|
||||
if (len(w)<BEHAVIOR.this:classId)
|
||||
asize(w,BEHAVIOR.this:classId)
|
||||
endif
|
||||
w[BEHAVIOR.this:classId]:=BEHAVIOR.this:classId
|
||||
endif
|
||||
endif
|
||||
return this
|
||||
|
||||
**********************************************************************
|
||||
static function be_oinit(this,parent,name,nAttribs,nMethods,amBlock,methodsBlock)
|
||||
// Inicializ饊ja a 'this' oszt饊yt.
|
||||
// Ellen𩂈zi, hogy az oszt饊y metaoszt饊y慙ak van-e m<> eleme.
|
||||
// Ezt az ellen𩂈z<F0A98288>t a metaoszt饊yokn饊 ki kell kapcsolni.
|
||||
|
||||
local classOf
|
||||
|
||||
classOf:=this:getClass()
|
||||
|
||||
if (classOf!=nil .and. META.classOf:ofClass!=nil)
|
||||
alert("Behavior:oinit: '"+name+"';"+;
|
||||
"Ennek a metaoszt饊ynak m<> van l<>rehozva eleme:;"+;
|
||||
"'"+META.classOf:name+"'")
|
||||
META.classOf:ofClass:=nil
|
||||
endif
|
||||
|
||||
BEHAVIOR.this:rawoinit(parent,name,nAttribs,nMethods,amBlock,methodsBlock)
|
||||
|
||||
META.classOf:ofClass:={||this}
|
||||
|
||||
return this
|
||||
|
||||
**********************************************************************
|
||||
static function be_getmethodsimplement(this)
|
||||
return eval(C.BEHAVIOR:objmethodsimplement)
|
||||
|
||||
**********************************************************************
|
||||
static function be_isClass(this)
|
||||
return .t.
|
||||
|
||||
**********************************************************************
|
||||
static function be_attribIdx(this,name)
|
||||
local w
|
||||
name:=lower(name)
|
||||
w:=ascan(BEHAVIOR.this:attribs,{|x| x[2]==name})
|
||||
return if (w==0,nil,BEHAVIOR.this:attribs[w][1])
|
||||
|
||||
**********************************************************************
|
||||
static function primitiveCreateObj(aClass)
|
||||
// K<>z﹀ egy objektumot, ami az aClass oszt饊yba fog tartozni.
|
||||
// Akkor is m䭯㺱nie kell, ha az aClass parent-je nincs be饊l﹀va.
|
||||
|
||||
local obj
|
||||
obj:=array(BEHAVIOR.aClass:objSize)
|
||||
obj[1]:=eval(BEHAVIOR.aClass:objMethodsImplement)
|
||||
return obj
|
||||
|
||||
|
||||
**********************************************************************
|
||||
static function evalAmBlocks(aClass)
|
||||
local m,c,i
|
||||
// local t
|
||||
|
||||
// t:=eval(BEHAVIOR.aClass:objMethodsImplement)
|
||||
m:={}
|
||||
c:=aClass
|
||||
while(c!=nil)
|
||||
if (nil!=BEHAVIOR.c:amBlock)
|
||||
aadd(m,BEHAVIOR.c:amBlock)
|
||||
endif
|
||||
c:=BEHAVIOR.c:parent
|
||||
end while
|
||||
|
||||
for i:=len(m) to 1 step -1
|
||||
eval(m[i],BEHAVIOR.aClass:attribs,BEHAVIOR.aClass:methods)
|
||||
end for
|
||||
return aClass
|
||||
|
||||
**********************************************************************
|
||||
static function evalMethodsBlocks(aClass)
|
||||
local t,m,c,i
|
||||
|
||||
t:=eval(BEHAVIOR.aClass:objMethodsImplement)
|
||||
m:={}
|
||||
c:=aClass
|
||||
while(c!=nil)
|
||||
if (nil!=BEHAVIOR.c:methodsBlock)
|
||||
aadd(m,BEHAVIOR.c:methodsBlock)
|
||||
endif
|
||||
c:=BEHAVIOR.c:parent
|
||||
end while
|
||||
|
||||
for i:=len(m) to 1 step -1
|
||||
eval(m[i],t)
|
||||
end for
|
||||
return aClass
|
||||
|
||||
**********************************************************************
|
||||
static function primitiveInitClass(aClass,parent,name,nAttribs,nMethods,;
|
||||
amBlock,methodsBlock)
|
||||
// Inicializ饊ja az aClass oszt饊yt.
|
||||
// Akkor is m䭯㺱nie kell, ha az aClass parent-je nincs be饊l﹀va, <20>
|
||||
// a parent nil.
|
||||
|
||||
local t
|
||||
BEHAVIOR.aClass:parent :=parent
|
||||
BEHAVIOR.aClass:name :=name
|
||||
BEHAVIOR.aClass:objSize :=nAttribs
|
||||
BEHAVIOR.aClass:attribs :=array(nAttribs-CA_NIL_N)
|
||||
BEHAVIOR.aClass:methods :=array(nMethods-CM_NIL_N)
|
||||
BEHAVIOR.aClass:amBlock := amBlock
|
||||
BEHAVIOR.aClass:methodsBlock := methodsBlock
|
||||
|
||||
t:=array(nMethods)
|
||||
t[1]:={||aClass}
|
||||
t[3]:=ob_getObjId()
|
||||
BEHAVIOR.aClass:objMethodsImplement := {||t}
|
||||
|
||||
// V<>rehajtjuk az 𤳙szes 𦽳re, meg mag<61>a is a methodsBlock-ot.
|
||||
evalMethodsBlocks(aClass)
|
||||
// V<>rehajtjuk az 𤳙szes 𦽳re, meg mag<61>a is az amBlock-ot.
|
||||
evalAmBlocks(aClass)
|
||||
return aClass
|
||||
|
||||
**********************************************************************
|
||||
static function primitiveMetaClassCreate()
|
||||
// Elk<6C>z﹀i a MetaClass oszt饊yt. Ennek primit」nek kell lenni, mert
|
||||
// semmilyen objektum m𩥈elet nem tud futni, am︹ nincs MetaClass.
|
||||
|
||||
local tMetaClass
|
||||
|
||||
if (CA_METACLAS_N!=CA_META_N)
|
||||
alert("CA_METACLAS_N!=CA_META_N;"+;
|
||||
"A MetaClass-t nem lehet elk<6C>z﹀eni.")
|
||||
quit
|
||||
endif
|
||||
|
||||
// A MetaClass <20> a Meta m𩥈eleti t<>l䰇慙ak ugyanannak kell lennie.
|
||||
if (CM_METACLAS_N!=CM_META_N)
|
||||
alert("CM_METACLAS_N!=CM_META_N;"+;
|
||||
"A MetaClass-t nem lehet elk<6C>z﹀eni.")
|
||||
quit
|
||||
endif
|
||||
|
||||
MetaClass:=array(CA_METACLAS_N)
|
||||
BEHAVIOR.MetaClass:parent :=nil // Nem tudjuk kit鎇teni, mert ez a Meta
|
||||
// lesz.
|
||||
BEHAVIOR.MetaClass:name :="METACLAS"
|
||||
BEHAVIOR.MetaClass:objSize :=CA_METACLAS_N
|
||||
BEHAVIOR.MetaClass:attribs :=array(CA_METACLAS_N)
|
||||
BEHAVIOR.MetaClass:methods :=array(CM_METACLAS_N)
|
||||
BEHAVIOR.MetaClass:amBlock :={|ta,tm| nil/*amMETACLAS(ta,tm)*/}
|
||||
BEHAVIOR.MetaClass:methodsBlock:={|t|t/*ciMETACLAS(t)*/}
|
||||
|
||||
tMetaClass:=array(CM_META_N)
|
||||
tMetaClass[1]:={||MetaClass}
|
||||
BEHAVIOR.MetaClass:objMethodsImplement := {||tMetaClass}
|
||||
|
||||
// Ezzel a MetaClass k<>zen is van, azzal a kit<69>ellel, hogy
|
||||
// nincs be饊l﹀va a parent-je, <20> nem futottak az
|
||||
// amBlock-ok <20> a methodsBlock-ok.
|
||||
|
||||
return MetaClass
|
||||
|
||||
|
||||
**********************************************************************
|
||||
static function primitiveAllAPClassCreate()
|
||||
// Elk<6C>z﹀i mind e n<>y oszt饊yt.
|
||||
|
||||
primitiveMetaClassCreate()
|
||||
|
||||
Meta:=primitiveCreateObj(MetaClass)
|
||||
primitiveInitClass(Meta,nil,"META",CA_META_N,CM_META_N,nil,nil)
|
||||
|
||||
Behavior:=primitiveCreateObj(Meta)
|
||||
primitiveInitClass(Behavior,nil,"BEHAVIOR",CA_BEHAVIOR_N,CM_BEHAVIOR_N,nil,nil)
|
||||
|
||||
Object:=primitiveCreateObj(Behavior)
|
||||
primitiveInitClass(Object,nil,"OBJECT",CA_OBJECT_N,CM_OBJECT_N,nil,nil)
|
||||
|
||||
// Most minden oszt饊y k<>zen van, kiv<69>e, hogy nincsenek be饊l﹀va
|
||||
// a parentek, valamint nincsenek be饊l﹀va <20> nem futottak az
|
||||
// amBlock-ok <20> a methodsBlock-ok.
|
||||
|
||||
// A sz<73><7A> oszt饊yok be饊lit坟a.
|
||||
BEHAVIOR.Object:parent :=nil
|
||||
META.Behavior:parent :=Object
|
||||
METACLAS.Meta:parent :=Behavior
|
||||
METACLAS.MetaClass:parent :=Meta
|
||||
|
||||
// Az amBlock-ok <20> a methodsBlockok be饊l﹀坟a.
|
||||
|
||||
BEHAVIOR.Object:amBlock :={|ta,tm|amOBJECT(ta,tm)}
|
||||
BEHAVIOR.Object:methodsBlock :={|t|ciOBJECT(t)}
|
||||
META.Behavior:amBlock :={|ta,tm|amBEHAVIOR(ta,tm)}
|
||||
META.Behavior:methodsBlock :={|t|ciBEHAVIOR(t)}
|
||||
METACLAS.Meta:amBlock :={|ta,tm|amMETA(ta,tm)}
|
||||
METACLAS.Meta:methodsBlock :={|t|ciMETA(t)}
|
||||
METACLAS.MetaClass:amBlock :={|ta,tm|nil/*amMETACLAS(ta,tm)*/}
|
||||
METACLAS.MetaClass:methodsBlock :={|t|t/*ciMETACLAS(t)*/}
|
||||
|
||||
// Az amBlock-ok <20> a methodsBlockok v<>rehajt坟a.
|
||||
evalMethodsBlocks(Object)
|
||||
evalAmBlocks(Object)
|
||||
|
||||
evalMethodsBlocks(Behavior)
|
||||
evalAmBlocks(Behavior)
|
||||
|
||||
evalMethodsBlocks(Meta)
|
||||
evalAmBlocks(Meta)
|
||||
|
||||
evalMethodsBlocks(MetaClass)
|
||||
evalAmBlocks(MetaClass)
|
||||
|
||||
return nil
|
||||
**********************************************************************
|
||||
|
||||
|
||||
|
||||
**********************************************************************
|
||||
* *
|
||||
* A META oszt饊y *
|
||||
* *
|
||||
**********************************************************************
|
||||
|
||||
**********************************************************************
|
||||
function clMETA()
|
||||
// Az oszt饊y el𦽳zed<65>e. (class)
|
||||
|
||||
if (Meta==nil)
|
||||
primitiveAllAPClassCreate()
|
||||
endif
|
||||
return Meta
|
||||
|
||||
**********************************************************************
|
||||
// function clMETACLAS()
|
||||
// A Meta oszt饊y meta oszt饊y慯 adja.
|
||||
// Ez m<> megvan.
|
||||
|
||||
|
||||
**********************************************************************
|
||||
static function me_oinit(this,parent,name,nAttribs,nMethods,amBlock,methodsBlock)
|
||||
// Inicializ饊ja a 'this' metaoszt饊yt.
|
||||
// Mj.: H」ja a Behavior oinit()-j<>, <20> inicializ饊ja
|
||||
// az ofClass-t 'nil'-re.
|
||||
|
||||
be_rawoinit(this,parent,name,nAttribs,nMethods,amBlock,methodsBlock)
|
||||
META.this:ofClass:=nil
|
||||
// ciBEHAVIOR(eval(META.this:objMethodsImplement))
|
||||
return this
|
||||
|
||||
**********************************************************************
|
||||
static function me_onew(this,parent,name,nAttribs,nMethods,;
|
||||
amBlock,methodsBlock)
|
||||
// L<>rehoz egy ο oszt饊yt, <20> inicializ饊ja.
|
||||
// Az ο oszt饊y a 'this' eleme lesz, teh慯 az ο oszt饊y
|
||||
// oszt饊ya a 'this'lesz.
|
||||
|
||||
// Mj.: Ez a 'Meta' egy elem<65>ek a m𩥈elete. A 'Meta' elemei
|
||||
// pedig meta oszt饊yok. Teh慯 ez egy meta osztaly egy elem<65>
|
||||
// hozza l<>re, a meta oszt饊yok elemei pedig oszt饊yok. Teh慯
|
||||
// ez egy ο oszt饊yt (<28> nem metaoszt饊yt!!!) hoz l<>re.
|
||||
|
||||
local obj
|
||||
|
||||
#ifdef ATTEVE
|
||||
if (META.this:ofClass!=nil)
|
||||
alert("meta:onew Ennek a metaoszt饊ynak m<> van l<>rehozva eleme!;"+;
|
||||
"'"+META.this:name+"'")
|
||||
META.this:ofClass:=nil
|
||||
endif
|
||||
#endif
|
||||
obj:=META.this:ocreate() // Egy 'this' oszt饊y<E9A58A> objektum l<>rehoz坟a.
|
||||
BEHAVIOR.obj:oinit(parent,name,nAttribs,nMethods,amBlock,methodsBlock)
|
||||
// META.this:ofClass:=obj
|
||||
BEHAVIOR.obj:oinitclass()
|
||||
return obj
|
||||
|
||||
**********************************************************************
|
||||
static function me_ocreate(this)
|
||||
// L<>rehoz egy ο oszt饊yt, de nem inicializ饊ja.
|
||||
|
||||
local c
|
||||
|
||||
#ifdef NEMKELL
|
||||
if (META.this:ofClass!=nil)
|
||||
alert("meta:ocreate Ennek a metaoszt饊ynak m<> van l<>rehozva eleme!;"+;
|
||||
"'"+META.this:name+"'")
|
||||
META.this:ofClass:=nil
|
||||
endif
|
||||
#endif
|
||||
|
||||
c:=be_ocreate(this)
|
||||
|
||||
if (BEHAVIOR.c:needClassId())
|
||||
BEHAVIOR.c:classId:=getNextClassId()
|
||||
endif
|
||||
return c
|
||||
|
||||
**********************************************************************
|
||||
|
||||
**********************************************************************
|
||||
* *
|
||||
* A METACLAS oszt饊y *
|
||||
* *
|
||||
**********************************************************************
|
||||
|
||||
|
||||
**********************************************************************
|
||||
function clMETACLAS()
|
||||
// Az oszt饊y el𦽳zed<65>e. (class)
|
||||
|
||||
if (MetaClass==nil)
|
||||
primitiveAllAPClassCreate()
|
||||
endif
|
||||
return MetaClass
|
||||
|
||||
**********************************************************************
|
||||
// function clMETACLASCLASS()
|
||||
// A MetaClass oszt饊y meta oszt饊y慯 adja.
|
||||
// Ez m<> megvan.
|
||||
|
||||
**********************************************************************
|
||||
function retobj(obj)
|
||||
return obj
|
||||
|
||||
**********************************************************************
|
||||
function retnil()
|
||||
return nil
|
||||
|
||||
**********************************************************************
|
||||
function retemptystr()
|
||||
return ""
|
||||
|
||||
**********************************************************************
|
||||
function rettrue()
|
||||
return .t.
|
||||
|
||||
**********************************************************************
|
||||
function retfalse()
|
||||
return .f.
|
||||
|
||||
**********************************************************************
|
||||
function retzero()
|
||||
return 0
|
||||
|
||||
**********************************************************************
|
||||
function retemptydate()
|
||||
return ctod("")
|
||||
|
||||
**********************************************************************
|
||||
function errAbstract(this,methodName,methodIdx,params)
|
||||
local err
|
||||
|
||||
err:=errorNew()
|
||||
err:cargo:=this
|
||||
err:args:=params
|
||||
err:canRetry:=.f.
|
||||
err:description:="Can't execute abstract method"
|
||||
err:filename:=""
|
||||
err:severity:=ES_ERROR
|
||||
err:operation:=if(valtype(methodName)=='C',methodName+"()","")
|
||||
err:subSystem:="OBJC"
|
||||
err:subCode:=1
|
||||
eval(errorblock(),err)
|
||||
return nil
|
||||
|
||||
**********************************************************************
|
||||
function errAttrib(funName,params/*className,attribName*/)
|
||||
local err
|
||||
|
||||
err:=errorNew()
|
||||
err:cargo:={}
|
||||
err:args:=params
|
||||
err:canRetry:=.f.
|
||||
err:description:="Can't find attributum: "+;
|
||||
if(valtype(params[1])=='C',params[1],"")
|
||||
err:filename:=""
|
||||
err:severity:=ES_ERROR
|
||||
err:operation:=funName
|
||||
err:subSystem:="OBJC"
|
||||
err:subCode:=1
|
||||
eval(errorblock(),err)
|
||||
return nil
|
||||
|
||||
**********************************************************************
|
||||
function ob_getObjId()
|
||||
static t:={}
|
||||
return t
|
||||
|
||||
**********************************************************************
|
||||
function isObject(obj)
|
||||
// Ez a f<>gv<67>y ak<61>milyen (!) <20>t<EFBFBD>r𢡠 megmondja, hogy objektum-e
|
||||
// vagy sem.
|
||||
|
||||
return valtype(obj)=='A' .and.;
|
||||
len(obj)>=1 .and.;
|
||||
valtype(obj[1])=='A' .and.;
|
||||
len(obj[1])>=3 .and.;
|
||||
valtype(obj[1][3])=='A' .and.;
|
||||
obj[1][3]==ob_getObjId()
|
||||
|
||||
**********************************************************************
|
||||
function getNextClassId()
|
||||
// Ezt kell h」nia annak az oszt饊ynak, aki id-t akar.
|
||||
static id:=0
|
||||
return ++id
|
||||
|
||||
**********************************************************************
|
||||
static function be_needClassId(this)
|
||||
return .f.
|
||||
|
||||
**********************************************************************
|
||||
static function be_isInheritFrom(this,parentClass)
|
||||
local w
|
||||
|
||||
if (parentClass==nil)
|
||||
return .t. // Spec eset, v饊aszthatn慙k a .f.-t is.
|
||||
endif
|
||||
if (nil!=(w:=BEHAVIOR.parentClass:classId))
|
||||
return BEHAVIOR.this:parentClassIds!=nil .and.;
|
||||
len(BEHAVIOR.this:parentClassIds)>=w .and.;
|
||||
BEHAVIOR.this:parentClassIds[w]==w
|
||||
endif
|
||||
|
||||
// Fel a f慙.
|
||||
// alert("M坟zunk: "+;
|
||||
// "this: "+BEHAVIOR.this:name+";"+;
|
||||
// "parentClass: "+BEHAVIOR.parentClass:name)
|
||||
w:=this
|
||||
while(w!=nil)
|
||||
if (w==parentClass)
|
||||
return .t.
|
||||
endif
|
||||
w:=BEHAVIOR.w:parent
|
||||
end while
|
||||
return .f.
|
||||
**********************************************************************
|
||||
@@ -1,28 +0,0 @@
|
||||
/*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
#ifndef _OBJGEN_DEF_
|
||||
#define _OBJGEN_DEF_
|
||||
#xtranslate (OBJGEN.(<o>):<m>)[:=<x>] => ;
|
||||
eval(<o>\[1\]\[<m>\],<o>[,<x>])
|
||||
#xtranslate (OBJGEN.(<o>):<m>)([<p,...>])[:=<x>] => ;
|
||||
eval(<o>\[1\]\[<m>\],<o>[,<p>][,<x>])
|
||||
|
||||
#xtranslate (OBJGENM.(<methodArray>).(<o>):<m>)[:=<x>] => ;
|
||||
eval(<methodArray>\[<m>\],<o>[,<x>])
|
||||
|
||||
#xtranslate (OBJGENM.(<methodArray>).(<o>):<m>)([<p,...>])[:=<x>] => ;
|
||||
eval(<methodArray>\[<m>\],<o>[,<p>][,<x>])
|
||||
|
||||
#xtranslate (PKGGEN.(<id>).(<o>):<m>)[:=<x>] => ;
|
||||
eval(<o>\[2\]\[<id>\]\[<m>\],<o>[,<x>])
|
||||
#xtranslate (PKGGEN.(<id>).(<o>):<m>)([<p,...>])[:=<x>] => ;
|
||||
eval(<o>\[2\]\[<id>\]\[<m>\],<o>[,<p>][,<x>])
|
||||
|
||||
#xtranslate (PKGGENM.(<methodArray>).(<o>):<m>)[:=<x>] => ;
|
||||
eval(<methodArray>\[<m>\],<o>[,<x>])
|
||||
#xtranslate (PKGGENM.(<methodArray>).(<o>):<m>)([<p,...>])[:=<x>] => ;
|
||||
eval(<methodArray>\[<m>\],<o>[,<p>][,<x>])
|
||||
#endif
|
||||
|
||||
@@ -1,58 +0,0 @@
|
||||
//
|
||||
// $Id$
|
||||
//
|
||||
|
||||
class PACKAGE OBJECT
|
||||
|
||||
attrib parentPkg
|
||||
// A csomag sz<73>l“je. Ha nincs, akkor nil.
|
||||
|
||||
attrib name
|
||||
// A csomag neve.
|
||||
|
||||
attrib nAttribs
|
||||
// H ny attributum van.
|
||||
|
||||
attrib attribs
|
||||
// Egy t”mb az attribŁtumok sorsz m val,nev‚vel,tˇpus val
|
||||
|
||||
attrib methods
|
||||
// Egy t”mb a m–veletek sorsz m val, nev‚vel,
|
||||
// param‚tereivel, implSpec-‚vel.
|
||||
|
||||
attrib pkgId
|
||||
// A csomag azonosˇt˘ja, minden csomagnak van.
|
||||
// Ha egy csomagnak van “se, akkor ez megegyezik az “s‚nek
|
||||
// az id-j‚vel. Ha nincs “se, akkor pedig k<>l”nb”zik b rmelyik
|
||||
// olyan csomag pkgId-j‚t“l, aminek szint‚n nincs “se.
|
||||
|
||||
attrib amBlock
|
||||
// Egy blokk, aminek a v‚grehajt sa beˇrja
|
||||
// egy t”mbbe a csomag ltal defini lt
|
||||
// attribŁtumokat ‚s egy m sik t”mbbe pedig
|
||||
// a csomag ltal defini lt m–veleteket.
|
||||
|
||||
attrib methodsBlock
|
||||
// Egy blokk, aminek a v‚grehajt sa
|
||||
// beˇrja egy t”mbbe a csomag ltal defini lt
|
||||
// m–veletek blokkjait.
|
||||
// (Ezt a t”mb”t adja a pkgMethodsImplement.)
|
||||
|
||||
attrib pkgMethodsImplement
|
||||
// Egy blokkot tartalmaz, amit ki‚rt‚kelve
|
||||
// megkapjuk azt a t”mb”t, aminek az els“
|
||||
// eleme a csomag, a tov bbi elemei pedig
|
||||
// a csomagban haszn lhat˘ m–veletek
|
||||
// blokkjai, ‚s m s implement ci˘s elemek.
|
||||
|
||||
rmethod oinit(parent,name,nAttribs,nMethods,amBlock,methodsBlock,pkgId)
|
||||
|
||||
nmethod connectTo(obj)
|
||||
|
||||
metaclass
|
||||
|
||||
attrib numId
|
||||
|
||||
rmethod onew(parent,name,nAttribs,nMethods,amBlock,methodsBlock,pkgId)
|
||||
|
||||
nmethod nextId()
|
||||
@@ -1,287 +0,0 @@
|
||||
// PACKAGE.och oszt ly implement ci¢.
|
||||
// Gener lva: 1999.10.10, 14:31:59, OBJCCC v2.2.03
|
||||
// Meta oszt ly defin¡ci¢: Van
|
||||
|
||||
|
||||
#ifndef CA_OBJECT_N
|
||||
#ifdef _STRICT_PARENT_
|
||||
#ifdef _CA_CM_ONLY_
|
||||
#include "OBJECT.och"
|
||||
#else // _CA_CM_ONLY_
|
||||
#define _CA_CM_ONLY_
|
||||
#include "OBJECT.och"
|
||||
#undef _CA_CM_ONLY_
|
||||
#endif // _CA_CM_ONLY_
|
||||
#else
|
||||
#include "OBJECT.och"
|
||||
#endif // _STRICT_PARENT_
|
||||
#endif // CA_OBJECT_N
|
||||
|
||||
#ifndef _CA_CM_ONLY_
|
||||
#ifndef _PACKAGE_OCH_
|
||||
#define _PACKAGE_OCH_
|
||||
|
||||
|
||||
|
||||
|
||||
#xtranslate PACKAGE.<obj>:oinit => (OBJGEN.(<obj>):(4))
|
||||
#xtranslate PACKAGE.<obj>:getclass => (OBJGEN.(<obj>):(5))
|
||||
#xtranslate PACKAGE.<obj>:isclass => (OBJGEN.(<obj>):(6))
|
||||
#xtranslate PACKAGE.<obj>:getattrib => (OBJGEN.(<obj>):(7))
|
||||
#xtranslate PACKAGE.<obj>:setattrib => (OBJGEN.(<obj>):(8))
|
||||
|
||||
|
||||
#xtranslate PACKAGE.<obj>:parentpkg => <obj>\[CA_OBJECT_N+1\]
|
||||
#xtranslate PACKAGE.<obj>:name => <obj>\[CA_OBJECT_N+2\]
|
||||
#xtranslate PACKAGE.<obj>:nattribs => <obj>\[CA_OBJECT_N+3\]
|
||||
#xtranslate PACKAGE.<obj>:attribs => <obj>\[CA_OBJECT_N+4\]
|
||||
#xtranslate PACKAGE.<obj>:methods => <obj>\[CA_OBJECT_N+5\]
|
||||
#xtranslate PACKAGE.<obj>:pkgid => <obj>\[CA_OBJECT_N+6\]
|
||||
#xtranslate PACKAGE.<obj>:amblock => <obj>\[CA_OBJECT_N+7\]
|
||||
#xtranslate PACKAGE.<obj>:methodsblock => <obj>\[CA_OBJECT_N+8\]
|
||||
#xtranslate PACKAGE.<obj>:pkgmethodsimplement => <obj>\[CA_OBJECT_N+9\]
|
||||
|
||||
// ™r”k”lve: oinit(parent,name,nAttribs,nMethods,amBlock,methodsBlock,pkgId)
|
||||
// Specifik lva: connectto(obj)
|
||||
|
||||
// ™r”k”lve: oinit(parent,name,nAttribs,nMethods,amBlock,methodsBlock,pkgId)
|
||||
#xtranslate PACKAGE.<obj>:connectto => (OBJGEN.(<obj>):(CM_OBJECT_N+1))
|
||||
|
||||
#endif // _PACKAGE_OCH_
|
||||
#endif // _CA_CM_ONLY_
|
||||
|
||||
#ifndef CA_PACKAGE_N
|
||||
#define CA_PACKAGE_N CA_OBJECT_N+9
|
||||
#define CM_PACKAGE_N CM_OBJECT_N+1
|
||||
#endif // CA_PACKAGE_N
|
||||
|
||||
#ifndef _CA_CM_ONLY_
|
||||
#ifndef _PACKAGECLASS_OCH_
|
||||
#define _PACKAGECLASS_OCH_
|
||||
|
||||
**********************************************************************
|
||||
#xtranslate C.PACKAGE:<m> => (PACKAGECLASS.clPACKAGE():<m>)
|
||||
#xtranslate C.PACKAGE:self() => (clPACKAGE())
|
||||
|
||||
|
||||
#xtranslate PACKAGECLASS.<obj>:parent => <obj>\[CA_OBJECT_N+1\]
|
||||
#xtranslate PACKAGECLASS.<obj>:name => <obj>\[CA_OBJECT_N+2\]
|
||||
#xtranslate PACKAGECLASS.<obj>:objsize => <obj>\[CA_OBJECT_N+3\]
|
||||
#xtranslate PACKAGECLASS.<obj>:attribs => <obj>\[CA_OBJECT_N+4\]
|
||||
#xtranslate PACKAGECLASS.<obj>:methods => <obj>\[CA_OBJECT_N+5\]
|
||||
#xtranslate PACKAGECLASS.<obj>:classid => <obj>\[CA_OBJECT_N+6\]
|
||||
#xtranslate PACKAGECLASS.<obj>:parentclassids => <obj>\[CA_OBJECT_N+7\]
|
||||
#xtranslate PACKAGECLASS.<obj>:amblock => <obj>\[CA_OBJECT_N+8\]
|
||||
#xtranslate PACKAGECLASS.<obj>:methodsblock => <obj>\[CA_OBJECT_N+9\]
|
||||
#xtranslate PACKAGECLASS.<obj>:objmethodsimplement => <obj>\[CA_OBJECT_N+10\]
|
||||
|
||||
|
||||
#xtranslate PACKAGECLASS.<obj>:oinit => (OBJGEN.(<obj>):(4))
|
||||
#xtranslate PACKAGECLASS.<obj>:getclass => (OBJGEN.(<obj>):(5))
|
||||
#xtranslate PACKAGECLASS.<obj>:isclass => (OBJGEN.(<obj>):(6))
|
||||
#xtranslate PACKAGECLASS.<obj>:getattrib => (OBJGEN.(<obj>):(7))
|
||||
#xtranslate PACKAGECLASS.<obj>:setattrib => (OBJGEN.(<obj>):(8))
|
||||
#xtranslate PACKAGECLASS.<obj>:onew => (OBJGEN.(<obj>):(CM_OBJECT_N+1))
|
||||
#xtranslate PACKAGECLASS.<obj>:ocreate => (OBJGEN.(<obj>):(CM_OBJECT_N+2))
|
||||
#xtranslate PACKAGECLASS.<obj>:rawoinit => (OBJGEN.(<obj>):(CM_OBJECT_N+3))
|
||||
#xtranslate PACKAGECLASS.<obj>:oinitclass => (OBJGEN.(<obj>):(CM_OBJECT_N+4))
|
||||
#xtranslate PACKAGECLASS.<obj>:getmethodsimplement => (OBJGEN.(<obj>):(CM_OBJECT_N+5))
|
||||
#xtranslate PACKAGECLASS.<obj>:attribidx => (OBJGEN.(<obj>):(CM_OBJECT_N+6))
|
||||
#xtranslate PACKAGECLASS.<obj>:needclassid => (OBJGEN.(<obj>):(CM_OBJECT_N+7))
|
||||
#xtranslate PACKAGECLASS.<obj>:isinheritfrom => (OBJGEN.(<obj>):(CM_OBJECT_N+8))
|
||||
|
||||
|
||||
#xtranslate PACKAGECLASS.<obj>:numid => <obj>\[CA_BEHAVIOR_N+1\]
|
||||
|
||||
// ™r”k”lve: onew(parent,name,nAttribs,nMethods,amBlock,methodsBlock,pkgId)
|
||||
// Specifik lva: nextid()
|
||||
|
||||
// ™r”k”lve: onew(parent,name,nAttribs,nMethods,amBlock,methodsBlock,pkgId)
|
||||
#xtranslate PACKAGECLASS.<obj>:nextid => (OBJGEN.(<obj>):(CM_BEHAVIOR_N+1))
|
||||
|
||||
#endif // _PACKAGECLASS_OCH_
|
||||
#endif // _CA_CM_ONLY_
|
||||
|
||||
#ifndef CA_PACKAGECLASS_N
|
||||
#define CA_PACKAGECLASS_N CA_BEHAVIOR_N+1
|
||||
#define CM_PACKAGECLASS_N CM_BEHAVIOR_N+1
|
||||
#endif // CA_PACKAGECLASS_N
|
||||
|
||||
|
||||
**********************************************************************
|
||||
#ifdef _PACKAGE_PRG_
|
||||
#ifndef _PACKAGE_PRG_OCH_
|
||||
#define _PACKAGE_PRG_OCH_
|
||||
|
||||
|
||||
**********************************************************************
|
||||
#xtranslate othis:<m> => PACKAGE.(othis):<m>
|
||||
#xtranslate thisclass:<m> => PACKAGECLASS.(this:getClass()):<m>
|
||||
#define CTHIS PACKAGE
|
||||
|
||||
|
||||
**********************************************************************
|
||||
#xtranslate this:<m> => PACKAGE.(this):<m>
|
||||
|
||||
#xcommand implement oinit(parent,name,nAttribs,nMethods,amBlock,methodsBlock,pkgId) => ;
|
||||
static function oinit(this,parent,name,nAttribs,nMethods,amBlock,methodsBlock,pkgId)
|
||||
#xcommand implement connectto(obj) => static function connectto(this,obj)
|
||||
|
||||
#ifdef _IMPLEMENT_EXPORT_
|
||||
#xcommand implement export oinit(parent,name,nAttribs,nMethods,amBlock,methodsBlock,pkgId) => ;
|
||||
function oinit(this,parent,name,nAttribs,nMethods,amBlock,methodsBlock,pkgId)
|
||||
#xcommand implement export connectto(obj) => function connectto(this,obj)
|
||||
#endif // _IMPLEMENT_EXPORT_
|
||||
|
||||
#xtranslate super:oinit => (OBJGENM.(eval(BEHAVIOR.clOBJECT():objmethodsimplement)).(this):(4))
|
||||
#xtranslate super:getclass => (OBJGENM.(eval(BEHAVIOR.clOBJECT():objmethodsimplement)).(this):(5))
|
||||
#xtranslate super:isclass => (OBJGENM.(eval(BEHAVIOR.clOBJECT():objmethodsimplement)).(this):(6))
|
||||
#xtranslate super:getattrib => (OBJGENM.(eval(BEHAVIOR.clOBJECT():objmethodsimplement)).(this):(7))
|
||||
#xtranslate super:setattrib => (OBJGENM.(eval(BEHAVIOR.clOBJECT():objmethodsimplement)).(this):(8))
|
||||
|
||||
**********************************************************************
|
||||
static function setCMethods(pOsztaly)
|
||||
// Egy t”mb”t felt”lt az oszt ly m–veleti blokkjaival.
|
||||
pOsztaly[(4)]:={|this,parent,name,nAttribs,nMethods,amBlock,methodsBlock,pkgId| oinit(this,parent,name,nAttribs,nMethods,amBlock,methodsBlock,pkgId)}
|
||||
pOsztaly[(CM_OBJECT_N+1)]:={|this,obj| connectto(this,obj)}
|
||||
return pOsztaly
|
||||
|
||||
**********************************************************************
|
||||
static function setCams(ta,tm)
|
||||
// Egy t”mb”t felt”lt az oszt ly ltal def. objektumok attrib£tumaival ‚s m–veleteivel.
|
||||
ta[CA_OBJECT_N+1-CA_NIL_N] := {CA_OBJECT_N+1,'parentpkg',nil}
|
||||
ta[CA_OBJECT_N+2-CA_NIL_N] := {CA_OBJECT_N+2,'name',nil}
|
||||
ta[CA_OBJECT_N+3-CA_NIL_N] := {CA_OBJECT_N+3,'nattribs',nil}
|
||||
ta[CA_OBJECT_N+4-CA_NIL_N] := {CA_OBJECT_N+4,'attribs',nil}
|
||||
ta[CA_OBJECT_N+5-CA_NIL_N] := {CA_OBJECT_N+5,'methods',nil}
|
||||
ta[CA_OBJECT_N+6-CA_NIL_N] := {CA_OBJECT_N+6,'pkgid',nil}
|
||||
ta[CA_OBJECT_N+7-CA_NIL_N] := {CA_OBJECT_N+7,'amblock',nil}
|
||||
ta[CA_OBJECT_N+8-CA_NIL_N] := {CA_OBJECT_N+8,'methodsblock',nil}
|
||||
ta[CA_OBJECT_N+9-CA_NIL_N] := {CA_OBJECT_N+9,'pkgmethodsimplement',nil}
|
||||
|
||||
tm[(4)-CM_NIL_N] := {(4),'oinit','parent,name,nAttribs,nMethods,amBlock,methodsBlock,pkgId',nil}
|
||||
tm[(CM_OBJECT_N+1)-CM_NIL_N] := {(CM_OBJECT_N+1),'connectto','obj',nil}
|
||||
return nil
|
||||
|
||||
#ifndef _NO_CLPACKAGE_
|
||||
#ifdef _STRICT_PARENT_
|
||||
#ifdef _CA_CM_ONLY_
|
||||
#include "meta.och"
|
||||
#else // _CA_CM_ONLY_
|
||||
#define _CA_CM_ONLY_
|
||||
#include "meta.och"
|
||||
#undef _CA_CM_ONLY_
|
||||
#endif // _CA_CM_ONLY_
|
||||
#else
|
||||
#include "meta.och"
|
||||
#endif // _STRICT_PARENT_
|
||||
**********************************************************************
|
||||
function clPACKAGE()
|
||||
// El“szedi az oszt lyt. (class)
|
||||
static osztaly
|
||||
if (osztaly==nil)
|
||||
osztaly:=META.mcPACKAGECLASS():onew(;
|
||||
clOBJECT(),;
|
||||
"PACKAGE",;
|
||||
CA_PACKAGE_N,;
|
||||
CM_PACKAGE_N,;
|
||||
{|ta,tm|setCams(ta,tm)},;
|
||||
{|t|setCMethods(t)})
|
||||
endif
|
||||
return osztaly
|
||||
#endif // _NO_CLPACKAGE_
|
||||
|
||||
#ifndef _NO_PACKAGECLASS_
|
||||
|
||||
**********************************************************************
|
||||
#xtranslate class:<m> => PACKAGECLASS.(class):<m>
|
||||
|
||||
#xcommand cimplement onew(parent,name,nAttribs,nMethods,amBlock,methodsBlock,pkgId) => ;
|
||||
static function onew(class,parent,name,nAttribs,nMethods,amBlock,methodsBlock,pkgId)
|
||||
#xcommand cimplement nextid() => static function nextid(class)
|
||||
|
||||
#ifdef _IMPLEMENT_EXPORT_
|
||||
#xcommand cimplement export onew(parent,name,nAttribs,nMethods,amBlock,methodsBlock,pkgId) => ;
|
||||
function onew(class,parent,name,nAttribs,nMethods,amBlock,methodsBlock,pkgId)
|
||||
#xcommand cimplement export nextid() => function nextid(class)
|
||||
#endif // _IMPLEMENT_EXPORT_
|
||||
|
||||
#xtranslate superclass:oinit => (OBJGENM.(eval(BEHAVIOR.clBEHAVIOR():objmethodsimplement)).(class):(4))
|
||||
#xtranslate superclass:getclass => (OBJGENM.(eval(BEHAVIOR.clBEHAVIOR():objmethodsimplement)).(class):(5))
|
||||
#xtranslate superclass:isclass => (OBJGENM.(eval(BEHAVIOR.clBEHAVIOR():objmethodsimplement)).(class):(6))
|
||||
#xtranslate superclass:getattrib => (OBJGENM.(eval(BEHAVIOR.clBEHAVIOR():objmethodsimplement)).(class):(7))
|
||||
#xtranslate superclass:setattrib => (OBJGENM.(eval(BEHAVIOR.clBEHAVIOR():objmethodsimplement)).(class):(8))
|
||||
#xtranslate superclass:onew => (OBJGENM.(eval(BEHAVIOR.clBEHAVIOR():objmethodsimplement)).(class):(CM_OBJECT_N+1))
|
||||
#xtranslate superclass:ocreate => (OBJGENM.(eval(BEHAVIOR.clBEHAVIOR():objmethodsimplement)).(class):(CM_OBJECT_N+2))
|
||||
#xtranslate superclass:rawoinit => (OBJGENM.(eval(BEHAVIOR.clBEHAVIOR():objmethodsimplement)).(class):(CM_OBJECT_N+3))
|
||||
#xtranslate superclass:oinitclass => (OBJGENM.(eval(BEHAVIOR.clBEHAVIOR():objmethodsimplement)).(class):(CM_OBJECT_N+4))
|
||||
#xtranslate superclass:getmethodsimplement => (OBJGENM.(eval(BEHAVIOR.clBEHAVIOR():objmethodsimplement)).(class):(CM_OBJECT_N+5))
|
||||
#xtranslate superclass:attribidx => (OBJGENM.(eval(BEHAVIOR.clBEHAVIOR():objmethodsimplement)).(class):(CM_OBJECT_N+6))
|
||||
#xtranslate superclass:needclassid => (OBJGENM.(eval(BEHAVIOR.clBEHAVIOR():objmethodsimplement)).(class):(CM_OBJECT_N+7))
|
||||
#xtranslate superclass:isinheritfrom => (OBJGENM.(eval(BEHAVIOR.clBEHAVIOR():objmethodsimplement)).(class):(CM_OBJECT_N+8))
|
||||
|
||||
**********************************************************************
|
||||
static function setMCMethods(pOsztaly)
|
||||
// Egy t”mb”t felt”lt a metaoszt ly m–veleti blokkjaival.
|
||||
pOsztaly[(CM_OBJECT_N+1)]:={|class,parent,name,nAttribs,nMethods,amBlock,methodsBlock,pkgId| onew(class,parent,name,nAttribs,nMethods,amBlock,methodsBlock,pkgId)}
|
||||
pOsztaly[(CM_BEHAVIOR_N+1)]:={|class| nextid(class)}
|
||||
return pOsztaly
|
||||
|
||||
**********************************************************************
|
||||
static function setMCams(ta,tm)
|
||||
// Egy t”mb”t felt”lt a metaoszt ly ltal def. objektumok attrib£tumaival ‚s m–veleteivel.
|
||||
ta[CA_BEHAVIOR_N+1-CA_NIL_N] := {CA_BEHAVIOR_N+1,'numid',nil}
|
||||
|
||||
tm[(CM_OBJECT_N+1)-CM_NIL_N] := {(CM_OBJECT_N+1),'onew','parent,name,nAttribs,nMethods,amBlock,methodsBlock,pkgId',nil}
|
||||
tm[(CM_BEHAVIOR_N+1)-CM_NIL_N] := {(CM_BEHAVIOR_N+1),'nextid','',nil}
|
||||
return nil
|
||||
|
||||
**********************************************************************
|
||||
#ifndef _NO_MCPACKAGECLASS_
|
||||
#ifdef _STRICT_PARENT_
|
||||
#ifdef _CA_CM_ONLY_
|
||||
#include "meta.och" // "metaclas.och"
|
||||
#else // _CA_CM_ONLY_
|
||||
#define _CA_CM_ONLY_
|
||||
#include "meta.och" // "metaclas.och"
|
||||
#undef _CA_CM_ONLY_
|
||||
#endif // _CA_CM_ONLY_
|
||||
#else
|
||||
#include "meta.och" // "metaclas.och"
|
||||
#endif // _STRICT_PARENT_
|
||||
function mcPACKAGECLASS()
|
||||
// El“szedi az oszt ly metaoszt ly t. (metaclass)
|
||||
static metaOsztaly
|
||||
if (metaOsztaly==nil)
|
||||
metaOsztaly:=META.clMETA():onew(;
|
||||
clBEHAVIOR(),;
|
||||
"PACKAGECLASS",;
|
||||
CA_PACKAGECLASS_N,;
|
||||
CM_PACKAGECLASS_N,;
|
||||
{|ta,tm|setMCams(ta,tm)},;
|
||||
{|t|setMCMethods(t)})
|
||||
endif
|
||||
return metaOsztaly
|
||||
#endif // _NO_MCPACKAGECLASS_
|
||||
|
||||
#endif // _NO_PACKAGECLASS_
|
||||
#ifdef _IMPLEMENT_ONEW_
|
||||
**********************************************************************
|
||||
cimplement onew(parent,name,nAttribs,nMethods,amBlock,methodsBlock,pkgId)
|
||||
local o:=class:ocreate()
|
||||
|
||||
PACKAGE.o:oinit(parent,name,nAttribs,nMethods,amBlock,methodsBlock,pkgId)
|
||||
return o
|
||||
#endif // _IMPLEMENT_ONEW_
|
||||
|
||||
**********************************************************************
|
||||
#ifdef _IMPLEMENT_OINIT_
|
||||
implement oinit(parent,name,nAttribs,nMethods,amBlock,methodsBlock,pkgId)
|
||||
super:oinit()
|
||||
return this
|
||||
#endif // _IMPLEMENT_OINIT_
|
||||
|
||||
**********************************************************************
|
||||
**********************************************************************
|
||||
#endif // _PACKAGE_PRG_OCH_
|
||||
#endif // _PACKAGE_PRG_
|
||||
@@ -1,126 +0,0 @@
|
||||
/*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
#include "objgen.ch"
|
||||
|
||||
#define _PACKAGE_PRG_
|
||||
#define _IMPLEMENT_ONEW_
|
||||
#include "package.och"
|
||||
|
||||
*********************************************************************
|
||||
implement oinit(parent,name,nAttribs,nMethods,amBlock,methodsBlock,pkgId)
|
||||
local t
|
||||
|
||||
this:parentPkg :=parent
|
||||
this:name :=name
|
||||
this:nAttribs :=nAttribs
|
||||
this:amBlock :=amBlock
|
||||
this:methodsBlock :=methodsBlock
|
||||
this:pkgId :=pkgId
|
||||
|
||||
|
||||
t:=array(nMethods)
|
||||
t[1]:=this
|
||||
this:pkgMethodsImplement:={||t}
|
||||
|
||||
this:attribs:=array(nAttribs)
|
||||
this:methods:=array(nMethods)
|
||||
evalMethodsBlocks(this)
|
||||
evalAmBlocks(this)
|
||||
|
||||
return this
|
||||
|
||||
*********************************************************************
|
||||
implement connectTo(obj)
|
||||
|
||||
// Ez l‚nyeg‚ben a ocreate()
|
||||
local t
|
||||
|
||||
// Itt meg kellene n‚zni, erre az objektumra van-e m r
|
||||
// install lva valamilyen csomag ebb“l a f b¢l.
|
||||
// Ha van, akkor ha az install land¢ “se az install ltnak ==>
|
||||
// nem kell semmit sem csin lni, ha nem le kell cser‚lni.
|
||||
// Esetleg, ha egyik sem “se a m siknak, akkor hibajelz‚st
|
||||
// lehetne adni.
|
||||
|
||||
// Ez az implement ci¢ nem j¢l m–k”dik, ha egyik sem “se a
|
||||
// m siknak, de van k”z”s “s<E2809C>k.
|
||||
|
||||
t:=obj[2] // Itt vannak az attrib£tumok.
|
||||
|
||||
if (t==nil)
|
||||
obj[2]:=t:=array(this:pkgId)
|
||||
elseif (len(t)<this:pkgId)
|
||||
asize(t,this:pkgId)
|
||||
endif
|
||||
|
||||
t[this:pkgId]:=array(this:nAttribs)
|
||||
#ifdef OLD
|
||||
// Ez majd k‚s“bb.
|
||||
if (t[this:pkgId]==nil)
|
||||
t[this:pkgId]:=array(this:nAttribs)
|
||||
elseif (len(t[this:pkgId])<this:nAttribs)
|
||||
asize(t[this:pkgId],this:nAttribs)
|
||||
endif
|
||||
#endif
|
||||
|
||||
t:=obj[1][2] // Itt vannak a m–veletek.
|
||||
|
||||
if (t==nil)
|
||||
obj[2]:=t:=array(this:pkgId)
|
||||
elseif (len(t)<this:pkgId)
|
||||
asize(t,this:pkgId)
|
||||
endif
|
||||
|
||||
t[this:pkgId]:=eval(PACKAGE.this:pkgMethodsImplement)
|
||||
|
||||
return this
|
||||
|
||||
*********************************************************************
|
||||
cimplement nextId()
|
||||
if (class:numId==nil)
|
||||
class:numId:=0
|
||||
endif
|
||||
class:numId++
|
||||
return class:numId
|
||||
|
||||
**********************************************************************
|
||||
static function evalAmBlocks(aClass)
|
||||
local m,c,i
|
||||
// local t
|
||||
|
||||
m:={}
|
||||
c:=aClass
|
||||
while(c!=nil)
|
||||
if (nil!=PACKAGE.c:amBlock)
|
||||
aadd(m,PACKAGE.c:amBlock)
|
||||
endif
|
||||
c:=PACKAGE.c:parentPkg
|
||||
end while
|
||||
|
||||
for i:=len(m) to 1 step -1
|
||||
eval(m[i],PACKAGE.aClass:attribs,PACKAGE.aClass:methods)
|
||||
end for
|
||||
return aClass
|
||||
|
||||
**********************************************************************
|
||||
static function evalMethodsBlocks(aClass)
|
||||
local t,m,c,i
|
||||
|
||||
t:=eval(PACKAGE.aClass:pkgMethodsImplement)
|
||||
m:={}
|
||||
c:=aClass
|
||||
while(c!=nil)
|
||||
if (nil!=PACKAGE.c:methodsBlock)
|
||||
aadd(m,PACKAGE.c:methodsBlock)
|
||||
endif
|
||||
c:=PACKAGE.c:parentPkg
|
||||
end while
|
||||
|
||||
for i:=len(m) to 1 step -1
|
||||
eval(m[i],t)
|
||||
end for
|
||||
return aClass
|
||||
|
||||
*********************************************************************
|
||||
@@ -1,63 +0,0 @@
|
||||
//
|
||||
// $Id$
|
||||
//
|
||||
|
||||
//*******************************************************************
|
||||
// parser.cls: Źltal nos elemz“ oszt ly.
|
||||
// 1999, Csisz r Levente
|
||||
|
||||
|
||||
// Az inputr˘l olvasott 'item'-eket egy parserBuffer-ben t rolja,
|
||||
// ‚s az 'item' attributumba is beolvassa.
|
||||
// A pufferb“l az inputra vissza tud tenni 'item'-eket.
|
||||
// A puffer karakter r‚sz‚t meg tudja adni stringk‚nt.
|
||||
|
||||
|
||||
class PARSER TREADER
|
||||
|
||||
attrib item
|
||||
attrib parserBuffer
|
||||
|
||||
rmethod readItem()
|
||||
// Olvas egy elemet.
|
||||
// Ret: Az elem, ha OK, nil, ha v‚ge van a streamnek, vagy ha
|
||||
// hiba volt.
|
||||
|
||||
nmethod putParserBuffer(anItem)
|
||||
// Hozz ad egy elemet a puffer v‚g‚hez Az elem lehet speci lis is.
|
||||
|
||||
nmethod getParserBuffer()
|
||||
// Kivesz egy elemet a puffer elej‚r“l.
|
||||
|
||||
nmethod unputParserBuffer()
|
||||
// Kivesz egy elemet a puffer v‚g‚r“l.
|
||||
|
||||
nmethod ungetParserBuffer(anItem)
|
||||
// Betesz egy elemet a puffer elej‚re.
|
||||
|
||||
nmethod clearParserBuffer()
|
||||
// T”rli a parserBuffer()-t.
|
||||
|
||||
nmethod rds()
|
||||
// Olvas egy karatert a readInput()-al a lineBuf-ba.
|
||||
// Az olvasott ‚rt‚ket a buf-ba is beleteszi, ha az nem az eof.
|
||||
|
||||
nmethod unrds(n)
|
||||
// A buf utols˘ n elem‚t visszateszi az inputra. Az item-et t”rli.
|
||||
// Azt adja vissza, hogy h ny elemet siker<65>lt visszatenni.
|
||||
// Ha az n nil, akkor egyet tesz vissza.
|
||||
|
||||
nmethod strParserBuffer()
|
||||
// Megadja a parserBuffer tartalm t stringk‚nt.
|
||||
// A nem stringeket eldobja.
|
||||
|
||||
nmethod arrayParserBuffer()
|
||||
// Ad egy t”mb”t, amiben a parserBuffer tartalma van.
|
||||
|
||||
rmethod oinit(inputReader,name,errorStream)
|
||||
|
||||
metaclass
|
||||
|
||||
rmethod onew(inputReader,name,errorStream)
|
||||
|
||||
|
||||
@@ -1,359 +0,0 @@
|
||||
// PARSER.och oszt ly implement ci¢.
|
||||
// Gener lva: 1999.06.10, 14:39:57, OBJCCC v2.2.03
|
||||
// Meta oszt ly defin¡ci¢: Van
|
||||
|
||||
|
||||
#ifndef CA_TREADER_N
|
||||
#ifdef _STRICT_PARENT_
|
||||
#ifdef _CA_CM_ONLY_
|
||||
#include "TREADER.och"
|
||||
#else // _CA_CM_ONLY_
|
||||
#define _CA_CM_ONLY_
|
||||
#include "TREADER.och"
|
||||
#undef _CA_CM_ONLY_
|
||||
#endif // _CA_CM_ONLY_
|
||||
#else
|
||||
#include "TREADER.och"
|
||||
#endif // _STRICT_PARENT_
|
||||
#endif // CA_TREADER_N
|
||||
|
||||
#ifndef _CA_CM_ONLY_
|
||||
#ifndef _PARSER_OCH_
|
||||
#define _PARSER_OCH_
|
||||
|
||||
|
||||
#xtranslate PARSER.<obj>:name => <obj>\[CA_OBJECT_N+1\]
|
||||
#xtranslate PARSER.<obj>:errorstream => <obj>\[CA_OBJECT_N+2\]
|
||||
#xtranslate PARSER.<obj>:tbuffer => <obj>\[CA_OBJECT_N+3\]
|
||||
#xtranslate PARSER.<obj>:inputreader => <obj>\[CA_READER_N+1\]
|
||||
|
||||
|
||||
#xtranslate PARSER.<obj>:oinit => (OBJGEN.(<obj>):(4))
|
||||
#xtranslate PARSER.<obj>:getclass => (OBJGEN.(<obj>):(5))
|
||||
#xtranslate PARSER.<obj>:isclass => (OBJGEN.(<obj>):(6))
|
||||
#xtranslate PARSER.<obj>:getattrib => (OBJGEN.(<obj>):(7))
|
||||
#xtranslate PARSER.<obj>:setattrib => (OBJGEN.(<obj>):(8))
|
||||
#xtranslate PARSER.<obj>:read => (OBJGEN.(<obj>):(CM_OBJECT_N+1))
|
||||
#xtranslate PARSER.<obj>:unread => (OBJGEN.(<obj>):(CM_OBJECT_N+2))
|
||||
#xtranslate PARSER.<obj>:readtbuffer => (OBJGEN.(<obj>):(CM_OBJECT_N+3))
|
||||
#xtranslate PARSER.<obj>:arraytbuffer => (OBJGEN.(<obj>):(CM_OBJECT_N+4))
|
||||
#xtranslate PARSER.<obj>:readitem => (OBJGEN.(<obj>):(CM_OBJECT_N+5))
|
||||
#xtranslate PARSER.<obj>:iserror => (OBJGEN.(<obj>):(CM_OBJECT_N+6))
|
||||
#xtranslate PARSER.<obj>:adderror => (OBJGEN.(<obj>):(CM_OBJECT_N+7))
|
||||
#xtranslate PARSER.<obj>:destruct => (OBJGEN.(<obj>):(CM_OBJECT_N+8))
|
||||
#xtranslate PARSER.<obj>:readinput => (OBJGEN.(<obj>):(CM_READER_N+1))
|
||||
#xtranslate PARSER.<obj>:unreadinput => (OBJGEN.(<obj>):(CM_READER_N+2))
|
||||
#xtranslate PARSER.<obj>:addinputreader => (OBJGEN.(<obj>):(CM_READER_N+3))
|
||||
|
||||
|
||||
#xtranslate PARSER.<obj>:item => <obj>\[CA_TREADER_N+1\]
|
||||
#xtranslate PARSER.<obj>:parserbuffer => <obj>\[CA_TREADER_N+2\]
|
||||
|
||||
// ™r”k”lve: readitem()
|
||||
// Specifik lva: putparserbuffer(anItem)
|
||||
// Specifik lva: getparserbuffer()
|
||||
// Specifik lva: unputparserbuffer()
|
||||
// Specifik lva: ungetparserbuffer(anItem)
|
||||
// Specifik lva: clearparserbuffer()
|
||||
// Specifik lva: rds()
|
||||
// Specifik lva: unrds(n)
|
||||
// Specifik lva: strparserbuffer()
|
||||
// Specifik lva: arrayparserbuffer()
|
||||
// ™r”k”lve: oinit(inputReader,name,errorStream)
|
||||
|
||||
// ™r”k”lve: readitem()
|
||||
#xtranslate PARSER.<obj>:putparserbuffer => (OBJGEN.(<obj>):(CM_TREADER_N+1))
|
||||
#xtranslate PARSER.<obj>:getparserbuffer => (OBJGEN.(<obj>):(CM_TREADER_N+2))
|
||||
#xtranslate PARSER.<obj>:unputparserbuffer => (OBJGEN.(<obj>):(CM_TREADER_N+3))
|
||||
#xtranslate PARSER.<obj>:ungetparserbuffer => (OBJGEN.(<obj>):(CM_TREADER_N+4))
|
||||
#xtranslate PARSER.<obj>:clearparserbuffer => (OBJGEN.(<obj>):(CM_TREADER_N+5))
|
||||
#xtranslate PARSER.<obj>:rds => (OBJGEN.(<obj>):(CM_TREADER_N+6))
|
||||
#xtranslate PARSER.<obj>:unrds => (OBJGEN.(<obj>):(CM_TREADER_N+7))
|
||||
#xtranslate PARSER.<obj>:strparserbuffer => (OBJGEN.(<obj>):(CM_TREADER_N+8))
|
||||
#xtranslate PARSER.<obj>:arrayparserbuffer => (OBJGEN.(<obj>):(CM_TREADER_N+9))
|
||||
// ™r”k”lve: oinit(inputReader,name,errorStream)
|
||||
|
||||
#endif // _PARSER_OCH_
|
||||
#endif // _CA_CM_ONLY_
|
||||
|
||||
#ifndef CA_PARSER_N
|
||||
#define CA_PARSER_N CA_TREADER_N+2
|
||||
#define CM_PARSER_N CM_TREADER_N+9
|
||||
#endif // CA_PARSER_N
|
||||
|
||||
#ifndef _CA_CM_ONLY_
|
||||
#ifndef _PARSERCLASS_OCH_
|
||||
#define _PARSERCLASS_OCH_
|
||||
|
||||
**********************************************************************
|
||||
#xtranslate C.PARSER:<m> => (PARSERCLASS.clPARSER():<m>)
|
||||
#xtranslate C.PARSER:self() => (clPARSER())
|
||||
|
||||
|
||||
#xtranslate PARSERCLASS.<obj>:parent => <obj>\[CA_OBJECT_N+1\]
|
||||
#xtranslate PARSERCLASS.<obj>:name => <obj>\[CA_OBJECT_N+2\]
|
||||
#xtranslate PARSERCLASS.<obj>:objsize => <obj>\[CA_OBJECT_N+3\]
|
||||
#xtranslate PARSERCLASS.<obj>:attribs => <obj>\[CA_OBJECT_N+4\]
|
||||
#xtranslate PARSERCLASS.<obj>:methods => <obj>\[CA_OBJECT_N+5\]
|
||||
#xtranslate PARSERCLASS.<obj>:classid => <obj>\[CA_OBJECT_N+6\]
|
||||
#xtranslate PARSERCLASS.<obj>:parentclassids => <obj>\[CA_OBJECT_N+7\]
|
||||
#xtranslate PARSERCLASS.<obj>:amblock => <obj>\[CA_OBJECT_N+8\]
|
||||
#xtranslate PARSERCLASS.<obj>:methodsblock => <obj>\[CA_OBJECT_N+9\]
|
||||
#xtranslate PARSERCLASS.<obj>:objmethodsimplement => <obj>\[CA_OBJECT_N+10\]
|
||||
|
||||
|
||||
#xtranslate PARSERCLASS.<obj>:oinit => (OBJGEN.(<obj>):(4))
|
||||
#xtranslate PARSERCLASS.<obj>:getclass => (OBJGEN.(<obj>):(5))
|
||||
#xtranslate PARSERCLASS.<obj>:isclass => (OBJGEN.(<obj>):(6))
|
||||
#xtranslate PARSERCLASS.<obj>:getattrib => (OBJGEN.(<obj>):(7))
|
||||
#xtranslate PARSERCLASS.<obj>:setattrib => (OBJGEN.(<obj>):(8))
|
||||
#xtranslate PARSERCLASS.<obj>:onew => (OBJGEN.(<obj>):(CM_OBJECT_N+1))
|
||||
#xtranslate PARSERCLASS.<obj>:ocreate => (OBJGEN.(<obj>):(CM_OBJECT_N+2))
|
||||
#xtranslate PARSERCLASS.<obj>:rawoinit => (OBJGEN.(<obj>):(CM_OBJECT_N+3))
|
||||
#xtranslate PARSERCLASS.<obj>:oinitclass => (OBJGEN.(<obj>):(CM_OBJECT_N+4))
|
||||
#xtranslate PARSERCLASS.<obj>:getmethodsimplement => (OBJGEN.(<obj>):(CM_OBJECT_N+5))
|
||||
#xtranslate PARSERCLASS.<obj>:attribidx => (OBJGEN.(<obj>):(CM_OBJECT_N+6))
|
||||
#xtranslate PARSERCLASS.<obj>:needclassid => (OBJGEN.(<obj>):(CM_OBJECT_N+7))
|
||||
#xtranslate PARSERCLASS.<obj>:isinheritfrom => (OBJGEN.(<obj>):(CM_OBJECT_N+8))
|
||||
|
||||
|
||||
|
||||
// ™r”k”lve: onew(inputReader,name,errorStream)
|
||||
|
||||
// ™r”k”lve: onew(inputReader,name,errorStream)
|
||||
|
||||
#endif // _PARSERCLASS_OCH_
|
||||
#endif // _CA_CM_ONLY_
|
||||
|
||||
#ifndef CA_PARSERCLASS_N
|
||||
#define CA_PARSERCLASS_N CA_TREADERCLASS_N+0
|
||||
#define CM_PARSERCLASS_N CM_TREADERCLASS_N+0
|
||||
#endif // CA_PARSERCLASS_N
|
||||
|
||||
|
||||
**********************************************************************
|
||||
#ifdef _PARSER_PRG_
|
||||
#ifndef _PARSER_PRG_OCH_
|
||||
#define _PARSER_PRG_OCH_
|
||||
|
||||
|
||||
**********************************************************************
|
||||
#xtranslate othis:<m> => PARSER.(othis):<m>
|
||||
#xtranslate thisclass:<m> => PARSERCLASS.(this:getClass()):<m>
|
||||
#define CTHIS PARSER
|
||||
|
||||
|
||||
**********************************************************************
|
||||
#xtranslate this:<m> => PARSER.(this):<m>
|
||||
|
||||
#xcommand implement readitem() => static function readitem(this)
|
||||
#xcommand implement putparserbuffer(anItem) => ;
|
||||
static function putparserbuffer(this,anItem)
|
||||
#xcommand implement getparserbuffer() => ;
|
||||
static function getparserbuffer(this)
|
||||
#xcommand implement unputparserbuffer() => ;
|
||||
static function unputparserbuffer(this)
|
||||
#xcommand implement ungetparserbuffer(anItem) => ;
|
||||
static function ungetparserbuffer(this,anItem)
|
||||
#xcommand implement clearparserbuffer() => ;
|
||||
static function clearparserbuffer(this)
|
||||
#xcommand implement rds() => static function rds(this)
|
||||
#xcommand implement unrds(n) => static function unrds(this,n)
|
||||
#xcommand implement strparserbuffer() => ;
|
||||
static function strparserbuffer(this)
|
||||
#xcommand implement arrayparserbuffer() => ;
|
||||
static function arrayparserbuffer(this)
|
||||
#xcommand implement oinit(inputReader,name,errorStream) => ;
|
||||
static function oinit(this,inputReader,name,errorStream)
|
||||
|
||||
#ifdef _IMPLEMENT_EXPORT_
|
||||
#xcommand implement export readitem() => function readitem(this)
|
||||
#xcommand implement export putparserbuffer(anItem) => ;
|
||||
function putparserbuffer(this,anItem)
|
||||
#xcommand implement export getparserbuffer() => ;
|
||||
function getparserbuffer(this)
|
||||
#xcommand implement export unputparserbuffer() => ;
|
||||
function unputparserbuffer(this)
|
||||
#xcommand implement export ungetparserbuffer(anItem) => ;
|
||||
function ungetparserbuffer(this,anItem)
|
||||
#xcommand implement export clearparserbuffer() => ;
|
||||
function clearparserbuffer(this)
|
||||
#xcommand implement export rds() => function rds(this)
|
||||
#xcommand implement export unrds(n) => function unrds(this,n)
|
||||
#xcommand implement export strparserbuffer() => ;
|
||||
function strparserbuffer(this)
|
||||
#xcommand implement export arrayparserbuffer() => ;
|
||||
function arrayparserbuffer(this)
|
||||
#xcommand implement export oinit(inputReader,name,errorStream) => ;
|
||||
function oinit(this,inputReader,name,errorStream)
|
||||
#endif // _IMPLEMENT_EXPORT_
|
||||
|
||||
#xtranslate super:oinit => (OBJGENM.(eval(BEHAVIOR.clTREADER():objmethodsimplement)).(this):(4))
|
||||
#xtranslate super:getclass => (OBJGENM.(eval(BEHAVIOR.clTREADER():objmethodsimplement)).(this):(5))
|
||||
#xtranslate super:isclass => (OBJGENM.(eval(BEHAVIOR.clTREADER():objmethodsimplement)).(this):(6))
|
||||
#xtranslate super:getattrib => (OBJGENM.(eval(BEHAVIOR.clTREADER():objmethodsimplement)).(this):(7))
|
||||
#xtranslate super:setattrib => (OBJGENM.(eval(BEHAVIOR.clTREADER():objmethodsimplement)).(this):(8))
|
||||
#xtranslate super:read => (OBJGENM.(eval(BEHAVIOR.clTREADER():objmethodsimplement)).(this):(CM_OBJECT_N+1))
|
||||
#xtranslate super:unread => (OBJGENM.(eval(BEHAVIOR.clTREADER():objmethodsimplement)).(this):(CM_OBJECT_N+2))
|
||||
#xtranslate super:readtbuffer => (OBJGENM.(eval(BEHAVIOR.clTREADER():objmethodsimplement)).(this):(CM_OBJECT_N+3))
|
||||
#xtranslate super:arraytbuffer => (OBJGENM.(eval(BEHAVIOR.clTREADER():objmethodsimplement)).(this):(CM_OBJECT_N+4))
|
||||
#xtranslate super:readitem => (OBJGENM.(eval(BEHAVIOR.clTREADER():objmethodsimplement)).(this):(CM_OBJECT_N+5))
|
||||
#xtranslate super:iserror => (OBJGENM.(eval(BEHAVIOR.clTREADER():objmethodsimplement)).(this):(CM_OBJECT_N+6))
|
||||
#xtranslate super:adderror => (OBJGENM.(eval(BEHAVIOR.clTREADER():objmethodsimplement)).(this):(CM_OBJECT_N+7))
|
||||
#xtranslate super:destruct => (OBJGENM.(eval(BEHAVIOR.clTREADER():objmethodsimplement)).(this):(CM_OBJECT_N+8))
|
||||
#xtranslate super:readinput => (OBJGENM.(eval(BEHAVIOR.clTREADER():objmethodsimplement)).(this):(CM_READER_N+1))
|
||||
#xtranslate super:unreadinput => (OBJGENM.(eval(BEHAVIOR.clTREADER():objmethodsimplement)).(this):(CM_READER_N+2))
|
||||
#xtranslate super:addinputreader => (OBJGENM.(eval(BEHAVIOR.clTREADER():objmethodsimplement)).(this):(CM_READER_N+3))
|
||||
|
||||
**********************************************************************
|
||||
static function setCMethods(pOsztaly)
|
||||
// Egy t”mb”t felt”lt az oszt ly m–veleti blokkjaival.
|
||||
pOsztaly[(CM_OBJECT_N+5)]:={|this| readitem(this)}
|
||||
pOsztaly[(CM_TREADER_N+1)]:={|this,anItem| putparserbuffer(this,anItem)}
|
||||
pOsztaly[(CM_TREADER_N+2)]:={|this| getparserbuffer(this)}
|
||||
pOsztaly[(CM_TREADER_N+3)]:={|this| unputparserbuffer(this)}
|
||||
pOsztaly[(CM_TREADER_N+4)]:={|this,anItem| ungetparserbuffer(this,anItem)}
|
||||
pOsztaly[(CM_TREADER_N+5)]:={|this| clearparserbuffer(this)}
|
||||
pOsztaly[(CM_TREADER_N+6)]:={|this| rds(this)}
|
||||
pOsztaly[(CM_TREADER_N+7)]:={|this,n| unrds(this,n)}
|
||||
pOsztaly[(CM_TREADER_N+8)]:={|this| strparserbuffer(this)}
|
||||
pOsztaly[(CM_TREADER_N+9)]:={|this| arrayparserbuffer(this)}
|
||||
pOsztaly[(4)]:={|this,inputReader,name,errorStream| oinit(this,inputReader,name,errorStream)}
|
||||
return pOsztaly
|
||||
|
||||
**********************************************************************
|
||||
static function setCams(ta,tm)
|
||||
// Egy t”mb”t felt”lt az oszt ly ltal def. objektumok attrib£tumaival ‚s m–veleteivel.
|
||||
ta[CA_TREADER_N+1-CA_NIL_N] := {CA_TREADER_N+1,'item',nil}
|
||||
ta[CA_TREADER_N+2-CA_NIL_N] := {CA_TREADER_N+2,'parserbuffer',nil}
|
||||
|
||||
tm[(CM_OBJECT_N+5)-CM_NIL_N] := {(CM_OBJECT_N+5),'readitem','',nil}
|
||||
tm[(CM_TREADER_N+1)-CM_NIL_N] := {(CM_TREADER_N+1),'putparserbuffer','anItem',nil}
|
||||
tm[(CM_TREADER_N+2)-CM_NIL_N] := {(CM_TREADER_N+2),'getparserbuffer','',nil}
|
||||
tm[(CM_TREADER_N+3)-CM_NIL_N] := {(CM_TREADER_N+3),'unputparserbuffer','',nil}
|
||||
tm[(CM_TREADER_N+4)-CM_NIL_N] := {(CM_TREADER_N+4),'ungetparserbuffer','anItem',nil}
|
||||
tm[(CM_TREADER_N+5)-CM_NIL_N] := {(CM_TREADER_N+5),'clearparserbuffer','',nil}
|
||||
tm[(CM_TREADER_N+6)-CM_NIL_N] := {(CM_TREADER_N+6),'rds','',nil}
|
||||
tm[(CM_TREADER_N+7)-CM_NIL_N] := {(CM_TREADER_N+7),'unrds','n',nil}
|
||||
tm[(CM_TREADER_N+8)-CM_NIL_N] := {(CM_TREADER_N+8),'strparserbuffer','',nil}
|
||||
tm[(CM_TREADER_N+9)-CM_NIL_N] := {(CM_TREADER_N+9),'arrayparserbuffer','',nil}
|
||||
tm[(4)-CM_NIL_N] := {(4),'oinit','inputReader,name,errorStream',nil}
|
||||
return nil
|
||||
|
||||
#ifndef _NO_CLPARSER_
|
||||
#ifdef _STRICT_PARENT_
|
||||
#ifdef _CA_CM_ONLY_
|
||||
#include "meta.och"
|
||||
#else // _CA_CM_ONLY_
|
||||
#define _CA_CM_ONLY_
|
||||
#include "meta.och"
|
||||
#undef _CA_CM_ONLY_
|
||||
#endif // _CA_CM_ONLY_
|
||||
#else
|
||||
#include "meta.och"
|
||||
#endif // _STRICT_PARENT_
|
||||
**********************************************************************
|
||||
function clPARSER()
|
||||
// El“szedi az oszt lyt. (class)
|
||||
static osztaly
|
||||
if (osztaly==nil)
|
||||
osztaly:=META.mcPARSERCLASS():onew(;
|
||||
clTREADER(),;
|
||||
"PARSER",;
|
||||
CA_PARSER_N,;
|
||||
CM_PARSER_N,;
|
||||
{|ta,tm|setCams(ta,tm)},;
|
||||
{|t|setCMethods(t)})
|
||||
endif
|
||||
return osztaly
|
||||
#endif // _NO_CLPARSER_
|
||||
|
||||
#ifndef _NO_PARSERCLASS_
|
||||
|
||||
**********************************************************************
|
||||
#xtranslate class:<m> => PARSERCLASS.(class):<m>
|
||||
|
||||
#xcommand cimplement onew(inputReader,name,errorStream) => ;
|
||||
static function onew(class,inputReader,name,errorStream)
|
||||
|
||||
#ifdef _IMPLEMENT_EXPORT_
|
||||
#xcommand cimplement export onew(inputReader,name,errorStream) => ;
|
||||
function onew(class,inputReader,name,errorStream)
|
||||
#endif // _IMPLEMENT_EXPORT_
|
||||
|
||||
#xtranslate superclass:oinit => (OBJGENM.(eval(BEHAVIOR.mcTREADERCLASS():objmethodsimplement)).(class):(4))
|
||||
#xtranslate superclass:getclass => (OBJGENM.(eval(BEHAVIOR.mcTREADERCLASS():objmethodsimplement)).(class):(5))
|
||||
#xtranslate superclass:isclass => (OBJGENM.(eval(BEHAVIOR.mcTREADERCLASS():objmethodsimplement)).(class):(6))
|
||||
#xtranslate superclass:getattrib => (OBJGENM.(eval(BEHAVIOR.mcTREADERCLASS():objmethodsimplement)).(class):(7))
|
||||
#xtranslate superclass:setattrib => (OBJGENM.(eval(BEHAVIOR.mcTREADERCLASS():objmethodsimplement)).(class):(8))
|
||||
#xtranslate superclass:onew => (OBJGENM.(eval(BEHAVIOR.mcTREADERCLASS():objmethodsimplement)).(class):(CM_OBJECT_N+1))
|
||||
#xtranslate superclass:ocreate => (OBJGENM.(eval(BEHAVIOR.mcTREADERCLASS():objmethodsimplement)).(class):(CM_OBJECT_N+2))
|
||||
#xtranslate superclass:rawoinit => (OBJGENM.(eval(BEHAVIOR.mcTREADERCLASS():objmethodsimplement)).(class):(CM_OBJECT_N+3))
|
||||
#xtranslate superclass:oinitclass => (OBJGENM.(eval(BEHAVIOR.mcTREADERCLASS():objmethodsimplement)).(class):(CM_OBJECT_N+4))
|
||||
#xtranslate superclass:getmethodsimplement => (OBJGENM.(eval(BEHAVIOR.mcTREADERCLASS():objmethodsimplement)).(class):(CM_OBJECT_N+5))
|
||||
#xtranslate superclass:attribidx => (OBJGENM.(eval(BEHAVIOR.mcTREADERCLASS():objmethodsimplement)).(class):(CM_OBJECT_N+6))
|
||||
#xtranslate superclass:needclassid => (OBJGENM.(eval(BEHAVIOR.mcTREADERCLASS():objmethodsimplement)).(class):(CM_OBJECT_N+7))
|
||||
#xtranslate superclass:isinheritfrom => (OBJGENM.(eval(BEHAVIOR.mcTREADERCLASS():objmethodsimplement)).(class):(CM_OBJECT_N+8))
|
||||
|
||||
**********************************************************************
|
||||
static function setMCMethods(pOsztaly)
|
||||
// Egy t”mb”t felt”lt a metaoszt ly m–veleti blokkjaival.
|
||||
pOsztaly[(CM_OBJECT_N+1)]:={|class,inputReader,name,errorStream| onew(class,inputReader,name,errorStream)}
|
||||
return pOsztaly
|
||||
|
||||
**********************************************************************
|
||||
static function setMCams(ta,tm)
|
||||
// Egy t”mb”t felt”lt a metaoszt ly ltal def. objektumok attrib£tumaival ‚s m–veleteivel.
|
||||
|
||||
tm[(CM_OBJECT_N+1)-CM_NIL_N] := {(CM_OBJECT_N+1),'onew','inputReader,name,errorStream',nil}
|
||||
return nil
|
||||
|
||||
**********************************************************************
|
||||
#ifndef _NO_MCPARSERCLASS_
|
||||
#ifdef _STRICT_PARENT_
|
||||
#ifdef _CA_CM_ONLY_
|
||||
#include "meta.och" // "metaclas.och"
|
||||
#else // _CA_CM_ONLY_
|
||||
#define _CA_CM_ONLY_
|
||||
#include "meta.och" // "metaclas.och"
|
||||
#undef _CA_CM_ONLY_
|
||||
#endif // _CA_CM_ONLY_
|
||||
#else
|
||||
#include "meta.och" // "metaclas.och"
|
||||
#endif // _STRICT_PARENT_
|
||||
function mcPARSERCLASS()
|
||||
// El“szedi az oszt ly metaoszt ly t. (metaclass)
|
||||
static metaOsztaly
|
||||
if (metaOsztaly==nil)
|
||||
metaOsztaly:=META.clMETA():onew(;
|
||||
mcTREADERCLASS(),;
|
||||
"PARSERCLASS",;
|
||||
CA_PARSERCLASS_N,;
|
||||
CM_PARSERCLASS_N,;
|
||||
{|ta,tm|setMCams(ta,tm)},;
|
||||
{|t|setMCMethods(t)})
|
||||
endif
|
||||
return metaOsztaly
|
||||
#endif // _NO_MCPARSERCLASS_
|
||||
|
||||
#endif // _NO_PARSERCLASS_
|
||||
#ifdef _IMPLEMENT_ONEW_
|
||||
**********************************************************************
|
||||
cimplement onew(inputReader,name,errorStream)
|
||||
local o:=class:ocreate()
|
||||
|
||||
PARSER.o:oinit(inputReader,name,errorStream)
|
||||
return o
|
||||
#endif // _IMPLEMENT_ONEW_
|
||||
|
||||
**********************************************************************
|
||||
#ifdef _IMPLEMENT_OINIT_
|
||||
implement oinit(inputReader,name,errorStream)
|
||||
super:oinit()
|
||||
return this
|
||||
#endif // _IMPLEMENT_OINIT_
|
||||
|
||||
**********************************************************************
|
||||
**********************************************************************
|
||||
#endif // _PARSER_PRG_OCH_
|
||||
#endif // _PARSER_PRG_
|
||||
@@ -1,152 +0,0 @@
|
||||
/*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
//*******************************************************************
|
||||
// parser.prg: A PARSER oszt ly implement ci¢ja.
|
||||
// 1999, Csisz r Levente
|
||||
|
||||
//*******************************************************************
|
||||
static BUF_EOF:={"buf_eof"}
|
||||
|
||||
//*******************************************************************
|
||||
#include "objgen.ch"
|
||||
|
||||
//*******************************************************************
|
||||
// #include "ctoken.ch"
|
||||
|
||||
//*******************************************************************
|
||||
#include "tbuffer.och"
|
||||
// #include "token.och"
|
||||
|
||||
//*******************************************************************
|
||||
#define _PARSER_PRG_
|
||||
#define _IMPLEMENT_ONEW_
|
||||
|
||||
#include "parser.och"
|
||||
|
||||
//*******************************************************************
|
||||
implement oinit(inputReader,name,errorStream)
|
||||
|
||||
super:oinit(inputReader,name,errorStream)
|
||||
|
||||
this:item:=nil
|
||||
this:parserBuffer:=C.TBUFFER:onew()
|
||||
|
||||
return this
|
||||
|
||||
//*******************************************************************
|
||||
implement putParserBuffer(anItem)
|
||||
// Hozz ad egy elemet a parserBufferhez. Az elem lehet speci lis is.
|
||||
TBUFFER.(this:parserBuffer):put(anItem)
|
||||
return nil
|
||||
|
||||
//*******************************************************************
|
||||
implement getParserBuffer()
|
||||
// Kivesz egy elemet a puffer elej‚r“l.
|
||||
// Az eof-ot eldobja.
|
||||
// return TBUFFER.(this:parserBuffer):unget()
|
||||
|
||||
local w
|
||||
|
||||
w:=TBUFFER.(this:parserBuffer):get()
|
||||
while(valtype(w)=="A" .and. w==BUF_EOF)
|
||||
w:=TBUFFER.(this:parserBuffer):get()
|
||||
end while
|
||||
return w
|
||||
|
||||
//*******************************************************************
|
||||
implement unputParserBuffer()
|
||||
// Kivesz egy elemet a puffer v‚g‚r“l.
|
||||
// return TBUFFER.(this:parserBuffer):unput()
|
||||
local w
|
||||
|
||||
w:=TBUFFER.(this:parserBuffer):unput()
|
||||
while(valtype(w)=="A" .and. w==BUF_EOF)
|
||||
w:=TBUFFER.(this:parserBuffer):unput()
|
||||
end while
|
||||
return w
|
||||
|
||||
//*******************************************************************
|
||||
implement ungetParserBuffer(anItem)
|
||||
// Betesz egy elemet a puffer elej‚re.
|
||||
return TBUFFER.(this:parserBuffer):unget(anItem)
|
||||
|
||||
//*******************************************************************
|
||||
implement clearParserBuffer()
|
||||
return TBUFFER.(this:parserBuffer):clear()
|
||||
|
||||
//*******************************************************************
|
||||
implement strParserBuffer()
|
||||
// Megadja a parserBuffer tartalm t stringk‚nt.
|
||||
// A nem stringeket eldobja.
|
||||
local i,str:="",w
|
||||
|
||||
for i:=1 to TBUFFER.(this:parserBuffer):bItemNumber
|
||||
w:=TBUFFER.(this:parserBuffer):getBItem(i)
|
||||
if (valtype(w)=="C")
|
||||
str+=w
|
||||
endif
|
||||
end for
|
||||
return str
|
||||
|
||||
//*******************************************************************
|
||||
implement arrayParserBuffer()
|
||||
local i,r:={}
|
||||
|
||||
for i:=1 to TBUFFER.(this:parserBuffer):bItemNumber
|
||||
aadd(r,TBUFFER.(this:parserBuffer):getBItem(i))
|
||||
end for
|
||||
return r
|
||||
|
||||
|
||||
//*******************************************************************
|
||||
implement readItem()
|
||||
|
||||
TBUFFER.(this:parserBuffer):clear()
|
||||
this:rds()
|
||||
|
||||
return this:item
|
||||
|
||||
//*******************************************************************
|
||||
implement rds()
|
||||
// Olvas egy karatert a readInput()-al a parserBuffer-be.
|
||||
// Az olvasott ‚rt‚ket a parserBuffer-be is beleteszi, ha az nem az eof.
|
||||
// Ha eof, akkor egy spec eof itemet tesz.
|
||||
|
||||
if (nil==(this:item:=this:readInput()))
|
||||
this:putParserBuffer(BUF_EOF)
|
||||
else
|
||||
this:putParserBuffer(this:item)
|
||||
endif
|
||||
|
||||
return this:item
|
||||
|
||||
//*******************************************************************
|
||||
implement unrds(n)
|
||||
// A buf utols¢ n elem‚t visszateszi az inputra. Az item-et t”rli.
|
||||
// Azt adja vissza, hogy h ny elemet siker<65>lt visszatenni.
|
||||
// Ha az n nil, akkor egyet tesz vissza.
|
||||
// Az eof-okat kihagyja.
|
||||
local w,i
|
||||
|
||||
this:item:=nil
|
||||
if (n==nil)
|
||||
n:=1
|
||||
endif
|
||||
i:=0
|
||||
while(i<n)
|
||||
if (nil==(w:=TBUFFER.(this:parserBuffer):unput()))
|
||||
return nil
|
||||
endif
|
||||
if !(valtype(w)=="A" .and. w==BUF_EOF)
|
||||
this:unReadInput(w)
|
||||
endif
|
||||
i++
|
||||
end while
|
||||
return i
|
||||
|
||||
//*******************************************************************
|
||||
|
||||
|
||||
|
||||
@@ -1,13 +0,0 @@
|
||||
/*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
//*******************************************************************
|
||||
// Az el“fordul¢ hib k hibak¢djai.
|
||||
|
||||
#define FRERR_REOPEN 1
|
||||
#define FRERR_OPEN 2
|
||||
#define FRERR_READ 3
|
||||
|
||||
//*******************************************************************
|
||||
|
||||
@@ -1,35 +0,0 @@
|
||||
/*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
//*******************************************************************
|
||||
// Az el“fordul¢ hib k hibak¢djai.
|
||||
#ifdef OLD
|
||||
#define FRERR_REOPEN 1
|
||||
#define FRERR_OPEN 2
|
||||
#define FRERR_READ 3
|
||||
|
||||
//*******************************************************************
|
||||
#define PRSERR_INVALIDMN 'PIMN'
|
||||
#define PRSERR_UNSUPPORTED 'PUNS'
|
||||
#define PRSERR_SDEFINE 'PSDF'
|
||||
#define PRSERR_LDEFINE 'PLDF'
|
||||
#define PRSERR_PDEFINE 'PPDF'
|
||||
#define PRSERR_MDUPLICATE 'PMDF'
|
||||
#define PRSERR_SUNDEF 'PUDF'
|
||||
#define PRSERR_SIFDEF 'PIFD'
|
||||
// #define PRSERR_IFDEF 'PIFD'
|
||||
// #define PRSERR_IFNDEF 'PIFN'
|
||||
#define PRSERR_ELSE 'PELS' // Nincs ifdef
|
||||
#define PRSERR_ELSE2 'PEL2' // Duplik lt else
|
||||
#define PRSERR_ENDIF 'PEND' // Nincs hozz ifdef
|
||||
// #define PRSERR_NMENDIF 'PENM' // #endif not match #if
|
||||
#define PRSERR_INCLUDE 'INC ' // Bad filename in #include
|
||||
// #define PRSERR_MAXINCLUDE 'MINC'
|
||||
#define PRSERR_INCLUDEFIND 'FINC'
|
||||
#define PRSERR_INCLUDEOPEN 'OINC'
|
||||
#define PRSERR_SXTRANSLATE 'SXTR'
|
||||
#endif
|
||||
|
||||
//*******************************************************************
|
||||
|
||||
@@ -1,52 +0,0 @@
|
||||
//
|
||||
// $Id$
|
||||
//
|
||||
|
||||
//*******************************************************************
|
||||
// prserr.cls: Hib kat t rol˘ ‚s kezel“ objektum.
|
||||
// 1999, Csisz r Levente
|
||||
|
||||
class PRSERR OBJECT
|
||||
|
||||
attrib group // A hiba csoport neve. Źltal ban az osz ly neve,
|
||||
// ahol a hiba defini lva van.
|
||||
attrib id // A hiba azonosˇt˘ja.
|
||||
|
||||
attrib params // Az (group,id) p r mondja meg, hogy minek kell
|
||||
// lennie.
|
||||
|
||||
attrib file
|
||||
attrib line
|
||||
attrib pos
|
||||
|
||||
nmethod defaultErrFormat(name)
|
||||
// Megadja a hib t sz”vegesen default m˘don form zva.
|
||||
|
||||
nmethod getErrStr()
|
||||
// Kiiˇrja a hib t form zva, sz”vegesen.
|
||||
// Ha a {group,id} p ros regisztr lva van, akkor a printBlock-al
|
||||
// megform zza, ha nem, akkor unknown error megjel”l‚ssel.
|
||||
|
||||
rmethod oinit(group_and_id,params,file,line,pos)
|
||||
// A group_and_id egy {group,id} p r.
|
||||
// A params szerkezete a group_and_id ltal van defini lva.
|
||||
|
||||
metaclass
|
||||
|
||||
attrib errDict // Egy t”mb, amiben {group,{id, printBlock},...}
|
||||
// elemek vannak.
|
||||
// A writeBlock mondja meg, hogyam kell kiˇrni az
|
||||
// egyes hib kat.
|
||||
|
||||
rmethod onew(group_and_id,params,file,line,pos)
|
||||
|
||||
nmethod onewFromToken(group_and_id,params,token)
|
||||
// A token file,line,pos- t haszn lja fel.
|
||||
|
||||
nmethod registerError(group_and_id,name,printBlock)
|
||||
// Regisztr l egy hib t (hiba tˇpust)
|
||||
// Az ilyen hib kat tudja azut n a getErrStr() form zva kiˇrni.
|
||||
|
||||
|
||||
rmethod oinitclass()
|
||||
|
||||
@@ -1,305 +0,0 @@
|
||||
// PRSERR.och oszt ly implement ci¢.
|
||||
// Gener lva: 1999.06.10, 14:40:39, OBJCCC v2.2.03
|
||||
// Meta oszt ly defin¡ci¢: Van
|
||||
|
||||
|
||||
#ifndef CA_OBJECT_N
|
||||
#ifdef _STRICT_PARENT_
|
||||
#ifdef _CA_CM_ONLY_
|
||||
#include "OBJECT.och"
|
||||
#else // _CA_CM_ONLY_
|
||||
#define _CA_CM_ONLY_
|
||||
#include "OBJECT.och"
|
||||
#undef _CA_CM_ONLY_
|
||||
#endif // _CA_CM_ONLY_
|
||||
#else
|
||||
#include "OBJECT.och"
|
||||
#endif // _STRICT_PARENT_
|
||||
#endif // CA_OBJECT_N
|
||||
|
||||
#ifndef _CA_CM_ONLY_
|
||||
#ifndef _PRSERR_OCH_
|
||||
#define _PRSERR_OCH_
|
||||
|
||||
|
||||
|
||||
|
||||
#xtranslate PRSERR.<obj>:oinit => (OBJGEN.(<obj>):(4))
|
||||
#xtranslate PRSERR.<obj>:getclass => (OBJGEN.(<obj>):(5))
|
||||
#xtranslate PRSERR.<obj>:isclass => (OBJGEN.(<obj>):(6))
|
||||
#xtranslate PRSERR.<obj>:getattrib => (OBJGEN.(<obj>):(7))
|
||||
#xtranslate PRSERR.<obj>:setattrib => (OBJGEN.(<obj>):(8))
|
||||
|
||||
|
||||
#xtranslate PRSERR.<obj>:group => <obj>\[CA_OBJECT_N+1\]
|
||||
#xtranslate PRSERR.<obj>:id => <obj>\[CA_OBJECT_N+2\]
|
||||
#xtranslate PRSERR.<obj>:params => <obj>\[CA_OBJECT_N+3\]
|
||||
#xtranslate PRSERR.<obj>:file => <obj>\[CA_OBJECT_N+4\]
|
||||
#xtranslate PRSERR.<obj>:line => <obj>\[CA_OBJECT_N+5\]
|
||||
#xtranslate PRSERR.<obj>:pos => <obj>\[CA_OBJECT_N+6\]
|
||||
|
||||
// Specifik lva: defaulterrformat(name)
|
||||
// Specifik lva: geterrstr()
|
||||
// ™r”k”lve: oinit(group_and_id,params,file,line,pos)
|
||||
|
||||
#xtranslate PRSERR.<obj>:defaulterrformat => (OBJGEN.(<obj>):(CM_OBJECT_N+1))
|
||||
#xtranslate PRSERR.<obj>:geterrstr => (OBJGEN.(<obj>):(CM_OBJECT_N+2))
|
||||
// ™r”k”lve: oinit(group_and_id,params,file,line,pos)
|
||||
|
||||
#endif // _PRSERR_OCH_
|
||||
#endif // _CA_CM_ONLY_
|
||||
|
||||
#ifndef CA_PRSERR_N
|
||||
#define CA_PRSERR_N CA_OBJECT_N+6
|
||||
#define CM_PRSERR_N CM_OBJECT_N+2
|
||||
#endif // CA_PRSERR_N
|
||||
|
||||
#ifndef _CA_CM_ONLY_
|
||||
#ifndef _PRSERRCLASS_OCH_
|
||||
#define _PRSERRCLASS_OCH_
|
||||
|
||||
**********************************************************************
|
||||
#xtranslate C.PRSERR:<m> => (PRSERRCLASS.clPRSERR():<m>)
|
||||
#xtranslate C.PRSERR:self() => (clPRSERR())
|
||||
|
||||
|
||||
#xtranslate PRSERRCLASS.<obj>:parent => <obj>\[CA_OBJECT_N+1\]
|
||||
#xtranslate PRSERRCLASS.<obj>:name => <obj>\[CA_OBJECT_N+2\]
|
||||
#xtranslate PRSERRCLASS.<obj>:objsize => <obj>\[CA_OBJECT_N+3\]
|
||||
#xtranslate PRSERRCLASS.<obj>:attribs => <obj>\[CA_OBJECT_N+4\]
|
||||
#xtranslate PRSERRCLASS.<obj>:methods => <obj>\[CA_OBJECT_N+5\]
|
||||
#xtranslate PRSERRCLASS.<obj>:classid => <obj>\[CA_OBJECT_N+6\]
|
||||
#xtranslate PRSERRCLASS.<obj>:parentclassids => <obj>\[CA_OBJECT_N+7\]
|
||||
#xtranslate PRSERRCLASS.<obj>:amblock => <obj>\[CA_OBJECT_N+8\]
|
||||
#xtranslate PRSERRCLASS.<obj>:methodsblock => <obj>\[CA_OBJECT_N+9\]
|
||||
#xtranslate PRSERRCLASS.<obj>:objmethodsimplement => <obj>\[CA_OBJECT_N+10\]
|
||||
|
||||
|
||||
#xtranslate PRSERRCLASS.<obj>:oinit => (OBJGEN.(<obj>):(4))
|
||||
#xtranslate PRSERRCLASS.<obj>:getclass => (OBJGEN.(<obj>):(5))
|
||||
#xtranslate PRSERRCLASS.<obj>:isclass => (OBJGEN.(<obj>):(6))
|
||||
#xtranslate PRSERRCLASS.<obj>:getattrib => (OBJGEN.(<obj>):(7))
|
||||
#xtranslate PRSERRCLASS.<obj>:setattrib => (OBJGEN.(<obj>):(8))
|
||||
#xtranslate PRSERRCLASS.<obj>:onew => (OBJGEN.(<obj>):(CM_OBJECT_N+1))
|
||||
#xtranslate PRSERRCLASS.<obj>:ocreate => (OBJGEN.(<obj>):(CM_OBJECT_N+2))
|
||||
#xtranslate PRSERRCLASS.<obj>:rawoinit => (OBJGEN.(<obj>):(CM_OBJECT_N+3))
|
||||
#xtranslate PRSERRCLASS.<obj>:oinitclass => (OBJGEN.(<obj>):(CM_OBJECT_N+4))
|
||||
#xtranslate PRSERRCLASS.<obj>:getmethodsimplement => (OBJGEN.(<obj>):(CM_OBJECT_N+5))
|
||||
#xtranslate PRSERRCLASS.<obj>:attribidx => (OBJGEN.(<obj>):(CM_OBJECT_N+6))
|
||||
#xtranslate PRSERRCLASS.<obj>:needclassid => (OBJGEN.(<obj>):(CM_OBJECT_N+7))
|
||||
#xtranslate PRSERRCLASS.<obj>:isinheritfrom => (OBJGEN.(<obj>):(CM_OBJECT_N+8))
|
||||
|
||||
|
||||
#xtranslate PRSERRCLASS.<obj>:errdict => <obj>\[CA_BEHAVIOR_N+1\]
|
||||
|
||||
// ™r”k”lve: onew(group_and_id,params,file,line,pos)
|
||||
// Specifik lva: onewfromtoken(group_and_id,params,token)
|
||||
// Specifik lva: registererror(group_and_id,name,printBlock)
|
||||
// ™r”k”lve: oinitclass()
|
||||
|
||||
// ™r”k”lve: onew(group_and_id,params,file,line,pos)
|
||||
#xtranslate PRSERRCLASS.<obj>:onewfromtoken => (OBJGEN.(<obj>):(CM_BEHAVIOR_N+1))
|
||||
#xtranslate PRSERRCLASS.<obj>:registererror => (OBJGEN.(<obj>):(CM_BEHAVIOR_N+2))
|
||||
// ™r”k”lve: oinitclass()
|
||||
|
||||
#endif // _PRSERRCLASS_OCH_
|
||||
#endif // _CA_CM_ONLY_
|
||||
|
||||
#ifndef CA_PRSERRCLASS_N
|
||||
#define CA_PRSERRCLASS_N CA_BEHAVIOR_N+1
|
||||
#define CM_PRSERRCLASS_N CM_BEHAVIOR_N+2
|
||||
#endif // CA_PRSERRCLASS_N
|
||||
|
||||
|
||||
**********************************************************************
|
||||
#ifdef _PRSERR_PRG_
|
||||
#ifndef _PRSERR_PRG_OCH_
|
||||
#define _PRSERR_PRG_OCH_
|
||||
|
||||
|
||||
**********************************************************************
|
||||
#xtranslate othis:<m> => PRSERR.(othis):<m>
|
||||
#xtranslate thisclass:<m> => PRSERRCLASS.(this:getClass()):<m>
|
||||
#define CTHIS PRSERR
|
||||
|
||||
|
||||
**********************************************************************
|
||||
#xtranslate this:<m> => PRSERR.(this):<m>
|
||||
|
||||
#xcommand implement defaulterrformat(name) => ;
|
||||
static function defaulterrformat(this,name)
|
||||
#xcommand implement geterrstr() => static function geterrstr(this)
|
||||
#xcommand implement oinit(group_and_id,params,file,line,pos) => ;
|
||||
static function oinit(this,group_and_id,params,file,line,pos)
|
||||
|
||||
#ifdef _IMPLEMENT_EXPORT_
|
||||
#xcommand implement export defaulterrformat(name) => ;
|
||||
function defaulterrformat(this,name)
|
||||
#xcommand implement export geterrstr() => function geterrstr(this)
|
||||
#xcommand implement export oinit(group_and_id,params,file,line,pos) => ;
|
||||
function oinit(this,group_and_id,params,file,line,pos)
|
||||
#endif // _IMPLEMENT_EXPORT_
|
||||
|
||||
#xtranslate super:oinit => (OBJGENM.(eval(BEHAVIOR.clOBJECT():objmethodsimplement)).(this):(4))
|
||||
#xtranslate super:getclass => (OBJGENM.(eval(BEHAVIOR.clOBJECT():objmethodsimplement)).(this):(5))
|
||||
#xtranslate super:isclass => (OBJGENM.(eval(BEHAVIOR.clOBJECT():objmethodsimplement)).(this):(6))
|
||||
#xtranslate super:getattrib => (OBJGENM.(eval(BEHAVIOR.clOBJECT():objmethodsimplement)).(this):(7))
|
||||
#xtranslate super:setattrib => (OBJGENM.(eval(BEHAVIOR.clOBJECT():objmethodsimplement)).(this):(8))
|
||||
|
||||
**********************************************************************
|
||||
static function setCMethods(pOsztaly)
|
||||
// Egy t”mb”t felt”lt az oszt ly m–veleti blokkjaival.
|
||||
pOsztaly[(CM_OBJECT_N+1)]:={|this,name| defaulterrformat(this,name)}
|
||||
pOsztaly[(CM_OBJECT_N+2)]:={|this| geterrstr(this)}
|
||||
pOsztaly[(4)]:={|this,group_and_id,params,file,line,pos| oinit(this,group_and_id,params,file,line,pos)}
|
||||
return pOsztaly
|
||||
|
||||
**********************************************************************
|
||||
static function setCams(ta,tm)
|
||||
// Egy t”mb”t felt”lt az oszt ly ltal def. objektumok attrib£tumaival ‚s m–veleteivel.
|
||||
ta[CA_OBJECT_N+1-CA_NIL_N] := {CA_OBJECT_N+1,'group', }
|
||||
ta[CA_OBJECT_N+2-CA_NIL_N] := {CA_OBJECT_N+2,'id', }
|
||||
ta[CA_OBJECT_N+3-CA_NIL_N] := {CA_OBJECT_N+3,'params', }
|
||||
ta[CA_OBJECT_N+4-CA_NIL_N] := {CA_OBJECT_N+4,'file',nil}
|
||||
ta[CA_OBJECT_N+5-CA_NIL_N] := {CA_OBJECT_N+5,'line',nil}
|
||||
ta[CA_OBJECT_N+6-CA_NIL_N] := {CA_OBJECT_N+6,'pos',nil}
|
||||
|
||||
tm[(CM_OBJECT_N+1)-CM_NIL_N] := {(CM_OBJECT_N+1),'defaulterrformat','name',nil}
|
||||
tm[(CM_OBJECT_N+2)-CM_NIL_N] := {(CM_OBJECT_N+2),'geterrstr','',nil}
|
||||
tm[(4)-CM_NIL_N] := {(4),'oinit','group_and_id,params,file,line,pos',nil}
|
||||
return nil
|
||||
|
||||
#ifndef _NO_CLPRSERR_
|
||||
#ifdef _STRICT_PARENT_
|
||||
#ifdef _CA_CM_ONLY_
|
||||
#include "meta.och"
|
||||
#else // _CA_CM_ONLY_
|
||||
#define _CA_CM_ONLY_
|
||||
#include "meta.och"
|
||||
#undef _CA_CM_ONLY_
|
||||
#endif // _CA_CM_ONLY_
|
||||
#else
|
||||
#include "meta.och"
|
||||
#endif // _STRICT_PARENT_
|
||||
**********************************************************************
|
||||
function clPRSERR()
|
||||
// El“szedi az oszt lyt. (class)
|
||||
static osztaly
|
||||
if (osztaly==nil)
|
||||
osztaly:=META.mcPRSERRCLASS():onew(;
|
||||
clOBJECT(),;
|
||||
"PRSERR",;
|
||||
CA_PRSERR_N,;
|
||||
CM_PRSERR_N,;
|
||||
{|ta,tm|setCams(ta,tm)},;
|
||||
{|t|setCMethods(t)})
|
||||
endif
|
||||
return osztaly
|
||||
#endif // _NO_CLPRSERR_
|
||||
|
||||
#ifndef _NO_PRSERRCLASS_
|
||||
|
||||
**********************************************************************
|
||||
#xtranslate class:<m> => PRSERRCLASS.(class):<m>
|
||||
|
||||
#xcommand cimplement onew(group_and_id,params,file,line,pos) => ;
|
||||
static function onew(class,group_and_id,params,file,line,pos)
|
||||
#xcommand cimplement onewfromtoken(group_and_id,params,token) => ;
|
||||
static function onewfromtoken(class,group_and_id,params,token)
|
||||
#xcommand cimplement registererror(group_and_id,name,printBlock) => ;
|
||||
static function registererror(class,group_and_id,name,printBlock)
|
||||
#xcommand cimplement oinitclass() => static function oinitclass(class)
|
||||
|
||||
#ifdef _IMPLEMENT_EXPORT_
|
||||
#xcommand cimplement export onew(group_and_id,params,file,line,pos) => ;
|
||||
function onew(class,group_and_id,params,file,line,pos)
|
||||
#xcommand cimplement export onewfromtoken(group_and_id,params,token) => ;
|
||||
function onewfromtoken(class,group_and_id,params,token)
|
||||
#xcommand cimplement export registererror(group_and_id,name,printBlock) => ;
|
||||
function registererror(class,group_and_id,name,printBlock)
|
||||
#xcommand cimplement export oinitclass() => function oinitclass(class)
|
||||
#endif // _IMPLEMENT_EXPORT_
|
||||
|
||||
#xtranslate superclass:oinit => (OBJGENM.(eval(BEHAVIOR.clBEHAVIOR():objmethodsimplement)).(class):(4))
|
||||
#xtranslate superclass:getclass => (OBJGENM.(eval(BEHAVIOR.clBEHAVIOR():objmethodsimplement)).(class):(5))
|
||||
#xtranslate superclass:isclass => (OBJGENM.(eval(BEHAVIOR.clBEHAVIOR():objmethodsimplement)).(class):(6))
|
||||
#xtranslate superclass:getattrib => (OBJGENM.(eval(BEHAVIOR.clBEHAVIOR():objmethodsimplement)).(class):(7))
|
||||
#xtranslate superclass:setattrib => (OBJGENM.(eval(BEHAVIOR.clBEHAVIOR():objmethodsimplement)).(class):(8))
|
||||
#xtranslate superclass:onew => (OBJGENM.(eval(BEHAVIOR.clBEHAVIOR():objmethodsimplement)).(class):(CM_OBJECT_N+1))
|
||||
#xtranslate superclass:ocreate => (OBJGENM.(eval(BEHAVIOR.clBEHAVIOR():objmethodsimplement)).(class):(CM_OBJECT_N+2))
|
||||
#xtranslate superclass:rawoinit => (OBJGENM.(eval(BEHAVIOR.clBEHAVIOR():objmethodsimplement)).(class):(CM_OBJECT_N+3))
|
||||
#xtranslate superclass:oinitclass => (OBJGENM.(eval(BEHAVIOR.clBEHAVIOR():objmethodsimplement)).(class):(CM_OBJECT_N+4))
|
||||
#xtranslate superclass:getmethodsimplement => (OBJGENM.(eval(BEHAVIOR.clBEHAVIOR():objmethodsimplement)).(class):(CM_OBJECT_N+5))
|
||||
#xtranslate superclass:attribidx => (OBJGENM.(eval(BEHAVIOR.clBEHAVIOR():objmethodsimplement)).(class):(CM_OBJECT_N+6))
|
||||
#xtranslate superclass:needclassid => (OBJGENM.(eval(BEHAVIOR.clBEHAVIOR():objmethodsimplement)).(class):(CM_OBJECT_N+7))
|
||||
#xtranslate superclass:isinheritfrom => (OBJGENM.(eval(BEHAVIOR.clBEHAVIOR():objmethodsimplement)).(class):(CM_OBJECT_N+8))
|
||||
|
||||
**********************************************************************
|
||||
static function setMCMethods(pOsztaly)
|
||||
// Egy t”mb”t felt”lt a metaoszt ly m–veleti blokkjaival.
|
||||
pOsztaly[(CM_OBJECT_N+1)]:={|class,group_and_id,params,file,line,pos| onew(class,group_and_id,params,file,line,pos)}
|
||||
pOsztaly[(CM_BEHAVIOR_N+1)]:={|class,group_and_id,params,token| onewfromtoken(class,group_and_id,params,token)}
|
||||
pOsztaly[(CM_BEHAVIOR_N+2)]:={|class,group_and_id,name,printBlock| registererror(class,group_and_id,name,printBlock)}
|
||||
pOsztaly[(CM_OBJECT_N+4)]:={|class| oinitclass(class)}
|
||||
return pOsztaly
|
||||
|
||||
**********************************************************************
|
||||
static function setMCams(ta,tm)
|
||||
// Egy t”mb”t felt”lt a metaoszt ly ltal def. objektumok attrib£tumaival ‚s m–veleteivel.
|
||||
ta[CA_BEHAVIOR_N+1-CA_NIL_N] := {CA_BEHAVIOR_N+1,'errdict', }
|
||||
|
||||
tm[(CM_OBJECT_N+1)-CM_NIL_N] := {(CM_OBJECT_N+1),'onew','group_and_id,params,file,line,pos',nil}
|
||||
tm[(CM_BEHAVIOR_N+1)-CM_NIL_N] := {(CM_BEHAVIOR_N+1),'onewfromtoken','group_and_id,params,token',nil}
|
||||
tm[(CM_BEHAVIOR_N+2)-CM_NIL_N] := {(CM_BEHAVIOR_N+2),'registererror','group_and_id,name,printBlock',nil}
|
||||
tm[(CM_OBJECT_N+4)-CM_NIL_N] := {(CM_OBJECT_N+4),'oinitclass','',nil}
|
||||
return nil
|
||||
|
||||
**********************************************************************
|
||||
#ifndef _NO_MCPRSERRCLASS_
|
||||
#ifdef _STRICT_PARENT_
|
||||
#ifdef _CA_CM_ONLY_
|
||||
#include "meta.och" // "metaclas.och"
|
||||
#else // _CA_CM_ONLY_
|
||||
#define _CA_CM_ONLY_
|
||||
#include "meta.och" // "metaclas.och"
|
||||
#undef _CA_CM_ONLY_
|
||||
#endif // _CA_CM_ONLY_
|
||||
#else
|
||||
#include "meta.och" // "metaclas.och"
|
||||
#endif // _STRICT_PARENT_
|
||||
function mcPRSERRCLASS()
|
||||
// El“szedi az oszt ly metaoszt ly t. (metaclass)
|
||||
static metaOsztaly
|
||||
if (metaOsztaly==nil)
|
||||
metaOsztaly:=META.clMETA():onew(;
|
||||
clBEHAVIOR(),;
|
||||
"PRSERRCLASS",;
|
||||
CA_PRSERRCLASS_N,;
|
||||
CM_PRSERRCLASS_N,;
|
||||
{|ta,tm|setMCams(ta,tm)},;
|
||||
{|t|setMCMethods(t)})
|
||||
endif
|
||||
return metaOsztaly
|
||||
#endif // _NO_MCPRSERRCLASS_
|
||||
|
||||
#endif // _NO_PRSERRCLASS_
|
||||
#ifdef _IMPLEMENT_ONEW_
|
||||
**********************************************************************
|
||||
cimplement onew(group_and_id,params,file,line,pos)
|
||||
local o:=class:ocreate()
|
||||
|
||||
PRSERR.o:oinit(group_and_id,params,file,line,pos)
|
||||
return o
|
||||
#endif // _IMPLEMENT_ONEW_
|
||||
|
||||
**********************************************************************
|
||||
#ifdef _IMPLEMENT_OINIT_
|
||||
implement oinit(group_and_id,params,file,line,pos)
|
||||
super:oinit()
|
||||
return this
|
||||
#endif // _IMPLEMENT_OINIT_
|
||||
|
||||
**********************************************************************
|
||||
**********************************************************************
|
||||
#endif // _PRSERR_PRG_OCH_
|
||||
#endif // _PRSERR_PRG_
|
||||
@@ -1,136 +0,0 @@
|
||||
/*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
//*******************************************************************
|
||||
// prserr.prg: A PRSERR oszt ly implement ci¢ja.
|
||||
// 1999, Csisz r Levente
|
||||
|
||||
//*******************************************************************
|
||||
#include "objgen.ch"
|
||||
|
||||
//*******************************************************************
|
||||
#include "token.och"
|
||||
|
||||
//*******************************************************************
|
||||
#define _PRSERR_PRG_
|
||||
#define _IMPLEMENT_ONEW_
|
||||
|
||||
#include "prserr.och"
|
||||
|
||||
//*******************************************************************
|
||||
implement oinit(group_and_id,params,file,line,pos)
|
||||
|
||||
super:oinit()
|
||||
|
||||
this:group :=group_and_id[1]
|
||||
this:id :=group_and_id[2]
|
||||
this:params:=params
|
||||
this:file :=file
|
||||
this:line :=line
|
||||
this:pos :=pos
|
||||
|
||||
return this
|
||||
|
||||
|
||||
//*******************************************************************
|
||||
implement defaultErrFormat(name)
|
||||
// Egyenl“re a a $0,$1,...,$9-et cser‚li ki.
|
||||
// $0 az ”sszes param‚tert jel”li, vessz“vel elv lasztva.
|
||||
// Sajnos az strtran itt nem j¢, mert az az eredm‚nyben is cser‚lne.
|
||||
local str,i,c,allParam,wStr
|
||||
|
||||
if ("$0"$name)
|
||||
allParam:=""
|
||||
if (!empty(this:params))
|
||||
for i:=1 to len(this:params)
|
||||
if (i>1)
|
||||
allParam+=","
|
||||
endif
|
||||
allParam+=toStr(this:params[i])
|
||||
end for
|
||||
endif
|
||||
endif
|
||||
|
||||
str:=""
|
||||
while(0!=(i:=at("$",name)))
|
||||
str+=substr(name,1,i-1)
|
||||
c:=substr(name,i+1,1)
|
||||
if (!empty(c) .and. c$"0123456789")
|
||||
if (val(c)==0)
|
||||
str+=allParam
|
||||
elseif (val(c)<=len(this:params))
|
||||
str+=toStr(this:params[val(c)])
|
||||
else
|
||||
str+=substr(name,i,2)
|
||||
endif
|
||||
name:=substr(name,i+2)
|
||||
else
|
||||
str+=substr(name,i,1)
|
||||
name:=substr(name,i+1)
|
||||
endif
|
||||
end for
|
||||
str+=name
|
||||
wStr:=this:file+"("+toStr(this:line)+")"
|
||||
if (len(wStr)<20)
|
||||
wStr:=padr(wStr,20)
|
||||
endif
|
||||
return wStr+" Error: "+str
|
||||
// return padr(this:file+"("+toStr(this:line)+")",20)+" Error: "+name
|
||||
|
||||
//*******************************************************************
|
||||
implement getErrStr()
|
||||
local i, wIdt
|
||||
|
||||
if (0!=(i:=ascan(thisclass:errDict,{|x| x[1]==this:group})))
|
||||
wIdt:=thisclass:errDict[i][2]
|
||||
if (0!=(i:=ascan(wIdt,{|x| x[1]==this:id})))
|
||||
if (wIdt[i][3]==nil)
|
||||
return this:defaultErrFormat(wIdt[i][2])
|
||||
endif
|
||||
return eval(wIdt[i][3],this,wIdt[i][2])
|
||||
endif
|
||||
endif
|
||||
return this:defaultErrFormat("Unknown error $0")
|
||||
|
||||
//*******************************************************************
|
||||
cimplement oinitclass()
|
||||
superclass:oinitclass()
|
||||
class:errDict:={}
|
||||
return nil
|
||||
|
||||
//*******************************************************************
|
||||
cimplement onewFromToken(group_and_id,params,token)
|
||||
return class:onew(group_and_id,params,;
|
||||
TOKEN.token:file,;
|
||||
TOKEN.token:line,;
|
||||
TOKEN.token:pos)
|
||||
|
||||
//*******************************************************************
|
||||
cimplement registerError(group_and_id,name,printBlock)
|
||||
local i, wIdt
|
||||
|
||||
if (0==(i:=ascan(class:errDict,{|x| x[1]==group_and_id[1]})))
|
||||
aadd(class:errDict,{group_and_id[1],{}})
|
||||
i:=len(class:errDict)
|
||||
endif
|
||||
|
||||
wIdt:=class:errDict[i][2]
|
||||
if (0==(i:=ascan(wIdt,{|x| x[1]==group_and_id[2]})))
|
||||
aadd(wIdt,{group_and_id[2],name,printBlock})
|
||||
return group_and_id
|
||||
endif
|
||||
return nil
|
||||
|
||||
//*******************************************************************
|
||||
function evalErrorStream(errorStream,bBlock,nStart,nCount)
|
||||
if (!empty(errorStream))
|
||||
return aeval(errorStream,;
|
||||
{|x| eval(bBlock,PRSERR.x:getErrStr())},;
|
||||
nStart,nCount)
|
||||
endif
|
||||
return nil
|
||||
|
||||
//*******************************************************************
|
||||
|
||||
|
||||
@@ -1,31 +0,0 @@
|
||||
//
|
||||
// $Id$
|
||||
//
|
||||
|
||||
//*******************************************************************
|
||||
// prtree.cls: Parser tree. Elemz“ f t kezel“ objektum
|
||||
// 1999, Csisz r Levente
|
||||
|
||||
// Egy elemz“ f t lehet vele fel‚pˇteni ‚s kezelni.
|
||||
|
||||
class PRTREE OBJECT
|
||||
|
||||
attrib nWords // H ny sz˘ van benne.
|
||||
attrib tree // Ez maga a fa.
|
||||
// Az elemz“ fa:
|
||||
// <root>:=<node>
|
||||
// <node>:={ [<terminal>,] <inner branch1>, <inner branch2>, ... }
|
||||
//
|
||||
// <inner branch>:={item,<node>}
|
||||
//
|
||||
// <terminal>:={nil,result}
|
||||
//
|
||||
// item: A fa i. szintj‚n a keresett sz˘ i. eleme.
|
||||
// result: Amikor az elemz‚s k‚sz ‚s erem‚nyes, akkor a megtal lt
|
||||
// <terminal>-ban lev“ result lesz a this:result-ban.
|
||||
|
||||
|
||||
nmethod addWord(result,itemArray)
|
||||
|
||||
rmethod oinit()
|
||||
|
||||
@@ -1,249 +0,0 @@
|
||||
// PRTREE.och oszt ly implement ci¢.
|
||||
// Gener lva: 1999.06.10, 14:40:20, OBJCCC v2.2.03
|
||||
// Meta oszt ly defin¡ci¢: Van
|
||||
|
||||
|
||||
#ifndef CA_OBJECT_N
|
||||
#ifdef _STRICT_PARENT_
|
||||
#ifdef _CA_CM_ONLY_
|
||||
#include "OBJECT.och"
|
||||
#else // _CA_CM_ONLY_
|
||||
#define _CA_CM_ONLY_
|
||||
#include "OBJECT.och"
|
||||
#undef _CA_CM_ONLY_
|
||||
#endif // _CA_CM_ONLY_
|
||||
#else
|
||||
#include "OBJECT.och"
|
||||
#endif // _STRICT_PARENT_
|
||||
#endif // CA_OBJECT_N
|
||||
|
||||
#ifndef _CA_CM_ONLY_
|
||||
#ifndef _PRTREE_OCH_
|
||||
#define _PRTREE_OCH_
|
||||
|
||||
|
||||
|
||||
|
||||
#xtranslate PRTREE.<obj>:oinit => (OBJGEN.(<obj>):(4))
|
||||
#xtranslate PRTREE.<obj>:getclass => (OBJGEN.(<obj>):(5))
|
||||
#xtranslate PRTREE.<obj>:isclass => (OBJGEN.(<obj>):(6))
|
||||
#xtranslate PRTREE.<obj>:getattrib => (OBJGEN.(<obj>):(7))
|
||||
#xtranslate PRTREE.<obj>:setattrib => (OBJGEN.(<obj>):(8))
|
||||
|
||||
|
||||
#xtranslate PRTREE.<obj>:nwords => <obj>\[CA_OBJECT_N+1\]
|
||||
#xtranslate PRTREE.<obj>:tree => <obj>\[CA_OBJECT_N+2\]
|
||||
|
||||
// Specifik lva: addword(result,itemArray)
|
||||
// ™r”k”lve: oinit()
|
||||
|
||||
#xtranslate PRTREE.<obj>:addword => (OBJGEN.(<obj>):(CM_OBJECT_N+1))
|
||||
// ™r”k”lve: oinit()
|
||||
|
||||
#endif // _PRTREE_OCH_
|
||||
#endif // _CA_CM_ONLY_
|
||||
|
||||
#ifndef CA_PRTREE_N
|
||||
#define CA_PRTREE_N CA_OBJECT_N+2
|
||||
#define CM_PRTREE_N CM_OBJECT_N+1
|
||||
#endif // CA_PRTREE_N
|
||||
|
||||
#ifndef _CA_CM_ONLY_
|
||||
#ifndef _PRTREECLASS_OCH_
|
||||
#define _PRTREECLASS_OCH_
|
||||
|
||||
**********************************************************************
|
||||
#xtranslate C.PRTREE:<m> => (PRTREECLASS.clPRTREE():<m>)
|
||||
#xtranslate C.PRTREE:self() => (clPRTREE())
|
||||
|
||||
|
||||
#xtranslate PRTREECLASS.<obj>:parent => <obj>\[CA_OBJECT_N+1\]
|
||||
#xtranslate PRTREECLASS.<obj>:name => <obj>\[CA_OBJECT_N+2\]
|
||||
#xtranslate PRTREECLASS.<obj>:objsize => <obj>\[CA_OBJECT_N+3\]
|
||||
#xtranslate PRTREECLASS.<obj>:attribs => <obj>\[CA_OBJECT_N+4\]
|
||||
#xtranslate PRTREECLASS.<obj>:methods => <obj>\[CA_OBJECT_N+5\]
|
||||
#xtranslate PRTREECLASS.<obj>:classid => <obj>\[CA_OBJECT_N+6\]
|
||||
#xtranslate PRTREECLASS.<obj>:parentclassids => <obj>\[CA_OBJECT_N+7\]
|
||||
#xtranslate PRTREECLASS.<obj>:amblock => <obj>\[CA_OBJECT_N+8\]
|
||||
#xtranslate PRTREECLASS.<obj>:methodsblock => <obj>\[CA_OBJECT_N+9\]
|
||||
#xtranslate PRTREECLASS.<obj>:objmethodsimplement => <obj>\[CA_OBJECT_N+10\]
|
||||
|
||||
|
||||
#xtranslate PRTREECLASS.<obj>:oinit => (OBJGEN.(<obj>):(4))
|
||||
#xtranslate PRTREECLASS.<obj>:getclass => (OBJGEN.(<obj>):(5))
|
||||
#xtranslate PRTREECLASS.<obj>:isclass => (OBJGEN.(<obj>):(6))
|
||||
#xtranslate PRTREECLASS.<obj>:getattrib => (OBJGEN.(<obj>):(7))
|
||||
#xtranslate PRTREECLASS.<obj>:setattrib => (OBJGEN.(<obj>):(8))
|
||||
#xtranslate PRTREECLASS.<obj>:onew => (OBJGEN.(<obj>):(CM_OBJECT_N+1))
|
||||
#xtranslate PRTREECLASS.<obj>:ocreate => (OBJGEN.(<obj>):(CM_OBJECT_N+2))
|
||||
#xtranslate PRTREECLASS.<obj>:rawoinit => (OBJGEN.(<obj>):(CM_OBJECT_N+3))
|
||||
#xtranslate PRTREECLASS.<obj>:oinitclass => (OBJGEN.(<obj>):(CM_OBJECT_N+4))
|
||||
#xtranslate PRTREECLASS.<obj>:getmethodsimplement => (OBJGEN.(<obj>):(CM_OBJECT_N+5))
|
||||
#xtranslate PRTREECLASS.<obj>:attribidx => (OBJGEN.(<obj>):(CM_OBJECT_N+6))
|
||||
#xtranslate PRTREECLASS.<obj>:needclassid => (OBJGEN.(<obj>):(CM_OBJECT_N+7))
|
||||
#xtranslate PRTREECLASS.<obj>:isinheritfrom => (OBJGEN.(<obj>):(CM_OBJECT_N+8))
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#endif // _PRTREECLASS_OCH_
|
||||
#endif // _CA_CM_ONLY_
|
||||
|
||||
#ifndef CA_PRTREECLASS_N
|
||||
#define CA_PRTREECLASS_N CA_BEHAVIOR_N+0
|
||||
#define CM_PRTREECLASS_N CM_BEHAVIOR_N+0
|
||||
#endif // CA_PRTREECLASS_N
|
||||
|
||||
|
||||
**********************************************************************
|
||||
#ifdef _PRTREE_PRG_
|
||||
#ifndef _PRTREE_PRG_OCH_
|
||||
#define _PRTREE_PRG_OCH_
|
||||
|
||||
|
||||
**********************************************************************
|
||||
#xtranslate othis:<m> => PRTREE.(othis):<m>
|
||||
#xtranslate thisclass:<m> => PRTREECLASS.(this:getClass()):<m>
|
||||
#define CTHIS PRTREE
|
||||
|
||||
|
||||
**********************************************************************
|
||||
#xtranslate this:<m> => PRTREE.(this):<m>
|
||||
|
||||
#xcommand implement addword(result,itemArray) => ;
|
||||
static function addword(this,result,itemArray)
|
||||
#xcommand implement oinit() => static function oinit(this)
|
||||
|
||||
#ifdef _IMPLEMENT_EXPORT_
|
||||
#xcommand implement export addword(result,itemArray) => ;
|
||||
function addword(this,result,itemArray)
|
||||
#xcommand implement export oinit() => function oinit(this)
|
||||
#endif // _IMPLEMENT_EXPORT_
|
||||
|
||||
#xtranslate super:oinit => (OBJGENM.(eval(BEHAVIOR.clOBJECT():objmethodsimplement)).(this):(4))
|
||||
#xtranslate super:getclass => (OBJGENM.(eval(BEHAVIOR.clOBJECT():objmethodsimplement)).(this):(5))
|
||||
#xtranslate super:isclass => (OBJGENM.(eval(BEHAVIOR.clOBJECT():objmethodsimplement)).(this):(6))
|
||||
#xtranslate super:getattrib => (OBJGENM.(eval(BEHAVIOR.clOBJECT():objmethodsimplement)).(this):(7))
|
||||
#xtranslate super:setattrib => (OBJGENM.(eval(BEHAVIOR.clOBJECT():objmethodsimplement)).(this):(8))
|
||||
|
||||
**********************************************************************
|
||||
static function setCMethods(pOsztaly)
|
||||
// Egy t”mb”t felt”lt az oszt ly m–veleti blokkjaival.
|
||||
pOsztaly[(CM_OBJECT_N+1)]:={|this,result,itemArray| addword(this,result,itemArray)}
|
||||
pOsztaly[(4)]:={|this| oinit(this)}
|
||||
return pOsztaly
|
||||
|
||||
**********************************************************************
|
||||
static function setCams(ta,tm)
|
||||
// Egy t”mb”t felt”lt az oszt ly ltal def. objektumok attrib£tumaival ‚s m–veleteivel.
|
||||
ta[CA_OBJECT_N+1-CA_NIL_N] := {CA_OBJECT_N+1,'nwords', }
|
||||
ta[CA_OBJECT_N+2-CA_NIL_N] := {CA_OBJECT_N+2,'tree', }
|
||||
|
||||
tm[(CM_OBJECT_N+1)-CM_NIL_N] := {(CM_OBJECT_N+1),'addword','result,itemArray',nil}
|
||||
tm[(4)-CM_NIL_N] := {(4),'oinit','',nil}
|
||||
return nil
|
||||
|
||||
#ifndef _NO_CLPRTREE_
|
||||
#ifdef _STRICT_PARENT_
|
||||
#ifdef _CA_CM_ONLY_
|
||||
#include "meta.och"
|
||||
#else // _CA_CM_ONLY_
|
||||
#define _CA_CM_ONLY_
|
||||
#include "meta.och"
|
||||
#undef _CA_CM_ONLY_
|
||||
#endif // _CA_CM_ONLY_
|
||||
#else
|
||||
#include "meta.och"
|
||||
#endif // _STRICT_PARENT_
|
||||
**********************************************************************
|
||||
function clPRTREE()
|
||||
// El“szedi az oszt lyt. (class)
|
||||
static osztaly
|
||||
if (osztaly==nil)
|
||||
osztaly:=META.mcPRTREECLASS():onew(;
|
||||
clOBJECT(),;
|
||||
"PRTREE",;
|
||||
CA_PRTREE_N,;
|
||||
CM_PRTREE_N,;
|
||||
{|ta,tm|setCams(ta,tm)},;
|
||||
{|t|setCMethods(t)})
|
||||
endif
|
||||
return osztaly
|
||||
#endif // _NO_CLPRTREE_
|
||||
|
||||
#ifndef _NO_PRTREECLASS_
|
||||
|
||||
**********************************************************************
|
||||
#xtranslate class:<m> => PRTREECLASS.(class):<m>
|
||||
|
||||
|
||||
#ifdef _IMPLEMENT_EXPORT_
|
||||
#endif // _IMPLEMENT_EXPORT_
|
||||
|
||||
#xtranslate superclass:oinit => (OBJGENM.(eval(BEHAVIOR.clBEHAVIOR():objmethodsimplement)).(class):(4))
|
||||
#xtranslate superclass:getclass => (OBJGENM.(eval(BEHAVIOR.clBEHAVIOR():objmethodsimplement)).(class):(5))
|
||||
#xtranslate superclass:isclass => (OBJGENM.(eval(BEHAVIOR.clBEHAVIOR():objmethodsimplement)).(class):(6))
|
||||
#xtranslate superclass:getattrib => (OBJGENM.(eval(BEHAVIOR.clBEHAVIOR():objmethodsimplement)).(class):(7))
|
||||
#xtranslate superclass:setattrib => (OBJGENM.(eval(BEHAVIOR.clBEHAVIOR():objmethodsimplement)).(class):(8))
|
||||
#xtranslate superclass:onew => (OBJGENM.(eval(BEHAVIOR.clBEHAVIOR():objmethodsimplement)).(class):(CM_OBJECT_N+1))
|
||||
#xtranslate superclass:ocreate => (OBJGENM.(eval(BEHAVIOR.clBEHAVIOR():objmethodsimplement)).(class):(CM_OBJECT_N+2))
|
||||
#xtranslate superclass:rawoinit => (OBJGENM.(eval(BEHAVIOR.clBEHAVIOR():objmethodsimplement)).(class):(CM_OBJECT_N+3))
|
||||
#xtranslate superclass:oinitclass => (OBJGENM.(eval(BEHAVIOR.clBEHAVIOR():objmethodsimplement)).(class):(CM_OBJECT_N+4))
|
||||
#xtranslate superclass:getmethodsimplement => (OBJGENM.(eval(BEHAVIOR.clBEHAVIOR():objmethodsimplement)).(class):(CM_OBJECT_N+5))
|
||||
#xtranslate superclass:attribidx => (OBJGENM.(eval(BEHAVIOR.clBEHAVIOR():objmethodsimplement)).(class):(CM_OBJECT_N+6))
|
||||
#xtranslate superclass:needclassid => (OBJGENM.(eval(BEHAVIOR.clBEHAVIOR():objmethodsimplement)).(class):(CM_OBJECT_N+7))
|
||||
#xtranslate superclass:isinheritfrom => (OBJGENM.(eval(BEHAVIOR.clBEHAVIOR():objmethodsimplement)).(class):(CM_OBJECT_N+8))
|
||||
|
||||
**********************************************************************
|
||||
static function setMCMethods(pOsztaly)
|
||||
// Egy t”mb”t felt”lt a metaoszt ly m–veleti blokkjaival.
|
||||
return pOsztaly
|
||||
|
||||
**********************************************************************
|
||||
static function setMCams(ta,tm)
|
||||
// Egy t”mb”t felt”lt a metaoszt ly ltal def. objektumok attrib£tumaival ‚s m–veleteivel.
|
||||
|
||||
return nil
|
||||
|
||||
**********************************************************************
|
||||
#ifndef _NO_MCPRTREECLASS_
|
||||
#ifdef _STRICT_PARENT_
|
||||
#ifdef _CA_CM_ONLY_
|
||||
#include "meta.och" // "metaclas.och"
|
||||
#else // _CA_CM_ONLY_
|
||||
#define _CA_CM_ONLY_
|
||||
#include "meta.och" // "metaclas.och"
|
||||
#undef _CA_CM_ONLY_
|
||||
#endif // _CA_CM_ONLY_
|
||||
#else
|
||||
#include "meta.och" // "metaclas.och"
|
||||
#endif // _STRICT_PARENT_
|
||||
function mcPRTREECLASS()
|
||||
// El“szedi az oszt ly metaoszt ly t. (metaclass)
|
||||
static metaOsztaly
|
||||
if (metaOsztaly==nil)
|
||||
metaOsztaly:=META.clMETA():onew(;
|
||||
clBEHAVIOR(),;
|
||||
"PRTREECLASS",;
|
||||
CA_PRTREECLASS_N,;
|
||||
CM_PRTREECLASS_N,;
|
||||
{|ta,tm|setMCams(ta,tm)},;
|
||||
{|t|setMCMethods(t)})
|
||||
endif
|
||||
return metaOsztaly
|
||||
#endif // _NO_MCPRTREECLASS_
|
||||
|
||||
#endif // _NO_PRTREECLASS_
|
||||
|
||||
**********************************************************************
|
||||
#ifdef _IMPLEMENT_OINIT_
|
||||
implement oinit()
|
||||
super:oinit()
|
||||
return this
|
||||
#endif // _IMPLEMENT_OINIT_
|
||||
|
||||
**********************************************************************
|
||||
**********************************************************************
|
||||
#endif // _PRTREE_PRG_OCH_
|
||||
#endif // _PRTREE_PRG_
|
||||
@@ -1,69 +0,0 @@
|
||||
/*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
//*******************************************************************
|
||||
// prtree.prg: A PRTREE oszt ly implement ci¢ja.
|
||||
// 1999, Csisz r Levente
|
||||
|
||||
//*******************************************************************
|
||||
#include "objgen.ch"
|
||||
|
||||
//*******************************************************************
|
||||
#define _PRTREE_PRG_
|
||||
// #define _IMPLEMENT_ONEW_
|
||||
|
||||
#include "prtree.och"
|
||||
|
||||
//*******************************************************************
|
||||
implement oinit()
|
||||
|
||||
super:oinit()
|
||||
this:nWords:=0
|
||||
this:tree:={}
|
||||
|
||||
return this
|
||||
|
||||
|
||||
//*******************************************************************
|
||||
static function addTPTree(tPTree,ctId,ctArray,ctI)
|
||||
local t,i,node
|
||||
|
||||
if (len(ctArray)<ctI)
|
||||
// Itt a v‚ge.
|
||||
node:={nil,ctId}
|
||||
if (len(tPTree)==0)
|
||||
aadd(tPTree,node)
|
||||
return nil
|
||||
endif
|
||||
if (tpTree[1][1]==nil)
|
||||
// M r van egy termin lisunk ugyanilyen tartalommal.
|
||||
return "addTPTree: M r van ilyen token a f ban: "+toExprStr(ctArray)
|
||||
endif
|
||||
aunget(tPTree,node)
|
||||
return nil
|
||||
endif
|
||||
t:=ctArray[ctI++]
|
||||
for i:=1 to len(tPTree)
|
||||
if (tPTree[i][1]==t)
|
||||
return addTPTree(tPTree[i][2],ctId,ctArray,ctI)
|
||||
endif
|
||||
end for
|
||||
// Hozz kell venni.
|
||||
node:={t,{}}
|
||||
aadd(tPTree,node)
|
||||
return addTPTree(node[2],ctId,ctArray,ctI)
|
||||
|
||||
//*******************************************************************
|
||||
|
||||
implement addWord(result,itemArray)
|
||||
local w
|
||||
|
||||
if (nil==(w:=addTPTree(this:tree,result,itemArray,1)))
|
||||
this:nWords++
|
||||
endif
|
||||
return w
|
||||
|
||||
//*******************************************************************
|
||||
|
||||
|
||||
@@ -1,41 +0,0 @@
|
||||
//
|
||||
// $Id$
|
||||
//
|
||||
|
||||
//*******************************************************************
|
||||
// prtreepr.cls: Parser tree parser. Egy input folyamot egy elemz“
|
||||
// f val elemz“ objektum
|
||||
// 1999, Csisz r Levente
|
||||
|
||||
// Egy elemz“ f t lehet vele fel‚pˇteni ‚s kezelni.
|
||||
|
||||
class PRTREEPR OBJECT
|
||||
|
||||
attrib eprtree // A prtree objektum.
|
||||
attrib subtree // Amit ‚ppen elemz<6D>nk.
|
||||
|
||||
attrib result // Ha az elemz‚s sikeres, akkor a megtal lt
|
||||
// <terminal>-ban lev“ result lesz itt.
|
||||
|
||||
attrib itemArray // A put()-al betett itemek.
|
||||
// A wordLen ut ni itemek az el“reolvasott
|
||||
// itemek.
|
||||
attrib wordLen // Ha az elemz‚s meg ll, akkor itt a megtal lt
|
||||
// sz˘ hossza van (sikeress‚g eset‚n), vagy 0,
|
||||
// sikertelens‚g eset‚n.
|
||||
|
||||
// Ezekhez l‚p vissza, ha az elemz‚s elakad.
|
||||
attrib lastStopWordLen // A legutols˘ illeszked“ sz˘ hossza.
|
||||
// attrib lastStopResult // A legutols˘ illeszked“ sz˘hoz tartoz˘
|
||||
// result.
|
||||
|
||||
nmethod start()
|
||||
|
||||
nmethod put(item)
|
||||
|
||||
rmethod oinit(eprtree)
|
||||
|
||||
metaclass
|
||||
|
||||
rmethod onew(eprtree)
|
||||
|
||||
@@ -1,275 +0,0 @@
|
||||
// PRTREEPR.och oszt ly implement ci¢.
|
||||
// Gener lva: 1999.06.10, 14:40:20, OBJCCC v2.2.03
|
||||
// Meta oszt ly defin¡ci¢: Van
|
||||
|
||||
|
||||
#ifndef CA_OBJECT_N
|
||||
#ifdef _STRICT_PARENT_
|
||||
#ifdef _CA_CM_ONLY_
|
||||
#include "OBJECT.och"
|
||||
#else // _CA_CM_ONLY_
|
||||
#define _CA_CM_ONLY_
|
||||
#include "OBJECT.och"
|
||||
#undef _CA_CM_ONLY_
|
||||
#endif // _CA_CM_ONLY_
|
||||
#else
|
||||
#include "OBJECT.och"
|
||||
#endif // _STRICT_PARENT_
|
||||
#endif // CA_OBJECT_N
|
||||
|
||||
#ifndef _CA_CM_ONLY_
|
||||
#ifndef _PRTREEPR_OCH_
|
||||
#define _PRTREEPR_OCH_
|
||||
|
||||
|
||||
|
||||
|
||||
#xtranslate PRTREEPR.<obj>:oinit => (OBJGEN.(<obj>):(4))
|
||||
#xtranslate PRTREEPR.<obj>:getclass => (OBJGEN.(<obj>):(5))
|
||||
#xtranslate PRTREEPR.<obj>:isclass => (OBJGEN.(<obj>):(6))
|
||||
#xtranslate PRTREEPR.<obj>:getattrib => (OBJGEN.(<obj>):(7))
|
||||
#xtranslate PRTREEPR.<obj>:setattrib => (OBJGEN.(<obj>):(8))
|
||||
|
||||
|
||||
#xtranslate PRTREEPR.<obj>:eprtree => <obj>\[CA_OBJECT_N+1\]
|
||||
#xtranslate PRTREEPR.<obj>:subtree => <obj>\[CA_OBJECT_N+2\]
|
||||
#xtranslate PRTREEPR.<obj>:result => <obj>\[CA_OBJECT_N+3\]
|
||||
#xtranslate PRTREEPR.<obj>:itemarray => <obj>\[CA_OBJECT_N+4\]
|
||||
#xtranslate PRTREEPR.<obj>:wordlen => <obj>\[CA_OBJECT_N+5\]
|
||||
#xtranslate PRTREEPR.<obj>:laststopwordlen => <obj>\[CA_OBJECT_N+6\]
|
||||
|
||||
// Specifik lva: start()
|
||||
// Specifik lva: put(item)
|
||||
// ™r”k”lve: oinit(eprtree)
|
||||
|
||||
#xtranslate PRTREEPR.<obj>:start => (OBJGEN.(<obj>):(CM_OBJECT_N+1))
|
||||
#xtranslate PRTREEPR.<obj>:put => (OBJGEN.(<obj>):(CM_OBJECT_N+2))
|
||||
// ™r”k”lve: oinit(eprtree)
|
||||
|
||||
#endif // _PRTREEPR_OCH_
|
||||
#endif // _CA_CM_ONLY_
|
||||
|
||||
#ifndef CA_PRTREEPR_N
|
||||
#define CA_PRTREEPR_N CA_OBJECT_N+6
|
||||
#define CM_PRTREEPR_N CM_OBJECT_N+2
|
||||
#endif // CA_PRTREEPR_N
|
||||
|
||||
#ifndef _CA_CM_ONLY_
|
||||
#ifndef _PRTREEPRCLASS_OCH_
|
||||
#define _PRTREEPRCLASS_OCH_
|
||||
|
||||
**********************************************************************
|
||||
#xtranslate C.PRTREEPR:<m> => (PRTREEPRCLASS.clPRTREEPR():<m>)
|
||||
#xtranslate C.PRTREEPR:self() => (clPRTREEPR())
|
||||
|
||||
|
||||
#xtranslate PRTREEPRCLASS.<obj>:parent => <obj>\[CA_OBJECT_N+1\]
|
||||
#xtranslate PRTREEPRCLASS.<obj>:name => <obj>\[CA_OBJECT_N+2\]
|
||||
#xtranslate PRTREEPRCLASS.<obj>:objsize => <obj>\[CA_OBJECT_N+3\]
|
||||
#xtranslate PRTREEPRCLASS.<obj>:attribs => <obj>\[CA_OBJECT_N+4\]
|
||||
#xtranslate PRTREEPRCLASS.<obj>:methods => <obj>\[CA_OBJECT_N+5\]
|
||||
#xtranslate PRTREEPRCLASS.<obj>:classid => <obj>\[CA_OBJECT_N+6\]
|
||||
#xtranslate PRTREEPRCLASS.<obj>:parentclassids => <obj>\[CA_OBJECT_N+7\]
|
||||
#xtranslate PRTREEPRCLASS.<obj>:amblock => <obj>\[CA_OBJECT_N+8\]
|
||||
#xtranslate PRTREEPRCLASS.<obj>:methodsblock => <obj>\[CA_OBJECT_N+9\]
|
||||
#xtranslate PRTREEPRCLASS.<obj>:objmethodsimplement => <obj>\[CA_OBJECT_N+10\]
|
||||
|
||||
|
||||
#xtranslate PRTREEPRCLASS.<obj>:oinit => (OBJGEN.(<obj>):(4))
|
||||
#xtranslate PRTREEPRCLASS.<obj>:getclass => (OBJGEN.(<obj>):(5))
|
||||
#xtranslate PRTREEPRCLASS.<obj>:isclass => (OBJGEN.(<obj>):(6))
|
||||
#xtranslate PRTREEPRCLASS.<obj>:getattrib => (OBJGEN.(<obj>):(7))
|
||||
#xtranslate PRTREEPRCLASS.<obj>:setattrib => (OBJGEN.(<obj>):(8))
|
||||
#xtranslate PRTREEPRCLASS.<obj>:onew => (OBJGEN.(<obj>):(CM_OBJECT_N+1))
|
||||
#xtranslate PRTREEPRCLASS.<obj>:ocreate => (OBJGEN.(<obj>):(CM_OBJECT_N+2))
|
||||
#xtranslate PRTREEPRCLASS.<obj>:rawoinit => (OBJGEN.(<obj>):(CM_OBJECT_N+3))
|
||||
#xtranslate PRTREEPRCLASS.<obj>:oinitclass => (OBJGEN.(<obj>):(CM_OBJECT_N+4))
|
||||
#xtranslate PRTREEPRCLASS.<obj>:getmethodsimplement => (OBJGEN.(<obj>):(CM_OBJECT_N+5))
|
||||
#xtranslate PRTREEPRCLASS.<obj>:attribidx => (OBJGEN.(<obj>):(CM_OBJECT_N+6))
|
||||
#xtranslate PRTREEPRCLASS.<obj>:needclassid => (OBJGEN.(<obj>):(CM_OBJECT_N+7))
|
||||
#xtranslate PRTREEPRCLASS.<obj>:isinheritfrom => (OBJGEN.(<obj>):(CM_OBJECT_N+8))
|
||||
|
||||
|
||||
|
||||
// ™r”k”lve: onew(eprtree)
|
||||
|
||||
// ™r”k”lve: onew(eprtree)
|
||||
|
||||
#endif // _PRTREEPRCLASS_OCH_
|
||||
#endif // _CA_CM_ONLY_
|
||||
|
||||
#ifndef CA_PRTREEPRCLASS_N
|
||||
#define CA_PRTREEPRCLASS_N CA_BEHAVIOR_N+0
|
||||
#define CM_PRTREEPRCLASS_N CM_BEHAVIOR_N+0
|
||||
#endif // CA_PRTREEPRCLASS_N
|
||||
|
||||
|
||||
**********************************************************************
|
||||
#ifdef _PRTREEPR_PRG_
|
||||
#ifndef _PRTREEPR_PRG_OCH_
|
||||
#define _PRTREEPR_PRG_OCH_
|
||||
|
||||
|
||||
**********************************************************************
|
||||
#xtranslate othis:<m> => PRTREEPR.(othis):<m>
|
||||
#xtranslate thisclass:<m> => PRTREEPRCLASS.(this:getClass()):<m>
|
||||
#define CTHIS PRTREEPR
|
||||
|
||||
|
||||
**********************************************************************
|
||||
#xtranslate this:<m> => PRTREEPR.(this):<m>
|
||||
|
||||
#xcommand implement start() => static function start(this)
|
||||
#xcommand implement put(item) => static function put(this,item)
|
||||
#xcommand implement oinit(eprtree) => static function oinit(this,eprtree)
|
||||
|
||||
#ifdef _IMPLEMENT_EXPORT_
|
||||
#xcommand implement export start() => function start(this)
|
||||
#xcommand implement export put(item) => function put(this,item)
|
||||
#xcommand implement export oinit(eprtree) => function oinit(this,eprtree)
|
||||
#endif // _IMPLEMENT_EXPORT_
|
||||
|
||||
#xtranslate super:oinit => (OBJGENM.(eval(BEHAVIOR.clOBJECT():objmethodsimplement)).(this):(4))
|
||||
#xtranslate super:getclass => (OBJGENM.(eval(BEHAVIOR.clOBJECT():objmethodsimplement)).(this):(5))
|
||||
#xtranslate super:isclass => (OBJGENM.(eval(BEHAVIOR.clOBJECT():objmethodsimplement)).(this):(6))
|
||||
#xtranslate super:getattrib => (OBJGENM.(eval(BEHAVIOR.clOBJECT():objmethodsimplement)).(this):(7))
|
||||
#xtranslate super:setattrib => (OBJGENM.(eval(BEHAVIOR.clOBJECT():objmethodsimplement)).(this):(8))
|
||||
|
||||
**********************************************************************
|
||||
static function setCMethods(pOsztaly)
|
||||
// Egy t”mb”t felt”lt az oszt ly m–veleti blokkjaival.
|
||||
pOsztaly[(CM_OBJECT_N+1)]:={|this| start(this)}
|
||||
pOsztaly[(CM_OBJECT_N+2)]:={|this,item| put(this,item)}
|
||||
pOsztaly[(4)]:={|this,eprtree| oinit(this,eprtree)}
|
||||
return pOsztaly
|
||||
|
||||
**********************************************************************
|
||||
static function setCams(ta,tm)
|
||||
// Egy t”mb”t felt”lt az oszt ly ltal def. objektumok attrib£tumaival ‚s m–veleteivel.
|
||||
ta[CA_OBJECT_N+1-CA_NIL_N] := {CA_OBJECT_N+1,'eprtree', }
|
||||
ta[CA_OBJECT_N+2-CA_NIL_N] := {CA_OBJECT_N+2,'subtree', }
|
||||
ta[CA_OBJECT_N+3-CA_NIL_N] := {CA_OBJECT_N+3,'result', }
|
||||
ta[CA_OBJECT_N+4-CA_NIL_N] := {CA_OBJECT_N+4,'itemarray', }
|
||||
ta[CA_OBJECT_N+5-CA_NIL_N] := {CA_OBJECT_N+5,'wordlen', }
|
||||
ta[CA_OBJECT_N+6-CA_NIL_N] := {CA_OBJECT_N+6,'laststopwordlen', }
|
||||
|
||||
tm[(CM_OBJECT_N+1)-CM_NIL_N] := {(CM_OBJECT_N+1),'start','',nil}
|
||||
tm[(CM_OBJECT_N+2)-CM_NIL_N] := {(CM_OBJECT_N+2),'put','item',nil}
|
||||
tm[(4)-CM_NIL_N] := {(4),'oinit','eprtree',nil}
|
||||
return nil
|
||||
|
||||
#ifndef _NO_CLPRTREEPR_
|
||||
#ifdef _STRICT_PARENT_
|
||||
#ifdef _CA_CM_ONLY_
|
||||
#include "meta.och"
|
||||
#else // _CA_CM_ONLY_
|
||||
#define _CA_CM_ONLY_
|
||||
#include "meta.och"
|
||||
#undef _CA_CM_ONLY_
|
||||
#endif // _CA_CM_ONLY_
|
||||
#else
|
||||
#include "meta.och"
|
||||
#endif // _STRICT_PARENT_
|
||||
**********************************************************************
|
||||
function clPRTREEPR()
|
||||
// El“szedi az oszt lyt. (class)
|
||||
static osztaly
|
||||
if (osztaly==nil)
|
||||
osztaly:=META.mcPRTREEPRCLASS():onew(;
|
||||
clOBJECT(),;
|
||||
"PRTREEPR",;
|
||||
CA_PRTREEPR_N,;
|
||||
CM_PRTREEPR_N,;
|
||||
{|ta,tm|setCams(ta,tm)},;
|
||||
{|t|setCMethods(t)})
|
||||
endif
|
||||
return osztaly
|
||||
#endif // _NO_CLPRTREEPR_
|
||||
|
||||
#ifndef _NO_PRTREEPRCLASS_
|
||||
|
||||
**********************************************************************
|
||||
#xtranslate class:<m> => PRTREEPRCLASS.(class):<m>
|
||||
|
||||
#xcommand cimplement onew(eprtree) => static function onew(class,eprtree)
|
||||
|
||||
#ifdef _IMPLEMENT_EXPORT_
|
||||
#xcommand cimplement export onew(eprtree) => function onew(class,eprtree)
|
||||
#endif // _IMPLEMENT_EXPORT_
|
||||
|
||||
#xtranslate superclass:oinit => (OBJGENM.(eval(BEHAVIOR.clBEHAVIOR():objmethodsimplement)).(class):(4))
|
||||
#xtranslate superclass:getclass => (OBJGENM.(eval(BEHAVIOR.clBEHAVIOR():objmethodsimplement)).(class):(5))
|
||||
#xtranslate superclass:isclass => (OBJGENM.(eval(BEHAVIOR.clBEHAVIOR():objmethodsimplement)).(class):(6))
|
||||
#xtranslate superclass:getattrib => (OBJGENM.(eval(BEHAVIOR.clBEHAVIOR():objmethodsimplement)).(class):(7))
|
||||
#xtranslate superclass:setattrib => (OBJGENM.(eval(BEHAVIOR.clBEHAVIOR():objmethodsimplement)).(class):(8))
|
||||
#xtranslate superclass:onew => (OBJGENM.(eval(BEHAVIOR.clBEHAVIOR():objmethodsimplement)).(class):(CM_OBJECT_N+1))
|
||||
#xtranslate superclass:ocreate => (OBJGENM.(eval(BEHAVIOR.clBEHAVIOR():objmethodsimplement)).(class):(CM_OBJECT_N+2))
|
||||
#xtranslate superclass:rawoinit => (OBJGENM.(eval(BEHAVIOR.clBEHAVIOR():objmethodsimplement)).(class):(CM_OBJECT_N+3))
|
||||
#xtranslate superclass:oinitclass => (OBJGENM.(eval(BEHAVIOR.clBEHAVIOR():objmethodsimplement)).(class):(CM_OBJECT_N+4))
|
||||
#xtranslate superclass:getmethodsimplement => (OBJGENM.(eval(BEHAVIOR.clBEHAVIOR():objmethodsimplement)).(class):(CM_OBJECT_N+5))
|
||||
#xtranslate superclass:attribidx => (OBJGENM.(eval(BEHAVIOR.clBEHAVIOR():objmethodsimplement)).(class):(CM_OBJECT_N+6))
|
||||
#xtranslate superclass:needclassid => (OBJGENM.(eval(BEHAVIOR.clBEHAVIOR():objmethodsimplement)).(class):(CM_OBJECT_N+7))
|
||||
#xtranslate superclass:isinheritfrom => (OBJGENM.(eval(BEHAVIOR.clBEHAVIOR():objmethodsimplement)).(class):(CM_OBJECT_N+8))
|
||||
|
||||
**********************************************************************
|
||||
static function setMCMethods(pOsztaly)
|
||||
// Egy t”mb”t felt”lt a metaoszt ly m–veleti blokkjaival.
|
||||
pOsztaly[(CM_OBJECT_N+1)]:={|class,eprtree| onew(class,eprtree)}
|
||||
return pOsztaly
|
||||
|
||||
**********************************************************************
|
||||
static function setMCams(ta,tm)
|
||||
// Egy t”mb”t felt”lt a metaoszt ly ltal def. objektumok attrib£tumaival ‚s m–veleteivel.
|
||||
|
||||
tm[(CM_OBJECT_N+1)-CM_NIL_N] := {(CM_OBJECT_N+1),'onew','eprtree',nil}
|
||||
return nil
|
||||
|
||||
**********************************************************************
|
||||
#ifndef _NO_MCPRTREEPRCLASS_
|
||||
#ifdef _STRICT_PARENT_
|
||||
#ifdef _CA_CM_ONLY_
|
||||
#include "meta.och" // "metaclas.och"
|
||||
#else // _CA_CM_ONLY_
|
||||
#define _CA_CM_ONLY_
|
||||
#include "meta.och" // "metaclas.och"
|
||||
#undef _CA_CM_ONLY_
|
||||
#endif // _CA_CM_ONLY_
|
||||
#else
|
||||
#include "meta.och" // "metaclas.och"
|
||||
#endif // _STRICT_PARENT_
|
||||
function mcPRTREEPRCLASS()
|
||||
// El“szedi az oszt ly metaoszt ly t. (metaclass)
|
||||
static metaOsztaly
|
||||
if (metaOsztaly==nil)
|
||||
metaOsztaly:=META.clMETA():onew(;
|
||||
clBEHAVIOR(),;
|
||||
"PRTREEPRCLASS",;
|
||||
CA_PRTREEPRCLASS_N,;
|
||||
CM_PRTREEPRCLASS_N,;
|
||||
{|ta,tm|setMCams(ta,tm)},;
|
||||
{|t|setMCMethods(t)})
|
||||
endif
|
||||
return metaOsztaly
|
||||
#endif // _NO_MCPRTREEPRCLASS_
|
||||
|
||||
#endif // _NO_PRTREEPRCLASS_
|
||||
#ifdef _IMPLEMENT_ONEW_
|
||||
**********************************************************************
|
||||
cimplement onew(eprtree)
|
||||
local o:=class:ocreate()
|
||||
|
||||
PRTREEPR.o:oinit(eprtree)
|
||||
return o
|
||||
#endif // _IMPLEMENT_ONEW_
|
||||
|
||||
**********************************************************************
|
||||
#ifdef _IMPLEMENT_OINIT_
|
||||
implement oinit(eprtree)
|
||||
super:oinit()
|
||||
return this
|
||||
#endif // _IMPLEMENT_OINIT_
|
||||
|
||||
**********************************************************************
|
||||
**********************************************************************
|
||||
#endif // _PRTREEPR_PRG_OCH_
|
||||
#endif // _PRTREEPR_PRG_
|
||||
@@ -1,101 +0,0 @@
|
||||
/*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
//*******************************************************************
|
||||
// prtreepr.prg: A PRTREEPR oszt ly implement ci¢ja.
|
||||
// 1999, Csisz r Levente
|
||||
|
||||
//*******************************************************************
|
||||
#include "objgen.ch"
|
||||
|
||||
#include "prtree.och"
|
||||
|
||||
//*******************************************************************
|
||||
#define _PRTREEPR_PRG_
|
||||
#define _IMPLEMENT_ONEW_
|
||||
|
||||
#include "prtreepr.och"
|
||||
|
||||
//*******************************************************************
|
||||
implement oinit(eprtree)
|
||||
|
||||
super:oinit()
|
||||
this:eprtree:=eprtree
|
||||
this:start()
|
||||
|
||||
return this
|
||||
|
||||
//*******************************************************************
|
||||
implement start()
|
||||
|
||||
if (this:eprtree!=nil)
|
||||
this:subtree :=PRTREE.(this:eprtree):tree
|
||||
else
|
||||
this:subtree :={}
|
||||
endif
|
||||
this:result :=nil
|
||||
this:itemArray :={}
|
||||
this:wordLen :=0
|
||||
this:lastStopWordLen :=0
|
||||
// this:lastStopResult :=nil // Ez igaz b¢l nem kell, el‚g a result is.
|
||||
|
||||
return nil
|
||||
|
||||
//*******************************************************************
|
||||
implement put(item)
|
||||
/*
|
||||
Egy item-el tov bb megy az elemz“ f ban.
|
||||
Az itemeket gy–jti az itemArray-ban.
|
||||
|
||||
Ret: nil, ha nincs v‚ge.
|
||||
.t., ha v‚ge van ‚s elfogadta,
|
||||
.f., ha v‚ge van ‚s nem fogadta el.
|
||||
*/
|
||||
|
||||
local tptree,nRds
|
||||
local str,lastStop,i
|
||||
|
||||
aadd(this:itemArray,item)
|
||||
|
||||
if (0==(i:=ascan(this:subtree,{|x| x[1]==item})))
|
||||
// Nincs tov bb, viszont a lastStop-ban van olyan token,
|
||||
// ami illeszkedik ennek az elej‚hez.
|
||||
this:wordLen:=this:lastStopWordLen
|
||||
// this:result:=this:lastStopResult
|
||||
return this:wordLen!=0
|
||||
endif
|
||||
|
||||
// Van ilyen item, megy<67>nk lejjebb a f ban
|
||||
this:wordLen++
|
||||
this:subtree:=this:subtree[i][2]
|
||||
// El“sz”r megn‚zz<7A>k, hogy a v‚g‚re ‚rt<72>nk-e.
|
||||
if (len(this:subtree)==0)
|
||||
// Hiba, vagy <20>res a fa, vissza a lastStop-hoz.
|
||||
this:wordLen:=this:lastStopWordLen
|
||||
// this:result:=this:lastStopResult
|
||||
return this:wordLen!=0
|
||||
endif
|
||||
if (this:subtree[1][1]==nil)
|
||||
// Itt meg lehet llni, pl. ha a k”vetkez“ keres‚s nem hoz
|
||||
// eredm‚nyt.
|
||||
if (len(this:subtree)==1)
|
||||
// Nem lehet tov bb menni, de visszal‚pni sem kell.
|
||||
// id:=this:subtree[1][2]
|
||||
this:result:=this:subtree[1][2]
|
||||
return this:wordLen!=0
|
||||
endif
|
||||
// Lehet m‚g tov bb, de ha elakad, akkor ez j¢!
|
||||
this:lastStopWordLen:=this:wordLen
|
||||
// this:lastStopResult:=this:subtree[1][2]
|
||||
this:result:=this:subtree[1][2]
|
||||
endif
|
||||
|
||||
// M‚g nincs eredm‚ny, megy<67>nk tov bb.
|
||||
|
||||
return nil
|
||||
|
||||
//*******************************************************************
|
||||
|
||||
|
||||
|
||||
@@ -1,26 +0,0 @@
|
||||
//
|
||||
// $Id$
|
||||
//
|
||||
|
||||
//*******************************************************************
|
||||
// ralter.cls : Result alternative token oszt ly.
|
||||
// 1999, Csisz r Levente
|
||||
|
||||
// A jobb oldalon el“fordul¢ altenat¡v kat t rol¢ token.
|
||||
// Az alternat¡v kat egy-egy token t”mb jelk‚pezi, egy ilyen t”mb
|
||||
// van a tokenList-ben.
|
||||
|
||||
class RALTER RMARKER
|
||||
|
||||
attrib tokenList // Az alternat¡v hoz tartoz¢ tokenek list ja.
|
||||
|
||||
rmethod getStr()
|
||||
|
||||
rmethod oinit(id,str,file,line,pos)
|
||||
// Inicializ lja az objektumot.
|
||||
|
||||
metaclass
|
||||
|
||||
rmethod onew(id,str,file,line,pos)
|
||||
|
||||
|
||||
@@ -1,299 +0,0 @@
|
||||
// RALTER.och oszt ly implement ci¢.
|
||||
// Gener lva: 1999.06.10, 14:40:26, OBJCCC v2.2.03
|
||||
// Meta oszt ly defin¡ci¢: Van
|
||||
|
||||
|
||||
#ifndef CA_RMARKER_N
|
||||
#ifdef _STRICT_PARENT_
|
||||
#ifdef _CA_CM_ONLY_
|
||||
#include "RMARKER.och"
|
||||
#else // _CA_CM_ONLY_
|
||||
#define _CA_CM_ONLY_
|
||||
#include "RMARKER.och"
|
||||
#undef _CA_CM_ONLY_
|
||||
#endif // _CA_CM_ONLY_
|
||||
#else
|
||||
#include "RMARKER.och"
|
||||
#endif // _STRICT_PARENT_
|
||||
#endif // CA_RMARKER_N
|
||||
|
||||
#ifndef _CA_CM_ONLY_
|
||||
#ifndef _RALTER_OCH_
|
||||
#define _RALTER_OCH_
|
||||
|
||||
|
||||
#xtranslate RALTER.<obj>:id => <obj>\[CA_OBJECT_N+1\]
|
||||
#xtranslate RALTER.<obj>:str => <obj>\[CA_OBJECT_N+2\]
|
||||
#xtranslate RALTER.<obj>:file => <obj>\[CA_OBJECT_N+3\]
|
||||
#xtranslate RALTER.<obj>:line => <obj>\[CA_OBJECT_N+4\]
|
||||
#xtranslate RALTER.<obj>:pos => <obj>\[CA_OBJECT_N+5\]
|
||||
#xtranslate RALTER.<obj>:classify => <obj>\[CA_OBJECT_N+6\]
|
||||
#xtranslate RALTER.<obj>:error => <obj>\[CA_OBJECT_N+7\]
|
||||
#xtranslate RALTER.<obj>:eqtype => <obj>\[CA_OBJECT_N+8\]
|
||||
#xtranslate RALTER.<obj>:mmnum => <obj>\[CA_TOKEN_N+1\]
|
||||
#xtranslate RALTER.<obj>:mmtkid => <obj>\[CA_TOKEN_N+2\]
|
||||
|
||||
|
||||
#xtranslate RALTER.<obj>:oinit => (OBJGEN.(<obj>):(4))
|
||||
#xtranslate RALTER.<obj>:getclass => (OBJGEN.(<obj>):(5))
|
||||
#xtranslate RALTER.<obj>:isclass => (OBJGEN.(<obj>):(6))
|
||||
#xtranslate RALTER.<obj>:getattrib => (OBJGEN.(<obj>):(7))
|
||||
#xtranslate RALTER.<obj>:setattrib => (OBJGEN.(<obj>):(8))
|
||||
#xtranslate RALTER.<obj>:iserror => (OBJGEN.(<obj>):(CM_OBJECT_N+1))
|
||||
#xtranslate RALTER.<obj>:errorstr => (OBJGEN.(<obj>):(CM_OBJECT_N+2))
|
||||
#xtranslate RALTER.<obj>:printtostr => (OBJGEN.(<obj>):(CM_OBJECT_N+3))
|
||||
#xtranslate RALTER.<obj>:getstr => (OBJGEN.(<obj>):(CM_OBJECT_N+4))
|
||||
#xtranslate RALTER.<obj>:copytoken => (OBJGEN.(<obj>):(CM_OBJECT_N+5))
|
||||
#xtranslate RALTER.<obj>:getname => (OBJGEN.(<obj>):(CM_TOKEN_N+1))
|
||||
#xtranslate RALTER.<obj>:setmmidxbymm => (OBJGEN.(<obj>):(CM_TOKEN_N+2))
|
||||
#xtranslate RALTER.<obj>:changebymmlist => (OBJGEN.(<obj>):(CM_TOKEN_N+3))
|
||||
|
||||
|
||||
#xtranslate RALTER.<obj>:tokenlist => <obj>\[CA_RMARKER_N+1\]
|
||||
|
||||
// ™r”k”lve: getstr()
|
||||
// ™r”k”lve: oinit(id,str,file,line,pos)
|
||||
|
||||
// ™r”k”lve: getstr()
|
||||
// ™r”k”lve: oinit(id,str,file,line,pos)
|
||||
|
||||
#endif // _RALTER_OCH_
|
||||
#endif // _CA_CM_ONLY_
|
||||
|
||||
#ifndef CA_RALTER_N
|
||||
#define CA_RALTER_N CA_RMARKER_N+1
|
||||
#define CM_RALTER_N CM_RMARKER_N+0
|
||||
#endif // CA_RALTER_N
|
||||
|
||||
#ifndef _CA_CM_ONLY_
|
||||
#ifndef _RALTERCLASS_OCH_
|
||||
#define _RALTERCLASS_OCH_
|
||||
|
||||
**********************************************************************
|
||||
#xtranslate C.RALTER:<m> => (RALTERCLASS.clRALTER():<m>)
|
||||
#xtranslate C.RALTER:self() => (clRALTER())
|
||||
|
||||
|
||||
#xtranslate RALTERCLASS.<obj>:parent => <obj>\[CA_OBJECT_N+1\]
|
||||
#xtranslate RALTERCLASS.<obj>:name => <obj>\[CA_OBJECT_N+2\]
|
||||
#xtranslate RALTERCLASS.<obj>:objsize => <obj>\[CA_OBJECT_N+3\]
|
||||
#xtranslate RALTERCLASS.<obj>:attribs => <obj>\[CA_OBJECT_N+4\]
|
||||
#xtranslate RALTERCLASS.<obj>:methods => <obj>\[CA_OBJECT_N+5\]
|
||||
#xtranslate RALTERCLASS.<obj>:classid => <obj>\[CA_OBJECT_N+6\]
|
||||
#xtranslate RALTERCLASS.<obj>:parentclassids => <obj>\[CA_OBJECT_N+7\]
|
||||
#xtranslate RALTERCLASS.<obj>:amblock => <obj>\[CA_OBJECT_N+8\]
|
||||
#xtranslate RALTERCLASS.<obj>:methodsblock => <obj>\[CA_OBJECT_N+9\]
|
||||
#xtranslate RALTERCLASS.<obj>:objmethodsimplement => <obj>\[CA_OBJECT_N+10\]
|
||||
#xtranslate RALTERCLASS.<obj>:errstrarray => <obj>\[CA_BEHAVIOR_N+1\]
|
||||
#xtranslate RALTERCLASS.<obj>:equivclass => <obj>\[CA_BEHAVIOR_N+2\]
|
||||
|
||||
|
||||
#xtranslate RALTERCLASS.<obj>:oinit => (OBJGEN.(<obj>):(4))
|
||||
#xtranslate RALTERCLASS.<obj>:getclass => (OBJGEN.(<obj>):(5))
|
||||
#xtranslate RALTERCLASS.<obj>:isclass => (OBJGEN.(<obj>):(6))
|
||||
#xtranslate RALTERCLASS.<obj>:getattrib => (OBJGEN.(<obj>):(7))
|
||||
#xtranslate RALTERCLASS.<obj>:setattrib => (OBJGEN.(<obj>):(8))
|
||||
#xtranslate RALTERCLASS.<obj>:onew => (OBJGEN.(<obj>):(CM_OBJECT_N+1))
|
||||
#xtranslate RALTERCLASS.<obj>:ocreate => (OBJGEN.(<obj>):(CM_OBJECT_N+2))
|
||||
#xtranslate RALTERCLASS.<obj>:rawoinit => (OBJGEN.(<obj>):(CM_OBJECT_N+3))
|
||||
#xtranslate RALTERCLASS.<obj>:oinitclass => (OBJGEN.(<obj>):(CM_OBJECT_N+4))
|
||||
#xtranslate RALTERCLASS.<obj>:getmethodsimplement => (OBJGEN.(<obj>):(CM_OBJECT_N+5))
|
||||
#xtranslate RALTERCLASS.<obj>:attribidx => (OBJGEN.(<obj>):(CM_OBJECT_N+6))
|
||||
#xtranslate RALTERCLASS.<obj>:needclassid => (OBJGEN.(<obj>):(CM_OBJECT_N+7))
|
||||
#xtranslate RALTERCLASS.<obj>:isinheritfrom => (OBJGEN.(<obj>):(CM_OBJECT_N+8))
|
||||
#xtranslate RALTERCLASS.<obj>:onewerror => (OBJGEN.(<obj>):(CM_BEHAVIOR_N+1))
|
||||
#xtranslate RALTERCLASS.<obj>:copyfromtoken => (OBJGEN.(<obj>):(CM_BEHAVIOR_N+2))
|
||||
#xtranslate RALTERCLASS.<obj>:findclassify => (OBJGEN.(<obj>):(CM_BEHAVIOR_N+3))
|
||||
#xtranslate RALTERCLASS.<obj>:isresultmarker => (OBJGEN.(<obj>):(CM_TOKENCLASS_N+1))
|
||||
|
||||
|
||||
|
||||
// ™r”k”lve: onew(id,str,file,line,pos)
|
||||
|
||||
// ™r”k”lve: onew(id,str,file,line,pos)
|
||||
|
||||
#endif // _RALTERCLASS_OCH_
|
||||
#endif // _CA_CM_ONLY_
|
||||
|
||||
#ifndef CA_RALTERCLASS_N
|
||||
#define CA_RALTERCLASS_N CA_RMARKERCLASS_N+0
|
||||
#define CM_RALTERCLASS_N CM_RMARKERCLASS_N+0
|
||||
#endif // CA_RALTERCLASS_N
|
||||
|
||||
|
||||
**********************************************************************
|
||||
#ifdef _RALTER_PRG_
|
||||
#ifndef _RALTER_PRG_OCH_
|
||||
#define _RALTER_PRG_OCH_
|
||||
|
||||
|
||||
**********************************************************************
|
||||
#xtranslate othis:<m> => RALTER.(othis):<m>
|
||||
#xtranslate thisclass:<m> => RALTERCLASS.(this:getClass()):<m>
|
||||
#define CTHIS RALTER
|
||||
|
||||
|
||||
**********************************************************************
|
||||
#xtranslate this:<m> => RALTER.(this):<m>
|
||||
|
||||
#xcommand implement getstr() => static function getstr(this)
|
||||
#xcommand implement oinit(id,str,file,line,pos) => ;
|
||||
static function oinit(this,id,str,file,line,pos)
|
||||
|
||||
#ifdef _IMPLEMENT_EXPORT_
|
||||
#xcommand implement export getstr() => function getstr(this)
|
||||
#xcommand implement export oinit(id,str,file,line,pos) => ;
|
||||
function oinit(this,id,str,file,line,pos)
|
||||
#endif // _IMPLEMENT_EXPORT_
|
||||
|
||||
#xtranslate super:oinit => (OBJGENM.(eval(BEHAVIOR.clRMARKER():objmethodsimplement)).(this):(4))
|
||||
#xtranslate super:getclass => (OBJGENM.(eval(BEHAVIOR.clRMARKER():objmethodsimplement)).(this):(5))
|
||||
#xtranslate super:isclass => (OBJGENM.(eval(BEHAVIOR.clRMARKER():objmethodsimplement)).(this):(6))
|
||||
#xtranslate super:getattrib => (OBJGENM.(eval(BEHAVIOR.clRMARKER():objmethodsimplement)).(this):(7))
|
||||
#xtranslate super:setattrib => (OBJGENM.(eval(BEHAVIOR.clRMARKER():objmethodsimplement)).(this):(8))
|
||||
#xtranslate super:iserror => (OBJGENM.(eval(BEHAVIOR.clRMARKER():objmethodsimplement)).(this):(CM_OBJECT_N+1))
|
||||
#xtranslate super:errorstr => (OBJGENM.(eval(BEHAVIOR.clRMARKER():objmethodsimplement)).(this):(CM_OBJECT_N+2))
|
||||
#xtranslate super:printtostr => (OBJGENM.(eval(BEHAVIOR.clRMARKER():objmethodsimplement)).(this):(CM_OBJECT_N+3))
|
||||
#xtranslate super:getstr => (OBJGENM.(eval(BEHAVIOR.clRMARKER():objmethodsimplement)).(this):(CM_OBJECT_N+4))
|
||||
#xtranslate super:copytoken => (OBJGENM.(eval(BEHAVIOR.clRMARKER():objmethodsimplement)).(this):(CM_OBJECT_N+5))
|
||||
#xtranslate super:getname => (OBJGENM.(eval(BEHAVIOR.clRMARKER():objmethodsimplement)).(this):(CM_TOKEN_N+1))
|
||||
#xtranslate super:setmmidxbymm => (OBJGENM.(eval(BEHAVIOR.clRMARKER():objmethodsimplement)).(this):(CM_TOKEN_N+2))
|
||||
#xtranslate super:changebymmlist => (OBJGENM.(eval(BEHAVIOR.clRMARKER():objmethodsimplement)).(this):(CM_TOKEN_N+3))
|
||||
|
||||
**********************************************************************
|
||||
static function setCMethods(pOsztaly)
|
||||
// Egy t”mb”t felt”lt az oszt ly m–veleti blokkjaival.
|
||||
pOsztaly[(CM_OBJECT_N+4)]:={|this| getstr(this)}
|
||||
pOsztaly[(4)]:={|this,id,str,file,line,pos| oinit(this,id,str,file,line,pos)}
|
||||
return pOsztaly
|
||||
|
||||
**********************************************************************
|
||||
static function setCams(ta,tm)
|
||||
// Egy t”mb”t felt”lt az oszt ly ltal def. objektumok attrib£tumaival ‚s m–veleteivel.
|
||||
ta[CA_RMARKER_N+1-CA_NIL_N] := {CA_RMARKER_N+1,'tokenlist', }
|
||||
|
||||
tm[(CM_OBJECT_N+4)-CM_NIL_N] := {(CM_OBJECT_N+4),'getstr','',nil}
|
||||
tm[(4)-CM_NIL_N] := {(4),'oinit','id,str,file,line,pos',nil}
|
||||
return nil
|
||||
|
||||
#ifndef _NO_CLRALTER_
|
||||
#ifdef _STRICT_PARENT_
|
||||
#ifdef _CA_CM_ONLY_
|
||||
#include "meta.och"
|
||||
#else // _CA_CM_ONLY_
|
||||
#define _CA_CM_ONLY_
|
||||
#include "meta.och"
|
||||
#undef _CA_CM_ONLY_
|
||||
#endif // _CA_CM_ONLY_
|
||||
#else
|
||||
#include "meta.och"
|
||||
#endif // _STRICT_PARENT_
|
||||
**********************************************************************
|
||||
function clRALTER()
|
||||
// El“szedi az oszt lyt. (class)
|
||||
static osztaly
|
||||
if (osztaly==nil)
|
||||
osztaly:=META.mcRALTERCLASS():onew(;
|
||||
clRMARKER(),;
|
||||
"RALTER",;
|
||||
CA_RALTER_N,;
|
||||
CM_RALTER_N,;
|
||||
{|ta,tm|setCams(ta,tm)},;
|
||||
{|t|setCMethods(t)})
|
||||
endif
|
||||
return osztaly
|
||||
#endif // _NO_CLRALTER_
|
||||
|
||||
#ifndef _NO_RALTERCLASS_
|
||||
|
||||
**********************************************************************
|
||||
#xtranslate class:<m> => RALTERCLASS.(class):<m>
|
||||
|
||||
#xcommand cimplement onew(id,str,file,line,pos) => ;
|
||||
static function onew(class,id,str,file,line,pos)
|
||||
|
||||
#ifdef _IMPLEMENT_EXPORT_
|
||||
#xcommand cimplement export onew(id,str,file,line,pos) => ;
|
||||
function onew(class,id,str,file,line,pos)
|
||||
#endif // _IMPLEMENT_EXPORT_
|
||||
|
||||
#xtranslate superclass:oinit => (OBJGENM.(eval(BEHAVIOR.mcRMARKERCLASS():objmethodsimplement)).(class):(4))
|
||||
#xtranslate superclass:getclass => (OBJGENM.(eval(BEHAVIOR.mcRMARKERCLASS():objmethodsimplement)).(class):(5))
|
||||
#xtranslate superclass:isclass => (OBJGENM.(eval(BEHAVIOR.mcRMARKERCLASS():objmethodsimplement)).(class):(6))
|
||||
#xtranslate superclass:getattrib => (OBJGENM.(eval(BEHAVIOR.mcRMARKERCLASS():objmethodsimplement)).(class):(7))
|
||||
#xtranslate superclass:setattrib => (OBJGENM.(eval(BEHAVIOR.mcRMARKERCLASS():objmethodsimplement)).(class):(8))
|
||||
#xtranslate superclass:onew => (OBJGENM.(eval(BEHAVIOR.mcRMARKERCLASS():objmethodsimplement)).(class):(CM_OBJECT_N+1))
|
||||
#xtranslate superclass:ocreate => (OBJGENM.(eval(BEHAVIOR.mcRMARKERCLASS():objmethodsimplement)).(class):(CM_OBJECT_N+2))
|
||||
#xtranslate superclass:rawoinit => (OBJGENM.(eval(BEHAVIOR.mcRMARKERCLASS():objmethodsimplement)).(class):(CM_OBJECT_N+3))
|
||||
#xtranslate superclass:oinitclass => (OBJGENM.(eval(BEHAVIOR.mcRMARKERCLASS():objmethodsimplement)).(class):(CM_OBJECT_N+4))
|
||||
#xtranslate superclass:getmethodsimplement => (OBJGENM.(eval(BEHAVIOR.mcRMARKERCLASS():objmethodsimplement)).(class):(CM_OBJECT_N+5))
|
||||
#xtranslate superclass:attribidx => (OBJGENM.(eval(BEHAVIOR.mcRMARKERCLASS():objmethodsimplement)).(class):(CM_OBJECT_N+6))
|
||||
#xtranslate superclass:needclassid => (OBJGENM.(eval(BEHAVIOR.mcRMARKERCLASS():objmethodsimplement)).(class):(CM_OBJECT_N+7))
|
||||
#xtranslate superclass:isinheritfrom => (OBJGENM.(eval(BEHAVIOR.mcRMARKERCLASS():objmethodsimplement)).(class):(CM_OBJECT_N+8))
|
||||
#xtranslate superclass:onewerror => (OBJGENM.(eval(BEHAVIOR.mcRMARKERCLASS():objmethodsimplement)).(class):(CM_BEHAVIOR_N+1))
|
||||
#xtranslate superclass:copyfromtoken => (OBJGENM.(eval(BEHAVIOR.mcRMARKERCLASS():objmethodsimplement)).(class):(CM_BEHAVIOR_N+2))
|
||||
#xtranslate superclass:findclassify => (OBJGENM.(eval(BEHAVIOR.mcRMARKERCLASS():objmethodsimplement)).(class):(CM_BEHAVIOR_N+3))
|
||||
#xtranslate superclass:isresultmarker => (OBJGENM.(eval(BEHAVIOR.mcRMARKERCLASS():objmethodsimplement)).(class):(CM_TOKENCLASS_N+1))
|
||||
|
||||
**********************************************************************
|
||||
static function setMCMethods(pOsztaly)
|
||||
// Egy t”mb”t felt”lt a metaoszt ly m–veleti blokkjaival.
|
||||
pOsztaly[(CM_OBJECT_N+1)]:={|class,id,str,file,line,pos| onew(class,id,str,file,line,pos)}
|
||||
return pOsztaly
|
||||
|
||||
**********************************************************************
|
||||
static function setMCams(ta,tm)
|
||||
// Egy t”mb”t felt”lt a metaoszt ly ltal def. objektumok attrib£tumaival ‚s m–veleteivel.
|
||||
|
||||
tm[(CM_OBJECT_N+1)-CM_NIL_N] := {(CM_OBJECT_N+1),'onew','id,str,file,line,pos',nil}
|
||||
return nil
|
||||
|
||||
**********************************************************************
|
||||
#ifndef _NO_MCRALTERCLASS_
|
||||
#ifdef _STRICT_PARENT_
|
||||
#ifdef _CA_CM_ONLY_
|
||||
#include "meta.och" // "metaclas.och"
|
||||
#else // _CA_CM_ONLY_
|
||||
#define _CA_CM_ONLY_
|
||||
#include "meta.och" // "metaclas.och"
|
||||
#undef _CA_CM_ONLY_
|
||||
#endif // _CA_CM_ONLY_
|
||||
#else
|
||||
#include "meta.och" // "metaclas.och"
|
||||
#endif // _STRICT_PARENT_
|
||||
function mcRALTERCLASS()
|
||||
// El“szedi az oszt ly metaoszt ly t. (metaclass)
|
||||
static metaOsztaly
|
||||
if (metaOsztaly==nil)
|
||||
metaOsztaly:=META.clMETA():onew(;
|
||||
mcRMARKERCLASS(),;
|
||||
"RALTERCLASS",;
|
||||
CA_RALTERCLASS_N,;
|
||||
CM_RALTERCLASS_N,;
|
||||
{|ta,tm|setMCams(ta,tm)},;
|
||||
{|t|setMCMethods(t)})
|
||||
endif
|
||||
return metaOsztaly
|
||||
#endif // _NO_MCRALTERCLASS_
|
||||
|
||||
#endif // _NO_RALTERCLASS_
|
||||
#ifdef _IMPLEMENT_ONEW_
|
||||
**********************************************************************
|
||||
cimplement onew(id,str,file,line,pos)
|
||||
local o:=class:ocreate()
|
||||
|
||||
RALTER.o:oinit(id,str,file,line,pos)
|
||||
return o
|
||||
#endif // _IMPLEMENT_ONEW_
|
||||
|
||||
**********************************************************************
|
||||
#ifdef _IMPLEMENT_OINIT_
|
||||
implement oinit(id,str,file,line,pos)
|
||||
super:oinit()
|
||||
return this
|
||||
#endif // _IMPLEMENT_OINIT_
|
||||
|
||||
**********************************************************************
|
||||
**********************************************************************
|
||||
#endif // _RALTER_PRG_OCH_
|
||||
#endif // _RALTER_PRG_
|
||||
@@ -1,50 +0,0 @@
|
||||
/*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
//*******************************************************************
|
||||
// ralter.prg: a RALTER oszt ly implement ci¢ja.
|
||||
// 1999, Csisz r Levente
|
||||
|
||||
//*******************************************************************
|
||||
#include "ctoken.ch"
|
||||
|
||||
//*******************************************************************
|
||||
#include "objgen.ch"
|
||||
|
||||
#define _RALTER_PRG_
|
||||
#define _IMPLEMENT_ONEW_
|
||||
|
||||
#include "ralter.och"
|
||||
|
||||
//*******************************************************************
|
||||
implement oinit(id,str,file,line,pos)
|
||||
super:oinit(id,str,file,line,pos)
|
||||
this:tokenList :={}
|
||||
return this
|
||||
|
||||
//*******************************************************************
|
||||
implement getStr()
|
||||
local i
|
||||
local str
|
||||
|
||||
if (!this:id==TKID_RALTER)
|
||||
return super:getStr()
|
||||
endif
|
||||
str:="["
|
||||
for i:=1 to len(this:tokenList)
|
||||
str+=TOKEN.(this:tokenList[i]):getStr()
|
||||
end for
|
||||
|
||||
str+="]"
|
||||
if (this:isError())
|
||||
str+=", Error: "+this:errorStr()+guessedEol()
|
||||
endif
|
||||
|
||||
return str
|
||||
|
||||
//*******************************************************************
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1,69 +0,0 @@
|
||||
//
|
||||
// $Id$
|
||||
//
|
||||
|
||||
//*******************************************************************
|
||||
// reader.cls: Źltal nos stream olvas˘ oszt ly. Ebb“l ”r”k”lnek a
|
||||
// karakter ‚s a token olvas˘ oszt lyok.
|
||||
// 1999, Csisz r Levente
|
||||
|
||||
class READER OBJECT
|
||||
|
||||
attrib name // Az olvasott stream azonosˇt˘ja (a
|
||||
// hibajelz‚sekhez)
|
||||
attrib errorStream // Ebbe a t”mbbe ˇrja a hiba<62>zeneteket.
|
||||
// prsError objektumok vannak benne.
|
||||
|
||||
attrib tbuffer // Ez egy TBUFFER, ide teszi be az unread()-el
|
||||
// visszatett itemeket.
|
||||
|
||||
nmethod read()
|
||||
// Olvas egy 'elemet'. Az elem a nil kiv‚tel‚vel b rmilyen
|
||||
// objektum lehet. Ha az unget puffer nem <20>res, akkor onnan
|
||||
// olvassa, ha <20>res, akkor pedig a readItem()-el olvas egyet
|
||||
// a stream-b“l.
|
||||
// Ret: Az elem, ha OK, nil, ha v‚ge van a streamnek, vagy ha
|
||||
// hiba volt. Hiba eset‚n be llˇtja a this:error-t.
|
||||
|
||||
nmethod unread(item)
|
||||
// Visszatesz az readerbe egy elemet.
|
||||
|
||||
nmethod readTBuffer()
|
||||
// A tbuffer-b“l olvas. Ha a tbuffer <20>res, akkor nil
|
||||
|
||||
nmethod arrayTBuffer()
|
||||
// Ad egy t”mb”t, amiben a tbuffer elemi vannak.
|
||||
|
||||
abstract nmethod readItem()
|
||||
// Bels“ m–velet, az val˘di aloszt lyoknak implement lni kell.
|
||||
// Olvas egy 'elemet' k”zvetlen<65>l a stream-b“l az unget puffer
|
||||
// megker<65>l‚s‚vel. Az elem a nil kiv‚tel‚vel b rmilyen
|
||||
// objektum lehet.
|
||||
// Ret: Az elem, ha OK, nil, ha v‚ge van a streamnek, vagy ha
|
||||
// hiba volt. Hiba eset‚n be llˇtja a this:error-t.
|
||||
|
||||
|
||||
nmethod isError(l)
|
||||
// Igaz, ha volt hiba.
|
||||
// l: Az errorStream el“z“ hossza. Ha meg van adva, akkor akkor
|
||||
// ad igazat, ha az errorStream hossza nagyobb, mint az l.
|
||||
|
||||
nmethod addError(prsErr)
|
||||
// Hozz ad egy prsErr objektumot az errorStream-hez, ha az nem nil
|
||||
|
||||
// nmethod errorStr()
|
||||
// Nil, ha nem volt hiba, egy string, ami a hiba leˇr s t
|
||||
// tartalmazza, ha volt hiba.
|
||||
|
||||
abstract nmethod destruct{retnil}()
|
||||
// T”rli az objektumhoz kapcsol˘d˘ k<>ls“ eszk”z”ket. (Pl. lez rja
|
||||
// a fil‚t etc.)
|
||||
|
||||
rmethod oinit(name,errorStream)
|
||||
// Inicializ lja az objektumot.
|
||||
|
||||
metaclass
|
||||
|
||||
rmethod onew(name,errorStream)
|
||||
|
||||
|
||||
@@ -1,309 +0,0 @@
|
||||
// READER.och oszt ly implement ci¢.
|
||||
// Gener lva: 1999.06.10, 14:39:56, OBJCCC v2.2.03
|
||||
// Meta oszt ly defin¡ci¢: Van
|
||||
|
||||
|
||||
#ifndef CA_OBJECT_N
|
||||
#ifdef _STRICT_PARENT_
|
||||
#ifdef _CA_CM_ONLY_
|
||||
#include "OBJECT.och"
|
||||
#else // _CA_CM_ONLY_
|
||||
#define _CA_CM_ONLY_
|
||||
#include "OBJECT.och"
|
||||
#undef _CA_CM_ONLY_
|
||||
#endif // _CA_CM_ONLY_
|
||||
#else
|
||||
#include "OBJECT.och"
|
||||
#endif // _STRICT_PARENT_
|
||||
#endif // CA_OBJECT_N
|
||||
|
||||
#ifndef _CA_CM_ONLY_
|
||||
#ifndef _READER_OCH_
|
||||
#define _READER_OCH_
|
||||
|
||||
|
||||
|
||||
|
||||
#xtranslate READER.<obj>:oinit => (OBJGEN.(<obj>):(4))
|
||||
#xtranslate READER.<obj>:getclass => (OBJGEN.(<obj>):(5))
|
||||
#xtranslate READER.<obj>:isclass => (OBJGEN.(<obj>):(6))
|
||||
#xtranslate READER.<obj>:getattrib => (OBJGEN.(<obj>):(7))
|
||||
#xtranslate READER.<obj>:setattrib => (OBJGEN.(<obj>):(8))
|
||||
|
||||
|
||||
#xtranslate READER.<obj>:name => <obj>\[CA_OBJECT_N+1\]
|
||||
#xtranslate READER.<obj>:errorstream => <obj>\[CA_OBJECT_N+2\]
|
||||
#xtranslate READER.<obj>:tbuffer => <obj>\[CA_OBJECT_N+3\]
|
||||
|
||||
// Specifik lva: read()
|
||||
// Specifik lva: unread(item)
|
||||
// Specifik lva: readtbuffer()
|
||||
// Specifik lva: arraytbuffer()
|
||||
// Specifik lva: readitem()
|
||||
// Specifik lva: iserror(l)
|
||||
// Specifik lva: adderror(prsErr)
|
||||
// Specifik lva: destruct()
|
||||
// ™r”k”lve: oinit(name,errorStream)
|
||||
|
||||
#xtranslate READER.<obj>:read => (OBJGEN.(<obj>):(CM_OBJECT_N+1))
|
||||
#xtranslate READER.<obj>:unread => (OBJGEN.(<obj>):(CM_OBJECT_N+2))
|
||||
#xtranslate READER.<obj>:readtbuffer => (OBJGEN.(<obj>):(CM_OBJECT_N+3))
|
||||
#xtranslate READER.<obj>:arraytbuffer => (OBJGEN.(<obj>):(CM_OBJECT_N+4))
|
||||
#xtranslate READER.<obj>:readitem => (OBJGEN.(<obj>):(CM_OBJECT_N+5))
|
||||
#xtranslate READER.<obj>:iserror => (OBJGEN.(<obj>):(CM_OBJECT_N+6))
|
||||
#xtranslate READER.<obj>:adderror => (OBJGEN.(<obj>):(CM_OBJECT_N+7))
|
||||
#xtranslate READER.<obj>:destruct => (OBJGEN.(<obj>):(CM_OBJECT_N+8))
|
||||
// ™r”k”lve: oinit(name,errorStream)
|
||||
|
||||
#endif // _READER_OCH_
|
||||
#endif // _CA_CM_ONLY_
|
||||
|
||||
#ifndef CA_READER_N
|
||||
#define CA_READER_N CA_OBJECT_N+3
|
||||
#define CM_READER_N CM_OBJECT_N+8
|
||||
#endif // CA_READER_N
|
||||
|
||||
#ifndef _CA_CM_ONLY_
|
||||
#ifndef _READERCLASS_OCH_
|
||||
#define _READERCLASS_OCH_
|
||||
|
||||
**********************************************************************
|
||||
#xtranslate C.READER:<m> => (READERCLASS.clREADER():<m>)
|
||||
#xtranslate C.READER:self() => (clREADER())
|
||||
|
||||
|
||||
#xtranslate READERCLASS.<obj>:parent => <obj>\[CA_OBJECT_N+1\]
|
||||
#xtranslate READERCLASS.<obj>:name => <obj>\[CA_OBJECT_N+2\]
|
||||
#xtranslate READERCLASS.<obj>:objsize => <obj>\[CA_OBJECT_N+3\]
|
||||
#xtranslate READERCLASS.<obj>:attribs => <obj>\[CA_OBJECT_N+4\]
|
||||
#xtranslate READERCLASS.<obj>:methods => <obj>\[CA_OBJECT_N+5\]
|
||||
#xtranslate READERCLASS.<obj>:classid => <obj>\[CA_OBJECT_N+6\]
|
||||
#xtranslate READERCLASS.<obj>:parentclassids => <obj>\[CA_OBJECT_N+7\]
|
||||
#xtranslate READERCLASS.<obj>:amblock => <obj>\[CA_OBJECT_N+8\]
|
||||
#xtranslate READERCLASS.<obj>:methodsblock => <obj>\[CA_OBJECT_N+9\]
|
||||
#xtranslate READERCLASS.<obj>:objmethodsimplement => <obj>\[CA_OBJECT_N+10\]
|
||||
|
||||
|
||||
#xtranslate READERCLASS.<obj>:oinit => (OBJGEN.(<obj>):(4))
|
||||
#xtranslate READERCLASS.<obj>:getclass => (OBJGEN.(<obj>):(5))
|
||||
#xtranslate READERCLASS.<obj>:isclass => (OBJGEN.(<obj>):(6))
|
||||
#xtranslate READERCLASS.<obj>:getattrib => (OBJGEN.(<obj>):(7))
|
||||
#xtranslate READERCLASS.<obj>:setattrib => (OBJGEN.(<obj>):(8))
|
||||
#xtranslate READERCLASS.<obj>:onew => (OBJGEN.(<obj>):(CM_OBJECT_N+1))
|
||||
#xtranslate READERCLASS.<obj>:ocreate => (OBJGEN.(<obj>):(CM_OBJECT_N+2))
|
||||
#xtranslate READERCLASS.<obj>:rawoinit => (OBJGEN.(<obj>):(CM_OBJECT_N+3))
|
||||
#xtranslate READERCLASS.<obj>:oinitclass => (OBJGEN.(<obj>):(CM_OBJECT_N+4))
|
||||
#xtranslate READERCLASS.<obj>:getmethodsimplement => (OBJGEN.(<obj>):(CM_OBJECT_N+5))
|
||||
#xtranslate READERCLASS.<obj>:attribidx => (OBJGEN.(<obj>):(CM_OBJECT_N+6))
|
||||
#xtranslate READERCLASS.<obj>:needclassid => (OBJGEN.(<obj>):(CM_OBJECT_N+7))
|
||||
#xtranslate READERCLASS.<obj>:isinheritfrom => (OBJGEN.(<obj>):(CM_OBJECT_N+8))
|
||||
|
||||
|
||||
|
||||
// ™r”k”lve: onew(name,errorStream)
|
||||
|
||||
// ™r”k”lve: onew(name,errorStream)
|
||||
|
||||
#endif // _READERCLASS_OCH_
|
||||
#endif // _CA_CM_ONLY_
|
||||
|
||||
#ifndef CA_READERCLASS_N
|
||||
#define CA_READERCLASS_N CA_BEHAVIOR_N+0
|
||||
#define CM_READERCLASS_N CM_BEHAVIOR_N+0
|
||||
#endif // CA_READERCLASS_N
|
||||
|
||||
|
||||
**********************************************************************
|
||||
#ifdef _READER_PRG_
|
||||
#ifndef _READER_PRG_OCH_
|
||||
#define _READER_PRG_OCH_
|
||||
|
||||
|
||||
**********************************************************************
|
||||
#xtranslate othis:<m> => READER.(othis):<m>
|
||||
#xtranslate thisclass:<m> => READERCLASS.(this:getClass()):<m>
|
||||
#define CTHIS READER
|
||||
|
||||
|
||||
**********************************************************************
|
||||
#xtranslate this:<m> => READER.(this):<m>
|
||||
|
||||
#xcommand implement read() => static function read(this)
|
||||
#xcommand implement unread(item) => static function unread(this,item)
|
||||
#xcommand implement readtbuffer() => static function readtbuffer(this)
|
||||
#xcommand implement arraytbuffer() => static function arraytbuffer(this)
|
||||
#xcommand implement iserror(l) => static function iserror(this,l)
|
||||
#xcommand implement adderror(prsErr) => ;
|
||||
static function adderror(this,prsErr)
|
||||
#xcommand implement destruct() => static function retnil(this,methodName,methodIdx,params)
|
||||
#xcommand implement oinit(name,errorStream) => ;
|
||||
static function oinit(this,name,errorStream)
|
||||
|
||||
#ifdef _IMPLEMENT_EXPORT_
|
||||
#xcommand implement export read() => function read(this)
|
||||
#xcommand implement export unread(item) => function unread(this,item)
|
||||
#xcommand implement export readtbuffer() => function readtbuffer(this)
|
||||
#xcommand implement export arraytbuffer() => function arraytbuffer(this)
|
||||
#xcommand implement export iserror(l) => function iserror(this,l)
|
||||
#xcommand implement export adderror(prsErr) => ;
|
||||
function adderror(this,prsErr)
|
||||
#xcommand implement export destruct() => function retnil(this,methodName,methodIdx,params)
|
||||
#xcommand implement export oinit(name,errorStream) => ;
|
||||
function oinit(this,name,errorStream)
|
||||
#endif // _IMPLEMENT_EXPORT_
|
||||
|
||||
#xtranslate super:oinit => (OBJGENM.(eval(BEHAVIOR.clOBJECT():objmethodsimplement)).(this):(4))
|
||||
#xtranslate super:getclass => (OBJGENM.(eval(BEHAVIOR.clOBJECT():objmethodsimplement)).(this):(5))
|
||||
#xtranslate super:isclass => (OBJGENM.(eval(BEHAVIOR.clOBJECT():objmethodsimplement)).(this):(6))
|
||||
#xtranslate super:getattrib => (OBJGENM.(eval(BEHAVIOR.clOBJECT():objmethodsimplement)).(this):(7))
|
||||
#xtranslate super:setattrib => (OBJGENM.(eval(BEHAVIOR.clOBJECT():objmethodsimplement)).(this):(8))
|
||||
|
||||
**********************************************************************
|
||||
static function setCMethods(pOsztaly)
|
||||
// Egy t”mb”t felt”lt az oszt ly m–veleti blokkjaival.
|
||||
pOsztaly[(CM_OBJECT_N+1)]:={|this| read(this)}
|
||||
pOsztaly[(CM_OBJECT_N+2)]:={|this,item| unread(this,item)}
|
||||
pOsztaly[(CM_OBJECT_N+3)]:={|this| readtbuffer(this)}
|
||||
pOsztaly[(CM_OBJECT_N+4)]:={|this| arraytbuffer(this)}
|
||||
pOsztaly[(CM_OBJECT_N+5)]:={|this| errAbstract(this,"readitem",(CM_OBJECT_N+5),{})}
|
||||
pOsztaly[(CM_OBJECT_N+6)]:={|this,l| iserror(this,l)}
|
||||
pOsztaly[(CM_OBJECT_N+7)]:={|this,prsErr| adderror(this,prsErr)}
|
||||
pOsztaly[(CM_OBJECT_N+8)]:={|this| retnil(this,"destruct",(CM_OBJECT_N+8),{})}
|
||||
pOsztaly[(4)]:={|this,name,errorStream| oinit(this,name,errorStream)}
|
||||
return pOsztaly
|
||||
|
||||
**********************************************************************
|
||||
static function setCams(ta,tm)
|
||||
// Egy t”mb”t felt”lt az oszt ly ltal def. objektumok attrib£tumaival ‚s m–veleteivel.
|
||||
ta[CA_OBJECT_N+1-CA_NIL_N] := {CA_OBJECT_N+1,'name', }
|
||||
ta[CA_OBJECT_N+2-CA_NIL_N] := {CA_OBJECT_N+2,'errorstream', }
|
||||
ta[CA_OBJECT_N+3-CA_NIL_N] := {CA_OBJECT_N+3,'tbuffer', }
|
||||
|
||||
tm[(CM_OBJECT_N+1)-CM_NIL_N] := {(CM_OBJECT_N+1),'read','',nil}
|
||||
tm[(CM_OBJECT_N+2)-CM_NIL_N] := {(CM_OBJECT_N+2),'unread','item',nil}
|
||||
tm[(CM_OBJECT_N+3)-CM_NIL_N] := {(CM_OBJECT_N+3),'readtbuffer','',nil}
|
||||
tm[(CM_OBJECT_N+4)-CM_NIL_N] := {(CM_OBJECT_N+4),'arraytbuffer','',nil}
|
||||
tm[(CM_OBJECT_N+5)-CM_NIL_N] := {(CM_OBJECT_N+5),'readitem','','a'}
|
||||
tm[(CM_OBJECT_N+6)-CM_NIL_N] := {(CM_OBJECT_N+6),'iserror','l',nil}
|
||||
tm[(CM_OBJECT_N+7)-CM_NIL_N] := {(CM_OBJECT_N+7),'adderror','prsErr',nil}
|
||||
tm[(CM_OBJECT_N+8)-CM_NIL_N] := {(CM_OBJECT_N+8),'destruct','','a'}
|
||||
tm[(4)-CM_NIL_N] := {(4),'oinit','name,errorStream',nil}
|
||||
return nil
|
||||
|
||||
#ifndef _NO_CLREADER_
|
||||
#ifdef _STRICT_PARENT_
|
||||
#ifdef _CA_CM_ONLY_
|
||||
#include "meta.och"
|
||||
#else // _CA_CM_ONLY_
|
||||
#define _CA_CM_ONLY_
|
||||
#include "meta.och"
|
||||
#undef _CA_CM_ONLY_
|
||||
#endif // _CA_CM_ONLY_
|
||||
#else
|
||||
#include "meta.och"
|
||||
#endif // _STRICT_PARENT_
|
||||
**********************************************************************
|
||||
function clREADER()
|
||||
// El“szedi az oszt lyt. (class)
|
||||
static osztaly
|
||||
if (osztaly==nil)
|
||||
osztaly:=META.mcREADERCLASS():onew(;
|
||||
clOBJECT(),;
|
||||
"READER",;
|
||||
CA_READER_N,;
|
||||
CM_READER_N,;
|
||||
{|ta,tm|setCams(ta,tm)},;
|
||||
{|t|setCMethods(t)})
|
||||
endif
|
||||
return osztaly
|
||||
#endif // _NO_CLREADER_
|
||||
|
||||
#ifndef _NO_READERCLASS_
|
||||
|
||||
**********************************************************************
|
||||
#xtranslate class:<m> => READERCLASS.(class):<m>
|
||||
|
||||
#xcommand cimplement onew(name,errorStream) => ;
|
||||
static function onew(class,name,errorStream)
|
||||
|
||||
#ifdef _IMPLEMENT_EXPORT_
|
||||
#xcommand cimplement export onew(name,errorStream) => ;
|
||||
function onew(class,name,errorStream)
|
||||
#endif // _IMPLEMENT_EXPORT_
|
||||
|
||||
#xtranslate superclass:oinit => (OBJGENM.(eval(BEHAVIOR.clBEHAVIOR():objmethodsimplement)).(class):(4))
|
||||
#xtranslate superclass:getclass => (OBJGENM.(eval(BEHAVIOR.clBEHAVIOR():objmethodsimplement)).(class):(5))
|
||||
#xtranslate superclass:isclass => (OBJGENM.(eval(BEHAVIOR.clBEHAVIOR():objmethodsimplement)).(class):(6))
|
||||
#xtranslate superclass:getattrib => (OBJGENM.(eval(BEHAVIOR.clBEHAVIOR():objmethodsimplement)).(class):(7))
|
||||
#xtranslate superclass:setattrib => (OBJGENM.(eval(BEHAVIOR.clBEHAVIOR():objmethodsimplement)).(class):(8))
|
||||
#xtranslate superclass:onew => (OBJGENM.(eval(BEHAVIOR.clBEHAVIOR():objmethodsimplement)).(class):(CM_OBJECT_N+1))
|
||||
#xtranslate superclass:ocreate => (OBJGENM.(eval(BEHAVIOR.clBEHAVIOR():objmethodsimplement)).(class):(CM_OBJECT_N+2))
|
||||
#xtranslate superclass:rawoinit => (OBJGENM.(eval(BEHAVIOR.clBEHAVIOR():objmethodsimplement)).(class):(CM_OBJECT_N+3))
|
||||
#xtranslate superclass:oinitclass => (OBJGENM.(eval(BEHAVIOR.clBEHAVIOR():objmethodsimplement)).(class):(CM_OBJECT_N+4))
|
||||
#xtranslate superclass:getmethodsimplement => (OBJGENM.(eval(BEHAVIOR.clBEHAVIOR():objmethodsimplement)).(class):(CM_OBJECT_N+5))
|
||||
#xtranslate superclass:attribidx => (OBJGENM.(eval(BEHAVIOR.clBEHAVIOR():objmethodsimplement)).(class):(CM_OBJECT_N+6))
|
||||
#xtranslate superclass:needclassid => (OBJGENM.(eval(BEHAVIOR.clBEHAVIOR():objmethodsimplement)).(class):(CM_OBJECT_N+7))
|
||||
#xtranslate superclass:isinheritfrom => (OBJGENM.(eval(BEHAVIOR.clBEHAVIOR():objmethodsimplement)).(class):(CM_OBJECT_N+8))
|
||||
|
||||
**********************************************************************
|
||||
static function setMCMethods(pOsztaly)
|
||||
// Egy t”mb”t felt”lt a metaoszt ly m–veleti blokkjaival.
|
||||
pOsztaly[(CM_OBJECT_N+1)]:={|class,name,errorStream| onew(class,name,errorStream)}
|
||||
return pOsztaly
|
||||
|
||||
**********************************************************************
|
||||
static function setMCams(ta,tm)
|
||||
// Egy t”mb”t felt”lt a metaoszt ly ltal def. objektumok attrib£tumaival ‚s m–veleteivel.
|
||||
|
||||
tm[(CM_OBJECT_N+1)-CM_NIL_N] := {(CM_OBJECT_N+1),'onew','name,errorStream',nil}
|
||||
return nil
|
||||
|
||||
**********************************************************************
|
||||
#ifndef _NO_MCREADERCLASS_
|
||||
#ifdef _STRICT_PARENT_
|
||||
#ifdef _CA_CM_ONLY_
|
||||
#include "meta.och" // "metaclas.och"
|
||||
#else // _CA_CM_ONLY_
|
||||
#define _CA_CM_ONLY_
|
||||
#include "meta.och" // "metaclas.och"
|
||||
#undef _CA_CM_ONLY_
|
||||
#endif // _CA_CM_ONLY_
|
||||
#else
|
||||
#include "meta.och" // "metaclas.och"
|
||||
#endif // _STRICT_PARENT_
|
||||
function mcREADERCLASS()
|
||||
// El“szedi az oszt ly metaoszt ly t. (metaclass)
|
||||
static metaOsztaly
|
||||
if (metaOsztaly==nil)
|
||||
metaOsztaly:=META.clMETA():onew(;
|
||||
clBEHAVIOR(),;
|
||||
"READERCLASS",;
|
||||
CA_READERCLASS_N,;
|
||||
CM_READERCLASS_N,;
|
||||
{|ta,tm|setMCams(ta,tm)},;
|
||||
{|t|setMCMethods(t)})
|
||||
endif
|
||||
return metaOsztaly
|
||||
#endif // _NO_MCREADERCLASS_
|
||||
|
||||
#endif // _NO_READERCLASS_
|
||||
#ifdef _IMPLEMENT_ONEW_
|
||||
**********************************************************************
|
||||
cimplement onew(name,errorStream)
|
||||
local o:=class:ocreate()
|
||||
|
||||
READER.o:oinit(name,errorStream)
|
||||
return o
|
||||
#endif // _IMPLEMENT_ONEW_
|
||||
|
||||
**********************************************************************
|
||||
#ifdef _IMPLEMENT_OINIT_
|
||||
implement oinit(name,errorStream)
|
||||
super:oinit()
|
||||
return this
|
||||
#endif // _IMPLEMENT_OINIT_
|
||||
|
||||
**********************************************************************
|
||||
**********************************************************************
|
||||
#endif // _READER_PRG_OCH_
|
||||
#endif // _READER_PRG_
|
||||
@@ -1,96 +0,0 @@
|
||||
/*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
//*******************************************************************
|
||||
// reader.prg: A reader oszt ly implement ci¢ja.
|
||||
// 1999, Csisz r Levente
|
||||
|
||||
//*******************************************************************
|
||||
#include "objgen.ch"
|
||||
|
||||
//*******************************************************************
|
||||
#include "tbuffer.och"
|
||||
|
||||
//*******************************************************************
|
||||
#define _READER_PRG_
|
||||
#define _IMPLEMENT_ONEW_
|
||||
|
||||
#include "reader.och"
|
||||
|
||||
//*******************************************************************
|
||||
|
||||
implement oinit(name,errorStream)
|
||||
super:oinit()
|
||||
this:name:=name
|
||||
this:tbuffer:=C.TBUFFER:onew()
|
||||
this:errorStream:=errorStream
|
||||
return this
|
||||
|
||||
//*******************************************************************
|
||||
implement read()
|
||||
local w
|
||||
|
||||
if (nil!=(w:=TBUFFER.(this:tbuffer):get()))
|
||||
return w
|
||||
endif
|
||||
return this:readItem()
|
||||
|
||||
//*******************************************************************
|
||||
implement unread(item)
|
||||
TBUFFER.(this:tbuffer):unget(item)
|
||||
return nil
|
||||
|
||||
//*******************************************************************
|
||||
implement readTBuffer()
|
||||
return TBUFFER.(this:tbuffer):get()
|
||||
|
||||
//*******************************************************************
|
||||
implement arrayTBuffer()
|
||||
local i,r:={}
|
||||
|
||||
for i:=1 to TBUFFER.(this:tBuffer):bItemNumber
|
||||
aadd(r,TBUFFER.(this:tBuffer):getBItem(i))
|
||||
end for
|
||||
|
||||
return r
|
||||
|
||||
//*******************************************************************
|
||||
implement isError(l)
|
||||
|
||||
if (empty(this:errorStream))
|
||||
return .f.
|
||||
endif
|
||||
|
||||
if (empty(l))
|
||||
return .t.
|
||||
endif
|
||||
|
||||
return len(this:errorStream)>l
|
||||
|
||||
//*******************************************************************
|
||||
implement addError(prsErr)
|
||||
if (this:errorStream!=nil)
|
||||
aadd(this:errorStream,prsErr)
|
||||
endif
|
||||
return nil
|
||||
|
||||
//*******************************************************************
|
||||
#ifdef OLD
|
||||
implement errorStr()
|
||||
local errStr
|
||||
|
||||
if (!this:isError())
|
||||
return nil
|
||||
endif
|
||||
|
||||
errStr:=""
|
||||
if (!empty(this:error[1]))
|
||||
errStr+=this:error[1]+": "
|
||||
endif
|
||||
errStr+=this:error[3]+", errCode: "+toStr(this:error[2])
|
||||
return errStr
|
||||
#endif
|
||||
|
||||
//*******************************************************************
|
||||
|
||||
@@ -1,43 +0,0 @@
|
||||
/*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
cccppc
|
||||
------
|
||||
|
||||
This is a CA-Clipper 5.x compatible preprocessor written in
|
||||
Clipper.
|
||||
|
||||
The development of this program has been continued in C++, so
|
||||
this Clipper version is discontinued and only serves testing
|
||||
and demonstration purposes.
|
||||
|
||||
Use "rmake makefile.rmk" to build it in CA-Cl*pper.
|
||||
|
||||
Levente Csisz r <lcsiszar@index.hu>, 1998.09.01
|
||||
|
||||
--------------------------------
|
||||
Notes from the uploader [vszel]:
|
||||
|
||||
These files were originally located in a separate subdirectory
|
||||
named "object", they were moved to the main directory so that
|
||||
the GNU-make can be used to build it:
|
||||
|
||||
/object
|
||||
behavior.cls
|
||||
behavior.och
|
||||
meta.cls
|
||||
meta.och
|
||||
metaclas.cls
|
||||
metaclas.och
|
||||
object.cls
|
||||
object.och
|
||||
object.prg
|
||||
objgen.ch
|
||||
package.cls
|
||||
package.och
|
||||
package.prg
|
||||
version.prg
|
||||
|
||||
Some files (*.OCH) don't have CVS headers, since
|
||||
they were automatically generated by an external utility.
|
||||
@@ -1,51 +0,0 @@
|
||||
//
|
||||
// $Id$
|
||||
//
|
||||
|
||||
//*******************************************************************
|
||||
// rmarker.cls : Result marker token oszt ly.
|
||||
// 1999, Csisz r Levente
|
||||
|
||||
// Result markereket t rol˘ token.
|
||||
|
||||
class RMARKER TOKEN
|
||||
|
||||
attrib mmNum // A result markerhez tartoz˘ match marker sorsz ma
|
||||
// egy makr˘ definˇci˘ban.
|
||||
attrib mmTkId // A result markerhez tartoz˘ match marker id-je
|
||||
// egy makr˘ definˇci˘ban.
|
||||
|
||||
rmethod oinit(id,str,file,line,pos)
|
||||
// Inicializ lja az objektumot. Az str lesz a result marker neve.
|
||||
|
||||
nmethod getName()
|
||||
|
||||
nmethod setMMIdxByMM(matchMarkers)
|
||||
// A matchMarkers-ben keres egy ugyanolyan nev– marker-t, mint
|
||||
// amilyen saj t maga, ‚s az mNum-ot be llˇtja a sorsz m ra.
|
||||
// Egyenl“re case insensitive.
|
||||
// Ret: .t., ha siker<65>lt, .f., ha nem.
|
||||
|
||||
nmethod changeByMMList(paramValues,result,iLevel,oneLevel)
|
||||
// A result-ba beleteszi a this ltal meghat rozott helyettesˇt‚st
|
||||
// a paramValues-b“l az iLevel szinten. Ha a paramValues-ban az
|
||||
// iLevel szinten nincs helyettesˇtend“, akkor nem csin l semmit.
|
||||
// Ret:
|
||||
// 0: nem siker<65>lt a helyettesˇt‚s,
|
||||
// 1: csak '<27>res' helyettesˇt‚s volt, (Nem volt illesztett match
|
||||
// marker, de <20>reset helyettesˇtett pl. dumb stringify result
|
||||
// marker, logify result marker.
|
||||
// 2: volt helyettesˇt‚s.
|
||||
//
|
||||
// Probl‚ma: Ha a match marker egy list_match_marker, akkor a
|
||||
// stringify ‚s a blockify markerek elemenk‚nt csin lj k
|
||||
// a konverzi˘t. (Ez jelenleg nincs imlement lva.)
|
||||
|
||||
metaclass
|
||||
|
||||
rmethod onew(id,str,file,line,pos)
|
||||
|
||||
nmethod isResultMarker(aToken)
|
||||
// Meg llpˇtja, hogy az aToken egy result marker-e.
|
||||
// Ret: .t., ha igezn, .f., ha nem.
|
||||
|
||||
@@ -1,315 +0,0 @@
|
||||
// RMARKER.och oszt ly implement ci¢.
|
||||
// Gener lva: 1999.06.10, 14:40:25, OBJCCC v2.2.03
|
||||
// Meta oszt ly defin¡ci¢: Van
|
||||
|
||||
|
||||
#ifndef CA_TOKEN_N
|
||||
#ifdef _STRICT_PARENT_
|
||||
#ifdef _CA_CM_ONLY_
|
||||
#include "TOKEN.och"
|
||||
#else // _CA_CM_ONLY_
|
||||
#define _CA_CM_ONLY_
|
||||
#include "TOKEN.och"
|
||||
#undef _CA_CM_ONLY_
|
||||
#endif // _CA_CM_ONLY_
|
||||
#else
|
||||
#include "TOKEN.och"
|
||||
#endif // _STRICT_PARENT_
|
||||
#endif // CA_TOKEN_N
|
||||
|
||||
#ifndef _CA_CM_ONLY_
|
||||
#ifndef _RMARKER_OCH_
|
||||
#define _RMARKER_OCH_
|
||||
|
||||
|
||||
#xtranslate RMARKER.<obj>:id => <obj>\[CA_OBJECT_N+1\]
|
||||
#xtranslate RMARKER.<obj>:str => <obj>\[CA_OBJECT_N+2\]
|
||||
#xtranslate RMARKER.<obj>:file => <obj>\[CA_OBJECT_N+3\]
|
||||
#xtranslate RMARKER.<obj>:line => <obj>\[CA_OBJECT_N+4\]
|
||||
#xtranslate RMARKER.<obj>:pos => <obj>\[CA_OBJECT_N+5\]
|
||||
#xtranslate RMARKER.<obj>:classify => <obj>\[CA_OBJECT_N+6\]
|
||||
#xtranslate RMARKER.<obj>:error => <obj>\[CA_OBJECT_N+7\]
|
||||
#xtranslate RMARKER.<obj>:eqtype => <obj>\[CA_OBJECT_N+8\]
|
||||
|
||||
|
||||
#xtranslate RMARKER.<obj>:oinit => (OBJGEN.(<obj>):(4))
|
||||
#xtranslate RMARKER.<obj>:getclass => (OBJGEN.(<obj>):(5))
|
||||
#xtranslate RMARKER.<obj>:isclass => (OBJGEN.(<obj>):(6))
|
||||
#xtranslate RMARKER.<obj>:getattrib => (OBJGEN.(<obj>):(7))
|
||||
#xtranslate RMARKER.<obj>:setattrib => (OBJGEN.(<obj>):(8))
|
||||
#xtranslate RMARKER.<obj>:iserror => (OBJGEN.(<obj>):(CM_OBJECT_N+1))
|
||||
#xtranslate RMARKER.<obj>:errorstr => (OBJGEN.(<obj>):(CM_OBJECT_N+2))
|
||||
#xtranslate RMARKER.<obj>:printtostr => (OBJGEN.(<obj>):(CM_OBJECT_N+3))
|
||||
#xtranslate RMARKER.<obj>:getstr => (OBJGEN.(<obj>):(CM_OBJECT_N+4))
|
||||
#xtranslate RMARKER.<obj>:copytoken => (OBJGEN.(<obj>):(CM_OBJECT_N+5))
|
||||
|
||||
|
||||
#xtranslate RMARKER.<obj>:mmnum => <obj>\[CA_TOKEN_N+1\]
|
||||
#xtranslate RMARKER.<obj>:mmtkid => <obj>\[CA_TOKEN_N+2\]
|
||||
|
||||
// ™r”k”lve: oinit(id,str,file,line,pos)
|
||||
// Specifik lva: getname()
|
||||
// Specifik lva: setmmidxbymm(matchMarkers)
|
||||
// Specifik lva: changebymmlist(paramValues,result,iLevel,oneLevel)
|
||||
|
||||
// ™r”k”lve: oinit(id,str,file,line,pos)
|
||||
#xtranslate RMARKER.<obj>:getname => (OBJGEN.(<obj>):(CM_TOKEN_N+1))
|
||||
#xtranslate RMARKER.<obj>:setmmidxbymm => (OBJGEN.(<obj>):(CM_TOKEN_N+2))
|
||||
#xtranslate RMARKER.<obj>:changebymmlist => (OBJGEN.(<obj>):(CM_TOKEN_N+3))
|
||||
|
||||
#endif // _RMARKER_OCH_
|
||||
#endif // _CA_CM_ONLY_
|
||||
|
||||
#ifndef CA_RMARKER_N
|
||||
#define CA_RMARKER_N CA_TOKEN_N+2
|
||||
#define CM_RMARKER_N CM_TOKEN_N+3
|
||||
#endif // CA_RMARKER_N
|
||||
|
||||
#ifndef _CA_CM_ONLY_
|
||||
#ifndef _RMARKERCLASS_OCH_
|
||||
#define _RMARKERCLASS_OCH_
|
||||
|
||||
**********************************************************************
|
||||
#xtranslate C.RMARKER:<m> => (RMARKERCLASS.clRMARKER():<m>)
|
||||
#xtranslate C.RMARKER:self() => (clRMARKER())
|
||||
|
||||
|
||||
#xtranslate RMARKERCLASS.<obj>:parent => <obj>\[CA_OBJECT_N+1\]
|
||||
#xtranslate RMARKERCLASS.<obj>:name => <obj>\[CA_OBJECT_N+2\]
|
||||
#xtranslate RMARKERCLASS.<obj>:objsize => <obj>\[CA_OBJECT_N+3\]
|
||||
#xtranslate RMARKERCLASS.<obj>:attribs => <obj>\[CA_OBJECT_N+4\]
|
||||
#xtranslate RMARKERCLASS.<obj>:methods => <obj>\[CA_OBJECT_N+5\]
|
||||
#xtranslate RMARKERCLASS.<obj>:classid => <obj>\[CA_OBJECT_N+6\]
|
||||
#xtranslate RMARKERCLASS.<obj>:parentclassids => <obj>\[CA_OBJECT_N+7\]
|
||||
#xtranslate RMARKERCLASS.<obj>:amblock => <obj>\[CA_OBJECT_N+8\]
|
||||
#xtranslate RMARKERCLASS.<obj>:methodsblock => <obj>\[CA_OBJECT_N+9\]
|
||||
#xtranslate RMARKERCLASS.<obj>:objmethodsimplement => <obj>\[CA_OBJECT_N+10\]
|
||||
#xtranslate RMARKERCLASS.<obj>:errstrarray => <obj>\[CA_BEHAVIOR_N+1\]
|
||||
#xtranslate RMARKERCLASS.<obj>:equivclass => <obj>\[CA_BEHAVIOR_N+2\]
|
||||
|
||||
|
||||
#xtranslate RMARKERCLASS.<obj>:oinit => (OBJGEN.(<obj>):(4))
|
||||
#xtranslate RMARKERCLASS.<obj>:getclass => (OBJGEN.(<obj>):(5))
|
||||
#xtranslate RMARKERCLASS.<obj>:isclass => (OBJGEN.(<obj>):(6))
|
||||
#xtranslate RMARKERCLASS.<obj>:getattrib => (OBJGEN.(<obj>):(7))
|
||||
#xtranslate RMARKERCLASS.<obj>:setattrib => (OBJGEN.(<obj>):(8))
|
||||
#xtranslate RMARKERCLASS.<obj>:onew => (OBJGEN.(<obj>):(CM_OBJECT_N+1))
|
||||
#xtranslate RMARKERCLASS.<obj>:ocreate => (OBJGEN.(<obj>):(CM_OBJECT_N+2))
|
||||
#xtranslate RMARKERCLASS.<obj>:rawoinit => (OBJGEN.(<obj>):(CM_OBJECT_N+3))
|
||||
#xtranslate RMARKERCLASS.<obj>:oinitclass => (OBJGEN.(<obj>):(CM_OBJECT_N+4))
|
||||
#xtranslate RMARKERCLASS.<obj>:getmethodsimplement => (OBJGEN.(<obj>):(CM_OBJECT_N+5))
|
||||
#xtranslate RMARKERCLASS.<obj>:attribidx => (OBJGEN.(<obj>):(CM_OBJECT_N+6))
|
||||
#xtranslate RMARKERCLASS.<obj>:needclassid => (OBJGEN.(<obj>):(CM_OBJECT_N+7))
|
||||
#xtranslate RMARKERCLASS.<obj>:isinheritfrom => (OBJGEN.(<obj>):(CM_OBJECT_N+8))
|
||||
#xtranslate RMARKERCLASS.<obj>:onewerror => (OBJGEN.(<obj>):(CM_BEHAVIOR_N+1))
|
||||
#xtranslate RMARKERCLASS.<obj>:copyfromtoken => (OBJGEN.(<obj>):(CM_BEHAVIOR_N+2))
|
||||
#xtranslate RMARKERCLASS.<obj>:findclassify => (OBJGEN.(<obj>):(CM_BEHAVIOR_N+3))
|
||||
|
||||
|
||||
|
||||
// ™r”k”lve: onew(id,str,file,line,pos)
|
||||
// Specifik lva: isresultmarker(aToken)
|
||||
|
||||
// ™r”k”lve: onew(id,str,file,line,pos)
|
||||
#xtranslate RMARKERCLASS.<obj>:isresultmarker => (OBJGEN.(<obj>):(CM_TOKENCLASS_N+1))
|
||||
|
||||
#endif // _RMARKERCLASS_OCH_
|
||||
#endif // _CA_CM_ONLY_
|
||||
|
||||
#ifndef CA_RMARKERCLASS_N
|
||||
#define CA_RMARKERCLASS_N CA_TOKENCLASS_N+0
|
||||
#define CM_RMARKERCLASS_N CM_TOKENCLASS_N+1
|
||||
#endif // CA_RMARKERCLASS_N
|
||||
|
||||
|
||||
**********************************************************************
|
||||
#ifdef _RMARKER_PRG_
|
||||
#ifndef _RMARKER_PRG_OCH_
|
||||
#define _RMARKER_PRG_OCH_
|
||||
|
||||
|
||||
**********************************************************************
|
||||
#xtranslate othis:<m> => RMARKER.(othis):<m>
|
||||
#xtranslate thisclass:<m> => RMARKERCLASS.(this:getClass()):<m>
|
||||
#define CTHIS RMARKER
|
||||
|
||||
|
||||
**********************************************************************
|
||||
#xtranslate this:<m> => RMARKER.(this):<m>
|
||||
|
||||
#xcommand implement oinit(id,str,file,line,pos) => ;
|
||||
static function oinit(this,id,str,file,line,pos)
|
||||
#xcommand implement getname() => static function getname(this)
|
||||
#xcommand implement setmmidxbymm(matchMarkers) => ;
|
||||
static function setmmidxbymm(this,matchMarkers)
|
||||
#xcommand implement changebymmlist(paramValues,result,iLevel,oneLevel) => ;
|
||||
static function changebymmlist(this,paramValues,result,iLevel,oneLevel)
|
||||
|
||||
#ifdef _IMPLEMENT_EXPORT_
|
||||
#xcommand implement export oinit(id,str,file,line,pos) => ;
|
||||
function oinit(this,id,str,file,line,pos)
|
||||
#xcommand implement export getname() => function getname(this)
|
||||
#xcommand implement export setmmidxbymm(matchMarkers) => ;
|
||||
function setmmidxbymm(this,matchMarkers)
|
||||
#xcommand implement export changebymmlist(paramValues,result,iLevel,oneLevel) => ;
|
||||
function changebymmlist(this,paramValues,result,iLevel,oneLevel)
|
||||
#endif // _IMPLEMENT_EXPORT_
|
||||
|
||||
#xtranslate super:oinit => (OBJGENM.(eval(BEHAVIOR.clTOKEN():objmethodsimplement)).(this):(4))
|
||||
#xtranslate super:getclass => (OBJGENM.(eval(BEHAVIOR.clTOKEN():objmethodsimplement)).(this):(5))
|
||||
#xtranslate super:isclass => (OBJGENM.(eval(BEHAVIOR.clTOKEN():objmethodsimplement)).(this):(6))
|
||||
#xtranslate super:getattrib => (OBJGENM.(eval(BEHAVIOR.clTOKEN():objmethodsimplement)).(this):(7))
|
||||
#xtranslate super:setattrib => (OBJGENM.(eval(BEHAVIOR.clTOKEN():objmethodsimplement)).(this):(8))
|
||||
#xtranslate super:iserror => (OBJGENM.(eval(BEHAVIOR.clTOKEN():objmethodsimplement)).(this):(CM_OBJECT_N+1))
|
||||
#xtranslate super:errorstr => (OBJGENM.(eval(BEHAVIOR.clTOKEN():objmethodsimplement)).(this):(CM_OBJECT_N+2))
|
||||
#xtranslate super:printtostr => (OBJGENM.(eval(BEHAVIOR.clTOKEN():objmethodsimplement)).(this):(CM_OBJECT_N+3))
|
||||
#xtranslate super:getstr => (OBJGENM.(eval(BEHAVIOR.clTOKEN():objmethodsimplement)).(this):(CM_OBJECT_N+4))
|
||||
#xtranslate super:copytoken => (OBJGENM.(eval(BEHAVIOR.clTOKEN():objmethodsimplement)).(this):(CM_OBJECT_N+5))
|
||||
|
||||
**********************************************************************
|
||||
static function setCMethods(pOsztaly)
|
||||
// Egy t”mb”t felt”lt az oszt ly m–veleti blokkjaival.
|
||||
pOsztaly[(4)]:={|this,id,str,file,line,pos| oinit(this,id,str,file,line,pos)}
|
||||
pOsztaly[(CM_TOKEN_N+1)]:={|this| getname(this)}
|
||||
pOsztaly[(CM_TOKEN_N+2)]:={|this,matchMarkers| setmmidxbymm(this,matchMarkers)}
|
||||
pOsztaly[(CM_TOKEN_N+3)]:={|this,paramValues,result,iLevel,oneLevel| changebymmlist(this,paramValues,result,iLevel,oneLevel)}
|
||||
return pOsztaly
|
||||
|
||||
**********************************************************************
|
||||
static function setCams(ta,tm)
|
||||
// Egy t”mb”t felt”lt az oszt ly ltal def. objektumok attrib£tumaival ‚s m–veleteivel.
|
||||
ta[CA_TOKEN_N+1-CA_NIL_N] := {CA_TOKEN_N+1,'mmnum', }
|
||||
ta[CA_TOKEN_N+2-CA_NIL_N] := {CA_TOKEN_N+2,'mmtkid', }
|
||||
|
||||
tm[(4)-CM_NIL_N] := {(4),'oinit','id,str,file,line,pos',nil}
|
||||
tm[(CM_TOKEN_N+1)-CM_NIL_N] := {(CM_TOKEN_N+1),'getname','',nil}
|
||||
tm[(CM_TOKEN_N+2)-CM_NIL_N] := {(CM_TOKEN_N+2),'setmmidxbymm','matchMarkers',nil}
|
||||
tm[(CM_TOKEN_N+3)-CM_NIL_N] := {(CM_TOKEN_N+3),'changebymmlist','paramValues,result,iLevel,oneLevel',nil}
|
||||
return nil
|
||||
|
||||
#ifndef _NO_CLRMARKER_
|
||||
#ifdef _STRICT_PARENT_
|
||||
#ifdef _CA_CM_ONLY_
|
||||
#include "meta.och"
|
||||
#else // _CA_CM_ONLY_
|
||||
#define _CA_CM_ONLY_
|
||||
#include "meta.och"
|
||||
#undef _CA_CM_ONLY_
|
||||
#endif // _CA_CM_ONLY_
|
||||
#else
|
||||
#include "meta.och"
|
||||
#endif // _STRICT_PARENT_
|
||||
**********************************************************************
|
||||
function clRMARKER()
|
||||
// El“szedi az oszt lyt. (class)
|
||||
static osztaly
|
||||
if (osztaly==nil)
|
||||
osztaly:=META.mcRMARKERCLASS():onew(;
|
||||
clTOKEN(),;
|
||||
"RMARKER",;
|
||||
CA_RMARKER_N,;
|
||||
CM_RMARKER_N,;
|
||||
{|ta,tm|setCams(ta,tm)},;
|
||||
{|t|setCMethods(t)})
|
||||
endif
|
||||
return osztaly
|
||||
#endif // _NO_CLRMARKER_
|
||||
|
||||
#ifndef _NO_RMARKERCLASS_
|
||||
|
||||
**********************************************************************
|
||||
#xtranslate class:<m> => RMARKERCLASS.(class):<m>
|
||||
|
||||
#xcommand cimplement onew(id,str,file,line,pos) => ;
|
||||
static function onew(class,id,str,file,line,pos)
|
||||
#xcommand cimplement isresultmarker(aToken) => ;
|
||||
static function isresultmarker(class,aToken)
|
||||
|
||||
#ifdef _IMPLEMENT_EXPORT_
|
||||
#xcommand cimplement export onew(id,str,file,line,pos) => ;
|
||||
function onew(class,id,str,file,line,pos)
|
||||
#xcommand cimplement export isresultmarker(aToken) => ;
|
||||
function isresultmarker(class,aToken)
|
||||
#endif // _IMPLEMENT_EXPORT_
|
||||
|
||||
#xtranslate superclass:oinit => (OBJGENM.(eval(BEHAVIOR.mcTOKENCLASS():objmethodsimplement)).(class):(4))
|
||||
#xtranslate superclass:getclass => (OBJGENM.(eval(BEHAVIOR.mcTOKENCLASS():objmethodsimplement)).(class):(5))
|
||||
#xtranslate superclass:isclass => (OBJGENM.(eval(BEHAVIOR.mcTOKENCLASS():objmethodsimplement)).(class):(6))
|
||||
#xtranslate superclass:getattrib => (OBJGENM.(eval(BEHAVIOR.mcTOKENCLASS():objmethodsimplement)).(class):(7))
|
||||
#xtranslate superclass:setattrib => (OBJGENM.(eval(BEHAVIOR.mcTOKENCLASS():objmethodsimplement)).(class):(8))
|
||||
#xtranslate superclass:onew => (OBJGENM.(eval(BEHAVIOR.mcTOKENCLASS():objmethodsimplement)).(class):(CM_OBJECT_N+1))
|
||||
#xtranslate superclass:ocreate => (OBJGENM.(eval(BEHAVIOR.mcTOKENCLASS():objmethodsimplement)).(class):(CM_OBJECT_N+2))
|
||||
#xtranslate superclass:rawoinit => (OBJGENM.(eval(BEHAVIOR.mcTOKENCLASS():objmethodsimplement)).(class):(CM_OBJECT_N+3))
|
||||
#xtranslate superclass:oinitclass => (OBJGENM.(eval(BEHAVIOR.mcTOKENCLASS():objmethodsimplement)).(class):(CM_OBJECT_N+4))
|
||||
#xtranslate superclass:getmethodsimplement => (OBJGENM.(eval(BEHAVIOR.mcTOKENCLASS():objmethodsimplement)).(class):(CM_OBJECT_N+5))
|
||||
#xtranslate superclass:attribidx => (OBJGENM.(eval(BEHAVIOR.mcTOKENCLASS():objmethodsimplement)).(class):(CM_OBJECT_N+6))
|
||||
#xtranslate superclass:needclassid => (OBJGENM.(eval(BEHAVIOR.mcTOKENCLASS():objmethodsimplement)).(class):(CM_OBJECT_N+7))
|
||||
#xtranslate superclass:isinheritfrom => (OBJGENM.(eval(BEHAVIOR.mcTOKENCLASS():objmethodsimplement)).(class):(CM_OBJECT_N+8))
|
||||
#xtranslate superclass:onewerror => (OBJGENM.(eval(BEHAVIOR.mcTOKENCLASS():objmethodsimplement)).(class):(CM_BEHAVIOR_N+1))
|
||||
#xtranslate superclass:copyfromtoken => (OBJGENM.(eval(BEHAVIOR.mcTOKENCLASS():objmethodsimplement)).(class):(CM_BEHAVIOR_N+2))
|
||||
#xtranslate superclass:findclassify => (OBJGENM.(eval(BEHAVIOR.mcTOKENCLASS():objmethodsimplement)).(class):(CM_BEHAVIOR_N+3))
|
||||
|
||||
**********************************************************************
|
||||
static function setMCMethods(pOsztaly)
|
||||
// Egy t”mb”t felt”lt a metaoszt ly m–veleti blokkjaival.
|
||||
pOsztaly[(CM_OBJECT_N+1)]:={|class,id,str,file,line,pos| onew(class,id,str,file,line,pos)}
|
||||
pOsztaly[(CM_TOKENCLASS_N+1)]:={|class,aToken| isresultmarker(class,aToken)}
|
||||
return pOsztaly
|
||||
|
||||
**********************************************************************
|
||||
static function setMCams(ta,tm)
|
||||
// Egy t”mb”t felt”lt a metaoszt ly ltal def. objektumok attrib£tumaival ‚s m–veleteivel.
|
||||
|
||||
tm[(CM_OBJECT_N+1)-CM_NIL_N] := {(CM_OBJECT_N+1),'onew','id,str,file,line,pos',nil}
|
||||
tm[(CM_TOKENCLASS_N+1)-CM_NIL_N] := {(CM_TOKENCLASS_N+1),'isresultmarker','aToken',nil}
|
||||
return nil
|
||||
|
||||
**********************************************************************
|
||||
#ifndef _NO_MCRMARKERCLASS_
|
||||
#ifdef _STRICT_PARENT_
|
||||
#ifdef _CA_CM_ONLY_
|
||||
#include "meta.och" // "metaclas.och"
|
||||
#else // _CA_CM_ONLY_
|
||||
#define _CA_CM_ONLY_
|
||||
#include "meta.och" // "metaclas.och"
|
||||
#undef _CA_CM_ONLY_
|
||||
#endif // _CA_CM_ONLY_
|
||||
#else
|
||||
#include "meta.och" // "metaclas.och"
|
||||
#endif // _STRICT_PARENT_
|
||||
function mcRMARKERCLASS()
|
||||
// El“szedi az oszt ly metaoszt ly t. (metaclass)
|
||||
static metaOsztaly
|
||||
if (metaOsztaly==nil)
|
||||
metaOsztaly:=META.clMETA():onew(;
|
||||
mcTOKENCLASS(),;
|
||||
"RMARKERCLASS",;
|
||||
CA_RMARKERCLASS_N,;
|
||||
CM_RMARKERCLASS_N,;
|
||||
{|ta,tm|setMCams(ta,tm)},;
|
||||
{|t|setMCMethods(t)})
|
||||
endif
|
||||
return metaOsztaly
|
||||
#endif // _NO_MCRMARKERCLASS_
|
||||
|
||||
#endif // _NO_RMARKERCLASS_
|
||||
#ifdef _IMPLEMENT_ONEW_
|
||||
**********************************************************************
|
||||
cimplement onew(id,str,file,line,pos)
|
||||
local o:=class:ocreate()
|
||||
|
||||
RMARKER.o:oinit(id,str,file,line,pos)
|
||||
return o
|
||||
#endif // _IMPLEMENT_ONEW_
|
||||
|
||||
**********************************************************************
|
||||
#ifdef _IMPLEMENT_OINIT_
|
||||
implement oinit(id,str,file,line,pos)
|
||||
super:oinit()
|
||||
return this
|
||||
#endif // _IMPLEMENT_OINIT_
|
||||
|
||||
**********************************************************************
|
||||
**********************************************************************
|
||||
#endif // _RMARKER_PRG_OCH_
|
||||
#endif // _RMARKER_PRG_
|
||||
@@ -1,283 +0,0 @@
|
||||
/*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
//*******************************************************************
|
||||
// rmarker.prg: az RMARKER oszt ly implement ci¢ja.
|
||||
// 1999, Csisz r Levente
|
||||
|
||||
//*******************************************************************
|
||||
#include "ctoken.ch"
|
||||
|
||||
//*******************************************************************
|
||||
#include "objgen.ch"
|
||||
|
||||
//*******************************************************************
|
||||
#include "mmarker.och"
|
||||
#include "token.och"
|
||||
#include "tkstr.och"
|
||||
|
||||
//*******************************************************************
|
||||
#define _RMARKER_PRG_
|
||||
#define _IMPLEMENT_ONEW_
|
||||
|
||||
#include "rmarker.och"
|
||||
|
||||
//*******************************************************************
|
||||
implement oinit(id,str,file,line,pos)
|
||||
super:oinit(id,str,file,line,pos)
|
||||
this:mmNum :=nil
|
||||
this:mmTkId :=nil
|
||||
return this
|
||||
|
||||
//*******************************************************************
|
||||
implement getName()
|
||||
return this:str
|
||||
|
||||
//*******************************************************************
|
||||
implement setMMIdxByMM(matchMarkers)
|
||||
// A matchMarkers-ben keres egy ugyanolyan nev– marker-t, mint
|
||||
// amilyen saj t maga, ‚s az mmNum-ot be ll¡tja a sorsz m ra,
|
||||
// ‚s kit”lti a mmTkId-t.
|
||||
// Egyenl“re case insensitive.
|
||||
// Ret: .t., ha siker<65>lt, .f., ha nem.
|
||||
local name,i
|
||||
|
||||
name:=lower(this:getName())
|
||||
|
||||
for i:=1 to len(matchMarkers)
|
||||
if (lower(MMARKER.matchMarkers[i]:getName())==name)
|
||||
this:mmNum:=MMARKER.matchMarkers[i]:mNum
|
||||
this:mmTkId:=MMARKER.matchMarkers[i]:id
|
||||
return .t.
|
||||
endif
|
||||
end for
|
||||
return .f.
|
||||
|
||||
//*******************************************************************
|
||||
cimplement isResultMarker(aToken)
|
||||
// Meg llp¡tja, hogy az aToken egy result marker-e.
|
||||
// Ret: .t., ha igezn, .f., ha nem.
|
||||
static idResultMarkers:={;
|
||||
TKID_DUMB_STR_RESULT_MARKER ,;
|
||||
TKID_REGULAR_RESULT_MARKER ,;
|
||||
TKID_STRINGIFY_RESULT_MARKER ,;
|
||||
TKID_SMART_STR_RESULT_MARKER ,;
|
||||
TKID_BLOCKIFY_RESULT_MARKER ,;
|
||||
TKID_LOGIFY_RESULT_MARKER ;
|
||||
}
|
||||
|
||||
return 0!=ascan(idResultMarkers,TOKEN.aToken:id)
|
||||
|
||||
//*******************************************************************
|
||||
static function stringifyTokenList(tokenList)
|
||||
local str,i
|
||||
|
||||
str:=""
|
||||
for i:=1 to len(tokenList)
|
||||
str+=TOKEN.tokenList[i]:str
|
||||
end for
|
||||
return stringifyStr(alltrim(str))
|
||||
|
||||
#ifdef OLD
|
||||
if ('"' $ str)
|
||||
if ("'" $ str)
|
||||
// Ez akkor is ¡gy marad, ha van ']' az str-ben a spec
|
||||
// szerint.
|
||||
// Itt azt lehetne csin lni, hogy sz‚tv gjuk a "'"
|
||||
// karakterekn‚l a stringet ‚s az ¡gy kapott stringeket
|
||||
// ”sszeadjuk, ‚s az eg‚sz kifejez‚st z r¢jelbe tessz<73>k.
|
||||
str:="["+str+"]"
|
||||
else
|
||||
str:="'"+str+"'"
|
||||
endif
|
||||
else
|
||||
str:='"'+str+'"'
|
||||
endif
|
||||
|
||||
return str
|
||||
#endif
|
||||
|
||||
//*******************************************************************
|
||||
static function mkTkStrFromToken(t,str)
|
||||
return C.TKSTR:copyFromToken(t,TKID_STRING,;
|
||||
substr(str,2,len(str)-2),;
|
||||
left(str,1),;
|
||||
right(str,1))
|
||||
|
||||
//*******************************************************************
|
||||
static function rmListChange(this,result,tl,addBlock,addEmptyBlock)
|
||||
local i
|
||||
#ifdef SPEEDY
|
||||
// Ez nem jelent jelent“s gyorsul st.
|
||||
// Az aadd() az ami meglehet“sen lass£, helyettes¡teni kellene, egy
|
||||
// olyannal, ami el“re lefoglal valamennyi helyet.
|
||||
local comma
|
||||
|
||||
comma:=C.TOKEN:copyFromToken(if(!empty(result),atail(result),this),;
|
||||
TKID_CHAR,",")
|
||||
#endif
|
||||
if (this:mmTkId==TKID_LIST_MATCH_MARKER)
|
||||
for i:=1 to len(tl)
|
||||
if (i>=2)
|
||||
#ifdef SPEEDY
|
||||
aadd(result,comma)
|
||||
#else
|
||||
aadd(result,C.TOKEN:copyFromToken(atail(result),TKID_CHAR,","))
|
||||
#endif
|
||||
endif
|
||||
if (empty(tl[i]))
|
||||
if (addEmptyBlock!=nil)
|
||||
eval(addEmptyBlock,tl[i],i)
|
||||
endif
|
||||
else
|
||||
eval(addBlock,tl[i],i)
|
||||
endif
|
||||
end for
|
||||
elseif (!empty(tl))
|
||||
eval(addBlock,tl,0)
|
||||
endif
|
||||
return nil
|
||||
|
||||
//*******************************************************************
|
||||
implement changeByMMList(paramValues,result,iLevel,oneLevel)
|
||||
/*
|
||||
A result-ba beleteszi a this ltal meghat rozott helyettes¡t‚st
|
||||
a paramValues-b“l az iLevel szinten. Ha a paramValues-ban az
|
||||
iLevel szinten nincs helyettes¡tend“, de van utols¢, akkor az
|
||||
utols¢t helyettes¡ti, ‚s ezt <20>resnek tekinti.
|
||||
Ha a oneLevel nem <20>res, ‚s a paramValue-ban egyn‚l t”bb szint van
|
||||
a this-hez tartoz¢ result markerhez, akkor nem v‚gzi el a
|
||||
helyettes¡t‚st.
|
||||
|
||||
Ha a oneLevel nem <20>res, akkor az '<27>res' helyettes¡t‚sekn‚l 2-t
|
||||
ad ‚s nem 1-et.
|
||||
|
||||
Ret:
|
||||
0: nem siker<65>lt a helyettes¡t‚s,
|
||||
1: csak '<27>res' helyettes¡t‚s volt, (Nem volt illesztett match
|
||||
marker, de <20>reset helyettes¡tett pl. dumb stringify result
|
||||
marker, logify result marker.
|
||||
2: volt helyettes¡t‚s.
|
||||
|
||||
Probl‚ma: Ha a match marker egy list_match_marker, akkor a
|
||||
stringify ‚s a blockify markerek elemenk‚nt csin lj k
|
||||
a konverzi¢t. (Ez jelenleg nincs imlement lva.)
|
||||
|
||||
Mj.: A paramValues-ban egy szinten egy tokenLista van, ami az
|
||||
adott szinten a matchMarkerre illesztett tokeneket adja
|
||||
meg, kiv‚tel a list match marker, mert ott ilyen tokenList k
|
||||
list ja van, ami a list math markerre illesztett list kat
|
||||
tartalmazza.
|
||||
*/
|
||||
local tl,retVal,str,wtl
|
||||
|
||||
if (len(paramValues)<this:mmNum)
|
||||
tl:={}
|
||||
else
|
||||
tl:=paramValues[this:mmNum]
|
||||
endif
|
||||
if (tl==nil .or. /*len(tl)<iLevel*/len(tl)==0)
|
||||
if (this:id==TKID_DUMB_STR_RESULT_MARKER)
|
||||
// aadd(result,C.TKSTR:copyFromToken(tl[1],TKID_STRING,"",'"','"'))
|
||||
aadd(result,mkTkStrFromToken(this,'""'))
|
||||
return if(!empty(oneLevel),2,1)
|
||||
elseif (this:id==TKID_LOGIFY_RESULT_MARKER)
|
||||
// Amikor tokeniz l s lesz, akkor a .t. ‚s a .f. egy
|
||||
// token lesz.
|
||||
aadd(result,C.TOKEN:copyFromToken(this,TKID_CHAR,".F."))
|
||||
return if(!empty(oneLevel),2,1)
|
||||
endif
|
||||
return if(!empty(oneLevel),2,1)
|
||||
endif
|
||||
|
||||
if (!empty(oneLevel) .and. len(tl)>1)
|
||||
return 0
|
||||
endif
|
||||
|
||||
if (len(tl)<iLevel)
|
||||
tl:=atail(tl)
|
||||
retVal:=1
|
||||
else
|
||||
tl:=tl[iLevel]
|
||||
retVal:=2
|
||||
endif
|
||||
|
||||
if (this:id==TKID_DUMB_STR_RESULT_MARKER)
|
||||
/*
|
||||
Itt probl‚m k l‚pnek fel, mert ez a result marker speci lisan
|
||||
viselkedik:
|
||||
1. Ha a helyettes¡tend“ stringben " ‚s ' egyar nt el“fodul,
|
||||
akkor a spec hib s (ki kell pr¢b lni). Ezt nem felt‚tlen<65>l
|
||||
ugyan£gy kell implement lni. Ez az ”sszes stringify
|
||||
markerre vonatkozik.
|
||||
*/
|
||||
if (!empty(tl))
|
||||
|
||||
wtl:={}
|
||||
rmListChange(this,wtl,tl,{|x| aappend(wtl,x)})
|
||||
aadd(result,mkTkStrFromToken(wtl[1],stringifyTokenList(wtl)))
|
||||
// rmListChange(this,result,tl,;
|
||||
// {|x| aadd(result,mkTkStrFromToken(x[1],stringifyTokenList(x)))})
|
||||
// str:=stringifyTokenList(tl)
|
||||
// aadd(result,C.TKSTR:copyFromToken(tl[1],TKID_STRING,;
|
||||
// substr(str,2,len(str)-2),;
|
||||
// left(str,1),;
|
||||
// right(str,1))
|
||||
endif
|
||||
elseif (this:id==TKID_REGULAR_RESULT_MARKER)
|
||||
rmListChange(this,result,tl,{|x|aappend(result,x)})
|
||||
elseif (this:id==TKID_STRINGIFY_RESULT_MARKER)
|
||||
// rmListChange(this,result,tl,;
|
||||
// {|x|aadd(result,C.TOKEN:copyFromToken(x[1],TKID_STRING,stringifyTokenList(x)))})
|
||||
// A DOS K™RNYEZETFšGG§EN (pfuj) tesz space-t az elemek el‚ vagy m”g‚.
|
||||
// Mi nem tesz<73>nk sehova.
|
||||
rmListChange(this,result,tl,;
|
||||
{|x,i|aadd(result,mkTkStrFromToken(x[1],stringifyTokenList(x)))})
|
||||
elseif (this:id==TKID_SMART_STR_RESULT_MARKER)
|
||||
// rmListChange(this,result,tl,;
|
||||
// {|x|if(TOKEN.x[1]:id==TKID_CHAR .and. TOKEN.x[1]:str=="(",;
|
||||
// aappend(result,x),;
|
||||
// aadd(result,C.TOKEN:copyFromToken(x[1],TKID_STRING,stringifyTokenList(x))))})
|
||||
rmListChange(this,result,tl,;
|
||||
{|x|if(TOKEN.x[1]:id==TKID_CHAR .and. TOKEN.x[1]:str=="(",;
|
||||
aappend(result,x),;
|
||||
aadd(result,mkTkStrFromToken(x[1],stringifyTokenList(x))))})
|
||||
elseif (this:id==TKID_BLOCKIFY_RESULT_MARKER)
|
||||
rmListChange(this,result,tl,;
|
||||
{|x,i|;
|
||||
if(i!=0 .and. i!=1,;
|
||||
aadd(result,C.TOKEN:copyFromToken(x[1],TKID_URES," ")),;
|
||||
nil),;
|
||||
aadd(result,C.TOKEN:copyFromToken(x[1],TKID_CHAR,"{")),;
|
||||
aadd(result,C.TOKEN:copyFromToken(x[1],TKID_CHAR,"|")),;
|
||||
aadd(result,C.TOKEN:copyFromToken(x[1],TKID_CHAR,"|")),;
|
||||
aappend(result,x),;
|
||||
aadd(result,C.TOKEN:copyFromToken(x[1],TKID_CHAR,"}"))})
|
||||
/* Nem szabad az <20>res blokkokat begener lni, mert ez egy
|
||||
hiba a DOS verzi¢ban.
|
||||
{|x,i|;
|
||||
if(i!=0 .and. i!=1,;
|
||||
aadd(result,C.TOKEN:copyFromToken(this,TKID_URES," ")),;
|
||||
nil),;
|
||||
aadd(result,C.TOKEN:copyFromToken(this,TKID_CHAR,"{")),;
|
||||
aadd(result,C.TOKEN:copyFromToken(this,TKID_CHAR,"|")),;
|
||||
aadd(result,C.TOKEN:copyFromToken(this,TKID_CHAR,"|")),;
|
||||
aadd(result,C.TOKEN:copyFromToken(this,TKID_CHAR,"}"))})
|
||||
*/
|
||||
|
||||
elseif (this:id==TKID_LOGIFY_RESULT_MARKER)
|
||||
// A list match markereket is egyben kell csin lni.
|
||||
if (!empty(tl))
|
||||
aadd(result,C.TOKEN:copyFromToken(;
|
||||
if(this:mmTkId==TKID_LIST_MATCH_MARKER,tl[1][1],tl[1]),;
|
||||
TKID_CHAR,".T."))
|
||||
else
|
||||
aadd(result,C.TOKEN:copyFromToken(this,TKID_CHAR,".F"))
|
||||
endif
|
||||
endif
|
||||
return retVal
|
||||
|
||||
//*******************************************************************
|
||||
|
||||
|
||||
@@ -1,26 +0,0 @@
|
||||
//
|
||||
// $Id$
|
||||
//
|
||||
|
||||
//*******************************************************************
|
||||
// rsmmarkr.cls : Restricted match marker token oszt ly.
|
||||
// 1999, Csisz r Levente
|
||||
|
||||
// Egy restricted match markert implement l.
|
||||
// A v laszthat¢ nevek a wordList t”mbben vannak string-k‚nt.
|
||||
|
||||
class RSMMARKR MMARKER
|
||||
|
||||
attrib wordList // Neveket tartalmaz (stringk‚nt), amiket
|
||||
// v lasztani lehet.
|
||||
|
||||
rmethod getStr()
|
||||
|
||||
rmethod oinit(id,str,file,line,pos)
|
||||
// Inicializ lja az objektumot.
|
||||
|
||||
metaclass
|
||||
|
||||
rmethod onew(id,str,file,line,pos)
|
||||
|
||||
|
||||
@@ -1,295 +0,0 @@
|
||||
// RSMMARKR.och oszt ly implement ci¢.
|
||||
// Gener lva: 1999.06.10, 14:40:44, OBJCCC v2.2.03
|
||||
// Meta oszt ly defin¡ci¢: Van
|
||||
|
||||
|
||||
#ifndef CA_MMARKER_N
|
||||
#ifdef _STRICT_PARENT_
|
||||
#ifdef _CA_CM_ONLY_
|
||||
#include "MMARKER.och"
|
||||
#else // _CA_CM_ONLY_
|
||||
#define _CA_CM_ONLY_
|
||||
#include "MMARKER.och"
|
||||
#undef _CA_CM_ONLY_
|
||||
#endif // _CA_CM_ONLY_
|
||||
#else
|
||||
#include "MMARKER.och"
|
||||
#endif // _STRICT_PARENT_
|
||||
#endif // CA_MMARKER_N
|
||||
|
||||
#ifndef _CA_CM_ONLY_
|
||||
#ifndef _RSMMARKR_OCH_
|
||||
#define _RSMMARKR_OCH_
|
||||
|
||||
|
||||
#xtranslate RSMMARKR.<obj>:id => <obj>\[CA_OBJECT_N+1\]
|
||||
#xtranslate RSMMARKR.<obj>:str => <obj>\[CA_OBJECT_N+2\]
|
||||
#xtranslate RSMMARKR.<obj>:file => <obj>\[CA_OBJECT_N+3\]
|
||||
#xtranslate RSMMARKR.<obj>:line => <obj>\[CA_OBJECT_N+4\]
|
||||
#xtranslate RSMMARKR.<obj>:pos => <obj>\[CA_OBJECT_N+5\]
|
||||
#xtranslate RSMMARKR.<obj>:classify => <obj>\[CA_OBJECT_N+6\]
|
||||
#xtranslate RSMMARKR.<obj>:error => <obj>\[CA_OBJECT_N+7\]
|
||||
#xtranslate RSMMARKR.<obj>:eqtype => <obj>\[CA_OBJECT_N+8\]
|
||||
#xtranslate RSMMARKR.<obj>:mnum => <obj>\[CA_TOKEN_N+1\]
|
||||
#xtranslate RSMMARKR.<obj>:nexttoken => <obj>\[CA_TOKEN_N+2\]
|
||||
|
||||
|
||||
#xtranslate RSMMARKR.<obj>:oinit => (OBJGEN.(<obj>):(4))
|
||||
#xtranslate RSMMARKR.<obj>:getclass => (OBJGEN.(<obj>):(5))
|
||||
#xtranslate RSMMARKR.<obj>:isclass => (OBJGEN.(<obj>):(6))
|
||||
#xtranslate RSMMARKR.<obj>:getattrib => (OBJGEN.(<obj>):(7))
|
||||
#xtranslate RSMMARKR.<obj>:setattrib => (OBJGEN.(<obj>):(8))
|
||||
#xtranslate RSMMARKR.<obj>:iserror => (OBJGEN.(<obj>):(CM_OBJECT_N+1))
|
||||
#xtranslate RSMMARKR.<obj>:errorstr => (OBJGEN.(<obj>):(CM_OBJECT_N+2))
|
||||
#xtranslate RSMMARKR.<obj>:printtostr => (OBJGEN.(<obj>):(CM_OBJECT_N+3))
|
||||
#xtranslate RSMMARKR.<obj>:getstr => (OBJGEN.(<obj>):(CM_OBJECT_N+4))
|
||||
#xtranslate RSMMARKR.<obj>:copytoken => (OBJGEN.(<obj>):(CM_OBJECT_N+5))
|
||||
#xtranslate RSMMARKR.<obj>:getname => (OBJGEN.(<obj>):(CM_TOKEN_N+1))
|
||||
|
||||
|
||||
#xtranslate RSMMARKR.<obj>:wordlist => <obj>\[CA_MMARKER_N+1\]
|
||||
|
||||
// ™r”k”lve: getstr()
|
||||
// ™r”k”lve: oinit(id,str,file,line,pos)
|
||||
|
||||
// ™r”k”lve: getstr()
|
||||
// ™r”k”lve: oinit(id,str,file,line,pos)
|
||||
|
||||
#endif // _RSMMARKR_OCH_
|
||||
#endif // _CA_CM_ONLY_
|
||||
|
||||
#ifndef CA_RSMMARKR_N
|
||||
#define CA_RSMMARKR_N CA_MMARKER_N+1
|
||||
#define CM_RSMMARKR_N CM_MMARKER_N+0
|
||||
#endif // CA_RSMMARKR_N
|
||||
|
||||
#ifndef _CA_CM_ONLY_
|
||||
#ifndef _RSMMARKRCLASS_OCH_
|
||||
#define _RSMMARKRCLASS_OCH_
|
||||
|
||||
**********************************************************************
|
||||
#xtranslate C.RSMMARKR:<m> => (RSMMARKRCLASS.clRSMMARKR():<m>)
|
||||
#xtranslate C.RSMMARKR:self() => (clRSMMARKR())
|
||||
|
||||
|
||||
#xtranslate RSMMARKRCLASS.<obj>:parent => <obj>\[CA_OBJECT_N+1\]
|
||||
#xtranslate RSMMARKRCLASS.<obj>:name => <obj>\[CA_OBJECT_N+2\]
|
||||
#xtranslate RSMMARKRCLASS.<obj>:objsize => <obj>\[CA_OBJECT_N+3\]
|
||||
#xtranslate RSMMARKRCLASS.<obj>:attribs => <obj>\[CA_OBJECT_N+4\]
|
||||
#xtranslate RSMMARKRCLASS.<obj>:methods => <obj>\[CA_OBJECT_N+5\]
|
||||
#xtranslate RSMMARKRCLASS.<obj>:classid => <obj>\[CA_OBJECT_N+6\]
|
||||
#xtranslate RSMMARKRCLASS.<obj>:parentclassids => <obj>\[CA_OBJECT_N+7\]
|
||||
#xtranslate RSMMARKRCLASS.<obj>:amblock => <obj>\[CA_OBJECT_N+8\]
|
||||
#xtranslate RSMMARKRCLASS.<obj>:methodsblock => <obj>\[CA_OBJECT_N+9\]
|
||||
#xtranslate RSMMARKRCLASS.<obj>:objmethodsimplement => <obj>\[CA_OBJECT_N+10\]
|
||||
#xtranslate RSMMARKRCLASS.<obj>:errstrarray => <obj>\[CA_BEHAVIOR_N+1\]
|
||||
#xtranslate RSMMARKRCLASS.<obj>:equivclass => <obj>\[CA_BEHAVIOR_N+2\]
|
||||
|
||||
|
||||
#xtranslate RSMMARKRCLASS.<obj>:oinit => (OBJGEN.(<obj>):(4))
|
||||
#xtranslate RSMMARKRCLASS.<obj>:getclass => (OBJGEN.(<obj>):(5))
|
||||
#xtranslate RSMMARKRCLASS.<obj>:isclass => (OBJGEN.(<obj>):(6))
|
||||
#xtranslate RSMMARKRCLASS.<obj>:getattrib => (OBJGEN.(<obj>):(7))
|
||||
#xtranslate RSMMARKRCLASS.<obj>:setattrib => (OBJGEN.(<obj>):(8))
|
||||
#xtranslate RSMMARKRCLASS.<obj>:onew => (OBJGEN.(<obj>):(CM_OBJECT_N+1))
|
||||
#xtranslate RSMMARKRCLASS.<obj>:ocreate => (OBJGEN.(<obj>):(CM_OBJECT_N+2))
|
||||
#xtranslate RSMMARKRCLASS.<obj>:rawoinit => (OBJGEN.(<obj>):(CM_OBJECT_N+3))
|
||||
#xtranslate RSMMARKRCLASS.<obj>:oinitclass => (OBJGEN.(<obj>):(CM_OBJECT_N+4))
|
||||
#xtranslate RSMMARKRCLASS.<obj>:getmethodsimplement => (OBJGEN.(<obj>):(CM_OBJECT_N+5))
|
||||
#xtranslate RSMMARKRCLASS.<obj>:attribidx => (OBJGEN.(<obj>):(CM_OBJECT_N+6))
|
||||
#xtranslate RSMMARKRCLASS.<obj>:needclassid => (OBJGEN.(<obj>):(CM_OBJECT_N+7))
|
||||
#xtranslate RSMMARKRCLASS.<obj>:isinheritfrom => (OBJGEN.(<obj>):(CM_OBJECT_N+8))
|
||||
#xtranslate RSMMARKRCLASS.<obj>:onewerror => (OBJGEN.(<obj>):(CM_BEHAVIOR_N+1))
|
||||
#xtranslate RSMMARKRCLASS.<obj>:copyfromtoken => (OBJGEN.(<obj>):(CM_BEHAVIOR_N+2))
|
||||
#xtranslate RSMMARKRCLASS.<obj>:findclassify => (OBJGEN.(<obj>):(CM_BEHAVIOR_N+3))
|
||||
#xtranslate RSMMARKRCLASS.<obj>:ismatchmarker => (OBJGEN.(<obj>):(CM_TOKENCLASS_N+1))
|
||||
|
||||
|
||||
|
||||
// ™r”k”lve: onew(id,str,file,line,pos)
|
||||
|
||||
// ™r”k”lve: onew(id,str,file,line,pos)
|
||||
|
||||
#endif // _RSMMARKRCLASS_OCH_
|
||||
#endif // _CA_CM_ONLY_
|
||||
|
||||
#ifndef CA_RSMMARKRCLASS_N
|
||||
#define CA_RSMMARKRCLASS_N CA_MMARKERCLASS_N+0
|
||||
#define CM_RSMMARKRCLASS_N CM_MMARKERCLASS_N+0
|
||||
#endif // CA_RSMMARKRCLASS_N
|
||||
|
||||
|
||||
**********************************************************************
|
||||
#ifdef _RSMMARKR_PRG_
|
||||
#ifndef _RSMMARKR_PRG_OCH_
|
||||
#define _RSMMARKR_PRG_OCH_
|
||||
|
||||
|
||||
**********************************************************************
|
||||
#xtranslate othis:<m> => RSMMARKR.(othis):<m>
|
||||
#xtranslate thisclass:<m> => RSMMARKRCLASS.(this:getClass()):<m>
|
||||
#define CTHIS RSMMARKR
|
||||
|
||||
|
||||
**********************************************************************
|
||||
#xtranslate this:<m> => RSMMARKR.(this):<m>
|
||||
|
||||
#xcommand implement getstr() => static function getstr(this)
|
||||
#xcommand implement oinit(id,str,file,line,pos) => ;
|
||||
static function oinit(this,id,str,file,line,pos)
|
||||
|
||||
#ifdef _IMPLEMENT_EXPORT_
|
||||
#xcommand implement export getstr() => function getstr(this)
|
||||
#xcommand implement export oinit(id,str,file,line,pos) => ;
|
||||
function oinit(this,id,str,file,line,pos)
|
||||
#endif // _IMPLEMENT_EXPORT_
|
||||
|
||||
#xtranslate super:oinit => (OBJGENM.(eval(BEHAVIOR.clMMARKER():objmethodsimplement)).(this):(4))
|
||||
#xtranslate super:getclass => (OBJGENM.(eval(BEHAVIOR.clMMARKER():objmethodsimplement)).(this):(5))
|
||||
#xtranslate super:isclass => (OBJGENM.(eval(BEHAVIOR.clMMARKER():objmethodsimplement)).(this):(6))
|
||||
#xtranslate super:getattrib => (OBJGENM.(eval(BEHAVIOR.clMMARKER():objmethodsimplement)).(this):(7))
|
||||
#xtranslate super:setattrib => (OBJGENM.(eval(BEHAVIOR.clMMARKER():objmethodsimplement)).(this):(8))
|
||||
#xtranslate super:iserror => (OBJGENM.(eval(BEHAVIOR.clMMARKER():objmethodsimplement)).(this):(CM_OBJECT_N+1))
|
||||
#xtranslate super:errorstr => (OBJGENM.(eval(BEHAVIOR.clMMARKER():objmethodsimplement)).(this):(CM_OBJECT_N+2))
|
||||
#xtranslate super:printtostr => (OBJGENM.(eval(BEHAVIOR.clMMARKER():objmethodsimplement)).(this):(CM_OBJECT_N+3))
|
||||
#xtranslate super:getstr => (OBJGENM.(eval(BEHAVIOR.clMMARKER():objmethodsimplement)).(this):(CM_OBJECT_N+4))
|
||||
#xtranslate super:copytoken => (OBJGENM.(eval(BEHAVIOR.clMMARKER():objmethodsimplement)).(this):(CM_OBJECT_N+5))
|
||||
#xtranslate super:getname => (OBJGENM.(eval(BEHAVIOR.clMMARKER():objmethodsimplement)).(this):(CM_TOKEN_N+1))
|
||||
|
||||
**********************************************************************
|
||||
static function setCMethods(pOsztaly)
|
||||
// Egy t”mb”t felt”lt az oszt ly m–veleti blokkjaival.
|
||||
pOsztaly[(CM_OBJECT_N+4)]:={|this| getstr(this)}
|
||||
pOsztaly[(4)]:={|this,id,str,file,line,pos| oinit(this,id,str,file,line,pos)}
|
||||
return pOsztaly
|
||||
|
||||
**********************************************************************
|
||||
static function setCams(ta,tm)
|
||||
// Egy t”mb”t felt”lt az oszt ly ltal def. objektumok attrib£tumaival ‚s m–veleteivel.
|
||||
ta[CA_MMARKER_N+1-CA_NIL_N] := {CA_MMARKER_N+1,'wordlist', }
|
||||
|
||||
tm[(CM_OBJECT_N+4)-CM_NIL_N] := {(CM_OBJECT_N+4),'getstr','',nil}
|
||||
tm[(4)-CM_NIL_N] := {(4),'oinit','id,str,file,line,pos',nil}
|
||||
return nil
|
||||
|
||||
#ifndef _NO_CLRSMMARKR_
|
||||
#ifdef _STRICT_PARENT_
|
||||
#ifdef _CA_CM_ONLY_
|
||||
#include "meta.och"
|
||||
#else // _CA_CM_ONLY_
|
||||
#define _CA_CM_ONLY_
|
||||
#include "meta.och"
|
||||
#undef _CA_CM_ONLY_
|
||||
#endif // _CA_CM_ONLY_
|
||||
#else
|
||||
#include "meta.och"
|
||||
#endif // _STRICT_PARENT_
|
||||
**********************************************************************
|
||||
function clRSMMARKR()
|
||||
// El“szedi az oszt lyt. (class)
|
||||
static osztaly
|
||||
if (osztaly==nil)
|
||||
osztaly:=META.mcRSMMARKRCLASS():onew(;
|
||||
clMMARKER(),;
|
||||
"RSMMARKR",;
|
||||
CA_RSMMARKR_N,;
|
||||
CM_RSMMARKR_N,;
|
||||
{|ta,tm|setCams(ta,tm)},;
|
||||
{|t|setCMethods(t)})
|
||||
endif
|
||||
return osztaly
|
||||
#endif // _NO_CLRSMMARKR_
|
||||
|
||||
#ifndef _NO_RSMMARKRCLASS_
|
||||
|
||||
**********************************************************************
|
||||
#xtranslate class:<m> => RSMMARKRCLASS.(class):<m>
|
||||
|
||||
#xcommand cimplement onew(id,str,file,line,pos) => ;
|
||||
static function onew(class,id,str,file,line,pos)
|
||||
|
||||
#ifdef _IMPLEMENT_EXPORT_
|
||||
#xcommand cimplement export onew(id,str,file,line,pos) => ;
|
||||
function onew(class,id,str,file,line,pos)
|
||||
#endif // _IMPLEMENT_EXPORT_
|
||||
|
||||
#xtranslate superclass:oinit => (OBJGENM.(eval(BEHAVIOR.mcMMARKERCLASS():objmethodsimplement)).(class):(4))
|
||||
#xtranslate superclass:getclass => (OBJGENM.(eval(BEHAVIOR.mcMMARKERCLASS():objmethodsimplement)).(class):(5))
|
||||
#xtranslate superclass:isclass => (OBJGENM.(eval(BEHAVIOR.mcMMARKERCLASS():objmethodsimplement)).(class):(6))
|
||||
#xtranslate superclass:getattrib => (OBJGENM.(eval(BEHAVIOR.mcMMARKERCLASS():objmethodsimplement)).(class):(7))
|
||||
#xtranslate superclass:setattrib => (OBJGENM.(eval(BEHAVIOR.mcMMARKERCLASS():objmethodsimplement)).(class):(8))
|
||||
#xtranslate superclass:onew => (OBJGENM.(eval(BEHAVIOR.mcMMARKERCLASS():objmethodsimplement)).(class):(CM_OBJECT_N+1))
|
||||
#xtranslate superclass:ocreate => (OBJGENM.(eval(BEHAVIOR.mcMMARKERCLASS():objmethodsimplement)).(class):(CM_OBJECT_N+2))
|
||||
#xtranslate superclass:rawoinit => (OBJGENM.(eval(BEHAVIOR.mcMMARKERCLASS():objmethodsimplement)).(class):(CM_OBJECT_N+3))
|
||||
#xtranslate superclass:oinitclass => (OBJGENM.(eval(BEHAVIOR.mcMMARKERCLASS():objmethodsimplement)).(class):(CM_OBJECT_N+4))
|
||||
#xtranslate superclass:getmethodsimplement => (OBJGENM.(eval(BEHAVIOR.mcMMARKERCLASS():objmethodsimplement)).(class):(CM_OBJECT_N+5))
|
||||
#xtranslate superclass:attribidx => (OBJGENM.(eval(BEHAVIOR.mcMMARKERCLASS():objmethodsimplement)).(class):(CM_OBJECT_N+6))
|
||||
#xtranslate superclass:needclassid => (OBJGENM.(eval(BEHAVIOR.mcMMARKERCLASS():objmethodsimplement)).(class):(CM_OBJECT_N+7))
|
||||
#xtranslate superclass:isinheritfrom => (OBJGENM.(eval(BEHAVIOR.mcMMARKERCLASS():objmethodsimplement)).(class):(CM_OBJECT_N+8))
|
||||
#xtranslate superclass:onewerror => (OBJGENM.(eval(BEHAVIOR.mcMMARKERCLASS():objmethodsimplement)).(class):(CM_BEHAVIOR_N+1))
|
||||
#xtranslate superclass:copyfromtoken => (OBJGENM.(eval(BEHAVIOR.mcMMARKERCLASS():objmethodsimplement)).(class):(CM_BEHAVIOR_N+2))
|
||||
#xtranslate superclass:findclassify => (OBJGENM.(eval(BEHAVIOR.mcMMARKERCLASS():objmethodsimplement)).(class):(CM_BEHAVIOR_N+3))
|
||||
#xtranslate superclass:ismatchmarker => (OBJGENM.(eval(BEHAVIOR.mcMMARKERCLASS():objmethodsimplement)).(class):(CM_TOKENCLASS_N+1))
|
||||
|
||||
**********************************************************************
|
||||
static function setMCMethods(pOsztaly)
|
||||
// Egy t”mb”t felt”lt a metaoszt ly m–veleti blokkjaival.
|
||||
pOsztaly[(CM_OBJECT_N+1)]:={|class,id,str,file,line,pos| onew(class,id,str,file,line,pos)}
|
||||
return pOsztaly
|
||||
|
||||
**********************************************************************
|
||||
static function setMCams(ta,tm)
|
||||
// Egy t”mb”t felt”lt a metaoszt ly ltal def. objektumok attrib£tumaival ‚s m–veleteivel.
|
||||
|
||||
tm[(CM_OBJECT_N+1)-CM_NIL_N] := {(CM_OBJECT_N+1),'onew','id,str,file,line,pos',nil}
|
||||
return nil
|
||||
|
||||
**********************************************************************
|
||||
#ifndef _NO_MCRSMMARKRCLASS_
|
||||
#ifdef _STRICT_PARENT_
|
||||
#ifdef _CA_CM_ONLY_
|
||||
#include "meta.och" // "metaclas.och"
|
||||
#else // _CA_CM_ONLY_
|
||||
#define _CA_CM_ONLY_
|
||||
#include "meta.och" // "metaclas.och"
|
||||
#undef _CA_CM_ONLY_
|
||||
#endif // _CA_CM_ONLY_
|
||||
#else
|
||||
#include "meta.och" // "metaclas.och"
|
||||
#endif // _STRICT_PARENT_
|
||||
function mcRSMMARKRCLASS()
|
||||
// El“szedi az oszt ly metaoszt ly t. (metaclass)
|
||||
static metaOsztaly
|
||||
if (metaOsztaly==nil)
|
||||
metaOsztaly:=META.clMETA():onew(;
|
||||
mcMMARKERCLASS(),;
|
||||
"RSMMARKRCLASS",;
|
||||
CA_RSMMARKRCLASS_N,;
|
||||
CM_RSMMARKRCLASS_N,;
|
||||
{|ta,tm|setMCams(ta,tm)},;
|
||||
{|t|setMCMethods(t)})
|
||||
endif
|
||||
return metaOsztaly
|
||||
#endif // _NO_MCRSMMARKRCLASS_
|
||||
|
||||
#endif // _NO_RSMMARKRCLASS_
|
||||
#ifdef _IMPLEMENT_ONEW_
|
||||
**********************************************************************
|
||||
cimplement onew(id,str,file,line,pos)
|
||||
local o:=class:ocreate()
|
||||
|
||||
RSMMARKR.o:oinit(id,str,file,line,pos)
|
||||
return o
|
||||
#endif // _IMPLEMENT_ONEW_
|
||||
|
||||
**********************************************************************
|
||||
#ifdef _IMPLEMENT_OINIT_
|
||||
implement oinit(id,str,file,line,pos)
|
||||
super:oinit()
|
||||
return this
|
||||
#endif // _IMPLEMENT_OINIT_
|
||||
|
||||
**********************************************************************
|
||||
**********************************************************************
|
||||
#endif // _RSMMARKR_PRG_OCH_
|
||||
#endif // _RSMMARKR_PRG_
|
||||
@@ -1,55 +0,0 @@
|
||||
/*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
//*******************************************************************
|
||||
// rsmmarkr.prg: Az RSMMARKR oszt ly implement ci¢ja.
|
||||
// 1999, Csisz r Levente
|
||||
|
||||
//*******************************************************************
|
||||
#include "ctoken.ch"
|
||||
|
||||
//*******************************************************************
|
||||
#include "objgen.ch"
|
||||
|
||||
// #include "token.och"
|
||||
|
||||
//*******************************************************************
|
||||
#define _RSMMARKR_PRG_
|
||||
#define _IMPLEMENT_ONEW_
|
||||
|
||||
#include "rsmmarkr.och"
|
||||
|
||||
//*******************************************************************
|
||||
implement oinit(id,str,file,line,pos)
|
||||
super:oinit(id,str,file,line,pos)
|
||||
this:wordList :={}
|
||||
return this
|
||||
|
||||
//*******************************************************************
|
||||
implement getStr()
|
||||
local str,i
|
||||
|
||||
if (!this:id==TKID_RESTRICTED_MATCH_MARKER)
|
||||
return super:getStr()
|
||||
endif
|
||||
str:=""
|
||||
for i:=1 to len(this:wordList)
|
||||
if (i>1)
|
||||
str+=","
|
||||
endif
|
||||
str+=this:wordList[i]
|
||||
end for
|
||||
|
||||
str:="<"+if(this:str==nil,"",this:str)+":"+str+">"
|
||||
if (this:isError())
|
||||
str+=", Error: "+this:errorStr()+guessedEol()
|
||||
endif
|
||||
|
||||
return str
|
||||
|
||||
//*******************************************************************
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1,28 +0,0 @@
|
||||
//
|
||||
// $Id$
|
||||
//
|
||||
|
||||
//*******************************************************************
|
||||
// sreader.cls: Stringb“l karaktereket olvas¢ oszt ly. A CREADER-t“l
|
||||
// ”r”k”l.
|
||||
// 1999, Csisz r Levente
|
||||
|
||||
class SREADER CREADER
|
||||
|
||||
attrib str // A string, amib“l olvasunk,
|
||||
|
||||
attrib istr // A poz¡ci¢ a stringben.
|
||||
|
||||
rmethod readItem()
|
||||
// Olvas egy karaktert.
|
||||
// Ret: A karakter, ha OK, nil, ha v‚ge van a streamnek, vagy ha
|
||||
// hiba volt.
|
||||
|
||||
rmethod oinit(str,name,errorStream)
|
||||
// Inicializ lja az objektumot.
|
||||
|
||||
metaclass
|
||||
|
||||
rmethod onew(str,name,errorStream)
|
||||
|
||||
|
||||
@@ -1,292 +0,0 @@
|
||||
// SREADER.och oszt ly implement ci¢.
|
||||
// Gener lva: 1999.06.10, 14:39:56, OBJCCC v2.2.03
|
||||
// Meta oszt ly defin¡ci¢: Van
|
||||
|
||||
|
||||
#ifndef CA_CREADER_N
|
||||
#ifdef _STRICT_PARENT_
|
||||
#ifdef _CA_CM_ONLY_
|
||||
#include "CREADER.och"
|
||||
#else // _CA_CM_ONLY_
|
||||
#define _CA_CM_ONLY_
|
||||
#include "CREADER.och"
|
||||
#undef _CA_CM_ONLY_
|
||||
#endif // _CA_CM_ONLY_
|
||||
#else
|
||||
#include "CREADER.och"
|
||||
#endif // _STRICT_PARENT_
|
||||
#endif // CA_CREADER_N
|
||||
|
||||
#ifndef _CA_CM_ONLY_
|
||||
#ifndef _SREADER_OCH_
|
||||
#define _SREADER_OCH_
|
||||
|
||||
|
||||
#xtranslate SREADER.<obj>:name => <obj>\[CA_OBJECT_N+1\]
|
||||
#xtranslate SREADER.<obj>:errorstream => <obj>\[CA_OBJECT_N+2\]
|
||||
#xtranslate SREADER.<obj>:tbuffer => <obj>\[CA_OBJECT_N+3\]
|
||||
#xtranslate SREADER.<obj>:line => <obj>\[CA_READER_N+1\]
|
||||
#xtranslate SREADER.<obj>:pos => <obj>\[CA_READER_N+2\]
|
||||
|
||||
|
||||
#xtranslate SREADER.<obj>:oinit => (OBJGEN.(<obj>):(4))
|
||||
#xtranslate SREADER.<obj>:getclass => (OBJGEN.(<obj>):(5))
|
||||
#xtranslate SREADER.<obj>:isclass => (OBJGEN.(<obj>):(6))
|
||||
#xtranslate SREADER.<obj>:getattrib => (OBJGEN.(<obj>):(7))
|
||||
#xtranslate SREADER.<obj>:setattrib => (OBJGEN.(<obj>):(8))
|
||||
#xtranslate SREADER.<obj>:read => (OBJGEN.(<obj>):(CM_OBJECT_N+1))
|
||||
#xtranslate SREADER.<obj>:unread => (OBJGEN.(<obj>):(CM_OBJECT_N+2))
|
||||
#xtranslate SREADER.<obj>:readtbuffer => (OBJGEN.(<obj>):(CM_OBJECT_N+3))
|
||||
#xtranslate SREADER.<obj>:arraytbuffer => (OBJGEN.(<obj>):(CM_OBJECT_N+4))
|
||||
#xtranslate SREADER.<obj>:readitem => (OBJGEN.(<obj>):(CM_OBJECT_N+5))
|
||||
#xtranslate SREADER.<obj>:iserror => (OBJGEN.(<obj>):(CM_OBJECT_N+6))
|
||||
#xtranslate SREADER.<obj>:adderror => (OBJGEN.(<obj>):(CM_OBJECT_N+7))
|
||||
#xtranslate SREADER.<obj>:destruct => (OBJGEN.(<obj>):(CM_OBJECT_N+8))
|
||||
#xtranslate SREADER.<obj>:getfile => (OBJGEN.(<obj>):(CM_READER_N+1))
|
||||
#xtranslate SREADER.<obj>:getline => (OBJGEN.(<obj>):(CM_READER_N+2))
|
||||
#xtranslate SREADER.<obj>:getpos => (OBJGEN.(<obj>):(CM_READER_N+3))
|
||||
|
||||
|
||||
#xtranslate SREADER.<obj>:str => <obj>\[CA_CREADER_N+1\]
|
||||
#xtranslate SREADER.<obj>:istr => <obj>\[CA_CREADER_N+2\]
|
||||
|
||||
// ™r”k”lve: readitem()
|
||||
// ™r”k”lve: oinit(str,name,errorStream)
|
||||
|
||||
// ™r”k”lve: readitem()
|
||||
// ™r”k”lve: oinit(str,name,errorStream)
|
||||
|
||||
#endif // _SREADER_OCH_
|
||||
#endif // _CA_CM_ONLY_
|
||||
|
||||
#ifndef CA_SREADER_N
|
||||
#define CA_SREADER_N CA_CREADER_N+2
|
||||
#define CM_SREADER_N CM_CREADER_N+0
|
||||
#endif // CA_SREADER_N
|
||||
|
||||
#ifndef _CA_CM_ONLY_
|
||||
#ifndef _SREADERCLASS_OCH_
|
||||
#define _SREADERCLASS_OCH_
|
||||
|
||||
**********************************************************************
|
||||
#xtranslate C.SREADER:<m> => (SREADERCLASS.clSREADER():<m>)
|
||||
#xtranslate C.SREADER:self() => (clSREADER())
|
||||
|
||||
|
||||
#xtranslate SREADERCLASS.<obj>:parent => <obj>\[CA_OBJECT_N+1\]
|
||||
#xtranslate SREADERCLASS.<obj>:name => <obj>\[CA_OBJECT_N+2\]
|
||||
#xtranslate SREADERCLASS.<obj>:objsize => <obj>\[CA_OBJECT_N+3\]
|
||||
#xtranslate SREADERCLASS.<obj>:attribs => <obj>\[CA_OBJECT_N+4\]
|
||||
#xtranslate SREADERCLASS.<obj>:methods => <obj>\[CA_OBJECT_N+5\]
|
||||
#xtranslate SREADERCLASS.<obj>:classid => <obj>\[CA_OBJECT_N+6\]
|
||||
#xtranslate SREADERCLASS.<obj>:parentclassids => <obj>\[CA_OBJECT_N+7\]
|
||||
#xtranslate SREADERCLASS.<obj>:amblock => <obj>\[CA_OBJECT_N+8\]
|
||||
#xtranslate SREADERCLASS.<obj>:methodsblock => <obj>\[CA_OBJECT_N+9\]
|
||||
#xtranslate SREADERCLASS.<obj>:objmethodsimplement => <obj>\[CA_OBJECT_N+10\]
|
||||
|
||||
|
||||
#xtranslate SREADERCLASS.<obj>:oinit => (OBJGEN.(<obj>):(4))
|
||||
#xtranslate SREADERCLASS.<obj>:getclass => (OBJGEN.(<obj>):(5))
|
||||
#xtranslate SREADERCLASS.<obj>:isclass => (OBJGEN.(<obj>):(6))
|
||||
#xtranslate SREADERCLASS.<obj>:getattrib => (OBJGEN.(<obj>):(7))
|
||||
#xtranslate SREADERCLASS.<obj>:setattrib => (OBJGEN.(<obj>):(8))
|
||||
#xtranslate SREADERCLASS.<obj>:onew => (OBJGEN.(<obj>):(CM_OBJECT_N+1))
|
||||
#xtranslate SREADERCLASS.<obj>:ocreate => (OBJGEN.(<obj>):(CM_OBJECT_N+2))
|
||||
#xtranslate SREADERCLASS.<obj>:rawoinit => (OBJGEN.(<obj>):(CM_OBJECT_N+3))
|
||||
#xtranslate SREADERCLASS.<obj>:oinitclass => (OBJGEN.(<obj>):(CM_OBJECT_N+4))
|
||||
#xtranslate SREADERCLASS.<obj>:getmethodsimplement => (OBJGEN.(<obj>):(CM_OBJECT_N+5))
|
||||
#xtranslate SREADERCLASS.<obj>:attribidx => (OBJGEN.(<obj>):(CM_OBJECT_N+6))
|
||||
#xtranslate SREADERCLASS.<obj>:needclassid => (OBJGEN.(<obj>):(CM_OBJECT_N+7))
|
||||
#xtranslate SREADERCLASS.<obj>:isinheritfrom => (OBJGEN.(<obj>):(CM_OBJECT_N+8))
|
||||
|
||||
|
||||
|
||||
// ™r”k”lve: onew(str,name,errorStream)
|
||||
|
||||
// ™r”k”lve: onew(str,name,errorStream)
|
||||
|
||||
#endif // _SREADERCLASS_OCH_
|
||||
#endif // _CA_CM_ONLY_
|
||||
|
||||
#ifndef CA_SREADERCLASS_N
|
||||
#define CA_SREADERCLASS_N CA_CREADERCLASS_N+0
|
||||
#define CM_SREADERCLASS_N CM_CREADERCLASS_N+0
|
||||
#endif // CA_SREADERCLASS_N
|
||||
|
||||
|
||||
**********************************************************************
|
||||
#ifdef _SREADER_PRG_
|
||||
#ifndef _SREADER_PRG_OCH_
|
||||
#define _SREADER_PRG_OCH_
|
||||
|
||||
|
||||
**********************************************************************
|
||||
#xtranslate othis:<m> => SREADER.(othis):<m>
|
||||
#xtranslate thisclass:<m> => SREADERCLASS.(this:getClass()):<m>
|
||||
#define CTHIS SREADER
|
||||
|
||||
|
||||
**********************************************************************
|
||||
#xtranslate this:<m> => SREADER.(this):<m>
|
||||
|
||||
#xcommand implement readitem() => static function readitem(this)
|
||||
#xcommand implement oinit(str,name,errorStream) => ;
|
||||
static function oinit(this,str,name,errorStream)
|
||||
|
||||
#ifdef _IMPLEMENT_EXPORT_
|
||||
#xcommand implement export readitem() => function readitem(this)
|
||||
#xcommand implement export oinit(str,name,errorStream) => ;
|
||||
function oinit(this,str,name,errorStream)
|
||||
#endif // _IMPLEMENT_EXPORT_
|
||||
|
||||
#xtranslate super:oinit => (OBJGENM.(eval(BEHAVIOR.clCREADER():objmethodsimplement)).(this):(4))
|
||||
#xtranslate super:getclass => (OBJGENM.(eval(BEHAVIOR.clCREADER():objmethodsimplement)).(this):(5))
|
||||
#xtranslate super:isclass => (OBJGENM.(eval(BEHAVIOR.clCREADER():objmethodsimplement)).(this):(6))
|
||||
#xtranslate super:getattrib => (OBJGENM.(eval(BEHAVIOR.clCREADER():objmethodsimplement)).(this):(7))
|
||||
#xtranslate super:setattrib => (OBJGENM.(eval(BEHAVIOR.clCREADER():objmethodsimplement)).(this):(8))
|
||||
#xtranslate super:read => (OBJGENM.(eval(BEHAVIOR.clCREADER():objmethodsimplement)).(this):(CM_OBJECT_N+1))
|
||||
#xtranslate super:unread => (OBJGENM.(eval(BEHAVIOR.clCREADER():objmethodsimplement)).(this):(CM_OBJECT_N+2))
|
||||
#xtranslate super:readtbuffer => (OBJGENM.(eval(BEHAVIOR.clCREADER():objmethodsimplement)).(this):(CM_OBJECT_N+3))
|
||||
#xtranslate super:arraytbuffer => (OBJGENM.(eval(BEHAVIOR.clCREADER():objmethodsimplement)).(this):(CM_OBJECT_N+4))
|
||||
#xtranslate super:readitem => (OBJGENM.(eval(BEHAVIOR.clCREADER():objmethodsimplement)).(this):(CM_OBJECT_N+5))
|
||||
#xtranslate super:iserror => (OBJGENM.(eval(BEHAVIOR.clCREADER():objmethodsimplement)).(this):(CM_OBJECT_N+6))
|
||||
#xtranslate super:adderror => (OBJGENM.(eval(BEHAVIOR.clCREADER():objmethodsimplement)).(this):(CM_OBJECT_N+7))
|
||||
#xtranslate super:destruct => (OBJGENM.(eval(BEHAVIOR.clCREADER():objmethodsimplement)).(this):(CM_OBJECT_N+8))
|
||||
#xtranslate super:getfile => (OBJGENM.(eval(BEHAVIOR.clCREADER():objmethodsimplement)).(this):(CM_READER_N+1))
|
||||
#xtranslate super:getline => (OBJGENM.(eval(BEHAVIOR.clCREADER():objmethodsimplement)).(this):(CM_READER_N+2))
|
||||
#xtranslate super:getpos => (OBJGENM.(eval(BEHAVIOR.clCREADER():objmethodsimplement)).(this):(CM_READER_N+3))
|
||||
|
||||
**********************************************************************
|
||||
static function setCMethods(pOsztaly)
|
||||
// Egy t”mb”t felt”lt az oszt ly m–veleti blokkjaival.
|
||||
pOsztaly[(CM_OBJECT_N+5)]:={|this| readitem(this)}
|
||||
pOsztaly[(4)]:={|this,str,name,errorStream| oinit(this,str,name,errorStream)}
|
||||
return pOsztaly
|
||||
|
||||
**********************************************************************
|
||||
static function setCams(ta,tm)
|
||||
// Egy t”mb”t felt”lt az oszt ly ltal def. objektumok attrib£tumaival ‚s m–veleteivel.
|
||||
ta[CA_CREADER_N+1-CA_NIL_N] := {CA_CREADER_N+1,'str', }
|
||||
ta[CA_CREADER_N+2-CA_NIL_N] := {CA_CREADER_N+2,'istr', }
|
||||
|
||||
tm[(CM_OBJECT_N+5)-CM_NIL_N] := {(CM_OBJECT_N+5),'readitem','',nil}
|
||||
tm[(4)-CM_NIL_N] := {(4),'oinit','str,name,errorStream',nil}
|
||||
return nil
|
||||
|
||||
#ifndef _NO_CLSREADER_
|
||||
#ifdef _STRICT_PARENT_
|
||||
#ifdef _CA_CM_ONLY_
|
||||
#include "meta.och"
|
||||
#else // _CA_CM_ONLY_
|
||||
#define _CA_CM_ONLY_
|
||||
#include "meta.och"
|
||||
#undef _CA_CM_ONLY_
|
||||
#endif // _CA_CM_ONLY_
|
||||
#else
|
||||
#include "meta.och"
|
||||
#endif // _STRICT_PARENT_
|
||||
**********************************************************************
|
||||
function clSREADER()
|
||||
// El“szedi az oszt lyt. (class)
|
||||
static osztaly
|
||||
if (osztaly==nil)
|
||||
osztaly:=META.mcSREADERCLASS():onew(;
|
||||
clCREADER(),;
|
||||
"SREADER",;
|
||||
CA_SREADER_N,;
|
||||
CM_SREADER_N,;
|
||||
{|ta,tm|setCams(ta,tm)},;
|
||||
{|t|setCMethods(t)})
|
||||
endif
|
||||
return osztaly
|
||||
#endif // _NO_CLSREADER_
|
||||
|
||||
#ifndef _NO_SREADERCLASS_
|
||||
|
||||
**********************************************************************
|
||||
#xtranslate class:<m> => SREADERCLASS.(class):<m>
|
||||
|
||||
#xcommand cimplement onew(str,name,errorStream) => ;
|
||||
static function onew(class,str,name,errorStream)
|
||||
|
||||
#ifdef _IMPLEMENT_EXPORT_
|
||||
#xcommand cimplement export onew(str,name,errorStream) => ;
|
||||
function onew(class,str,name,errorStream)
|
||||
#endif // _IMPLEMENT_EXPORT_
|
||||
|
||||
#xtranslate superclass:oinit => (OBJGENM.(eval(BEHAVIOR.mcCREADERCLASS():objmethodsimplement)).(class):(4))
|
||||
#xtranslate superclass:getclass => (OBJGENM.(eval(BEHAVIOR.mcCREADERCLASS():objmethodsimplement)).(class):(5))
|
||||
#xtranslate superclass:isclass => (OBJGENM.(eval(BEHAVIOR.mcCREADERCLASS():objmethodsimplement)).(class):(6))
|
||||
#xtranslate superclass:getattrib => (OBJGENM.(eval(BEHAVIOR.mcCREADERCLASS():objmethodsimplement)).(class):(7))
|
||||
#xtranslate superclass:setattrib => (OBJGENM.(eval(BEHAVIOR.mcCREADERCLASS():objmethodsimplement)).(class):(8))
|
||||
#xtranslate superclass:onew => (OBJGENM.(eval(BEHAVIOR.mcCREADERCLASS():objmethodsimplement)).(class):(CM_OBJECT_N+1))
|
||||
#xtranslate superclass:ocreate => (OBJGENM.(eval(BEHAVIOR.mcCREADERCLASS():objmethodsimplement)).(class):(CM_OBJECT_N+2))
|
||||
#xtranslate superclass:rawoinit => (OBJGENM.(eval(BEHAVIOR.mcCREADERCLASS():objmethodsimplement)).(class):(CM_OBJECT_N+3))
|
||||
#xtranslate superclass:oinitclass => (OBJGENM.(eval(BEHAVIOR.mcCREADERCLASS():objmethodsimplement)).(class):(CM_OBJECT_N+4))
|
||||
#xtranslate superclass:getmethodsimplement => (OBJGENM.(eval(BEHAVIOR.mcCREADERCLASS():objmethodsimplement)).(class):(CM_OBJECT_N+5))
|
||||
#xtranslate superclass:attribidx => (OBJGENM.(eval(BEHAVIOR.mcCREADERCLASS():objmethodsimplement)).(class):(CM_OBJECT_N+6))
|
||||
#xtranslate superclass:needclassid => (OBJGENM.(eval(BEHAVIOR.mcCREADERCLASS():objmethodsimplement)).(class):(CM_OBJECT_N+7))
|
||||
#xtranslate superclass:isinheritfrom => (OBJGENM.(eval(BEHAVIOR.mcCREADERCLASS():objmethodsimplement)).(class):(CM_OBJECT_N+8))
|
||||
|
||||
**********************************************************************
|
||||
static function setMCMethods(pOsztaly)
|
||||
// Egy t”mb”t felt”lt a metaoszt ly m–veleti blokkjaival.
|
||||
pOsztaly[(CM_OBJECT_N+1)]:={|class,str,name,errorStream| onew(class,str,name,errorStream)}
|
||||
return pOsztaly
|
||||
|
||||
**********************************************************************
|
||||
static function setMCams(ta,tm)
|
||||
// Egy t”mb”t felt”lt a metaoszt ly ltal def. objektumok attrib£tumaival ‚s m–veleteivel.
|
||||
|
||||
tm[(CM_OBJECT_N+1)-CM_NIL_N] := {(CM_OBJECT_N+1),'onew','str,name,errorStream',nil}
|
||||
return nil
|
||||
|
||||
**********************************************************************
|
||||
#ifndef _NO_MCSREADERCLASS_
|
||||
#ifdef _STRICT_PARENT_
|
||||
#ifdef _CA_CM_ONLY_
|
||||
#include "meta.och" // "metaclas.och"
|
||||
#else // _CA_CM_ONLY_
|
||||
#define _CA_CM_ONLY_
|
||||
#include "meta.och" // "metaclas.och"
|
||||
#undef _CA_CM_ONLY_
|
||||
#endif // _CA_CM_ONLY_
|
||||
#else
|
||||
#include "meta.och" // "metaclas.och"
|
||||
#endif // _STRICT_PARENT_
|
||||
function mcSREADERCLASS()
|
||||
// El“szedi az oszt ly metaoszt ly t. (metaclass)
|
||||
static metaOsztaly
|
||||
if (metaOsztaly==nil)
|
||||
metaOsztaly:=META.clMETA():onew(;
|
||||
mcCREADERCLASS(),;
|
||||
"SREADERCLASS",;
|
||||
CA_SREADERCLASS_N,;
|
||||
CM_SREADERCLASS_N,;
|
||||
{|ta,tm|setMCams(ta,tm)},;
|
||||
{|t|setMCMethods(t)})
|
||||
endif
|
||||
return metaOsztaly
|
||||
#endif // _NO_MCSREADERCLASS_
|
||||
|
||||
#endif // _NO_SREADERCLASS_
|
||||
#ifdef _IMPLEMENT_ONEW_
|
||||
**********************************************************************
|
||||
cimplement onew(str,name,errorStream)
|
||||
local o:=class:ocreate()
|
||||
|
||||
SREADER.o:oinit(str,name,errorStream)
|
||||
return o
|
||||
#endif // _IMPLEMENT_ONEW_
|
||||
|
||||
**********************************************************************
|
||||
#ifdef _IMPLEMENT_OINIT_
|
||||
implement oinit(str,name,errorStream)
|
||||
super:oinit()
|
||||
return this
|
||||
#endif // _IMPLEMENT_OINIT_
|
||||
|
||||
**********************************************************************
|
||||
**********************************************************************
|
||||
#endif // _SREADER_PRG_OCH_
|
||||
#endif // _SREADER_PRG_
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user