コード例 #1
0
ファイル: bnf.py プロジェクト: BackupTheBerlios/pylilac-svn
    def insert_transitions(self, grammar, fsa, initial, final, tag):
        def concatenation_build(symbols, grammar, fsa, initial, final, tag):
            prev = initial
            for n, symbol in enumerate(symbols):
                if n + 1 == len(symbols):
                    next = final
                else:
                    next = fsa.add_state()
                symbol.insert_transitions(grammar, fsa, prev, next, tag)
                prev = next

        tag = Utilities.nvl(tag, ())
        for concatenation in self.__fsot:
            concatenation_build(concatenation, grammar, fsa, initial, final, tag)
コード例 #2
0
ファイル: bnf.py プロジェクト: BackupTheBerlios/pylilac-svn
 def insert_transitions(self, grammar, fsa, initial, final, tag):
     tag = Utilities.nvl(tag, ())
     rhs = grammar[self.reference]
     rhs.insert_transitions(grammar, fsa, initial, final, tag + (self.reference,))