*** empty log message ***

This commit is contained in:
Luiz Rafael Culik
2000-03-19 19:15:49 +00:00
parent 7ddafb70d2
commit 2bc1882ed4
122 changed files with 0 additions and 24325 deletions

View File

@@ -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

View File

@@ -1,95 +0,0 @@
//
// $Id$
//
class BEHAVIOR OBJECT
attrib parent
attrib name
attrib objSize
// Azon objektumok mrete, amik az oszt ly elemei.
attrib attribs
// Egy 'name' tˇpusŁ objektum (ami ennek az
// oszt lynak az eleme) attribŁtumai
// {sorsz m,nv,tˇpus} form ban.
attrib methods
// Egy 'name' tˇpusŁ objektum (ami ennek az
// oszt lynak az eleme) mveletei
// {sorsz m,nv,paramterek,implSpec} form ban.
// Mj.: A mveleteket vgrehajt˘ 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 vgrehajt 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 mveleteket.
attrib methodsBlock
// Egy blokk, aminek a vgrehajt sa
// beˇrja egy t”mbbe az oszt ly  ltal defini lt
// mveletek blokkjait.
// (Ezt a t”mb”t adja az objMethodsImplement.)
attrib objMethodsImplement
// Egy blokkot tartalmaz, amit kirtkelve
// megkapjuk azt a t”mb”t, aminek az els“
// eleme az oszt ly, a tov bbi elemei pedig
// az oszt lyba tartoz˘ objektumok mveleti
// blokkjai, s m s implement ci˘s elemek.
nmethod onew{be_onew}()
// Kszˇt egy Łj objektumot, s inicializ lja Łgy, hogy meghˇvja
// az oinit() mvelett.
// Az objektum a 'this' oszt lyba fog tartozni.
nmethod ocreate{be_ocreate}()
// Kszˇ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 figyelmeztetst.
nmethod oinitclass{retobj}()
// A Meta onew()-ja hˇvja az oinit() ut n. Azrt van itt, hogy ne
// kelljen az oinit() hosszŁ paramterlist j val vesz“dni.
nmethod getMethodsImplement{be_getMethodsImplement}()
// Ad egy t”mb”t, amiben a mveletek 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 indext 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 lynv>CLASS()
// Mj.: A 'class=cl<oszt lynv>()' nem j˘.
nmethod isInheritFrom{be_isInheritFrom}(parentClass)
// Ha a this ”r”k”l az aClass-t˘l, vagy this==aClass, akkor
// igaz, egybknt hamis.
// Ha a parentClass-nak van id-je, akkor ez a mvelet sokkal
// gyorsabban hajt˘dik vgre, mint ha nincs.

View File

@@ -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 mveleti 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 mveleteivel.
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 mveleti 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 mveleteivel.
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_

View File

@@ -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 filt, Egyenl“re nem vgez hiba ellez“rzst.
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
// sorvgjel az include fil vgn.
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.
// Elvgezz<7A>k a sz<73>ksges ellen“rzseket a fil vgn.
// (Lez ratlan #if, etc)
HPARSER.hpr:chkEndOfFile()
if (cccpp_printErrorStream(errorStream))
hiba:=.t.
endif
return hiba
//*******************************************************************

View File

@@ -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 paramter. Sajnos CCC-ben nincs szabv nyos
; // m¢dszer tetsz. sz m£ paramter  tvtelre.
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 paramtert 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 paramtert 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 filt, Egyenl“re nem vgez hiba ellez“rzst.
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
// sorvgjel az include fil vgn.
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.
// Elvgezz<7A>k a sz<73>ksges ellen“rzseket a fil vgn.
// (Lez ratlan #if, etc)
HPARSER.hpr:chkEndOfFile()
cccpp_printErrorStream(errorStream)
return nil
#endif
//*******************************************************************
#endif

View File

@@ -1,438 +0,0 @@
/*
* $Id$
*/
V ltoz sok
----------
Egy bejegyzsnek 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 clokra.
- 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
- Elksz<73>lt a C++ v ltozat els“ bt ja. Ez a v ltozat lez rva,
tov bbi m˘dosˇt s csak mk”dst g tl˘ (pl. elsz ll s) hiba
esetn lehetsges.
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
- Vgtelen ciklusba ker<65>lt az ilyen esetekben:
#xtranslate a [[b]] => bb
a
Mivel az 'a' sor esetn a '[[b]]'-ben a b nem illeszkedik,
ezrt 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
- Elemzsi hiba volt az xtranslate parancsokban. He egy norm l
token sor kt alternatˇva k”z esett, akkor azt t”r”lte.
- A '#' parancsokra ugyanŁgy a r”vidˇtett nv egyezs rvnyes,
mint az command-okra. (Teh t #define helyett elfogadja a
'#defi'-t, etc.)
- HPRERR_XTRUNDEFRM hibajelzsben a sz”veg javˇtva, a hi nyolt
match marker-t kiˇrja.
- CCC-ben 192 paramter 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 tnylegesen van mit elemezni<6E>k.
- A t”bb elem alternatˇv k kezels 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 elemzst a translate/command f val vgzi.
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 illeszts' k˘d.
- A stringeket case insensitˇven kell illeszteni, s r juk is
rvnyes a r”vˇdˇtett illesztsi szab ly.
- Felpˇti a translate/command f t, de egyenl“re nem haszn lja fel
az elemzskor.
1999.06.03, Csisz r Levente, v0.6.04
- T”bb user include filt is elfogad.
1999.05.31, Csisz r Levente, v0.6.03
- A user include filb“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 mlysg kapcsol˘ a
paramterek feldolgoz s n l.
- Help sz”veg javˇt sok.
- A getopt() rossz volt, ha egy '-'-os opci˘ paramteresnek volt
defini lva, de nem adtunk meg paramtert.
1999.05.28, Csisz r Levente, v0.6.01
- Include mlysg 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 filt, ellen“rzi, hogy az input
ltezik-e.
- A default hibakijelz“ megrti a $<sz m>-ot a hibastringben.
- Sz˘t rak kiˇr sa elemenknt t”rtnik.
Kell mg:
- A teszt k”rnyezetben minden rdekes esetre teszt program.
- Tesztels.
- Gyorsˇt s.
1999.05.27, Csisz r Levente, v0.6.00
- Parancssori makr˘ megad si lehet“sg.
- #command,#translate,#xcommand,#xtranslate
- Az <20>res sorokat Łgy kezeli, ahogy kell.
- A #line ott van, ahol kell.
- #error, #stdout.
- Kell mg:
- Include mlysg maximaliz l sa.
- Sz˘t rak kiˇr sa elemenknt t”rtnjen.
- 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“ paramterrel.
- A teszt k”rnyezetben minden rdekes esetre teszt program.
- Tesztels
- Gyorsˇt s.
1999.05.26, Csisz r Levente, v0.5.00
- Hibakijelzs OK.
Mj.: Ha nem tal lja a filt, akkor tŁl sok hibajelzst ad.
- Kompatibilis helyettesˇtsi m˘d.
- #xcommand-ok kis hib val: Csak sor elejn kezdi el
helyettesˇteni, de azt nem nzi, hogy a teljes sort
helyettesˇtette-e.
- #define-nl a jobb oldal vgr“l a space-kat lev gja.
- A kifejezs 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ˇtsek.
- #endif-re nem kell hibajelzs.
1999.05.24, Csisz r Levente, v0.4.02
- errorStream-es hibakezels.
- S<>rg“sen kell:
- Helyettesˇtsek. (A string hat rol˘k is!)
- Hiba kijelzs:
- Hi nyz˘ #endif
- Hib k az #xtranslate-ekben.
- Parancssori makr˘ definˇci˘k.
- Kell mg:
- Az include mlysg maximaliz l sa.
- Rszletesebb hiba<62>zenetek.
- Kapcsol˘, hogy csak unixos filneveket fogadjon el.
- Space-ek a /* */ el“tt.
- šres sorok lenyelse.
1999.05.21, Csisz r Levente, v0.4.01
- Minden match s minden result marker. (Nincs tesztelve.)
- '\' kezelse.
- Parancssorban meg lehet include filt adni.
Mj.: Tesztelni kell, mi van, ha ez az include file k˘dot
gener l.
- Az xcommand, translate, command ideiglenesen xtranslate-knt
van kezelve.
1999.05.19, Csisz r Levente, v0.4.00
- #line, #include, parancssori paramterezs.
- Hi nyzik:
- '\' kezelse a xtranslate definici˘kban.
- #line el“tt ut n az <20>res sorok lenyelse.
- #if ne nyŁljon tŁl a filn. (Ezt tesztelni kell!)
- A '-' input fil a standard input legyen az FREADER-ben.
- Parancssorban meg lehessen adni olyan include filt, 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 lp
vissza. A jelenlegi algoritmusunk h tulr˘l j”n el“re.
- Helyettesˇtsek kezelse (kapcsol˘val szab lyozhat˘ legyen),
nagybetsˇtsek, string hat rol˘k, lez ratlan stringek
helyes kezelse.
Pl: '**' -> '^', '.t.' ->'.T.', 'a' -> "a" etc.
- Kapcsol˘val szab lyozhat˘ legyen, hogy a /* */ megjegyzs el“l
lenyelje-e a space-kat. Illetve, hagyjon-e egy space-t.
a /* huhu */b -> ab
A fenti pld ban a fordˇt˘ az ab azonosˇt˘t fogja keresni,
holott a spec-ben ez lefordul.
- Rossz xtranslate definˇci˘k kijelzse:
- hi nyz˘ ']'
- ktrtelm helyettesˇts.
- Hi nyz˘ vagy dupl n defini lt marker nevek.
- Hibafolyam nincs k<>l”n.
- xtranslate p rjai. (xcommand, etc)
- space-ek bel”vse.
- 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.
- '&&' megjegyzs.
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 illeszts, akkor az
utols˘t behelyettesˇti.
- Helyettesˇtsek kezelse (kapcsol˘val szab lyozhat˘ legyen),
nagybetsˇtsek, string hat rol˘k, lez ratlan stringek
helyes kezelse.
Pl: '**' -> '^', '.t.' ->'.T.', 'a' -> "a" etc.
- Kapcsol˘val szab lyozhat˘ legyen, hogy a /* */ megjegyzs el“l
lenyelje-e a space-kat. Illetve, hagyjon-e egy space-t.
a /* huhu */b -> ab
A fenti pld ban a fordˇt˘ az ab azonosˇt˘t fogja keresni,
holott a spec-ben ez lefordul.
- Rossz xtranslate definˇci˘k kijelzse:
- hi nyz˘ ']'
- ktrtelm helyettesˇts.
- Hi nyz˘ vagy dupl n defini lt marker nevek.
- Hibafolyam nincs k<>l”n.
- xtranslate p rjai.
- space-ek bel”vse.
- 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 kifejezshat r elemzsnl 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 mg nem helyesek.
- A sorvgjeleket kezeli crlf s lf-es form ban is.
Hi nyzik:
- Rossz xtranslate definˇci˘k kijelzse:
- hi nyz˘ ']'
- ktrtelm helyettesˇts.
- Hibafolyam nincs k<>l”n.
- Nincs tokeniz l s (pedig ˇgy kell illeszteni)
- xtranslate p rjai.
- space-ek bel”vse.
- A t”bbi match marker.
- A #ifdef, s a #include, #line
1999.04.26, Csisz r Levente, v0.2.03
- Az xtranslate parancsokban elvgzi a helyettesˇtst, ha nincs
benne marker (egyik oldalon sem) s nincs benne alternatˇva
(egyik oldalon sem).
- Hi nyzik:
- markerek illesztse, helyettesˇtse.
- Alternatˇv k illesztse, helyettesˇtse.
- xtranslate parancs elemzsnl jelezni kell, ha van
hi nyz˘ ']'
- xtranslate parancs elemzsnl jelezni kell, ha
t”bbrtelm a parancs.
- Hibakezels (a token stream-be betett hiba tokenek
k<>l”n kezelse 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 ksz.
- Az xtranslate parancsokat beolvassa, de a helyettesˇtst nem
vgzi el.
- include, ifdef, undef, hibakezels 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 ksz<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.

View File

@@ -1,10 +0,0 @@
/*
* $Id$
*/
//*******************************************************************
#define CHAR_CR chr(13)
#define CHAR_LF chr(10)
#define CHAR_CR_LF (CHAR_CR+CHAR_LF)
//*******************************************************************

View File

@@ -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 esetn 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)

View File

@@ -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 mveleti 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 mveleteivel.
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 mveleti 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 mveleteivel.
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_

View File

@@ -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
// visszalptek, 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>ksges.)
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 lehetsges 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
//*******************************************************************

View File

@@ -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

View File

@@ -1,153 +0,0 @@
/*
* $Id$
*/
//*******************************************************************
// ctoken.ch: Olyan (karakter) elemek, amik speci lis jelentst
// 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
//*******************************************************************

View File

@@ -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
//*******************************************************************

View File

@@ -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 indext adja a dict-ben.
// Ha nincs, akkor 0-t ad.
// Bels“ mvelet.
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-knt kiˇrhat˘ form ban  tadja a
// printBlock-nak.
// Ha a printBlock nincs megadva, akkor string-knt visszaadja.
rmethod oinit()

View File

@@ -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 mveleti 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 mveleteivel.
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 mveleti blokkjaival.
return pOsztaly
**********************************************************************
static function setMCams(ta,tm)
// Egy t”mb”t felt”lt a metaoszt ly  ltal def. objektumok attrib£tumaival s mveleteivel.
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_

View File

@@ -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
//*******************************************************************

View File

@@ -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 paramterek rtkeit.
nmethod printStr()
// Stringknt adja meg az elemet #define nv(params) body
// form ban.
rmethod oinit(name,params,body,deffile,defline,defpos)
metaclass
rmethod onew(name,params,body,deffile,defline,defpos)

View File

@@ -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 mveleti 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 mveleteivel.
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 mveleti 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 mveleteivel.
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_

View File

@@ -1,144 +0,0 @@
/*
* $Id$
*/
//*******************************************************************
// edefdict.prg: #define sz¢t r elem
// 1999, Csisz r Levente
//*******************************************************************
// A helyettes¡ts sor n el kell fogadni a #define h(x,x) st¡lus£
// definici¢t, s ilyenkor az els“ 'x' helyn  ll¢ rtk
// 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
//*******************************************************************

View File

@@ -1,398 +0,0 @@
/*
* $Id$
*/
//*******************************************************************
// expr.prg: Kifejezs 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 kifejezseket vizsg l¢ elemz“ f t.
// Ha az adott sz¢r¢l (sorozatr¢l) tudni lehet, hogy hol van benne
// a kifejezs hat r, akkor a result-ban egy sz m  ll, ami
// a sorozat utols¢, mg a kifejezshez 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
// Kt token k”z”tt kifejezshat 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 kivtelek, amiket el kell fogadni.
PRTREE.prtree:addWord(nil,{"*","/","nev"} )
// Speci lis kivtelek, amikben kifejezshat 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 kt classify-r¢l meg llap¡tja, hogy k”vetkezhetnek-e egym s ut n.
// Egyik sem lehet <20>res (sorvgjel, 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 kt elem szavak
// vannak.
return w!=.f.
//*******************************************************************
function expPrtree3()
// Megadja a h rom elem kifejezsekre a kivteleket.
// 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 (sorvgjel, 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 kt elem szavak
// vannak.
return w!=.f.
//*******************************************************************
function exprChk(clfArray)
// Meg llp¡tja, hogy a clfArray utols¢ n. eleme k”z”tt hol van
// a kifejezs hat r.
// Ret: nil, ha nincs kifejezs hat r.
// sz m: a clfArray-ban az utols¢, mg a kifejezshez 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 kifejezs hat r.
// Felteszi, hogy a clfArray els“ n-1 elemr“l nem meg llap¡that¢,
// hogy hol van a kifejezshat r.
// Ret: nil, ha nincs kifejezs hat r.
// sz m: a clfArray-ban az utols¢, mg a kifejezshez tartoz¢
// elem indexe.
/*
A k”vetkez“kppen mk”dik:
n=EXPPRTREE_MAXDEEP
Megnzi, hogy a clfArray utols¢ n elemre meg llap¡that¢-e
kifejezshat r, ha igen, OK, ha nem, akkor az n-et cs”kkenti
egy-el. Ha az n<2, akkor a kifejezshat r nem  llap¡that¢ meg.
Egy n-re pedig £gy  llap¡tja meg, hogy van-e kifejezshat r,
hogy elemezteti az exprPrTree-vel. Ha benne van, akkor a
result megmondja az eredmnyt. Ha nincs benne, akkor elfogadjuk.
Ha az elemz“ azt mondja, hogy mg 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 kifejezshat 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
//*******************************************************************

View File

@@ -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()
// Stringknt 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)

View File

@@ -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 mveleti 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 mveleteivel.
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 mveleti 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 mveleteivel.
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_

View File

@@ -1,335 +0,0 @@
/*
* $Id$
*/
//*******************************************************************
// extrdict.prg: #xtranslate sz¢t r elem
// 1999, Csisz r Levente
//*******************************************************************
/*
A helyettes¡ts £gy megy, hogy minden match marker kap egy
sorsz mot. A change f<>ggvny 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)
// Vgigmegy 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
// elemre (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¡tst 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¡ts, .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 eredmnye (egy token lista) vagy nil, ha nem lehetett
cserlni.
*/
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
//*******************************************************************

View File

@@ -1,89 +0,0 @@
/*
* $Id$
*/
//*******************************************************************
// felbont.prg: Egy string felbont sa elv laszt˘ karakterek mentn.
// 1999, Csisz r Levente
//*******************************************************************
function felbont(str,elvalasztok)
/*
Az str-t felbontja az 'elvalasztok' stringben lev“ karaktereknl, s
ad egy t”mb”t, amiben az elemek vannak.
Ha az 'elvalasztok' nincs megadva, akkor " "+chr(9)-t ttelez 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
************************************************************************

View File

@@ -1,185 +0,0 @@
/*
* $Id$
*/
//*******************************************************************
// fnutil.prg: A fil nv kezelssel kapcsolatos vegyes utilitik.
// 1999, Csisz r Levente
/*
1999.05.10, Csisz r Levente
- dirFName() f<>ggvny.
1998.09.08, Csisz r Levente
- Indul¢ v ltozat, az afn az futil.prg-b“l  tvve.
*/
/********************************************************************
Tartalma:
- afn(fileDir,fileName)
- ™sszefzi a fileDir-t s a fileName-t egy filnvbe.
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
elteszi.
- extractFName( filename ) // file.ext --> file
Megadja a filename kiegsz¡t“ nlk<6C>li rszt.
- baseFName( filename ) // path\file.ext --> file.ext
Megadja a filename nevt a path nlk<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 kiegsz¡t“t lecserli a kieg-re.
Pl. addKieg("haz.msk",".say") --> "haz.say"
Pl. addKieg("haz.",".say") --> "haz.say"
- addFExt(filename,kieg)
Ha nincs kiegsz¡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
// elteszi.
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 kiegsz¡t“ nlk<6C>li rszt.
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 nevt a path nlk<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¢ '\' nlk<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 kiegsz¡t“t lecserli 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 kiegsz¡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
*********************************************************************

View File

@@ -1,61 +0,0 @@
//
// $Id$
//
//*******************************************************************
// freader.cls: Filb“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 nvben 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 filnevet (az elrsi Łttal egy<67>tt).
// Ha a fileName abszolŁt nv ('/' kezd“dik vagy (dos-on)
// drive nv van benne), akkor a path-t nem teszi el.
nmethod open(path,fileName)
// Megnyitja az adott filt az adott path-al.
// Mj.: A fileName-ben is lehet path.
// Ret: this, ha siker<65>lt a megnyit s, nil, ha nem.
// Hiba esetn a this:error-t be llˇtja.
nmethod close()
// Lez rja a filt. Ha a nincs nyitva, nem csin l semmit.
nmethod dOpen(pathArray,fileName)
// Vgigpr˘b lgatja a path-okat, s amelyikben megtal lja a
// filt, 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 esetn 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 vge van a streamnek, vagy ha
// hiba volt.
rmethod destruct()
// T”rli az objektumhoz kapcsol˘d˘ k<>ls“ eszk”z”ket. (Pl. lez rja
// a filt etc.)
rmethod oinit(errorStream)
// Inicializ lja az objektumot.
metaclass
rmethod onew(errorStream)
rmethod oinitclass()

View File

@@ -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 mveleti 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 mveleteivel.
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 mveleti 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 mveleteivel.
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_

View File

@@ -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 vge vagy hiba, ¡gy meg
// kell nzni 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
//*******************************************************************

View File

@@ -1,35 +0,0 @@
/*
* $Id$
*/
//*******************************************************************
// guesseol.prg: A kital lt sorvgjel 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
*********************************************************************

View File

@@ -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 lehetsgesek.
#define IFDEFTYPE_IFDEF "ifdef"
#define IFDEFTYPE_IFNDEF "ifndef"
#define IFDEFTYPE_NONE "none"
//*******************************************************************
// Egy #ifdef elemzse k”zben melyik  gon (if vagy else) vagyunk.
#define IFB_IFBRANCH "ifbranch"
#define IFB_ELSEBRANCH "elsebranch"
#define IFB_NONEBRANCH "nonebranch"
//*******************************************************************

View File

@@ -1,126 +0,0 @@
//
// $Id$
//
//*******************************************************************
// hparser.cls: Hessmark parser: a '#'-al kezd“d“ sorok elemzse.
// 1999, Csisz r Levente
// A PARSER-t“l ”r”k”l.
// Ez az elemz“ vgzi el a '#'-al kezd“d“ sorok elemzst.
// A nv s a sor (lparser) elemz“  ltal kszˇ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
// filket.
attrib lastEos // Az utols˘ eos token.
rmethod readItem()
// Olvas egy elemet.
// Ret: Az elem, ha OK, nil, ha vge 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 stringknt.
// A nem stringeket eldobja.
// nmethod rds()
// Olvas egy karatert a readInput()-al a buf-ba.
// Az olvasott rtket a buf-ba is beleteszi, ha az nem az eof.
// nmethod unrds(n)
// A buf utols˘ n elemt 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 vgzi a tnyleges elemzst, rekurzˇvan is lehet hˇvni.
// A this:item-t elemzi, sz<73>ksg esetn mg olvashat.
nmethod parseFalseLine()
// Egy #if hamis  g n vgzi az elemzst.
// A this:item-t elemzi, sz<73>ksg esetn mg 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 nven.
// A definˇci˘ t”rzse a parserBuffer-ben van.
// Az mnameToken jelzi, hogy hol volt a definˇci˘.
// Ha a nv m r ltezik, 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 vgig lenyeli az item-eket.
// A sorvgjelet 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 rtkkel tr
// vissza, ha igaz, akkor a hiba<62>zenet ki van adva, ha hamis,
// akkor a hiba<62>zetet nem adta ki (lehet folytatni).
// A paramterezse megegyezik az errorgen()-el.
nmethod chkEndOFFile()
// Elvgzi a sz<73>ksges ellen“rzseket a fil vgn.
// (Lez ratlan #if, etc.)
rmethod oinit(inputReader,name,defDict,xtrDict,inclObj,errorStream)
metaclass
rmethod onew(inputReader,name,defDict,xtrDict,inclObj,errorStream)
rmethod oinitclass()

View File

@@ -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 mveleti 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 mveleteivel.
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 mveleti 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 mveleteivel.
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

View File

@@ -1,416 +0,0 @@
/*
* $Id$
*/
//*******************************************************************
// hparser2.prg: Hessmark parser(2): a '#'-al kezd“d“ sorok elemzse.
// 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 vge 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 paramterek.
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. Nv 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)
// Paramter.
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 vge is van.
this:errorgen(mNameToken,HPRERR_LDEFINE)
exit
endif
elseif (state==ST_D_PARAM_NEVUTAN)
// Paramterlist ban egy nv ut n.
// ',' vagy ')' j”het.
if (tkId==TKID_URES)
// Eldobjuk.
elseif (tkId==TKID_CHAR .and. tkStr==")")
// Kezd“dik a t”rzs.
// šres paramter lista.
this:clearParserBuffer()
state:=ST_D_TORZS_START
elseif (tkId==TKID_CHAR .and. tkStr==",")
// Kezd“dik a k”vetkez“ paramter.
state:=ST_D_PARAM_VESSZOUTAN
else
// B rmi m s, az nem j¢! Ebben benne van az £j sor is!
// Hib s s vge is van.
this:errorgen(mNameToken,HPRERR_PDEFINE)
exit
endif
elseif (state==ST_D_PARAM_VESSZOUTAN)
// ',' ut n. Csak nv j”het.
if (tkId==TKID_URES)
// Eldobjuk.
elseif (tkId==TKID_NEV)
// Paramter.
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 vge 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)
// Vge 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)
// Vge 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 vge 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)
// Ksz 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 vge 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)
// Ksz 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
// felttelt.
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
//*******************************************************************

View File

@@ -1,33 +0,0 @@
//
// $Id$
//
//*******************************************************************
// incl.cls: Include direktorik nyilv ntart sa, £j readerek nyit sa
// az include filkre.
// 1999, Csisz r Levente
class INCL OBJECT
attrib lreader // Ebben vannak a nyitott include filk.
attrib includeList // A direktorik, amiben keresni kell
// az input filket.
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)

View File

@@ -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 mveleti 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 mveleteivel.
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 mveleti 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 mveleteivel.
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_

View File

@@ -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 megnzi a kurrens direktoriban
// is, egybknt pedig csak az includeList-ben.
local fr,l
if (this:maxInclDeep>0 .and.;
len(LREADER.(this:lreader):readerStack)>=this:maxInclDeep)
return 3
endif
// Œgy ktszer 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 befzni a l ncba.
LREADER.(this:lreader):pushReader(fr)
PDEBUG(outstd("include: "+filename))
return 0
//*******************************************************************

View File

@@ -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 sorvgjellel egy<67>tt.
// A sorokon a k”vetkez“ transzform ci˘kat vgzi 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, kivve 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 nehzkes.
class LPARSER PARSER
rmethod readInput()
// Kiszri az egy soros megjegyzseket s  talakˇtja a
// '/*'-osakat
nmethod readLine()
// Bolvas egy teljes sort a parserBuffer-be. Az egy soros
// megjegyzseket eldobja, a t”bb sorosakat pedig feldolgozza
// Łgy, hogy azonos mennyisg Łj sort helyez el a parseBuffer
// elejre. A folytat˘ sorokat ”sszevonja.
rmethod readItem()
// Olvas egy elemet.
// Ret: Az elem, ha OK, nil, ha vge van a streamnek, vagy ha
// hiba volt.
// rmethod oinit(inputReader,name)
metaclass
// rmethod onew(inputReader,name)

View File

@@ -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 mveleti 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 mveleteivel.
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 mveleti blokkjaival.
return pOsztaly
**********************************************************************
static function setMCams(ta,tm)
// Egy t”mb”t felt”lt a metaoszt ly  ltal def. objektumok attrib£tumaival s mveleteivel.
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_

View File

@@ -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 eredmnyeknt ltrej”tt sor EL<45>
teszi, ¡gy be kell olvasni az egsz sort, hogy ezt mi is
megtehess<73>k.
—gy mk”dik, hogy beolvas egy teljes sort, majd megnzi hogy
kell-e ”sszevonni. Ha nem, akkor abb¢l ad, m¡g el nem fogy,
ha igen, akkor a vghez hozz olvassa a k”vetkez“ sort, etc.
Amikor token-t ad, akkor vagy <20>res, vagy az olvasott sor mg be
nem olvasott rszt t rolja a sorvgjellel 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 rtkt
// 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 megjegyzseket 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 elejre 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 megjegyzs nem kell, eldobjuk.
this:unputParserBuffer()
// A helyre egy 'semmi' karaktert rakunk, mert ezt pl ';'
// ut n rtkesnek 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 rtkes. 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 rtkes. 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 elintzni a sor ”sszevon sokat. Sort akkor kell
// ”sszevonni, ha a pufferben (az <20>resek s az £j sor kivtelvel)
// 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 (elg fura specifik ci¢, nemdeb r? ;)
// Itt kell elintzni a sor ”sszevon sokat.
exit
endif
if (tkId==TKID_PCCOMMENT)
// A puffer elejre 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 megjegyzs 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
//*******************************************************************

View File

@@ -1,81 +0,0 @@
//
// $Id$
//
//*******************************************************************
// lreader.cls: L nc reader.
// 1999, Csisz r Levente
// Ez a reader readerek stackjn kereszt<7A>l olvas, Łgy, hogy olvas a
// legfels“b“l, ha az elrte az EOF-ot, akkor k<>ld egy EOS (End Of
// Stream)-et, eldobja a stack tetejn lev“ reader-t, s folytatja
// az olvas st a stack tetejn maradt reader-el.
// Amikor Łj stream-et kezd, akkor k<>ld egy BOS (Begin Of Stream)
// elemet.
// Az EOS s a BOF rtke paramterezhet“, 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-jben 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
// rtk lehet (karakter is.)
// Ha nil, akkor nem k<>ld ilyet.
attrib EOSItem // Az EOS elem. B rmilyen objektum vagy
// rtk lehet (karakter is.)
// Ha nil, akkor nem k<>ld ilyet.
rmethod readItem()
// Olvas egy elemet.
// Ret: Az elem, ha OK, nil, ha vge 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 tetejn lev“ readert. Ha nincs ret nil
nmethod popReader()
// Visszaadja a stack tetejn lev“ readert, s a stack-r“l t”rli.
// Nem adja ki r  a destruct()-ot.
nmethod dropReader()
// A stackr“l t”rli a tetejn lev“ readert.
// Kiadja r  a destruct()-ot.
nmethod isEmpty()
// Igaz, ha a stack <20>res, egybknt 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)

View File

@@ -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 mveleti 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 mveleteivel.
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 mveleti 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 mveleteivel.
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_

View File

@@ -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 azrt 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 segdv ltoz¢ kell, mert az
// objektum helyn  ll¢ kifejezst
// ktszer rtkeli 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
//*******************************************************************

View File

@@ -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

View File

@@ -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 jelkpezi, 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)
// Ltrehoz 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)

View File

@@ -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 mveleti 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 mveleteivel.
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 mveleti 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 mveleteivel.
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_

View File

@@ -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
//*******************************************************************

View File

@@ -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 feltteleknek
// akkor indˇt r  egy 'changer'-t.
// Ret: Az elem, ha OK, nil, ha vge van a streamnek, vagy ha
// hiba volt.
rmethod oinit(inputReader,name,defdict,xtrdict,errorStream,trPrsAlg)
metaclass
rmethod onew(inputReader,name,defdict,xtrdict,errorStream,trPrsAlg)

View File

@@ -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 mveleti 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 mveleteivel.
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 mveleti 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 mveleteivel.
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_

View File

@@ -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¡ts.
#error "Ez m r nem mk”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¡tsnl az egsz megvizsg lt token
sorozat mehet az outputra.
- Sikeres helyettes¡tsnl 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. Ezrt puffer tartalm t
// visszatessz<73>k az inputra (sikeressg esetn), s kitessz<73>k
// az outputra (sikertelensg esetn)
// Mj.: <20>ltal ban <20>resnek kell lennie, egyenl“re nem siker<65>lt
// olyan teszt filt csin lni, amiben a newMControl
// pufferben lett volna valami.
// PDEBUG(outerr("megvan!",crlf()))
if (w[1])
// Sikeres. Az eredmnyt 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 eredmny.
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 eredmny 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¡ts.
//*******************************************************************
implement readItem()
/*
El“r”l h tra helyettes¡ts.
- Nincs sz<73>ksg arra, hogy az mcontrol legyen az £j mparser
inputja.
- Sikertelen helyettes¡tsnl csak egy tokent mehet<65>nk el“re.
- Sikeres helyettes¡tsnl a sor elejig kell visszamenni.
Ebb“l k”vetkezik, hogy csak akkor ad token-t, ha a teljes sort
beolvasta s azon m r nem lehet helyettes¡tst vgezni.
- 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 eredmny s a tbuffer vissza az inputra s megint sor
// elejn vagyunk.
// El“sz”r az eredmny.
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 eredmny 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 eredmny 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
//*******************************************************************

View File

@@ -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 kirtkelve 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()-jt, s inicializ lja
// az ofClass-t 'nil'-re.
rmethod onew{me_onew}(parent,name,nAttribs,nMethods,amBlock,methodsBlock)
// Ltrehoz 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”nsges) 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 elemnek a mvelete. A 'Meta' elemei
// pedig meta oszt lyok. Teh t ez egy meta osztaly egy elemt
// hozza ltre, a meta oszt lyok elemei pedig oszt lyok. Teh t
// ez egy Łj oszt lyt (s nem metaoszt lyt!!!) hoz ltre.
rmethod ocreate{me_ocreate}()
// Ltrehoz 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-jvel
// tr vissza. Ha az oszt lynak m r van id-je, akkor azzal tr
// vissza.
// nmethod classFromId{me_classFromId}(id)
// Ha van olyan oszt ly, aminek az 'id' az id-je, akkor
// azt adja egybknt nil-t.
// nmethod findClassId{me_findClassId}(aClass)
// Ha az oszt lynak van id-je, akkor azt adja, egybknt nil-t.

View File

@@ -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 mveleti 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 mveleteivel.
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 mveleti blokkjaival.
return pOsztaly
**********************************************************************
static function setMCams(ta,tm)
// Egy t”mb”t felt”lt a metaoszt ly  ltal def. objektumok attrib£tumaival s mveleteivel.
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_

View File

@@ -1,7 +0,0 @@
//
// $Id$
//
class METACLAS META
// Itt nincs £j mvelet.
// Ha lenne, akkor kellene METACLASSCLASS is etc.

View File

@@ -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 mveleti blokkjaival.
return pOsztaly
**********************************************************************
static function setCams(ta,tm)
// Egy t”mb”t felt”lt az oszt ly  ltal def. objektumok attrib£tumaival s mveleteivel.
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 mveleti blokkjaival.
return pOsztaly
**********************************************************************
static function setMCams(ta,tm)
// Egy t”mb”t felt”lt a metaoszt ly  ltal def. objektumok attrib£tumaival s mveleteivel.
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_

View File

@@ -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 nz 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.

View File

@@ -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 mveleti 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 mveleteivel.
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 mveleti 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 mveleteivel.
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_

View File

@@ -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)
//*******************************************************************

View File

@@ -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 nv s a sor (lparser) elemz“  ltal kszˇtett tokeneket v r az
// inputr˘l. Źltal ban a hparser ut n van.
class MPARSER PARSER
attrib soreleje
// attrib defdict
attrib makroBuf // Itt tartja azokat a tokeneket, amiket egy
// makr˘ v ltoz˘hoz rendel elemzskor.
nmethod startMakroBuf(item)
// Inicializ lja a makroBuf-t. Ha az item nem nil, akkor beteszi
// els“ elemnek.
nmethod rdsMakroBuf()
// Ugyanaz, mint az rds(), csak a makro buf-ban is vezeti.
nmethod unrdsMakroBuf(n)
// Ugyanaz, mint az unrds(n), csak a makro buf-ban is vezeti.
rmethod readItem()
// Olvas egy elemet.
// Ret: Az elem, ha OK, nil, ha vge van a streamnek, vagy ha
// hiba volt.
nmethod parseFun(edefdict)
// Ez vgzi a tnyleges elemzst.
// A this:item-t elemzi, sz<73>ksg esetn mg olvashat.
// Elemezi az inputon a <nv>'('<param1>,...')' paramtereket.
// Az edefdict-nek a <nv>-hez tartoz˘ makr˘ definˇci˘nak kell
// lennie.
// Ret: {sikeres,itemLista}
// Ha sikeres volt, akkor a sikeres==.t., s az itemLista a csere
// eredmnye.
// Ha nem volt sikeres, akkor a sikeres==.f., s az itemLista a
// beolvasott (el“reolvasott) itemek list ja.
// A parserBufferben csak egy token lehet, ami az item-ben is
// van.
// nmethod printDefDict()
nmethod parseTokenList(leftTokenList,cmd4,paramValues,toEOL)
nmethod parseXtr(extrdict)
// Ez vgzi a tnyleges elemzst.
// A this:item-t elemzi, sz<73>ksg esetn mg olvashat.
// Elemezi az inputon az extrdict tokenjeit.
// Ret: {sikeres,itemLista}
// Ha sikeres volt, akkor a sikeres==.t., s az itemLista a csere
// eredmnye.
// Ha nem volt sikeres, akkor a sikeres==.f., s az itemLista a
// beolvasott (el“reolvasott) itemek list ja.
// A parserBufferben csak egy token lehet, ami az item-ben is
// van.
nmethod parseXtrTree(trdictTree,mi,toEOL)
// Ez vgzi a tnyleges elemzst.
// A this:item-t elemzi, sz<73>ksg esetn mg olvashat.
// Elemezi az inputon az extrdict tokenjeit.
// Ret: {sikeres,itemLista}
// Ha sikeres volt, akkor a sikeres==.t., s az itemLista a csere
// eredmnye.
// Ha nem volt sikeres, akkor a sikeres==.f., s az itemLista a
// beolvasott (el“reolvasott) itemek list ja.
// A parserBufferben csak egy token lehet, ami az item-ben is
// van.
nmethod mleftXNToken(leftToken,cmd4)
// Match left xtranslate normal token.
nmethod mleftXMRToken(leftToken,cmd4,paramValues,nUres)
// Match left xtranslate malterset token
nmethod mleftXRMMToken(leftToken,cmd4)
// Match left xtranslate regular match marker
nmethod mleftXWMToken(leftToken)
// Match left xtranslate wild match marker
nmethod mleftXEEMToken(leftToken)
// Match left xtranslate extended expression match marker
nmethod mleftXLMToken(leftToken,cmd4)
// Match left xtranslate list match marker
nmethod mleftXRSMMToken(leftToken,cmd4)
// Match left xtranslate restricted match marker
// rmethod oinit(inputReader,name,defDict)
rmethod oinit(inputReader,name,errorStream)
metaclass
// rmethod onew(inputReader,name,defDict)
rmethod onew(inputReader,name,errorStream)
nmethod getCloseParent(aChar)
// Ha az aChar egy nyit˘ z r˘jel, akkor a a csuk˘ p rj t adja,
// egybknt nil-t.
nmethod trimTokenList(tList)
// A tList elejr“l s vgr“l elt volˇtja az <20>res tokeneket.
// Ret: a tList.
nmethod parse(item,inputReader,name,defdict,edefdict,xtrdict,mi,errorStream,ujsor,trPrsAlg)
// Elemzi s az item-el kezd“d“ s az inputReader  ltal defini lt
// folyammal folytat˘d˘ folyamot, s ha tal l benne az itemmel
// kezd“d“ makr˘t, akkor megadja, hogy azt mire kell cserlni.
// Ret: {sikeres,itemLista}
// Ha sikeres volt, akkor a sikeres==.t., s az itemLista a csere
// eredmnye.
// Ha nem volt sikeres, akkor a sikeres==.f., s az itemLista a
// beolvasott (el“reolvasott) itemek list ja.
// Mj.: Jelenleg az item csak nil vagy TOKEN lehet.
// nmethod isTkBinaryOp(tkId,tkStr)

View File

@@ -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 mveleti 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 mveleteivel.
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 mveleti 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 mveleteivel.
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

View File

@@ -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
//*******************************************************************

View File

@@ -1,113 +0,0 @@
//
// $Id$
//
//*******************************************************************
// nparser.cls: Nv elemz“. A PARSER-t“l ”r”k”l.
// 1999, Csisz r Levente
// Ez az elemz“ vgzi el az alapvet“ elemzseket, felbontja az input
// stream-et a k”vetkez“ tokenekre:
// - Nv
// - sz msor (nincs benne pont '.')
// - šres
// - Megjegyzs (csillag, perper, percsillag)
// - String (macskak”rm”s, idz“jeles)
// - —jsor
// - Karakter.
// Az egyb tokenek mindig pontosan egy karakteresek.
// A karaktereken kˇv<CB87>l megrti a k”vetkez“ egysgeket:
// CTK_BOS,CTK_EOS,CTK_PRINTLINE
// Az EOS-ra k<>ld egy Łj sor karatert
// Mj.: A ';' kezelst 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 vge van a streamnek, vagy ha
// hiba volt.
nmethod strEolParserBuffer()
// Megadja a parserBuffer tartalm t stringknt.
// A nem stringeket az eol kivtelvel eldobja.
nmethod makeToken(tkId,str)
// Kszˇt egy tkId tˇpusŁ tokent 'str' tartalommal.
nmethod makeTokenSt(tkId,stArray)
// Kszˇt egy tkId tˇpusŁ tokenstr-t az stArray-nak megfelel“en.
nmethod makeTokenLSt(tkId,stArray)
// Kszˇt egy tkId tˇpusŁ tokenstr-t az stArray-nak megfelel“en.
// A str-be beˇrja a #line sort, ha a mlysg vagy a sorsz m
// nagyobb, mint 1.
nmethod makeErrToken(tkId,str,errCode)
// Kszˇt egy tkId tˇpusŁ tokent 'str' tartalommal s errCode
// hibak˘ddal.
nmethod parseTPTree()
nmethod parse()
// Ez vgzi a tnyleges elemzst, rekurzˇvan is lehet hˇvni.
// A this:item-t elemzi, sz<73>ksg esetn mg olvashat.
nmethod parseLineComment(tkId)
// '//' vagy '*' megjegyzs
nmethod parsePcComment()
// '/*'-os megjegyzs
nmethod parseString(hatarolo)
// Fels“vessz“s s macskak”rm”s string.
nmethod parseName()
// Nv.
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()
// Kszˇt egy elemz“ f t a tokenek elemzshez a
// class:tokenPTree-be.

View File

@@ -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 mveleti 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 mveleteivel.
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 mveleti 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 mveleteivel.
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_

View File

@@ -1,708 +0,0 @@
/*
* $Id$
*/
//*******************************************************************
// nparser.prg: Az nparser oszt ly implement ci¢ja.
// 1999, Csisz r Levente
// Nv elemz“. A karakter folyamot tokeniz lja.
// A tokenek: nv, string, sz m, megjegyzs, etc.
//*******************************************************************
#define NPRERRGROUP "hparser"
#define NPRERR_ENDPCCOMMENT {NPRERRGROUP,"endpccomment"}
#define NPRERR_ENDSTRING {NPRERRGROUP,"endstring"}
//*******************************************************************
// Ezek tulajdonkppen 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())) // Elksz¡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 vge.
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()
// Ksz¡t egy elemz“ f t a tokenek elemzshez 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>ksges.
// A betket 'case insensitive'-knt 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 elejhez.
exit
endif
// Van ilyen karakter, megy<67>nk lejjebb a f ban
tptree:=tptree[i][2]
// El“sz”r megnzz<7A>k, hogy a vgre 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“ keress nem hoz
// eredmnyt.
if (len(tptree)==1)
// Nem lehet tov bb menni, de visszalpni 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 mg 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 vgzi a tnyleges elemzst, rekurz¡van is lehet h¡vni.
// A this:item-t elemzi, sz<73>ksg esetn mg 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 megjegyzs.
return this:parseLineComment(TKID_PPCOMMENT)
elseif (eqItemChar(CTK_CSILLAG))
// '/*'-os megjegyzs
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 megjegyzs.
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))
// Nv. (Betvel vagy al h£z ssal kezd“dik, s betvel,
// 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 '*' megjegyzs
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 megjegyzs
// Mj.: Egy ilyen sorban: "/* huhu */ * hehe" a "* hehe" nem sz m¡t
// megjegyzsnek, mert a '*' nem a sor elejn 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 '/*' megjegyzs.
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 stringknt.
// A nem stringeket az eol kivtelvel 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()
// Nv.
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.
/*
Lehetsges 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())
//*******************************************************************

View File

@@ -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
// rtkt adja. Ha sz m, akkor az adott index attributum
// rtkt adja.
nmethod setAttrib{ob_setAttrib}(attribId,value)
// Ha az attribId string, akkor az adott nev attribŁtum
// rtkt  llˇtja be. Ha sz m, akkor az adott index
// attributum rtkt  llˇtja be.
// Mindig a 'value'-val tr vissza.

View File

@@ -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 mveleti 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 mveleteivel.
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 mveleti 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 mveleteivel.
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_

View File

@@ -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.
**********************************************************************

View File

@@ -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

View File

@@ -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,nevvel,tˇpus val
attrib methods
// Egy t”mb a mveletek sorsz m val, nevvel,
// paramtereivel, implSpec-vel.
attrib pkgId
// A csomag azonosˇt˘ja, minden csomagnak van.
// Ha egy csomagnak van “se, akkor ez megegyezik az “snek
// az id-jvel. Ha nincs “se, akkor pedig k<>l”nb”zik b rmelyik
// olyan csomag pkgId-jt“l, aminek szintn nincs “se.
attrib amBlock
// Egy blokk, aminek a vgrehajt 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 mveleteket.
attrib methodsBlock
// Egy blokk, aminek a vgrehajt sa
// beˇrja egy t”mbbe a csomag  ltal defini lt
// mveletek blokkjait.
// (Ezt a t”mb”t adja a pkgMethodsImplement.)
attrib pkgMethodsImplement
// Egy blokkot tartalmaz, amit kirtkelve
// megkapjuk azt a t”mb”t, aminek az els“
// eleme a csomag, a tov bbi elemei pedig
// a csomagban haszn lhat˘ mveletek
// 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()

View File

@@ -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 mveleti 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 mveleteivel.
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 mveleti 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 mveleteivel.
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_

View File

@@ -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 lnyegben a ocreate()
local t
// Itt meg kellene nzni, 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 cserlni.
// Esetleg, ha egyik sem “se a m siknak, akkor hibajelzst
// lehetne adni.
// Ez az implement ci¢ nem j¢l mk”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 ks“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 mveletek.
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
*********************************************************************

View File

@@ -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 rszt meg tudja adni stringknt.
class PARSER TREADER
attrib item
attrib parserBuffer
rmethod readItem()
// Olvas egy elemet.
// Ret: Az elem, ha OK, nil, ha vge van a streamnek, vagy ha
// hiba volt.
nmethod putParserBuffer(anItem)
// Hozz ad egy elemet a puffer vghez Az elem lehet speci lis is.
nmethod getParserBuffer()
// Kivesz egy elemet a puffer elejr“l.
nmethod unputParserBuffer()
// Kivesz egy elemet a puffer vgr“l.
nmethod ungetParserBuffer(anItem)
// Betesz egy elemet a puffer elejre.
nmethod clearParserBuffer()
// T”rli a parserBuffer()-t.
nmethod rds()
// Olvas egy karatert a readInput()-al a lineBuf-ba.
// Az olvasott rtket a buf-ba is beleteszi, ha az nem az eof.
nmethod unrds(n)
// A buf utols˘ n elemt 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 stringknt.
// 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)

View File

@@ -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 mveleti 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 mveleteivel.
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 mveleti 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 mveleteivel.
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_

View File

@@ -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 elejr“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 vgr“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 elejre.
return TBUFFER.(this:parserBuffer):unget(anItem)
//*******************************************************************
implement clearParserBuffer()
return TBUFFER.(this:parserBuffer):clear()
//*******************************************************************
implement strParserBuffer()
// Megadja a parserBuffer tartalm t stringknt.
// 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 rtket 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 elemt 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
//*******************************************************************

View File

@@ -1,13 +0,0 @@
/*
* $Id$
*/
//*******************************************************************
// Az el“fordul¢ hib k hibak¢djai.
#define FRERR_REOPEN 1
#define FRERR_OPEN 2
#define FRERR_READ 3
//*******************************************************************

View File

@@ -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
//*******************************************************************

View File

@@ -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”lssel.
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()

View File

@@ -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 mveleti 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 mveleteivel.
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 mveleti 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 mveleteivel.
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_

View File

@@ -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 cserli ki.
// $0 az ”sszes paramtert jel”li, vessz“vel elv lasztva.
// Sajnos az strtran itt nem j¢, mert az az eredmnyben is cserlne.
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
//*******************************************************************

View File

@@ -1,31 +0,0 @@
//
// $Id$
//
//*******************************************************************
// prtree.cls: Parser tree. Elemz“ f t kezel“ objektum
// 1999, Csisz r Levente
// Egy elemz“ f t lehet vele felpˇ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. szintjn a keresett sz˘ i. eleme.
// result: Amikor az elemzs ksz s eremnyes, akkor a megtal lt
// <terminal>-ban lev“ result lesz a this:result-ban.
nmethod addWord(result,itemArray)
rmethod oinit()

View File

@@ -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 mveleti 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 mveleteivel.
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 mveleti blokkjaival.
return pOsztaly
**********************************************************************
static function setMCams(ta,tm)
// Egy t”mb”t felt”lt a metaoszt ly  ltal def. objektumok attrib£tumaival s mveleteivel.
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_

View File

@@ -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 vge.
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
//*******************************************************************

View File

@@ -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 felpˇteni s kezelni.
class PRTREEPR OBJECT
attrib eprtree // A prtree objektum.
attrib subtree // Amit ppen elemz<6D>nk.
attrib result // Ha az elemzs 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 elemzs meg ll, akkor itt a megtal lt
// sz˘ hossza van (sikeressg esetn), vagy 0,
// sikertelensg esetn.
// Ezekhez lp vissza, ha az elemzs 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)

View File

@@ -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 mveleti 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 mveleteivel.
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 mveleti 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 mveleteivel.
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_

View File

@@ -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, elg a result is.
return nil
//*******************************************************************
implement put(item)
/*
Egy item-el tov bb megy az elemz“ f ban.
Az itemeket gyjti az itemArray-ban.
Ret: nil, ha nincs vge.
.t., ha vge van s elfogadta,
.f., ha vge 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 elejhez.
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 megnzz<7A>k, hogy a vgre 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“ keress nem hoz
// eredmnyt.
if (len(this:subtree)==1)
// Nem lehet tov bb menni, de visszalpni sem kell.
// id:=this:subtree[1][2]
this:result:=this:subtree[1][2]
return this:wordLen!=0
endif
// Lehet mg 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
// Mg nincs eredmny, megy<67>nk tov bb.
return nil
//*******************************************************************

View File

@@ -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 jelkpezi, 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)

View File

@@ -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 mveleti 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 mveleteivel.
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 mveleti 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 mveleteivel.
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_

View File

@@ -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
//*******************************************************************

View File

@@ -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
// hibajelzsekhez)
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 kivtelvel 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 vge van a streamnek, vagy ha
// hiba volt. Hiba esetn 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“ mvelet, az val˘di aloszt lyoknak implement lni kell.
// Olvas egy 'elemet' k”zvetlen<65>l a stream-b“l az unget puffer
// megker<65>lsvel. Az elem a nil kivtelvel b rmilyen
// objektum lehet.
// Ret: Az elem, ha OK, nil, ha vge van a streamnek, vagy ha
// hiba volt. Hiba esetn 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 filt etc.)
rmethod oinit(name,errorStream)
// Inicializ lja az objektumot.
metaclass
rmethod onew(name,errorStream)

View File

@@ -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 mveleti 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 mveleteivel.
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 mveleti 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 mveleteivel.
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_

View File

@@ -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
//*******************************************************************

View File

@@ -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.

View File

@@ -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ˇtst
// 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ˇts,
// 1: csak '<27>res' helyettesˇts volt, (Nem volt illesztett match
// marker, de <20>reset helyettesˇtett pl. dumb stringify result
// marker, logify result marker.
// 2: volt helyettesˇts.
//
// Problma: Ha a match marker egy list_match_marker, akkor a
// stringify s a blockify markerek elemenknt 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.

View File

@@ -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 mveleti 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 mveleteivel.
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 mveleti 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 mveleteivel.
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_

View File

@@ -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 sztv gjuk a "'"
// karaktereknl a stringet s az ¡gy kapott stringeket
// ”sszeadjuk, s az egsz kifejezst 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¡tst
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 egynl t”bb szint van
a this-hez tartoz¢ result markerhez, akkor nem vgzi el a
helyettes¡tst.
Ha a oneLevel nem <20>res, akkor az '<27>res' helyettes¡tseknl 2-t
ad s nem 1-et.
Ret:
0: nem siker<65>lt a helyettes¡ts,
1: csak '<27>res' helyettes¡ts volt, (Nem volt illesztett match
marker, de <20>reset helyettes¡tett pl. dumb stringify result
marker, logify result marker.
2: volt helyettes¡ts.
Problma: Ha a match marker egy list_match_marker, akkor a
stringify s a blockify markerek elemenknt 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, kivtel 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 problm k lpnek 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 felttlen<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
//*******************************************************************

View File

@@ -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-knt.
class RSMMARKR MMARKER
attrib wordList // Neveket tartalmaz (stringknt), 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)

View File

@@ -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 mveleti 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 mveleteivel.
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 mveleti 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 mveleteivel.
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_

View File

@@ -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
//*******************************************************************

View File

@@ -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 vge van a streamnek, vagy ha
// hiba volt.
rmethod oinit(str,name,errorStream)
// Inicializ lja az objektumot.
metaclass
rmethod onew(str,name,errorStream)

View File

@@ -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 mveleti 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 mveleteivel.
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 mveleti 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 mveleteivel.
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