Exemple #1
0
def testConsTrait5():
 
 def testCrCr( ex, ou, htEnvLocals= None):
  if None==htEnvLocals:
   htEnvLocals= dict()
  test( ConsRepr( ex ).repr_wrapped( htEnvLocals),
   ConsRepr( ou ).repr_wrapped( htEnvLocals))

 s= Symbol
 cs= ConsSimple

 te.checkComplainAndAdjustExpected( 0)
 uNames.next( usRename( ConsSimple, 'cs'))
 uNames.next( usRename( Symbol, 's'))

 csTest5= consesMake( 1, 2, 3, 4, 5)
 csTest2= consesMake( 6, 7)
 csTest1= consesMake( 8)

 testCrCr( csTest5.cdr().cdr().cdr().cdr(), consesDistanceSeek( csTest5, 0))
 testCrCr( csTest5.cdr().cdr().cdr(), consesDistanceSeek( csTest5, 1))
 testCrCr( csTest5.cdr().cdr(), consesDistanceSeek( csTest5, 2))
 testCrCr( csTest5.cdr(), consesDistanceSeek( csTest5, 3))
 testCrCr( csTest5, consesDistanceSeek( csTest5, 4))

 testCrCr( csTest5, consesDistanceSeek( csTest5, 5))
 testCrCr( csTest5, consesDistanceSeek( csTest5, 6))

 testCrCr( csTest2, consesDistanceSeek( csTest2, 6))
 testCrCr( csTest1, consesDistanceSeek( csTest1, 6))
 

 uNames.undo()
 uNames.undo()
 te.checkComplainAndAdjustExpected( 9)
  def repr_wrapped( self, ht_selfid2Name, lCpctRepr):
   assert( 0==len( self.lParams))

   stack= self.consWrapped
   ht= dict()

   ht[ id( stack)] = 'stack'

   walker= ConsSimple( stackGetCodeListCurrentEvalTokenList( stack),
    stackGetCodeListParent2EvalToken( stack))

   xNr= 0
   while not id( nil) == id( walker):
    walker_car= walker.car()
    ht[ id( walker_car)]= ConsRepr( ConsSimple( walker_car.car(), 'sclp2et_'+ str( xNr- 1))).repr_wrapped() # baustelle: hack
    #ht[ id( walker_car)]= ConsRepr( ConsSimple( walker_car.car(), 'consesNth0( stackGetCodeListParent2EvalToken, '+ str( xNr- 1)+ ')')).repr_wrapped() # baustelle: hack
    walker= walker.cdr()
    xNr += 1

   codeCurrentLeafList= stackGetCodeCurrentLeafList( self.consWrapped)
   
   ht[ id( consesDistanceSeek( codeCurrentLeafList))] = 'codeList' # sollte i.codeList entsprechen

   codeCurrentLeafListRepr= ConsRepr( codeCurrentLeafList).repr_wrapped( None, [CpctReprCodeListShort4Stack, CpctReprHTselfID2NameCreate( ht), CpctReprConsesRest]) # 28ddde667ab3463080f3b16faa5a48b3 baustelle 

   return 'stackShort( ' + codeCurrentLeafListRepr + ')'
  def repr_wrapped( self, ht_selfid2Name, lCpctRepr):
   assert( 0==len( self.lParams))

   stack= self.consWrapped
   ht= dict()

   ht[ id( stack)] = 'stack'

   walker= ConsSimple( stackGetCodeListCurrentEvalTokenList( stack), # e584963f104a4fb19b326b4ddd2721d6
    stackGetCodeListParent2EvalToken( stack))

   xNr= 0
   while not id( nil) == id( walker): # e584963f104a4fb19b326b4ddd2721d6
    walker_car= walker.car()
    ht[ id( walker_car)]= ConsRepr( ConsSimple( walker_car.car(), 'sclp2et_'+ str( xNr- 1))).repr_wrapped() # baustelle: hack 53de4cb72e4647409c28cab4b29a5f92
    #ht[ id( walker_car)]= ConsRepr( ConsSimple( walker_car.car(), 'consesNth0( stackGetCodeListParent2EvalToken, '+ str( xNr- 1)+ ')')).repr_wrapped() # baustelle: hack
    walker= walker.cdr()
    xNr += 1

   codeCurrentLeafList= stackGetCodeCurrentLeafList( self.consWrapped)
   
   ht[ id( consesDistanceSeek( codeCurrentLeafList))] = 'codeList' # sollte i.codeList entsprechen

   codeCurrentLeafListRepr= ConsRepr( codeCurrentLeafList).repr_wrapped( None, [CpctReprCodeListConfigMake, CpctReprHTselfID2NameCreate( ht), CpctReprConsesRest]) # 28ddde667ab3463080f3b16faa5a48b3 baustelle 

   return 'stackMake( codeListCurrentEvalTokenList, codeListParent2EvalToken, ' + codeCurrentLeafListRepr + ')'
Exemple #4
0
 def evalToken( self, rodTyped, evalMode= False): # evalMode=True wird bei '(' nur zu beginn gesetzt, ob evaluiert wird, wird von aussen festgelegt

  rodType= rodTyped.car()
  rod= rodTyped.cdr()

  if id( rodType) not in [ id( ar_value), id( ar_retValue), id( ar_retList)]:
   print ConsRepr( rodTyped).repr_wrapped( None, [ CpctReprCodeListConfigMake, CpctReprConses])
   raise Exception()

  if False: # 8337c49584d44686be0bc780cf310dfc
   pass
  elif '(' == rod:
   self.codeLevel+=1
   codeListConfigCloned= codeListConfigClone( self.getCurrentCodeListConfig())
   elem= codeListMake( codeListConfigCloned, codeListParametersMake( nil)) # ehemals 76ff812ddb0f47f5be9ca34925a4a3b6
   self.codeCurrentLeafList= ConsSimple( elem, self.codeCurrentLeafList) # 2bb546ca3ffd48bc851d17494f5c286f
   self.codeLeafBackTree.car( self.codeCurrentLeafList) # 2bb546ca3ffd48bc851d17494f5c286f

   del codeListConfigCloned

   if True == evalMode: # 672b8ecafdae4e218d2268543f27119a
    elemNew= self.codeListCurrentEvalTokenList.cdr()
    elemNew.car( elem)
    elemCurrent= self.codeListCurrentEvalTokenList
   else:
    elemNew= ConsSimple( elem, nil)
    elemCurrent= consesDistanceSeek( self.codeListCurrentEvalTokenList)
    assert( not id( nil) == id( elemCurrent))
    elemCurrent.cdr( elemNew)
   ( elemPrevious, elemCurrent, elemNew, elemParent) = ( elemCurrent, 
     codeListGetParameterValuesCdrContainer( elem) # ehemals 76ff812ddb0f47f5be9ca34925a4a3b6
    , None, elemNew)

   self.codeListParent2EvalToken= ConsSimple( elemPrevious, self.codeListParent2EvalToken)
   self.codeListCurrentEvalTokenList= codeListGetParameterValuesCdrContainer2( elem) # ist das wirklich notwendig? zumindest liefert der Check keinen Fehler (also ist es wenigstens korrekt)

  elif ')' == rod:
   self.codeLevel-=1
   if nil == self.codeListParent2EvalToken:
    raise Exception( 'kann keine klammer mehr schliessen')
   elemParent2= self.codeListParent2EvalToken.car()
   self.codeListParent2EvalToken= self.codeListParent2EvalToken.cdr()
   ( elemCurrent2, elemParent)= ( elemParent2, None)
   self.codeListCurrentEvalTokenList= elemCurrent2
   self.codeCurrentLeafList= self.codeCurrentLeafList.cdr() # 2bb546ca3ffd48bc851d17494f5c286f baustelle: die und die folgende Zeile sind ohne Testfehler austauschbar, pruefen
   self.codeLeafBackTree= ConsSimple( self.codeCurrentLeafList, self.codeLeafBackTree) # 2bb546ca3ffd48bc851d17494f5c286f
  else: # not rod in [ '(', ')']
   elem= rod # 59cc177458e34abcb943fd4351d93149
   if True == evalMode: # 672b8ecafdae4e218d2268543f27119a
    elemNew= self.codeListCurrentEvalTokenList # 7171a8bd3cd641babf4ebcca7394f4c6
    if id( ar_retList) == id( rodType): # 7978cb4bee364b3a8359e2a0f8b7f1f4
     # baustelle0: isinstance( elem, Cons) kann raus, sobald ar_retValue implementiert ist

     wrappedValues= elem

     elemNew.cdr( wrappedValues) # 7171a8bd3cd641babf4ebcca7394f4c6, ehemals 36268f550bcf4fb88d25868f8ea663bf hack

     self.codeListCurrentEvalTokenList= consesDistanceSeek( elemNew, 1, (lambda walker : isinstance( walker, Cons))) # 7171a8bd3cd641babf4ebcca7394f4c6, 80d1ab47171e42ba9bac8c8409b87bee
     #self.codeListCurrentEvalTokenList= consesDistanceSeek( elemNew, 1) # 7171a8bd3cd641babf4ebcca7394f4c6
    elif id( ar_retValue) == id( rodType): # 7978cb4bee364b3a8359e2a0f8b7f1f4
     # baustelle0: isinstance( elem, Cons) kann raus, sobald die restlichen ar_ Symbole implementiert sind
     elemNew.cdr().car( elem)
    elif id( ar_value) == id( rodType): # 7978cb4bee364b3a8359e2a0f8b7f1f4
     # baustelle0: isinstance( elem, Cons) kann raus, sobald die restlichen ar_ Symbole implementiert sind
     elemNew.cdr().car( elem)
    else:
     raise Exception( ConsRepr( rodTyped).repr_wrapped( None, [ CpctReprCodeListConfigMake, CpctReprConses]))
   else: # False == evalMode
    elemNew= ConsSimple( elem, nil)
    elemCurrent= consesDistanceSeek( self.codeListCurrentEvalTokenList)
    elemCurrent.cdr( elemNew)
    ( elemPrevious, elemCurrent, elemNew) = ( elemCurrent, elemNew, None)
    self.codeListCurrentEvalTokenList= elemPrevious # baustelle ggf. wieder rauswerfen

  return rod