return set() def _infer(self, expr, expected_type): sorts = self.signature.sorts r = expr.root if expected_type not in [' ', '', '?' ] and not expr.subtrees and r not in sorts: sorts[r] = [((), expected_type)] if __name__ == '__main__': sample_decls = """ x : V*V -> [] """ from logic.fol.syntax.parser import FolFormulaParser L = FolFormulaParser() FolFormula.INFIXES += [':'] decls = [ L * line for line in (x.strip() for x in sample_decls.splitlines()) if line ] td = TypeDeclarations() for phi in decls: print u'§ ', phi print td.read_from(decls)
def _mkparser(cls): from logic.fol.syntax.parser import LexerRules, FolFormulaParser defops = [(":=", 2, LexerRules.opAssoc.RIGHT)] return FolFormulaParser(operators=FolFormulaParser.OPERATORS + defops)