コード例 #1
0
 def __init__(self, fdecls):
     self.fdecls = fdecls
     self.cfun = self.fdecls.cfun
     self.cfile = self.cfun.cfile
     self.xd = CFunXprDictionary(self)
     self.memory_base_table = IT.IndexedTable("memory-base-table")
     self.memory_reference_data_table = IT.IndexedTable(
         "memory-reference-data-table"
     )
     self.constant_value_variable_table = IT.IndexedTable(
         "constant-value-variable-table"
     )
     self.c_variable_denotation_table = IT.IndexedTable(
         "c-variable-denotation-table"
     )
     self.tables = [
         (self.memory_base_table, self._read_xml_memory_base_table),
         (
             self.memory_reference_data_table,
             self._read_xml_memory_reference_data_table,
         ),
         (
             self.constant_value_variable_table,
             self._read_xml_constant_value_variable_table,
         ),
         (
             self.c_variable_denotation_table,
             self._read_xml_c_variable_denotation_table,
         ),
     ]
コード例 #2
0
ファイル: CContextTable.py プロジェクト: sipma/CodeHawk-C
 def __init__(self, cfile):
     self.cfile = cfile
     self.nodetable = IT.IndexedTable('nodes')
     self.cfgtable = IT.IndexedTable('cfg-contexts')
     self.exptable = IT.IndexedTable('exp-contexts')
     self.contexttable = IT.IndexedTable('contexts')
     self.tables = [(self.nodetable, self._read_xml_node_table),
                    (self.cfgtable, self._read_xml_cfg_table),
                    (self.exptable, self._read_xml_exp_table),
                    (self.contexttable, self._read_xml_context_table)]
     self.initialize()
コード例 #3
0
 def __init__(self, cfile):
     self.cfile = cfile
     self.declarations = self.cfile.declarations
     self.dictionary = self.declarations.dictionary
     self.assignment_table = IT.IndexedTable("assignment-table")
     self.function_name_table = IT.IndexedTable("function-name-table")
     self.tables = [
         (self.function_name_table, self._read_xml_function_name_table),
         (self.assignment_table, self._read_xml_assignment_table),
     ]
     self.initialize()
コード例 #4
0
ファイル: CFunPODictionary.py プロジェクト: sipma/CodeHawk-C
 def __init__(self, cfun):
     self.cfun = cfun
     self.pd = self.cfun.cfile.predicatedictionary
     self.assumption_type_table = IT.IndexedTable('assumption-table')
     self.ppo_type_table = IT.IndexedTable('ppo-type-table')
     self.spo_type_table = IT.IndexedTable('spo-type-table')
     self.tables = [(self.assumption_type_table,
                     self._read_xml_assumption_type_table),
                    (self.ppo_type_table, self._read_xml_ppo_type_table),
                    (self.spo_type_table, self._read_xml_spo_type_table)]
     self.initialize()
コード例 #5
0
    def __init__(self, capp: "CApplication") -> None:
        # Basic types dictionary
        CDeclarations.__init__(self, CGlobalDictionary(self))
        self.capp = capp

        # Global definitions and declarations dictionary
        self.fieldinfo_table: IndexedTable[CFieldInfo] = IndexedTable(
            "fieldinfo-table")
        self.compinfo_table: IndexedTable[CCompInfo] = IndexedTable(
            "compinfo-table")
        self.varinfo_table: IndexedTable[CVarInfo] = IT.IndexedTable(
            "varinfo-table")
        self.initinfo_table: IndexedTable[CInitInfoBase] = IT.IndexedTable(
            "initinfo-table")
        self.offset_init_table: IndexedTable[
            COffsetInitInfo] = IT.IndexedTable("offset-init-table")
        self.tables: List[Tuple[IndexedTableSuperclass,
                                Callable[[ET.Element], None]]] = [
                                    (self.fieldinfo_table,
                                     self._read_xml_fieldinfo_table),
                                    (self.compinfo_table,
                                     self._read_xml_compinfo_table),
                                    (self.initinfo_table,
                                     self._read_xml_initinfo_table),
                                    (self.varinfo_table,
                                     self._read_xml_varinfo_table),
                                    (self.offset_init_table,
                                     self._read_xml_offset_init_table),
                                ]

        # Collect names for compinfo equivalence classes
        self.compinfo_names: Dict[Any, Any] = {}  # gckey -> string set

        # Collect storage classes for varinfo equivalence classes
        self.varinfo_storage_classes: Dict[Any, Any] = {}  # gvid -> string

        # Support data structures for linker
        self.ckey2gckey: Dict[Any, Any] = {}  # fid -> ckey -> gckey
        self.vid2gvid: Dict[Any, Any] = {}  # fid -> vid -> gvid
        self.fieldstrings: Dict[Any, Any] = {
        }  # string of joined fields -> gckey list
        self.pending: List[Any] = []
        self.conjectured: Dict[Any, Any] = {}  # ckey -> gckey
        self.reserved: Dict[Any, Any] = {}  # ckey -> gckey
        self.incompatibles: Dict[Any, Any] = {}  # ckey -> gckey set
        self.default_function_prototypes: List[Any] = []  # (fid,varinfo) list

        self.globalcontract = self.capp.globalcontract

        self._initialize()
        if self.compinfo_table.size() == 0:
            self.index_opaque_struct()
コード例 #6
0
 def __init__(self, vard):
     self.vard = vard
     self.cfun = self.vard.cfun
     self.xd = self.vard.xd
     self.non_relational_value_table = IT.IndexedTable(
         'non-relational-value-table')
     self.invariant_fact_table = IT.IndexedTable('invariant-fact-table')
     self.invariant_list_table = IT.IndexedTable('invariant-list-table')
     self.tables = [(self.non_relational_value_table,
                     self._read_xml_non_relational_value_table),
                    (self.invariant_fact_table,
                     self._read_xml_invariant_fact_table)]
     self.initialize()
コード例 #7
0
 def __init__(self, cfile: "CFile"):
     self.cfile = cfile
     self.nodetable: IT.IndexedTable[CContextNode] = IT.IndexedTable("nodes")
     self.cfgtable: IT.IndexedTable[CfgContext] = IT.IndexedTable("cfg-contexts")
     self.exptable: IT.IndexedTable[ExpContext] = IT.IndexedTable("exp-contexts")
     self.contexttable: IT.IndexedTable[CProgramContext] = IT.IndexedTable("contexts")
     self.tables: List[Tuple[IT.IndexedTableSuperclass, Callable[[ET.Element], None]]] = [
         (self.nodetable, self._read_xml_node_table),
         (self.cfgtable, self._read_xml_cfg_table),
         (self.exptable, self._read_xml_exp_table),
         (self.contexttable, self._read_xml_context_table),
     ]
     self.initialize()
コード例 #8
0
    def __init__(self, cfile: "CFile") -> None:
        self.cfile = cfile
        CDeclarations.__init__(self, CFileDictionary(self))
        self.cfile = cfile
        # Basic types dictionary

        # File definitions and declarations
        self.gtypes: Dict[Any, Any] = {}  # name -> CGType
        self.gcomptagdefs: Dict[Any, Any] = {}  # key -> CGCompTag
        self.gcomptagdecls: Dict[Any, Any] = {}  # key -> CGCompTag
        self.gvardefs: Dict[int, CGVarDef] = {}  # vid -> CGVarDef
        self.gvardecls: Dict[int, CGVarDecl] = {}  # vid -> CGVarDecl
        self.genumtagdefs: Dict[Any, Any] = {}  # ename -> CGEnumTag
        self.genumtagdecls: Dict[Any, Any] = {}  # ename -> CGEnumTag
        self.gfunctions: Dict[int, CGFunction] = {}  # vid -> CGFunction

        # File definition dictionary
        self.initinfo_table: IT.IndexedTable[
            CI.CInitInfoBase] = IT.IndexedTable("initinfo-table")
        self.offset_init_table: IT.IndexedTable[
            CI.COffsetInitInfo] = IT.IndexedTable("offset-init-table")
        self.typeinfo_table: IT.IndexedTable[CTypeInfo] = IT.IndexedTable(
            "typeinfo-table")
        self.varinfo_table: IT.IndexedTable[CVarInfo] = IT.IndexedTable(
            "varinfo-table")
        self.fieldinfo_table: IT.IndexedTable[CFieldInfo] = IT.IndexedTable(
            "fieldinfo-table")
        self.compinfo_table: IT.IndexedTable[CCompInfo] = IT.IndexedTable(
            "compinfo-table")
        self.enumitem_table: IT.IndexedTable[CEnumItem] = IT.IndexedTable(
            "enumitem-table")
        self.enuminfo_table: IT.IndexedTable[CEnumInfo] = IT.IndexedTable(
            "enuminfo-table")
        self.location_table: IT.IndexedTable[CLocation] = IT.IndexedTable(
            "location-table")
        self.filename_table = SI.StringIndexedTable("filename-table")
        self.dictionary_tables: List[Tuple[IT.IndexedTableSuperclass, Callable[
            [ET.Element], None]]] = [
                (self.location_table, self._read_xml_location_table),
                (self.initinfo_table, self._read_xml_initinfo_table),
                (self.offset_init_table, self._read_xml_offset_init_table),
                (self.typeinfo_table, self._read_xml_typeinfo_table),
                (self.varinfo_table, self._read_xml_varinfo_table),
                (self.fieldinfo_table, self._read_xml_fieldinfo_table),
                (self.compinfo_table, self._read_xml_compinfo_table),
                (self.enumitem_table, self._read_xml_enumitem_table),
                (self.enuminfo_table, self._read_xml_enuminfo_table),
            ]
        self.string_tables: List[Tuple[IT.IndexedTableSuperclass,
                                       Callable[[ET.Element], None]]] = [
                                           (self.filename_table,
                                            self._read_xml_filename_table)
                                       ]
        self.initialize()
コード例 #9
0
 def __init__(self, cfile):
     self.cfile = cfile
     self.dictionary = self.cfile.declarations.dictionary
     self.po_predicate_table = IT.IndexedTable('po-predicate-table')
     self.tables = [(self.po_predicate_table,
                     self._read_xml_po_predicate_table)]
     self.initialize()
コード例 #10
0
ファイル: CFunDeclarations.py プロジェクト: sipma/CodeHawk-C
 def __init__(self,cfun,xnode):
     self.cfun = cfun
     self.varinfos = {}                # vid -> CVarInfo
     self.dictionary = cfun.cfile.declarations.dictionary
     self.local_varinfo_table = IT.IndexedTable('local-varinfo-table')
     self.tables = [
         (self.local_varinfo_table,self._read_xml_local_varinfo_table) ]
     self.initialize(xnode)
コード例 #11
0
    def __init__(self, capp):
        self.capp = capp
        # Basic types dictionary
        self.dictionary = CGlobalDictionary(self)

        # Global definitions and declarations dictionary
        self.fieldinfo_table = IT.IndexedTable('fieldinfo-table')
        self.compinfo_table = IT.IndexedTable('compinfo-table')
        self.varinfo_table = IT.IndexedTable('varinfo-table')
        self.initinfo_table = IT.IndexedTable('initinfo-table')
        self.offset_init_table = IT.IndexedTable('offset-init-table')
        self.tables = [(self.fieldinfo_table, self._read_xml_fieldinfo_table),
                       (self.compinfo_table, self._read_xml_compinfo_table),
                       (self.initinfo_table, self._read_xml_initinfo_table),
                       (self.varinfo_table, self._read_xml_varinfo_table),
                       (self.offset_init_table,
                        self._read_xml_offset_init_table)]

        # Collect names for compinfo equivalence classes
        self.compinfo_names = {}  # gckey -> string set

        # Collect storage classes for varinfo equivalence classes
        self.varinfo_storage_classes = {}  # gvid -> string

        # Support data structures for linker
        self.ckey2gckey = {}  # fid -> ckey -> gckey
        self.vid2gvid = {}  # fid -> vid -> gvid
        self.fieldstrings = {}  # string of joined fields -> gckey list
        self.pending = []
        self.conjectured = {}  # ckey -> gckey
        self.reserved = {}  # ckey -> gckey
        self.incompatibles = {}  # ckey -> gckey set
        self.default_function_prototypes = []  # (fid,varinfo) list

        self.globalcontract = self.capp.globalcontract

        self._initialize()
        if self.compinfo_table.size() == 0: self.index_opaque_struct()
コード例 #12
0
    def __init__(self,cfile):
        self.cfile = cfile
        # Basic types dictionary
        self.dictionary = CFileDictionary(self)
        
        # File definitions and declarations
        self.gtypes = {}            # name -> CGType
        self.gcomptagdefs = {}      # key -> CGCompTag
        self.gcomptagdecls = {}     # key -> CGCompTag
        self.gvardefs = {}          # vid -> CGVarDef
        self.gvardecls = {}         # vid -> CGVarDecl
        self.genumtagdefs = {}      # ename -> CGEnumTag
        self.genumtagdecls = {}     # ename -> CGEnumTag
        self.gfunctions = {}        # vid -> CGFunction

        # File definition dictionary
        self.initinfo_table = IT.IndexedTable('initinfo-table')
        self.offset_init_table = IT.IndexedTable('offset-init-table')
        self.typeinfo_table = IT.IndexedTable('typeinfo-table')
        self.varinfo_table = IT.IndexedTable('varinfo-table')
        self.fieldinfo_table = IT.IndexedTable('fieldinfo-table')
        self.compinfo_table = IT.IndexedTable('compinfo-table')
        self.enumitem_table = IT.IndexedTable('enumitem-table')
        self.enuminfo_table = IT.IndexedTable('enuminfo-table')
        self.location_table = IT.IndexedTable('location-table')
        self.filename_table = SI.StringIndexedTable('filename-table')
        self.dictionary_tables = [
            (self.location_table,self._read_xml_location_table),
            (self.initinfo_table,self._read_xml_initinfo_table),
            (self.offset_init_table,self._read_xml_offset_init_table),
            (self.typeinfo_table,self._read_xml_typeinfo_table),
            (self.varinfo_table,self._read_xml_varinfo_table),
            (self.fieldinfo_table,self._read_xml_fieldinfo_table),
            (self.compinfo_table,self._read_xml_compinfo_table),
            (self.enumitem_table,self._read_xml_enumitem_table),
            (self.enuminfo_table,self._read_xml_enuminfo_table) ]
        self.string_tables = [
            (self.filename_table,self._read_xml_filename_table)
            ]       
        self.initialize()
コード例 #13
0
 def __init__(self, vd):
     self.vd = vd
     self.numerical_table = IT.IndexedTable('numerical-table')
     self.symbol_table = IT.IndexedTable('symbol-table')
     self.variable_table = IT.IndexedTable('variable-table')
     self.xcst_table = IT.IndexedTable('xcst-table')
     self.xpr_table = IT.IndexedTable('xpr-table')
     self.xpr_list_table = IT.IndexedTable('xpr-list-table')
     self.xpr_list_list_table = IT.IndexedTable('xpr-list-list-table')
     self.tables = [(self.numerical_table, self._read_xml_numerical_table),
                    (self.symbol_table, self._read_xml_symbol_table),
                    (self.variable_table, self._read_xml_variable_table),
                    (self.xcst_table, self._read_xml_xcst_table),
                    (self.xpr_table, self._read_xml_xpr_table),
                    (self.xpr_list_table, self._read_xml_xpr_list_table),
                    (self.xpr_list_list_table,
                     self._read_xml_xpr_list_list_table)]
コード例 #14
0
 def __init__(self, cfile):
     self.cfile = cfile
     self.declarations = self.cfile.declarations
     self.dictionary = self.declarations.dictionary
     self.api_parameter_table = IT.IndexedTable('api-parameter-table')
     self.s_offset_table = IT.IndexedTable('s-offset-table')
     self.s_term_table = IT.IndexedTable('s-term-table')
     self.xpredicate_table = IT.IndexedTable('xpredicate-table')
     self.postrequest_table = IT.IndexedTable('postrequest-table')
     self.postassume_table = IT.IndexedTable('postassume-table')
     self.ds_condition_table = IT.IndexedTable('ds-condition-table')
     self.tables = [
         (self.api_parameter_table, self._read_xml_api_parameter_table),
         (self.s_offset_table, self._read_xml_s_offset_table),
         (self.s_term_table, self._read_xml_s_term_table),
         (self.xpredicate_table, self._read_xml_xpredicate_table),
         (self.postrequest_table, self._read_xml_postrequest_table),
         (self.postassume_table, self._read_xml_postassume_table),
         (self.ds_condition_table, self._read_xml_ds_condition_table)
     ]
     self.initialize()
コード例 #15
0
ファイル: CDictionary.py プロジェクト: sipma/CodeHawk-C
 def __init__(self):
     self.attrparam_table = IT.IndexedTable('attrparam-table')
     self.attribute_table = IT.IndexedTable('attribute-table')
     self.attributes_table = IT.IndexedTable('attributes-table')
     self.constant_table = IT.IndexedTable('constant-table')
     self.exp_table = IT.IndexedTable('exp-table')
     self.funarg_table = IT.IndexedTable('funarg-table')
     self.funargs_table = IT.IndexedTable('funargs-table')
     self.lhost_table = IT.IndexedTable('lhost-table')
     self.lval_table = IT.IndexedTable('lval-table')
     self.offset_table = IT.IndexedTable('offset-table')
     self.typ_table = IT.IndexedTable('typ-table')
     self.typsig_table = IT.IndexedTable('typsig-table')
     self.typsiglist_table = IT.IndexedTable('typsiglist-table')
     self.string_table = SI.StringIndexedTable ('string-table')
     self.tables = [
         (self.attrparam_table,self._read_xml_attrparam_table),
         (self.attribute_table,self._read_xml_attribute_table),
         (self.attributes_table,self._read_xml_attributes_table),
         (self.constant_table,self._read_xml_constant_table),
         (self.exp_table,self._read_xml_exp_table),
         (self.funarg_table,self._read_xml_funarg_table),
         (self.funargs_table,self._read_xml_funargs_table),
         (self.lhost_table,self._read_xml_lhost_table),
         (self.lval_table,self._read_xml_lval_table),
         (self.offset_table,self._read_xml_offset_table),
         (self.typ_table,self._read_xml_typ_table),
         (self.typsig_table,self._read_xml_typsig_table),
         (self.typsiglist_table,self._read_xml_typsiglist_table),
     ]
     self.string_tables = [
         (self.string_table, self._read_xml_string_table)
         ]