'Return the citree node for the given CITDL expression.
os.environ.get() -> <class \'str\' on stdlib blob \'built-in\'>'

def _eval_citdl_expr(self, expr, scope_stack):

    tokens = list(self._tokenize_citdl_expr(expr))
    assert tokens, 'have    to    adjust    handling    if    no    tokens'
    obj = self._eval_citdl_token(tokens[0], scope_stack)
    for (i, token) in enumerate(tokens[1:]):
        if token.endswith('()'):
            token = token[(-2):]
            call = True
        else:
            call = False
        if (obj.tag == 'import'):
            obj = self._eval_import_getattr(obj, token, self._join_citdl_expr(tokens[:(i + 2)]))
        else:
            obj = self._eval_getattr(obj, token, self._join_citdl_expr(tokens[:(i + 2)]))
        if call:
            raise CodeIntelError(('_eval_citdl_expr(%r):    not    handling    call    on    %r    ' % (expr, self.str_elem(obj))))
    if (obj.tag == 'import'):
        raise CodeIntelError(('_eval_citdl_expr:    cannot    return    import    <%s>:    need    to    resolve    it' % self.str_import(obj)))
    return obj
