2010/3/25 spir ☣ <denis.s...@gmail.com>:
> Hello,
>
>
> I'm writing a kind of language simulation. Here, an expression like "a#3.b" 
> maps to a NamedData node, with an attribute 
> terms=[('.','a'),('#',3),('.'''b')].
> (The lang uses '#' instead of "[...]" for item indexing.)
> When this node is "run", the source code maps to a name lookup operation in 
> current scope, passing the terms attr as argument. Below the code with debug 
> prints and the error I get and cannot understand:
>
> ==================
> class Scope(Code):
>    ...
>   �...@staticmethod
>    def lookup(scope, terms):
>        ''' actual data refered to by name (or context) terms'''
>        data = scope    # actually, initial container
>        for term in terms:
>            (sign,key) = term
>            print data, (sign,ATTR,sign==ATTR,sign is ATTR), key
>            if sign == "ATTR":    # sign == ATTR='.'
>                print "getAttr"
>                data = data.getAttr(key)
>            else:                 # sign == ITEM='#'
>                print "getItem"
>                data = data.getItem(key) ####### line 82 #######
>        return data
> === output =======
> currentScope ('.', '.', True, True) a
> getItem
> ... traceback ...
>  File "/home/spir/prog/python/claro/scope.py", line 82, in lookup
>    data = data.getItem(key)
> AttributeError: 'Scope' object has no attribute 'getItem'
> ==================
>
> (Scopes actually have no getIem, they're plain symbol (attribute) containers.)
>
> There must be something such obvious I'm too stupid to see it! What do I 
> overlook? How can it branch to the "getItem" side of the choice?


if sign == "ATTR":

should be

if sign == ATTR:


-- 
André Engels, andreeng...@gmail.com
_______________________________________________
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor

Reply via email to