svf-tools 1.0.752 → 1.0.754
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/SVF-doxygen/html/html/BoundedZ3Expr_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/BoundedZ3Expr_8h.html +24 -1
- package/SVF-doxygen/html/html/BoundedZ3Expr_8h_source.html +373 -376
- package/SVF-doxygen/html/html/CFGNormalizer_8cpp_source.html +76 -76
- package/SVF-doxygen/html/html/CFGNormalizer_8h.html +1 -1
- package/SVF-doxygen/html/html/CFGNormalizer_8h_source.html +29 -29
- package/SVF-doxygen/html/html/CFGrammar_8cpp.html +88 -0
- package/SVF-doxygen/html/html/CFGrammar_8cpp_source.html +568 -0
- package/SVF-doxygen/html/html/CFGrammar_8h.html +108 -0
- package/SVF-doxygen/html/html/CFGrammar_8h_source.html +643 -0
- package/SVF-doxygen/html/html/CFLAlias_8h_source.html +5 -5
- package/SVF-doxygen/html/html/CFLBase_8cpp_source.html +120 -127
- package/SVF-doxygen/html/html/CFLBase_8h_source.html +14 -14
- package/SVF-doxygen/html/html/CFLGramGraphChecker_8h.html +1 -1
- package/SVF-doxygen/html/html/CFLGramGraphChecker_8h_source.html +12 -12
- package/SVF-doxygen/html/html/CFLGraphBuilder_8cpp_source.html +464 -409
- package/SVF-doxygen/html/html/CFLGraphBuilder_8h.html +10 -2
- package/SVF-doxygen/html/html/CFLGraphBuilder_8h_source.html +120 -175
- package/SVF-doxygen/html/html/CFLGraph_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/CFLGraph_8h.html +1 -1
- package/SVF-doxygen/html/html/CFLGraph_8h_source.html +11 -11
- package/SVF-doxygen/html/html/CFLSolver_8cpp_source.html +60 -60
- package/SVF-doxygen/html/html/CFLSolver_8h.html +1 -1
- package/SVF-doxygen/html/html/CFLSolver_8h_source.html +19 -19
- package/SVF-doxygen/html/html/CFLStat_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/CFLVF_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/ConsExeState_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/ConsG_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/GrammarBuilder_8cpp_source.html +7 -7
- package/SVF-doxygen/html/html/GrammarBuilder_8h.html +1 -1
- package/SVF-doxygen/html/html/GrammarBuilder_8h_source.html +3 -3
- package/SVF-doxygen/html/html/GraphWriter_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/GraphWriter_8h_source.html +1 -1
- package/SVF-doxygen/html/html/NumericLiteral_8h_source.html +12 -12
- package/SVF-doxygen/html/html/PAGGrammar_8txt.html +209 -0
- package/SVF-doxygen/html/html/PEGGrammar_8txt.html +11 -11
- package/SVF-doxygen/html/html/SingleAbsValue_8h_source.html +4 -4
- package/SVF-doxygen/html/html/VFGGrammar_8txt.html +119 -0
- package/SVF-doxygen/html/html/annotated.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1AliasCFLGraphBuilder-members.html +21 -20
- package/SVF-doxygen/html/html/classSVF_1_1AliasCFLGraphBuilder.html +223 -220
- package/SVF-doxygen/html/html/classSVF_1_1BoundedZ3Expr.html +291 -296
- package/SVF-doxygen/html/html/classSVF_1_1CFGNormalizer-members.html +10 -10
- package/SVF-doxygen/html/html/classSVF_1_1CFGNormalizer.html +119 -119
- package/SVF-doxygen/html/html/classSVF_1_1CFGrammar-members.html +158 -0
- package/SVF-doxygen/html/html/classSVF_1_1CFGrammar.html +1051 -0
- package/SVF-doxygen/html/html/classSVF_1_1CFGrammar.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1CFLAlias-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CFLAlias.html +13 -13
- package/SVF-doxygen/html/html/classSVF_1_1CFLBase-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CFLBase.html +108 -114
- package/SVF-doxygen/html/html/classSVF_1_1CFLFIFOWorkList.html +17 -17
- package/SVF-doxygen/html/html/classSVF_1_1CFLGraph-members.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1CFLGraph.html +16 -16
- package/SVF-doxygen/html/html/classSVF_1_1CFLGraphBuilder-members.html +17 -16
- package/SVF-doxygen/html/html/classSVF_1_1CFLGraphBuilder.html +333 -280
- package/SVF-doxygen/html/html/classSVF_1_1CFLSolver-members.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1CFLSolver.html +56 -56
- package/SVF-doxygen/html/html/classSVF_1_1CFLStat.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1CFLVF-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CFLVF.html +14 -14
- package/SVF-doxygen/html/html/classSVF_1_1ConsExeState.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ConstraintGraph.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1GrammarBase.html +76 -76
- package/SVF-doxygen/html/html/classSVF_1_1GrammarBase.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1GrammarBase_1_1SymbolHash.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1GrammarBuilder.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1NumericLiteral.html +11 -11
- package/SVF-doxygen/html/html/classSVF_1_1POCRAlias-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1POCRAlias.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1POCRHybrid-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1POCRHybrid.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1POCRHybridSolver-members.html +7 -7
- package/SVF-doxygen/html/html/classSVF_1_1POCRHybridSolver.html +53 -53
- package/SVF-doxygen/html/html/classSVF_1_1POCRSolver-members.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1POCRSolver.html +47 -47
- package/SVF-doxygen/html/html/classSVF_1_1SingleAbsValue.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1VFCFLGraphBuilder-members.html +21 -20
- package/SVF-doxygen/html/html/classSVF_1_1VFCFLGraphBuilder.html +148 -145
- package/SVF-doxygen/html/html/classes.html +6 -6
- package/SVF-doxygen/html/html/dir_1b8e404556d3e8597ae60437f0a084bf.html +7 -2
- package/SVF-doxygen/html/html/dir_7de7f3d0ab1cbd78bc64b135e4cd18be.html +80 -0
- package/SVF-doxygen/html/html/dir_8a9c8659eb68b9cbd3fead4690588a47.html +2 -2
- package/SVF-doxygen/html/html/files.html +14 -13
- package/SVF-doxygen/html/html/functions_a.html +5 -5
- package/SVF-doxygen/html/html/functions_b.html +9 -7
- package/SVF-doxygen/html/html/functions_c.html +5 -5
- package/SVF-doxygen/html/html/functions_d.html +1 -1
- package/SVF-doxygen/html/html/functions_e.html +4 -4
- package/SVF-doxygen/html/html/functions_f.html +2 -2
- package/SVF-doxygen/html/html/functions_func.html +5 -5
- package/SVF-doxygen/html/html/functions_func_b.html +9 -7
- package/SVF-doxygen/html/html/functions_func_c.html +5 -5
- package/SVF-doxygen/html/html/functions_func_d.html +1 -1
- package/SVF-doxygen/html/html/functions_func_e.html +3 -3
- package/SVF-doxygen/html/html/functions_func_f.html +1 -1
- package/SVF-doxygen/html/html/functions_func_g.html +13 -13
- package/SVF-doxygen/html/html/functions_func_h.html +3 -3
- package/SVF-doxygen/html/html/functions_func_i.html +1 -1
- package/SVF-doxygen/html/html/functions_func_n.html +2 -2
- package/SVF-doxygen/html/html/functions_func_p.html +2 -2
- package/SVF-doxygen/html/html/functions_func_r.html +1 -1
- package/SVF-doxygen/html/html/functions_func_s.html +1 -1
- package/SVF-doxygen/html/html/functions_g.html +15 -15
- package/SVF-doxygen/html/html/functions_h.html +3 -3
- package/SVF-doxygen/html/html/functions_i.html +2 -2
- package/SVF-doxygen/html/html/functions_k.html +3 -3
- package/SVF-doxygen/html/html/functions_l.html +5 -5
- package/SVF-doxygen/html/html/functions_n.html +3 -3
- package/SVF-doxygen/html/html/functions_o.html +13 -13
- package/SVF-doxygen/html/html/functions_p.html +16 -12
- package/SVF-doxygen/html/html/functions_r.html +1 -1
- package/SVF-doxygen/html/html/functions_s.html +17 -19
- package/SVF-doxygen/html/html/functions_t.html +3 -3
- package/SVF-doxygen/html/html/functions_type_k.html +2 -2
- package/SVF-doxygen/html/html/functions_type_p.html +1 -1
- package/SVF-doxygen/html/html/functions_type_s.html +3 -3
- package/SVF-doxygen/html/html/functions_v.html +6 -6
- package/SVF-doxygen/html/html/functions_vars_e.html +1 -1
- package/SVF-doxygen/html/html/functions_vars_f.html +1 -1
- package/SVF-doxygen/html/html/functions_vars_g.html +2 -2
- package/SVF-doxygen/html/html/functions_vars_k.html +1 -1
- package/SVF-doxygen/html/html/functions_vars_n.html +1 -1
- package/SVF-doxygen/html/html/functions_vars_s.html +2 -2
- package/SVF-doxygen/html/html/functions_w.html +9 -9
- package/SVF-doxygen/html/html/globals.html +6 -4
- package/SVF-doxygen/html/html/globals_defs.html +7 -0
- package/SVF-doxygen/html/html/globals_e.html +1 -1
- package/SVF-doxygen/html/html/globals_g.html +3 -3
- package/SVF-doxygen/html/html/globals_m.html +4 -1
- package/SVF-doxygen/html/html/globals_s.html +1 -1
- package/SVF-doxygen/html/html/globals_v.html +2 -2
- package/SVF-doxygen/html/html/globals_vars.html +12 -10
- package/SVF-doxygen/html/html/hierarchy.html +1 -1
- package/SVF-doxygen/html/html/menudata.js +1 -0
- package/SVF-doxygen/html/html/namespaceSVF.html +40 -2
- package/SVF-doxygen/html/html/namespacemembers_b.html +3 -0
- package/SVF-doxygen/html/html/namespacemembers_enum.html +3 -0
- package/SVF-doxygen/html/html/search/all_0.js +147 -146
- package/SVF-doxygen/html/html/search/all_1.js +478 -478
- package/SVF-doxygen/html/html/search/all_10.js +327 -325
- package/SVF-doxygen/html/html/search/all_11.js +208 -208
- package/SVF-doxygen/html/html/search/all_12.js +545 -545
- package/SVF-doxygen/html/html/search/all_13.js +189 -189
- package/SVF-doxygen/html/html/search/all_14.js +66 -66
- package/SVF-doxygen/html/html/search/all_15.js +170 -170
- package/SVF-doxygen/html/html/search/all_16.js +60 -60
- package/SVF-doxygen/html/html/search/all_17.js +1 -1
- package/SVF-doxygen/html/html/search/all_18.js +1 -1
- package/SVF-doxygen/html/html/search/all_19.js +10 -10
- package/SVF-doxygen/html/html/search/all_1a.js +169 -169
- package/SVF-doxygen/html/html/search/all_2.js +159 -156
- package/SVF-doxygen/html/html/search/all_3.js +637 -638
- package/SVF-doxygen/html/html/search/all_4.js +227 -227
- package/SVF-doxygen/html/html/search/all_5.js +156 -156
- package/SVF-doxygen/html/html/search/all_6.js +223 -223
- package/SVF-doxygen/html/html/search/all_7.js +1012 -1012
- package/SVF-doxygen/html/html/search/all_8.js +192 -192
- package/SVF-doxygen/html/html/search/all_9.js +597 -597
- package/SVF-doxygen/html/html/search/all_a.js +47 -47
- package/SVF-doxygen/html/html/search/all_b.js +26 -26
- package/SVF-doxygen/html/html/search/all_c.js +113 -113
- package/SVF-doxygen/html/html/search/all_d.js +196 -196
- package/SVF-doxygen/html/html/search/all_e.js +206 -206
- package/SVF-doxygen/html/html/search/all_f.js +122 -122
- package/SVF-doxygen/html/html/search/classes_0.js +26 -26
- package/SVF-doxygen/html/html/search/classes_1.js +9 -9
- package/SVF-doxygen/html/html/search/classes_10.js +73 -73
- package/SVF-doxygen/html/html/search/classes_11.js +15 -15
- package/SVF-doxygen/html/html/search/classes_12.js +2 -2
- package/SVF-doxygen/html/html/search/classes_13.js +10 -10
- package/SVF-doxygen/html/html/search/classes_14.js +14 -14
- package/SVF-doxygen/html/html/search/classes_15.js +1 -1
- package/SVF-doxygen/html/html/search/classes_2.js +76 -76
- package/SVF-doxygen/html/html/search/classes_3.js +35 -35
- package/SVF-doxygen/html/html/search/classes_4.js +10 -10
- package/SVF-doxygen/html/html/search/classes_5.js +28 -28
- package/SVF-doxygen/html/html/search/classes_6.js +98 -98
- package/SVF-doxygen/html/html/search/classes_7.js +33 -33
- package/SVF-doxygen/html/html/search/classes_8.js +56 -56
- package/SVF-doxygen/html/html/search/classes_9.js +1 -1
- package/SVF-doxygen/html/html/search/classes_a.js +12 -12
- package/SVF-doxygen/html/html/search/classes_b.js +29 -29
- package/SVF-doxygen/html/html/search/classes_c.js +6 -6
- package/SVF-doxygen/html/html/search/classes_d.js +19 -19
- package/SVF-doxygen/html/html/search/classes_e.js +36 -36
- package/SVF-doxygen/html/html/search/classes_f.js +25 -25
- package/SVF-doxygen/html/html/search/defines_0.js +3 -3
- package/SVF-doxygen/html/html/search/defines_1.js +2 -2
- package/SVF-doxygen/html/html/search/defines_2.js +30 -30
- package/SVF-doxygen/html/html/search/defines_3.js +20 -20
- package/SVF-doxygen/html/html/search/defines_4.js +3 -3
- package/SVF-doxygen/html/html/search/defines_5.js +4 -4
- package/SVF-doxygen/html/html/search/defines_6.js +2 -2
- package/SVF-doxygen/html/html/search/defines_7.js +5 -5
- package/SVF-doxygen/html/html/search/defines_8.js +13 -13
- package/SVF-doxygen/html/html/search/defines_9.js +9 -9
- package/SVF-doxygen/html/html/search/defines_a.js +2 -2
- package/SVF-doxygen/html/html/search/defines_b.js +1 -2
- package/SVF-doxygen/html/html/search/defines_c.js +2 -2
- package/SVF-doxygen/html/html/search/defines_d.js +2 -6
- package/SVF-doxygen/html/html/search/defines_e.js +6 -3
- package/SVF-doxygen/html/html/search/defines_f.html +6 -2
- package/SVF-doxygen/html/html/search/defines_f.js +3 -26
- package/SVF-doxygen/html/html/search/enums_0.js +3 -3
- package/SVF-doxygen/html/html/search/enums_1.js +2 -1
- package/SVF-doxygen/html/html/search/enums_10.js +1 -1
- package/SVF-doxygen/html/html/search/enums_11.js +1 -1
- package/SVF-doxygen/html/html/search/enums_2.js +8 -8
- package/SVF-doxygen/html/html/search/enums_3.js +1 -1
- package/SVF-doxygen/html/html/search/enums_4.js +4 -4
- package/SVF-doxygen/html/html/search/enums_5.js +1 -1
- package/SVF-doxygen/html/html/search/enums_6.js +2 -2
- package/SVF-doxygen/html/html/search/enums_7.js +2 -2
- package/SVF-doxygen/html/html/search/enums_8.js +4 -4
- package/SVF-doxygen/html/html/search/enums_9.js +1 -1
- package/SVF-doxygen/html/html/search/enums_a.js +2 -2
- package/SVF-doxygen/html/html/search/enums_b.js +7 -7
- package/SVF-doxygen/html/html/search/enums_c.js +1 -1
- package/SVF-doxygen/html/html/search/enums_d.js +4 -4
- package/SVF-doxygen/html/html/search/enums_e.js +2 -2
- package/SVF-doxygen/html/html/search/enums_f.js +4 -4
- package/SVF-doxygen/html/html/search/enumvalues_0.js +14 -14
- package/SVF-doxygen/html/html/search/enumvalues_1.js +14 -13
- package/SVF-doxygen/html/html/search/enumvalues_10.js +35 -35
- package/SVF-doxygen/html/html/search/enumvalues_11.js +3 -3
- package/SVF-doxygen/html/html/search/enumvalues_12.js +10 -10
- package/SVF-doxygen/html/html/search/enumvalues_13.js +1 -1
- package/SVF-doxygen/html/html/search/enumvalues_14.js +1 -1
- package/SVF-doxygen/html/html/search/enumvalues_15.js +3 -3
- package/SVF-doxygen/html/html/search/enumvalues_2.js +40 -40
- package/SVF-doxygen/html/html/search/enumvalues_3.js +13 -13
- package/SVF-doxygen/html/html/search/enumvalues_4.js +34 -34
- package/SVF-doxygen/html/html/search/enumvalues_5.js +48 -48
- package/SVF-doxygen/html/html/search/enumvalues_6.js +6 -6
- package/SVF-doxygen/html/html/search/enumvalues_7.js +9 -9
- package/SVF-doxygen/html/html/search/enumvalues_8.js +23 -23
- package/SVF-doxygen/html/html/search/enumvalues_9.js +6 -6
- package/SVF-doxygen/html/html/search/enumvalues_a.js +17 -17
- package/SVF-doxygen/html/html/search/enumvalues_b.js +11 -11
- package/SVF-doxygen/html/html/search/enumvalues_c.js +6 -6
- package/SVF-doxygen/html/html/search/enumvalues_d.js +18 -17
- package/SVF-doxygen/html/html/search/enumvalues_e.js +11 -11
- package/SVF-doxygen/html/html/search/enumvalues_f.js +45 -45
- package/SVF-doxygen/html/html/search/files_0.js +13 -13
- package/SVF-doxygen/html/html/search/files_1.js +7 -7
- package/SVF-doxygen/html/html/search/files_10.js +8 -8
- package/SVF-doxygen/html/html/search/files_11.js +8 -8
- package/SVF-doxygen/html/html/search/files_12.js +2 -2
- package/SVF-doxygen/html/html/search/files_2.js +49 -50
- package/SVF-doxygen/html/html/search/files_3.js +14 -14
- package/SVF-doxygen/html/html/search/files_4.js +4 -4
- package/SVF-doxygen/html/html/search/files_5.js +13 -13
- package/SVF-doxygen/html/html/search/files_6.js +9 -9
- package/SVF-doxygen/html/html/search/files_7.js +14 -14
- package/SVF-doxygen/html/html/search/files_8.js +13 -13
- package/SVF-doxygen/html/html/search/files_9.js +18 -18
- package/SVF-doxygen/html/html/search/files_a.js +3 -3
- package/SVF-doxygen/html/html/search/files_b.js +2 -2
- package/SVF-doxygen/html/html/search/files_c.js +20 -19
- package/SVF-doxygen/html/html/search/files_d.js +4 -4
- package/SVF-doxygen/html/html/search/files_e.js +62 -62
- package/SVF-doxygen/html/html/search/files_f.js +8 -8
- package/SVF-doxygen/html/html/search/functions_0.js +351 -351
- package/SVF-doxygen/html/html/search/functions_1.js +81 -80
- package/SVF-doxygen/html/html/search/functions_10.js +121 -121
- package/SVF-doxygen/html/html/search/functions_11.js +281 -281
- package/SVF-doxygen/html/html/search/functions_12.js +55 -55
- package/SVF-doxygen/html/html/search/functions_13.js +38 -38
- package/SVF-doxygen/html/html/search/functions_14.js +71 -71
- package/SVF-doxygen/html/html/search/functions_15.js +29 -29
- package/SVF-doxygen/html/html/search/functions_16.js +2 -2
- package/SVF-doxygen/html/html/search/functions_17.js +169 -169
- package/SVF-doxygen/html/html/search/functions_2.js +251 -251
- package/SVF-doxygen/html/html/search/functions_3.js +71 -71
- package/SVF-doxygen/html/html/search/functions_4.js +55 -55
- package/SVF-doxygen/html/html/search/functions_5.js +55 -55
- package/SVF-doxygen/html/html/search/functions_6.js +832 -832
- package/SVF-doxygen/html/html/search/functions_7.js +144 -144
- package/SVF-doxygen/html/html/search/functions_8.js +417 -417
- package/SVF-doxygen/html/html/search/functions_9.js +29 -29
- package/SVF-doxygen/html/html/search/functions_a.js +2 -2
- package/SVF-doxygen/html/html/search/functions_b.js +23 -23
- package/SVF-doxygen/html/html/search/functions_c.js +75 -75
- package/SVF-doxygen/html/html/search/functions_d.js +35 -35
- package/SVF-doxygen/html/html/search/functions_e.js +56 -56
- package/SVF-doxygen/html/html/search/functions_f.js +143 -143
- package/SVF-doxygen/html/html/search/namespaces_0.js +1 -1
- package/SVF-doxygen/html/html/search/namespaces_1.js +7 -7
- package/SVF-doxygen/html/html/search/related_0.js +2 -2
- package/SVF-doxygen/html/html/search/related_1.js +1 -1
- package/SVF-doxygen/html/html/search/related_2.js +2 -2
- package/SVF-doxygen/html/html/search/related_3.js +2 -2
- package/SVF-doxygen/html/html/search/related_4.js +2 -2
- package/SVF-doxygen/html/html/search/related_5.js +1 -1
- package/SVF-doxygen/html/html/search/related_6.js +2 -2
- package/SVF-doxygen/html/html/search/related_7.js +4 -4
- package/SVF-doxygen/html/html/search/related_8.js +2 -2
- package/SVF-doxygen/html/html/search/related_9.js +4 -4
- package/SVF-doxygen/html/html/search/related_a.js +19 -19
- package/SVF-doxygen/html/html/search/related_b.js +4 -4
- package/SVF-doxygen/html/html/search/related_c.js +1 -1
- package/SVF-doxygen/html/html/search/related_d.js +11 -11
- package/SVF-doxygen/html/html/search/related_e.js +2 -2
- package/SVF-doxygen/html/html/search/related_f.js +2 -2
- package/SVF-doxygen/html/html/search/searchdata.js +1 -1
- package/SVF-doxygen/html/html/search/typedefs_0.js +18 -18
- package/SVF-doxygen/html/html/search/typedefs_1.js +25 -25
- package/SVF-doxygen/html/html/search/typedefs_10.js +60 -60
- package/SVF-doxygen/html/html/search/typedefs_11.js +13 -13
- package/SVF-doxygen/html/html/search/typedefs_12.js +11 -11
- package/SVF-doxygen/html/html/search/typedefs_13.js +35 -35
- package/SVF-doxygen/html/html/search/typedefs_14.js +8 -8
- package/SVF-doxygen/html/html/search/typedefs_2.js +126 -126
- package/SVF-doxygen/html/html/search/typedefs_3.js +39 -39
- package/SVF-doxygen/html/html/search/typedefs_4.js +16 -16
- package/SVF-doxygen/html/html/search/typedefs_5.js +41 -41
- package/SVF-doxygen/html/html/search/typedefs_6.js +52 -52
- package/SVF-doxygen/html/html/search/typedefs_7.js +40 -40
- package/SVF-doxygen/html/html/search/typedefs_8.js +1 -1
- package/SVF-doxygen/html/html/search/typedefs_9.js +6 -6
- package/SVF-doxygen/html/html/search/typedefs_a.js +29 -29
- package/SVF-doxygen/html/html/search/typedefs_b.js +29 -29
- package/SVF-doxygen/html/html/search/typedefs_c.js +40 -40
- package/SVF-doxygen/html/html/search/typedefs_d.js +15 -15
- package/SVF-doxygen/html/html/search/typedefs_e.js +52 -52
- package/SVF-doxygen/html/html/search/typedefs_f.js +14 -14
- package/SVF-doxygen/html/html/search/variables_0.js +147 -146
- package/SVF-doxygen/html/html/search/variables_1.js +74 -74
- package/SVF-doxygen/html/html/search/variables_10.js +97 -97
- package/SVF-doxygen/html/html/search/variables_11.js +46 -46
- package/SVF-doxygen/html/html/search/variables_12.js +93 -93
- package/SVF-doxygen/html/html/search/variables_13.js +77 -77
- package/SVF-doxygen/html/html/search/variables_14.js +14 -14
- package/SVF-doxygen/html/html/search/variables_15.js +48 -48
- package/SVF-doxygen/html/html/search/variables_16.js +9 -9
- package/SVF-doxygen/html/html/search/variables_17.js +1 -1
- package/SVF-doxygen/html/html/search/variables_18.js +2 -2
- package/SVF-doxygen/html/html/search/variables_2.js +35 -35
- package/SVF-doxygen/html/html/search/variables_3.js +148 -148
- package/SVF-doxygen/html/html/search/variables_4.js +56 -56
- package/SVF-doxygen/html/html/search/variables_5.js +40 -40
- package/SVF-doxygen/html/html/search/variables_6.js +67 -67
- package/SVF-doxygen/html/html/search/variables_7.js +33 -33
- package/SVF-doxygen/html/html/search/variables_8.js +7 -7
- package/SVF-doxygen/html/html/search/variables_9.js +77 -77
- package/SVF-doxygen/html/html/search/variables_a.js +4 -4
- package/SVF-doxygen/html/html/search/variables_b.js +10 -10
- package/SVF-doxygen/html/html/search/variables_c.js +45 -45
- package/SVF-doxygen/html/html/search/variables_d.js +56 -56
- package/SVF-doxygen/html/html/search/variables_e.js +123 -123
- package/SVF-doxygen/html/html/search/variables_f.js +33 -33
- package/SVF-doxygen/html/html/structSVF_1_1GrammarBase_1_1Symbol.html +25 -25
- package/SVF-doxygen/html/html/structSVF_1_1GrammarBase_1_1SymbolVectorHash.html +4 -4
- package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1BoundedZ3Expr_01_4.html +5 -5
- package/package.json +1 -1
- package/svf/include/AbstractExecution/BoundedZ3Expr.h +8 -12
- package/svf/include/CFL/CFGNormalizer.h +11 -11
- package/svf/include/CFL/{CFLGrammar.h → CFGrammar.h} +5 -5
- package/svf/include/CFL/CFLAlias.h +2 -2
- package/svf/include/CFL/CFLBase.h +2 -2
- package/svf/include/CFL/CFLGramGraphChecker.h +1 -1
- package/svf/include/CFL/CFLGraphBuilder.h +30 -81
- package/svf/include/CFL/CFLSolver.h +8 -8
- package/svf/include/CFL/GrammarBuilder.h +1 -1
- package/svf/include/Graphs/CFLGraph.h +3 -3
- package/svf/lib/CFL/CFGNormalizer.cpp +11 -11
- package/svf/lib/CFL/{CFLGrammar.cpp → CFGrammar.cpp} +7 -7
- package/svf/lib/CFL/CFLBase.cpp +5 -11
- package/svf/lib/CFL/CFLGraphBuilder.cpp +125 -74
- package/svf/lib/CFL/CFLVF.cpp +2 -2
- /package/svf/include/CFL/{CFLGrammar.txt → grammar/PAGGrammar.txt} +0 -0
- /package/svf/include/CFL/{PEGGrammar.txt → grammar/PEGGrammar.txt} +0 -0
- /package/svf/include/CFL/{VFG.txt → grammar/VFGGrammar.txt} +0 -0
|
@@ -30,37 +30,43 @@
|
|
|
30
30
|
#ifndef INCLUDE_CFL_CFLGRAPHBUILDER_H_
|
|
31
31
|
#define INCLUDE_CFL_CFLGRAPHBUILDER_H_
|
|
32
32
|
|
|
33
|
-
#include "CFL/
|
|
33
|
+
#include "CFL/CFGrammar.h"
|
|
34
34
|
#include "Graphs/CFLGraph.h"
|
|
35
35
|
#include "Graphs/SVFG.h"
|
|
36
36
|
|
|
37
37
|
namespace SVF
|
|
38
38
|
{
|
|
39
39
|
|
|
40
|
+
enum class BuildDirection
|
|
41
|
+
{
|
|
42
|
+
plain,
|
|
43
|
+
bidirection,
|
|
44
|
+
};
|
|
45
|
+
|
|
40
46
|
/**
|
|
41
47
|
* CFLGraphBuilder class is responsible for building CFL (Context-Free Language) graphs
|
|
42
|
-
* from text files
|
|
48
|
+
* from text files, dot files, json file or from memory graph.
|
|
43
49
|
*/
|
|
44
50
|
class CFLGraphBuilder
|
|
45
51
|
{
|
|
46
52
|
protected:
|
|
47
|
-
/// Define Kind(Not contain attribute) and Symbol(May contain attribute) as types derived from
|
|
53
|
+
/// Define Kind(Not contain attribute) and Symbol(May contain attribute) as types derived from CFGrammar
|
|
48
54
|
/// to numerically represent label
|
|
49
|
-
typedef
|
|
50
|
-
typedef
|
|
55
|
+
typedef CFGrammar::Kind Kind;
|
|
56
|
+
typedef CFGrammar::Symbol Symbol;
|
|
51
57
|
|
|
52
58
|
/// Maps to maintain mapping between labels and kinds
|
|
53
59
|
Map<std::string, Kind> labelToKindMap;
|
|
54
60
|
Map<Kind, std::string> kindToLabelMap;
|
|
55
61
|
|
|
56
62
|
/// Map to maintain attributes associated with each kind
|
|
57
|
-
Map<
|
|
63
|
+
Map<CFGrammar::Kind, Set<CFGrammar::Attribute>> kindToAttrsMap;
|
|
58
64
|
|
|
59
65
|
Kind current;
|
|
60
66
|
CFLGraph *cflGraph;
|
|
61
67
|
|
|
62
68
|
/// Method to add an attribute to a specific kind
|
|
63
|
-
void addAttribute(
|
|
69
|
+
void addAttribute(CFGrammar::Kind kind, CFGrammar::Attribute attribute);
|
|
64
70
|
|
|
65
71
|
/// build label and kind connect from the grammar
|
|
66
72
|
void buildlabelToKindMap(GrammarBase *grammar);
|
|
@@ -68,80 +74,23 @@ protected:
|
|
|
68
74
|
/// add src and dst node from file
|
|
69
75
|
CFLNode* addGNode(u32_t NodeID);
|
|
70
76
|
|
|
77
|
+
/// Method to build a CFL graph from a Text file
|
|
78
|
+
CFLGraph* buildFromText(std::string fileName, GrammarBase *grammar, BuildDirection direction = BuildDirection::plain);
|
|
79
|
+
|
|
80
|
+
/// Method to build a CFL graph from a Dot file
|
|
81
|
+
CFLGraph *buildFromDot(std::string filename, GrammarBase *grammar, BuildDirection direction = BuildDirection::plain);
|
|
82
|
+
|
|
83
|
+
/// Method to build a CFL graph from a Json file
|
|
84
|
+
CFLGraph *buildFromJson(std::string filename, GrammarBase *grammar, BuildDirection direction = BuildDirection::plain);
|
|
85
|
+
|
|
71
86
|
public:
|
|
72
87
|
/// Method to build a CFL graph by copying nodes and edges from any graph
|
|
73
88
|
/// inherited from GenericGraph
|
|
74
89
|
template<class N, class E>
|
|
75
|
-
|
|
76
|
-
{
|
|
77
|
-
for(auto it = graph->begin(); it!= graph->end(); it++)
|
|
78
|
-
{
|
|
79
|
-
CFLNode* node = new CFLNode((*it).first);
|
|
80
|
-
cflGraph->addCFLNode((*it).first, node);
|
|
81
|
-
}
|
|
82
|
-
for(auto it = graph->begin(); it!= graph->end(); it++)
|
|
83
|
-
{
|
|
84
|
-
N* node = (*it).second;
|
|
85
|
-
for(E* edge : node->getOutEdges())
|
|
86
|
-
{
|
|
87
|
-
cflGraph->addCFLEdge(cflGraph->getGNode(edge->getSrcID()), cflGraph->getGNode(edge->getDstID()), edge->getEdgeKind());
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
/// Method to build a bidirectional CFL graph by copying nodes and edges
|
|
93
|
-
/// from any graph inherited from GenericGraph
|
|
94
|
-
template<class N, class E>
|
|
95
|
-
CFLGraph* buildBigraph(GenericGraph<N,E>* graph, Kind startKind, GrammarBase *grammar)
|
|
96
|
-
{
|
|
97
|
-
CFLGraph *cflGraph = new CFLGraph(startKind);
|
|
98
|
-
for(auto pairV : grammar->getTerminals())
|
|
99
|
-
{
|
|
100
|
-
if(labelToKindMap.find(pairV.first) == labelToKindMap.end())
|
|
101
|
-
{
|
|
102
|
-
labelToKindMap.insert(pairV);
|
|
103
|
-
}
|
|
104
|
-
if(kindToLabelMap.find(pairV.second) == kindToLabelMap.end())
|
|
105
|
-
{
|
|
106
|
-
kindToLabelMap.insert(make_pair(pairV.second, pairV.first));
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
for(auto pairV : grammar->getNonterminals())
|
|
110
|
-
{
|
|
111
|
-
if(labelToKindMap.find(pairV.first) == labelToKindMap.end())
|
|
112
|
-
{
|
|
113
|
-
labelToKindMap.insert(pairV);
|
|
114
|
-
}
|
|
115
|
-
if(kindToLabelMap.find(pairV.second) == kindToLabelMap.end())
|
|
116
|
-
{
|
|
117
|
-
kindToLabelMap.insert(make_pair(pairV.second, pairV.first));
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
for(auto it = graph->begin(); it!= graph->end(); it++)
|
|
121
|
-
{
|
|
122
|
-
CFLNode* node = new CFLNode((*it).first);
|
|
123
|
-
cflGraph->addCFLNode((*it).first, node);
|
|
124
|
-
}
|
|
125
|
-
for(auto it = graph->begin(); it!= graph->end(); it++)
|
|
126
|
-
{
|
|
127
|
-
N* node = (*it).second;
|
|
128
|
-
for(E* edge : node->getOutEdges())
|
|
129
|
-
{
|
|
130
|
-
CFLGrammar::Kind edgeLabel = edge->getEdgeKind();
|
|
131
|
-
cflGraph->addCFLEdge(cflGraph->getGNode(edge->getSrcID()), cflGraph->getGNode(edge->getDstID()), edgeLabel);
|
|
132
|
-
std::string key = kindToLabelMap[edge->getEdgeKind()];
|
|
133
|
-
key.append("bar");
|
|
134
|
-
cflGraph->addCFLEdge(cflGraph->getGNode(edge->getDstID()), cflGraph->getGNode(edge->getSrcID()), labelToKindMap[key]);
|
|
135
|
-
}
|
|
136
|
-
}
|
|
137
|
-
return cflGraph;
|
|
138
|
-
}
|
|
139
|
-
|
|
140
|
-
/// Method to build a CFL graph from a Dot file
|
|
141
|
-
CFLGraph *buildFromDot(std::string filename, GrammarBase *grammar);
|
|
90
|
+
CFLGraph* build(GenericGraph<N,E>* graph, GrammarBase *grammar, BuildDirection direction = BuildDirection::plain);
|
|
142
91
|
|
|
143
|
-
/// Method to build a CFL graph from
|
|
144
|
-
CFLGraph*
|
|
92
|
+
/// Method to build a CFL graph from external file
|
|
93
|
+
CFLGraph* build(std::string fileName, GrammarBase *grammar, BuildDirection direction = BuildDirection::plain);
|
|
145
94
|
|
|
146
95
|
/// @{
|
|
147
96
|
/// Getter methods for accessing class variables
|
|
@@ -159,7 +108,7 @@ public:
|
|
|
159
108
|
}
|
|
160
109
|
|
|
161
110
|
/// Returns a reference to the map that associates Kinds with their corresponding attributes
|
|
162
|
-
Map<
|
|
111
|
+
Map<CFGrammar::Kind, Set<CFGrammar::Attribute>>& getKindToAttrsMap()
|
|
163
112
|
{
|
|
164
113
|
return this->kindToAttrsMap;
|
|
165
114
|
}
|
|
@@ -183,10 +132,10 @@ private:
|
|
|
183
132
|
void connectVGep(CFLGraph *cflGraph, ConstraintGraph *graph, ConstraintNode *src, ConstraintNode *dst, u32_t level, SVFIR* pag);
|
|
184
133
|
|
|
185
134
|
/// Handles edges, with the exception of the GEP
|
|
186
|
-
void addBiCFLEdge(CFLGraph *cflGraph, ConstraintNode* src, ConstraintNode* dst,
|
|
135
|
+
void addBiCFLEdge(CFLGraph *cflGraph, ConstraintNode* src, ConstraintNode* dst, CFGrammar::Kind label);
|
|
187
136
|
|
|
188
137
|
/// Adds bidirectional GEP edges with attributes
|
|
189
|
-
void addBiGepCFLEdge(CFLGraph *cflGraph, ConstraintNode* src, ConstraintNode* dst,
|
|
138
|
+
void addBiGepCFLEdge(CFLGraph *cflGraph, ConstraintNode* src, ConstraintNode* dst, CFGrammar::Attribute attri);
|
|
190
139
|
};
|
|
191
140
|
|
|
192
141
|
/// VFCFLGraphBuilder: a CFLGraphBuilder specialized for handling value-flow
|
|
@@ -205,10 +154,10 @@ private:
|
|
|
205
154
|
void connectVGep(CFLGraph *cflGraph, ConstraintGraph *graph, ConstraintNode *src, ConstraintNode *dst, u32_t level, SVFIR* pag);
|
|
206
155
|
|
|
207
156
|
/// Handles edges, with the exception of the GEP
|
|
208
|
-
void addBiCFLEdge(CFLGraph *cflGraph, ConstraintNode* src, ConstraintNode* dst,
|
|
157
|
+
void addBiCFLEdge(CFLGraph *cflGraph, ConstraintNode* src, ConstraintNode* dst, CFGrammar::Kind label);
|
|
209
158
|
|
|
210
159
|
/// Adds bidirectional GEP edges with attributes
|
|
211
|
-
void addBiGepCFLEdge(CFLGraph *cflGraph, ConstraintNode* src, ConstraintNode* dst,
|
|
160
|
+
void addBiGepCFLEdge(CFLGraph *cflGraph, ConstraintNode* src, ConstraintNode* dst, CFGrammar::Attribute attri);
|
|
212
161
|
};
|
|
213
162
|
|
|
214
163
|
|
|
@@ -31,7 +31,7 @@
|
|
|
31
31
|
#define INCLUDE_CFL_CFLSolver_H_
|
|
32
32
|
|
|
33
33
|
#include "Graphs/CFLGraph.h"
|
|
34
|
-
#include "CFL/
|
|
34
|
+
#include "CFL/CFGrammar.h"
|
|
35
35
|
#include "Util/WorkList.h"
|
|
36
36
|
|
|
37
37
|
using namespace std;
|
|
@@ -46,12 +46,12 @@ class CFLSolver
|
|
|
46
46
|
public:
|
|
47
47
|
/// Define worklist
|
|
48
48
|
typedef FIFOWorkList<const CFLEdge*> WorkList;
|
|
49
|
-
typedef
|
|
50
|
-
typedef
|
|
49
|
+
typedef CFGrammar::Production Production;
|
|
50
|
+
typedef CFGrammar::Symbol Symbol;
|
|
51
51
|
|
|
52
52
|
static double numOfChecks;
|
|
53
53
|
|
|
54
|
-
CFLSolver(CFLGraph* _graph,
|
|
54
|
+
CFLSolver(CFLGraph* _graph, CFGrammar* _grammar): graph(_graph), grammar(_grammar)
|
|
55
55
|
{
|
|
56
56
|
}
|
|
57
57
|
|
|
@@ -77,7 +77,7 @@ public:
|
|
|
77
77
|
}
|
|
78
78
|
|
|
79
79
|
/// Return CFL Grammar
|
|
80
|
-
inline const
|
|
80
|
+
inline const CFGrammar* getGrammar() const
|
|
81
81
|
{
|
|
82
82
|
return grammar;
|
|
83
83
|
}
|
|
@@ -106,7 +106,7 @@ protected:
|
|
|
106
106
|
|
|
107
107
|
protected:
|
|
108
108
|
CFLGraph* graph;
|
|
109
|
-
|
|
109
|
+
CFGrammar* grammar;
|
|
110
110
|
/// Worklist for resolution
|
|
111
111
|
WorkList worklist;
|
|
112
112
|
|
|
@@ -266,7 +266,7 @@ public:
|
|
|
266
266
|
}
|
|
267
267
|
//@}
|
|
268
268
|
|
|
269
|
-
POCRSolver(CFLGraph* _graph,
|
|
269
|
+
POCRSolver(CFLGraph* _graph, CFGrammar* _grammar) : CFLSolver(_graph, _grammar)
|
|
270
270
|
{
|
|
271
271
|
buildCFLData();
|
|
272
272
|
}
|
|
@@ -344,7 +344,7 @@ public:
|
|
|
344
344
|
void meld_h(NodeID x, TreeNode* uNode, TreeNode* vNode);
|
|
345
345
|
//@}
|
|
346
346
|
public:
|
|
347
|
-
POCRHybridSolver(CFLGraph* _graph,
|
|
347
|
+
POCRHybridSolver(CFLGraph* _graph, CFGrammar* _grammar) : POCRSolver(_graph, _grammar)
|
|
348
348
|
{
|
|
349
349
|
}
|
|
350
350
|
/// Destructor
|
|
@@ -34,7 +34,7 @@
|
|
|
34
34
|
#include <iostream>
|
|
35
35
|
#include <string>
|
|
36
36
|
#include <regex>
|
|
37
|
-
#include "CFL/
|
|
37
|
+
#include "CFL/CFGrammar.h"
|
|
38
38
|
#include "Graphs/GenericGraph.h"
|
|
39
39
|
#include "Graphs/ConsG.h"
|
|
40
40
|
|
|
@@ -155,8 +155,8 @@ typedef GenericGraph<CFLNode,CFLEdge> GenericCFLGraphTy;
|
|
|
155
155
|
class CFLGraph: public GenericCFLGraphTy
|
|
156
156
|
{
|
|
157
157
|
public:
|
|
158
|
-
typedef
|
|
159
|
-
typedef
|
|
158
|
+
typedef CFGrammar::Symbol Symbol;
|
|
159
|
+
typedef CFGrammar::Kind Kind;
|
|
160
160
|
typedef GenericNode<CFLNode,CFLEdge>::GEdgeSetTy CFLEdgeSet;
|
|
161
161
|
Kind startKind;
|
|
162
162
|
|
|
@@ -39,9 +39,9 @@
|
|
|
39
39
|
|
|
40
40
|
using namespace SVF;
|
|
41
41
|
|
|
42
|
-
|
|
42
|
+
CFGrammar* CFGNormalizer::normalize(GrammarBase *generalGrammar)
|
|
43
43
|
{
|
|
44
|
-
|
|
44
|
+
CFGrammar *grammar = new CFGrammar();
|
|
45
45
|
grammar->setStartKind(generalGrammar->getStartKind());
|
|
46
46
|
grammar->setTerminals(generalGrammar->getTerminals());
|
|
47
47
|
grammar->setNonterminals(generalGrammar->getNonterminals());
|
|
@@ -59,7 +59,7 @@ CFLGrammar* CFGNormalizer::normalize(GrammarBase *generalGrammar)
|
|
|
59
59
|
}
|
|
60
60
|
|
|
61
61
|
|
|
62
|
-
|
|
62
|
+
CFGrammar* CFGNormalizer::fillAttribute(CFGrammar *grammar, const Map<CFGrammar::Kind, Set<CFGrammar::Attribute>>& kindToAttrsMap)
|
|
63
63
|
{
|
|
64
64
|
NodeSet nodeSet = {};
|
|
65
65
|
for (auto pair: kindToAttrsMap)
|
|
@@ -89,7 +89,7 @@ CFLGrammar* CFGNormalizer::fillAttribute(CFLGrammar *grammar, const Map<CFLGramm
|
|
|
89
89
|
return grammar;
|
|
90
90
|
}
|
|
91
91
|
|
|
92
|
-
void CFGNormalizer::ebnf_bin(
|
|
92
|
+
void CFGNormalizer::ebnf_bin(CFGrammar *grammar)
|
|
93
93
|
{
|
|
94
94
|
GrammarBase::SymbolMap<GrammarBase::Symbol, GrammarBase::Productions> new_grammar = {};
|
|
95
95
|
std::string tempStr = "";
|
|
@@ -221,7 +221,7 @@ void CFGNormalizer::ebnf_bin(CFLGrammar *grammar)
|
|
|
221
221
|
///and expand to productions set
|
|
222
222
|
///e.g Xi -> Y Zi with Xi i = 0, 1, Yi i = 0,2
|
|
223
223
|
///Will get {X0 -> Y Z0, X1 -> Y Z1, X2 -> Y Z2}
|
|
224
|
-
void CFGNormalizer::getFilledProductions(GrammarBase::Production &prod, const NodeSet& nodeSet,
|
|
224
|
+
void CFGNormalizer::getFilledProductions(GrammarBase::Production &prod, const NodeSet& nodeSet, CFGrammar *grammar, GrammarBase::Productions& normalProds)
|
|
225
225
|
{
|
|
226
226
|
normalProds.clear();
|
|
227
227
|
CFLFIFOWorkList<GrammarBase::Production> worklist;
|
|
@@ -279,7 +279,7 @@ void CFGNormalizer::getFilledProductions(GrammarBase::Production &prod, const No
|
|
|
279
279
|
}
|
|
280
280
|
}
|
|
281
281
|
|
|
282
|
-
int CFGNormalizer::ebnfBracketMatch(GrammarBase::Production &prod, int i,
|
|
282
|
+
int CFGNormalizer::ebnfBracketMatch(GrammarBase::Production &prod, int i, CFGrammar *grammar)
|
|
283
283
|
{
|
|
284
284
|
int index = i;
|
|
285
285
|
while (index >= 0)
|
|
@@ -293,7 +293,7 @@ int CFGNormalizer::ebnfBracketMatch(GrammarBase::Production &prod, int i, CFLGra
|
|
|
293
293
|
return 0;
|
|
294
294
|
}
|
|
295
295
|
|
|
296
|
-
void CFGNormalizer::barReplace(
|
|
296
|
+
void CFGNormalizer::barReplace(CFGrammar *grammar)
|
|
297
297
|
{
|
|
298
298
|
for (auto &symbolToProductionsPair : grammar->getRawProductions())
|
|
299
299
|
{
|
|
@@ -323,7 +323,7 @@ void CFGNormalizer::barReplace(CFLGrammar *grammar)
|
|
|
323
323
|
}
|
|
324
324
|
}
|
|
325
325
|
|
|
326
|
-
void CFGNormalizer::ebnfSignReplace(char sign,
|
|
326
|
+
void CFGNormalizer::ebnfSignReplace(char sign, CFGrammar *grammar)
|
|
327
327
|
{
|
|
328
328
|
/// Replace Sign Group With tempNonterminal 'X'
|
|
329
329
|
/// And load the replace in newProductions
|
|
@@ -435,7 +435,7 @@ void CFGNormalizer::ebnfSignReplace(char sign, CFLGrammar *grammar)
|
|
|
435
435
|
}
|
|
436
436
|
}
|
|
437
437
|
|
|
438
|
-
void CFGNormalizer::strTrans(std::string LHS,
|
|
438
|
+
void CFGNormalizer::strTrans(std::string LHS, CFGrammar *grammar, GrammarBase::Production& normalProd)
|
|
439
439
|
{
|
|
440
440
|
std::smatch matches;
|
|
441
441
|
std::regex LHSReg("\\s*(.*)");
|
|
@@ -471,7 +471,7 @@ GrammarBase::Symbol CFGNormalizer::check_head(GrammarBase::SymbolMap<GrammarBase
|
|
|
471
471
|
}
|
|
472
472
|
|
|
473
473
|
/// Based on prod size to add on suitable member field of grammar
|
|
474
|
-
void CFGNormalizer::insertToCFLGrammar(
|
|
474
|
+
void CFGNormalizer::insertToCFLGrammar(CFGrammar *grammar, GrammarBase::Production &prod)
|
|
475
475
|
{
|
|
476
476
|
if (prod.size() == 2)
|
|
477
477
|
{
|
|
@@ -494,7 +494,7 @@ void CFGNormalizer::insertToCFLGrammar(CFLGrammar *grammar, GrammarBase::Product
|
|
|
494
494
|
}
|
|
495
495
|
}
|
|
496
496
|
|
|
497
|
-
void CFGNormalizer::removeFirstSymbol(
|
|
497
|
+
void CFGNormalizer::removeFirstSymbol(CFGrammar *grammar)
|
|
498
498
|
{
|
|
499
499
|
// Remove First Terminal
|
|
500
500
|
for(auto head : grammar->getRawProductions())
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
//===-----
|
|
1
|
+
//===----- CFGrammar.cpp -- Context-free grammar --------------------------//
|
|
2
2
|
//
|
|
3
3
|
// SVF: Static Value-Flow Analysis
|
|
4
4
|
//
|
|
@@ -21,13 +21,13 @@
|
|
|
21
21
|
//===----------------------------------------------------------------------===//
|
|
22
22
|
|
|
23
23
|
/*
|
|
24
|
-
*
|
|
24
|
+
* CFGrammar.cpp
|
|
25
25
|
*
|
|
26
26
|
* Created on: March 5, 2022
|
|
27
27
|
* Author: Yulei Sui
|
|
28
28
|
*/
|
|
29
29
|
|
|
30
|
-
#include "CFL/
|
|
30
|
+
#include "CFL/CFGrammar.h"
|
|
31
31
|
#include "Util/SVFUtil.h"
|
|
32
32
|
#include <string>
|
|
33
33
|
#include <iostream>
|
|
@@ -333,22 +333,22 @@ void GrammarBase::insertAttribute(Kind kind, Attribute attribute)
|
|
|
333
333
|
}
|
|
334
334
|
else
|
|
335
335
|
{
|
|
336
|
-
Set<
|
|
336
|
+
Set<CFGrammar::Attribute> attrs {attribute};
|
|
337
337
|
kindToAttrsMap.insert(make_pair(kind, attrs));
|
|
338
338
|
}
|
|
339
339
|
}
|
|
340
340
|
|
|
341
|
-
|
|
341
|
+
CFGrammar::CFGrammar()
|
|
342
342
|
{
|
|
343
343
|
newTerminalSubscript = 0;
|
|
344
344
|
}
|
|
345
345
|
|
|
346
|
-
void
|
|
346
|
+
void CFGrammar::dump() const
|
|
347
347
|
{
|
|
348
348
|
dump("Normailized_Grammar.txt");
|
|
349
349
|
}
|
|
350
350
|
|
|
351
|
-
void
|
|
351
|
+
void CFGrammar::dump(std::string fileName) const
|
|
352
352
|
{
|
|
353
353
|
std::ofstream gramFile(fileName);
|
|
354
354
|
gramFile << "Start Kind:\n";
|
package/svf/lib/CFL/CFLBase.cpp
CHANGED
|
@@ -50,12 +50,13 @@ void CFLBase::checkParameter()
|
|
|
50
50
|
{
|
|
51
51
|
// Check for valid grammar file before parsing other options
|
|
52
52
|
std::string filename = Options::GrammarFilename();
|
|
53
|
-
bool
|
|
53
|
+
bool pagfile = (filename.rfind("PAGGrammar.txt") == filename.length() - std::string("PAGGrammar.txt").length());
|
|
54
54
|
bool pegfile = (filename.rfind("PEGGrammar.txt") == filename.length() - std::string("PEGGrammar.txt").length());
|
|
55
|
-
|
|
55
|
+
bool vfgfile = (filename.rfind("VFGGrammar.txt") == filename.length() - std::string("VFGGrammar.txt").length());
|
|
56
|
+
if (!Options::Customized() && !(pagfile || pegfile || vfgfile))
|
|
56
57
|
{
|
|
57
58
|
SVFUtil::errs() << "Invalid alias grammar file: " << Options::GrammarFilename() << "\n"
|
|
58
|
-
<< "Please use a file that ends with either '
|
|
59
|
+
<< "Please use a file that ends with either 'CFGrammar.txt' or 'PEGGrammar.txt', "
|
|
59
60
|
<< "or use the -customized flag to allow custom grammar files.\n";
|
|
60
61
|
assert(false && "grammar loading failed!"); // exit with error
|
|
61
62
|
}
|
|
@@ -91,14 +92,7 @@ void CFLBase::buildCFLGraph()
|
|
|
91
92
|
delete consCG;
|
|
92
93
|
}
|
|
93
94
|
else
|
|
94
|
-
|
|
95
|
-
std::string fileName = Options::CFLGraph();
|
|
96
|
-
bool dotfile = (fileName.rfind(".dot") == fileName.length() - std::string("dot").length());
|
|
97
|
-
if (dotfile)
|
|
98
|
-
graph = cflGraphBuilder.buildFromDot(Options::CFLGraph(), grammarBase);
|
|
99
|
-
else
|
|
100
|
-
graph = cflGraphBuilder.buildFromTextFile(Options::CFLGraph(), grammarBase);
|
|
101
|
-
}
|
|
95
|
+
graph = cflGraphBuilder.build(Options::CFLGraph(), grammarBase);
|
|
102
96
|
// Check CFL Graph and Grammar are accordance with grammar
|
|
103
97
|
CFLGramGraphChecker cflChecker = CFLGramGraphChecker();
|
|
104
98
|
cflChecker.check(grammarBase, &cflGraphBuilder, graph);
|