svf-tools 1.0.477 → 1.0.480
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/Andersen_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/Andersen_8h_source.html +1 -1
- package/SVF-doxygen/html/html/BreakConstantExpr_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/CFGNormalizer_8cpp.html +5 -4
- package/SVF-doxygen/html/html/CFGNormalizer_8cpp_source.html +50 -40
- package/SVF-doxygen/html/html/CFGNormalizer_8h_source.html +20 -18
- package/SVF-doxygen/html/html/CFLAlias_8cpp.html +80 -0
- package/SVF-doxygen/html/html/CFLAlias_8cpp_source.html +107 -0
- package/SVF-doxygen/html/html/CFLAlias_8h_source.html +14 -35
- package/SVF-doxygen/html/html/CFLGramGraphChecker_8h_source.html +10 -10
- package/SVF-doxygen/html/html/CFLGrammar_8cpp.html +1 -0
- package/SVF-doxygen/html/html/CFLGrammar_8cpp_source.html +34 -23
- package/SVF-doxygen/html/html/CFLGrammar_8h.html +9 -1
- package/SVF-doxygen/html/html/CFLGrammar_8h_source.html +106 -62
- package/SVF-doxygen/html/html/CFLGrammar_8txt.html +58 -151
- package/SVF-doxygen/html/html/CFLGraphBuilder_8cpp_source.html +24 -11
- package/SVF-doxygen/html/html/CFLGraphBuilder_8h.html +2 -0
- package/SVF-doxygen/html/html/CFLGraphBuilder_8h_source.html +18 -19
- package/SVF-doxygen/html/html/CFLGraph_8cpp_source.html +27 -16
- package/SVF-doxygen/html/html/CFLGraph_8h_source.html +20 -16
- package/SVF-doxygen/html/html/CFLSolver_8cpp_source.html +14 -14
- package/SVF-doxygen/html/html/CFLSolver_8h_source.html +5 -5
- package/SVF-doxygen/html/html/CHGBuilder_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/CHGBuilder_8h_source.html +1 -1
- package/SVF-doxygen/html/html/CHG_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/CHG_8h_source.html +1 -1
- package/SVF-doxygen/html/html/CPPUtil_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/CPPUtil_8h.html +4 -4
- package/SVF-doxygen/html/html/CallGraphBuilder_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/CallGraphBuilder_8h_source.html +1 -1
- package/SVF-doxygen/html/html/ConsGEdge_8h_source.html +7 -7
- package/SVF-doxygen/html/html/ConsGNode_8h_source.html +5 -5
- package/SVF-doxygen/html/html/ConsG_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/ConsG_8h_source.html +2 -2
- package/SVF-doxygen/html/html/DCHG_8h_source.html +1 -1
- package/SVF-doxygen/html/html/DataFlowUtil_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/ExtAPI_8cpp_source.html +36 -32
- package/SVF-doxygen/html/html/ExtAPI_8h.html +36 -0
- package/SVF-doxygen/html/html/ExtAPI_8h_source.html +66 -64
- package/SVF-doxygen/html/html/GEPTypeBridgeIterator_8h_source.html +1 -1
- package/SVF-doxygen/html/html/GenericGraph_8h_source.html +1 -1
- package/SVF-doxygen/html/html/GrammarBuilder_8cpp_source.html +14 -17
- package/SVF-doxygen/html/html/GrammarBuilder_8h.html +0 -1
- package/SVF-doxygen/html/html/GrammarBuilder_8h_source.html +9 -11
- package/SVF-doxygen/html/html/Graph2Json_8cpp_source.html +5 -3
- package/SVF-doxygen/html/html/GraphPrinter_8h_source.html +2 -2
- package/SVF-doxygen/html/html/ICFG_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/ICFG_8h_source.html +1 -1
- package/SVF-doxygen/html/html/IRGraph_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/IRGraph_8h_source.html +1 -1
- package/SVF-doxygen/html/html/LLVMModule_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/LockAnalysis_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/LockResultValidator_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/MHP_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/MTAAnnotator_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/MTAAnnotator_8h_source.html +1 -1
- package/SVF-doxygen/html/html/MTAResultValidator_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/MTAResultValidator_8h_source.html +1 -1
- package/SVF-doxygen/html/html/MTAStat_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/MTA_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/MTA_8h_source.html +1 -1
- package/SVF-doxygen/html/html/OfflineConsG_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/OfflineConsG_8h_source.html +1 -1
- package/SVF-doxygen/html/html/PCG_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/PTACallGraph_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/PTACallGraph_8h_source.html +1 -1
- package/SVF-doxygen/html/html/PointerAnalysisImpl_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/SVFBasicTypes_8h_source.html +1 -1
- package/SVF-doxygen/html/html/SVFGReadWrite_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/SVFG_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/SVFG_8h_source.html +1 -1
- package/SVF-doxygen/html/html/SVFIRBuilder_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/SVFIRBuilder_8h_source.html +1 -1
- package/SVF-doxygen/html/html/SVFUtil_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/SVFUtil_8h.html +1 -1
- package/SVF-doxygen/html/html/SVFUtil_8h_source.html +8 -8
- package/SVF-doxygen/html/html/SaberCheckerAPI_8h_source.html +1 -1
- package/SVF-doxygen/html/html/SymbolTableBuilder_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/TCT_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/TCT_8h_source.html +1 -1
- package/SVF-doxygen/html/html/ThreadAPI_8h_source.html +1 -1
- package/SVF-doxygen/html/html/Util_2BasicTypes_8h.html +1 -1
- package/SVF-doxygen/html/html/VFG_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/VFG_8h_source.html +1 -1
- package/SVF-doxygen/html/html/annotated.html +298 -293
- package/SVF-doxygen/html/html/cfl_8cpp.html +2 -2
- package/SVF-doxygen/html/html/cfl_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1AliasCFLGraphBuilder-members.html +96 -0
- package/SVF-doxygen/html/html/classSVF_1_1AliasCFLGraphBuilder.html +197 -0
- package/SVF-doxygen/html/html/classSVF_1_1AliasCFLGraphBuilder.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1Andersen.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1AndersenHCD.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1AndersenHLCD.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1AndersenLCD.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1AndersenSCD.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1AndersenWaveDiff.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1BreakConstantGEPs.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CFGNormalizer-members.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1CFGNormalizer.html +108 -99
- package/SVF-doxygen/html/html/classSVF_1_1CFLAlias-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CFLAlias.html +52 -39
- package/SVF-doxygen/html/html/classSVF_1_1CFLEdge-members.html +3 -1
- package/SVF-doxygen/html/html/classSVF_1_1CFLEdge.html +62 -0
- package/SVF-doxygen/html/html/classSVF_1_1CFLFIFOWorkList-members.html +91 -0
- package/SVF-doxygen/html/html/classSVF_1_1CFLFIFOWorkList.html +459 -0
- package/SVF-doxygen/html/html/classSVF_1_1CFLGrammar-members.html +47 -38
- package/SVF-doxygen/html/html/classSVF_1_1CFLGrammar.html +180 -137
- package/SVF-doxygen/html/html/classSVF_1_1CFLGraph-members.html +21 -20
- package/SVF-doxygen/html/html/classSVF_1_1CFLGraph.html +44 -22
- package/SVF-doxygen/html/html/classSVF_1_1CFLGraphBuilder-members.html +8 -8
- package/SVF-doxygen/html/html/classSVF_1_1CFLGraphBuilder.html +53 -43
- package/SVF-doxygen/html/html/classSVF_1_1CFLGraphBuilder.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1CFLNode.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1CFLSolver.html +14 -14
- package/SVF-doxygen/html/html/classSVF_1_1CHGBuilder.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1CallGraphBuilder.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ConstraintGraph.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1ConstraintNode-members.html +26 -26
- package/SVF-doxygen/html/html/classSVF_1_1ConstraintNode.html +43 -43
- package/SVF-doxygen/html/html/classSVF_1_1ExtAPI-members.html +5 -4
- package/SVF-doxygen/html/html/classSVF_1_1ExtAPI.html +158 -125
- package/SVF-doxygen/html/html/classSVF_1_1GenericNode.html +20 -21
- package/SVF-doxygen/html/html/classSVF_1_1GenericNode.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1GrammarBase-members.html +29 -21
- package/SVF-doxygen/html/html/classSVF_1_1GrammarBase.html +397 -179
- package/SVF-doxygen/html/html/classSVF_1_1GrammarBase_1_1SymbolHash-members.html +81 -0
- package/SVF-doxygen/html/html/classSVF_1_1GrammarBase_1_1SymbolHash.html +124 -0
- package/SVF-doxygen/html/html/classSVF_1_1GrammarBuilder-members.html +6 -7
- package/SVF-doxygen/html/html/classSVF_1_1GrammarBuilder.html +73 -91
- package/SVF-doxygen/html/html/classSVF_1_1ICFGPrinter.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1LLVMModuleSet.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1LocationSet.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1LockAnalysis.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1LockResultValidator.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1MHP.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1MTA.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1MTAAnnotator.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1MTAResultValidator.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1MTAStat.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1PCG.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1RaceResultValidator.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SVFG.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder.html +14 -14
- package/SVF-doxygen/html/html/classSVF_1_1SaberCheckerAPI.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1SymbolTableBuilder.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ThreadAPI.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1VariantGepCGEdge.html +11 -11
- package/SVF-doxygen/html/html/classes.html +105 -106
- package/SVF-doxygen/html/html/classllvm_1_1GraphPrinter.html +1 -1
- package/SVF-doxygen/html/html/cuddInt_8c.html +17 -17
- package/SVF-doxygen/html/html/cuddInt_8c_source.html +3 -3
- package/SVF-doxygen/html/html/cuddInt_8h.html +5 -5
- package/SVF-doxygen/html/html/cudd_8h.html +9 -9
- package/SVF-doxygen/html/html/cudd_8h_source.html +1 -1
- package/SVF-doxygen/html/html/dda_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/dir_98f9a352f241e0e917d4efaa4086f6e8.html +2 -0
- package/SVF-doxygen/html/html/files.html +5 -4
- package/SVF-doxygen/html/html/functions_0x7e.html +3 -0
- package/SVF-doxygen/html/html/functions_a.html +14 -8
- package/SVF-doxygen/html/html/functions_b.html +4 -3
- package/SVF-doxygen/html/html/functions_c.html +37 -35
- package/SVF-doxygen/html/html/functions_d.html +8 -4
- package/SVF-doxygen/html/html/functions_e.html +15 -8
- package/SVF-doxygen/html/html/functions_f.html +16 -17
- package/SVF-doxygen/html/html/functions_func.html +1 -1
- package/SVF-doxygen/html/html/functions_func_0x7e.html +3 -0
- package/SVF-doxygen/html/html/functions_func_b.html +3 -2
- package/SVF-doxygen/html/html/functions_func_c.html +32 -28
- package/SVF-doxygen/html/html/functions_func_e.html +14 -7
- package/SVF-doxygen/html/html/functions_func_f.html +3 -2
- package/SVF-doxygen/html/html/functions_func_g.html +22 -18
- package/SVF-doxygen/html/html/functions_func_i.html +18 -9
- package/SVF-doxygen/html/html/functions_func_l.html +2 -5
- package/SVF-doxygen/html/html/functions_func_o.html +20 -5
- package/SVF-doxygen/html/html/functions_func_p.html +9 -7
- package/SVF-doxygen/html/html/functions_func_s.html +12 -6
- package/SVF-doxygen/html/html/functions_g.html +25 -21
- package/SVF-doxygen/html/html/functions_i.html +29 -20
- package/SVF-doxygen/html/html/functions_k.html +2 -1
- package/SVF-doxygen/html/html/functions_l.html +1 -4
- package/SVF-doxygen/html/html/functions_n.html +1 -1
- package/SVF-doxygen/html/html/functions_o.html +24 -15
- package/SVF-doxygen/html/html/functions_p.html +18 -18
- package/SVF-doxygen/html/html/functions_r.html +5 -5
- package/SVF-doxygen/html/html/functions_s.html +24 -16
- package/SVF-doxygen/html/html/functions_t.html +5 -7
- package/SVF-doxygen/html/html/functions_type_d.html +4 -2
- package/SVF-doxygen/html/html/functions_type_p.html +1 -1
- package/SVF-doxygen/html/html/functions_type_s.html +7 -1
- package/SVF-doxygen/html/html/functions_type_v.html +3 -0
- package/SVF-doxygen/html/html/functions_v.html +7 -1
- package/SVF-doxygen/html/html/functions_vars_a.html +6 -0
- package/SVF-doxygen/html/html/functions_vars_c.html +1 -1
- package/SVF-doxygen/html/html/functions_vars_d.html +4 -2
- 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_k.html +1 -0
- package/SVF-doxygen/html/html/functions_vars_n.html +1 -1
- package/SVF-doxygen/html/html/functions_vars_r.html +1 -1
- package/SVF-doxygen/html/html/functions_vars_s.html +2 -2
- package/SVF-doxygen/html/html/functions_vars_t.html +1 -1
- package/SVF-doxygen/html/html/functions_vars_v.html +3 -0
- package/SVF-doxygen/html/html/functions_w.html +6 -10
- package/SVF-doxygen/html/html/globals.html +1 -2
- package/SVF-doxygen/html/html/globals_a.html +1 -6
- package/SVF-doxygen/html/html/globals_c.html +129 -126
- package/SVF-doxygen/html/html/globals_defs_j.html +6 -0
- package/SVF-doxygen/html/html/globals_e.html +7 -8
- package/SVF-doxygen/html/html/globals_f.html +6 -12
- package/SVF-doxygen/html/html/globals_func.html +0 -6
- package/SVF-doxygen/html/html/globals_func_f.html +0 -8
- package/SVF-doxygen/html/html/globals_g.html +4 -2
- package/SVF-doxygen/html/html/globals_j.html +6 -0
- package/SVF-doxygen/html/html/globals_l.html +3 -0
- package/SVF-doxygen/html/html/globals_s.html +7 -9
- package/SVF-doxygen/html/html/globals_v.html +3 -0
- package/SVF-doxygen/html/html/globals_vars.html +17 -13
- package/SVF-doxygen/html/html/hierarchy.html +449 -444
- package/SVF-doxygen/html/html/mta_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/namespaceSVF.html +8 -4
- package/SVF-doxygen/html/html/namespaceSVF_1_1SVFUtil.html +2 -2
- package/SVF-doxygen/html/html/namespaceSVF_1_1cppUtil.html +8 -8
- package/SVF-doxygen/html/html/saber_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/search/all_0.js +1 -1
- package/SVF-doxygen/html/html/search/all_1.js +5 -4
- package/SVF-doxygen/html/html/search/all_10.js +12 -12
- package/SVF-doxygen/html/html/search/all_12.js +3 -3
- package/SVF-doxygen/html/html/search/all_13.js +22 -17
- package/SVF-doxygen/html/html/search/all_14.js +5 -5
- package/SVF-doxygen/html/html/search/all_15.js +1 -1
- package/SVF-doxygen/html/html/search/all_16.js +2 -0
- package/SVF-doxygen/html/html/search/all_17.js +1 -1
- package/SVF-doxygen/html/html/search/all_1b.js +1 -0
- package/SVF-doxygen/html/html/search/all_2.js +2 -2
- package/SVF-doxygen/html/html/search/all_3.js +7 -6
- package/SVF-doxygen/html/html/search/all_4.js +5 -5
- package/SVF-doxygen/html/html/search/all_5.js +7 -5
- package/SVF-doxygen/html/html/search/all_6.js +4 -4
- package/SVF-doxygen/html/html/search/all_7.js +11 -9
- package/SVF-doxygen/html/html/search/all_9.js +8 -5
- package/SVF-doxygen/html/html/search/all_a.js +2 -0
- package/SVF-doxygen/html/html/search/all_b.js +1 -1
- package/SVF-doxygen/html/html/search/all_c.js +1 -2
- package/SVF-doxygen/html/html/search/all_d.js +1 -1
- package/SVF-doxygen/html/html/search/all_e.js +4 -4
- package/SVF-doxygen/html/html/search/all_f.js +9 -6
- package/SVF-doxygen/html/html/search/classes_0.js +1 -0
- package/SVF-doxygen/html/html/search/classes_2.js +1 -0
- package/SVF-doxygen/html/html/search/classes_f.js +3 -0
- package/SVF-doxygen/html/html/search/defines_8.js +2 -0
- package/SVF-doxygen/html/html/search/files_2.js +1 -1
- package/SVF-doxygen/html/html/search/functions_0.js +1 -3
- package/SVF-doxygen/html/html/search/functions_1.js +2 -2
- package/SVF-doxygen/html/html/search/functions_11.js +4 -2
- package/SVF-doxygen/html/html/search/functions_17.js +1 -0
- package/SVF-doxygen/html/html/search/functions_2.js +3 -2
- package/SVF-doxygen/html/html/search/functions_3.js +1 -1
- package/SVF-doxygen/html/html/search/functions_4.js +5 -3
- package/SVF-doxygen/html/html/search/functions_5.js +1 -3
- package/SVF-doxygen/html/html/search/functions_6.js +9 -8
- package/SVF-doxygen/html/html/search/functions_8.js +4 -1
- package/SVF-doxygen/html/html/search/functions_b.js +0 -1
- package/SVF-doxygen/html/html/search/functions_e.js +8 -5
- package/SVF-doxygen/html/html/search/functions_f.js +4 -4
- package/SVF-doxygen/html/html/search/typedefs_11.js +3 -1
- package/SVF-doxygen/html/html/search/typedefs_14.js +1 -0
- package/SVF-doxygen/html/html/search/typedefs_3.js +2 -2
- package/SVF-doxygen/html/html/search/typedefs_f.js +1 -1
- package/SVF-doxygen/html/html/search/variables_0.js +1 -1
- package/SVF-doxygen/html/html/search/variables_1.js +3 -2
- package/SVF-doxygen/html/html/search/variables_12.js +1 -1
- package/SVF-doxygen/html/html/search/variables_13.js +2 -2
- package/SVF-doxygen/html/html/search/variables_14.js +2 -2
- package/SVF-doxygen/html/html/search/variables_15.js +1 -1
- package/SVF-doxygen/html/html/search/variables_16.js +2 -0
- package/SVF-doxygen/html/html/search/variables_3.js +2 -2
- package/SVF-doxygen/html/html/search/variables_4.js +2 -2
- package/SVF-doxygen/html/html/search/variables_5.js +2 -2
- package/SVF-doxygen/html/html/search/variables_6.js +3 -3
- package/SVF-doxygen/html/html/search/variables_7.js +2 -1
- package/SVF-doxygen/html/html/search/variables_b.js +1 -1
- package/SVF-doxygen/html/html/search/variables_c.js +1 -0
- package/SVF-doxygen/html/html/search/variables_e.js +3 -3
- package/SVF-doxygen/html/html/structSVF_1_1GrammarBase_1_1Symbol-members.html +98 -0
- package/SVF-doxygen/html/html/structSVF_1_1GrammarBase_1_1Symbol.html +652 -0
- package/SVF-doxygen/html/html/structSVF_1_1GrammarBase_1_1SymbolVectorHash-members.html +81 -0
- package/SVF-doxygen/html/html/structSVF_1_1GrammarBase_1_1SymbolVectorHash.html +124 -0
- package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01CFLGraph_01_5_01_4.html +22 -15
- package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html +4 -2
- package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01OfflineConsG_01_5_01_4.html +4 -2
- package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01Inverse_3_01SVF_1_1CFLNode_01_5_01_4_01_4.html +1 -1
- package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1CFLGraph_01_5_01_4.html +2 -2
- package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1CFLNode_01_5_01_4.html +1 -1
- package/SVF-doxygen/html/html/svf-ex_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/wpa_8cpp_source.html +1 -1
- package/include/CFL/CFGNormalizer.h +14 -9
- package/include/CFL/CFLAlias.h +1 -40
- package/include/CFL/CFLGrammar.h +246 -31
- package/include/CFL/CFLGrammar.txt +13 -15
- package/include/CFL/CFLGraphBuilder.h +27 -29
- package/include/CFL/GrammarBuilder.h +34 -14
- package/include/Graphs/CFLGraph.h +12 -0
- package/include/Graphs/ConsGEdge.h +1 -0
- package/include/SVF-FE/CallGraphBuilder.h +2 -2
- package/include/Util/ExtAPI.h +59 -42
- package/lib/CFL/CFGNormalizer.cpp +138 -86
- package/lib/CFL/CFLAlias.cpp +73 -0
- package/lib/CFL/CFLGrammar.cpp +115 -16
- package/lib/CFL/CFLGraphBuilder.cpp +64 -1
- package/lib/CFL/GrammarBuilder.cpp +42 -60
- package/lib/Graphs/CFLGraph.cpp +41 -1
- package/lib/MemoryModel/LocationSet.cpp +1 -1
- package/lib/SVF-FE/SVFIRBuilder.cpp +2 -2
- package/lib/Util/ExtAPI.cpp +34 -2
- package/lib/Util/ExtAPI.json +3268 -2585
- package/package.json +1 -1
- package/clean.sh +0 -10
- package/include/CFL/CFLGrammarDev.txt +0 -16
|
@@ -64,8 +64,8 @@ $(function() {
|
|
|
64
64
|
<div class="header">
|
|
65
65
|
<div class="summary">
|
|
66
66
|
<a href="#pub-methods">Public Member Functions</a> |
|
|
67
|
-
<a href="#pub-attribs">Public Attributes</a> |
|
|
68
67
|
<a href="#pri-methods">Private Member Functions</a> |
|
|
68
|
+
<a href="#pri-attribs">Private Attributes</a> |
|
|
69
69
|
<a href="classSVF_1_1GrammarBuilder-members.html">List of all members</a> </div>
|
|
70
70
|
<div class="headertitle">
|
|
71
71
|
<div class="title">SVF::GrammarBuilder Class Reference</div> </div>
|
|
@@ -79,37 +79,38 @@ Public Member Functions</h2></td></tr>
|
|
|
79
79
|
<tr class="memitem:a423310118382fa2d5afe169a290a355b"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1GrammarBuilder.html#a423310118382fa2d5afe169a290a355b">GrammarBuilder</a> (<a class="el" href="cJSON_8cpp.html#ae1adbce218e7a9d09164012443191d24">std::string</a> <a class="el" href="classSVF_1_1GrammarBuilder.html#aa0f5135a232adc1ca42d4f51a3c70704">fileName</a>)</td></tr>
|
|
80
80
|
<tr class="separator:a423310118382fa2d5afe169a290a355b"><td class="memSeparator" colspan="2"> </td></tr>
|
|
81
81
|
<tr class="memitem:a23d03b2cd348d85bda1ee582dded6505"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classSVF_1_1GrammarBase.html">GrammarBase</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1GrammarBuilder.html#a23d03b2cd348d85bda1ee582dded6505">build</a> () const</td></tr>
|
|
82
|
-
<tr class="memdesc:a23d03b2cd348d85bda1ee582dded6505"><td class="mdescLeft"> </td><td class="mdescRight">
|
|
82
|
+
<tr class="memdesc:a23d03b2cd348d85bda1ee582dded6505"><td class="mdescLeft"> </td><td class="mdescRight">Build grammarBase from fileName. <a href="#a23d03b2cd348d85bda1ee582dded6505">More...</a><br /></td></tr>
|
|
83
83
|
<tr class="separator:a23d03b2cd348d85bda1ee582dded6505"><td class="memSeparator" colspan="2"> </td></tr>
|
|
84
|
-
<tr class="memitem:
|
|
85
|
-
<tr class="
|
|
86
|
-
|
|
87
|
-
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
|
|
88
|
-
Public Attributes</h2></td></tr>
|
|
89
|
-
<tr class="memitem:aa0f5135a232adc1ca42d4f51a3c70704"><td class="memItemLeft" align="right" valign="top"><a class="el" href="cJSON_8cpp.html#ae1adbce218e7a9d09164012443191d24">std::string</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1GrammarBuilder.html#aa0f5135a232adc1ca42d4f51a3c70704">fileName</a></td></tr>
|
|
90
|
-
<tr class="separator:aa0f5135a232adc1ca42d4f51a3c70704"><td class="memSeparator" colspan="2"> </td></tr>
|
|
91
|
-
<tr class="memitem:a7b81810150ce896801e4e6a831ab98aa"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classSVF_1_1GrammarBase.html">GrammarBase</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1GrammarBuilder.html#a7b81810150ce896801e4e6a831ab98aa">grammar</a></td></tr>
|
|
92
|
-
<tr class="separator:a7b81810150ce896801e4e6a831ab98aa"><td class="memSeparator" colspan="2"> </td></tr>
|
|
84
|
+
<tr class="memitem:a11bd8225be12650c811ba968cc3935b3"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classSVF_1_1GrammarBase.html">GrammarBase</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1GrammarBuilder.html#a11bd8225be12650c811ba968cc3935b3">build</a> (<a class="el" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map</a>< <a class="el" href="cJSON_8cpp.html#ae1adbce218e7a9d09164012443191d24">std::string</a>, <a class="el" href="structSVF_1_1GrammarBase_1_1Symbol.html">SVF::GrammarBase::Symbol</a> > &preMap) const</td></tr>
|
|
85
|
+
<tr class="memdesc:a11bd8225be12650c811ba968cc3935b3"><td class="mdescLeft"> </td><td class="mdescRight">Build grammarBase from fileName with preset str2KindMap. <a href="#a11bd8225be12650c811ba968cc3935b3">More...</a><br /></td></tr>
|
|
86
|
+
<tr class="separator:a11bd8225be12650c811ba968cc3935b3"><td class="memSeparator" colspan="2"> </td></tr>
|
|
93
87
|
</table><table class="memberdecls">
|
|
94
88
|
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pri-methods"></a>
|
|
95
89
|
Private Member Functions</h2></td></tr>
|
|
96
|
-
<tr class="memitem:
|
|
97
|
-
<tr class="memdesc:
|
|
98
|
-
<tr class="separator:
|
|
99
|
-
<tr class="memitem:aec359cdc61c47fbd5ef1341e8ef4a556"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="cJSON_8cpp.html#ae1adbce218e7a9d09164012443191d24">std::string</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1GrammarBuilder.html#aec359cdc61c47fbd5ef1341e8ef4a556">parseProduction</a> () const</td></tr>
|
|
100
|
-
<tr class="memdesc:aec359cdc61c47fbd5ef1341e8ef4a556"><td class="mdescLeft"> </td><td class="mdescRight">Parse start symbol and production from file string. <a href="#aec359cdc61c47fbd5ef1341e8ef4a556">More...</a><br /></td></tr>
|
|
101
|
-
<tr class="separator:aec359cdc61c47fbd5ef1341e8ef4a556"><td class="memSeparator" colspan="2"> </td></tr>
|
|
90
|
+
<tr class="memitem:a5a34166b4b1ce1dcc985f4619f4a2bbc"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="cJSON_8cpp.html#ae1adbce218e7a9d09164012443191d24">std::string</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1GrammarBuilder.html#a5a34166b4b1ce1dcc985f4619f4a2bbc">parseProductionsString</a> () const</td></tr>
|
|
91
|
+
<tr class="memdesc:a5a34166b4b1ce1dcc985f4619f4a2bbc"><td class="mdescLeft"> </td><td class="mdescRight">Parse start symbol and production from file string. <a href="#a5a34166b4b1ce1dcc985f4619f4a2bbc">More...</a><br /></td></tr>
|
|
92
|
+
<tr class="separator:a5a34166b4b1ce1dcc985f4619f4a2bbc"><td class="memSeparator" colspan="2"> </td></tr>
|
|
102
93
|
<tr class="memitem:abad6b574d9f88e2b4ebb6372dc903f62"><td class="memItemLeft" align="right" valign="top">const std::vector< <a class="el" href="cJSON_8cpp.html#ae1adbce218e7a9d09164012443191d24">std::string</a> > </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1GrammarBuilder.html#abad6b574d9f88e2b4ebb6372dc903f62">loadWordProductions</a> () const</td></tr>
|
|
103
94
|
<tr class="memdesc:abad6b574d9f88e2b4ebb6372dc903f62"><td class="mdescLeft"> </td><td class="mdescRight">Parse whole production string to production vector. <a href="#abad6b574d9f88e2b4ebb6372dc903f62">More...</a><br /></td></tr>
|
|
104
95
|
<tr class="separator:abad6b574d9f88e2b4ebb6372dc903f62"><td class="memSeparator" colspan="2"> </td></tr>
|
|
105
96
|
<tr class="memitem:a6de372fbe80d33a5688cada0adca0bb8"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="cJSON_8cpp.html#ae1adbce218e7a9d09164012443191d24">std::string</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1GrammarBuilder.html#a6de372fbe80d33a5688cada0adca0bb8">stripSpace</a> (<a class="el" href="cJSON_8cpp.html#ae1adbce218e7a9d09164012443191d24">std::string</a> s) const</td></tr>
|
|
106
|
-
<tr class="memdesc:a6de372fbe80d33a5688cada0adca0bb8"><td class="mdescLeft"> </td><td class="mdescRight">Strip
|
|
97
|
+
<tr class="memdesc:a6de372fbe80d33a5688cada0adca0bb8"><td class="mdescLeft"> </td><td class="mdescRight">Strip front and tail space. <a href="#a6de372fbe80d33a5688cada0adca0bb8">More...</a><br /></td></tr>
|
|
107
98
|
<tr class="separator:a6de372fbe80d33a5688cada0adca0bb8"><td class="memSeparator" colspan="2"> </td></tr>
|
|
99
|
+
</table><table class="memberdecls">
|
|
100
|
+
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pri-attribs"></a>
|
|
101
|
+
Private Attributes</h2></td></tr>
|
|
102
|
+
<tr class="memitem:aa0f5135a232adc1ca42d4f51a3c70704"><td class="memItemLeft" align="right" valign="top"><a class="el" href="cJSON_8cpp.html#ae1adbce218e7a9d09164012443191d24">std::string</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1GrammarBuilder.html#aa0f5135a232adc1ca42d4f51a3c70704">fileName</a></td></tr>
|
|
103
|
+
<tr class="separator:aa0f5135a232adc1ca42d4f51a3c70704"><td class="memSeparator" colspan="2"> </td></tr>
|
|
104
|
+
<tr class="memitem:a7b81810150ce896801e4e6a831ab98aa"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classSVF_1_1GrammarBase.html">GrammarBase</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1GrammarBuilder.html#a7b81810150ce896801e4e6a831ab98aa">grammar</a></td></tr>
|
|
105
|
+
<tr class="separator:a7b81810150ce896801e4e6a831ab98aa"><td class="memSeparator" colspan="2"> </td></tr>
|
|
108
106
|
</table>
|
|
109
107
|
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
|
|
110
|
-
<div class="textblock"><p>Build Grammar from a user specified grammar text
|
|
108
|
+
<div class="textblock"><p>Build Grammar from a user specified grammar text</p>
|
|
109
|
+
<p>Symbol Format: <kind> [bar] [ _alpha | _number ] kind: any nonspace string start with alphabet, epsilon stand for empty string bar: stand for reverse edge alpha: any single alpha number: any number start with capital: nonterminal start with noncapital: terminal</p>
|
|
110
|
+
<p>Production Format: <symbol> -> <symbol> *; LHS and RHS, Seperate by '->', symbol seperate by ' ', end by ';' support '*', '?', '(', ')'</p>
|
|
111
|
+
<p>Input Format: Start: M // Specify Start Symbol in Second Line Terminal: Addr Copy Store Load Gep Vgep // Specify the order of terminal Addr->0, Copy->1 .. Productions: // Each Symbol seperate by 'Space', production end with ';' M -> V d; // Terminal in NonCapital M -> dbar V d; // NonTerminal in Capital V -> M abar M a M; // LHS and RHS, Seperate by '->' V -> ( M ? abar ) * M ? ( a M ? ) *; // Support '(' ')' '?' '*' four regular expression sign Gep_j -> Gep_i F vgep; // Support variable attribute with variable attribute Gep_1 -> Gep_2; // Support fix number attribute </p>
|
|
111
112
|
|
|
112
|
-
<p class="definition">Definition at line <a class="el" href="GrammarBuilder_8h_source.html#
|
|
113
|
+
<p class="definition">Definition at line <a class="el" href="GrammarBuilder_8h_source.html#l00070">70</a> of file <a class="el" href="GrammarBuilder_8h_source.html">GrammarBuilder.h</a>.</p>
|
|
113
114
|
</div><h2 class="groupheader">Constructor & Destructor Documentation</h2>
|
|
114
115
|
<a id="a423310118382fa2d5afe169a290a355b"></a>
|
|
115
116
|
<h2 class="memtitle"><span class="permalink"><a href="#a423310118382fa2d5afe169a290a355b">◆ </a></span>GrammarBuilder()</h2>
|
|
@@ -135,9 +136,9 @@ Private Member Functions</h2></td></tr>
|
|
|
135
136
|
</table>
|
|
136
137
|
</div><div class="memdoc">
|
|
137
138
|
|
|
138
|
-
<p class="definition">Definition at line <a class="el" href="GrammarBuilder_8h_source.html#
|
|
139
|
-
<div class="fragment"><div class="line"><a name="
|
|
140
|
-
<div class="ttc" id="classSVF_1_1GrammarBuilder_html_aa0f5135a232adc1ca42d4f51a3c70704"><div class="ttname"><a href="classSVF_1_1GrammarBuilder.html#aa0f5135a232adc1ca42d4f51a3c70704">SVF::GrammarBuilder::fileName</a></div><div class="ttdeci">std::string fileName</div><div class="ttdef"><b>Definition:</b> <a href="GrammarBuilder_8h_source.html#
|
|
139
|
+
<p class="definition">Definition at line <a class="el" href="GrammarBuilder_8h_source.html#l00086">86</a> of file <a class="el" href="GrammarBuilder_8h_source.html">GrammarBuilder.h</a>.</p>
|
|
140
|
+
<div class="fragment"><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  : <a class="code" href="classSVF_1_1GrammarBuilder.html#aa0f5135a232adc1ca42d4f51a3c70704">fileName</a>(<a class="code" href="classSVF_1_1GrammarBuilder.html#aa0f5135a232adc1ca42d4f51a3c70704">fileName</a>), <a class="code" href="classSVF_1_1GrammarBuilder.html#a7b81810150ce896801e4e6a831ab98aa">grammar</a>(<span class="keyword">nullptr</span>)</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  {</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  <a class="code" href="classSVF_1_1GrammarBuilder.html#a7b81810150ce896801e4e6a831ab98aa">grammar</a> = <span class="keyword">new</span> GrammarBase();</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  };</div><div class="ttc" id="classSVF_1_1GrammarBuilder_html_a7b81810150ce896801e4e6a831ab98aa"><div class="ttname"><a href="classSVF_1_1GrammarBuilder.html#a7b81810150ce896801e4e6a831ab98aa">SVF::GrammarBuilder::grammar</a></div><div class="ttdeci">GrammarBase * grammar</div><div class="ttdef"><b>Definition:</b> <a href="GrammarBuilder_8h_source.html#l00074">GrammarBuilder.h:74</a></div></div>
|
|
141
|
+
<div class="ttc" id="classSVF_1_1GrammarBuilder_html_aa0f5135a232adc1ca42d4f51a3c70704"><div class="ttname"><a href="classSVF_1_1GrammarBuilder.html#aa0f5135a232adc1ca42d4f51a3c70704">SVF::GrammarBuilder::fileName</a></div><div class="ttdeci">std::string fileName</div><div class="ttdef"><b>Definition:</b> <a href="GrammarBuilder_8h_source.html#l00073">GrammarBuilder.h:73</a></div></div>
|
|
141
142
|
</div><!-- fragment -->
|
|
142
143
|
</div>
|
|
143
144
|
</div>
|
|
@@ -157,74 +158,40 @@ Private Member Functions</h2></td></tr>
|
|
|
157
158
|
</table>
|
|
158
159
|
</div><div class="memdoc">
|
|
159
160
|
|
|
161
|
+
<p>Build grammarBase from fileName. </p>
|
|
160
162
|
<p>build grammarbase from textfile </p>
|
|
161
163
|
|
|
162
|
-
<p class="definition">Definition at line <a class="el" href="GrammarBuilder_8cpp_source.html#
|
|
163
|
-
<div class="fragment"><div class="line"><a name="l00098"></a><span class="lineno"> 98</span> {</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  std::smatch matches;</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> delimiter = <span class="stringliteral">";"</span>;</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  <span class="keywordtype">size_t</span> pos = 0;</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> word = <span class="stringliteral">""</span>;</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  <a class="code" href="classSVF_1_1GrammarBase.html#af384c960a5edc576cbfb60a869e346ec">GrammarBase::Production</a> prod;</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  std::vector<std::string> wordProd = <a class="code" href="classSVF_1_1GrammarBuilder.html#abad6b574d9f88e2b4ebb6372dc903f62">loadWordProductions</a>();</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> delimiter1 = <span class="stringliteral">"->"</span>;</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span> </div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  <span class="keywordflow">for</span> (<span class="keyword">auto</span> it : wordProd)</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  {</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  <span class="keywordflow">if</span> ((pos = it.find(delimiter1)) != std::string::npos)</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  {</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> head = it.substr(0, pos);</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> LHS = it.substr(pos + delimiter1.size(), it.size() - 1);</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  head = <a class="code" href="classSVF_1_1GrammarBuilder.html#a6de372fbe80d33a5688cada0adca0bb8">stripSpace</a>(head);</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  prod.push_back(<a class="code" href="classSVF_1_1GrammarBuilder.html#a7b81810150ce896801e4e6a831ab98aa">grammar</a>-><a class="code" href="classSVF_1_1GrammarBase.html#ad3351ced90fd47212bb776f7ab8ea7ca">insertNonTerminalKind</a>(head));</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1GrammarBuilder.html#a7b81810150ce896801e4e6a831ab98aa">grammar</a>-><a class="code" href="classSVF_1_1GrammarBase.html#a1418337120e80b792627883d10f93ff1">getRawProductions</a>().find(<a class="code" href="classSVF_1_1GrammarBuilder.html#a7b81810150ce896801e4e6a831ab98aa">grammar</a>-><a class="code" href="classSVF_1_1GrammarBase.html#ad2d56d8cdc4539d4201d1995fb36e772">str2Kind</a>(head)) == <a class="code" href="classSVF_1_1GrammarBuilder.html#a7b81810150ce896801e4e6a831ab98aa">grammar</a>-><a class="code" href="classSVF_1_1GrammarBase.html#a1418337120e80b792627883d10f93ff1">getRawProductions</a>().end())</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  {</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  <a class="code" href="classSVF_1_1GrammarBuilder.html#a7b81810150ce896801e4e6a831ab98aa">grammar</a>-><a class="code" href="classSVF_1_1GrammarBase.html#a1418337120e80b792627883d10f93ff1">getRawProductions</a>().insert({<a class="code" href="classSVF_1_1GrammarBuilder.html#a7b81810150ce896801e4e6a831ab98aa">grammar</a>-><a class="code" href="classSVF_1_1GrammarBase.html#ad2d56d8cdc4539d4201d1995fb36e772">str2Kind</a>(head), {}});</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  }</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span> </div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  std::regex LHSReg(<span class="stringliteral">"\\s*(.*)"</span>);</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  std::regex_search(LHS, matches, LHSReg);</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  LHS = matches.str(1);</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  delimiter = <span class="stringliteral">" "</span>;</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  <span class="keywordflow">while</span> ((pos = LHS.find(delimiter)) != std::string::npos)</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  {</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  word = LHS.substr(0, pos);</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  LHS.erase(0, pos + delimiter.length()); <span class="comment">//Capital is Nonterminal, Otherwise is terminal</span></div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  <span class="keywordflow">if</span> (isupper(word[0]))</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  {</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  prod.push_back(<a class="code" href="classSVF_1_1GrammarBuilder.html#a7b81810150ce896801e4e6a831ab98aa">grammar</a>-><a class="code" href="classSVF_1_1GrammarBase.html#ad3351ced90fd47212bb776f7ab8ea7ca">insertNonTerminalKind</a>(word));</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  }</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  {</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  prod.push_back(<a class="code" href="classSVF_1_1GrammarBuilder.html#a7b81810150ce896801e4e6a831ab98aa">grammar</a>-><a class="code" href="classSVF_1_1GrammarBase.html#ad2f1a578ba72a2b600014b21b6f2d542">insertTerminalKind</a>(word));</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  }</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  }</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  <span class="keywordflow">if</span> (isupper(LHS[0]))</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  {</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  prod.push_back(<a class="code" href="classSVF_1_1GrammarBuilder.html#a7b81810150ce896801e4e6a831ab98aa">grammar</a>-><a class="code" href="classSVF_1_1GrammarBase.html#ad3351ced90fd47212bb776f7ab8ea7ca">insertNonTerminalKind</a>(LHS));</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  }</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  {</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  prod.push_back(<a class="code" href="classSVF_1_1GrammarBuilder.html#a7b81810150ce896801e4e6a831ab98aa">grammar</a>-><a class="code" href="classSVF_1_1GrammarBase.html#ad2f1a578ba72a2b600014b21b6f2d542">insertTerminalKind</a>(LHS));</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  }</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  <a class="code" href="classSVF_1_1GrammarBuilder.html#a7b81810150ce896801e4e6a831ab98aa">grammar</a>-><a class="code" href="classSVF_1_1GrammarBase.html#a1418337120e80b792627883d10f93ff1">getRawProductions</a>().at(<a class="code" href="classSVF_1_1GrammarBuilder.html#a7b81810150ce896801e4e6a831ab98aa">grammar</a>-><a class="code" href="classSVF_1_1GrammarBase.html#ad2d56d8cdc4539d4201d1995fb36e772">str2Kind</a>(head)).insert(prod);</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  prod = {};</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  }</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  }</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span> </div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1GrammarBuilder.html#a7b81810150ce896801e4e6a831ab98aa">grammar</a>;</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span> };</div><div class="ttc" id="classSVF_1_1GrammarBase_html_ad3351ced90fd47212bb776f7ab8ea7ca"><div class="ttname"><a href="classSVF_1_1GrammarBase.html#ad3351ced90fd47212bb776f7ab8ea7ca">SVF::GrammarBase::insertNonTerminalKind</a></div><div class="ttdeci">Kind insertNonTerminalKind(std::string strLit)</div><div class="ttdef"><b>Definition:</b> <a href="CFLGrammar_8cpp_source.html#l00146">CFLGrammar.cpp:146</a></div></div>
|
|
164
|
-
<div class="ttc" id="
|
|
165
|
-
<div class="ttc" id="classSVF_1_1GrammarBuilder_html_abad6b574d9f88e2b4ebb6372dc903f62"><div class="ttname"><a href="classSVF_1_1GrammarBuilder.html#abad6b574d9f88e2b4ebb6372dc903f62">SVF::GrammarBuilder::loadWordProductions</a></div><div class="ttdeci">const std::vector< std::string > loadWordProductions() const</div><div class="ttdoc">Parse whole production string to production vector. </div><div class="ttdef"><b>Definition:</b> <a href="GrammarBuilder_8cpp_source.html#
|
|
166
|
-
<div class="ttc" id="
|
|
167
|
-
<div class="ttc" id="classSVF_1_1GrammarBase_html_af384c960a5edc576cbfb60a869e346ec"><div class="ttname"><a href="classSVF_1_1GrammarBase.html#af384c960a5edc576cbfb60a869e346ec">SVF::GrammarBase::Production</a></div><div class="ttdeci">std::vector< Symbol > Production</div><div class="ttdef"><b>Definition:</b> <a href="CFLGrammar_8h_source.html#
|
|
168
|
-
<div class="ttc" id="
|
|
169
|
-
<div class="ttc" id="
|
|
164
|
+
<p class="definition">Definition at line <a class="el" href="GrammarBuilder_8cpp_source.html#l00104">104</a> of file <a class="el" href="GrammarBuilder_8cpp_source.html">GrammarBuilder.cpp</a>.</p>
|
|
165
|
+
<div class="fragment"><div class="line"><a name="l00105"></a><span class="lineno"> 105</span> {</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  std::smatch matches;</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> delimiter = <span class="stringliteral">" "</span>;</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> delimiter1 = <span class="stringliteral">"->"</span>;</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> word = <span class="stringliteral">""</span>;</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  <span class="keywordtype">size_t</span> pos;</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  <a class="code" href="classSVF_1_1GrammarBase.html#af384c960a5edc576cbfb60a869e346ec">GrammarBase::Production</a> prod;</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  std::vector<std::string> wordProdVec = <a class="code" href="classSVF_1_1GrammarBuilder.html#abad6b574d9f88e2b4ebb6372dc903f62">loadWordProductions</a>();</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span> </div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  <span class="keywordflow">for</span> (<span class="keyword">auto</span> wordProd : wordProdVec)</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  {</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  <span class="keywordflow">if</span> ((pos = wordProd.find(delimiter1)) != std::string::npos)</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  {</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> RHS = <a class="code" href="classSVF_1_1GrammarBuilder.html#a6de372fbe80d33a5688cada0adca0bb8">stripSpace</a>(wordProd.substr(0, pos));</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> LHS = wordProd.substr(pos + delimiter1.size(), wordProd.size() - 1);</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  <a class="code" href="classSVF_1_1GrammarBase.html#ad4f53184d04d9f7a737b19f63d002550">GrammarBase::Symbol</a> RHSSymbol = <a class="code" href="classSVF_1_1GrammarBuilder.html#a7b81810150ce896801e4e6a831ab98aa">grammar</a>-><a class="code" href="classSVF_1_1GrammarBase.html#a63389968c8d246a84562a8d17e08790b">insertNonTerminalSymbol</a>(RHS);</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  prod.push_back(RHSSymbol);</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1GrammarBuilder.html#a7b81810150ce896801e4e6a831ab98aa">grammar</a>-><a class="code" href="classSVF_1_1GrammarBase.html#a4561438149716c91178ea013686f66ae">getRawProductions</a>().find(RHSSymbol) == <a class="code" href="classSVF_1_1GrammarBuilder.html#a7b81810150ce896801e4e6a831ab98aa">grammar</a>-><a class="code" href="classSVF_1_1GrammarBase.html#a4561438149716c91178ea013686f66ae">getRawProductions</a>().end()) <a class="code" href="classSVF_1_1GrammarBuilder.html#a7b81810150ce896801e4e6a831ab98aa">grammar</a>-><a class="code" href="classSVF_1_1GrammarBase.html#a4561438149716c91178ea013686f66ae">getRawProductions</a>().insert({RHSSymbol, {}});</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  std::regex LHSRegEx(<span class="stringliteral">"\\s*(.*)"</span>);</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  std::regex_search(LHS, matches, LHSRegEx);</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  LHS = matches.str(1);</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  <span class="keywordflow">while</span> ((pos = LHS.find(delimiter)) != std::string::npos)</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  {</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  word = LHS.substr(0, pos);</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  LHS.erase(0, pos + delimiter.length()); <span class="comment">//Capital is Nonterminal, Otherwise is terminal</span></div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  prod.push_back(<a class="code" href="classSVF_1_1GrammarBuilder.html#a7b81810150ce896801e4e6a831ab98aa">grammar</a>-><a class="code" href="classSVF_1_1GrammarBase.html#a3c16f37c05de31fbd2be1ae9c0961e84">insertSymbol</a>(word));</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  }</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  prod.push_back(<a class="code" href="classSVF_1_1GrammarBuilder.html#a7b81810150ce896801e4e6a831ab98aa">grammar</a>-><a class="code" href="classSVF_1_1GrammarBase.html#a3c16f37c05de31fbd2be1ae9c0961e84">insertSymbol</a>(LHS));</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  <a class="code" href="classSVF_1_1GrammarBuilder.html#a7b81810150ce896801e4e6a831ab98aa">grammar</a>-><a class="code" href="classSVF_1_1GrammarBase.html#a4561438149716c91178ea013686f66ae">getRawProductions</a>().at(RHSSymbol).insert(prod);</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  prod = {};</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  }</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  }</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span> </div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1GrammarBuilder.html#a7b81810150ce896801e4e6a831ab98aa">grammar</a>;</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span> };</div><div class="ttc" id="classSVF_1_1GrammarBuilder_html_a7b81810150ce896801e4e6a831ab98aa"><div class="ttname"><a href="classSVF_1_1GrammarBuilder.html#a7b81810150ce896801e4e6a831ab98aa">SVF::GrammarBuilder::grammar</a></div><div class="ttdeci">GrammarBase * grammar</div><div class="ttdef"><b>Definition:</b> <a href="GrammarBuilder_8h_source.html#l00074">GrammarBuilder.h:74</a></div></div>
|
|
166
|
+
<div class="ttc" id="classSVF_1_1GrammarBase_html_a4561438149716c91178ea013686f66ae"><div class="ttname"><a href="classSVF_1_1GrammarBase.html#a4561438149716c91178ea013686f66ae">SVF::GrammarBase::getRawProductions</a></div><div class="ttdeci">SymbolMap< Symbol, Productions > & getRawProductions()</div><div class="ttdef"><b>Definition:</b> <a href="CFLGrammar_8h_source.html#l00199">CFLGrammar.h:199</a></div></div>
|
|
167
|
+
<div class="ttc" id="classSVF_1_1GrammarBuilder_html_abad6b574d9f88e2b4ebb6372dc903f62"><div class="ttname"><a href="classSVF_1_1GrammarBuilder.html#abad6b574d9f88e2b4ebb6372dc903f62">SVF::GrammarBuilder::loadWordProductions</a></div><div class="ttdeci">const std::vector< std::string > loadWordProductions() const</div><div class="ttdoc">Parse whole production string to production vector. </div><div class="ttdef"><b>Definition:</b> <a href="GrammarBuilder_8cpp_source.html#l00078">GrammarBuilder.cpp:78</a></div></div>
|
|
168
|
+
<div class="ttc" id="classSVF_1_1GrammarBase_html_a63389968c8d246a84562a8d17e08790b"><div class="ttname"><a href="classSVF_1_1GrammarBase.html#a63389968c8d246a84562a8d17e08790b">SVF::GrammarBase::insertNonTerminalSymbol</a></div><div class="ttdeci">Symbol insertNonTerminalSymbol(std::string strLit)</div><div class="ttdef"><b>Definition:</b> <a href="CFLGrammar_8cpp_source.html#l00231">CFLGrammar.cpp:231</a></div></div>
|
|
169
|
+
<div class="ttc" id="classSVF_1_1GrammarBase_html_af384c960a5edc576cbfb60a869e346ec"><div class="ttname"><a href="classSVF_1_1GrammarBase.html#af384c960a5edc576cbfb60a869e346ec">SVF::GrammarBase::Production</a></div><div class="ttdeci">std::vector< Symbol > Production</div><div class="ttdef"><b>Definition:</b> <a href="CFLGrammar_8h_source.html#l00175">CFLGrammar.h:175</a></div></div>
|
|
170
|
+
<div class="ttc" id="classSVF_1_1GrammarBase_html_ad4f53184d04d9f7a737b19f63d002550"><div class="ttname"><a href="classSVF_1_1GrammarBase.html#ad4f53184d04d9f7a737b19f63d002550">SVF::GrammarBase::Symbol</a></div><div class="ttdeci">struct SVF::GrammarBase::Symbol Symbol</div></div>
|
|
171
|
+
<div class="ttc" id="classSVF_1_1GrammarBuilder_html_a6de372fbe80d33a5688cada0adca0bb8"><div class="ttname"><a href="classSVF_1_1GrammarBuilder.html#a6de372fbe80d33a5688cada0adca0bb8">SVF::GrammarBuilder::stripSpace</a></div><div class="ttdeci">const std::string stripSpace(std::string s) const</div><div class="ttdoc">Strip front and tail space. </div><div class="ttdef"><b>Definition:</b> <a href="GrammarBuilder_8cpp_source.html#l00094">GrammarBuilder.cpp:94</a></div></div>
|
|
170
172
|
<div class="ttc" id="cJSON_8h_html_ad4c68ea99a26b0a98ad9a79982960458"><div class="ttname"><a href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">string</a></div><div class="ttdeci">const char *const string</div><div class="ttdef"><b>Definition:</b> <a href="cJSON_8h_source.html#l00172">cJSON.h:172</a></div></div>
|
|
171
|
-
<div class="ttc" id="
|
|
173
|
+
<div class="ttc" id="classSVF_1_1GrammarBase_html_a3c16f37c05de31fbd2be1ae9c0961e84"><div class="ttname"><a href="classSVF_1_1GrammarBase.html#a3c16f37c05de31fbd2be1ae9c0961e84">SVF::GrammarBase::insertSymbol</a></div><div class="ttdeci">Symbol insertSymbol(std::string strLit)</div><div class="ttdef"><b>Definition:</b> <a href="CFLGrammar_8cpp_source.html#l00217">CFLGrammar.cpp:217</a></div></div>
|
|
172
174
|
</div><!-- fragment -->
|
|
173
175
|
</div>
|
|
174
176
|
</div>
|
|
175
|
-
<a id="
|
|
176
|
-
<h2 class="memtitle"><span class="permalink"><a href="#
|
|
177
|
+
<a id="a11bd8225be12650c811ba968cc3935b3"></a>
|
|
178
|
+
<h2 class="memtitle"><span class="permalink"><a href="#a11bd8225be12650c811ba968cc3935b3">◆ </a></span>build() <span class="overload">[2/2]</span></h2>
|
|
177
179
|
|
|
178
180
|
<div class="memitem">
|
|
179
181
|
<div class="memproto">
|
|
180
182
|
<table class="memname">
|
|
181
183
|
<tr>
|
|
182
|
-
<td class="memname"><a class="el" href="classSVF_1_1GrammarBase.html">GrammarBase</a
|
|
184
|
+
<td class="memname"><a class="el" href="classSVF_1_1GrammarBase.html">GrammarBase</a>* SVF::GrammarBuilder::build </td>
|
|
183
185
|
<td>(</td>
|
|
184
|
-
<td class="paramtype"><a class="el" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map</a>< <a class="el" href="cJSON_8cpp.html#ae1adbce218e7a9d09164012443191d24">std::string</a>, <a class="el" href="
|
|
186
|
+
<td class="paramtype"><a class="el" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map</a>< <a class="el" href="cJSON_8cpp.html#ae1adbce218e7a9d09164012443191d24">std::string</a>, <a class="el" href="structSVF_1_1GrammarBase_1_1Symbol.html">SVF::GrammarBase::Symbol</a> > & </td>
|
|
185
187
|
<td class="paramname"><em>preMap</em></td><td>)</td>
|
|
186
188
|
<td> const</td>
|
|
187
189
|
</tr>
|
|
188
190
|
</table>
|
|
189
191
|
</div><div class="memdoc">
|
|
190
192
|
|
|
191
|
-
<p
|
|
192
|
-
<div class="fragment"><div class="line"><a name="l00154"></a><span class="lineno"> 154</span> {</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  <a class="code" href="classSVF_1_1GrammarBuilder.html#a7b81810150ce896801e4e6a831ab98aa">grammar</a>-><a class="code" href="classSVF_1_1GrammarBase.html#afc9635e14b5871df457bf64fae6ad8cf">setNonterminals</a>(preMap);</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  <a class="code" href="classSVF_1_1GrammarBuilder.html#a7b81810150ce896801e4e6a831ab98aa">grammar</a>-><a class="code" href="classSVF_1_1GrammarBase.html#a37a31f03501a11e7951d56dbf1cb146a">setTotalKind</a>(preMap.size());</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1GrammarBuilder.html#a23d03b2cd348d85bda1ee582dded6505">build</a>();</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span> };</div><div class="ttc" id="classSVF_1_1GrammarBuilder_html_a7b81810150ce896801e4e6a831ab98aa"><div class="ttname"><a href="classSVF_1_1GrammarBuilder.html#a7b81810150ce896801e4e6a831ab98aa">SVF::GrammarBuilder::grammar</a></div><div class="ttdeci">GrammarBase * grammar</div><div class="ttdef"><b>Definition:</b> <a href="GrammarBuilder_8h_source.html#l00068">GrammarBuilder.h:68</a></div></div>
|
|
193
|
-
<div class="ttc" id="classSVF_1_1GrammarBase_html_a37a31f03501a11e7951d56dbf1cb146a"><div class="ttname"><a href="classSVF_1_1GrammarBase.html#a37a31f03501a11e7951d56dbf1cb146a">SVF::GrammarBase::setTotalKind</a></div><div class="ttdeci">void setTotalKind(Kind totalKind)</div><div class="ttdef"><b>Definition:</b> <a href="CFLGrammar_8h_source.html#l00089">CFLGrammar.h:89</a></div></div>
|
|
194
|
-
<div class="ttc" id="classSVF_1_1GrammarBase_html_afc9635e14b5871df457bf64fae6ad8cf"><div class="ttname"><a href="classSVF_1_1GrammarBase.html#afc9635e14b5871df457bf64fae6ad8cf">SVF::GrammarBase::setNonterminals</a></div><div class="ttdeci">void setNonterminals(Map< std::string, Kind > &nonterminals)</div><div class="ttdef"><b>Definition:</b> <a href="CFLGrammar_8h_source.html#l00049">CFLGrammar.h:49</a></div></div>
|
|
195
|
-
<div class="ttc" id="classSVF_1_1GrammarBuilder_html_a23d03b2cd348d85bda1ee582dded6505"><div class="ttname"><a href="classSVF_1_1GrammarBuilder.html#a23d03b2cd348d85bda1ee582dded6505">SVF::GrammarBuilder::build</a></div><div class="ttdeci">GrammarBase * build() const</div><div class="ttdoc">build grammarbase from textfile </div><div class="ttdef"><b>Definition:</b> <a href="GrammarBuilder_8cpp_source.html#l00097">GrammarBuilder.cpp:97</a></div></div>
|
|
196
|
-
</div><!-- fragment -->
|
|
197
|
-
</div>
|
|
198
|
-
</div>
|
|
199
|
-
<a id="a34bd036f78713dc9b016e32ce4458942"></a>
|
|
200
|
-
<h2 class="memtitle"><span class="permalink"><a href="#a34bd036f78713dc9b016e32ce4458942">◆ </a></span>loadFileString()</h2>
|
|
193
|
+
<p>Build grammarBase from fileName with preset str2KindMap. </p>
|
|
201
194
|
|
|
202
|
-
<div class="memitem">
|
|
203
|
-
<div class="memproto">
|
|
204
|
-
<table class="mlabels">
|
|
205
|
-
<tr>
|
|
206
|
-
<td class="mlabels-left">
|
|
207
|
-
<table class="memname">
|
|
208
|
-
<tr>
|
|
209
|
-
<td class="memname">const <a class="el" href="cJSON_8cpp.html#ae1adbce218e7a9d09164012443191d24">std::string</a> SVF::GrammarBuilder::loadFileString </td>
|
|
210
|
-
<td>(</td>
|
|
211
|
-
<td class="paramname"></td><td>)</td>
|
|
212
|
-
<td> const</td>
|
|
213
|
-
</tr>
|
|
214
|
-
</table>
|
|
215
|
-
</td>
|
|
216
|
-
<td class="mlabels-right">
|
|
217
|
-
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">private</span></span> </td>
|
|
218
|
-
</tr>
|
|
219
|
-
</table>
|
|
220
|
-
</div><div class="memdoc">
|
|
221
|
-
|
|
222
|
-
<p>Load whole file content to string. </p>
|
|
223
|
-
|
|
224
|
-
<p class="definition">Definition at line <a class="el" href="GrammarBuilder_8cpp_source.html#l00039">39</a> of file <a class="el" href="GrammarBuilder_8cpp_source.html">GrammarBuilder.cpp</a>.</p>
|
|
225
|
-
<div class="fragment"><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> {</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  std::ifstream textFile(<a class="code" href="classSVF_1_1GrammarBuilder.html#aa0f5135a232adc1ca42d4f51a3c70704">fileName</a>);</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> lineString;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> lines = <span class="stringliteral">""</span>;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keywordflow">while</span> (getline(textFile, lineString))</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  {</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  lines.append(lineString);</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  }</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  textFile.close();</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keywordflow">return</span> lines;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> }</div><div class="ttc" id="classSVF_1_1GrammarBuilder_html_aa0f5135a232adc1ca42d4f51a3c70704"><div class="ttname"><a href="classSVF_1_1GrammarBuilder.html#aa0f5135a232adc1ca42d4f51a3c70704">SVF::GrammarBuilder::fileName</a></div><div class="ttdeci">std::string fileName</div><div class="ttdef"><b>Definition:</b> <a href="GrammarBuilder_8h_source.html#l00067">GrammarBuilder.h:67</a></div></div>
|
|
226
|
-
<div class="ttc" id="cJSON_8h_html_ad4c68ea99a26b0a98ad9a79982960458"><div class="ttname"><a href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">string</a></div><div class="ttdeci">const char *const string</div><div class="ttdef"><b>Definition:</b> <a href="cJSON_8h_source.html#l00172">cJSON.h:172</a></div></div>
|
|
227
|
-
</div><!-- fragment -->
|
|
228
195
|
</div>
|
|
229
196
|
</div>
|
|
230
197
|
<a id="abad6b574d9f88e2b4ebb6372dc903f62"></a>
|
|
@@ -252,14 +219,14 @@ Private Member Functions</h2></td></tr>
|
|
|
252
219
|
|
|
253
220
|
<p>Parse whole production string to production vector. </p>
|
|
254
221
|
|
|
255
|
-
<p class="definition">Definition at line <a class="el" href="GrammarBuilder_8cpp_source.html#
|
|
256
|
-
<div class="fragment"><div class="line"><a name="
|
|
257
|
-
<div class="ttc" id="
|
|
222
|
+
<p class="definition">Definition at line <a class="el" href="GrammarBuilder_8cpp_source.html#l00078">78</a> of file <a class="el" href="GrammarBuilder_8cpp_source.html">GrammarBuilder.cpp</a>.</p>
|
|
223
|
+
<div class="fragment"><div class="line"><a name="l00079"></a><span class="lineno"> 79</span> {</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  <span class="keywordtype">size_t</span> pos = 0;</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> lines = <a class="code" href="classSVF_1_1GrammarBuilder.html#a5a34166b4b1ce1dcc985f4619f4a2bbc">parseProductionsString</a>();</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> word = <span class="stringliteral">""</span>;</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  std::vector<std::string> wordProds;</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> delimiter = <span class="stringliteral">";"</span>;</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  <span class="keywordflow">while</span> ((pos = lines.find(<span class="stringliteral">";"</span>)) != std::string::npos)</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  {</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  word = lines.substr(0, pos);</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  wordProds.push_back(word);</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  lines.erase(0, pos + delimiter.length());</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  }</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  <span class="keywordflow">return</span> wordProds;</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span> }</div><div class="ttc" id="cJSON_8h_html_ad4c68ea99a26b0a98ad9a79982960458"><div class="ttname"><a href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">string</a></div><div class="ttdeci">const char *const string</div><div class="ttdef"><b>Definition:</b> <a href="cJSON_8h_source.html#l00172">cJSON.h:172</a></div></div>
|
|
224
|
+
<div class="ttc" id="classSVF_1_1GrammarBuilder_html_a5a34166b4b1ce1dcc985f4619f4a2bbc"><div class="ttname"><a href="classSVF_1_1GrammarBuilder.html#a5a34166b4b1ce1dcc985f4619f4a2bbc">SVF::GrammarBuilder::parseProductionsString</a></div><div class="ttdeci">const std::string parseProductionsString() const</div><div class="ttdoc">Parse start symbol and production from file string. </div><div class="ttdef"><b>Definition:</b> <a href="GrammarBuilder_8cpp_source.html#l00039">GrammarBuilder.cpp:39</a></div></div>
|
|
258
225
|
</div><!-- fragment -->
|
|
259
226
|
</div>
|
|
260
227
|
</div>
|
|
261
|
-
<a id="
|
|
262
|
-
<h2 class="memtitle"><span class="permalink"><a href="#
|
|
228
|
+
<a id="a5a34166b4b1ce1dcc985f4619f4a2bbc"></a>
|
|
229
|
+
<h2 class="memtitle"><span class="permalink"><a href="#a5a34166b4b1ce1dcc985f4619f4a2bbc">◆ </a></span>parseProductionsString()</h2>
|
|
263
230
|
|
|
264
231
|
<div class="memitem">
|
|
265
232
|
<div class="memproto">
|
|
@@ -268,7 +235,7 @@ Private Member Functions</h2></td></tr>
|
|
|
268
235
|
<td class="mlabels-left">
|
|
269
236
|
<table class="memname">
|
|
270
237
|
<tr>
|
|
271
|
-
<td class="memname">const <a class="el" href="cJSON_8cpp.html#ae1adbce218e7a9d09164012443191d24">std::string</a> SVF::GrammarBuilder::
|
|
238
|
+
<td class="memname">const <a class="el" href="cJSON_8cpp.html#ae1adbce218e7a9d09164012443191d24">std::string</a> SVF::GrammarBuilder::parseProductionsString </td>
|
|
272
239
|
<td>(</td>
|
|
273
240
|
<td class="paramname"></td><td>)</td>
|
|
274
241
|
<td> const</td>
|
|
@@ -283,15 +250,14 @@ Private Member Functions</h2></td></tr>
|
|
|
283
250
|
|
|
284
251
|
<p>Parse start symbol and production from file string. </p>
|
|
285
252
|
|
|
286
|
-
<p class="definition">Definition at line <a class="el" href="GrammarBuilder_8cpp_source.html#
|
|
287
|
-
<div class="fragment"><div class="line"><a name="
|
|
288
|
-
<div class="ttc" id="
|
|
289
|
-
<div class="ttc" id="
|
|
290
|
-
<div class="ttc" id="
|
|
291
|
-
<div class="ttc" id="classSVF_1_1GrammarBuilder_html_a6de372fbe80d33a5688cada0adca0bb8"><div class="ttname"><a href="classSVF_1_1GrammarBuilder.html#a6de372fbe80d33a5688cada0adca0bb8">SVF::GrammarBuilder::stripSpace</a></div><div class="ttdeci">const std::string stripSpace(std::string s) const</div><div class="ttdoc">Strip frond and tail space. </div><div class="ttdef"><b>Definition:</b> <a href="GrammarBuilder_8cpp_source.html#l00087">GrammarBuilder.cpp:87</a></div></div>
|
|
292
|
-
<div class="ttc" id="classSVF_1_1GrammarBuilder_html_a34bd036f78713dc9b016e32ce4458942"><div class="ttname"><a href="classSVF_1_1GrammarBuilder.html#a34bd036f78713dc9b016e32ce4458942">SVF::GrammarBuilder::loadFileString</a></div><div class="ttdeci">const std::string loadFileString() const</div><div class="ttdoc">Load whole file content to string. </div><div class="ttdef"><b>Definition:</b> <a href="GrammarBuilder_8cpp_source.html#l00039">GrammarBuilder.cpp:39</a></div></div>
|
|
253
|
+
<p class="definition">Definition at line <a class="el" href="GrammarBuilder_8cpp_source.html#l00039">39</a> of file <a class="el" href="GrammarBuilder_8cpp_source.html">GrammarBuilder.cpp</a>.</p>
|
|
254
|
+
<div class="fragment"><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> {</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  std::ifstream textFile(<a class="code" href="classSVF_1_1GrammarBuilder.html#aa0f5135a232adc1ca42d4f51a3c70704">fileName</a>);</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> lineString;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> lines = <span class="stringliteral">""</span>;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> startString;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keywordtype">int</span> lineNum = 0;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keywordflow">while</span> (getline(textFile, lineString))</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  {</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keywordflow">if</span>(lineNum == 1)</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  {</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  startString = <a class="code" href="classSVF_1_1GrammarBuilder.html#a6de372fbe80d33a5688cada0adca0bb8">stripSpace</a>(lineString);</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  }</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  lines.append(lineString);</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  lineNum++;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  }</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> </div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  std::regex reg(<span class="stringliteral">"Start:([\\s\\S]*)Terminal:[\\s]*([\\s\\S]*)Productions:([\\s\\S]*)"</span>);</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  std::smatch matches;</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <span class="keywordflow">if</span> (std::regex_search(lines, matches, reg))</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  {</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  lines = matches.str(3);</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  }</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> terminalString = matches.str(2);</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> symbolString;</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  <span class="keywordtype">size_t</span> pos;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <span class="keywordflow">while</span> ((pos = terminalString.find(<span class="stringliteral">" "</span>)) != std::string::npos)</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  {</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  symbolString = <a class="code" href="classSVF_1_1GrammarBuilder.html#a6de372fbe80d33a5688cada0adca0bb8">stripSpace</a>(terminalString.substr(0, pos));</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  terminalString.erase(0, pos + 1); <span class="comment">//Capital is Nonterminal, Otherwise is terminal</span></div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <a class="code" href="classSVF_1_1GrammarBuilder.html#a7b81810150ce896801e4e6a831ab98aa">grammar</a>-><a class="code" href="classSVF_1_1GrammarBase.html#a3c16f37c05de31fbd2be1ae9c0961e84">insertSymbol</a>(symbolString);</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  }</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  <a class="code" href="classSVF_1_1GrammarBuilder.html#a7b81810150ce896801e4e6a831ab98aa">grammar</a>-><a class="code" href="classSVF_1_1GrammarBase.html#a3c16f37c05de31fbd2be1ae9c0961e84">insertSymbol</a>(symbolString);</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <a class="code" href="classSVF_1_1GrammarBuilder.html#a7b81810150ce896801e4e6a831ab98aa">grammar</a>-><a class="code" href="classSVF_1_1GrammarBase.html#a1de2b9f6c39936afa8f821ca262deadd">setStartKind</a>(<a class="code" href="classSVF_1_1GrammarBuilder.html#a7b81810150ce896801e4e6a831ab98aa">grammar</a>-><a class="code" href="classSVF_1_1GrammarBase.html#a3c16f37c05de31fbd2be1ae9c0961e84">insertSymbol</a>(startString));</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  <a class="code" href="classSVF_1_1GrammarBuilder.html#a7b81810150ce896801e4e6a831ab98aa">grammar</a>-><a class="code" href="classSVF_1_1GrammarBase.html#ad2f1a578ba72a2b600014b21b6f2d542">insertTerminalKind</a>(<span class="stringliteral">"epsilon"</span>);</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span> </div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <span class="keywordflow">return</span> lines;</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span> }</div><div class="ttc" id="classSVF_1_1GrammarBuilder_html_a7b81810150ce896801e4e6a831ab98aa"><div class="ttname"><a href="classSVF_1_1GrammarBuilder.html#a7b81810150ce896801e4e6a831ab98aa">SVF::GrammarBuilder::grammar</a></div><div class="ttdeci">GrammarBase * grammar</div><div class="ttdef"><b>Definition:</b> <a href="GrammarBuilder_8h_source.html#l00074">GrammarBuilder.h:74</a></div></div>
|
|
255
|
+
<div class="ttc" id="classSVF_1_1GrammarBase_html_a1de2b9f6c39936afa8f821ca262deadd"><div class="ttname"><a href="classSVF_1_1GrammarBase.html#a1de2b9f6c39936afa8f821ca262deadd">SVF::GrammarBase::setStartKind</a></div><div class="ttdeci">void setStartKind(Kind startKind)</div><div class="ttdef"><b>Definition:</b> <a href="CFLGrammar_8h_source.html#l00219">CFLGrammar.h:219</a></div></div>
|
|
256
|
+
<div class="ttc" id="classSVF_1_1GrammarBuilder_html_aa0f5135a232adc1ca42d4f51a3c70704"><div class="ttname"><a href="classSVF_1_1GrammarBuilder.html#aa0f5135a232adc1ca42d4f51a3c70704">SVF::GrammarBuilder::fileName</a></div><div class="ttdeci">std::string fileName</div><div class="ttdef"><b>Definition:</b> <a href="GrammarBuilder_8h_source.html#l00073">GrammarBuilder.h:73</a></div></div>
|
|
257
|
+
<div class="ttc" id="classSVF_1_1GrammarBuilder_html_a6de372fbe80d33a5688cada0adca0bb8"><div class="ttname"><a href="classSVF_1_1GrammarBuilder.html#a6de372fbe80d33a5688cada0adca0bb8">SVF::GrammarBuilder::stripSpace</a></div><div class="ttdeci">const std::string stripSpace(std::string s) const</div><div class="ttdoc">Strip front and tail space. </div><div class="ttdef"><b>Definition:</b> <a href="GrammarBuilder_8cpp_source.html#l00094">GrammarBuilder.cpp:94</a></div></div>
|
|
293
258
|
<div class="ttc" id="cJSON_8h_html_ad4c68ea99a26b0a98ad9a79982960458"><div class="ttname"><a href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">string</a></div><div class="ttdeci">const char *const string</div><div class="ttdef"><b>Definition:</b> <a href="cJSON_8h_source.html#l00172">cJSON.h:172</a></div></div>
|
|
294
|
-
<div class="ttc" id="
|
|
259
|
+
<div class="ttc" id="classSVF_1_1GrammarBase_html_a3c16f37c05de31fbd2be1ae9c0961e84"><div class="ttname"><a href="classSVF_1_1GrammarBase.html#a3c16f37c05de31fbd2be1ae9c0961e84">SVF::GrammarBase::insertSymbol</a></div><div class="ttdeci">Symbol insertSymbol(std::string strLit)</div><div class="ttdef"><b>Definition:</b> <a href="CFLGrammar_8cpp_source.html#l00217">CFLGrammar.cpp:217</a></div></div>
|
|
260
|
+
<div class="ttc" id="classSVF_1_1GrammarBase_html_ad2f1a578ba72a2b600014b21b6f2d542"><div class="ttname"><a href="classSVF_1_1GrammarBase.html#ad2f1a578ba72a2b600014b21b6f2d542">SVF::GrammarBase::insertTerminalKind</a></div><div class="ttdeci">Kind insertTerminalKind(std::string strLit)</div><div class="ttdef"><b>Definition:</b> <a href="CFLGrammar_8cpp_source.html#l00163">CFLGrammar.cpp:163</a></div></div>
|
|
295
261
|
</div><!-- fragment -->
|
|
296
262
|
</div>
|
|
297
263
|
</div>
|
|
@@ -319,10 +285,10 @@ Private Member Functions</h2></td></tr>
|
|
|
319
285
|
</table>
|
|
320
286
|
</div><div class="memdoc">
|
|
321
287
|
|
|
322
|
-
<p>Strip
|
|
288
|
+
<p>Strip front and tail space. </p>
|
|
323
289
|
|
|
324
|
-
<p class="definition">Definition at line <a class="el" href="GrammarBuilder_8cpp_source.html#
|
|
325
|
-
<div class="fragment"><div class="line"><a name="
|
|
290
|
+
<p class="definition">Definition at line <a class="el" href="GrammarBuilder_8cpp_source.html#l00094">94</a> of file <a class="el" href="GrammarBuilder_8cpp_source.html">GrammarBuilder.cpp</a>.</p>
|
|
291
|
+
<div class="fragment"><div class="line"><a name="l00095"></a><span class="lineno"> 95</span> {</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  std::smatch matches;</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  std::regex stripReg(<span class="stringliteral">"\\s*(\\S*)\\s*"</span>);</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  std::regex_search(s, matches, stripReg);</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  <span class="keywordflow">return</span> matches.str(1);</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span> }</div></div><!-- fragment -->
|
|
326
292
|
</div>
|
|
327
293
|
</div>
|
|
328
294
|
<h2 class="groupheader">Member Data Documentation</h2>
|
|
@@ -331,14 +297,22 @@ Private Member Functions</h2></td></tr>
|
|
|
331
297
|
|
|
332
298
|
<div class="memitem">
|
|
333
299
|
<div class="memproto">
|
|
300
|
+
<table class="mlabels">
|
|
301
|
+
<tr>
|
|
302
|
+
<td class="mlabels-left">
|
|
334
303
|
<table class="memname">
|
|
335
304
|
<tr>
|
|
336
305
|
<td class="memname"><a class="el" href="cJSON_8cpp.html#ae1adbce218e7a9d09164012443191d24">std::string</a> SVF::GrammarBuilder::fileName</td>
|
|
337
306
|
</tr>
|
|
338
307
|
</table>
|
|
308
|
+
</td>
|
|
309
|
+
<td class="mlabels-right">
|
|
310
|
+
<span class="mlabels"><span class="mlabel">private</span></span> </td>
|
|
311
|
+
</tr>
|
|
312
|
+
</table>
|
|
339
313
|
</div><div class="memdoc">
|
|
340
314
|
|
|
341
|
-
<p class="definition">Definition at line <a class="el" href="GrammarBuilder_8h_source.html#
|
|
315
|
+
<p class="definition">Definition at line <a class="el" href="GrammarBuilder_8h_source.html#l00073">73</a> of file <a class="el" href="GrammarBuilder_8h_source.html">GrammarBuilder.h</a>.</p>
|
|
342
316
|
|
|
343
317
|
</div>
|
|
344
318
|
</div>
|
|
@@ -347,14 +321,22 @@ Private Member Functions</h2></td></tr>
|
|
|
347
321
|
|
|
348
322
|
<div class="memitem">
|
|
349
323
|
<div class="memproto">
|
|
324
|
+
<table class="mlabels">
|
|
325
|
+
<tr>
|
|
326
|
+
<td class="mlabels-left">
|
|
350
327
|
<table class="memname">
|
|
351
328
|
<tr>
|
|
352
329
|
<td class="memname"><a class="el" href="classSVF_1_1GrammarBase.html">GrammarBase</a>* SVF::GrammarBuilder::grammar</td>
|
|
353
330
|
</tr>
|
|
354
331
|
</table>
|
|
332
|
+
</td>
|
|
333
|
+
<td class="mlabels-right">
|
|
334
|
+
<span class="mlabels"><span class="mlabel">private</span></span> </td>
|
|
335
|
+
</tr>
|
|
336
|
+
</table>
|
|
355
337
|
</div><div class="memdoc">
|
|
356
338
|
|
|
357
|
-
<p class="definition">Definition at line <a class="el" href="GrammarBuilder_8h_source.html#
|
|
339
|
+
<p class="definition">Definition at line <a class="el" href="GrammarBuilder_8h_source.html#l00074">74</a> of file <a class="el" href="GrammarBuilder_8h_source.html">GrammarBuilder.h</a>.</p>
|
|
358
340
|
|
|
359
341
|
</div>
|
|
360
342
|
</div>
|
|
@@ -429,7 +429,7 @@ Additional Inherited Members</h2></td></tr>
|
|
|
429
429
|
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_aed0b0b9f035057552a6a82154fd88e61"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVF::SVFUtil::outs</a></div><div class="ttdeci">std::ostream & outs()</div><div class="ttdoc">Overwrite llvm::outs() </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00049">SVFUtil.h:49</a></div></div>
|
|
430
430
|
<div class="ttc" id="classSVF_1_1GenericEdge_html_ab47ca533c415841ef75456cbad439589"><div class="ttname"><a href="classSVF_1_1GenericEdge.html#ab47ca533c415841ef75456cbad439589">SVF::GenericEdge::getSrcNode</a></div><div class="ttdeci">NodeType * getSrcNode() const</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00089">GenericGraph.h:89</a></div></div>
|
|
431
431
|
<div class="ttc" id="classSVF_1_1ICFG_html_a498f84068ef643a94970aeb171607e31"><div class="ttname"><a href="classSVF_1_1ICFG.html#a498f84068ef643a94970aeb171607e31">SVF::ICFG::iterator</a></div><div class="ttdeci">ICFGNodeIDToNodeMapTy::iterator iterator</div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8h_source.html#l00056">ICFG.h:56</a></div></div>
|
|
432
|
-
<div class="ttc" id="CFLGrammar_8txt_html_acc7b4cf736579c4d83be2316d5a9e5f2"><div class="ttname"><a href="CFLGrammar_8txt.html#acc7b4cf736579c4d83be2316d5a9e5f2">F</a></div><div class="ttdeci">V Fbar V F</div><div class="ttdef"><b>Definition:</b> <a href="CFLGrammar_8txt_source.html#
|
|
432
|
+
<div class="ttc" id="CFLGrammar_8txt_html_acc7b4cf736579c4d83be2316d5a9e5f2"><div class="ttname"><a href="CFLGrammar_8txt.html#acc7b4cf736579c4d83be2316d5a9e5f2">F</a></div><div class="ttdeci">V Fbar V F</div><div class="ttdef"><b>Definition:</b> <a href="CFLGrammar_8txt_source.html#l00013">CFLGrammar.txt:13</a></div></div>
|
|
433
433
|
<div class="ttc" id="classSVF_1_1GepStmt_html_a959a9c95d25f90fd7acc8e6e36056b56"><div class="ttname"><a href="classSVF_1_1GepStmt.html#a959a9c95d25f90fd7acc8e6e36056b56">SVF::GepStmt::getConstantFieldIdx</a></div><div class="ttdeci">s32_t getConstantFieldIdx() const</div><div class="ttdoc">Field index of the gep statement if it access the field of a struct. </div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00459">SVFStatements.h:459</a></div></div>
|
|
434
434
|
<div class="ttc" id="classSVF_1_1CallICFGNode_html"><div class="ttname"><a href="classSVF_1_1CallICFGNode.html">SVF::CallICFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00363">ICFGNode.h:363</a></div></div>
|
|
435
435
|
<div class="ttc" id="classSVF_1_1ICFGNode_html_a5a148eccec266a67e4ff5364d7268fff"><div class="ttname"><a href="classSVF_1_1ICFGNode.html#a5a148eccec266a67e4ff5364d7268fff">SVF::ICFGNode::iterator</a></div><div class="ttdeci">ICFGEdge::ICFGEdgeSetTy::iterator iterator</div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00065">ICFGNode.h:65</a></div></div>
|
|
@@ -1247,7 +1247,7 @@ Static Private Attributes</h2></td></tr>
|
|
|
1247
1247
|
<div class="ttc" id="namespaceSVF_html_ad42bff8d0a7d60a085aa32d10f4955af"><div class="ttname"><a href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">SVF::u32_t</a></div><div class="ttdeci">unsigned u32_t</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00084">SVFBasicTypes.h:84</a></div></div>
|
|
1248
1248
|
<div class="ttc" id="namespaceSVF_html_a5faee14fa1dd41447bc73ac365fe33c1"><div class="ttname"><a href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">SVF::Function</a></div><div class="ttdeci">llvm::Function Function</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00070">BasicTypes.h:70</a></div></div>
|
|
1249
1249
|
<div class="ttc" id="classSVF_1_1LLVMModuleSet_html_a8afb7ab3ee4632e78d546e549110e74c"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a8afb7ab3ee4632e78d546e549110e74c">SVF::LLVMModuleSet::getModule</a></div><div class="ttdeci">Module * getModule(u32_t idx) const</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00100">LLVMModule.h:100</a></div></div>
|
|
1250
|
-
<div class="ttc" id="CFLGrammar_8txt_html_acc7b4cf736579c4d83be2316d5a9e5f2"><div class="ttname"><a href="CFLGrammar_8txt.html#acc7b4cf736579c4d83be2316d5a9e5f2">F</a></div><div class="ttdeci">V Fbar V F</div><div class="ttdef"><b>Definition:</b> <a href="CFLGrammar_8txt_source.html#
|
|
1250
|
+
<div class="ttc" id="CFLGrammar_8txt_html_acc7b4cf736579c4d83be2316d5a9e5f2"><div class="ttname"><a href="CFLGrammar_8txt.html#acc7b4cf736579c4d83be2316d5a9e5f2">F</a></div><div class="ttdeci">V Fbar V F</div><div class="ttdef"><b>Definition:</b> <a href="CFLGrammar_8txt_source.html#l00013">CFLGrammar.txt:13</a></div></div>
|
|
1251
1251
|
<div class="ttc" id="classSVF_1_1LLVMModuleSet_html_acf40310917909e4234282c0695a43160"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">SVF::LLVMModuleSet::getLLVMModuleSet</a></div><div class="ttdeci">static LLVMModuleSet * getLLVMModuleSet()</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00070">LLVMModule.h:70</a></div></div>
|
|
1252
1252
|
</div><!-- fragment -->
|
|
1253
1253
|
</div>
|
|
@@ -349,7 +349,7 @@ Friends</h2></td></tr>
|
|
|
349
349
|
<p>Return accumulated constant offset given OffsetValueVec. </p>
|
|
350
350
|
<p>For example,.</p>
|
|
351
351
|
<p>Return accumulated constant offset</p>
|
|
352
|
-
<p>"value" is the offset variable (must be a constant) "type" is the location where we want to compute offset Given a vector: [(value1,type1), (value2,type2), (value3,type3)] totalConstOffset = flattenOffset(value1,type1) * flattenOffset(
|
|
352
|
+
<p>"value" is the offset variable (must be a constant) "type" is the location where we want to compute offset Given a vector: [(value1,type1), (value2,type2), (value3,type3)] totalConstOffset = flattenOffset(value1,type1) * flattenOffset(value2,type2) + flattenOffset(value3,type3) For a pointer type (e.g., t1 is PointerType), we will retrieve the pointee type and times the offset, i.e., getElementNum(t1) X off1%5 = getelementptr inbounds struct.Student, struct.Student* %4, i64 1 value1: i64 1 type1: struct.Student* accumulateConstantOffset = 32 %6 = getelementptr inbounds struct.Student, struct.Student* %5, i32 0, i32 1 value1: i32 0 type1: struct.Student* value2: i32 1 type2: struct.Student = type { struct.inner, [10 x [3 x i8]] } accumulateConstantOffset = 2 %7 = getelementptr inbounds [10 x [3 x i8]], [10 x [3 x i8]]* %6, i64 0, i64 3 value1: i64 0 type1: [10 x [3 x i8]]* value2: i64 3 type2: [10 x [3 x i8]] accumulateConstantOffset = 9 %8 = getelementptr inbounds [3 x i8], [3 x i8]* %7, i64 0, i64 2 value1: i64 0 type1: [3 x i8]* value2: i64 2 type2: [3 x i8] accumulateConstantOffset = 2 </p>
|
|
353
353
|
|
|
354
354
|
<p class="definition">Definition at line <a class="el" href="LocationSet_8cpp_source.html#l00116">116</a> of file <a class="el" href="LocationSet_8cpp_source.html">LocationSet.cpp</a>.</p>
|
|
355
355
|
<div class="fragment"><div class="line"><a name="l00117"></a><span class="lineno"> 117</span> {</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span> </div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<a class="code" href="classSVF_1_1LocationSet.html#a4a9185282308c50f86fdf66f7060373d">isConstantOffset</a>() && <span class="stringliteral">"not a constant offset"</span>);</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span> </div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1LocationSet.html#a5a2792b8b914557a9ccf0e57d0ed8b30">offsetValues</a>.empty())</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LocationSet.html#a63c5c8e03b35e0d0cea94137d309c853">accumulateConstantFieldIdx</a>();</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span> </div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  <a class="code" href="namespaceSVF.html#a9b707002523ece2ac54ca893ee9a2d4e">s32_t</a> totalConstOffset = 0;</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = <a class="code" href="classSVF_1_1LocationSet.html#a5a2792b8b914557a9ccf0e57d0ed8b30">offsetValues</a>.size() - 1; i >= 0; i--)</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  {</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* value = <a class="code" href="classSVF_1_1LocationSet.html#a5a2792b8b914557a9ccf0e57d0ed8b30">offsetValues</a>[i].first;</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* <a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a> = <a class="code" href="classSVF_1_1LocationSet.html#a5a2792b8b914557a9ccf0e57d0ed8b30">offsetValues</a>[i].second;</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#adefcb50414ea999d70cea5ccdbcb98d7">ConstantInt</a> *op = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a><<a class="code" href="namespaceSVF.html#adefcb50414ea999d70cea5ccdbcb98d7">ConstantInt</a>>(value);</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(op && <span class="stringliteral">"not a constant offset?"</span>);</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  <span class="keywordflow">if</span>(type==<span class="keyword">nullptr</span>)</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  {</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  totalConstOffset += op->getSExtValue();</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  }</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span> </div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#aa962cc1d782cc46553251e96b64a754b">PointerType</a>* pty = SVFUtil::dyn_cast<PointerType>(type))</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  totalConstOffset += op->getSExtValue() * <a class="code" href="classSVF_1_1LocationSet.html#ac66b56e1fa180be9b09d7bfe653ff311">getElementNum</a>(<a class="code" href="namespaceSVF_1_1LLVMUtil.html#abba4111230f6009bbf50518ee36a9870">getPtrElementType</a>(pty));</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  {</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  <a class="code" href="namespaceSVF.html#a9b707002523ece2ac54ca893ee9a2d4e">s32_t</a> <a class="code" href="cJSON_8cpp.html#a95bf816579e97b6f33bdb5e25ed6d5de">offset</a> = op->getSExtValue();</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> flattenOffset = <a class="code" href="classSVF_1_1SymbolTableInfo.html#a267169023fc4f8dd66b145f7231fec11">SymbolTableInfo::SymbolInfo</a>()-><a class="code" href="classSVF_1_1SymbolTableInfo.html#a8fc42c2b02317621d6aeb3c5f52d3ee8">getFlattenedElemIdx</a>(type, offset);</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  totalConstOffset += flattenOffset;</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  }</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  }</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  <span class="keywordflow">return</span> totalConstOffset;</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span> }</div><div class="ttc" id="classSVF_1_1LocationSet_html_a4a9185282308c50f86fdf66f7060373d"><div class="ttname"><a href="classSVF_1_1LocationSet.html#a4a9185282308c50f86fdf66f7060373d">SVF::LocationSet::isConstantOffset</a></div><div class="ttdeci">bool isConstantOffset() const</div><div class="ttdoc">Return TRUE if this is a constant location set. </div><div class="ttdef"><b>Definition:</b> <a href="LocationSet_8cpp_source.html#l00051">LocationSet.cpp:51</a></div></div>
|