def quotationModeDeActivate( self, codeListConfig= None): # 96c8d565e4f946c38838d30756ce5c0d if id( None) == id( codeListConfig): codeListConfig= self.getCurrentCodeListConfig() # baustelle weiter optimierbar assert( True == codeListConfigGet( codeListConfig, s_macroLevel)) # cf83b621ff51441298093b7e55dcfc1a codeListConfigSet( codeListConfig, s_macroLevel, False) # cf83b621ff51441298093b7e55dcfc1a
def evalStep( self, rod): if False: # 8337c49584d44686be0bc780cf310dfc pass elif '(' == rod: evol= '(' elif ')' == rod: codeList= self.codeListCurrentEvalTokenList.cdr().car() codeListEnsure( codeList) codeListTmp= codeListGetParameterValues( codeList) executeObject= codeListTmp.car() executeParameters= codeListParametersMake( codeListTmp.cdr()) if id( ar_codeList)== id( executeObject): # baustelle1 : harte fehlerausgabe print "self.codeListCurrentEvalTokenList ", ConsRepr( self.codeListCurrentEvalTokenList).repr_wrapped() raise Exception( "") del codeListTmp evol= ')' if not self.quotationModeIsActivated(): codeList= self.codeCurrentLeafList.car() assert( id( ar_codeList)== id( codeList.car())) codeListConfig= codeList.cdr().car() assert( id( ar_codeListConfig)== id( codeListConfig.car())) del codeListConfig del codeList env_locals= self.getEnvLocals() if False: # 34c428c5375b49df9b919c610a5a9ce6 pass elif isinstance( executeObject, Macro): executeObject.setEnvironment( env_locals) executeObject.setParameters( executeParameters) execote= executeObject.execute() cs= ConsSimple def tmp0( rest): # c3ee5239baaf4484a61bd525f589ef76 return codeListMake( codeListConfigMake( env_locals), codeListParametersMake( rest)) assert( id( ar_retValueFromMacro) == id( execote.car())) # baustelle: ggf. auch ar_retListFromMacro, loesung von 8357c3268e594c2f92afaa3a3af12afb execote= execote.cdr() self.macroBufFeed_v2( tmp0( consesMake( Symbol( 'eval1'), execote))) elif isinstance( executeObject, Quotation): executeObject.setEnvironment( env_locals) executeObject.setParameters( executeParameters) # 0bea40a420ca4ffa9140051cf20b778f execote= executeObject.execute() self.evalToken( execote, True) elif isinstance( executeObject, Function): executeObject.setEnvironment( env_locals) # 0bea40a420ca4ffa9140051cf20b778f executeObject.setParameters( executeParameters) execote= executeObject.execute() #print ConsRepr( execote).repr_wrapped( None, [ CpctReprCodeListConfigMake, CpctReprConses]) self.evalToken( execote, True) else: print "typ nicht erwartet %s " % executeObject raise Exception( "") # baustelle1 ersetzt erstmal richtige Fehlermeldung else: # self.quotationModeIsActivated() 8191d96c8d9c4e31b9726088c66c7d67 pass # baustelle0: executeObject ist von der semantischen Bedeutung her doppelt belegt else: # not rod in [ '(', ')'] if not self.quotationModeIsActivated(): if noo == rod: # baustelle0 : so nicht - if None==self.codeListCurrentEvalTokenList: raise Exception() self.codeListCurrentEvalTokenList.cdr( nil) else: env_locals= self.getEnvLocals() if env_locals.has_key( rod): got= env_locals.get( rod) # baustelle1: noch zu unterscheiden: Value oder Symbol-Macro / Quotation self.evalToken( ConsSimple( ar_value, got), True) # baustelle1: in Funktion X001 auslagern, auch fuer den Listen-Fall | rod kann im aktuellen fall sogar eine Liste enthalten, die nicht in Einzelteilen an evalToken gefuettert werden muss, 7978cb4bee364b3a8359e2a0f8b7f1f4 if self.currentEvalTokenIsInExecutePosition(): if isinstance( got, Quotation) or isinstance( got, Macro): # 34c428c5375b49df9b919c610a5a9ce6 self.quotationModeActivate() else: print "not found %s" % ConsRepr( rod).repr_wrapped( None, [ CpctReprCodeListConfigMake, CpctReprConses]) raise Exception() else: # self.quotationModeIsActivated() 8191d96c8d9c4e31b9726088c66c7d67 """ behandlung bezueglich uqset1 """ if self.getEnvQuotationModeLocals().has_key( rod): # baustelle0 executeObject fuer diesen Fall umbenennen self.quotationModeDeActivate() env_quotationMode_locals= self.getEnvQuotationModeLocals().get( rod) del rod if self.currentEvalTokenIsInExecutePosition(): self.codeListCurrentEvalTokenList.cdr().car( self.getEnvLocals().get( Symbol( 'progn'))) # ddfdc08cdef344b7bcd44d4e093d12ab, erweiterbar, siehe ideen.txt, 96c8d565e4f946c38838d30756ce5c0d parentCodeListConfig= self.getCurrentCodeListConfig( self.codeCurrentLeafList.cdr().car()) self.quotationModeDeActivate( parentCodeListConfig) else: self.codeListCurrentEvalTokenList.cdr().car( nil) # ddfdc08cdef344b7bcd44d4e093d12ab, erweiterbar, siehe ideen.txt codeListConfig= self.getCurrentCodeListConfig() codeListConfigSet( codeListConfig, s_environment, env_quotationMode_locals) del env_quotationMode_locals del codeListConfig pass #evol= self.codeListCurrentEvalTokenList.cdr().car() evol= None # momentan bedeutungslos return evol
def quotationModeActivate( self): codeListConfig= self.getCurrentCodeListConfig() # baustelle weiter optimierbar assert( False == codeListConfigGet( codeListConfig, s_macroLevel)) # cf83b621ff51441298093b7e55dcfc1a codeListConfigSet( codeListConfig, s_macroLevel, True) # cf83b621ff51441298093b7e55dcfc1a