Example #1
0
    def get_names(self):
        """このシンタックスインスタンスでアクセスできる
        ビット列プロパティの一覧を返す"""

        result = []
        for mnemonic in self._mnemonics:
            name = mnemonic.name
            if isinstance(mnemonic, case_table):
                if mnemonic.condition(self):
                    result.extend(mnemonic.cls(self).get_names())
            else:
                result.append(name)
        return result
Example #2
0
    def get_names(self):
        """このシンタックスインスタンスでアクセスできる
        ビット列プロパティの一覧を返す"""

        result = []
        for mnemonic in self._mnemonics:
            name = mnemonic.name
            if isinstance(mnemonic, case_table):
                if mnemonic.condition(self):
                    result.extend(mnemonic.cls(self).get_names())
            else:
                result.append(name)
        return result
Example #3
0
    def __getattr__(self, name):
        """指定されたプロパティが直下から見つからない場合に、
        条件に合うifシンタックスを順番に探していく"""

        for mnemonic in self._conditions:
            try:
                if mnemonic.condition(self):
                    sub = getattr(self, mnemonic.name)
                    return getattr(sub, name)
            except AttributeError:
                pass

        # 親が与えられている場合は親のプロパティも参照する
        if (self._parent and any(mnemonic.name == name
                                 for mnemonic in self._parent._mnemonics)):
            return getattr(self._parent, name)
Example #4
0
    def __getattr__(self, name):
        """指定されたプロパティが直下から見つからない場合に、
        条件に合うifシンタックスを順番に探していく"""

        for mnemonic in self._conditions:
            try:
                if mnemonic.condition(self):
                    sub = getattr(self, mnemonic.name)
                    return getattr(sub, name)
            except AttributeError:
                pass

        # 親が与えられている場合は親のプロパティも参照する
        if (
            self._parent and
            any(mnemonic.name == name for mnemonic in self._parent._mnemonics)
        ):
            return getattr(self._parent, name)